33 . FOR_T1, FOR_T2, FOR_T3,
34 . FOR_T4, FOR_T5, FOR_T6,
35 . FOR_T7, FOR_T8, FOR_T9,
36 . FOR_T10, TOL_E, IFCE ,
37 . IFCTL , NEL ,E_DISTOR,
45#include "implicit_f.inc"
55 INTEGER,
INTENT(IN) :: NEL
56 INTEGER,
INTENT (OUT) :: IFCTL
57 INTEGER,
DIMENSION(MVSIZ),
INTENT(OUT) :: IFCE
58 my_real,
INTENT(IN) :: TOL_E,DT1
59 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: LL
60 DOUBLE PRECISION,
DIMENSION(MVSIZ,10),
INTENT(IN) ::
63 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) ::STI,STI_C
64 my_real,
DIMENSION(MVSIZ,3),
INTENT (INOUT) :: FOR_T10,
65 . for_t1, for_t2, for_t3,
66 . for_t4, for_t5, for_t6,
67 . for_t7, for_t8, for_t9
68 my_real,
DIMENSION(MVSIZ,10),
INTENT(IN) ::
70 my_real,
DIMENSION(NEL),
INTENT(INOUT) :: e_distor
75 . stif(mvsiz),dmin(mvsiz),dmin2(mvsiz),fn(mvsiz,6),
76 . xm(mvsiz,6),ym(mvsiz,6),zm(mvsiz,6),ks(mvsiz),
77 . njx(mvsiz,6),njy(mvsiz,6),njz(mvsiz,6),fact,
78 . vxm(mvsiz,6),vym(mvsiz,6),vzm(mvsiz,6),
79 . dx,dy,dz,d_max,lam,s2,
norm,lam0,f_q,fac,leng,
80 . nx,ny,nz,fx,fy,fz,f_t,ds2(mvsiz,6),tol2,kts,fnj,
82 INTEGER I,J,JJ,IFC2(MVSIZ,6),IFF
92 IF (sti_c(i)==zero) cycle
93 xm(i,1) = half*(xx(i,1)+xx(i,2))
94 ym(i,1) = half*(yy(i,1)+yy(i,2))
95 zm(i,1) = half*(zz(i,1)+zz(i,2))
96 xm(i,2) = half*(xx(i,3)+xx(i,2))
97 ym(i,2) = half*(yy(i,3)+yy(i,2))
98 zm(i,2) = half*(zz(i,3)+zz(i,2))
99 xm(i,3) = half*(xx(i,3)+xx(i,1))
100 ym(i,3) = half*(yy(i,3)+yy(i,1))
101 zm(i,3) = half*(zz(i,3)+zz(i,1))
102 xm(i,4) = half*(xx(i,4)+xx(i,1))
103 ym(i,4) = half*(yy(i,4)+yy(i,1))
104 zm(i,4) = half*(zz(i,4)+zz(i,1))
105 xm(i,5) = half*(xx(i,4)+xx(i,2))
106 ym(i,5) = half*(yy(i,4)+yy(i,2))
107 zm(i,5) = half*(zz(i,4)+zz(i,2))
108 xm(i,6) = half*(xx(i,4)+xx(i,3))
109 ym(i,6) = half*(yy(i,4)+yy(i,3))
110 zm(i,6) = half*(zz(i,4)+zz(i,3))
112 dmin(i) = tol_e*ll(i)
113 dmin2(i) = dmin(i)*dmin(i)
122 IF (sti_c(i)==zero) cycle
123 dx = xx(i,jj) - xm(i,j)
124 dy = yy(i,jj) - ym(i,j)
125 dz = zz(i,jj) - zm(i,j)
126 d_max = two*
max(abs(dx),abs(dy),abs(dz))
127 IF (d_max>dmin(i))
THEN
135 IF (sti_c(i)==zero) cycle
136 vxm(i,1) = half*(vx(i,1)+vx(i,2))
137 vym(i,1) = half*(vy(i,1)+vy(i,2))
138 vzm(i,1) = half*(vz(i,1)+vz(i,2))
139 vxm(i,2) = half*(vx(i,3)+vx(i,2))
140 vym(i,2) = half*(vy(i,3)+vy(i,2))
141 vzm(i,2) = half*(vz(i,3)+vz(i,2))
142 vxm(i,3) = half*(vx(i,3)+vx(i,1))
143 vym(i,3) = half*(vy(i,3)+vy(i,1))
144 vzm(i,3) = half*(vz(i,3)+vz(i,1))
145 vxm(i,4) = half*(vx(i,4)+vx(i,1))
146 vym(i,4) = half*(vy(i,4)+vy(i,1))
147 vzm(i,4) = half*(vz(i,4)+vz(i,1))
148 vxm(i,5) = half*(vx(i,4)+vx(i,2))
149 vym(i,5) = half*(vy(i,4)+vy(i,2))
150 vzm(i,5) = half*(vz(i,4)+vz(i,2))
151 vxm(i,6) = half*(vx(i,4)+vx(i,3))
152 vym(i,6) = half*(vy(i,4)+vy(i,3))
153 vzm(i,6) = half*(vz(i,4)+vz(i,3))
158 IF (ifc2(i,1)==0) cycle
159 dx = xx0(i,1)-xx0(i,2)
160 dy = yy0(i,1)-yy0(i,2)
161 dz = zz0(i,1)-zz0(i,2)
162 ds2(i,1) = dx*dx+dy*dy+dz*dz
165 IF (ifc2(i,2)==0) cycle
166 dx = xx0(i,3)-xx0(i,2)
167 dy = yy0(i,3)-yy0(i,2)
168 dz = zz0(i,3)-zz0(i,2)
169 ds2(i,2) = dx*dx+dy*dy+dz*dz
172 IF (ifc2(i,3)==0) cycle
173 dx = xx0(i,1)-xx0(i,3)
174 dy = yy0(i,1)-yy0(i,3)
175 dz = zz0(i,1)-zz0(i,3)
176 ds2(i,3) = dx*dx+dy*dy+dz*dz
179 IF (ifc2(i,4)==0) cycle
180 dx = xx0(i,1)-xx0(i,4)
181 dy = yy0(i,1)-yy0(i,4)
182 dz = zz0(i,1)-zz0(i,4)
183 ds2(i,4) = dx*dx+dy*dy+dz*dz
186 IF (ifc2(i,5)==0) cycle
187 dx = xx0(i,4)-xx0(i,2)
188 dy = yy0(i,4)-yy0(i,2)
189 dz = zz0(i,4)-zz0(i,2)
190 ds2(i,5) = dx*dx+dy*dy+dz*dz
193 IF (ifc2(i,6)==0) cycle
194 dx = xx0(i,3)-xx0(i,4)
195 dy = yy0(i,3)-yy0(i,4)
196 dz = zz0(i,3)-zz0(i,4)
197 ds2(i,6) = dx*dx+dy*dy+dz*dz
207 IF (ifc2(i,j)==0) cycle
208 dx = xx(i,jj) - xm(i,j)
209 dy = yy(i,jj) - ym(i,j)
210 dz = zz(i,jj) - zm(i,j)
211 s2 = dx*dx+dy*dy+dz*dz
212 IF (s2>tol2*ds2(i,j))
THEN
214 lam = sqrt(s2/ds2(i,j))
219 leng = sqrt(ds2(i,j))
220 fac = f_q*(lam+one)*(lam+one)
221 kts = f_t*(fac+one)*sti_c(i)
222 fn(i,j) = kts*(lam-lam0)*leng
223 fact = f_t*(three*fac+one)
224 stif(i) =
max(stif(i),fact*sti_c(i))
226 ddx = vx(i,jj) - vxm(i,j)
227 ddy = vy(i,jj) - vym(i,j)
228 ddz = vz(i,jj) - vzm(i,j)
229 ddn = dt1*(ddx*njx(i,j)+ddy*njy(i,j)+ddz*njz(i,j))
230 e_distor(i) = e_distor(i) - fn(i,j)*ddn
237 IF (fn(i,j)==zero) cycle
245 for_t1(i,1) = for_t1(i,1) + fx
246 for_t1(i,2) = for_t1(i,2) + fy
247 for_t1(i,3) = for_t1(i,3) + fz
248 for_t2(i,1) = for_t2(i,1) + fx
249 for_t2(i,2) = for_t2(i,2) + fy
250 for_t2(i,3) = for_t2(i,3) + fz
252 for_t5(i,1) = for_t5(i,1) - two*fx
253 for_t5(i,2) = for_t5(i,2) - two*fy
254 for_t5(i,3) = for_t5(i,3) - two*fz
260 IF (fn(i,j)==zero) cycle
268 for_t3(i,1) = for_t3(i,1) + fx
269 for_t3(i,2) = for_t3(i,2) + fy
270 for_t3(i,3) = for_t3(i,3) + fz
271 for_t2(i,1) = for_t2(i,1) + fx
272 for_t2(i,2) = for_t2(i,2) + fy
273 for_t2(i,3) = for_t2(i,3) + fz
275 for_t6(i,1) = for_t6(i,1) - two*fx
276 for_t6(i,2) = for_t6(i,2) - two*fy
277 for_t6(i,3) = for_t6(i,3) - two*fz
283 IF (fn(i,j)==zero) cycle
291 for_t3(i,1) = for_t3(i,1) + fx
292 for_t3(i,2) = for_t3(i,2) + fy
293 for_t3(i,3) = for_t3(i,3) + fz
294 for_t1(i,1) = for_t1(i,1) + fx
295 for_t1(i,2) = for_t1(i,2) + fy
296 for_t1(i,3) = for_t1(i,3) + fz
297 for_t7(i,1) = for_t7(i,1) - two*fx
298 for_t7(i,2) = for_t7(i,2) - two*fy
299 for_t7(i,3) = for_t7(i,3) - two*fz
305 IF (fn(i,j)==zero) cycle
313 for_t1(i,1) = for_t1(i,1) + fx
314 for_t1(i,2) = for_t1(i,2) + fy
315 for_t1(i,3) = for_t1(i,3) + fz
316 for_t4(i,1) = for_t4(i,1) + fx
317 for_t4(i,2) = for_t4(i,2) + fy
318 for_t4(i,3) = for_t4(i,3) + fz
319 for_t8(i,1) = for_t8(i,1) - two*fx
320 for_t8(i,2) = for_t8(i,2) - two*fy
321 for_t8(i,3) = for_t8(i,3) - two*fz
327 IF (fn(i,j)==zero) cycle
335 for_t4(i,1) = for_t4(i,1) + fx
336 for_t4(i,2) = for_t4(i,2) + fy
337 for_t4(i,3) = for_t4(i,3) + fz
338 for_t2(i,1) = for_t2(i,1) + fx
339 for_t2(i,2) = for_t2(i,2) + fy
340 for_t2(i,3) = for_t2(i,3) + fz
341 for_t9(i,1) = for_t9(i,1) - two*fx
342 for_t9(i,2) = for_t9(i,2) - two*fy
343 for_t9(i,3) = for_t9(i,3) - two*fz
349 IF (fn(i,j)==zero) cycle
357 for_t4(i,1) = for_t4(i,1) + fx
358 for_t4(i,2) = for_t4(i,2) + fy
359 for_t4(i,3) = for_t4(i,3) + fz
360 for_t3(i,1) = for_t3(i,1) + fx
361 for_t3(i,2) = for_t3(i,2) + fy
362 for_t3(i,3) = for_t3(i,3) + fz
363 for_t10(i,1) = for_t10(i,1) - two*fx
364 for_t10(i,2) = for_t10(i,2) - two*fy
365 for_t10(i,3) = for_t10(i,3) - two*fz
369 IF (sti_c(i)==zero) cycle
370 sti(i) =
max(sti(i),stif(i))