38 1 JFT ,JLT ,ISMSTR ,MTN ,ITHK ,
39 2 PM ,GEO ,IXTG ,X ,XREFTG ,
40 3 FOR ,THK ,EINT ,GSTR ,NLAY ,
41 4 PX1G ,PY1G ,PY2G ,X2S ,X3S ,
43 6 NEL ,DIR_A ,DIR_B ,SIGI ,NPF ,
44 7 TF ,IREP ,ISH3NFR,IMAT )
52#include "implicit_f.inc"
65 INTEGER JFT,JLT,ISMSTR,MTN,ITHK,NEL,NLAY,IREP,ISH3NFR,IMAT
66 INTEGER IXTG(NIXTG,*),IPM(NPROPMI,*),NPF(*)
68 . PM(NPROPM,*),GEO(NPROPG,*),X(3,*),XREFTG(3,3,*),
69 . FOR(NEL,5) ,THK(*) ,EINT(NEL,2),GSTR(NEL,8),
70 . PX1G(*) ,PY1G(*) ,PY2G(*),X2S(*) ,X3S(*) ,Y3S(*),
71 . UVAR(*),DIR_A(NEL,*),DIR_B(NEL,*),SIGI(NEL,3),TF(*),
72 . px1(mvsiz), py1(mvsiz), py2(mvsiz)
73 TYPE (ELBUF_STRUCT_),
TARGET :: ELBUF_STR
74 TYPE (MATPARAM_STRUCT_) ,
INTENT(IN) :: MAT_PARAM
78 INTEGER I, NT, I1, I2, I3,IDRAPE,IGTYP
80 my_real ecos(mvsiz),esin(mvsiz),
81 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
82 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
83 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
84 . exx(mvsiz),eyy(mvsiz),exy(mvsiz),eyz(mvsiz),ezx(mvsiz),
85 . x1(mvsiz) , x2(mvsiz) , x3(mvsiz) ,x4(mvsiz) ,
86 . y1(mvsiz) , y2(mvsiz) , y3(mvsiz) ,y4(mvsiz) ,
87 . z1(mvsiz) , z2(mvsiz) , z3(mvsiz) ,z4(mvsiz) ,
88 . x31(mvsiz) , y31(mvsiz) , z31(mvsiz),
89 . vl(3,3,mvsiz), xl(3,3,mvsiz),
area(mvsiz),
90 . x2h(mvsiz), x3h(mvsiz), y3h(mvsiz),
91 . x2l(mvsiz), x3l(mvsiz), y3l(mvsiz)
92 my_real,
DIMENSION(:) ,
POINTER :: dir1, dir2
94 idrape = elbuf_str%IDRAPE
95 igtyp = elbuf_str%IGTYP
103 x2(i) = x(1,i2) - x(1,i1)
104 y2(i) = x(2,i2) - x(2,i1)
105 z2(i) = x(3,i2) - x(3,i1)
106 x3(i) = x(1,i3) - x(1,i1)
107 y3(i) = x(2,i3) - x(2,i1)
108 z3(i) = x(3,i3) - x(3,i1)
112 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
113 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
114 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
115 . x31, y31, z31 ,x2l ,x3l ,y3l )
118 xl(1,2,i) = e1x(i)*x2(i
119 xl(2,2,i) = e2x(i)*x2(i) + e2y(i)*y2(i) + e2z(i)*z2(i)
120 xl(1,3,i) = e1x(i)*x3(i) + e1y(i)*y3(i) + e1z(i)*z3(i)
121 xl(2,3,i) = e2x(i)*x3(i) + e2y(i)*y3(i) + e2z(i)*z3(i)
124 x2(i) = xreftg(2,1,i) - xreftg(1,1,i)
125 y2(i) = xreftg(2,2,i) - xreftg(1,2,i)
126 z2(i) = xreftg(2,3,i) - xreftg(1,3,i)
127 x3(i) = xreftg(3,1,i) - xreftg(1,1,i)
128 y3(i) = xreftg(3,2,i) - xreftg(1,2,i)
134 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
135 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
136 . x31, y31, z31 ,x2l ,x3l ,y3l )
140 IF (ish3nfr ==0 )
CALL c3newve3(jft ,jlt ,ecos,esin,
area,
141 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
142 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
143 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
145 fac = one/float(nitrs)
150 vl(1,2,i) = e1x(i)*xl(1,2,i) + e2x(i)*xl(2,
151 vl(2,2,i) = e1y(i)*xl(1,2,i) + e2y(i)*xl(2,2,i)
152 vl(3,2,i) = e1z(i)*xl(1,2,i) + e2z(i)*xl(2,2,i)
153 vl(1,3,i) = e1x(i)*xl(1,3,i) + e2x(i)*xl(2,3,i)
154 vl(2,3,i) = e1y(i)*xl(1,3,i) + e2y(i)*xl(2,3,i)
155 vl(3,3,i) = e1z(i)*xl(1,3,i) + e2z(i)*xl(2,3,i)
157 vl(1,2,i) = (vl(1,2,i) - x2(i))*fac
158 vl(2,2,i) = (vl(2,2,i) - y2(i))*fac
159 vl(3,2,i) = (vl(3,2,i) - z2(i))*fac
160 vl(1,3,i) = (vl(1,3,i) - x3(i))*fac
161 vl(2,3,i) = (vl(2,3,i) - y3(i))*fac
162 vl(3,3,i) = (vl(3,3,i) - z3(i))*fac
165 IF (ismstr/=1 .AND. ismstr/=11)
THEN
169 fac = float(nt) - one
171 x1(i) = xreftg(1,1,i) + fac*vl(1,1,i)
172 y1(i) = xreftg(1,2,i) + fac*vl(2,1,i)
173 z1(i) = xreftg(1,3,i) + fac*vl(3,1,i)
174 x2(i) = xreftg(2,1,i) + fac*vl(1,2,i)
175 y2(i) = xreftg(2,2,i) + fac*vl(2,2,i)
176 z2(i) = xreftg(2,3,i) + fac*vl(3,2,i)
177 x3(i) = xreftg(3,1,i) + fac*vl(1,3,i)
178 y3(i) = xreftg(3,2,i) + fac*vl(2,3,i)
179 z3(i) = xreftg(3,3,i) + fac
183 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
184 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
185 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
186 . x31, y31, z31 ,x2l ,x3l ,y3l )
189 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
190 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
191 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
193 CALL corth3(elbuf_str,dir_a,dir_b,jft,jlt,
195 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
196 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
197 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z ,
204 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
205 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
206 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
207 CALL c3defoi(jft ,jlt ,nel ,vl ,gstr,
208 . px1 ,py1 ,py2 ,
area,
209 . exx ,eyy ,exy ,eyz ,ezx ,
210 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
212 IF (ish3nfr ==0 )
CALL shtroto3(jft,jlt,ecos,esin,gstr,nel)
215 . jft ,jlt ,mtn ,ithk ,pm ,
216 . for ,thk ,eint ,gstr ,dir_a ,
218 . nel ,sigi ,npf ,tf ,
219 .
area ,exx ,eyy ,exy ,imat )
230 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
231 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
232 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
233 dir1 => elbuf_str%BUFLY(1)%DIRA
234 dir2 => elbuf_str%BUFLY(1)%DIRB
237 CALL c3defoi(jft ,jlt ,nel ,vl ,gstr,
238 . px1 ,py1 ,py2 ,
area,
239 . exx ,eyy ,exy ,eyz ,ezx ,
240 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
242 IF (ish3nfr == 0)
CALL shtroto3(jft,jlt,ecos,esin,gstr,nel)
245 . jft ,jlt ,mtn ,ithk ,pm ,
246 . for ,thk ,eint ,gstr ,dir1 ,
248 . nel ,sigi ,npf ,tf ,
249 .
area ,exx ,eyy ,exy ,imat )
341 . PX1 ,PY1 ,PY2 ,AREA,
342 . EXX ,EYY ,EXY ,EYZ ,EZX ,
343 . E1X ,E2X ,E3X ,E1Y ,E2Y ,E3Y ,E1Z ,E2Z ,E3Z )
347#include "implicit_f.inc"
351#include "mvsiz_p.inc"
357 . exx(mvsiz) , eyy(mvsiz) , exy(mvsiz) ,
358 . ezx(mvsiz) , eyz(mvsiz) ,
area(mvsiz),
360 . e2x(mvsiz) , e2y(mvsiz) , e2z(mvsiz) ,
361 . e3x(mvsiz) , e3y(mvsiz) , e3z(mvsiz)
367 . VX1(MVSIZ) , VX2(MVSIZ) , VX3(MVSIZ) ,
368 . VY1(MVSIZ) , VY2(MVSIZ) , VY3(MVSIZ) ,
369 . VZ1() , VZ2(MVSIZ) , VZ3(MVSIZ) ,
370 . VX12(MVSIZ), (MVSIZ), VX23(MVSIZ),
371 . vy12(mvsiz), vy13(mvsiz), vy23(mvsiz),
372 . vz12(mvsiz), vz13(mvsiz), vz23(mvsiz)
377 vx1(i)=e1x(i)*vl(1,1,i)+e1y(i)*vl(2,1,i)+e1z(i)*vl(3,1,i)
378 vx2(i)=e1x(i)*vl(1,2,i)+e1y(i)*vl(2,2,i)+e1z(i)*vl(3,2,i)
379 vx3(i)=e1x(i)*vl(1,3,i)+e1y(i)*vl(2,3,i)+e1z(i)*vl(3,3,i)
381 vy3(i)=e2x(i)*vl(1,3,i)+e2y(i)*vl(2,3,i)+e2z(i)*vl(3,3,i)
382 vy2(i)=e2x(i)*vl(1,2,i)+e2y(i)*vl
383 vy1(i)=e2x(i)*vl(1,1,i)+e2y(i)*vl(2,1,i)+e2z(i)*vl(3,1,i)
385 vz1(i)=e3x(i)*vl(1,1,i)+e3y(i)*vl(2,1,i)+e3z(i)*vl(3,1,i)
386 vz2(i)=e3x(i)*vl(1,2,i)+e3y(i)*vl(2,2,i)+e3z(i)*vl(3,2,i)
387 vz3(i)=e3x(i)*vl(1,3,i)+e3y(i)*vl(2,3,i)+e3z(i)*vl(3,3,i)
391 vz12(i)=vz1(i) - vz2(i)
392 vz13(i)=vz1(i) - vz3(i)
393 vz23(i)=vz2(i) - vz3(i)
395 tmp1 = fourth * vz12(i) / (py1(i)+py2(i))
396 tmp2 = (py1(i) * vz1(i) + py2(i) * vz2(i)) / (py1(i)+py2(i))
397 tmp2 = fourth * (tmp2 - vz3(i)) / px1(i)
399 vx1(i) = vx1(i) - vz1(i) * tmp1
400 vx2(i) = vx2(i) - vz2(i) * tmp1
401 vx3(i) = vx3(i) - vz3(i) * tmp1
403 vy1(i) = vy1(i) - vz1(i) * tmp2
404 vy2(i) = vy2(i) - vz2(i) * tmp2
405 vy3(i) = vy3(i) - vz3(i) * tmp2
407 vx12(i)=vx1(i) - vx2(i)
408 vy12(i)=vy1(i) - vy2(i)
409 vx13(i)=vx1(i) - vx3(i)
410 vy13(i)=vy1(i) - vy3(i)
411 vx23(i)=vx2(i) - vx3(i)
412 vy23(i)=vy2(i) - vy3(i)
414 exx(i)=px1(i)*vx12(i)
415 eyy(i)=py1(i)*vy13(i) + py2(i)*vy23(i)
417 exy(i)=py1(i)*vx13(i) + py2(i)*vx23(i) + px1(i)*vy12(i)
418 eyz(i)=py1(i)*vz13(i) + py2(i)*vz23(i)
419 ezx(i)=px1(i)*vz12(i)
430 gstr(i,1)=gstr(i,1)+exx(i)
431 gstr(i,2)=gstr(i,2)+eyy(i)
432 gstr(i,3)=gstr(i,3)+exy(i)