44
45
46
47 USE mat_elem_mod
48 use element_mod , only : nixc
49
50
51
52#include "implicit_f.inc"
53
54
55
56#include "mvsiz_p.inc"
57
58
59
60#include "param_c.inc"
61#include "scr03_c.inc"
62
63
64
65 INTEGER JFT, JLT, ISMSTR, MTN,IMAT,ITHK, NEL, IREP,NLAY
66 INTEGER IXC(NIXC,*),IGEO(NPROPGI,*),IPM(NPROPMI,*),NPF(*)
68 . pm(npropm,*),geo(npropg,*) ,x(3,*) ,xrefc(4,3,*),
69 .
for(nel,5) ,thk(*) ,eint(jlt,2),gstr(nel,8),
70 . px1g(*) ,px2g(*) ,py1g(*) ,py2g(*),
71 . x2s(*) ,y2s(*) ,x3s(*) ,y3s(*) ,x4s(*) ,
72 . y4s(*) ,off(*) ,uvar(nel,*) ,
73 . dir_a(nel,*),dir_b(nel,*),sigi(nel,3),tf(*)
74 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
75 TYPE (MATPARAM_STRUCT_) ,INTENT(IN) :: MAT_PARAM
76
77
78
79 INTEGER I, 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 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
area(mvsiz),
87 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
88 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
89 . exx(mvsiz),eyy(mvsiz),exy(mvsiz),eyz(mvsiz),ezx(mvsiz),
90 . vl(3,4,mvsiz), xl(3,4,mvsiz)
92 . DIMENSION(:) , POINTER :: dir1, dir2
93
94
95
96 idrape = elbuf_str%IDRAPE
97 igtyp = elbuf_str%IGTYP
98 DO i=jft,jlt
99 i1 = ixc(2,i)
100 i2 = ixc(3,i)
101 i3 = ixc(4,i)
102 i4 = ixc(5,i)
103 x1(i) = zero
104 y1(i) = zero
105 z1(i) = zero
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)
115 ENDDO
116
118 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
119 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
120 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
121
122 DO i=jft,jlt
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)
129 ENDDO
130
131
132
133 DO i=jft,jlt
134 x2(i) = xrefc(2,1,i) - xrefc(1,1,i)
135 y2(i) = xrefc(2,2,i) - xrefc(1,2,i)
136 z2(i) = xrefc(2,3,i) - xrefc(1,3,i)
137 x3(i) = xrefc(3,1,i) - xrefc(1,1,i)
138 y3(i) = xrefc(3,2,i) - xrefc(1,2,i)
139 z3(i) = xrefc(3,3,i) - xrefc(1,3,i)
140 x4(i) = xrefc(4,1,i) - xrefc(1,1,i)
141 y4(i) = xrefc(4,2,i) - xrefc(1,2,i)
142 z4(i) = xrefc(4,3,i) - xrefc(1,3,i)
143 ENDDO
144
146 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
147 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
148 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
149
150 DO i=jft,jlt
151 vl(1,1,i) = zero
152 vl(2,1,i) = zero
153 vl(3,1,i) = zero
154
155 vl(1,2,i) = e1x(i)*xl(1,2,i) + e2x(i)*xl(2,2,i)
156 vl(2,2,i) = e1y(i)*xl(1,2,i) + e2y(i)*xl(2,2,i)
157 vl(3,2,i) = e1z(i)*xl(1,2,i) + e2z(i)*xl(2,2,i)
158 vl(1,3,i) = e1x(i)*xl(1,3,i) + e2x(i)*xl(2,3,i)
159 vl(2,3,i) = e1y(i)*xl(1,3,i) + e2y(i)*xl(2,3,i)
160 vl(3,3,i) = e1z(i)*xl(1,3,i) + e2z(i)*xl(2,3,i)
161 vl(1,4,i) = e1x(i)*xl(1,4,i) + e2x(i)*xl(2,4,i)
162 vl(2,4,i) = e1y(i)*xl(1,4,i) + e2y(i)*xl(2,4,i)
163 vl(3,4,i) = e1z(i)*xl(1,4,i) + e2z(i)*xl(2,4,i)
164 ENDDO
165
166 fac = one / float(nitrs)
167 DO i=jft,jlt
168 vl(1,2,i) = (vl(1,2,i) - x2(i)) * fac
169 vl(2,2,i) = (vl(2,2,i) - y2(i)) * fac
170 vl(3,2,i) = (vl(3,2,i) - z2(i)) * fac
171 vl(1,3,i) = (vl(1,3,i) - x3(i)) * fac
172 vl(2,3,i) = (vl(2,3,i) - y3(i)) * fac
173 vl(3,3,i) = (vl(3,3,i) - z3(i)) * fac
174 vl(1,4,i) = (vl(1,4,i) - x4(i)) * fac
175 vl(2,4,i) = (vl(2,4,i) - y4(i)) * fac
176 vl(3,4,i) = (vl(3,4,i) - z4(i)) * fac
177 ENDDO
178
179
180
181 IF (ismstr /= 1 .AND. ismstr /= 11) THEN
182
183 DO nt=1,nitrs
184
185 fac = float(nt) - one
186
187 DO i=jft,jlt
188 x1(i) = xrefc(1,1,i) + fac*vl(1,1,i)
189 y1(i) = xrefc(1,2,i) + fac*vl(2,1,i)
190 z1(i) = xrefc(1,3,i) + fac*vl(3,1,i)
191 x2(i) = xrefc(2,1,i) + fac*vl(1,2,i)
192 y2(i) = xrefc(2,2,i) + fac*vl(2,2,i)
193 z2(i) = xrefc(2,3,i) + fac*vl(3,2,i)
194 x3(i) = xrefc(3,1,i) + fac*vl(1,3,i)
195 y3(i) = xrefc(3,2,i) + fac*vl(2,3,i)
196 z3(i) = xrefc(3,3,i) + fac*vl(3,3,i)
197 x4(i) = xrefc(4,1,i) + fac*vl(1,4,i)
198 y4(i) = xrefc(4,2,i) + fac*vl(2,4,i)
199 z4(i) = xrefc(4,3,i) + fac*vl(3,4,i)
200 ENDDO
201
203 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
204 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
205 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
206
207 CALL corth3(elbuf_str,dir_a ,dir_b ,jft ,jlt ,
208 . nlay ,irep ,nel ,
209 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
210 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
211 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
212 . idrape, igtyp )
213
215 . px1g ,px2g ,py1g ,py2g ,
216 . px1 ,px2 ,py1 ,py2 ,
217 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
218 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
219 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
220 . x2s ,y2s ,x3s ,y3s ,x4s ,y4s )
221
222 CALL cdefoi(jft ,jlt ,vl ,gstr ,
223 . px1 ,px2 ,py1 ,py2 ,nel,
224 .
area ,exx ,eyy ,exy ,eyz ,ezx ,
225 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
227 . jft ,jlt ,mtn ,ithk ,pm ,
228 .
for ,thk ,eint ,gstr ,dir_a,
229 . dir_b,uvar ,ipm ,
230 . nel ,sigi ,npf ,tf ,
231 .
area ,exx ,eyy ,exy ,imat )
232
233 ENDDO
234
235 ELSE
236
238 . px1g ,px2g ,py1g ,py2g ,
239 . px1 ,px2 ,py1 ,py2 ,
240 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
241 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
242 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
243 . x2s ,y2s ,x3s ,y3s ,x4s ,y4s )
244
245 dir1 => elbuf_str%BUFLY(1)%DIRA
246 dir2 => elbuf_str%BUFLY(1)%DIRB
247
248 DO nt=1,nitrs
249 CALL cdefoi(jft ,jlt ,vl ,gstr ,
250 . px1 ,px2 ,py1 ,py2 ,nel ,
251 .
area ,exx ,eyy ,exy ,eyz ,ezx ,
252 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
253
255 . jft,jlt,mtn,ithk,pm,
256 .
for,thk,eint,gstr,dir1,
257 . dir2,uvar,ipm,
258 . nel,sigi,npf ,tf,
259 .
area,exx ,eyy ,exy, imat )
260 ENDDO
261 ENDIF
262
263 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--)