42
43
44
45#include "implicit_f.inc"
46#include "comlock.inc"
47
48
49
50#include "mvsiz_p.inc"
51
52
53
54#include "com04_c.inc"
55#include "com06_c.inc"
56#include "param_c.inc"
57#include "remesh_c.inc"
58#include "scr02_c.inc"
59#include "scr14_c.inc"
60#include "scr16_c.inc"
61#include "scr17_c.inc"
62#include "sms_c.inc"
63
64
65
66 INTEGER IXC(NIXC,*),IPARTC(*), JFT, JLT,
67 . IHBE ,NFT ,ISMSTR,IGTYP,IGMAT,NEL
68
70 . thk(*), hour(nel,5), off(*),eani(*),partsav(npsav,*),
71 . px1(*), px2(*), py1(*), py2(*), sigy(*),dt1c(*),stir(*),
72 . ssp(mvsiz), rho(mvsiz),sti(mvsiz),z2(mvsiz), shf(mvsiz),
73 . thk0(mvsiz),viscmx(mvsiz), alpe(mvsiz), a11r(*)
74
76 . b11(mvsiz), b12(mvsiz), b13(mvsiz), b14(mvsiz),
77 . b21(mvsiz), b22(mvsiz), b23(mvsiz), b24(mvsiz),
78 . h11(mvsiz), h12(mvsiz), h13(mvsiz), h14(mvsiz),
79 . h21(mvsiz), h22(mvsiz), h23(mvsiz), h24(mvsiz),
80 . h31(mvsiz), h32(mvsiz), h33(mvsiz), h34(mvsiz),
81 . rx1(mvsiz), rx2(mvsiz), rx3(mvsiz), rx4(mvsiz),
82 . ry1(mvsiz), ry2(mvsiz), ry3(mvsiz), ry4(mvsiz),
83 . vx1(mvsiz), vx2(mvsiz), vx3(mvsiz), vx4(mvsiz),
84 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz), vy4(mvsiz),
85 . vz1(mvsiz), vz2(mvsiz), vz3(mvsiz), vz4(mvsiz),
86 .
area(mvsiz),vhx(mvsiz),
87 . h1(mvsiz), h2(mvsiz), h3(mvsiz), vhy(mvsiz),
88 . ym(mvsiz), nu(mvsiz), thk02(mvsiz),srh3(*)
89
90
91
92 INTEGER I, MX, J
93
95 . gama1(mvsiz), gama2(mvsiz), gama3(mvsiz), gama4(mvsiz),
96 . h3l(mvsiz), h3q(mvsiz),
97 . hg1(mvsiz), hg2(mvsiz) ,hp1(mvsiz), hp2(mvsiz) ,
98 . g(mvsiz) , b1(mvsiz), b2(mvsiz),
99 . a11(mvsiz) ,ehou(mvsiz),
100 . px1v, px2v, py1v, py2v, ssphvl,zz2,vv,
101 . shfpr3, fac, bb, hour1(mvsiz), hour2(mvsiz), hour3(mvsiz),
102 . ehourt, px1vp,px2vp,py1vp,py2vp, fmax(mvsiz),
103 . hour1p,hour2p,hour3p,fmax1,fmaxp1,fmax2,fmaxp2,fmaxp,
104 . scale(mvsiz)
105
106
107 ehourt = zero
108
109 IF(ismstr/=3.AND.ihbe/=0)THEN
110 DO i=jft,jlt
111 px1v = px1(i)*vhx(i)
112 px2v = px2(i)*vhx(i)
113 py1v = py1(i)*vhy(i)
114 py2v = py2(i)*vhy(i)
115 gama1(i)= off(i)*( one - px1v-py1v)
116 gama3(i)= off(i)*( one + px1v+py1v)
117 gama2(i)= off(i)*(-one - px2v-py2v)
118 gama4(i)= off(i)*(-one + px2v+py2v)
119 ENDDO
120 ELSE
121 DO i=jft,jlt
122 gama1(i)= off(i)
123 gama3(i)= off(i)
124 gama2(i)= -off(i)
125 gama4(i)= -off(i)
126 ENDDO
127 ENDIF
128
129 DO i=jft,jlt
130 hp1(i) =h1(i)
131 hp2(i) =h2(i)
132 h3(i) =srh3(i)
133 shfpr3 = shf(i)/(three*(one+nu(i)))
134 fac = fourth*rho(i)*thk02(i)
135 h3l(i) = h3(i)*zep072169*fac*
area(i)
136 h3q(i) = h3(i)*h3l(i)*hundred
137 h3l(i) = h3l(i)*ssp(i)
138
139 fac = ym(i)*thk0(i)*dt1c(i)*one_over_8
140 h1(i) = hp1(i) * fac
141 b1(i) = px1(i)*px1(i)+py1(i)*py1(i)
142 b2(i) = px2(i)*px2(i)+py2(i)*py2(i)
143 h2(i) = hp2(i) * fac*thk02(i)*shfpr3/(b1(i)+b2(i))
144 ENDDO
145
146
147
148 DO i=jft,jlt
149 IF(ixc(4,i)==ixc(5,i))THEN
150 h3q(i)=zero
151 h3l(i)=zero
152 h1(i)=zero
153 h2(i)=zero
154 ENDIF
155 ENDDO
156
157
158
159 DO i=jft,jlt
160 scale(i) = zero
161 ENDDO
162 IF(nodadt/=0.OR.idt1sh==1.OR.idtmins==2)THEN
163 DO i=jft,jlt
164 scale(i) = +
max(gama1(i)*gama1(i),gama2(i)*gama2(i),
165 . gama3(i)*gama3(i),gama4(i)*gama4(i)) *
166 . dt1c(i)*
max(h1(i),h2(i),h3l(i)) /
167 .
max(dt1c(i)*dt1c(i),em20)
168 sti(i)=sti(i) + scale(i)
169 ENDDO
170
171
172 IF(igtyp == 52 .OR.
173 . ((igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51)
174 . .AND. igmat > 0)) THEN
175 IF(nadmesh==0)THEN
176 DO i=jft,jlt
177 IF (off(i)==zero) THEN
178 sti(i) = zero
179 stir(i) = zero
180 ELSE
181 vv = viscmx(i) * viscmx(i) * alpe(i)
182 fac =
max(b1(i),b2(i))/(
area(i) * vv)
183 sti(i) = sti(i) + fac * thk0(i) * a11(i)
184 stir(i) = fac * a11r(i)*thk0(i)*thk02(i)*one_over_12 +
185 . fac * a11(i) *thk0(i)*
area(i) *one_over_9 +
186 . scale(i)*(thk02(i)* one_over_12 +
area(i)*one_over_9)
187 ENDIF
188 ENDDO
189 ELSE
190 DO i=jft,jlt
191 IF (off(i)==zero) THEN
192 sti(i) = zero
193 stir(i) = zero
194 ELSE
195 vv = viscmx(i) * viscmx(i) * alpe(i)
196 fac =
max(b1(i),b2(i))/(
area(i) * vv)
197 sti(i) = sti(i) + fac * thk0(i) * a11(i)
198 stir(i) = fac * a11r(i)*thk0(i)*thk02(i)* one_over_12 +
199 . scale(i)*thk02(i)* one_over_12
200 ENDIF
201 ENDDO
202 END IF
203 ELSE
204 IF(nadmesh==0)THEN
205 DO i=jft,jlt
206 IF (off(i)==zero) THEN
207 sti(i) = zero
208 stir(i) = zero
209 ELSE
210 vv = viscmx(i) * viscmx(i) * alpe(i)
211 sti(i) = sti(i) +
max(b1(i),b2(i))
212 . * thk0(i) * a11(i) / (
area(i) * vv)
213 stir(i) = sti(i) * (thk02(i)* one_over_12 +
area(i) * one_over_9)
214
215 ENDIF
216 ENDDO
217 ELSE
218 DO i=jft,jlt
219 IF (off(i)==zero) THEN
220 sti(i) = zero
221 stir(i) = zero
222 ELSE
223 vv = viscmx(i) * viscmx(i) * alpe(i)
224 sti(i) = sti(i) +
max(b1(i),b2(i))
225 . * thk0(i) * a11(i) / (
area(i) * vv)
226 stir(i) = sti(i) * thk02(i)* one_over_12
227 ENDIF
228 ENDDO
229 END IF
230 endif
231 ENDIF
232
233
234
235 DO i=jft,jlt
236 hg1(i)=vx1(i)*gama1(i)+vx2(i)*gama2(i)
237 . +vx3(i)*gama3(i)+vx4(i)*gama4(i)
238 hg2(i)=vy1(i)*gama1(i)+vy2(i)*gama2(i)
239 . +vy3(i)*gama3(i)+vy4(i)*gama4(i)
240 ENDDO
241
242 DO i=jft,jlt
243 hour(i,1)=hour(i,1)+hg1(i)*h1(i)
244 hour(i,2)=hour(i,2)+hg2(i)*h1(i)
245 fmax(i) = half*sigy(i)*thk0(i)*sqrt(
area(i))*hp1(i)
246 hour(i,1)=sign(
min( abs(hour(i,1)),fmax(i) ) , hour(i,1))
247 hour(i,2)=sign(
min( abs(hour(i,2)),fmax(i) ) , hour(i,2))
248 hour1(i)=hour(i,1)
249 h11(i)=hour1(i)*gama1(i)
250 h12(i)=hour1(i)*gama2(i)
251 h13(i)=hour1(i)*gama3(i)
252 h14(i)=hour1(i)*gama4(i)
253 hour2(i)=hour(i,2)
254 h21(i)=hour2(i)*gama1(i)
255 h22(i)=hour2(i)*gama2(i)
256 h23(i)=hour2(i)*gama3(i)
257 h24(i)=hour2(i)*gama4(i)
258 ehou(i) = hour1(i)*hg1(i) + hour2(i)*hg2(i)
259 ENDDO
260
261
262
263
264 DO i=jft,jlt
265 hg1(i)=vz1(i)*gama1(i)+vz2(i)*gama2(i)
266 . +vz3(i)*gama3(i)+vz4(i)*gama4(i)
267 ENDDO
268 DO i=jft,jlt
269 hour(i,3)=hour(i,3)+hg1(i)*h2(i)
270 fmax(i) = fourth*sigy(i)*thk0(i)*thk0(i)*hp2(i)
271 hour(i,3)=sign(
min( abs(hour(i,3)),fmax(i) ) , hour(i,3))
272 hour3(i) =hour(i,3)
273 h31(i)=hour3(i)*gama1(i)
274 h32(i)=hour3(i)*gama2(i)
275 h33(i)=hour3(i)*gama3(i)
276 h34(i)=hour3(i)*gama4(i)
277 ehou(i) = ehou(i) + hour3(i)*hg1(i)
278 ENDDO
279
280
281
282
283 DO i=jft,jlt
284 hg1(i)=rx1(i)-rx2(i)+rx3(i)-rx4(i)
285 hg2(i)=ry1(i)-ry2(i)+ry3(i)-ry4(i)
286 ENDDO
287
288 DO i=jft,jlt
289 hour(i,4)=hg1(i)*(h3l(i)+h3q(i)*abs(hg1(i)))
290 hour(i,5)=hg2(i)*(h3l(i)+h3q(i)*abs(hg2(i)))
291 ehou(i) = ehou(i) + hour(i,4)*hg1(i) + hour(i,5)*hg2(i)
292 ehou(i) = dt1c(i) * ehou(i)*off(i)
293 ehourt = ehourt + ehou(i)
294 b11(i)= hour(i,4)*off(i)
295 b12(i)=-hour(i,4)*off(i)
296 b13(i)= hour(i,4)*off(i)
297 b14(i)=-hour(i,4)*off(i)
298 b21(i)= hour(i,5)*off(i)
299 b22(i)=-hour(i,5)*off(i)
300 b23(i)= hour(i,5)*off(i)
301 b24(i)=-hour(i,5)*off(i)
302 ENDDO
303
304 DO i=jft,jlt
305 mx = ipartc(i)
306 partsav(8,mx)=partsav(8,mx) + ehou(i)
307 ENDDO
308
309
310 ehour = ehour + ehourt
311
312 DO i=jft,jlt
313 eani(nft+numels+i) = eani(nft+numels+i)+ehou(i)
314 ENDDO
315
316 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)