36 1 JFT ,JLT ,ISMSTR,ILAW ,ITHK ,
37 2 PM ,GEO ,IXC ,X ,XREFC ,
38 3 FOR ,THK ,EINT ,GSTR ,NLAY ,
39 4 PX1G ,PX2G ,PY1G ,PY2G ,X2S ,
40 5 Y2S ,X3S ,Y3S ,X4S ,Y4S ,
41 6 UVAR ,IPM ,IGEO ,IMAT ,
42 7 SKEW ,NEL ,DIR_A ,DIR_B ,SIGI ,
48 use element_mod ,
only : nixc
52#include "implicit_f.inc"
65 INTEGER JFT, JLT, ISMSTR, ILAW, ITHK, NEL, NLAY,IREP,IMAT
66 INTEGER IXC(NIXC,*),IGEO(NPROPGI,*),IPM(NPROPMI,*),NPF(*)
68 . (NPROPM,*),GEO(NPROPG,*),X(3,*),XREFC(4,3,*),SKEW(,*),
69 . FOR(NEL,5) ,THK(*) ,EINT(JLT,2),GSTR(NEL,8),
70 . PX1G(*) ,PX2G(*) ,PY1G(*) ,PY2G(*), UVAR(NEL,*),
71 . X2S(*), Y2S(*), X3S(*), Y3S(*), X4S(*), Y4S(*),
72 . DIR_A(NEL,*),DIR_B(NEL,*),SIGI(NEL,3),TF(*)
73 TYPE (ELBUF_STRUCT_),
TARGET :: ELBUF_STR
74 TYPE (MATPARAM_STRUCT_) ,
INTENT(IN) :: MAT_PARAM
78 INTEGER , NT, I1, I2, I3, I4,IDRAPE,IGTYP
82 . x1(mvsiz) , x2(mvsiz) , x3(mvsiz) , x4(mvsiz) ,
83 . y1(mvsiz) , y2(mvsiz) , y3(mvsiz) , y4(mvsiz) ,
84 . z1(mvsiz) , z2(mvsiz) , z3(mvsiz) , z4(mvsiz),
85 . px1(mvsiz), px2(mvsiz), py1(mvsiz), py2(mvsiz),
86 . vl(3,4,mvsiz), xl(3,4,mvsiz),
area(mvsiz),
87 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
88 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
89 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
90 . x4i(mvsiz), y4i(mvsiz), z4i(mvsiz),
91 . exx(mvsiz),eyy(mvsiz),exy(mvsiz),eyz(mvsiz),ezx(mvsiz)
93 .
DIMENSION(:) ,
POINTER :: dir1, dir2
96 idrape = elbuf_str%IDRAPE
97 igtyp = elbuf_str%IGTYP
106 x2(i) = x(1,i2) - x(1,i1)
107 y2(i) = x(2,i2) - x(2,i1)
108 z2(i) = x(3,i2) - x(3,i1)
109 x3(i) = x(1,i3) - x(1,i1)
110 y3(i) = x(2,i3) - x(2,i1)
111 z3(i) = x(3,i3) - x(3,i1)
112 x4(i) = x(1,i4) - x(1,i1)
113 y4(i) = x(2,i4) - x(2,i1)
114 z4(i) = x(3,i4) - x(3,i1)
118 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
119 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
120 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
123 xl(1,2,i) = e1x(i)*x2(i) + e1y(i)*y2(i) + e1z(i)*z2(i)
124 xl(2,2,i) = e2x(i)*x2(i) + e2y(i)*y2(i) + e2z(i)*z2(i)
125 xl(1,3,i) = e1x(i)*x3(i) + e1y(i)*y3(i) + e1z(i)*z3(i)
126 xl(2,3,i) = e2x(i)*x3(i) + e2y(i)*y3(i) + e2z(i)*z3(i)
127 xl(1,4,i) = e1x(i)*x4(i) + e1y(i)*y4(i) + e1z(i)*z4(i)
128 xl(2,4,i) = e2x(i)*x4(i) + e2y(i)*y4(i) + e2z(i)*z4(i)
133 x2(i) = xrefc(2,1,i) - xrefc(1,1,i)
134 y2(i) = xrefc(2,2,i) - xrefc(1,2,i)
135 z2(i) = xrefc(2,3,i) - xrefc(1,3,i)
136 x3(i) = xrefc(3,1,i) - xrefc(1,1,i)
137 y3(i) = xrefc(3,2,i) - xrefc(1,2,i)
138 z3(i) = xrefc(3,3,i) - xrefc(1,3,i)
139 x4(i) = xrefc(4,1,i) - xrefc(1,1,i)
140 y4(i) = xrefc(4,2,i) - xrefc(1,2,i)
141 z4(i) = xrefc(4,3,i) - xrefc(1,3,i)
145 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
146 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
147 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
149 fac = one / float(nitrs)
154 vl(1,2,i) = e1x(i)*xl(1,2,i) + e2x(i)*xl(2,2,i)
155 vl(2,2,i) = e1y(i)*xl(1,2,i) + e2y(i)*xl(2,2,i)
156 vl(3,2,i) = e1z(i)*xl(1,2,i) + e2z(i)*xl(2,2,i)
157 vl(1,3,i) = e1x(i)*xl(1,3,i) + e2x(i)*xl(2,3,i)
158 vl(2,3,i) = e1y(i)*xl(1,3,i) + e2y(i)*xl(2,3,i)
159 vl(3,3,i) = e1z(i)*xl(1,3,i) + e2z(i)*xl(2,3,i)
160 vl(1,4,i) = e1x(i)*xl(1,4,i) + e2x(i)*xl(2,4,i)
161 vl(2,4,i) = e1y(i)*xl(1,4,i) + e2y(i)*xl(2,4,i)
162 vl(3,4,i) = e1z(i)*xl(1,4,i) + e2z(i)*xl(2,4,i)
164 vl(1,2,i) = (vl(1,2,i) - x2(i)) * fac
165 vl(2,2,i) = (vl(2,2,i) - y2(i)) * fac
166 vl(3,2,i) = (vl(3,2,i) - z2(i)) * fac
167 vl(1,3,i) = (vl(1,3,i) - x3(i)) * fac
168 vl(2,3,i) = (vl(2,3,i) - y3(i)) * fac
169 vl(3,3,i) = (vl(3,3,i) - z3(i)) * fac
170 vl(1,4,i) = (vl(1,4,i) - x4(i)) * fac
171 vl(2,4,i) = (vl(2,4,i) - y4(i)) * fac
172 vl(3,4,i) = (vl(3,4,i) - z4(i)) * fac
175 IF (ismstr /= 1 .AND. ismstr /= 11)
THEN
178 fac = float(nt) - one
180 x1(i) = xrefc(1,1,i) + fac*vl(1,1,i)
181 y1(i) = xrefc(1,2,i) + fac*vl(2,1,i)
182 z1(i) = xrefc(1,3,i) + fac*vl(3,1,i)
183 x2(i) = xrefc(2,1,i) + fac*vl(1,2,i)
184 y2(i) = xrefc(2,2,i) + fac*vl(2,2,i)
185 z2(i) = xrefc(2,3,i) + fac*vl(3,2,i)
186 x3(i) = xrefc(3,1,i) + fac*vl(1,3,i)
187 y3(i) = xrefc(3,2,i) + fac*vl(2,3,i)
188 z3(i) = xrefc(3,3,i) + fac*vl(3,3,i)
189 x4(i) = xrefc(4,1,i) + fac*vl(1,4,i)
190 y4(i) = xrefc(4,2,i) + fac*vl(2,4,i)
191 z4(i) = xrefc(4,3,i) + fac*vl(3,4,i)
195 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
196 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
197 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
199 CALL corth3(elbuf_str,dir_a,dir_b,jft,jlt,
201 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
202 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
203 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z ,
208 . px1g ,px2g ,py1g ,py2g ,
209 . px1 ,px2 ,py1 ,py2 ,
210 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
211 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
212 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
213 . x2s ,y2s ,x3s ,y3s ,x4s ,y4s )
215 CALL cdefoi(jft ,jlt ,vl ,gstr ,
216 . px1 ,px2 ,py1 ,py2 ,nel,
217 .
area ,exx ,eyy ,exy ,eyz ,ezx ,
218 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
221 . jft ,jlt ,ilaw ,ithk ,pm ,
222 . for ,thk ,eint ,gstr ,dir_a ,
224 . nel ,sigi ,npf ,tf ,
225 .
area ,exx ,eyy ,exy ,imat )
233 . px1g ,px2g ,py1g ,py2g ,
234 . px1 ,px2 ,py1 ,py2 ,
235 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
236 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
237 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z ,
238 . x2s ,y2s ,x3s ,y3s ,x4s ,y4s )
240 dir1 => elbuf_str%BUFLY(1)%DIRA
241 dir2 => elbuf_str%BUFLY(1)%DIRB
244 CALL cdefoi(jft ,jlt ,vl ,gstr ,
245 . px1 ,px2 ,py1 ,py2 ,nel,
246 .
area ,exx ,eyy ,exy ,eyz ,ezx ,
247 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
250 . jft ,jlt ,ilaw ,ithk ,pm ,
251 . for ,thk ,eint ,gstr ,dir1 ,
253 . nel ,sigi ,npf ,tf ,
254 .
area ,exx ,eyy ,exy ,imat )
431 . PX1 ,PX2 ,PY1 ,PY2 ,NEL ,
432 . AREA ,EXX ,EYY ,EXY ,EYZ ,EZX ,
433 . E1X ,E2X ,E3X ,E1Y ,E2Y ,E3Y ,E1Z ,E2Z ,E3Z )
437#include "implicit_f.inc"
441#include "mvsiz_p.inc"
447 . VL(3,4,*) ,GSTR(NEL,8),
448 . PX1(NEL) ,PX2(NEL) ,PY1(NEL) ,PY2(NEL),
449 . E1X(MVSIZ) , E1Y(MVSIZ) , E1Z(MVSIZ) ,
450 . E2X(MVSIZ) , E2Y(MVSIZ) , E2Z(MVSIZ) ,
451 . E3X(MVSIZ) , E3Y(MVSIZ) , E3Z(MVSIZ) ,
452 .
area(mvsiz),exx(mvsiz),eyy(mvsiz),exy(mvsiz),eyz(mvsiz),ezx(mvsiz)
459 . VX1(MVSIZ) , VX2(MVSIZ) , VX3(MVSIZ) , VX4(MVSIZ) ,
460 . VY1(MVSIZ) , VY2(MVSIZ) , VY3(MVSIZ) , VY4(MVSIZ) ,
461 . VZ1(MVSIZ) , VZ2(MVSIZ) , VZ3(MVSIZ) , VZ4(MVSIZ) ,
462 . VX13(MVSIZ), VX24(MVSIZ), VY13(MVSIZ), VY24(MVSIZ),
463 . VZ13(MVSIZ), VZ24(MVSIZ)
464 my_real TMP1, TMP2, TMP3, FAC1
467 vx1(i) = e1x(i)*vl(1,1,i) + e1y(i)*vl(2,1,i) + e1z(i)*vl(3,1,i)
468 vx2(i) = e1x(i)*vl(1,2,i) + e1y(i)*vl(2,2,i) + e1z(i)*vl(3,2,i)
469 vx3(i) = e1x(i)*vl(1,3,i) + e1y(i)*vl(2,3,i) + e1z(i)*vl(3,3,i)
470 vx4(i) = e1x(i)*vl(1,4,i) + e1y(i)*vl(2,4,i) + e1z(i)*vl(3,4,i)
472 vy4(i) = e2x(i)*vl(1,4,i) + e2y(i)*vl(2,4,i) + e2z(i)*vl(3,4,i)
473 vy3(i) = e2x(i)*vl(1,3,i) + e2y(i)*vl(2,3,i) + e2z(i)*vl(3,3,i)
474 vy2(i) = e2x(i)*vl(1,2,i) + e2y(i)*vl(2,2,i) + e2z(i)*vl(3,2,i)
475 vy1(i) = e2x(i)*vl(1,1,i) + e2y(i)*vl(2,1,i) + e2z(i)*vl(3,1,i)
477 vz1(i) = e3x(i)*vl(1,1,i) + e3y(i)*vl(2,1,i) + e3z(i)*vl(3,1,i)
478 vz2(i) = e3x(i)*vl(1,2,i) + e3y(i)*vl(2,2,i) + e3z(i)*vl(3,2,i)
479 vz3(i) = e3x(i)*vl(1,3,i) + e3y(i)*vl(2,3,i) + e3z(i)*vl(3,3,i)
480 vz4(i) = e3x(i)*vl(1,4,i) + e3y(i)*vl(2,4,i) + e3z(i)*vl(3,4,i)
484 vz13(i) = vz1(i)-vz3(i)
485 vz24(i) = vz2(i)-vz4(i)
487 tmp3 = sign(
max(abs(tmp2),em20),tmp2)
488 tmp1 = fourth*(vz13(i)-vz24(i))**2/tmp3
489 vx13(i) = vx1(i)-vx3(i)
490 vx24(i) = vx2(i)-vx4(i)
491 vx13(i) = vx13(i)-tmp1
492 vx24(i) = vx24(i)+tmp1
494 exx(i) = px1(i)*vx13(i)+px2(i)*vx24(i)
495 exy(i) = py1(i)*vx13(i)+py2(i)*vx24(i)
498 tmp3=sign(
max(abs(tmp1),em20),tmp1)
499 tmp2=fourth*(vz13(i)+vz24(i))**2/tmp3
500 vy13(i)=vy1(i)-vy3(i)
501 vy24(i)=vy2(i)-vy4(i)
505 exy(i)=exy(i)+px1(i)*vy13(i)+px2(i)*vy24(i)
506 eyy(i)=py1(i)*vy13(i)+py2(i)*vy24(i)
507 eyz(i)=py1(i)*vz13(i)+py2(i)*vz24(i)
508 ezx(i)=px1(i)*vz13(i)+px2(i)*vz24(i)
519 gstr(i,1)=gstr(i,1)+exx(i)
520 gstr(i,2)=gstr(i,2)+eyy(i)
521 gstr(i,3)=gstr(i,3)+exy(i)