44
45
46
47 USE mat_elem_mod
48
49
50
51#include "implicit_f.inc"
52
53
54
55#include "mvsiz_p.inc"
56
57
58
59#include "param_c.inc"
60#include "scr03_c.inc"
61
62
63
64 INTEGER JFT, JLT, ISMSTR, MTN,IMAT,ITHK, NEL, IREP,NLAY
65 INTEGER IXC(NIXC,*),IGEO(NPROPGI,*),IPM(NPROPMI,*),NPF(*)
67 . pm(npropm,*),geo(npropg,*) ,x(3,*) ,xrefc(4,3,*),
68 .
for(nel,5) ,thk(*) ,eint(jlt,2),gstr(nel,8),
69 . px1g(*) ,px2g(*) ,py1g(*) ,py2g(*),
70 . x2s(*) ,y2s(*) ,x3s(*) ,y3s(*) ,x4s(*) ,
71 . y4s(*) ,off(*) ,uvar(nel,*) ,
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
75
76
77
78 INTEGER I, NT, I1, I2, I3, I4,IDRAPE,IGTYP
81 . x1(mvsiz) , x2(mvsiz) , x3(mvsiz) , x4(mvsiz) ,
82 . y1(mvsiz) , y2(mvsiz) , y3(mvsiz) , y4(mvsiz) ,
83 . z1(mvsiz) , z2(mvsiz) , z3(mvsiz) , z4(mvsiz) ,
84 . px1(mvsiz), px2(mvsiz), py1(mvsiz), py2(mvsiz),
85 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
area(mvsiz),
86 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
87 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
88 . exx(mvsiz),eyy(mvsiz),exy(mvsiz),eyz(mvsiz),ezx(mvsiz),
89 . vl(3,4,mvsiz), xl(3,4,mvsiz)
91 . DIMENSION(:) , POINTER :: dir1, dir2
92
93
94
95 idrape = elbuf_str%IDRAPE
96 igtyp = elbuf_str%IGTYP
97 DO i=jft,jlt
98 i1 = ixc(2,i)
99 i2 = ixc(3,i)
100 i3 = ixc(4,i)
101 i4 = ixc(5,i)
102 x1(i) = zero
103 y1(i) = zero
104 z1(i) = zero
105 x2(i) = x(1,i2) - x(1,i1)
106 y2(i) = x(2,i2) - x(2,i1)
107 z2(i) = x(3,i2) - x(3,i1)
108 x3(i) = x(1,i3) - x(1,i1)
109 y3(i) = x(2,i3) - x(2,i1)
110 z3(i) = x(3,i3) - x(3,i1)
111 x4(i) = x(1,i4) - x(1,i1)
112 y4(i) = x(2,i4) - x(2,i1)
113 z4(i) = x(3,i4) - x(3,i1)
114 ENDDO
115
117 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
118 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
119 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
120
121 DO i=jft,jlt
122 xl(1,2,i) = e1x(i)*x2(i) + e1y(i)*y2(i) + e1z(i)*z2(i)
123 xl(2,2,i) = e2x(i)*x2(i) + e2y(i)*y2(i) + e2z(i)*z2(i)
124 xl(1,3,i) = e1x(i)*x3(i) + e1y(i)*y3(i) + e1z(i)
125 xl(2,3,i) = e2x(i)*x3(i) + e2y(i)*y3(i) + e2z(i)*z3(i)
126 xl(1,4,i) = e1x(i)*x4(i) + e1y(i)*y4(i) + e1z(i)*z4(i)
127 xl(2,4,i) = e2x(i)*x4(i) + e2y(i)*y4(i) + e2z(i)*z4(i)
128 ENDDO
129
130
131
132 DO i=jft,jlt
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)
142 ENDDO
143
145 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
146 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
147 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
148
149 DO i=jft,jlt
150 vl(1,1,i) = zero
151 vl(2,1,i) = zero
152 vl(3,1,i) = zero
153
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)
163 ENDDO
164
165 fac = one / float(nitrs)
166 DO i=jft,jlt
167 vl(1,2,i) = (vl(1,2,i) - x2(i)) * fac
168 vl(2,2,i) = (vl(2,2,i) - y2(i)) * fac
169 vl(3,2,i) = (vl(3,2,i) - z2(i)) * fac
170 vl(1,3,i) = (vl(1,3,i) - x3(i)) * fac
171 vl(2,3,i) = (vl(2,3,i) - y3(i)) * fac
172 vl(3,3,i) = (vl(3,3,i) - z3(i)) * fac
173 vl(1,4,i) = (vl(1,4,i) - x4(i)) * fac
174 vl(2,4,i) = (vl(2,4,i) - y4(i)) * fac
175 vl(3,4,i) = (vl(3,4,i) - z4(i)) * fac
176 ENDDO
177
178
179
180 IF (ismstr /= 1 .AND. ismstr /= 11) THEN
181
182 DO nt=1,nitrs
183
184 fac = float(nt) - one
185
186 DO i=jft,jlt
187 x1(i) = xrefc(1,1,i) + fac*vl(1,1,i)
188 y1(i) = xrefc(1,2,i) + fac*vl(2,1,i)
189 z1(i) = xrefc(1,3,i) + fac*vl(3,1,i)
190 x2(i) = xrefc(2,1,i) + fac*vl(1,2,i)
191 y2(i) = xrefc(2,2,i) + fac*vl(2,2,i)
192 z2(i) = xrefc(2,3,i) + fac*vl(3,2,i)
193 x3(i) = xrefc(3,1,i) + fac*vl(1,3,i)
194 y3(i) = xrefc(3,2,i) + fac*vl(2,3,i)
195 z3(i) = xrefc(3,3,i) + fac*vl(3,3,i)
196 x4(i) = xrefc(4,1,i) + fac*vl(1,4,i)
197 y4(i) = xrefc(4,2,i) + fac*vl(2,4,i)
198 z4(i) = xrefc(4,3,i) + fac*vl(3,4,i)
199 ENDDO
200
202 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
203 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
204 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
205
206 CALL corth3(elbuf_str,dir_a ,dir_b ,jft ,jlt ,
207 . nlay ,irep ,nel ,
208 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
209 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
210 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
211 . idrape, igtyp )
212
214 . px1g ,px2g ,py1g ,py2g ,
215 . px1 ,px2 ,py1 ,py2 ,
216 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
217 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
218 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
219 . x2s ,y2s ,x3s ,y3s ,x4s ,y4s )
220
221 CALL cdefoi(jft ,jlt ,vl ,gstr ,
222 . px1 ,px2 ,py1 ,py2 ,nel,
223 .
area ,exx ,eyy ,exy ,eyz ,ezx ,
224 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
226 . jft ,jlt ,mtn ,ithk ,pm ,
227 .
for ,thk ,eint ,gstr ,dir_a,
228 . dir_b,uvar ,ipm ,
229 . nel ,sigi ,npf ,tf ,
230 .
area ,exx ,eyy ,exy ,imat )
231
232 ENDDO
233
234 ELSE
235
237 . px1g ,px2g ,py1g ,py2g ,
238 . px1 ,px2 ,py1 ,py2 ,
239 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
240 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
241 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
242 . x2s ,y2s ,x3s ,y3s ,x4s ,y4s )
243
244 dir1 => elbuf_str%BUFLY(1)%DIRA
245 dir2 => elbuf_str%BUFLY(1)%DIRB
246
247 DO nt=1,nitrs
248 CALL cdefoi(jft ,jlt ,vl ,gstr ,
249 . px1 ,px2 ,py1 ,py2 ,nel ,
250 .
area ,exx ,eyy ,exy ,eyz ,ezx ,
251 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
252
254
255 .
for,thk,eint,gstr,dir1,
256 . dir2,uvar,ipm,
257 . nel,sigi,npf ,tf,
258 .
area,exx ,eyy ,exy, imat )
259 ENDDO
260 ENDIF
261
262 RETURN
subroutine cmlawi(mat_param, jft, jlt, ilaw, ithk, pm, for, thk, eint, gstr, dir1, dir2, uvar, ipm, nel, sigi, npf, tf, area, exx, eyy, exy, imat)
subroutine cdefoi(jft, jlt, vl, gstr, px1, px2, py1, py2, nel, area, exx, eyy, exy, eyz, ezx, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
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 cneveci(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 corth3(elbuf_str, dir_a, dir_b, jft, jlt, nlay, irep, nel, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, idrape, igtyp)
subroutine area(d1, x, x2, y, y2, eint, stif0)
for(i8=*sizetab-1;i8 >=0;i8--)