44
45
46
47 USE mat_elem_mod
48 use element_mod , only : nixtg
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, ILAW,IMAT,ITHK,NEL,IREP,NLAY
66 INTEGER IXTG(NIXTG,*),IPM(NPROPMI,*),NPF(*)
68 . pm(npropm,*),geo(npropg,*) ,x(3,*) ,xreftg(3,3,*),
69 .
for(nel,5) ,thk(*) ,eint(jlt,2),gstr(nel,8),
70 . px2g(*) ,py2g(*) ,px3g(*) ,py3g(*) ,uvar(*),
71 . x2s(*) ,x3s(*) ,y2s(*) ,y3s(*) ,off(*),
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,IDRAPE,IGTYP
81 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
82 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
83 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
84 . x1(mvsiz) , x2(mvsiz) , x3(mvsiz) ,x4(mvsiz) ,
85 . y1(mvsiz) , y2(mvsiz) , y3(mvsiz) ,y4(mvsiz) ,
86 . z1(mvsiz) , z2(mvsiz) , z3(mvsiz), z4(mvsiz) ,
area(mvsiz),
87 . px2(mvsiz), px3(mvsiz), py2(mvsiz), py3(mvsiz),
88 . exx(mvsiz),eyy(mvsiz),exy(mvsiz),eyz(mvsiz),ezx(mvsiz),
89 . vl(3,3,mvsiz), xl(3,3,mvsiz)
91 . DIMENSION(:) , POINTER :: dir1, dir2
92
93
94 idrape = elbuf_str%IDRAPE
95 igtyp = elbuf_str%IGTYP
96 DO i=jft,jlt
97 i1 = ixtg(2,i)
98 i2 = ixtg(3,i)
99 i3 = ixtg(4,i)
100 x1(i) = zero
101 y1(i) = zero
102 z1(i) = zero
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)
109 ENDDO
110
112 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
113 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
114 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
115
116 DO i=jft,jlt
117 xl(1,2,i) = e1x(i)*x2(i) + e1y(i)*y2(i) + e1z(i)*z2(i)
118 xl(2,2,i) = e2x(i)*x2(i) + e2y(i)*y2(i) + e2z(i)*z2(i)
119 xl(1,3,i) = e1x(i)*x3(i) + e1y(i)*y3(i) + e1z(i)*z3(i)
120 xl(2,3,i) = e2x(i)*x3(i) + e2y(i)*y3(i) + e2z(i)*z3(i)
121 ENDDO
122
123 DO i=jft,jlt
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)
129 z3(i) = xreftg(3,3,i) - xreftg(1,3,i)
130 ENDDO
131
133 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
134 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
135 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
136
137 DO i=jft,jlt
138 vl(1,1,i) = zero
139 vl(2,1,i) = zero
140 vl(3,1,i) = zero
141 vl(1,2,i) = e1x(i)*xl(1,2,i)+e2x(i)*xl(2,2,i)
142 vl(2,2,i) = e1y(i)*xl(1,2,i)+e2y(i)*xl(2,2,i)
143 vl(3,2,i) = e1z(i)*xl(1,2,i)+e2z(i)*xl(2,2,i)
144 vl(1,3,i) = e1x(i)*xl(1,3,i)+e2x(i)*xl(2,3,i)
145 vl(2,3,i) = e1y(i)*xl(1,3,i)+e2y(i)*xl(2,3,i)
146 vl(3,3,i) = e1z(i)*xl(1,3,i)+e2z(i)*xl(2,3,i)
147 ENDDO
148
149 fac = one / float(nitrs)
150 DO i=jft,jlt
151 vl(1,2,i) = (vl(1,2,i) - x2(i))*fac
152 vl(2,2,i) = (vl(2,2,i) - y2(i))*fac
153 vl(3,2,i) = (vl(3,2,i) - z2(i))*fac
154 vl(1,3,i) = (vl(1,3,i) - x3(i))*fac
155 vl(2,3,i) = (vl(2,3,i) - y3(i))*fac
156 vl(3,3,i) = (vl(3,3,i) - z3(i))*fac
157 ENDDO
158
159 IF (ismstr/=1) THEN
160 DO nt=1,nitrs
161 fac = float(nt) - one
162
163 DO i=jft,jlt
164 x1(i) = xreftg(1,1,i) + fac*vl(1,1,i)
165 y1(i) = xreftg(1,2,i) + fac*vl(2,1,i)
166 z1(i) = xreftg(1,3,i) + fac*vl(3,1,i)
167 x2(i) = xreftg(2,1,i) + fac*vl(1,2,i)
168 y2(i) = xreftg(2,2,i) + fac*vl(2,2,i)
169 z2(i) = xreftg(2,3,i) + fac*vl(3,2,i)
170 x3(i) = xreftg(3,1,i) + fac*vl(1,3,i)
171 y3(i) = xreftg(3,2,i) + fac*vl(2,3,i)
172 z3(i) = xreftg(3,3,i) + fac*vl(3,3,i)
173 ENDDO
174
176 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
177 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
178 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
179
180 CALL corth3(elbuf_str,dir_a ,dir_b ,jft ,jlt ,
181 . nlay ,irep ,nel ,
182 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
183 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
184 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
185 . idrape , igtyp )
186
188 . px2g ,py2g ,px3g ,py3g ,
189 . px2 ,py2 ,px3 ,py3 ,
190 . x2s ,y2s ,x3s ,y3s ,
191 . x1 ,x2 ,x3 ,y1 ,y2 ,
192 . y3 ,z1 ,z2 ,z3 ,
193 . e1x ,e2x ,e3x ,e1y ,e2y ,
194 . e3y ,e1z ,e2z ,e3z ,
area )
195
196 CALL cdkdefoi(jft ,jlt ,nel ,vl ,gstr ,
197 . px2 ,py2 ,px3 ,py3 ,
198 . e1x ,e2x ,e3x ,e1y ,e2y ,
199 . e3y ,e1z ,e2z ,e3z ,
200 . exx ,eyy ,exy ,eyz ,ezx )
201
203 . jft ,jlt ,ilaw ,ithk ,pm ,
204 .
for ,thk ,eint ,gstr ,dir_a,
205 . dir_b,uvar ,ipm ,
206 . nel ,sigi ,npf ,tf ,
207 .
area ,exx ,eyy ,exy ,imat )
208 ENDDO
209 ELSE
210
211
212
214 . px2g ,py2g ,px3g ,py3g ,
215 . px2 ,py2 ,px3 ,py3 ,
216 . x2s ,y2s ,x3s ,y3s ,
217 . x1 ,x2 ,x3 ,y1 ,y2 ,
218 . y3 ,z1 ,z2 ,z3 ,
219 . e1x ,e2x ,e3x ,e1y ,e2y ,
220 . e3y ,e1z ,e2z ,e3z ,
area )
221 dir1 => elbuf_str%BUFLY(1)%DIRA
222 dir2 => elbuf_str%BUFLY(1)%DIRB
223
224 DO nt=1,nitrs
225 CALL cdkdefoi(jft ,jlt ,nel ,vl ,gstr ,
226 . px2 ,py2 ,px3 ,py3 ,
227 . e1x ,e2x ,e3x ,e1y ,e2y ,
228 . e3y ,e1z ,e2z ,e3z ,
229 . exx ,eyy ,exy ,eyz ,ezx )
230
232 . jft ,jlt ,ilaw ,ithk ,pm ,
233 .
for ,thk ,eint ,gstr ,dir_a,
234 . dir_b,uvar ,ipm ,
235 . nel ,sigi ,npf ,tf ,
236 .
area ,exx ,eyy ,exy ,imat )
237
238 ENDDO
239 off(jft:jlt) = two
240 ENDIF
241
242 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--)