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, ILAW,IMAT,ITHK,NEL,IREP,NLAY
65 INTEGER IXTG(NIXTG,*),IPM(NPROPMI,*),NPF(*)
67 . pm(npropm,*),geo(npropg,*) ,x(3,*) ,xreftg(3,3,*),
68 .
for(nel,5) ,thk(*) ,eint(jlt,2),gstr(nel,8),
69 . px2g(*) ,py2g(*) ,px3g(*) ,py3g(*) ,uvar(*),
70 . x2s(*) ,x3s(*) ,y2s(*) ,y3s(*) ,off
71 . dir_a(nel,*),dir_b(nel,*),sigi(nel,3),tf(*)
72 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
73 TYPE (MATPARAM_STRUCT_) ,INTENT(IN) :: MAT_PARAM
74
75
76
77 INTEGER I, NT, I1, I2, I3,IDRAPE,IGTYP
80 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
81 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
82 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
83 . x1(mvsiz) , x2(mvsiz) , x3(mvsiz) ,x4(mvsiz) ,
84 . y1(mvsiz) , y2(mvsiz) , y3(mvsiz) ,y4(mvsiz) ,
85 . z1(mvsiz) , z2(mvsiz) , z3(mvsiz), z4(mvsiz) ,
area(mvsiz),
86 . px2(mvsiz), px3(mvsiz), py2(mvsiz), py3(mvsiz),
87 . exx(mvsiz),eyy(mvsiz),exy(mvsiz),eyz(mvsiz),ezx(mvsiz),
88 . vl(3,3,mvsiz), xl(3,3,mvsiz)
90 . DIMENSION(:) , POINTER :: dir1, dir2
91
92
93 idrape = elbuf_str%IDRAPE
94 igtyp = elbuf_str%IGTYP
95 DO i=jft,jlt
96 i1 = ixtg(2,i)
97 i2 = ixtg(3,i)
98 i3 = ixtg(4,i)
99 x1(i) = zero
100 y1(i) = zero
101 z1(i) = zero
102 x2(i) = x(1,i2)-x(1,i1)
103 y2(i) = x(2,i2)-x(2,i1)
104 z2(i) = x(3,i2)-x(3,i1)
105 x3(i) = x(1,i3)-x(1,i1)
106 y3(i) = x(2,i3)-x(2,i1)
107 z3(i) = x(3,i3)-x(3,i1)
108 ENDDO
109
111 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
112 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
113 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
114
115 DO i=jft,jlt
116 xl(1,2,i) = e1x(i)*x2(i) + e1y(i)*y2(i) + e1z(i)*z2(i)
117 xl(2,2,i) = e2x(i)*x2(i) + e2y(i)*y2(i) + e2z(i)*z2(i)
118 xl(1,3,i) = e1x(i)*x3(i) + e1y(i)*y3(i) + e1z(i)*z3(i)
119 xl(2,3,i) = e2x(i)*x3(i) + e2y(i)*y3(i) + e2z(i)*z3(i)
120 ENDDO
121
122 DO i=jft,jlt
123 x2(i) = xreftg(2,1,i) - xreftg(1,1,i)
124 y2(i) = xreftg(2,2,i) - xreftg(1,2,i)
125 z2(i) = xreftg(2,3,i) - xreftg(1,3,i)
126 x3(i) = xreftg(3,1,i) - xreftg(1,1,i)
127 y3(i) = xreftg(3,2,i) - xreftg(1,2,i)
128 z3(i) = xreftg(3,3,i) - xreftg(1,3,i)
129 ENDDO
130
132 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
133 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
134 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
135
136 DO i=jft,jlt
137 vl(1,1,i) = zero
138 vl(2,1,i) = zero
139 vl(3,1,i) = zero
140 vl(1,2,i) = e1x(i)*xl(1,2,i)+e2x(i)*xl(2,2,i)
141 vl(2,2,i) = e1y(i)*xl(1,2,i)+e2y(i)*xl(2,2,i)
142 vl(3,2,i) = e1z(i)*xl(1,2,i)+e2z(i)*xl(2,2,i)
143 vl(1,3,i) = e1x(i)*xl(1,3,i)+e2x(i)*xl(2,3,i)
144 vl(2,3,i) = e1y(i)*xl(1,3,i)+e2y(i)*xl(2,3,i)
145 vl(3,3,i) = e1z(i)*xl(1,3,i)+e2z(i)*xl(2,3,i)
146 ENDDO
147
148 fac = one / float(nitrs)
149 DO i=jft,jlt
150 vl(1,2,i) = (vl(1,2,i) - x2(i))*fac
151 vl(2,2,i) = (vl(2,2,i) - y2(i))*fac
152 vl(3,2,i) = (vl(3,2,i) - z2(i))*fac
153 vl(1,3,i) = (vl(1,3,i) - x3(i))*fac
154 vl(2,3,i) = (vl(2,3,i) - y3(i))*fac
155 vl(3,3,i) = (vl(3,3,i) - z3(i))*fac
156 ENDDO
157
158 IF (ismstr/=1) THEN
159 DO nt=1,nitrs
160 fac = float(nt) - one
161
162 DO i=jft,jlt
163 x1(i) = xreftg(1,1,i) + fac*vl(1,1,i)
164 y1(i) = xreftg(1,2,i) + fac*vl(2,1,i)
165 z1(i) = xreftg(1,3,i) + fac*vl(3,1,i)
166 x2(i) = xreftg(2,1,i) + fac*vl(1,2,i)
167 y2(i) = xreftg(2,2,i) + fac*vl(2,2,i)
168 z2(i) = xreftg(2,3,i) + fac*vl(3,2,i)
169 x3(i) = xreftg(3,1,i) + fac*vl(1,3,i)
170 y3(i) = xreftg(3,2,i) + fac*vl(2,3,i)
171 z3(i) = xreftg(3,3,i) + fac*vl(3,3,i)
172 ENDDO
173
175 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
176 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
177 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
178
179 CALL corth3(elbuf_str,dir_a ,dir_b ,jft ,jlt ,
180 . nlay ,irep ,nel ,
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 . idrape , igtyp )
185
187 . px2g ,py2g ,px3g ,py3g ,
188 . px2 ,py2 ,px3 ,py3 ,
189 . x2s ,y2s ,x3s ,y3s ,
190 . x1 ,x2 ,x3 ,y1 ,y2 ,
191 . y3 ,z1 ,z2 ,z3 ,
192 . e1x ,e2x ,e3x ,e1y ,e2y ,
193 . e3y ,e1z ,e2z ,e3z ,
area )
194
195 CALL cdkdefoi(jft ,jlt ,nel ,vl ,gstr ,
196 . px2 ,py2 ,px3 ,py3 ,
197 . e1x ,e2x ,e3x ,e1y ,e2y ,
198 . e3y ,e1z ,e2z ,e3z ,
199 . exx ,eyy ,exy ,eyz ,ezx )
200
202 . jft ,jlt ,ilaw ,ithk ,pm ,
203 .
for ,thk ,eint ,gstr ,dir_a,
204 . dir_b,uvar ,ipm ,
205 . nel ,sigi ,npf ,tf ,
206 .
area ,exx ,eyy ,exy ,imat )
207 ENDDO
208 ELSE
209
210
211
213 . px2g ,py2g ,px3g ,py3g ,
214 . px2 ,py2 ,px3 ,py3 ,
215 . x2s ,y2s ,x3s ,y3s ,
216 . x1 ,x2 ,x3 ,y1 ,y2 ,
217 . y3 ,z1 ,z2 ,z3 ,
218 . e1x ,e2x ,e3x ,e1y ,e2y ,
219 . e3y ,e1z ,e2z ,e3z ,
area )
220 dir1 => elbuf_str%BUFLY(1)%DIRA
221 dir2 => elbuf_str%BUFLY(1)%DIRB
222
223 DO nt=1,nitrs
224 CALL cdkdefoi(jft ,jlt ,nel ,vl ,gstr ,
225 . px2 ,py2 ,px3 ,py3 ,
226 . e1x ,e2x ,e3x ,e1y ,e2y ,
227 . e3y ,e1z ,e2z ,e3z ,
228 . exx ,eyy ,exy ,eyz ,ezx )
229
231 . jft ,jlt ,ilaw ,ithk ,pm ,
232 .
for ,thk ,eint ,gstr ,dir_a,
233 . dir_b,uvar ,ipm ,
234 . nel ,sigi ,npf ,tf ,
235 .
area ,exx ,eyy ,exy ,imat )
236
237 ENDDO
238 off(jft:jlt) = two
239 ENDIF
240
241 RETURN
subroutine cdkevec3(jft, jlt, area, x1, x2, x3, y1, y2, y3, z1, z2, z3, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
subroutine cdkdefoi(jft, jlt, nel, vl, gstr, px2, py2, px3, py3, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, exx, eyy, exy, eyz, ezx)
subroutine cdkpxpyi(jft, jlt, ismstr, px2g, py2g, px3g, py3g, px2, py2, px3, py3, x2, y2, x3, y3, x1g, x2g, x3g, y1g, y2g, y3g, z1g, z2g, z3g, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, area)
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 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--)