35 2 SPBUF ,ITAB ,KXSP ,IXSP ,NOD2SP ,
36 3 ISPHIO ,VSPHIO ,NPC ,PLD ,PM ,
37 4 IPARG ,ELBUF_TAB,IPART ,IPARTSP ,WASPACT ,
38 5 VNORMAL ,WA ,SPHVELN ,WAR ,WFEXT)
48#include "implicit_f.inc"
53#include "vect01_c.inc"
63 INTEGER KXSP(NISP,*),(KVOISPH,*),NOD2SP(*),ITAB(*),
64 . ISPHIO(NISPHIO,*),IPART(LIPART1,*),IPARTSP(*),WASPACT(*),
65 . NPC(*),IPARG(NPARG,*)
67 . x(3,*) ,v(3,*) ,a(3,*) ,ms(*) ,spbuf(nspbuf,*) ,vsphio(*) ,
70 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) ::
71 DOUBLE PRECISION,
INTENT(INOUT) ::
75 INTEGER I, ITYPE, IVAD,
79 . iprt,ippv,j,m,jnod,impose,jmpose,
80 . imat,ifpres,np,jmpose2,nn,kk(6)
83 . xi,yi,zi,xj,yj,zj,dmin,dd,vx,vy,vz,
84 . pmin,vn,vo,po,rhoi,sspi,pinfini,lc,alp,
86 TYPE(g_bufel_) ,
POINTER :: GBUF
97 impose=kxsp(2,n)/(ngroup+1)
99 itype=isphio(1,impose)
103 iprt=isphio(2,impose)
104 ivad=isphio(4,impose)
106 ifpres=isphio(6,impose)
110 npf = (npc(ifpres+1)-npc(ifpres))/2
112 IF (tt<=pld(ii))
THEN
113 pentp=(pld(ii+3)-pld(ii+1))/(pld(ii+2)-pld(ii))
114 pn =pld(ii+1)+pentp*(tt-pld(ii))
115 ELSEIF (tt>=pld(ii+2*(npf-1)))
THEN
117 pentp=(pld(jj+1)-pld(jj-1))/(pld(jj)-pld(jj-2))
118 pn =pld(jj+1)+
max(-pld(jj+1),pentp*(tt-pld(jj)))
121 IF (pld(ii)<=tt.AND.tt<=pld(ii+2))
THEN
122 pentp=(pld(ii+3)-pld(ii+1))/(pld(ii+2)-pld(ii))
123 pn =pld(ii+1)+pentp*(tt-pld(ii))
150 jmpose=kxsp(2,m)/(ngroup+1)
155 IF(isphio(1,jmpose)==1)lbool=.true.
161 dd =(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj)+(zi-zj)*(zi-zj)
170 jmpose = nint(xsphr(12,nn))
172 jmpose2=isphio(1,jmpose)
176 IF(jmpose2==0.OR.jmpose2==1)
THEN
180 dd =(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj)+(zi-zj)*(zi-zj)
191 ng=mod(kxsp(2,np),ngroup+1)
193 2 mtn ,nel ,nft ,kad ,ity ,
194 3 npt ,jale ,ismstr ,jeul ,jtur ,
195 4 jthe ,jlag ,jmult ,jhbe
196 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
197 6 irep ,iint ,igtyp ,israt ,isrot ,
198 7 icsen ,isorth ,isorthg ,ifailure,jsms )
204 gbuf => elbuf_tab(ng)%GBUF
207 pn=-( gbuf%SIG(kk(1)+k)
209 . +gbuf%SIG(kk(3)+k))*third
215 . +war(3,-ippv))*third
219 ng=mod(kxsp(2,n),ngroup+1)
221 2 mtn ,nel ,nft ,kad ,ity ,
222 3 npt ,jale ,ismstr ,jeul ,jtur ,
223 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
224 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
225 6 irep ,iint ,igtyp ,israt ,isrot ,
226 7 icsen ,isorth ,isorthg ,ifailure,jsms )
232 gbuf => elbuf_tab(ng)%GBUF
235 px=-( gbuf%SIG(kk(1)+k)
237 . +gbuf%SIG(kk(3)+k))*third
238 gbuf%SIG(kk(1)+k)=gbuf%SIG(kk(1)+k)+px-pn
239 gbuf%SIG(kk(2)+k)=gbuf%SIG(kk(2)+k)+px-pn
240 gbuf%SIG(kk(3)+k)=gbuf%SIG(kk(3)+k)+px-pn
241 wa(1,n)=gbuf%SIG(kk(1)+k)
242 wa(2,n)=gbuf%SIG(kk(2)+k)
243 wa(3,n)=gbuf%SIG(kk(3)+k)
246 dvol=spbuf(12,n)/
max(em20,spbuf(2,n))
247 . -spbuf(12,n)/
max(em20,wa(10,n))
248 wfextt=wfextt+(pn-px)*dvol
257 impose=kxsp(2,n)/(ngroup+1)
259 itype=isphio(1,impose)
261 ivad=isphio(4,impose)
280 IF(isphio(1,jmpose) == 1)lbool=.true.
286 dd =(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj)+(zi-zj)*(zi-zj)
295 jmpose = nint(xsphr(12,nn))
301 IF(jmpose2==0.OR.jmpose2==1)
THEN
305 dd =(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj)+(zi-zj)*(zi-zj)
314 ifpres=isphio(6,impose)
316 npf = (npc(ifpres+1)-npc(ifpres))/2
318 IF (tt<=pld(ii))
THEN
319 pentp=(pld(ii+3)-pld(ii+1))/(pld(ii+2)-pld(ii))
320 pinfini =pld(ii+1)+pentp*(tt-pld(ii))
321 ELSEIF (tt>=pld(ii+2*(npf-1)))
THEN
323 pentp=(pld(jj+1)-pld(jj-1))/(pld(jj)-pld(jj-2))
324 pinfini =pld(jj+1)+
max(-pld(jj+1),pentp*(tt-pld(jj)))
327 IF (pld(ii)<=tt.AND.tt<=pld(ii+2))
THEN
328 pentp=(pld(ii+3)-pld(ii+1))/(pld(ii+2)-pld(ii))
329 pinfini =pld(ii+1)+pentp*(tt-pld(ii))
336 pinfini=pinfini*vsphio(ivad+1)
338 pinfini=vsphio(ivad+1)
344 vn=vnormal(1,n)*vx+vnormal(2,n)*vy+vnormal(3,n)*vz
356 pinfini=pinfini-half*rhoi*vn*vn
358 alp =half*sspi/
max(em30,lc)*dt1
359 pn=po+(one - alp)*rhoi*sspi*(vn-vo)+alp*(pinfini-po)
362 ng=mod(kxsp(2,n),ngroup
364 2 mtn ,nel ,nft ,kad ,ity ,
365 3 npt ,jale ,ismstr ,jeul ,jtur ,
366 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
367 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
368 6 irep ,iint ,igtyp ,israt ,isrot ,
369 7 icsen ,isorth ,isorthg ,ifailure,jsms )
375 gbuf => elbuf_tab(ng)%GBUF
378 px=-( gbuf%SIG(kk(1)+k)
380 . +gbuf%SIG(kk(3)+k))*third
382 gbuf%SIG(kk(1)+k)=gbuf%SIG(kk(1)+k)+px-pn
383 gbuf%SIG(kk(2)+k)=gbuf%SIG(kk(2)+k)+px-pn
384 gbuf%SIG(kk(3)+k)=gbuf%SIG(kk(3)+k)+px-pn
385 wa(1,n)=gbuf%SIG(kk(1)+k)
386 wa(2,n)=gbuf%SIG(kk(2)+k)
387 wa(3,n)=gbuf%SIG(kk(3)+k)
389 dvol=spbuf(12,n)/
max(em20,spbuf(2,n))
390 . -spbuf(12,n)/
max(em20,wa(10,n))
391 wfextt=wfextt+(pn-px)*dvol
395 2 mtn ,nel ,nft ,kad ,ity ,
396 3 npt ,jale ,ismstr ,jeul ,jtur ,
397 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
398 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
399 6 irep ,iint ,igtyp ,israt ,isrot ,
400 7 icsen ,isorth ,isorthg ,ifailure,jsms )
406 gbuf => elbuf_tab(ng)%GBUF
409 pn=-( gbuf%SIG(kk(1)+k)
411 . +gbuf%SIG(kk(3)+k))*third