38 use element_mod , only : nixc
39
40
41
42#include "implicit_f.inc"
43
44
45
46#include "mvsiz_p.inc"
47
48
49
50#include "param_c.inc"
51
52
53
54 INTEGER FXBELM(*), IPARG(NPARG,*), IXC(NIXC,*), NELC
56 . fxbsig(*), x(3,*), pm(npropm), fxbmod(*),
57 . geo(npropg,*), r(3,*)
58
59
60
61 INTEGER IG,OFFSET,FIRST,LAST,NFT,I,NG,IEL,
62 . N1,N2,N3,N4,ISM,ITHK,NPT,NFS
63 INTEGER MAT(MVSIZ), PROP(MVSIZ)
65 . d11, d12, d13, d21, d22, d23, d31, d32, d33, d41, d42, d43,
66 . dr11, dr12, dr13, dr21, dr22, dr23, dr31, dr32, dr33,
67 . dr41, dr42, dr43
68 my_real vl(3,4,mvsiz), vrl(3,4,mvsiz),
69 . px1g(mvsiz), px2g(mvsiz), py1g(mvsiz), py2g(mvsiz),
70 . px1(mvsiz) , px2(mvsiz) , py1(mvsiz) , py2(mvsiz),
71 . x2s(mvsiz), y2s(mvsiz), x3s(mvsiz),
72 . y3s(mvsiz), x4s(mvsiz), y4s(mvsiz),
73 . x1(mvsiz) , x2(mvsiz) , x3(mvsiz) , x4(mvsiz) ,
74 . y1(mvsiz) , y2(mvsiz) , y3(mvsiz) , y4(mvsiz) ,
75 . z1(mvsiz) , z2(mvsiz) , z3(mvsiz) , z4(mvsiz),
76 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
77 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
78 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
79 . exx(mvsiz),eyy(mvsiz),exy(mvsiz),eyz(mvsiz),ezx(mvsiz),
80 . kxx(mvsiz),kyy(mvsiz),kxy(mvsiz),
81 . gstrbid(8,mvsiz),
for(5,mvsiz), mom(3,mvsiz),
82 . eint(2,mvsiz) , thk(mvsiz),
area(mvsiz),
83 . nu(mvsiz), g(mvsiz), a1(mvsiz), a2(mvsiz), gs(mvsiz)
84
85 first=1
86 DO ig=1,nelc,mvsiz
87 offset=ig-1
88 last=
min(mvsiz,nelc-offset)
89 nft=offset*10
90 nfs=offset*10
91 DO i=1,last
92 ng=fxbelm(nft+10*(i-1)+1)
93 iel=iparg(3,ng)+fxbelm(nft+10*(i-1)+2)
94 mat(i)=ixc(1,iel)
95 prop(i)=ixc(6,iel)
96 thk(i)=geo(1,prop(i))
97 x1(i)=0.
98 y1(i)=0.
99 z1(i)=0.
100 x2(i)=x(1,ixc(3,iel))-x(1,ixc(2,iel))
101 y2(i)=x(2,ixc(3,iel))-x(2,ixc(2,iel))
102 z2(i)=x(3,ixc(3,iel))-x(3,ixc(2,iel))
103 x3(i)=x(1,ixc(4,iel))-x(1,ixc(2,iel))
104 y3(i)=x(2,ixc(4,iel))-x(2,ixc(2,iel))
105 z3(i)=x(3,ixc(4,iel))-x(3,ixc(2,iel))
106 x4(i)=x(1,ixc(5,iel))-x(1,ixc(2,iel))
107 y4(i)=x(2,ixc(5,iel))-x(2,ixc(2,iel))
108 z4(i)=x(3,ixc(5,iel))-x(3,ixc(2,iel))
109 n1=fxbelm(nft+10*(i-1)+3)
110 n2=fxbelm(nft+10*(i-1)+4)
111 n3=fxbelm(nft+10*(i-1)+5)
112 n4=fxbelm(nft+10*(i-1)+6)
113 d11=fxbmod(6*(n1-1)+1)
114 d12=fxbmod(6*(n1-1)+2)
115 d13=fxbmod(6*(n1-1)+3)
116 d21=fxbmod(6*(n2-1)+1)
117 d22=fxbmod(6*(n2-1)+2)
118 d23=fxbmod(6*(n2-1)+3)
119 d31=fxbmod(6*(n3-1)+1)
120 d32=fxbmod(6*(n3-1)+2)
121 d33=fxbmod(6*(n3-1)+3)
122 d41=fxbmod(6*(n4-1)+1)
123 d42=fxbmod(6*(n4-1)+2)
124 d43=fxbmod(6*(n4-1)+3)
125 vl(1,1,i)=r(1,1)*d11+r(1,2)*d12+r(1,3)*d13
126 vl(2,1,i)=r(2,1)*d11+r(2,2)*d12+r(2,3)*d13
127 vl(3,1,i)=r(3,1)*d11+r(3,2)*d12+r(3,3)*d13
128 vl(1,2,i)=r(1,1)*d21+r(1,2)*d22+r(1,3)*d23
129 vl(2,2,i)=r(2,1)*d21+r(2,2)*d22+r(2,3)*d23
130 vl(3,2,i)=r(3,1)*d21+r(3,2)*d22+r(3,3)*d23
131 vl(1,3,i)=r(1,1)*d31+r(1,2)*d32+r(1,3)*d33
132 vl(2,3,i)=r(2,1)*d31+r(2,2)*d32+r(2,3)*d33
133 vl(3,3,i)=r(3,1)*d31+r(3,2)*d32+r(3,3)*d33
134 vl(1,4,i)=r(1,1)*d41+r(1,2)*d42+r(1,3)*d43
135 vl(2,4,i)=r(2,1)*d41+r(2,2)*d42+r(2,3)*d43
136 vl(3,4,i)=r(3,1)*d41+r(3,2)*d42+r(3,3)*d43
137 dr11=fxbmod(6*(n1-1)+4)
138 dr12=fxbmod(6*(n1-1)+5)
139 dr13=fxbmod(6*(n1-1)+6)
140 dr21=fxbmod(6*(n2-1)+4)
141 dr22=fxbmod(6*(n2-1)+5)
142 dr23=fxbmod(6*(n2-1)+6)
143 dr31=fxbmod(6*(n3-1)+4)
144 dr32=fxbmod(6*(n3-1)+5)
145 dr33=fxbmod(6*(n3-1)+6)
146 dr41=fxbmod(6*(n4-1)+4)
147 dr42=fxbmod(6*(n4-1)+5)
148 dr43=fxbmod(6*(n4-1)+6)
149 vrl(1,1,i)=r(1,1)*dr11+r(1,2)*dr12+r(1,3)*dr13
150 vrl(2,1,i)=r(2,1)*dr11+r(2,2)*dr12+r(2,3)*dr13
151 vrl(3,1,i)=r(3,1)*dr11+r(3,2)*dr12+r(3,3)*dr13
152 vrl(1,2,i)=r(1,1)*dr21+r(1,2)*dr22+r(1,3)*dr23
153 vrl(2,2,i)=r(2,1)*dr21+r(2,2)*dr22+r(2,3)*dr23
154 vrl(3,2,i)=r(3,1)*dr21+r(3,2)*dr22+r(3,3)*dr23
155 vrl(1,3,i)=r(1,1)*dr31+r(1,2)*dr32+r(1,3)*dr33
156 vrl(2,3,i)=r(2,1)*dr31+r(2,2)*dr32+r(2,3)*dr33
157 vrl(3,3,i)=r(3,1)*dr31+r(3,2)*dr32+r(3,3)*dr33
158 vrl(1,4,i)=r(1,1)*dr41+r(1,2)*dr42+r(1,3)*dr43
159 vrl(2,4,i)=r(2,1)*dr41+r(2,2)*dr42+r(2,3)*dr43
160 vrl(3,4,i)=r(3,1)*dr41+r(3,2)*dr42+r(3,3)*dr43
161 gstrbid(1,i)=zero
162 gstrbid(2,i)=zero
163 gstrbid(3,i)=zero
169 mom(1,i)=zero
170 mom(2,i)=zero
171 mom(3,i)=zero
172 px1g(i)=zero
173 px2g(i)=zero
174 py1g(i)=zero
175 py2g(i)=zero
176 ism=1
177 ithk=0
178 ENDDO
179
181 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
182 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
183 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
184 npt=1
185 CALL ccoefi(last, pm , geo, nu ,
186 . g , a1 , a2 , gs , thk,
187 . mat , prop, npt,
area)
188 CALL cpxpyi(first,last, ism,
189 . px1g ,px2g ,py1g ,py2g ,
area ,
190 . px1 ,px2 ,py1 ,py2 ,
191 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
192 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
193 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
194 . x2s ,y2s ,x3s ,y3s ,x4s ,y4s )
195 CALL cdefli(last ,vl ,gstrbid,
196 . px1 ,px2 ,py1 ,py2 ,
197 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
198 . exx ,eyy ,exy ,eyz ,ezx ,
area )
200 . px1 ,px2 ,py1 ,py2 ,
201 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
202 . eyz ,ezx ,kxx ,kyy ,kxy ,
area )
203 ithk=0
205 . thk ,eint ,nu ,g ,a1 ,
206 . a2 ,gs ,kxx ,kyy ,kxy ,
207 . exx ,eyy ,exy ,eyz ,ezx ,
209
210 DO i=1,last
211 fxbsig(nfs+10*(i-1)+1)=
for(1,i)
212 fxbsig(nfs+10*(i-1)+2)=
for(2,i)
213 fxbsig(nfs+10*(i-1)+3)=
for(3,i)
214 fxbsig(nfs+10*(i-1)+4)=
for(4,i)
215 fxbsig(nfs+10*(i-1)+5)=
for
216 fxbsig(nfs+10*(i-1)+6)=mom(1,i)
217 fxbsig(nfs+10*(i-1)+7)=mom(2,i)
218 fxbsig(nfs+10*(i-1)+8)=mom(3,i)
219 fxbsig(nfs+10*(i-1)+9)=eint(1,i)
220 fxbsig(nfs+10*(i-1)+10)=eint(2,i)
221 ENDDO
222 ENDDO
223
224 RETURN
subroutine cpxpyi(jft, jlt, ismstr, area, px1g, px2g, py1g, py2g, px1, px2, py1, py2, x1g, x2g, x3g, x4g, y1g, y2g, y3g, y4g, z1g, z2g, z3g, z4g, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, x2l, y2l, x3l, y3l, x4l, y4l)
subroutine ceveci(jft, jlt, area, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
subroutine cm1inif(jft, jlt, for, mom, ithk, thk, eint, nu, g, a1, a2, gs, kxx, kyy, kxy, exx, eyy, exy, eyz, exz, area)
subroutine cdefli(nel, vl, gstr, px1, px2, py1, py2, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, exx, eyy, exy, eyz, ezx, area)
subroutine ccurvi(nel, vrl, px1, px2, py1, py2, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, eyz, ezx, kxx, kyy, kxy, area)
subroutine ccoefi(nel, pm, geo, nu, g, a1, a2, gs, thk, mat, prop, npt, area)
for(i8=*sizetab-1;i8 >=0;i8--)