40 2 NSV ,ILOC ,IRTL ,ICODE ,ISKEW ,
41 3 SKEW ,MSR ,LMSR ,NSEG ,IRECTS ,
42 4 IRECT ,UPW ,IXS ,ELBUF_TAB,
43 5 IPARG ,PM ,NALE ,EE ,IELES ,
44 6 IELEM ,TSTIF ,INTTH ,IEULT ,STENS ,
45 7 NOR ,ISIZES ,ISIZEM ,NRTS, NRTM, NSN,NMN )
50 use element_mod ,
only : nixs
54#include "implicit_f.inc"
60#include "scr08_a_c.inc"
66 INTEGER,
INTENT(IN) :: NRTS, NRTM, NSN,NMN
67 INTEGER IRECT(4,*), NSV(NSN), ILOC(*), IRTL(NSN), ICODE(*), ISKEW(*),
68 . MSR(*), IRECTS(4,*), LMSR(*), NSEG(*),IXS(NIXS,*),
69 . IPARG(NPARG,*), IELES(*), IELEM(*),NALE(*) ,
70 . INTTH, IEULT, ISIZES, ISIZEM
73 . upw, tstif,ttt, stens,
74 . x(3,*), v(3,*), w(3,*), a(3,*), crst(2,*), skew(lskew,*),
75 . pm(npropm,*),ee(*),nor(3,*)
76 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
80 INTEGER II, N, L, JJ, NN, LL, LL1, LL2, LG, KK, , K1, K2,
81 . I1, I2, IERR, IGROU, IELN,
83 . itemp(2), is, im, ilen,
84 . tags(isizes),tagm(isizem), lists(isizes),listm(isizem),
85 . icomerr(isizem+isizes),icomngr(isizem+isizes),
86 . icomnel(isizem+isizes)
89 . h(4), vmx, vmy, vmz, vx, vy, vz, vv, nx, ny, nz, vt,
90 . nnx, nny, nnz, fac, p, x1, y1, z1,x2, y2, z2, tx, ty, tz,
91 . efric, vols, volm, ts, tm ,tstifm, tstifs, dvn, tt2, tt3,
92 . tstift, phi, areas, aream, vn, wn, t2x, t2y, t2z, t2t,
93 . t3x, t3y, t3z, stensx, stensy, stensz,
94 . comarea(isizem+isizes),comstf(isizem+isizes),
95 . comt(isizem+isizes),comvol(isizem+isizes),combuf(isizem+isizes)
98 DATA iperm/ 4, 1, 2, 3, 4, 1/
115 IF(iloc(ii)>0.AND.nmn>0.AND.tagm(l)==0)
THEN
150 ix(1) = msr(irect(1,l))
151 ix(2) = msr(irect(2,l))
152 ix(3) = msr(irect(3,l))
153 ix(4) = msr(irect(4,l))
156 1 ierr ,comarea(ii),comstf(ii),comt(ii),comvol(ii),
157 2 ielem(l) ,x ,ixs(1,ielem(l)), ix,
158 3 iparg,pm ,elbuf_tab ,igrou ,ieln )
176 ixx(1)=nsv(irects(1,l))
177 ixx(2)=nsv(irects(2,l))
179 ixx(4)=nsv(irects(4,l))
182 1 ierr ,comarea(im+ii),comstf(im+ii),comt(im+ii),comvol(im+ii),
183 2 ieles(l) ,x,ixs(1,ieles(l)) ,ixx ,
184 3 iparg,pm ,elbuf_tab ,igrou ,ieln )
185 icomerr(im+ii) = ierr
186 icomngr(im+ii) = igrou
187 icomnel(im+ii) = ieln
189 comarea(im+ii) = zero
212 IF(ispmd/=0)
GOTO 900
223 IF(iloc(ii)>0.AND.nmn>0)
THEN
232 CALL shapeh(h,crst(1,ii),crst(2,ii))
241 vmx=vmx+w(1,ix(jj))*h(jj)
242 vmy=vmy+w(2,ix(jj))*h(jj)
243 30 vmz=vmz+w(3,ix(jj))*h(jj)
245 dvn = (vmx-w(1,n)) * nor(1,ii)
246 . + (vmy-w(2,n)) * nor(2,ii)
247 . + (vmz-w(3,n)) * nor(3,ii)
248 w(1,n) = w(1,n) + dvn * nor(1,ii)
249 w(2,n) = w(2,n) + dvn * nor(2,ii)
250 w(3,n) = w(3,n) + dvn * nor(3,ii)
257 efric = half * ee(ii) / (ll2-ll1+1)
273 tstift = tstifm + tstifs + tstif
274 phi = areas * dt1 * (tm-ts) / tstift
275 combuf(jj) = combuf(jj)
277 combuf(kk) = combuf(kk)
285 ELSEIF(iloc(ii)<0.OR.nmn==0)
THEN
294 vv =
max(em30,sqrt(vx**2+vy**2+vz**2))
305 200
IF(irects(kk,lg)==ii)
GO TO 250
312 i1 = nsv(irects(k1,lg))
313 i2 = nsv(irects(k2,lg))
314 x1 = x(1,i1) - x(1,n)
315 y1 = x(2,i1) - x(2,n)
316 z1 = x(3,i1) - x(3,n)
317 x2 = x(1,i2) - x(1,n)
318 y2 = x(2,i2) - x(2,n)
319 z2 = x(3,i2) - x(3,n)
323 ttt =
max(em30,sqrt(tx**2+ty**2+tz**2))
324 vt = v(1,n)*tx + v(2,n)*ty + v(3,n)*tz
325 p = onep0001 - upw*(half + sign(half,vt))
326 nx = y1 * z2 - z1 * y2
327 ny = z1 * x2 - x1 * z2
328 nz = x1 * y2 - y1 * x2
342 t2t = (t2x*tx + t2y*ty +t2z*tz) / tt2
346 tt3 = stens * sqrt(tt2/
max(em30,t3x**2+t3y**2+t3z**2))
350 a(1,n) = a(1,n) + stensx
351 a(2,n) = a(2,n) + stensy
352 a(3,n) = a(3,n) + stensz
355 fac =
max(em30,sqrt(nnx**2+nny**2+nnz**2))
367 dvn = vx * nnx + vy * nny + vz * nnz
368 w(1,n) = w(1,n) + dvn * nnx
369 w(2,n) = w(2,n) + dvn * nny
370 w(3,n) = w(3,n) + dvn * nnz
371 CALL bcs2(w(1,n),skew(1,iskew(n)),iskew(n),icode(n))
372 vn = v(1,n)*nnx + v(2,n)*nny + v(3,n)*nnz
373 wn = w(1,n)*nnx + w(2,n)*nny + w(3,n)*nnz
379 w(1,n) = w(1,n) * fac
380 w(2,n) = w(2,n) * fac
381 w(3,n) = w(3,n) * fac
388 vn = v(1,n)*nnx + v(2,n)*nny + v(3,n)*nnz
397 dvn = vx * nnx + vy * nny + vz * nnz
398 w(1,n) = w(1,n) + dvn * nnx
399 w(2,n) = w(2,n) + dvn * nny
400 w(3,n) = w(3,n) + dvn * nnz
424 elbuf_tab(igrou)%GBUF%EINT(ieln) =
425 . elbuf_tab(igrou)%GBUF%EINT(ieln) + combuf(ii)
432 igrou = icomngr(im+ii)
433 ieln = icomnel(im+ii)
434 elbuf_tab(igrou)%GBUF%EINT(ieln) =
435 . elbuf_tab(igrou)%GBUF%EINT(ieln) + combuf(im+ii)
subroutine i9wal3(x, v, w, a, crst, nsv, iloc, irtl, icode, iskew, skew, msr, lmsr, nseg, irects, irect, upw, ixs, elbuf_tab, iparg, pm, nale, ee, ieles, ielem, tstif, intth, ieult, stens, nor, isizes, isizem, nrts, nrtm, nsn, nmn)