39 2 NSV ,ILOC ,IRTL ,ICODE ,ISKEW ,
40 3 SKEW ,MSR ,LMSR ,NSEG ,IRECTS ,
41 4 IRECT ,UPW ,IXS ,ELBUF_TAB,
42 5 IPARG ,PM ,NALE ,EE ,IELES ,
43 6 IELEM ,TSTIF ,INTTH ,IEULT ,STENS ,
44 7 NOR ,ISIZES ,ISIZEM ,NRTS, NRTM, NSN,NMN )
52#include "implicit_f.inc"
58#include "scr08_a_c.inc"
64 INTEGER,
INTENT(IN) :: NRTS, NRTM, NSN,
65 INTEGER IRECT(4,*), NSV(NSN), ILOC(*), IRTL(NSN), ICODE(*), ISKEW(*),
66 . MSR(*), IRECTS(4,*), LMSR(*), NSEG(*),IXS(NIXS,*),
67 . IPARG(NPARG,*), (*), IELEM(*),NALE(*) ,
68 . INTTH, IEULT, ISIZES, ISIZEM
71 . upw, tstif,ttt, stens,
72 . x(3,*), v(3,*), w(3,*), a(3,*), crst(2,*), skew(lskew,*),
73 . pm(npropm,*),ee(*),nor(3,*)
74 TYPE (),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
78 INTEGER II, N, L, JJ, NN, LL, LL1, LL2, LG, KK, KKK, K1, K2,
81 . itemp(2), is, im, ilen,
82 . tags(isizes),tagm(isizem), lists(isizes),listm(isizem),
83 . icomerr(isizem+isizes),icomngr(isizem+isizes),
84 . icomnel(isizem+isizes)
87 . h(4), vmx, vmy, vmz, vx, vy, vz, vv, nx, ny, nz, vt,
88 . nnx, nny, nnz, fac, p, x1, y1, z1,x2, y2, z2, tx, ty, tz,
89 . efric, vols, volm, ts, tm ,tstifm, tstifs, dvn, tt2, tt3,
90 . tstift, phi, areas, aream, vn, wn, t2x, t2y, t2z, t2t,
91 . t3x, t3y, t3z, stensx, stensy, stensz,
92 . comarea(isizem+isizes),comstf(isizem+isizes),
93 . comt(isizem+isizes),comvol(isizem+isizes),combuf
94 TYPE(g_bufel_) ,
POINTER :: GBUF
96 DATA IPERM/ 4, 1, 2, 3, 4, 1/
113 IF(iloc(ii)>0.AND.nmn>0.AND.tagm(l)==0)
THEN
148 ix(1) = msr(irect(1,l))
149 ix(2) = msr(irect(2,l))
150 ix(3) = msr(irect(3,l))
151 ix(4) = msr(irect(4,l))
154 1 ierr ,comarea(ii),comstf(ii),comt(ii),comvol(ii),
155 2 ielem(l) ,x ,ixs(1,ielem(l)), ix,
156 3 iparg,pm ,elbuf_tab ,igrou ,ieln )
174 ixx(1)=nsv(irects(1,l))
175 ixx(2)=nsv(irects(2,l))
176 ixx(3)=nsv(irects(3,l))
177 ixx(4)=nsv(irects(4,l))
180 1 ierr ,comarea(im+ii),comstf(im+ii),comt(im
181 2 ieles(l) ,x,ixs(1,ieles(l)) ,ixx ,
182 3 iparg,pm ,elbuf_tab ,igrou ,ieln )
183 icomerr(im+ii) = ierr
184 icomngr(im+ii) = igrou
185 icomnel(im+ii) = ieln
187 comarea(im+ii) = zero
210 IF(ispmd/=0)
GOTO 900
221 IF(iloc(ii)>0.AND.nmn>0)
THEN
230 CALL shapeh(h,crst(1,ii),crst(2,ii))
239 vmx=vmx+w(1,ix(jj))*h(jj)
240 vmy=vmy+w(2,ix(jj))*h(jj)
241 30 vmz=vmz+w(3,ix(jj))*h(jj)
243 dvn = (vmx-w(1,n)) * nor(1,ii)
244 . + (vmy-w(2,n)) * nor(2,ii)
245 . + (vmz-w(3,n)) * nor(3,ii)
246 w(1,n) = w(1,n) + dvn * nor(1,ii)
247 w(2,n) = w(2,n) + dvn * nor(2,ii)
248 w(3,n) = w(3,n) + dvn * nor(3,ii)
255 efric = half * ee(ii) / (ll2-ll1+1)
271 tstift = tstifm + tstifs + tstif
272 phi = areas * dt1 * (tm-ts) / tstift
273 combuf(jj) = combuf(jj)
275 combuf(kk) = combuf(kk)
283 ELSEIF(iloc(ii)<0.OR.nmn==0)
THEN
292 vv =
max(em30,sqrt(vx**2+vy**2+vz**2))
303 200
IF(irects(kk,lg)==ii)
GO TO 250
310 i1 = nsv(irects(k1,lg))
311 i2 = nsv(irects(k2,lg))
312 x1 = x(1,i1) - x(1,n)
313 y1 = x(2,i1) - x(2,n)
314 z1 = x(3,i1) - x(3,n)
315 x2 = x(1,i2) - x(1,n)
316 y2 = x(2,i2) - x(2,n)
321 ttt =
max(em30,sqrt(tx**2+ty**2+tz**2))
322 vt = v(1,n)*tx + v(2,n)*ty + v(3,n)*tz
323 p = onep0001 - upw*(half + sign(half,vt))
324 nx = y1 * z2 - z1 * y2
325 ny = z1 * x2 - x1 * z2
326 nz = x1 * y2 - y1 * x2
339 tt2 =
max(em30,t2x**2+t2y**2+t2z**2)
340 t2t = (t2x*tx + t2y*ty +t2z*tz) / tt2
344 tt3 = stens * sqrt(tt2/
max(em30,t3x**2+t3y**2+t3z**2))
348 a(1,n) = a(1,n) + stensx
349 a(2,n) = a(2,n) + stensy
350 a(3,n) = a(3,n) + stensz
353 fac =
max(em30,sqrt(nnx**2+nny**2+nnz**2))
365 dvn = vx * nnx + vy * nny + vz * nnz
366 w(1,n) = w(1,n) + dvn * nnx
367 w(2,n) = w(2,n) + dvn * nny
368 w(3,n) = w(3,n) + dvn * nnz
369 CALL bcs2(w(1,n),skew(1,iskew(n)),iskew(n),icode(n))
370 vn = v(1,n)*nnx + v(2,n)*nny + v(3,n)*nnz
371 wn = w(1,n)*nnx + w(2,n)*nny + w(3,n)*nnz
377 w(1,n) = w(1,n) * fac
378 w(2,n) = w(2,n) * fac
379 w(3,n) = w(3,n) * fac
386 vn = v(1,n)*nnx + v(2,n)*nny + v(3,n)*nnz
395 dvn = vx * nnx + vy * nny + vz * nnz
396 w(1,n) = w(1,n) + dvn * nnx
397 w(2,n) = w(2,n) + dvn * nny
398 w(3,n) = w(3,n) + dvn * nnz
422 elbuf_tab(igrou)%GBUF%EINT(ieln) =
423 . elbuf_tab(igrou)%GBUF%EINT(ieln) + combuf(ii)
430 igrou = icomngr(im+ii)
431 ieln = icomnel(im+ii)
432 elbuf_tab(igrou)%GBUF%EINT(ieln) =
433 . 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)