45
46
47
48 USE mat_elem_mod
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,ITHK,NEL,NLAY,IREP,ISH3NFR,IMAT
66 INTEGER IXTG(NIXTG,*),IPM(NPROPMI,*),NPF(*)
68 . pm(npropm,*),geo(npropg,*),x(3,*),xreftg(3,3,*),
69 .
for(nel,5) ,thk(*) ,eint(nel,2),gstr(nel,8),
70 . px1g(*) ,py1g(*) ,py2g(*),x2s(*) ,x3s(*) ,y3s(*),
71 . uvar(*),dir_a(nel,*),dir_b(nel,*),sigi(nel,3),tf(*),
72 . px1(mvsiz), py1(mvsiz), py2(mvsiz)
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
80 my_real ecos(mvsiz),esin(mvsiz),
81 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
82 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
83 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
84 . exx(mvsiz),eyy(mvsiz),exy(mvsiz),eyz(mvsiz),ezx(mvsiz),
85 . x1(mvsiz) , x2(mvsiz) , x3(mvsiz) ,x4(mvsiz) ,
86 . y1(mvsiz) , y2(mvsiz) , y3(mvsiz) ,y4(mvsiz) ,
87 . z1(mvsiz) , z2(mvsiz) , z3(mvsiz) ,z4(mvsiz) ,
88 . x31(mvsiz) , y31(mvsiz) , z31(mvsiz),
89 . vl(3,3,mvsiz), xl(3,3,mvsiz),
area(mvsiz),
90 . x2h(mvsiz), x3h(mvsiz), y3h(mvsiz),
91 . x2l(mvsiz), x3l(mvsiz), y3l(mvsiz)
92 my_real,
DIMENSION(:) ,
POINTER :: dir1, dir2
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 . x31, y31, z31 ,x2l ,x3l ,y3l )
116
117 DO i=jft,jlt
118 xl(1,2,i) = e1x(i)*x2(i) + e1y(i)*y2(i) + e1z(i)*z2(i)
119 xl(2,2,i) = e2x(i)*x2(i) + e2y(i)*y2(i) + e2z(i)*z2(i)
120 xl(1,3,i) = e1x(i)*x3(i) + e1y(i)*y3(i) + e1z(i)*z3(i)
121 xl(2,3,i) = e2x(i)*x3(i) + e2y(i)*y3(i) + e2z(i)*z3(i)
122 ENDDO
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 . x31, y31, z31 ,x2l ,x3l ,y3l )
137
138
139
140 IF (ish3nfr ==0 )
CALL c3newve3(jft ,jlt ,ecos,esin,
area,
141 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
142 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
143 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
144
145 fac = one/float(nitrs)
146 DO i=jft,jlt
147 vl(1,1,i) = zero
148 vl(2,1,i) = zero
149 vl(3,1,i) = zero
150 vl(1,2,i) = e1x(i)*xl(1,2,i) + e2x(i)*xl(2,2,i)
151 vl(2,2,i) = e1y(i)*xl(1,2,i) + e2y(i)*xl(2,2,i)
152 vl(3,2,i) = e1z(i)*xl(1,2,i) + e2z(i)*xl(2,2,i)
153 vl(1,3,i) = e1x(i)*xl(1,3,i) + e2x(i)*xl(2,3,i)
154 vl(2,3,i) = e1y(i)*xl(1,3,i) + e2y(i)*xl(2,3,i)
155 vl(3,3,i) = e1z(i)*xl(1,3,i) + e2z(i)*xl(2,3,i)
156
157 vl(1,2,i) = (vl(1,2,i) - x2(i))*fac
158 vl(2,2,i) = (vl(2,2,i) - y2(i))*fac
159 vl(3,2,i) = (vl(3,2,i) - z2(i))*fac
160 vl(1,3,i) = (vl(1,3,i) - x3(i))*fac
161 vl(2,3,i) = (vl(2,3,i) - y3(i))*fac
162 vl(3,3,i) = (vl(3,3,i) - z3(i))*fac
163 ENDDO
164
165 IF (ismstr/=1 .AND. ismstr/=11) THEN
166
167 DO nt=1,nitrs
168
169 fac = float(nt) - one
170 DO i=jft,jlt
171 x1(i) = xreftg(1,1,i) + fac*vl(1,1,i)
172 y1(i) = xreftg(1,2,i) + fac*vl(2,1,i)
173 z1(i) = xreftg(1,3,i) + fac*vl(3,1,i)
174 x2(i) = xreftg(2,1,i) + fac*vl(1,2,i)
175 y2(i) = xreftg(2,2,i) + fac*vl(2,2,i)
176 z2(i) = xreftg(2,3,i) + fac*vl(3,2,i)
177 x3(i) = xreftg(3,1,i) + fac*vl(1,3,i)
178 y3(i) = xreftg(3,2,i) + fac*vl(2,3,i)
179 z3(i) = xreftg(3,3,i) + fac*vl(3,3,i)
180 ENDDO
181
183 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
184 . z1 ,z2 ,z3 ,e1x
185 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
186 . x31, y31, z31 ,x2l ,x3l ,y3l )
187
189 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
190 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
191 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
192
194 . nlay ,irep ,nel ,
195 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
196 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
197 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z ,
198 . idrape , igtyp )
199
201 . px1g ,py1g ,py2g ,
202 . px1 ,py1 ,py2 ,
203 . x2h ,x3h ,y3h ,
204 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
205 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
206 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
207 CALL c3defoi(jft ,jlt ,nel ,vl ,gstr,
208 . px1 ,py1 ,py2 ,
area,
209 . exx ,eyy ,exy ,eyz ,ezx ,
210 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
211
212 IF (ish3nfr ==0 )
CALL shtroto3(jft,jlt,ecos,esin,gstr,nel)
213
215 . jft ,jlt ,mtn ,ithk ,pm ,
216 .
for ,thk ,eint ,gstr ,dir_a ,
217 . dir_b ,uvar ,ipm ,
218 . nel ,sigi ,npf ,tf ,
219 .
area ,exx ,eyy ,exy ,imat )
220
221 ENDDO
222 ELSE
223
224
225
227 . px1g ,py1g ,py2g ,
228 . px1 ,py1 ,py2 ,
229 . x2s ,x3s ,y3s ,
230 . x1 ,x2 ,x3 ,y1 ,y2
231 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
232 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
233 dir1 => elbuf_str%BUFLY(1)%DIRA
234 dir2 => elbuf_str%BUFLY(1)%DIRB
235
236 DO nt=1,nitrs
237 CALL c3defoi(jft ,jlt ,nel ,vl ,gstr
238 . px1 ,py1 ,py2 ,
area,
239 . exx ,eyy ,exy ,eyz ,ezx ,
240 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y
241
242 IF (ish3nfr == 0)
CALL shtroto3(jft,jlt,ecos,esin,gstr,nel)
243
245 . jft ,jlt ,mtn ,ithk ,pm ,
246 .
for ,thk ,eint ,gstr ,dir1 ,
247 . dir2 ,uvar ,ipm ,
248 . nel ,sigi ,npf ,tf ,
250 ENDDO
251
252 ENDIF
253
254 RETURN
subroutine c3newve3(jft, jlt, ecos, esin, area, x1, x2, x3, y1, y2, y3, z1, z2, z3, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
subroutine shtroto3(jft, jlt, ecos, esin, gstr, nel)
subroutine c3defoi(jft, jlt, nel, vl, gstr, px1, py1, py2, area, exx, eyy, exy, eyz, ezx, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
subroutine c3pxpyi(jft, jlt, ismstr, px1g, py1g, py2g, px1, py1, py2, x2l, x3l, y3l, x1g, x2g, x3g, y1g, y2g, y3g, z1g, z2g, z3g, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
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)
for(i8=*sizetab-1;i8 >=0;i8--)
subroutine c3evec3(jft, jlt, area, x1, x2, x3, y1, y2, y3, z1, z2, z3, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, x31, y31, z31, x2l, x3l, y3l)