40 2 ITAB ,KXSP ,IXSP ,NOD2SP ,NPC ,
41 3 PLD ,IPARG ,ELBUF_TAB,ISPHIO ,VSPHIO ,
42 4 PM ,IPART ,IPARTSP ,IGRSURF ,
43 5 LPRTSPH ,LONFSPH ,MWA ,WA ,VNORMAL ,
44 6 XDP, IBUFSSG_IO ,OFF_SPH_R2R, WFEXT)
57#include "implicit_f.inc"
62#include "vect01_c.inc"
70#include "tabsiz_c.inc"
76 INTEGER KXSP(NISP,*),IXSP(KVOISPH,*),NOD2SP(*),ITAB(*),NPC(*),
77 . IPARG(NPARG,*),ISPHIO(NISPHIO,*),IPART(LIPART1
82 . pld(*) ,vsphio(*) ,pm(npropm,*) ,wa(*),
86 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION (NGROUP) :: ELBUF_TAB
87 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
88 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
92 INTEGER I, ITYPE, IVAD,IX, N2ENTER,
94 . ifvits,ifdens,ifpres,ifener,
95 . inactiv,j,n,inod,iactive,
96 . isu,nseg,in1,in2,in3,in4,
97 . imat,iprop,iprt,nel,kad,ng,k,
99 . knsx,kisx,knsy,kisy,knsz,kisz,
100 . knpx,kipx,knpy,kipy,knpz,kipz,kvnorm,kxproj,kf,
104 . pentr,rhon,rho0,pentp,pn,pshft,pente,en,ei,
105 . t05,sseg,mp,wfextt,volo,
106 . x1,x2,x3,x4,xp,y1,y2,y3,y4,yp,z1,z2,z3,z4,zp,
107 . x12,y12,z12,x23,y23,z23,x31,y31,z31,nx,ny,nz,nn,
108 . xi,yi,zi,dd,diam,dmax,dps,vol
109 TYPE(g_bufel_) ,
POINTER :: GBUF
125 DO iactive=lprtsph(2,iprt-1)+1,lprtsph(1,iprt)
127 kxsp(2,n)=mod(kxsp(2,n),ngroup+1)
143 npf = (npc(ifvits+1)-npc(ifvits))/2
145 IF (t05<=pld(ii))
THEN
146 pentv=(pld(ii+3)-pld(ii+1))/(pld(ii+2)-pld(ii))
147 vn =pld(ii+1)+pentv*(t05-pld(ii))
148 ELSEIF (t05>=pld(ii+2*(npf-1)))
THEN
150 pentv=(pld(jj+1)-pld(jj-1))/(pld(jj)-pld(jj-2))
151 vn =pld(jj+1)+
max(-pld(jj+1),pentv*(t05-pld(jj)))
154 IF (pld(ii)<=t05.AND.t05<=pld(ii+2))
THEN
155 pentv=(pld(ii+3)-pld(ii+1))/(pld(ii+2)-pld(ii))
156 vn =pld(ii+1)+pentv*(t05-pld(ii))
172 npf = (npc(ifdens+1)-npc(ifdens))/2
174 IF (tt<=pld(ii))
THEN
175 pentr=(pld(ii+3)-pld(ii+1))/(pld(ii+2)-pld(ii))
176 rhon =pld(ii+1)+pentr*(tt-pld(ii))
177 ELSEIF (tt>=pld(ii+2*(npf-1)))
THEN
179 pentr=(pld(jj+1)-pld(jj-1))/(pld(jj)-pld(jj-2))
180 rhon =pld(jj+1)+
max(-pld(jj+1),pentr*(tt-pld(jj)))
183 IF (pld(ii)<=tt.AND.tt<=pld(ii+2))
THEN
184 pentr=(pld(ii+3)-pld(ii+1))/(pld(ii+2)-pld(ii))
185 rhon =pld(ii+1)+pentr*(tt-pld(ii))
192 rhon=rhon*vsphio(ivad)
199 npf = (npc(ifener+1)-npc(ifener))/2
201 IF (tt<=pld(ii))
THEN
202 pente=(pld(ii+3)-pld(ii+1))/(pld(ii+2)-pld(ii))
203 en =pld(ii+1)+pente*(tt-pld(ii))
204 ELSEIF (tt>=pld(ii+2*(npf-1)))
THEN
206 pente=(pld(jj+1)-pld(jj-1))/(pld(jj)-pld(jj-2))
207 en =pld(jj+1)+
max(-pld(jj+1),pente*(tt-pld(jj)))
210 IF (pld(ii)<=tt.AND.tt<=pld(ii+2))
THEN
211 pente=(pld(ii+3)-pld(ii+1))/(pld(ii+2)-pld(ii))
212 en =pld(ii+1)+pente*(tt-pld(ii))
223 diam =get_u_geo(6,iprop)
231 mp = get_u_geo(1,iprop)
233 diam= (sqr2*vol)**third
246 nsegb=igrsurf(isu)%NSEG
257 in1=ibufssg_io(iad2+nibsph*j )
258 in2=ibufssg_io(iad2+nibsph*j+1)
259 in3=ibufssg_io(iad2+nibsph*j+2)
260 in4=ibufssg_io(iad2+nibsph*j+3)
308 DO iactive=lprtsph(2,iprt-1)+1,lprtsph(1,iprt)
314 IF( xi>xbmin.AND.yi>ybmin.AND.zi>zbmin
315 . .AND.xi<xbmax.AND.yi<ybmax.AND.zi<zbmax)
THEN
324 in1=ibufssg_io(iad2+nibsph*(j-1) )
325 in2=ibufssg_io(iad2+nibsph*(j-1)+1)
326 in3=ibufssg_io(iad2+nibsph*(j-1)+2)
327 in4=ibufssg_io(iad2+nibsph*(j-1)+3)
337 dbucs=
max(dbucs,abs(x1-x2))
338 dbucs=
max(dbucs,abs(y1-y2))
339 dbucs=
max(dbucs,abs(z1-z2))
340 dbucs=
max(dbucs,abs(x2-x3))
341 dbucs=
max(dbucs,abs(y2-y3))
342 dbucs=
max(dbucs,abs(z2-z3))
343 dbucs=
max(dbucs,abs(x3-x1))
344 dbucs=
max(dbucs,abs(y3-y1))
345 dbucs=
max(dbucs,abs(z3-z1))
355 dbucs=
max(dbucs,abs(x1-x4))
356 dbucs=
max(dbucs,abs(y1-y4))
357 dbucs=
max(dbucs,abs(z1-z4))
358 dbucs=
max(dbucs,abs(x2-x4))
359 dbucs=
max(dbucs,abs(y2-y4))
360 dbucs=
max(dbucs,abs(z2-z4))
361 dbucs=
max(dbucs,abs(x3-x4))
362 dbucs=
max(dbucs,abs(y3-y4))
363 dbucs=
max(dbucs,abs(z3-z4))
366 nbox =
max(iun,int((xbmax-xbmin)/dbucs))
367 nboy =
max(iun,int((ybmax-ybmin)/dbucs))
368 nboz =
max(iun,int((zbmax-zbmin)/dbucs))
369 nband=
max(nbox,nboy,nboz)+1
382 kvnorm=kipz+3*np2sort
384 CALL sphreqs(nseg ,ibufssg_io(iad2) ,x ,np2sort ,mwa ,
385 2 lonfsph ,kxsp ,wa(knsx) ,wa(kisx) ,wa(knsy) ,
386 3 wa(kisy) ,wa(knsz) ,wa(kisz) ,wa(knpx) ,wa(kipx) ,
387 4 wa(knpy) ,wa(kipy) ,wa(knpz) ,wa(kipz) ,wa ,
388 5 wa(kvnorm),bid ,bid ,v ,spbuf ,
394 IF(dps>=0..AND.dps<dmax)
THEN
398 wfextt=wfextt + half*ms(inod)*(vt-
399 . (v(1,inod)*v(1,inod)+v(2,inod)*v(2,inod)+v(3,inod)*v(3,inod)))
400 vnormal(1,n)=-wa(kvnorm+3*(n-1))
401 vnormal(2,n)=-wa(kvnorm+3*(n-1)+1)
402 vnormal(3,n)=-wa(kvnorm+3*(n-1)+2)
403 v(1,inod)=vn*vnormal(1,n)
404 v(2,inod)=vn*vnormal(2,n)
405 v(3,inod)=vn*vnormal(3,n)
406 ng=mod(kxsp(2,n),ngroup+1)
407 kxsp(2,n) =ng+i*(ngroup+1)
412 mp =get_u_geo(1,iprop)
419 vsphio(ix)=vsphio(ix)+rhon*sseg*vv*dt1
420 IF(vsphio(ix)>=mp)
THEN
429 inactiv=lprtsph(2,iprt)-lprtsph(1,iprt)
430 IF(inactiv<n2enter)
THEN
431 CALL ancmsg(msgid=175,anmode=aninfo,
432 . i1=isphio(nisphio,i))
439 iactive=lprtsph(1,iprt)
441 IF(vsphio(ix)>=mp)
THEN
446 lprtsph(1,iprt)=iactive
448 in1=igrsurf(isu)%NODES(j+1,1)
449 in2=igrsurf(isu)%NODES(j+1,2)
450 in3=igrsurf(isu)%NODES(j+1,3)
451 in4=igrsurf(isu)%NODES(j+1,4)
469 xp=fourth*(x1+x2+x3+x4)
470 yp=fourth*(y1+y2+y3+y4)
471 zp=fourth*(z1+z2+z3+z4)
481 x12=half*(x2+x3-x1-x4)
482 y12=half*(y2+y3-y1-y4)
483 z12=half*(z2+z3-z1-z4)
484 x23=half*(x3+x4-x1-x2)
485 y23=half*(y3+y4-y1-y2)
486 z23=half*(z3+z4-z1-z2)
490 nn =one/
max(em20,sqrt(nx*nx+ny*ny+nz*nz))
496 IF (itab(inod) >= 1000000000)
THEN
501 d(1,inod)=xp-x(1,inod)+d(1,inod)
502 d(2,inod)=yp-x(2,inod)+d(2,inod)
503 d(3,inod)=zp-x(3,inod)+d(3,inod)
513 wfextt=wfextt+half*mp*vt
520 IF (r2r_siu/=0) off_sph_r2r(inod) = 2
524 iparg(10,ng)=iparg(10,ng)+1
526 2 mtn ,nel ,nft ,kad ,ity ,
527 3 npt ,jale ,ismstr ,jeul ,jtur ,
528 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
529 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
530 6 irep ,iint ,igtyp ,israt ,isrot ,
531 7 icsen ,isorth ,isorthg ,ifailure,jsms )
532 gbuf => elbuf_tab(ng)%GBUF
535 wfextt=wfextt+ei*volo
542 kxsp(2,n) =ng+i*(ngroup
545 vsphio(ix)=vsphio(ix)-mp