49 . IXS , ELBUF_TAB ,IPARG ,ITAB ,ITASK ,
50 . BUFBRIC, NBRIC_L ,X ,ALE_CONNECTIVITY,V ,
51 . NV46 , VEUL ,IGRNOD,IPARI ,IGRTRUSS,
137 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
138 use element_mod ,
only : nixs,nixt
142#include "implicit_f.inc"
146#include "param_c.inc"
147#include "com01_c.inc"
148#include "com04_c.inc"
149#include "com08_c.inc"
151#include "vect01_c.inc"
152#include "inter22.inc"
153#include "mvsiz_p.inc"
154#include "comlock.inc"
155#include "subvolumes.inc"
159 INTEGER,
INTENT(IN) :: IXS(NIXS,*) ,IPARG(NPARG,*),ITAB(*) ,NV46 ,BUFBRIC(*),
160 . IPARI(*) ,IXT(NIXT,*) ,ITASK ,IPM(NPROPMI
161TYPE(ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
162 my_real,
INTENT(IN) :: V(3,*), VEUL(LVEUL,*)
163 my_real,
INTENT(IN),
TARGET :: bufmat(*)
164 my_real,
INTENT(INOUT) :: x(3,*)
166 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
167 TYPE (GROUP_) ,
DIMENSION(NGRTRUS) :: IGRTRUSS
172 TYPE(l_bufel_) ,
POINTER :: LBUF1,LBUF2
173 INTEGER :: I,J,K0,K1,,JV,IDV, NBCUT, NBCUTv, NBCUTprev, NEL,NG,NFL,NBF,NBL,NBL1,NBRIC_L,NIN
174 INTEGER :: brickID,tNB,NTAG,IV,NGv,IAD22,NCELLv,ICV,IGR
175 INTEGER :: IB,IBV,IBv2,IBv_i,IBo,ICELL,ICELL2,MCELL,NCELL,MNOD,ID,ITAG(66)
176 INTEGER :: IPOS, LLT_, LLT_o,LLT_v, IDLOCv, IPOSf, IPOSiadj,ICELLv,ICELLv2
177 INTEGER :: INODES(8),INOD,INOD2,INODE,NNODES, NNODES2, ADD, ADD0, ITRIMAT, K, KV, Ko
178 LOGICAL :: lDONE,lStillTruss,lFOUND,lCYCLE,lTARGET,lStillNode, lCOND1
180 my_real :: adjmain_vol(6), adjmain_face
181 INTEGER :: IDadj_MCELLv(6), IVadj_MCELLv(6), IBadj_MCELLv(6)
182 my_real,
DIMENSION(:,:),
ALLOCATABLE :: f
183 my_real,
POINTER :: pvar, pvarv, pvaro
184 my_real,
DIMENSION(:),
POINTER :: pvar3
185 TYPE(g_bufel_) ,
POINTER :: GBUF, GBUFv, GBUFo
186 TYPE(l_bufel_) ,
POINTER :: LBUF
187 TYPE(poly_entity),
DIMENSION(:),
POINTER :: pIsMain ,pIsMainV
188 my_real,
DIMENSION(:) ,
POINTER :: pfullface
189 TYPE(node_entity),
DIMENSION(:) ,
POINTER :: pNodWasMain
191 INTEGER,
DIMENSION(:,:),
POINTER :: pAdjBRICK, pAdjBRICKv
192 TYPE(node_entity),
DIMENSION(:) ,
POINTER :: pWhereWasMain
193 TYPE(node_entity),
DIMENSION(:),
POINTER :: pWhichCellNod,pWhichCellNodv
194 INTEGER ,
POINTER :: pMainID
195 my_real,
DIMENSION(:) ,
POINTER :: uparam
196 TYPE(poly_entity),
DIMENSION(:),
POINTER :: pSUBVOLv
197 my_real ,
POINTER :: psubvold
198 TYPE(poly_entity),
DIMENSION(:),
POINTER :: pSUBVOL
200 LOGICAL :: bool1, bool2
201 CHARACTER*10 :: debugMAINSECND
202 CHARACTER*10 ,
ALLOCATABLE :: debugMAINSECNDv(:,:,:)
203 INTEGER,
ALLOCATABLE :: IsMainV(:,:,:)
204 TYPE(buf_mat_) ,
POINTER :: MBUF,MBUFv, MBUFo
205 INTEGER :: ICRIT_MAT_DEPORTATION, ICRIT_DEMERGE
207 INTEGER,
ALLOCATABLE,
DIMENSION(:,:,:):: ORIGIN_DATA
208 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: Ntarget,Norigin
209 INTEGER :: MTN_,ITAR, IORIG, MAIN_TAG(6,9)
210 INTEGER :: IPLA, ISOLNOD, FM, IBm,IBmCur,IBMo,IBMold, IDM, IE, IN, MT
211 INTEGER :: ICELLTAG(9), ICELLTAG_OLD(9),IC, NAdjCELL,NAdjCELLv, IFV, FV, FV2
212 INTEGER :: IVv,MCELLv, MCELLvv, NGvv,IDLOCvv, IBvv,IFVv
213 INTEGER :: GET_UNIQUE_MAIN_CELL, LINK_WITH_UNIQUE_MAIN_CELL,IADJ,NADJ,NADJv,IE_M
214 INTEGER :: NsecndNOD, , NP_NODE, JJ, NINTP(6,9), NNOD(6,9), NN, SECid, IDLOC, NewMnod(8), MLW
215 INTEGER :: ITASKv, NTRUS, NPOINT, IRES(2), NewInBuffer
216 INTEGER,
ALLOCATABLE,
DIMENSION(:,:) :: DESTROY_DATA
217 INTEGER :: I22LOOP,IT,IUNLINK,ITASKB, J1,J2, NTAR, INod_W, IDEMERGE, INod_W_old, ISECND, IAD0,II
218 INTEGER :: FV_old, NumSECND, NumSECND2, IC1, IC2, ITARGET, NumTarget, WasCut, LID, IFAC, IEDG
219 INTEGER :: Cod1, Cod2, Cod3, Icompl, Poly9woNodes, Poly9woNodesV, ISGN(2), ICODE, OLD_ICODE
220 INTEGER :: mainID,NC(8),MOLD,MNEW, IB2,NUM,IADBUF,NUPARAM,NGm,IDLOCm,ICELLm, NP_(9),NODE_ID
221 LOGICAL :: debug_outp,debug_outp2, lSKIP
223 my_real,
ALLOCATABLE,
DIMENSION(:,:) :: vol51, vol51v
224 my_real,
ALLOCATABLE,
DIMENSION(:) :: uvar,uvar_adv
225 my_real :: vfrac(4),som, som_(4), somi, adjface(nv46,nadj_f), delta, ppoint(3)
226 my_real :: sumface, vectmp(3), volorig(24), pointtmp(3), point0(3), cut_point(3)
227 my_real :: cut_vel(3)
228 my_real :: eint, eintv, rho,rho_u(3),mom(3),rhov,sigv(6), sig(6),volv,vol,vol_m,vol_s
229 my_real :: var, var_,var__, var_6(6), var_vf(4), vold_phase(4)
230 my_real :: tmp(6),dxmin,vmax,ratiof,ratiofv,ratio,ratiov,uncutvol,uncutvolv
231 my_real :: vuncut, vi,vj, m(9,9)
232 my_real :: vsum(3) , n_(3), vnew, vold, dvol_numeric, dvol_predic
233 my_real :: sgn, dvi, dvii, face, face9, m_tot, m_liq, m_toto,m_liqo, rho10, rho20, mfrac
234 my_real :: center(3,8)
236 my_real :: det, df11, df12, df21, df22, f1, f2, p1, p2, drho1
237 my_real :: c1, gam, p0, p, rho1, rho2, mas, mas1, mas2, ssp, ssp1, ssp2, rhoc2_1, rhoc2_2, rhoc2
238 my_real :: alp, alpo, beta, volcellold, vel_m(3), surf_s, norm_s(3), adv,
norm, vm, vs
239 my_real :: rho_adv, eint_adv, sig_adv(6), mom_adv(3), zm(3),zs(3), volratio
240 INTEGER :: ITER, NITER, LLTo, LLTm, NGo, IADV
241 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: ORDER, VALUE
243 INTEGER :: NC1,NC2,NC3,NC4,NC5,NC6,NC7,NC8
244 INTEGER :: IAD2, IAD3, LGTH2, LGTH3
249 INTEGER,
INTENT(IN) :: NPTS
250 my_real,
INTENT(IN) :: p(3,npts)
251 my_real,
INTENT(INOUT) :: c(3)
256 my_real,
DIMENSION(:),
POINTER :: p
260 INTEGER,
DIMENSION(:),
POINTER :: p
263 TYPE(poly_entity),
DIMENSION(:),
POINTER :: pFACE
264 TYPE(pointer_array_r) :: pFACEv(9)
265 TYPE(pointer_array_i) :: pListNodID(9)
266 TYPE(POINTER_ARRAY_I) :: pListNodIDv(9)
270 DATA icf/1,4,3,2,3,4,8,7,5,6,7,8,1,2,6,5,2,3,7,6,1,5,8,4/
273 . aj7(mvsiz), aj8(mvsiz) , aj9(mvsiz),
277 . x17 , x28 , x35 , x46,
278 . y17 , y28 , y35 , y46,
279 . z17 , z28 , z35 , z46,
280 . jac_59_68(mvsiz), jac_67_49(mvsiz), jac_48_57(mvsiz),
285 . x1(mvsiz),x2(mvsiz),x3(mvsiz),x4(mvsiz),x5(mvsiz),x6(mvsiz),x7(mvsiz),x8(mvsiz),
286 . y1(mvsiz),y2(mvsiz),y3(mvsiz),y4(mvsiz),y5(mvsiz),y6(mvsiz),y7(mvsiz),y8(mvsiz),
287 . z1(mvsiz),z2(mvsiz),z3(mvsiz),z4(mvsiz),z5(mvsiz),z6(mvsiz),z7(mvsiz),z8(mvsiz),
289 . aj1(mvsiz),aj2(mvsiz),aj3(mvsiz),
290 . aj4(mvsiz),aj5(mvsiz),aj6(mvsiz),hxp,hyp
291 . x1_,x2_,x3_,x4_,x5_,x6_,x7_,x8_,
292 . y1_,y2_,y3_,y4_,y5_,y6_,y7_,y8_,
293 . z1_,z2_,z3_,z4_,z5_
308 write (*,fmt=
'(A, 1000I7)')
"CUT CELL BUFFER : ", ixs(11,
brick_list(nin,1:
nb)%id)
316 dxmin = minval(dx22min_l(0:nthread-1))
317 vmax = maxval(v22max_l(0:nthread-1))
321 dt22_min = dxmin/ncross22 / vmax
336 ALLOCATE(uvar(i22law37))
337 ALLOCATE(uvar_adv(i22law37))
339 ALLOCATE(uvar (m51_n0phas+trimat*m51_nvphas))
340 ALLOCATE(uvar_adv(m51_n0phas+trimat*m51_nvphas))
346 nbf = 1+itask*
nb/nthread
347 nbl = (itask+1)*
nb/nthread
364 if(itask==0.AND.debug_outp)
then
366 print *,
" |----------i22sinit.F-----------|"
367 print *,
" | INITIALIZATION SUBROUTINE |"
368 print *,
" |-------------------------------|"
376 ALLOCATE (debugmainsecndv(nbl-nbf+1,6,9))
378 ALLOCATE (origin_data(nbf:nbl,9,1:3))
379 ALLOCATE (ismainv(nbf:nbl,6,9))
380 ALLOCATE (f(6,nbf:nbl))
381 ALLOCATE (vol51(nbf:nbl,trimat),vol51v(nbf:nbl,trimat))
383 ALLOCATE (norigin(nbf:nbl))
393 DO ng=itask+1,ngroup,nthread
394 IF(iparg(8,ng) /= 1)
THEN
397 2 mtn ,nel ,nft ,iad ,ity ,
398 3 npt ,jale ,ismstr ,jeul ,jtur ,
399 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
400 5 nvaux ,jpor ,jcvt ,jclose ,ipla ,
401 6 irep ,iint ,igtyp ,israt ,isrot ,
402 7 icsen ,isorth ,isorthg ,ifailure,jsms )
403 IF(jlag /= 1 .AND. ity<=2)
THEN
404 IF (mtn /= 0 .AND. iparg(64,ng)==0)
THEN
407 isolnod = iparg(28,ng)
408 IF (ity == 1 .AND. isolnod /= 4)
THEN
409 gbuf => elbuf_tab(ng)%GBUF
410 gbuf%TAG22(lft:llt) = 0
419 DO ng=itask+1,ngroup,nthread
420 IF(iparg(8,ng) /= 1)
THEN
423 2 mtn ,nel ,nft ,iad ,ity ,
424 3 npt ,jale ,ismstr ,jeul ,jtur ,
425 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
426 5 nvaux ,jpor ,jcvt ,jclose ,ipla ,
427 6 irep ,iint ,igtyp ,israt ,isrot ,
428 7 icsen ,isorth ,isorthg ,ifailure,jsms )
429 IF(jlag /= 1 .AND. ity<=2)
THEN
430 IF (mtn /= 0 .AND. iparg(64,ng)==0)
THEN
433 isolnod = iparg(28,ng)
434 IF (ity == 1 .AND. isolnod /= 4)
THEN
435 gbuf => elbuf_tab(ng)%GBUF
438 gbuf%VOL(lft:llt) = veul(32,nft+lft:nft+llt)
439 ELSEIF(integ8==1)
THEN
440 gbuf%VOL(lft:llt) = veul(52,nft+lft:nft+llt)
445 x1(i) = x(1,ixs(2,ii)) ; y1(i) = x(2,ixs(2,ii)) ; z1(i) = x(3,ixs(2,ii)) ;
446 x2(i) = x(1,ixs(3,ii)) ; y2(i) = x(2,ixs(3,ii)) ; z2(i) = x(3,ixs(3,ii)) ;
447 x3(i) = x(1,ixs(4,ii)) ; y3(i) = x(2,ixs(4,ii)) ; z3(i) = x(3,ixs(4,ii)) ;
448 x4(i) = x(1,ixs(5,ii)) ; y4(i) = x(2,ixs(5,ii)) ; z4(i) = x(3,ixs(5,ii)) ;
449 x5(i) = x(1,ixs(6,ii)) ; y5(i) = x(2,ixs(6,ii)) ; z5(i) = x(3,ixs(6,ii)) ;
450 x6(i) = x(1,ixs(7,ii)) ; y6(i) = x(2,ixs(7,ii)) ; z6(i) = x(3,ixs(7,ii)) ;
451 x7(i) = x(1,ixs(8,ii)) ; y7(i) = x(2,ixs(8,ii)) ; z7(i) = x(3,ixs(8,ii)) ;
452 x8(i) = x(1,ixs(9,ii)) ; y8(i) = x(2,ixs(9,ii)) ; z8(i) = x(3,ixs(9,ii)) ;
467 aj1(i)=x17+x28-x35-x46
468 aj2(i)=y17+y28-y35-y46
469 aj3(i)=z17+z28-z35-z46
484 jac_59_68(i)=aj5(i)*aj9(i)-aj6(i)*aj8(i)
485 jac_67_49(i)=aj6(i)*aj7(i)-aj4(i)*aj9(i)
486 jac_48_57(i)=aj4(i)*aj8(i)-aj5(i)*aj7(i)
489 dett(i)=one_over_64*(aj1(i)*jac_59_68(i)+aj2(i)*jac_67_49(i)+aj3(i)*jac_48_57(i))
491 gbuf%VOL(lft:llt) = dett(lft:llt)
500 ! (local array) <--> (global buffer)
517 IF((idb(ib)>nfl).AND.(idb(ib)<=nfl+nel))
THEN
518 IF(iparg(11,ng)==1) jeul = 1
519 IF(iparg(7,ng)==1) jale = 1
520 idlocb(ib) = idb(ib) - nfl
526 gbuf => elbuf_tab(ngb(ib))%GBUF
528 gbuf%TAG22(idlocb(ib)) = ib
533 if (.NOT.(ldone))
then
534 write( *,*)
"int 22 : error in group sorting"
547 iad2 = ale_connectivity%ee_connect%iad_connect(brickid)
548 lgth2 = ale_connectivity%ee_connect%iad_connect(brickid+1) -
549 . ale_connectivity%ee_connect%iad_connect(brickid)
551 idv = ale_connectivity%ee_connect%connected(iad2 + j - 1)
558 iad3 = ale_connectivity%ee_connect%iad_connect(idv)
559 lgth3 = ale_connectivity%ee_connect%iad_connect(idv+1) -
560 . ale_connectivity%ee_connect%iad_connect(idv)
562 IF(ale_connectivity%ee_connect%connected(iad3 + jv - 1)==brickid)
THEN
568 gbufv => elbuf_tab(ngv)%GBUF
571 brick_list(nin,ib)%Adjacent_Brick(j,3) = idlocv
572 brick_list(nin,ib)%Adjacent_Brick(j,4) = iad22
573 IF (iad22==0 .AND.
brick_list(nin,ib)%NBCUT>0)
THEN
574 print *,
"**error : inter22 : Lagrangian Surface seems to"
575 print *,
" reach eulerian boundary domain. "
576 print *,
" Check Surface location and GRBRICK definition"
577 print *,
" near related Brick_ID =", ixs(11,
brick_list(nin,ib)%id)
587 write (*,*)
"unavailable in SPMD"
599 n(1:3,1) = (/ veul(14,brickid) , veul(20,brickid) , veul
600 n(1:3,2) = (/ veul(15,brickid) , veul(21,brickid) , veul(27,brickid) /)
601 n(1:3,3) = (/ veul(16,brickid) , veul(22,brickid) , veul(28,brickid) /)
602 n(1:3,4) = (/ veul(17,brickid) , veul(23,brickid) , veul(29,brickid) /)
603 n(1:3,5) = (/ veul(18,brickid) , veul(24,brickid) , veul(30,brickid) /)
604 n(1:3,6) = (/ veul(19,brickid) , veul(25,brickid) , veul(31,brickid) /)
605 brick_list(nin,ib)%N(1,1:3) = n(1:3,1) / sqrt(sum(n(1:3,1)*n(1:3,1)))
606 brick_list(nin,ib)%N(2,1:3) = n(1:3,2) / sqrt(sum(n(1:3,2)*n(1:3,2)))
607 brick_list(nin,ib)%N(3,1:3) = n(1:3,3) / sqrt(sum(n(1:3,3)*n(1:3,3)))
608 brick_list(nin,ib)%N(4,1:3) = n(1:3,4) / sqrt(sum(n(1:3,4)*n(1:3,4)))
609 brick_list(nin,ib)%N(5,1:3) = n(1:3,5) / sqrt(sum(n(1:3,5)*n(1:3,5)))
610 brick_list(nin,ib)%N(6,1:3) = n(1:3,6) / sqrt(sum(n(1:3,6)*n(1:3,6)))
611 ELSEIF(i22_aleul==1)
THEN
657 n(1,1)=(y3_-y1_)*(z2_-z4_) - (z3_-z1_)*(y2_-y4_)
658 n(2,1)=(z3_-z1_)*(x2_-x4_) - (x3_-x1_)*(z2_-z4_)
659 n(3,1)=(x3_-x1_)*(y2_-y4_) - (y3_-y1_)*(x2_-x4_)
661 n(1,2)=(y7_-y4_)*(z3_-z8_) - (z7_-z4_)*(y3_-y8_)
662 n(2,2)=(z7_-z4_)*(x3_-x8_) - (x7_-x4_)*(z3_-z8_)
663 n(3,2)=(x7_-x4_)*(y3_-y8_) - (y7_-y4_)*(x3_-x8_)
665 n(1,3)=(y6_-y8_)*(z7_-z5_) - (z6_-z8_)*(y7_-y5_)
666 n(2,3)=(z6_-z8_)*(x7_-x5_) - (x6_-x8_)*(z7_-z5_)
667 n(3,3)=(x6_-x8_)*(y7_
669 n(1,4)=(y2_-y5_)*(z6_-z1_) - (z2_-z5_)*(y6_-y1_)
670 n(2,4)=(z2_-z5_)*(x6_-x1_) - (x2_-x5_)*(z6_-z1_)
671 n(3,4)=(x2_-x5_)*(y6_-y1_) - (y2_-y5_)*(x6_-x1_)
673 n(1,5)=(y7_-y2_)*(z6_-z3_) - (z7_-z2_)*(y6_-y3_)
674 n(2,5)=(z7_-z2_)*(x6_-x3_) - (x7_-x2_)*(z6_-z3_)
675 n(3,5)=(x7_-x2_)*(y6_-y3_) - (y7_-y2_)*(x6_-x3_)
677 n(1,6)=(y8_-y1_)*(z4_-z5_) - (z8_-z1_)*(y4_-y5_)
678 n(2,6)=(z8_-z1_)*(x4_-x5_) - (x8_-x1_)*(z4_-z5_)
679 n(3,6)=(x8_-x1_)*(y4_-y5_) - (y8_-y1_)*(x4_-x5_)
681 brick_list(nin,ib)%N(1,1:3) = n(1:3,1) / sqrt(sum(n(1:3,1)*n(1:3,1)))
682 brick_list(nin,ib)%N(2,1:3) = n(1:3,2) / sqrt(sum(n(1:3,2)*n(1:3,2)))
683 brick_list(nin,ib)%N(3,1:3) = n(1:3,3) / sqrt(sum(n(1:3,3)*n(1:3,3)))
684 brick_list(nin,ib)%N(4,1:3) = n(1:3,4) / sqrt(sum(n(1:3,4)*n(1:3,4)))
685 brick_list(nin,ib)%N(5,1:3) = n(1:3,5) / sqrt(sum(n(1:3,5)*n(1:3,5)))
686 brick_list(nin,ib)%N(6,1:3) = n(1:3,6) / sqrt(sum(n(1:3,6)*n(1:3,6)))
691 f(j,ib) = half * sqrt( sum( n(:,j) * n(:,j) ) )
702 pfullface =>
brick_list(nin,ib)%Face_BRICK(1:6)
703 pfullface(1:6) = f(1:6,ib)
705 pface(1)%FACE(1:6)%Surf = f(1:6,ib)
711 IF(
brick_list(nin,ib)%POLY(icell)%Vnew<zero)
THEN
713 pface(icell)%FACE(j)%Surf = f(j,ib) + pface(icell)%FACE(j)%Surf
714 if(pface(icell)%FACE(j)%Surf<zero)
then
715 write (*,*)
"**error : inter22 negative cell face"
722 gbuf => elbuf_tab(ngb(ib))%GBUF
723 brick_list(nin,ib)%POLY(icell)%Vnew = gbuf%VOL(idlocb(ib)) + vol
725 volratio =
brick_list(nin,ib)%POLY(icell)%Vnew / elbuf_tab(ngb(ib))%GBUF%VOL(idlocb(ib))
727 IF(abs(volratio) <= em04)
THEN
742 plistnodid(1)%p(1:8) =>
brick_list(nin,ib)%POLY(1)%ListNodID(1:8)
743 plistnodid(2)%p(1:8) =>
brick_list(nin,ib)%POLY(2)%ListNodID(1:8)
744 plistnodid(3)%p(1:8) =>
brick_list(nin,ib)%POLY(3)%ListNodID(1:8)
745 plistnodid(4)%p(1:8) =>
brick_list(nin,ib)%POLY(4)%ListNodID(1:8)
747 plistnodid(6)%p(1:8) =>
brick_list(nin,ib)%POLY(6)%ListNodID(1:8)
748 plistnodid(7)%p(1:8) =>
brick_list(nin,ib)%POLY(7)%ListNodID(1:8)
749 plistnodid(8)%p(1:8) =>
brick_list(nin,ib)%POLY(8)%ListNodID(1:8)
750 plistnodid(9)%p(1:8) =>
brick_list(nin,ib)%POLY(9)%ListNodID(1:8)
752 pwhichcellnod(1:8) =>
brick_list(nin,ib)%NODE(1:8)
769 brick_list(nin,ib)%POLY(9)%FACE(2)%Surf = f(2,ib)-sum( (/ (
brick_list(nin,ib)%POLY(k)%FACE(2)%Surf,k=1,ncell)/) )
770 brick_list(nin,ib)%POLY(9)%FACE(3)%Surf = f(3,ib)-sum
771 brick_list(nin,ib)%POLY(9)%FACE(4)%Surf = f(4,ib)-sum( (/ (
brick_list(nin,ib)%POLY(k)%FACE(4)%Surf,k=1,ncell)/) )
772 brick_list(nin,ib)%POLY(9)%FACE(5)%Surf = f(5,ib)-sum( (/ (
brick_list(nin,ib)%POLY(k)%FACE(5)%Surf,k=1,ncell)/) )
773 brick_list(nin,ib)%POLY(9)%FACE(6)%Surf = f(6,ib)-sum( (/ (
brick_list(nin,ib)%POLY(k)%FACE(6)%Surf,k=1,ncell)/) )
774 brick_list(nin,ib)%POLY(9)%FACE0%Surf = sum( (/ (
brick_list(nin,ib)%POLY(k)%FACE0%Surf,k=1,ncell) /) )
783 IF(pwhichcellnod(j)%WhichCell/=0) cycle
786 plistnodid(9)%p(mnod) = j
787 ppoint(1) = ppoint(1) + x(1,ixs(1+j,id))
789 ppoint(3) = ppoint(3) + x(3,ixs(1+j,id))
793 . sum(
brick_list(nin,ib)%POLY(1:ncell)%NumPOINT ) - sum(
brick_list(nin,ib)%POLY(1:ncell)%NumNOD) + mnod
794 gbuf => elbuf_tab(ngb(ib))%GBUF
796 uncutvol = gbuf%VOL(idlocb(ib))
798 . .OR. abs(
brick_list(nin,ib)%POLY(1)%Vnew /uncutvol) <em04)
THEN
808 pointtmp(1:3) =
brick_list(nin,ib)%EDGE(j)%CUTPOINT(1:3,i)
809 ppoint(1) = ppoint(1) + pointtmp(1)
811 ppoint(3) = ppoint(3) + pointtmp(3)
816 ppoint(1) = ppoint(1) / (k1+mnod)
817 ppoint(2) = ppoint(2) / (k1+mnod)
818 ppoint(3) = ppoint(3) / (k1+mnod)
819 brick_list(nin,ib)%POLY(9)%CellCENTER(1:3) = ppoint(1:3)
830 psubvol(1:9)%Vnew = 0
831 gbuf => elbuf_tab(ngb(ib))%GBUF
832 psubvol(1)%Vnew = gbuf%VOL(idlocb(ib))
833 brick_list(nin,ib)%Vnew_SCell = gbuf%VOL(idlocb(ib))
841 brick_list(nin,ib)%UncutVol = elbuf_tab(ngb(ib))%GBUF%VOL(idlocb(ib))
856 face =
brick_list(nin,ib)%POLY(9)%FACE(j)%Surf
862 icell =
brick_list(nin,ib)%NODE(inod)%WhichCell
863 IF(icell == 9) lfound = .true.
890 gbuf => elbuf_tab(ng)%GBUF
891 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
892 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
909 IF(i22law37+i22law51 == 0) cycle
915 IF(i22law51 == 0) cycle
920 brick_list(nin,ib)%bakMAT%RHO = gbuf%RHO(idloc)
921 brick_list(nin,ib)%bakMAT%rhoE = gbuf%EINT(idloc)
922 brick_list(nin,ib)%bakMAT%rhoU(1) = gbuf%MOM(llt_*(1-1) +idloc)
923 brick_list(nin,ib)%bakMAT%rhoU(2) = gbuf%MOM(llt_*(2-1) +idloc)
924 brick_list(nin,ib)%bakMAT%rhoU(3) = gbuf%MOM(llt_*(3-1) +idloc)
925 brick_list(nin,ib)%bakMAT%ssp = lbuf%SSP(idloc)
926 brick_list(nin,ib)%bakMAT%SIG(1) = gbuf%SIG(llt_*(1-1) +idloc)
927 brick_list(nin,ib)%bakMAT%SIG(2) = gbuf%SIG(llt_*(2-1) +idloc)
928 brick_list(nin,ib)%bakMAT%SIG(3) = gbuf%SIG(llt_*(3-1) +idloc)
929 brick_list(nin,ib)%bakMAT%SIG(4) = gbuf%SIG(llt_*(4-1) +idloc)
930 brick_list(nin,ib)%bakMAT%SIG(5) = gbuf%SIG(llt_*(5-1) +idloc)
931 brick_list(nin,ib)%bakMAT%SIG(6) = gbuf%SIG(llt_*(6-1) +idloc)
934 IF(mlw/=37 .AND. mlw/=51)cycle
936 brick_list(nin,ib)%bakMAT%UVAR(2) = mbuf%VAR((2-1)*llt_+idloc)
937 brick_list(nin,ib)%bakMAT%UVAR(3) = mbuf%VAR((3-1)*llt_+idloc)
938 brick_list(nin,ib)%bakMAT%UVAR(4) = mbuf%VAR((4-1)*llt_+idloc)
939 brick_list(nin,ib)%bakMAT%UVAR(5) = mbuf%VAR((5-1)*llt_+idloc)
940 IF(i22law51 == 0) cycle
942 brick_list(nin,ib)%bakMAT%UVAR(k) = mbuf%VAR((k-1)*llt_+idloc)
965 padjbrick =>
brick_list(nin,ib)%Adjacent_Brick(1:6,1:5)
966 plistnodid(1)%p(1:8) =>
brick_list(nin,ib)%POLY(1)%ListNodID(1:8)
967 plistnodid(2)%p(1:8) =>
brick_list(nin,ib)%POLY(2)%ListNodID(1:8)
968 plistnodid(3)%p(1:8) =>
brick_list(nin,ib)%POLY(3)%ListNodID(1:8)
969 plistnodid(4)%p(1:8) =>
brick_list(nin,ib)%POLY(4)%ListNodID(1:8)
970 plistnodid(5)%p(1:8) =>
brick_list(nin,ib)%POLY(5)%ListNodID(1:8)
971 plistnodid(6)%p(1:8) =>
brick_list(nin,ib)%POLY(6)%ListNodID(1:8)
972 plistnodid(7)%p(1:8) =>
brick_list(nin,ib)%POLY(7)%ListNodID(1:8)
973 plistnodid(8)%p(1:8) =>
brick_list(nin,ib)%POLY(8)%ListNodID(1:8)
974 plistnodid(9)%p(1:8) =>
brick_list(nin,ib)%POLY(9)%ListNodID(1:8)
979 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Adjacent_Cell(1) = 0
980 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Adjacent_Cell(2) = 0
981 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Adjacent_Cell(3) = 0
982 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Adjacent_Cell(4) = 0
983 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Adjacent_Cell(5) = 0
984 brick_list(nin,ib)%POLY(1:9)%FACE(k)%NAdjCell = 0
987 DO WHILE (icell<=ncell)
989 IF (icell>ncell .AND. ncell/=0)icell=9
991 IF(pface(icell)%FACE(j)%Surf>zero)
THEN
995 iad22 = padjbrick(j,4)
998 brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell = 1
999 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(1) = 1
1002 brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell = 1
1003 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(1) = 1
1006 pwhichcellnodv(1:8) =>
brick_list(nin,iad22)%NODE(1:8)
1009 DO k1=1,
brick_list(nin,ib)%POLY(icell)%NumNOD
1011 IF(plistnodid(icell)%p(k1) ==
int22_buf%nodFACE(j,k2))
THEN
1013 inodes(nnodes) = ixs(1+
int22_buf%nodFACE(j,k2), id)
1023 IF(ixs(1+k1,iv)==inodes(in) )
THEN
1024 icellv = pwhichcellnodv(k1)%WhichCell
1026 print *,
"ITASK,ICELLv,pWhichCellNodv(K1)",itask,icellv,pwhichcellnodv(k1)%WhichCell
1029 IF(icelltag(icellv)==0)
THEN
1030 icelltag( icellv ) = 1
1031 brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell + 1
1032 nadjcell =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell
1033 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(nadjcell) = icellv
1042 poly9wonodes =
brick_list(nin,ib)%Poly9woNodes(j,1)
1044 IF(poly9wonodes == 1)
THEN
1052 poly9wonodesv =
brick_list(nin,ibv)%Poly9woNodes(jv,1)
1053 IF(poly9wonodesv==0)
THEN
1086 nadjcell =
brick_list(nin,ib)%POLY(9)%FACE(j)%NAdjCell
1090 ELSEIF(poly9wonodesv/=0)
THEN
1103 nadjcell =
brick_list(nin,ib)%POLY(9)%FACE(j)%NAdjCell
1104 brick_list(nin,ib)%POLY(9)%FACE(j)%Adjacent_Cell(nadjcell) = 9
1155 icell =
brick_list(nin,ib)%NODE(inod)%WhichCell
1156 icode = ibset(icode,icell)
1160 IF(icode == 518 .OR. icode == 6)
THEN
1161 face9 =
brick_list(nin,ib)%POLY(9)%FACE(j)%Surf
1165 IF(nbcutv == 0 .AND. face9>zero)
THEN
1173 poly9wonodes =
brick_list(nin,ib)%Poly9woNodes(j,1)
1175 IF(poly9wonodes /=0 .AND. icellv /= 0)cycle
1184 pointtmp(1:3) = x(1:3,ixs(1+
int22_buf%NodFace(j,inod),ie))
1185 ppoint(1) = ppoint(1) + pointtmp(1)
1186 ppoint(2) = ppoint(2) + pointtmp(2)
1187 ppoint(3) = ppoint(3) + pointtmp(3)
1191 IF(iedg < 0) isgn(1:2) = (/2,1/)
1196 ELSEIF(nbcut == 1)
THEN
1199 brick_list(nin,ib)%PCUT(8+j)%P(1:3,np) = cut_point(1:3)
1200 cut_vel(1:3) = cut_vel(1:3) +
brick_list(nin,ib)%Edge(iedg)%CUTVEL(1:3,1)
1204! np _node = np_node + 1
1213 cut_point(1:3) =
brick_list(nin,ib)%Edge(iedg)%CUTPOINT(1:3,isgn(1))
1214 brick_list(nin,ib)%PCUT(8+j)%P(1:3,np) = cut_point(1:3)
1215 cut_vel(1:3) = cut_vel(1:3) +
brick_list(nin,ib)%Edge(iedg)%CUTVEL(1:3,isgn(1))
1217 cut_point(1:3) =
brick_list(nin,ib)%Edge(iedg)%CUTPOINT(1:3,isgn(2))
1218 cut_vel(1:3) = cut_vel(1:3) +
brick_list(nin,ib)%Edge(iedg)%CUTVEL(1:3,isgn(2))
1219 brick_list(nin,ib)%PCUT(8+j)%P(1:3,np) = cut_point(1:3)
1224 brick_list(nin,ib)%PCUT(8+j)%B(1) = fourth * ppoint(1)
1225 brick_list(nin,ib)%PCUT(8+j)%B(2) = fourth * ppoint(2)
1226 brick_list(nin,ib)%PCUT(8+j)%B(3) = fourth * ppoint(3)
1230 brick_list(nin,ib)%PCUT(8+j)%Vel(1:3) = cut_vel(1:3) / (np*one)
1231 ppoint(1:3) =
brick_list(nin,ib)%PCUT(8+j)%B(1:3)
1232 vectmp(1:3) =
i22aera(np,
brick_list(nin,ib)%PCUT(8+j)%P(1:3,1:np), ppoint(1:3) )
1233 face = sqrt(sum(vectmp(1:3)*vectmp(1:3)))
1247 IF(i22_degenerated == 1)
THEN
1248 ALLOCATE (destroy_data(7,2*
nb))
1259 DO WHILE (icell<=ncell)
1261 IF (icell>ncell .AND. ncell/=0)icell=9
1264 ratio = vol / uncutvol
1265 IF(abs(ratio)>em04)cycle
1266 idloc = maxloc(
brick_list(nin,ib)%POLY(icell)%FACE(1:6)%SURF,1)
1267 ratiof =
brick_list(nin,ib)%POLY(icell)%FACE(idloc)%SURF /
brick_list(nin,ib)%Face_Brick(idloc)
1271 nadjcell =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell
1272 DO iadj = 1,nadjcell
1273 icellv =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(iadj)
1279 ratiov = volv/uncutvolv
1281 IF(abs(ratiov)>em04 .OR. ibv>ib )cycle
1284 destroy_data(1,ipos) = nin
1285 destroy_data(2,ipos) = ib
1286 destroy_data(3,ipos) = icell
1287 destroy_data(4,ipos) = icellv
1288 destroy_data(5,ipos) = ibv
1289 destroy_data(6,ipos) = j
1290 destroy_data(7,ipos) = jv
1300 print *,
" |------i22_destroy_cell.F-------|"
1301 print *,
" | INITIALIZATION SUBROUTINE |"
1302 print *,
" |-------------------------------|"
1308 !-------------------
1311 ib = destroy_data(2,i)
1312 icell = destroy_data(3,i)
1313 icellv = destroy_data(4,i)
1314 ibv = destroy_data(5,i)
1315 j = destroy_data(6,i)
1316 jv = destroy_data(7,i)
1318 CALL destroy_cell( nin, ib,icell,icellv,ibv,j,jv, ixs, itask)
1321 IF(i22_degenerated == 1)
THEN
1326 i22loop = i22loop + 1
1327 if(i22loop >= 2)
then
1328 print *,
"**error : inter22, unexpected situation."
1331 GOTO 9 !can be optimized later by updating adjacency in
destroy_cell.f or looping only on bricks related to destroyed cell. (need to reach finish line)
1342 pismain(1:9)%IsMain = 0
1345 pismain(1)%IsMain = 1
1349 gbuf => elbuf_tab(ngb(ib))%GBUF
1354 DO WHILE (icell<=ncell)
1356 IF (icell>ncell .AND. ncell/=0)icell=9
1358 volcell =
brick_list(nin,ib)%POLY(icell)%Vnew
1360 IF(fac>critmerge22)
THEN
1362 pismain(icell)%IsMain = 1
1365 k = sum(pismain(1:9)%IsMain)
1368 pmainid = maxloc(pismain(1:9)%IsMain,1)
1370 mcell = get_unique_main_cell(nin,ib,k)
1371 pismain(1:9)%IsMain = 0
1372 pismain(mcell)%IsMain = 1
1376 pismain(9)%IsMain = 1
1387 n_unlinked_l(itask) = 0
1392 padjbrick =>
brick_list(nin,ib)%Adjacent_Brick(1:6,1:5)
1399 brick_list(nin,ib)%POLY(1:9)%WhereIsMain(1) = 0
1400 brick_list(nin,ib)%POLY(1:9)%WhereIsMain(2) = 0
1401 brick_list(nin,ib)%POLY(1:9)%WhereIsMain(3) = 0
1402 brick_list(nin,ib)%POLY(1:9)%WhereIsMain(4) = 0
1404 brick_list(nin,ib)%POLY(mcell)%WhereIsMain(3) = ie
1405 brick_list(nin,ib)%POLY(mcell)%WhereIsMain(4) = ib
1408 DO WHILE (icell<=ncell)
1410 IF (icell>ncell .AND. ncell/=0)icell=9
1413 IF(icell == mcell)
THEN
1414 brick_list(nin,ib)%POLY(icell)%WhereIsMain(1:2) = 0
1416 brick_list(nin,ib)%POLY(icell)%WhereIsMain(4) = ib
1418 adjmain_face(1:6) = zero
1419 adjmain_centroid(1:3,1:6) = zero
1420 idadj_mcellv(1:6) = 0
1421 ivadj_mcellv(1:6) = 0
1422 ibadj_mcellv(1:6) = 0
1424 IF(sum(
brick_list(nin,ib)%POLY(icell)%FACE(1:6)%NAdjCell) == 0)
THEN
1425 print *,
"**error : inter22 - Cell trapped. Check Lagrangian Surface surrounding BRICK ID:",
1430 nadjcell =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell
1431 IF(nadjcell == 0)cycle
1433 ibv = padjbrick(j,4)
1435 adjmain_face(j) =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Surf
1437 ivadj_mcellv(j) = iv
1439 adjmain_centroid(1,j) = sum(x(1,ixs(2:9,iv))) / eight
1440 adjmain_centroid(2,j) = sum(x(2,ixs(2:9,iv))) / eight
1441 adjmain_centroid(3,j) = sum(x(3,ixs(2:9,iv))) / eight
1444 icellv =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(k)
1446 IF(
brick_list(nin,ibv)%POLY(icellv)%IsMain == 1)
THEN
1447 adjmain_face(j) =
min(
brick_list(nin,ib)%POLY(icell)%FACE(j)%Surf,
1448 .
brick_list(nin,ibv)%POLY(icellv)%FACE(jv)%Surf)
1449 adjmain_centroid(1:3,j) =
brick_list(nin,ibv)%POLY(icellv)%CellCenter(1:3)
1450 idadj_mcellv(j) = icellv
1451 ivadj_mcellv(j) = iv
1452 ibadj_mcellv(j) = ibv
1458 sumface = sum(adjmain_face(1:6))
1459 IF(sumface==zero)
THEN
1461 n_unlinked_l(itask) = n_unlinked_l(itask) + 1
1462 unlinked_cells_l(itask,1,n_unlinked_l(itask)) = ib
1463 unlinked_cells_l(itask,2,n_unlinked_l(itask)) = icell
1468 ipos = maxloc(adjmain_face(1:6),1)
1469 brick_list(nin,ib)%POLY(icell)%WhereIsMain(1) = ipos
1470 brick_list(nin,ib)%POLY(icell)%WhereIsMain(2) = idadj_mcellv(ipos)
1471 brick_list(nin,ib)%POLY(icell)%WhereIsMain(3) = ivadj_mcellv(ipos)
1480 . print *,
" **SINIT** : UNLINKED CELL SYNTHESIS "
1481 DO i=1,n_unlinked_l(itask)
1482 ib = unlinked_cells_l(itask,1,i)
1483 icell = unlinked_cells_l(itask,2,i)
1495 IF(mcell == 0) cycle
1505 idlocv =
brick_list(nin,ib)%Adjacent_Brick(j,3)
1508 nadj =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%NAdjCell
1511 icellv =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%Adjacent_Cell(iadj)
1512 ie_m =
brick_list(nin,ibv)%POLY(icellv)%WhereIsMain(3)
1515 numsecnd = numsecnd + 1
1516 nsecndnod = nsecndnod +
brick_list(nin,ibv)%POLY(icellv)%NumNOD
1517 brick_list(nin,ib)%SecndList%FM(numsecnd) = j
1518 brick_list(nin,ib)%SecndList%FV(numsecnd) = ifv
1519 brick_list(nin,ib)%SecndList%IV(numsecnd) = iv
1520 brick_list(nin,ib)%SecndList%IBV(numsecnd) = ibv
1521 brick_list(nin,ib)%SecndList%ICELLv(numsecnd) = icellv
1524 brick_list(nin,ib)%SecndList%ListNodID(numsecnd,1:8) =
brick_list(nin,ibv)%POLY(icellv)%ListNodID(1:8)
1525 brick_list(nin,ib)%SecndList%SURF_v(numsecnd) =
brick_list(nin,ibv)%POLY(icellv)%FACE(ifv)%SURF
1529 brick_list(nin,ib)%SecndList%NumSecndNodes = nsecndnod
1537 DO iunlink=1,n_unlinked_l(itask)
1538 ib = unlinked_cells_l(itask,1,iunlink)
1539 icell = unlinked_cells_l(itask,2,iunlink)
1543 nadj =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell
1548 icellv =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(iadj)
1549 ipos =
brick_list(nin,ibv)%POLY(icellv)%WhereIsMain(1)
1552 adjface(j,iadj) =
min(
brick_list(nin,ib)%POLY(icell)%FACE(j)%Surf,
1553 .
brick_list(nin,ibv)%POLY(icellv)%FACE(jv)%Surf)
1555 adjface(j,iadj) =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Surf
1559 ires(1:2) = maxloc(adjface)
1562 ibv =
brick_list(nin,ib)%Adjacent_Brick(iposf,4)
1563 icellv =
brick_list(nin,ib)%POLY(icell)%FACE(iposf)%Adjacent_Cell(iposiadj)
1566 . ipos =
brick_list(nin,ibv)%POLY(icellv)%WhereIsMain(1)
1567 IF(ipos==0 .OR. adjface(ires(1),ires(2))==zero)
THEN
1568 print *,
"***error : inter22 unable to treat cell ",ixs(11,
brick_list(nin,ib)%ID)
1569 print *,
" Cell seems trapped with no adjacent cells"
1573 print *,
"***error : inter22 unable to treat cell ",ixs(11,
brick_list(nin,ib)%ID)
1574 print *,
" Cell seems trapped with no adjacent cells"
1575 print *,
" Fluid mesh in interaction area should be refined"
1579 brick_list(nin,ib)%POLY(icell)%WhereIsMain(1) = j
1580 brick_list(nin,ib)%POLY(icell)%WhereIsMain(2) =
brick_list(nin,ibv)%POLY(icellv)%WhereIsMain(2)
1581 brick_list(nin,ib)%POLY(icell)%WhereIsMain(3) =
brick_list(nin,ibv)%POLY(icellv)%WhereIsMain(3)
1582 brick_list(nin,ib)%POLY(icell)%WhereIsMain(4) =
brick_list(nin,ibv)%POLY(icellv)%WhereIsMain(4)
1584 write(*,fmt=
'(A,I10,A1,I1,A,I2,I2,A1,I2,A2)')
"unlinked cell:", ixs(11,
brick_list(nin,ib)%ID),
1585 .
".",icell,
" is now linked to faces ", iposf, ipos,
"(",j,
" )"
1600 DO iunlink=1,n_unlinked_l(it)
1601 ib = unlinked_cells_l(it,1,iunlink)
1602 icell = unlinked_cells_l(it,2,iunlink)
1603 ibm =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(4)
1608 IF(itaskb/=itask)cycle
1610 volcell =
brick_list(nin,ib)%POLY(icell)%Vnew
1612 j =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(1)
1615 ibv =
brick_list(nin,ib)%Adjacent_Brick(j1,4)
1617 print *,
"inter22 :Error lagrangian surface is escaping eulerian domain."
1621 fm =
brick_list(nin,ibv)%Adjacent_Brick(j2,5)
1623 nsecndnod =
brick_list(nin,ibm)%SecndList%NumSecndNodes
1624 numsecnd = numsecnd + 1
1627 brick_list(nin,ibm)%SecndList%NumSecndNodes = nsecndnod
1628 brick_list(nin,ibm)%SecndList%FM(numsecnd) = fm
1629 brick_list(nin,ibm)%SecndList%FV(numsecnd) = j
1630 brick_list(nin,ibm)%SecndList%IV(numsecnd) = id
1631 brick_list(nin,ibm)%SecndList%IBV(numsecnd) = ib
1632 brick_list(nin,ibm)%SecndList%ICELLv(numsecnd) = icell
1633 brick_list(nin,ibm)%SecndList%VOL(numsecnd) = volcell
1635 brick_list(nin,ibm)%SecndList%ListNodID(numsecnd,1:8) =
brick_list(nin,ib)%POLY(icell)%ListNodID(1:8)
1654 pnodwasmain(1:8) =>
brick_list(nin,ib)%NODE(1:8)
1655 plistnodid(1)%p(1:8) =>
brick_list(nin,ib)%POLY(1)%ListNodID(1:8)
1656 plistnodid(2)%p(1:8) =>
brick_list(nin,ib)%POLY(2)%ListNodID(1:8)
1657 plistnodid(3)%p(1:8) =>
brick_list(nin,ib)%POLY(3)%ListNodID(1:8)
1658 plistnodid(4)%p(1:8) =>
brick_list(nin,ib)%POLY(4)%ListNodID(1:8)
1659 plistnodid(5)%p(1:8) =>
brick_list(nin,ib)%POLY(5)%ListNodID(1:8)
1660 plistnodid(6)%p(1:8) =>
brick_list(nin,ib)%POLY(6)%ListNodID(1:8)
1661 plistnodid(7)%p(1:8) =>
brick_list(nin,ib)%POLY(7)%ListNodID(1:8)
1662 plistnodid(8)%p(1:8) =>
brick_list(nin,ib)%POLY(8)%ListNodID(1:8)
1663 plistnodid(9)%p(1:8) =>
brick_list(nin,ib)%POLY(9)%ListNodID(1:8)
1670 inod_w =
brick_list(nin,ib)%OldMainStrongNode
1671 IF( inod_w*dt1 > zero)
THEN
1672 IF (
brick_list(nin,ib)%NODE(inod_w)%WhichCell==mcell)ncell = -1
1676 DO WHILE (icell<=ncell)
1678 IF (icell>ncell .AND. ncell/=0)icell=9
1679 IF(icell==mcell)cycle
1682 IF(sum(pnodwasmain(plistnodid(icell)%p(1:mnod))%NodWasMain)==0)cycle
1683 IF(pnodwasmain(inod_w)%NodWasMain<=0) cycle
1691 var = vol_s / (uncutvol)
1692 IF (var < critdvol22)cycle
1693 inod_w =
brick_list(nin,ib)%OldMainStrongNode
1696 ipos =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(1)
1697 icv =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(2)
1698 ibm =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(4)
1702 brick_list(nin,ib)%MergeTarget(1,ntag) = ipos
1724 padjbrick =>
brick_list(nin,ib)%Adjacent_Brick(1:6,1:5)
1726 mbuf => elbuf_tab(ngb(ib))%BUFLY(1)%MAT(1,1,1)
1736 icellv =
brick_list(nin,ib)%SecndList%ICELLv(ic)
1742 psubvolv(1:9) =>
brick_list(nin,ibv)%POLY(1:9)
1743 volv = psubvolv(icellv)%Vnew
1750 mtn_ = iparg(1,ngb(ib))
1752 llt_ = iparg(2,ngb(ib))
1754 !v1old = v1old - timestep*ddvol1
1758 k1 = m51_n0phas + (itrimat-1)*m51_nvphas +ipos-1
1760 vfrac(itrimat) = mbuf%VAR(k+idlocb(ib))
1762 k1 = m51_n0phas + (itrimat-1)*m51_nvphas +ipos-1
1764 var =
brick_list(nin,ib)%Vnew_SCell*vfrac(itrimat)
1765 mbuf%VAR(k+idlocb(ib)) = var
1778 IF(dt1==zero)nbl1 = 0
1780 if(itask==0)
allocate(tmp22array(7,
nb))
1782 tmp22array(1:7,nbf:nbl1)=zero
1788 gbuf => elbuf_tab(ngb(ib))%GBUF
1790 padjbrick =>
brick_list(nin,ib)%Adjacent_Brick(1:6,1:5)
1791 mbuf => elbuf_tab(ngb(ib))%BUFLY(1)%MAT(1,1,1)
1796 llt_ = iparg(2,ngb(ib))
1805 ibv_i =
brick_list(nin,ib )%Adjacent_Brick(j1,4)
1806 ngv =
brick_list(nin,ibv_i)%Adjacent_Brick(j2,2)
1807 idlocv =
brick_list(nin,ibv_i)%Adjacent_Brick(j2,3)
1808 ibv =
brick_list(nin,ibv_i)%Adjacent_Brick(j2,4)
1810 ngv =
brick_list(nin,ib )%Adjacent_Brick(j,2)
1811 idlocv =
brick_list(nin,ib )%Adjacent_Brick(j,3)
1812 ibv =
brick_list(nin,ib )%Adjacent_Brick(j,4)
1814 gbufv => elbuf_tab(ngv)%GBUF
1825 tmp22array(1,ib)=cod1
1826 tmp22array(2,ib)=cod2
1837 supercellvol_l(itask,0,ibv) = supercellvol_l(itask,0,ibv) + ratio * vol
1839 eint = ratio * vol *
brick_list(nin,ib)%bakMAT%rhoE
1840 eint_l(itask,ibv) = eint_l(itask,ibv) + eint
1847 tmp22array(3,ib)=ratio
1848 tmp22array(4,ib)=gbuf%RHO(idlocb(ib))
1849 tmp22array(5,ib)=gbuf%MOM(llt_*(1-1) + idlocb(ib))
1852 rho = ratio * vol *
brick_list(nin,ib)%bakMAT%RHO
1853 rho_l(itask,ibv) = rho_l(itask,ibv) + rho
1856 sig(j) = ratio * vol *
brick_list(nin,ib)%bakMAT%SIG(j)
1857 sig_l(itask,j,ibv) = sig_l(itask,j,ibv) + sig(j)
1861 mom(1) = ratio * vol *
brick_list(nin,ib)%bakMAT%rhoU(1)
1862 mom_l(1,itask,ibv) = mom_l(1,itask,ibv) + mom(1)
1863 mom(2) = ratio * vol *
brick_list(nin,ib)%bakMAT%rhoU(2)
1864 mom_l(2,itask,ibv) = mom_l(2,itask,ibv) + mom(2)
1865 mom(3) = ratio * vol *
brick_list(nin,ib)%bakMAT%rhoU(3)
1866 mom_l(3,itask,ibv) = mom_l(3,itask,ibv) + mom(3)
1868 mtn_ = iparg(1,ngb(ib))
1875 llt_ = iparg(2,ngb(ib))
1882 uvarl(itask,ibv,5) = uvarl(itask,ibv,5)+ratio*vol*
brick_list(nin,ib)%bakMAT%UVAR(5)
1883 uvarl(itask,ibv,4) = uvarl(itask,ibv,4)+ratio*vol*
brick_list(nin,ib)%bakMAT%UVAR(4)
1884 uvarl(itask,ibv,3) = uvarl(itask,ibv,3)+ratio*vol*
brick_list(nin,ib)%bakMAT%UVAR(3)*
brick_list(nin,ib)%bakMAT%UVAR(4)
1885 uvarl(itask,ibv,2) = uvarl(itask,ibv,2)+ratio*vol*
brick_list(nin,ib)%bakMAT%UVAR(2)*
brick_list(nin,ib)%bakMAT%UVAR(5)
1886 uvarl(itask,ibv,1) = uvarl(itask,ibv,1)+ratio*vol*
brick_list(nin,ib)%bakMAT%UVAR(1)
1887 supercellvol_l(itask,1,ibv) = supercellvol_l(itask,1,ibv) + uvarl(itask,ibv,4)
1888 supercellvol_l(itask,2,ibv) = supercellvol_l(itask,2,ibv) + uvarl(itask,ibv,5)
1890 ELSEIF(mtn_==51)
THEN
1891 llt_ = iparg(2,ngb(ib))
1897 k = ((m51_n0phas + (itrimat
1898 vol51(ib,itrimat) =
brick_list(nin,ib)%bakMAT%UVAR(k)
1899 var = ratio * vol51(ib,itrimat)
1900 IF(var/=zero) supercellvol_l(itask,itrimat,ibv) = supercellvol_l(itask,itrimat,ibv) + var
1902 uvarl(itask,ibv,1) = uvarl(itask,ibv,1) +
brick_list(nin,ib)%bakMAT%UVAR(1)
1903 uvarl(itask,ibv,2) = uvarl(itask,ibv,2) +
brick_list(nin,ib)%bakMAT%UVAR(2)
1904 uvarl(itask,ibv,3) = uvarl(itask,ibv,3) +
brick_list(nin,ib)%bakMAT%UVAR(3)
1909 var = ratio*vol51(ib,itrimat)
1911 DO ipos = 1,m51_nvphas
1913 k = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos)
1915 uvarl(itask,ibv,k) = uvarl(itask,ibv,k) + pvar * var
1933 cod1=nint(tmp22array(1,ib))
1934 cod2=nint(tmp22array(2,ib))
1936 write(*,fmt=
'(A,I8,A,I8)')
" MERGING : id=", cod1,
" to idv:", cod2
1937 write(*,fmt=
'(A,E30.16)')
" RATIO=", tmp22array(3,ib)
1938 write(*,fmt=
'(A,E30.16)')
" +rho=", tmp22array(4,ib)
1939 write(*,fmt=
'(A,E30.16)')
" +rhoUx=", tmp22array(5,ib)
1940 write(*,fmt=
'(A,E30.16)')
" +Vol=", tmp22array(6,ib)
1941 tmp22array(:,ib) = zero
1964 gbuf => elbuf_tab(ngb(ib))%GBUF
1965 lbuf => elbuf_tab(ngb(ib))%BUFLY(1)%LBUF(1,1,1)
1967 padjbrick =>
brick_list(nin,ib)%Adjacent_Brick(1:6,1:5)
1968 mbuf => elbuf_tab(ngb(ib))%BUFLY(1)%MAT(1,1,1)
1970 som = sum(supercellvol_l(0:nthread-1,0,ib))
1971 llt_ = iparg(2,ngb(ib))
1972 IF(mlw==37 .OR. mlw==51)
THEN
1973 som_(1) = sum(supercellvol_l(0:nthread-1,1,ib))
1974 som_(2) = sum(supercellvol_l(0:nthread-1,2,ib))
1975 som_(3) = sum(supercellvol_l(0:nthread-1,3,ib))
1976 som_(4) = sum(supercellvol_l(0:nthread-1,4,ib))
1995 tmp22array(1,ib) = ixs(11,
brick_list(nin,ib)%id)
1996 tmp22array(2,ib) = delta
1997 tmp22array(3,ib) =
brick_list(nin,ib)%bakMAT%RHO
1998 tmp22array(4:6,ib) =
brick_list(nin,ib)%bakMAT%rhoU(1:3)
1999 tmp22array(7,ib) =
brick_list(nin,ib)%Vold_SCell
2002 som = som + delta *
brick_list(nin,ib)%Vold_SCell
2003 supercellvol_l(0:nthread-1,0,ib) = zero
2005 eint = delta*
brick_list(nin,ib)%bakMAT%rhoE*
brick_list(nin,ib)%Vold_SCell +sum(eint_l(0:nthread-1,ib))
2007 eint_l(0:nthread-1,ib) = zero
2009 rho = delta*
brick_list(nin,ib)%bakMAT%RHO*
brick_list(nin,ib)%Vold_SCell +sum(rho_l(0:nthread-1,ib))
2011 rho_l(0:nthread-1,ib) = zero
2014 mom(1) = delta*
brick_list(nin,ib)%bakMAT%rhoU(1)*
brick_list(nin,ib)%Vold_SCell+sum(mom_l(1,0:nthread-1,ib))
2015 mom(1) = mom(1) / som
2016 mom_l(1,0:nthread-1,ib)= zero
2018 mom(2) = delta*
brick_list(nin,ib)%bakMAT%rhoU(2)*
brick_list(nin,ib)%Vold_SCell+sum(mom_l(2,0:nthread-1,ib))
2019 mom(2) = mom(2) / som
2020 mom_l(2,0:nthread-1,ib)= zero
2022 mom(3) = delta*
brick_list(nin,ib)%bakMAT%rhoU(3)*
brick_list(nin,ib)%Vold_SCell+sum(mom_l(3,0:nthread-1,ib))
2023 mom(3) = mom(3) / som
2024 mom_l(3,0:nthread-1,ib)= zero
2027 sig(j) = delta*
brick_list(nin,ib)%bakMAT%SIG(j)*
brick_list(nin,ib)%Vold_SCell+sum(sig_l(0:nthread-1,j,ib))
2028 sig(j) = sig(j) / som
2029 sig_l(0:nthread-1,j,ib)= zero
2032 gbuf%EINT(idloc) = eint
2040 gbuf%SIG(llt_*(j-1)+idloc) = sig(j)
2051 mtn_ = iparg(1,ngb(ib))
2053 !uvar(i,1) : massic percentage of liquid * global density(rho1*v1/v : it needs to give liquid mass multiplying by element volume in
aleconve.f)
2058 llt_ = iparg(2,ngb(ib))
2064 uvar(5) = delta*
brick_list(nin,ib)%bakMAT%UVAR(5)*
brick_list(nin,ib)%Vold_SCell + sum(uvarl(0:nthread-1,ib,5))
2065 uvar(4) = delta*
brick_list(nin,ib)%bakMAT%UVAR(4)*
brick_list(nin,ib)%Vold_SCell + sum(uvarl(0:nthread-1,ib,4))
2067 uvar(3) = uvar(3) + sum(uvarl(0:nthread-1,ib,3))
2069 uvar(2) = uvar(2) + sum(uvarl(0:nthread-1,ib,2))
2070 uvar(1) = delta*
brick_list(nin,ib)%bakMAT%UVAR(1)*
brick_list(nin,ib)%Vold_SCell + sum(uvarl(0:nthread-1,ib,1))
2071 uvarl(0:nthread-1,ib,1:5) = zero
2080 mbuf%VAR((0*llt_ + idloc)) = uvar(1) / som
2081 IF(som_(2)>em20)
THEN
2082 mbuf%VAR((1*llt_ + idloc)) = uvar(2) / som_(2)
2083 mbuf%VAR((4*llt_ + idloc)) = uvar(5) / som
2085 IF(som_(1)>em20)
THEN
2086 mbuf%VAR((2*llt_ + idloc)) = uvar(3) / som_(1)
2087 mbuf%VAR((3*llt_ + idloc)) = uvar(4) / som
2089 supercellvol_l(0:nthread-1,1:4,ib) = zero
2098 1 elbuf_tab, ixs, bufmat, iparg, ipm,
2099 2 idloc , ng , brickid, vol
2104 ELSEIF(mtn_==51)
THEN
2106 uvar(1) = delta*
brick_list(nin,ib)%bakMAT%UVAR(1) + sum(uvarl(0:nthread-1,ib,1))
2107 uvar(2) = delta*
brick_list(nin,ib)%bakMAT%UVAR(2) + sum(uvarl(0:nthread-1,ib,2))
2108 uvar(3) = delta*
brick_list(nin,ib)%bakMAT%UVAR(3) + sum(uvarl(0:nthread-1,ib,3))
2109 uvarl(0:nthread-1,ib,1:3) = zero
2110 mbuf%VAR((0*llt_ + idloc))= uvar(1) / som
2111 mbuf%VAR((1*llt_ + idloc))= uvar(2) / som
2112 mbuf%VAR((2*llt_ + idloc))= uvar(3) / som
2114 somi = sum(supercellvol_l(0:nthread-1,itrimat,ib))
2115 supercellvol_l(0:nthread-1,itrimat,ib) = zero
2117 k = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos)
2118 somi = somi + delta*
brick_list(nin,ib)%bakMAT%UVAR(k)
2119 vol51(ib,itrimat) =
brick_list(nin,ib)%bakMAT%UVAR(k)
2122 DO ipos=1,m51_nvphas
2124 k1 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
2126 mbuf%VAR(k+idlocb(ib)) = somi
2129 k1 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
2131 mbuf%VAR(k+idlocb(ib)) = somi / som
2134 k = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos)
2136 pvar => mbuf%VAR(k1+idlocb(ib))
2137 uvar(k) = sum(uvarl(0:nthread-1,ib,k)) + pvar * vol51(ib,itrimat) * delta
2138 uvarl(0:nthread-1,ib,k) = zero
2139 uvar(k) = uvar(k) / somi
2140 IF(ipos/=1)pvar = uvar(k)
2145 k1 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
2147 mbuf%VAR(k+idlocb(ib)) = zero
2149 k1 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
2151 mbuf%VAR(k+idlocb(ib)) = zero
2170 if (tmp22array(1,ib)==zero )cycle
2171 write(*,fmt=
'(A,E30.16)')
" TARGET=", nint(tmp22array(1,ib))
2172 write(*,fmt=
'(A,E30.16)')
" DELTA=", tmp22array(2,ib)
2173 write(*,fmt=
'(A,E30.16)')
" rho=", tmp22array(3,ib)
2174 write(*,fmt=
'(A,3E30.16)')
" +rhoUx=", tmp22array(4,ib)
2175 write(*,fmt=
'(A,E30.16)')
" +Vol=", tmp22array(5,ib)
2179 deallocate(tmp22array)
2192 IF(dt1==zero)nbl1 = 0
2193 origin_data(:,:,:) = 0
2194 norigin(nbf:nbl) = 0
2200 gbuf => elbuf_tab(ngb(ib
2201 pnodwasmain(1:8) =>
brick_list(nin,ib)%NODE(1:8)
2202 pwherewasmain(1:8) =>
brick_list(nin,ib)%NODE(1:8)
2204 mbuf => elbuf_tab(ngb(ib))%BUFLY(1)%MAT(1,1,1)
2206 mtn_ = iparg(1,ngb(ib))
2214 inod =
brick_list(nin,ib)%POLY(mcell)%ListNodID(k)
2215 IF(pnodwasmain(inod)%NodWasMain==1)cycle
2222 vol_m =
brick_list(nin,ib)%secndlist%VOL_unmerged
2224 var = vol_m / uncutvol
2234 inod_w_old =
brick_list(nin,ib)%OldMainStrongNode
2236 IF(inod_w_old<=0)cycle
2237 IF(
brick_list(nin,ib)%NODE(inod_w_old)%WhichCell == mcell) idemerge = 0
2240 IF( idemerge==1 )
THEN
2245 inod =
brick_list(nin,ib)%POLY(mcell)%ListNodID(k)
2246 j = pwherewasmain(inod)%WhereWasMain
2255 ibv_i =
brick_list(nin,ib )%Adjacent_Brick(j1,4)
2256 ibv =
brick_list(nin,ibv_i)%Adjacent_Brick(j2,4)
2258 ibv =
brick_list(nin,ib )%Adjacent_Brick(j,4)
2263 origin_data(ib,ntag,1) = ibv
2264 origin_data(ib,ntag,2) = j
2265 origin_data(ib,ntag,3) = ibv
2269 origin_data(ib,ntag,1) =
brick_list(nin,ibv)%MergeTarget(3,itar)
2270 origin_data(ib,ntag,2) = j
2271 origin_data(ib,ntag,3) = ibv
2277 print *,
"**error : inter22, topology issue."
2293 IF(dt1==zero)nbl1 = 0
2296 if(itask==0)
ALLOCATE (tmp22array(8,
nb))
2299 tmp22array(1:8,nbf:nbl1
2304 IF(norigin(ib)==0)cycle
2310 gbuf => elbuf_tab(ngb(ib))%GBUF
2311 lbuf => elbuf_tab(ngb(ib))%BUFLY(1)%LBUF(1,1,1)
2313 padjbrick =>
brick_list(nin,ib)%Adjacent_Brick(1:6,1:3)
2314 pnodwasmain(1:8) =>
brick_list(nin,ib)%NODE(1:8)
2315 pwherewasmain(1:8) =>
brick_list(nin,ib)%NODE(1:8)
2319 mtn_ = iparg(1,ngb(ib))
2320 llt_ = iparg(2,ngb(ib))
2321 mbuf => elbuf_tab(ngb(ib))%BUFLY(1)%MAT(1,1,1)
2323 volorig(1:24) = zero
2326 volsecnd51(:) = zero
2348 rho = volcell* gbuf%RHO(idloc)
2349 eint = volcell* gbuf%EINT(idloc)
2350 mom(1) = volcell* gbuf%MOM(llt_*(1-1) + idloc)
2351 mom(2) = volcell* gbuf%MOM(llt_*(2-1) + idloc)
2352 mom(3) = volcell* gbuf%MOM(llt_*(3-1) + idloc)
2353 sig(1) = volcell* gbuf%SIG(llt_*(1-1)+idloc)
2354 sig(2) = volcell* gbuf%SIG(llt_*(2-1)+idloc)
2355 sig(3) = volcell* gbuf%SIG(llt_*(3-1)+idloc)
2356 sig(4) = volcell* gbuf%SIG(llt_*(4-1)+idloc)
2357 sig(5) = volcell* gbuf%SIG(llt_*(5-1)+idloc)
2358 sig(6) = volcell* gbuf%SIG(llt_*(6-1)+idloc)
2359 ssp = volcell* lbuf%SSP(idloc)
2362 uvar(5) = volcell*mbuf%VAR(((5-1)*llt_ + idloc))
2363 uvar(4) = volcell*mbuf%VAR(((4-1)*llt_ + idloc))
2364 uvar(3) = volcell*mbuf%VAR(((3-1)*llt_ + idloc))*mbuf%VAR(((4-1)*llt_ + idloc))
2365 uvar(2) = volcell*mbuf%VAR(((2-1)*llt_ + idloc))*mbuf%VAR(((5-1)*llt_ + idloc))
2366 uvar(1) = volcell*mbuf%VAR(((1-1)*llt_ + idloc))
2367 ELSEIF(mtn_==51)
THEN
2369 volsecnd51(1) = mbuf%VAR(idloc + ((m51_n0phas + (1-1)*m51_nvphas )+ipos-1)*llt_)
2370 volsecnd51(2) = mbuf%VAR(idloc + ((m51_n0phas + (2-1)*m51_nvphas )+ipos-1)*llt_)
2371 volsecnd51(3) = mbuf%VAR(idloc + ((m51_n0phas + (3-1)*m51_nvphas )+ipos-1)*llt_)
2372 volsecnd51(4) = mbuf%VAR(idloc + ((m51_n0phas + (4-1)*m51_nvphas )+ipos-1)*llt_)
2374 DO ipos = 1 , m51_nvphas
2376 k = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
2378 uvar(k+1) = volsecnd51(itrimat) * mbuf%VAR(k1+idloc)
2381 volsecnd51(1:4) = zero
2386 vel_m(1) = gbuf%MOM(3*(idloc-1)+1) / gbuf%RHO(idloc)
2387 vel_m(2) = gbuf%MOM(3*(idloc-1)+2) / gbuf%RHO(idloc)
2388 vel_m(3) = gbuf%MOM(3*(idloc-1)+3) / gbuf%RHO(idloc)
2394 DO iorig = 1, norigin(ib)
2396 ibm = origin_data(ib
2397 ibo = origin_data(ib,iorig,3)
2401 j = origin_data(ib,iorig,2)
2406 ibv =
brick_list(nin,ib )%Adjacent_Brick(j1,4)
2407 jv =
brick_list(nin,ibv)%Adjacent_Brick(j2,5)
2412 numsecnd = old_secndlist(nin,ibo)%Num
2417 IF (old_secndlist(nin,ibo)%IBv(k) /= ib)cycle
2418 IF (old_secndlist(nin,ibo)%FM(k) /= jv)cycle
2424#include "lockon.inc"
2430 tmp22array(1,
in22)=cod1
2432 tmp22array(3,
in22)=0
2439 tmp22array(1,
in22)=cod1
2449 tmp22array(4,
in22)= zero
2451 tmp22array(6,
in22)= zero
2453 tmp22array(8,
in22)=tmp22array(8,
in22)+1
2454#include "lockoff.inc"
2463 volsecnd = old_secndlist(nin,ibo)%VOL(k)
2465 volcell = volcell + volsecnd
2467 gbuf => elbuf_tab(ngv)%GBUF
2468 lbuf => elbuf_tab(ngv)%BUFLY(1)%LBUF(1,1,1)
2469 llt_v = iparg(2,ngv)
2471 surf_s = old_secndlist(nin,ibo)%SURF_V(k)
2472 fv = old_secndlist(nin,ibo)%FV(k
2480 zm(1:3) =
brick_list(nin,ibo)%SCellCenter(1:3)
2481 zs(1:3) =
brick_list(nin,ib)%POLY(mcell)%CellCenter(1:3)
2482 norm_s(1) = zm(1)-zs(1)
2483 norm_s(2) = zm(2)-zs(2)
2484 norm_s(3) = zm(3)-zs(3)
2485 norm = sqrt(norm_s(1)*norm_s(1)+norm_s(2)*norm_s(2)+norm_s(3)*norm_s(3))
2486 norm_s(1) = norm_s(1) /
norm
2487 norm_s(2) = norm_s(2) /
norm
2488 norm_s(3) = norm_s(3) /
norm
2499 adv = -half* half* dt1*vm*surf_s* (vel_m(1)*norm_s(1)+vel_m(2)*norm_s(2)+vel_m(3)*norm_s(3))
2500 rho_adv = rho_adv + adv * gbuf%RHO(idlocv)
2501 eint_adv = eint + adv * gbuf%EINT(idlocv)
2502 mom_adv(1) = mom_adv(1) + adv * gbuf%MOM(3*(idlocv-1)+1)
2503 mom_adv(2) = mom_adv(2) + adv * gbuf%MOM(3*(idlocv-1)+2)
2504 mom_adv(3) = mom_adv(3) + adv * gbuf%MOM(3*(idlocv-1)+3)
2505 sig_adv(1) = sig_adv(1) + adv * gbuf%SIG(llt_v*(1-1)+idlocv)
2506 sig_adv(2) = sig_adv(2) + adv * gbuf%SIG(llt_v*(2-1)+idlocv)
2507 sig_adv(3) = sig_adv(3) + adv * gbuf%SIG(llt_v*(3-1)+idlocv)
2508 sig_adv(4) = sig_adv(4) + adv * gbuf%SIG(llt_v*(4-1)+idlocv)
2509 sig_adv(5) = sig_adv(5) + adv * gbuf%SIG(llt_v*(5-1)+idlocv)
2510 sig_adv(6) = sig_adv(6) + adv * gbuf%SIG(llt_v*(6-1)+idlocv)
2515 rho = rho + volsecnd * gbuf%RHO(idlocv)
2516 eint = eint + volsecnd * gbuf%EINT(idlocv)
2517 mom(1) = mom(1) + volsecnd * gbuf%MOM(llt_v*(1-1)+idlocv)
2518 mom(2) = mom(2) + volsecnd * gbuf%MOM(llt_v*(2-1)+idlocv)
2519 mom(3) = mom(3) + volsecnd * gbuf%MOM(llt_v*(3-1)+idlocv)
2520 sig(1) = sig(1) + volsecnd * gbuf%SIG(llt_v*(1-1)+idlocv)
2521 sig(2) = sig(2) + volsecnd * gbuf%SIG(llt_v*(2-1)+idlocv)
2522 sig(3) = sig(3) + volsecnd * gbuf%SIG(llt_v*(3-1)+idlocv)
2523 sig(4) = sig(4) + volsecnd * gbuf%SIG(llt_v*(4-1)+idlocv)
2524 sig(5) = sig(5) + volsecnd * gbuf%SIG(llt_v*(5-1)+idlocv)
2525 sig(6) = sig(6) + volsecnd * gbuf%SIG(llt_v*(6-1)+idlocv)
2526 ssp = ssp + volsecnd * lbuf%SSP(idlocv)
2536 mbufv => elbuf_tab(ngv)%BUFLY(1)%MAT(1,1,1)
2537 llt_v = iparg(2,ngv)
2538 uvar(5) = uvar(5) +volsecnd*mbufv%VAR(((5-1)*llt_v + idlocv))
2539 uvar(4) = uvar(4) +volsecnd*mbufv%VAR(((4-1)*llt_v + idlocv))
2540 uvar(3) = uvar(3) +volsecnd*mbufv%VAR(((3-1)*llt_v + idlocv))*mbufv%VAR(((4-1)*llt_v + idlocv))
2541 uvar(2) = uvar(2) +volsecnd*mbufv%VAR(((2-1)*llt_v + idlocv))*mbufv%VAR(((5-1)*llt_v + idlocv))
2542 uvar(1) = uvar(1) +volsecnd*mbufv%VAR(((1-1)*llt_v + idlocv))
2543 uvar_adv(1) = uvar_adv(1) +adv * mbufv%VAR(((1-1)*llt_v + idlocv))
2545 ELSEIF(mtn_==51)
THEN
2546 mbufv => elbuf_tab(ngv)%BUFLY(1)%MAT(1,1,1)
2547 llt_ = iparg(2,ngb(ib))
2548 llt_v = iparg(2,ngv)
2555 k1 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
2557 vfrac(itrimat) = mbufv%VAR(kv+idlocv)
2558 volsecnd51(itrimat) = vfrac(itrimat) * volsecnd
2559 volcell51(itrimat) = volcell51(itrimat) + volsecnd51(itrimat)
2561 uvar(1) = uvar(1) + mbufv%VAR((0*llt_v + idlocv)) * volsecnd
2562 uvar(2) = uvar(2) + mbufv%VAR((1*llt_v + idlocv)) * volsecnd
2563 uvar(3) = uvar(3) + mbufv%VAR((2*llt_v + idlocv)) * volsecnd
2564 uvar_adv(1) = uvar_adv(1) + mbufv%VAR((0*llt_v + idlocv)) * adv
2565 uvar_adv(2) = uvar_adv(2) + mbufv%VAR((1*llt_v + idlocv)) * adv
2566 uvar_adv(3) = uvar_adv(3) + mbufv%VAR((2*llt_v + idlocv)) * adv
2567 IF(iadv==1)print *,
"to do compute/get vfrac on face"
2569 DO ipos = 1 , m51_nvphas
2570 ko = ((m51_n0phas + (itrimat-1)*m51_nvphas ))
2571 k1 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
2574 uvar(k1+1) = uvar(k1+1) + volsecnd51(itrimat)
2576 uvar(k1+1) = uvar(k1+1) + volsecnd51(itrimat) * mbufv%VAR(kv+idlocv)
2577 uvar_adv(k1+1) = uvar_adv(k1+1) + adv * mbufv%VAR(kv+idlocv)
2578 IF(iadv==1)print *,
"to do compute/get vfrac on face"
2584#include "lockon.inc"
2594 k1 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
2596 mbufv%VAR(kv+idlocv) = mbufv%VAR(kv+idlocv) - volsecnd51(itrimat)
2599#include "lockoff.inc"
2603 IF(volcell==zero)cycle
2608 rho = (rho +iadv*rho_adv )/ volcell
2609 eint = (eint +iadv*eint_adv )/ volcell
2610 mom(1) = (mom(1) +iadv*mom_adv(1))/ volcell
2611 mom(2) = (mom(2) +iadv*mom_adv(2))/ volcell
2612 mom(3) = (mom(3) +iadv*mom_adv(3))/ volcell
2613 sig(:) = (sig(:) +iadv*sig_adv(:))/ volcell
2617 uvar(1) = (uvar(1)+ iadv*uvar_adv(1)) / volcell
2618 uvar(2) = uvar(2) / volcell
2619 uvar(3) = uvar(3) / volcell
2620 uvar(4) = uvar(4) / volcell
2621 uvar(5) = uvar(5) / volcell
2623 ELSEIF(mtn_==51)
THEN
2624 uvar(1) = (uvar(1) + iadv*uvar_adv(1)) / volcell
2625 uvar(2) = (uvar(2) + iadv*uvar_adv(2)) / volcell
2626 uvar(3) = (uvar(3) + iadv*uvar_adv(3)) / volcell
2628 ko = m51_n0phas + (itrimat-1)*m51_nvphas
2629 IF(volcell51(itrimat)/=zero)
THEN
2630 uvar(ko+01:ko+10) = (uvar(ko+01:ko+10) + iadv*uvar_adv(ko+01:ko+10)) / volcell51(itrimat)
2631 uvar(ko+12:ko+m51_nvphas) = (uvar(ko+12:ko+m51_nvphas) + iadv*uvar_adv(ko+12:ko+m51_nvphas)) / volcell51(itrimat)
2646 gbuf => elbuf_tab(ng)%GBUF
2648 gbuf%RHO(idloc) = rho
2649 gbuf%EINT(idloc) = eint
2650 gbuf%MOM(llt_*(1-1)+idloc) = mom(1)
2651 gbuf%MOM(llt_*(2-1)+idloc) = mom(2)
2652 gbuf%MOM(llt_*(3-1)+idloc) = mom(3)
2653 gbuf%SIG(llt_*(1-1)+idloc) = sig(1)
2654 gbuf%SIG(llt_*(2-1)+idloc) = sig(2)
2655 gbuf%SIG(llt_*(3-1)+idloc) = sig(3)
2656 gbuf%SIG(llt_*(4-1)+idloc) = sig(4)
2657 gbuf%SIG(llt_*(5-1)+idloc) = sig(5)
2658 gbuf%SIG(llt_*(6-1)+idloc) = sig(6)
2659 lbuf%SSP(idloc) = ssp
2669 llt_ = iparg(2,ngb(ib))
2671 mbuf => elbuf_tab(ngb(ib))%BUFLY(1)%MAT(1,1,1)
2674 rho10 = bufmat(iadbuf-1+11)
2675 rho20 = bufmat(iadbuf-1+12)
2682 IF(uvar(3) == zero) uvar(3) = rho10
2683 IF(uvar(2) == zero) uvar(2) = rho20
2684 mbuf%VAR((5-1)*llt_+idloc) = uvar(5)
2685 mbuf%VAR((4-1)*llt_+idloc) = uvar(4)
2686 mbuf%VAR((3-1)*llt_+idloc) = uvar(3)
2687 mbuf%VAR((2-1)*llt_+idloc) = uvar(2)
2688 mbuf%VAR((1-1)*llt_+idloc) = uvar(1)
2689 ELSEIF(mtn_==51)
THEN
2690 llt_ = iparg(2,ngb(ib))
2692 mbuf => elbuf_tab(ngb(ib))%BUFLY(1)%MAT(1,1,1)
2694 IF(volcell51(itrimat)/=zero)
THEN
2696 DO ipos=1,m51_nvphas
2697 k0 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
2699 mbuf%VAR(k1+idloc) = uvar(m51_n0phas+(itrimat-1)*m51_nvphas+ipos)
2703 k0 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
2705 mbuf%VAR(k1+idloc) = volcell51(itrimat)/volcell
2709 mbuf%VAR(k1+idloc) = volcell51(itrimat)
2712 k0 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
2714 mbuf%VAR(k1+idloc) = zero
2716 k0 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
2718 mbuf%VAR(k1+idloc) = zero
2737 1 elbuf_tab, ixs, bufmat, iparg, ipm,
2738 2 idloc , ng , brickid, vol
2752 gbuf => elbuf_tab(ng)%GBUF
2753 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
2754 gbuf%RHO(idloc) = gbuf%RHO(idloc) - rho_adv/volcell
2755 gbuf%EINT(idloc) = gbuf%EINT(idloc) - eint_adv/volcell
2756 gbuf%MOM(3*(idloc-1) +1) = gbuf%MOM(3*(idloc-1) +1) - mom_adv(1)/volcell
2757 gbuf%MOM(3*(idloc-1) +2) = gbuf%MOM(3*(idloc-1) +2) - mom_adv(2)/volcell
2758 gbuf%MOM(3*(idloc-1) +3) = gbuf%MOM(3*(idloc-1) +3) - mom_adv(3)/volcell
2759 gbuf%SIG(llt_*(1-1) +idloc) = gbuf%SIG(llt_*(1-1) +idloc) - sig_adv(1)/volcell
2760 gbuf%SIG(llt_*(2-1) +idloc) = gbuf%SIG(llt_*(2-1) +idloc) - sig_adv(2)/volcell
2761 gbuf%SIG(llt_*(3-1) +idloc) = gbuf%SIG(llt_*(3-1) +idloc) - sig_adv(3)/volcell
2762 gbuf%SIG(llt_*(4-1) +idloc) = gbuf%SIG(llt_*(4-1) +idloc) - sig_adv(4)/volcell
2763 gbuf%SIG(llt_*(5-1) +idloc) = gbuf%SIG(llt_*(5-1) +idloc) - sig_adv(5)/volcell
2764 gbuf%SIG(llt_*(6-1) +idloc) = gbuf%SIG(llt_*(6-1) +idloc) - sig_adv(6)/volcell
2769 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
2773 rho10 = bufmat(iadbuf-1+11)
2774 rho20 = bufmat(iadbuf-1+12)
2775 IF(uvar(3) == zero) uvar(3) = rho10
2776 IF(uvar(2) == zero) uvar(2) = rho20
2782 mbuf%VAR((1-1)*llt_+idloc) = uvar(1) - uvar_adv(1)/volcell
2792 1 elbuf_tab, ixs, bufmat, iparg, ipm,
2793 2 idloc , ng , brickid, vol
2797 ELSEIF(mtn_==51)
THEN
2808 if(itask==0 .and. dt1>zero)
then
2811 value(ib)=tmp22array(1,ib)
2817 cod1=tmp22array(1,ib)
2818 cod2=tmp22array(2,ib)
2819 cod3=tmp22array(3,ib)
2822 write(*,fmt=
'(A,I8,A,I8)')
"DEMERGING : id=", cod1,
" from idv:", cod2
2824 write(*,fmt=
'(A,I8,A,I8,A,I8)')
"DEMERGING : id=", cod1,
" from idv:", cod2,
" moved to", cod3
2826 write (*,fmt=
'(I10,A,F30.16,A,F30.16)') cod1,
" Vold=", tmp22array(4,ib),
" Vnew=", tmp22array(5,ib)
2827 write (*,fmt=
'(I10,A,F30.16,A,F30.16)') cod2,
" Vold=", tmp22array(6,ib),
" Vnew=", tmp22array(7,ib)
2828 write (*,fmt=
'(A,F30.16)')
" Number of access =", tmp22array(8,ib)
2833 if(
allocated(tmp22array))
deallocate(tmp22array)
2834 if(dt1>zero .and.
allocated(order) )
deallocate(order)
2845 IF(dt1==zero)nbl1 = 0
2851 IF( newinbuffer == 1 )
THEN
2862 gbuf => elbuf_tab(ng)%GBUF
2863 brick_list(nin,ib)%Vold_Scell = gbuf%VOL(idloc)
2894 mtn_ = iparg(1,ngb(ib))
2900 ii =
brick_list(nin,ib)%NODE(inod)%OLD_WhichCell
2904 IF(nbcut>2 .AND. m(9,9)==zero)m(9,9) =
brick_list(nin,ib)%POLY(jj)%Vnew
2911 IF(m(ii,jj)>zero)var=var+one
2914 ii=maxloc(
brick_list(nin,ib)%POLY(1:9)%OLD_Vnew,1)
2922 ELSEIF(var==two )
THEN
2955 ELSEIF(wascut == 0)
THEN
2958 m(1,mcell) =
brick_list(nin,ib)%POLY(mcell)%Vnew
2976 DO WHILE (icell<=ncell)
2978 IF (icell>ncell .AND. ncell/=0)icell=9
2984 vold_phase(1:4) = zero
2987 IF(m(ii,jj)==zero)cycle
2990 var = var + vi *vj / sum(m(ii,:))
3042 !------------------------------------------------------------
3048 debug_outp2 = .false.
3050 if(itask==0)
ALLOCATE (tmp22array(6,
nb))
3052 tmp22array(1:6,nbf:nbl)=zero
3056 debug_outp2 = .true.
3066 padjbrick =>
brick_list(nin,ib)%Adjacent_Brick(1:6,1:5)
3068 mbuf => elbuf_tab(ngb(ib))%BUFLY(1)%MAT(1,1,1)
3073 gbuf => elbuf_tab(ngb(ib))%GBUF
3074 lbuf => elbuf_tab(ngb(ib))%BUFLY(1)%LBUF(1,1,1)
3081 icellv =
brick_list(nin,ib)%SecndList%ICELLv(ic)
3092 nnodes =
brick_list(nin,ibv)%POLY(icellv)%NumNOD
3096 inod =
brick_list(nin,ibv)%POLY(icellv)%ListNodID(k1)
3097 fv_old =
brick_list(nin,ibv)%NODE(inod)%WhereWasMain !face
3098 IF (fv_old == 0)cycle
3100 IF (fv_old == fv)cycle
3103 IF(fv_old<=nv46)
THEN
3104 ibmo =
brick_list(nin,ibv)%Adjacent_Brick(fv_old,4)
3109 ibv =
brick_list(nin,ibv)%Adjacent_Brick(j1,4)
3110 ibmo =
brick_list(nin,ibv)%Adjacent_Brick(j2,4)
3114 lltm = iparg(2,ngb(ib))
3118 IF(numtarget>=2)print *,
"**inter22 - Warning Multiple targets",ixs(11,
brick_list(nin,ibv)%ID), icellv
3119 DO itarget=1,numtarget
3120 IF (
brick_list(nin,ibmo)%MergeTarget(3,itarget)==ibm)
THEN
3124 ibmo =
brick_list(nin,ibmo)%MergeTarget(3,itarget)
3125 print *,
"**inter22 : multiple targets", ixs(11,
brick_list(nin,ibv)%ID), icellv
3133 numsecnd2 = old_secndlist(nin,ibmo)%Num
3136 DO ic2 = 1, numsecnd2
3138 fv2 = old_secndlist(nin,ibmo)%FV(ic2)
3139 icellv2 = old_secndlist(nin,ibmo)%ICELLv(ic2)
3140 ibv2 = old_secndlist(nin,ibmo)%IBv(ic2)
3142 IF(fv2 /= fv_old )cycle
3149 nnodes2 = old_secndlist(nin,ibmo)%NumNOD_Cell(ic2)
3151 inod2 = old_secndlist(nin,ibmo)%ListNodID(ic2,k2)
3152 icell2 =
brick_list(nin,ibv2)%NODE(inod2)%WhichCell
3153 ibmcur =
brick_list(nin,ibv2)%POLY(icell2)%WhereIsMain(4)
3154 IF(ibmcur == ib) volsecnd = volsecnd + one/nnodes*
brick_list(nin,ibv2)%POLY(icell2)%Vnew
3155 volcell = volcell + one/nnodes*
brick_list(nin,ibv2)%POLY(icell2)%Vnew
3157 if (volsecnd == zero)cycle
3162 ratio = volsecnd/volcell
3164 volcell = ratio * old_secndlist(nin,ibmo)%VOL(ic2)
3166 gbufo => elbuf_tab(ngb(ibmo))%GBUF
3169 eint = volcell * gbufo%EINT(idlocb(ibmo
3170 rho = volcell * gbufo%RHO(idlocb(ibmo))
3171 mom(1) = volcell * gbufo%MOM(llto*(1-1) + idlocb(ibmo))
3172 mom(2) = volcell * gbufo%MOM(llto*(2-1) + idlocb(ibmo))
3173 mom(3) = volcell * gbufo%MOM(llto*(3-1) + idlocb(ibmo))
3175 sig(j) = volcell * gbufo%SIG(llto*(j-1)+idlocb(ibmo))
3177 gbuf%EINT(idlocb(ibm)) = (gbuf%EINT(idlocb(ibm)) * vold + eint) / (vold+volcell)
3178 gbuf%RHO(idlocb(ibm)) = (gbuf%RHO(idlocb(ibm)) * vold + rho) / (vold+volcell)
3179 gbuf%MOM(lltm*(1-1) + idlocb(ibm)) = (gbuf%MOM(lltm*(1-1) + idlocb(ibm)) * vold + mom(1)) / (vold+volcell)
3180 gbuf%MOM(lltm*(2-1) + idlocb(ibm)) = (gbuf%MOM(lltm*(2-1) + idlocb(ibm)) * vold + mom(2)) / (vold
3181 gbuf%MOM(lltm*(3-1) + idlocb(ibm)) = (gbuf%MOM(lltm*(3-1) + idlocb(ibm)) * vold + mom(3)) / (vold+volcell)
3191 gbuf%SIG(lltm*(j-1)+idlocb(ibm)) = (gbuf%SIG(lltm*(j-1)+idlocb(ibm)) * vold + sig(j)) / (vold+volcell)
3204 tmp22array(1,ibm)= ixs(11,
brick_list(nin,ib)%id)
3205 tmp22array(2,ibm)= ixs(11,
brick_list(nin,ibmo)%id)
3206 tmp22array(3,ibm)= ixs(11,
brick_list(nin,ibm)%id)
3207 tmp22array(4,ibm)=
brick_list(nin,ibm)%Vold_SCell
3208 tmp22array(5,ibm)=
brick_list(nin,ibm)%Vold_SCell +volcell
3209 tmp22array(6,ibm)= volcell
3215 mtn_ = iparg(1,ngb(ibmo))
3216 volcell51(1:trimat) = zero
3218 mbuf => elbuf_tab(ngb
3221 rho10 = bufmat(iadbuf-1+11)
3222 rho20 = bufmat(iadbuf-1+12)
3228 mbuf => elbuf_tab(ngb(ibm))%BUFLY(1)%MAT(1,1,1)
3229 mbufo => elbuf_tab(ngb(ibmo))%BUFLY(1)%MAT(1,1,1)
3230 llt_ = iparg(2,ngb(ibm))
3231 llt_o = iparg(2,ngb(ibmo))
3234 pvar => mbuf%VAR((5-1)*llt_ +idlocb(ibm))
3235 pvaro => mbufo%VAR((5-1)*llt_o+idlocb(ibmo))
3237 pvar = (pvar * vold + volcell * pvaro)/ (vold+volcell)
3238 pvar =
max(pvar,zero)
3241 pvar => mbuf%VAR((4-1)*llt_ +idlocb(ibm))
3242 pvaro => mbufo%VAR((4-1)*llt_o+idlocb(ibmo))
3244 pvar = (pvar * vold + volcell * pvaro)/ (vold+volcell)
3245 pvar =
max(pvar,zero)
3248 pvar => mbuf%VAR((3-1)*llt_ +idlocb(ibm
3249 pvaro => mbufo%VAR((3-1)*llt_o+idlocb(ibmo))
3250 alp = mbuf%VAR((4-1)*llt_ +idlocb(ibm))
3251 alpo = mbufo%VAR((4-1)*llt_o+idlocb(ibmo))
3253 pvar = (pvar*alp*vold+volcell*pvaro*alpo)
3254 IF(pvar>zero)pvar=pvar/(alp*vold+alpo*volcell)
3255 pvar =
max(pvar,zero)
3257 IF( pvar == zero) pvar = rho10
3260 pvar => mbuf%VAR((2-1)*llt_ +idlocb(ibm))
3261 pvaro => mbufo%VAR((2-1)*llt_o+idlocb(ibmo))
3262 alp = mbuf%VAR((5-1)*llt_ +idlocb(ibm))
3263 alpo = mbufo%VAR((5-1)*llt_o+idlocb(ibmo))
3265 pvar = (pvar*alp*vold+volcell*pvaro*alpo)
3266 IF(pvar>zero)pvar=pvar/(alp*vold+alpo*volcell)
3267 pvar =
max(pvar,zero)
3269 IF( pvar == zero) pvar = rho20
3272 pvar => mbuf%VAR((1-1)*llt_ +idlocb(ibm))
3273 pvaro => mbufo%VAR((1-1)*llt_o+idlocb(ibmo))
3275 pvar = (pvar * vold + volcell * pvaro)/ (vold+volcell)
3276 pvar =
max(pvar,zero)
3282 !appel
sigeps37 pour equilibre pression
3288 1 elbuf_tab, ixs, bufmat, iparg, ipm,
3289 2 idloc , ng , brickid, vol
3293 ELSEIF(mtn_==51)
THEN
3294 mbuf => elbuf_tab(ngb(ibm))%BUFLY(1)%MAT(1,1,1)
3295 llt_ = iparg(2,ngb(ibm))
3296 mbufo => elbuf_tab(ngb(ibmo))%BUFLY(1)%MAT(1,1,1)
3297 llt_o = iparg(2,ngb(ibmo))
3302 k0 = m51_n0phas + (itrimat-1)*m51_nvphas +ipos-1
3304 vfrac(itrimat) = mbufo%VAR(k+idlocb(ibmo))
3309 k0 = m51_n0phas + (itrimat-1)*m51_nvphas
3311 volcell51(itrimat) = volcell
3312 mbuf%VAR(k+idlocb(ibm)) = mbuf%VAR(k+idlocb(ibm)) + volcell51(itrimat)
3318 k0 = m51_n0phas + (itrimat-1)*m51_nvphas
3320 vfrac(itrimat) = mbuf%VAR(k+idlocb(ibm))
3321 IF(volcell51(itrimat)<=zero)cycle
3322 DO ipos = 1,m51_nvphas
3324 k2 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
3327 pvar => mbuf%VAR(k+idlocb(ibm))
3328 pvar = ( pvar * vfrac(itrimat)*vold + volcell51(itrimat)*mbufo%VAR(ko+idlocb(ibmo)) )
3329 pvar = pvar / (vfrac(itrimat)*vold + volcell51(itrimat))
3336 vold_l(itask,0,ibmo) = vold_l(itask,0,ibmo) + volcell
3337 vold_l(itask,1:trimat,ibmo) = vold_l(itask,1:trimat
3347 write (*,fmt=
'(A)')
" === LINK SWITCH ==="
3349 IF(tmp22array(1,ib)==0)cycle
3350 print *,
"brick target =", tmp22array(1,ib)
3351 print *,
"brick origin =", tmp22array(2,ib)
3352 print *,
"brick main =", tmp22array(3,ib)
3353 print *,
"adding",tmp22array(6,ib) ,
'to', tmp22array(4,ib)
3354 print *,
"updated target -old volume- =", tmp22array(5,ib)
3364 IF (vold_l(it,0,ib) == zero)cycle
3366 print *,
" brick ID =", ixs(11,
brick_list(nin,ib)%id)
3367 print *,
" removing ",vold_l(it,0,ib),
'from',
brick_list(nin,ib)%Vold_SCell
3368 print *,
" new origin volume =", ixs(11,
brick_list(nin,ib)%id)
3369 print *,
" %vold, %vnew " ,
brick_list(nin,ib)%Vold_SCell- vold_l(it,0,ib),
brick_list(nin,ib)%Vnew_SCell
3382 IF (vold_l(it,0,ib) == zero)cycle
3395 mtn_ = iparg(1,ngb(ib))
3397 mbuf => elbuf_tab(ngb(ib))%BUFLY(1)%MAT(1,1,1)
3398 llt_ = iparg(2,ngb(ib))
3401 k0 = m51_n0phas + (itrimat-1)*m51_nvphas +ipos-1
3403 mbuf%VAR(k+idlocb(ib)) = mbuf%VAR(k+idlocb(ib)) - vold_l(it,itrimat,ib)
3411 vold_l(it,0:
max(0,trimat),ib) = zero
3420 if(itask==0)
DEALLOCATE (tmp22array)
3430 padjbrick =>
brick_list(nin,ib)%Adjacent_Brick(1:6,1:5)
3441 ngv = padjbrick(j,2)
3442 idlocv = padjbrick(j,3)
3443 ibv = padjbrick(j,4)
3449 icellv =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%Adjacent_Cell(ic)
3451 IF(icellv == mcellv)cycle
3454 jv =
brick_list(nin,ibv)%POLY(icellv)%WhereIsMain(1)
3455 idm =
brick_list(nin,ibv)%POLY(icellv)%WhereIsMain(3)
3463 brick_list(nin,ib)%ADJ_ELEMS%ICELL(k) = icellv
3464 brick_list(nin,ib)%ADJ_ELEMS%SecndFACE(k) = jv
3466 padjbrickv =>
brick_list(nin,ibv)%Adjacent_Brick(1:6,1:5)
3469 ivv = padjbrick(j2,1)
3470 ngvv = padjbrick(j2,2)
3471 idlocvv = padjbrick(j2,3)
3472 ibvv = padjbrick(j2,4)
3473 ifvv = padjbrick(j2,5)
3479 nadjcellv =
brick_list(nin,ibvv)%POLY(mcellvv)%FACE(ifvv)%NAdjCell
3481 icv =
brick_list(nin,ibvv)%POLY(mcellvv)%FACE(ifvv)%Adjacent_Cell(k)
3482 IF(icv/=icellv)cycle
3487 brick_list(nin,ib)%ADJ_ELEMS%ICELL(k2) = icellv
3488 brick_list(nin,ib)%ADJ_ELEMS%SecndFACE(k2) = j2
3491 ELSEIF(ibvv == 0)
THEN
3497 brick_list(nin,ib)%ADJ_ELEMS%SecndFACE(k2) = j2
3519 brick_list(nin,ib)%POLY(1)%FACE(1:6)%NumPOINT=(/4,4,4,4,4,4/)
3522 DO WHILE (icell<=ncell)
3524 IF (icell>ncell .AND. ncell/=0)
THEN
3529 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%NumPOINT = 0
3535 brick_list(nin,ib)%POLY(icell)%FACE(jj)%NumPOINT = np
3536 nintp(jj,icell) = np-nn
3543 nn = sum( nnod(j,1:ncell) )
3546 np = sum( nintp(j,1:ncell) )
3548 brick_list(nin,ib)%POLY(9)%FACE(j)%NumPOINT = np + nn
3554 ! @33. locate
WHERE was
main for next cycle
3560 plistnodid(1)%p(1:8) =>
brick_list(nin,ib)%POLY(1)%ListNodID(1:8)
3561 plistnodid(2)%p(1:8) =>
brick_list(nin,ib)%POLY(2)%ListNodID(1:8)
3562 plistnodid(3)%p(1:8) =>
brick_list(nin,ib)%POLY(3)%ListNodID(1:8)
3563 plistnodid(4)%p(1:8) =>
brick_list(nin,ib)%POLY(4)%ListNodID(1:8)
3564 plistnodid(5)%p(1:8) =>
brick_list(nin,ib)%POLY(5)%ListNodID(1:8)
3565 plistnodid(6)%p(1:8) =>
brick_list(nin,ib)%POLY(6)%ListNodID(1:8)
3566 plistnodid(7)%p(1:8) =>
brick_list(nin,ib)%POLY(7)%ListNodID(1:8)
3567 plistnodid(8)%p(1:8) =>
brick_list(nin,ib)%POLY(8)%ListNodID(1:8)
3568 plistnodid(9)%p(1:8) =>
brick_list(nin,ib)%POLY(9)%ListNodID(1:8)
3575 pnodwasmain(1:8)%NodWasMain = 0
3576 pwherewasmain(1:8)%WhereWasMain = 0
3578 pnodwasmain(plistnodid(mcell)%p(j))%NodWasMain = 1
3581 DO WHILE (icell<=ncell)
3583 IF (icell>ncell .AND. ncell/=0)icell=9
3584 IF(icell == mcell)cycle
3585 ipos =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(1)
3589 pwherewasmain(plistnodid(icell)%p(j))%WhereWasMain = ipos
3601 iiad22(nin, ie) = ib
3608 mlw = iparg(1,ngb(ib))
3618 numsecnd = old_secndlist(nin,ib)%Num
3619 IF (numsecnd==0)cycle
3620 old_secndlist(nin,ib)%Num = 0
3621 old_secndlist(nin,ib)%NumSecndNodes = 0
3623 old_secndlist(nin,ib)%FM(j) = 0
3624 old_secndlist(nin,ib)%FV(j) = 0
3625 old_secndlist(nin,ib)%IV(j) = 0
3627 old_secndlist(nin,ib)%ICELLv(j) = 0
3628 old_secndlist(nin,ib)%VOL(j) = zero
3629 old_secndlist(nin,ib)%NumNOD_Cell(j) = 0
3643 brick_list(nin,ib)%OldMainStrongNode = inod_w
3650 lstilltruss = .true.
3653 IF( itask==0 .AND. ntrus/=0 )
THEN
3657 IF (mcell==0 ) cycle
3658 IF (.NOT.lstilltruss) cycle
3659 point0(1:3) =
brick_list(nin,ib)%POLY(mcell)%CellCenter(1:3)
3661 !loop on secnd cells to draw connexion
3663 DO isecnd=1,numsecnd
3664 ibv =
brick_list(nin,ib)%SecndList%IBV(isecnd)
3665 icellv =
brick_list(nin,ib)%SecndList%ICELLv(isecnd)
3666 pointtmp(1:3) =
brick_list(nin,ibv)%POLY(icellv)%CellCenter(1:3)
3671 print *,
"** Warning inter22 : no more truss in group to mark cell links"
3673 x(1:3,ixt(2,igrtruss(igr)%ENTITY(ii))) = point0(1:3)
3674 x(1:3,ixt(3,igrtruss(igr)%ENTITY(ii))) = pointtmp(1:3)
3677 write (*,fmt=
'(A,I10,A,I10,A,I10)') "set trus_id=
", IXT(NIXT,IGRTRUSS(IGR)%ENTITY(II)) ,
3678 . " main=
", ixs(11,brick_list(nin,ib)%id) ," secnd=
", ixs(11,brick_list(nin,ibv)%id)
3680 II = II + 1 !next truss
3684 !print *, "reset trus_id=", ixt(nixt,igrtruss(igr)%ENTITY(ii))
3685 x(1:3,ixt(2,igrtruss(igr)%ENTITY(ii))) = (/zero, zero, zero/)
3686 x(1:3,ixt(3,igrtruss(igr)%ENTITY(ii))) = (/ one, zero, zero/)
3700 brick_list(nin,ib)%POLY(icell)%DVOL(1) = zero
3703 DO WHILE (icell<=ncell)
3705 IF (icell>ncell .AND. ncell/=0)icell=9
3710 vsum(1) =
brick_list(nin,ib)%PCUT(icell)%Vel(1)
3711 vsum(2) =
brick_list(nin,ib)%PCUT(icell)%Vel(2)
3712 vsum(3) =
brick_list(nin,ib)%PCUT(icell)%Vel(3)
3720 dvol_predic = dt1*(vsum(1)*n_(1) + vsum(2)*n_(2) + vsum(3)*n_(3))
3721 brick_list(nin,ib)%POLY(icell)%DVOL(1) = dvol_predic
3756 icellv =
brick_list(nin,ib)%SecndList%ICELLv(ic)
3796 dvol_numeric = vnew-vold
3812 IF(abs(dvol_numeric) > ratio22*abs(dvol_predic) .AND. dvol_predic /= zero .AND. ratio22 < 1000 )
THEN
3813 IF((icode /= old_icode ) )
THEN
3827 gbuf => elbuf_tab(ng)%GBUF
3837 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
3843 k = llt * (m51_n0phas + (itrimat-1)*m51_nvphas +ipos-1)
3844 vfrac(itrimat) = mbuf%VAR(k+idloc)
3846 k = llt * (m51_n0phas + (itrimat-1)*m51_nvphas +ipos-1)
3847 volcell51_old(itrimat) = mbuf%VAR(k+idloc)
3848 mbuf%VAR(k+idloc) =
max(zero, (vnew-dvol_predic)*vfrac(itrimat) )
3849 volcell51(itrimat) = mbuf%VAR(k+idloc)
3872 dvol_numeric = vnew-vold
3875 print *,
"+------elem_id =",ixs(11,
brick_list(nin,ib)%id)
3876 print *,
"+--------old_icode =",old_icode
3877 print *,
"+--------icode =",icode
3878 print *,
"+--------dvol_prediction =",
brick_list(nin,ib)%dvol
3879 print *,
"+--------dvol_numeric =",vnew-vold
3880 print *,
"+--------vnew =",vnew
3881 print *,
"+--------vold =",vold ,
"->",
brick_list(nin,ib)%Vold_SCell
3906 gbuf => elbuf_tab(ngb(ib))%GBUF
3907 IF(psubvold>zero)gbuf%VOL(idlocb(ib)) = psubvold
3919 plistnodid(1)%p(1:8) =>
brick_list(nin,ib)%POLY(1)%ListNodID(1:8)
3920 plistnodid(2)%p(1:8) =>
brick_list(nin,ib)%POLY(2)%ListNodID(1:8)
3921 plistnodid(3)%p(1:8) =>
brick_list(nin,ib)%POLY(3)%ListNodID(1:8)
3922 plistnodid(4)%p(1:8) =>
brick_list(nin,ib)%POLY(4)%ListNodID(1:8)
3923 plistnodid(5)%p(1:8) =>
brick_list(nin,ib)%POLY(5)%ListNodID(1:8)
3924 plistnodid(6)%p(1:8) =>
brick_list(nin,ib)%POLY(6)%ListNodID(1:8)
3925 plistnodid(7)%p(1:8) =>
brick_list(nin,ib)%POLY(7)%ListNodID(1:8)
3926 plistnodid(8)%p(1:8) =>
brick_list(nin,ib)%POLY(8)%ListNodID(1:8)
3927 plistnodid(9)%p(1:8) =>
brick_list(nin,ib)%POLY(9)%ListNodID(1:8)
3930 padjbrick =>
brick_list(nin,ib)%Adjacent_Brick(1:6,1:5)
3937 gbuf => elbuf_tab(ngb(ib))%GBUF
3938 vol = gbuf%VOL(idlocb(ib))
3941 write (*,fmt=
'(A,I12)')
"+=== BRICK ID==="
3943 write (*,fmt=
'(A )')
"| uncut: "
3944 write (*,fmt=
'(A,1F30.20)')
"| volume: ", vol
3945 write (*,fmt='(a,1f30.20)
') "| ext. volume: ", brick_list(nin,ib)%Vnew_Scell
3946 write (*,FMT='(a,1f30.20)
') "| masse: ", GBUF%VOL(IDLOCB(IB)) * GBUF%RHO(IDLOCB(IB))
3947 if(brick_list(nin,ib)%SecndList%Num>0)then
3948 do j=1,brick_list(nin,ib)%SecndList%Num
3949 write (*,FMT='(a )
') "| secnd list : "
3950 write (*,FMT='(a,i10 )
') "| + J : ", brick_list(nin,ib)%SecndList%FM(j)
3951 write (*,FMT='(a,i10 )
') "| + IB : ", brick_list(nin,ib)%SecndList%IBv(j)
3952 write (*,FMT='(a,i10 )
') "| + brickID : ", ixs(11,brick_list(nin,ib)%SecndList%IV(j))
3957 write (*,FMT='(a,1f30.20)
') "| volume: ", vol
3958 write (*,FMT='(a,6f30.20)
') "| faces: ", F(1:6,IB)
3959 write (*,FMT='(a,1f30.20)
') "| masse: ", GBUF%VOL(IDLOCB(IB)) * GBUF%RHO(IDLOCB(IB))
3960 DO WHILE (ICELL<=NCELL) ! loop on polyhedron {1:NCELL} U {9}
3962.AND.
IF (ICELL>NCELL NCELL/=0)ICELL=9
3963 debugMAINSECND = '.........|
'
3964 mnod = BRICK_LIST(NIN,IB)%POLY(icell)%NumNOD
3965 write (*,FMT='(a )
') "|"
3967 write (*,FMT='(a,i1,a,a,a1,i2,a,a6)
')
3968 . "+== ICELL= ", ICELL , ", SecType=", BRICK_LIST(NIN,IB)%SECTYPE(ICELL) ,
3969 . "(", BRICK_LIST(NIN,IB)%SecID_Cell(ICELL) , ") - ", Char1
3971 write (*,FMT='(a,a6)
') "+== REMAINING POLYHEDRON - ", Char1
3974 write (*,FMT='(a )
') "| |"
3975 write (*,FMT='(a,i1)
') "| +===Main/Secnd=", pIsMain(ICELL)%IsMain
3976 write (*,FMT='(a,f30.20)
') "| +======SUVOLUMES=", pSUBVOL(ICELL)%Vnew
3977 write (*,FMT='(a,6f30.20)
') "| +=======SUBFACES=", BRICK_LIST(NIN,IB)%POLY(ICELL)%FACE(1:6)%Surf
3978 write (*,FMT='(a,f30.20)')
"| +=======CUT AERA=",
brick_list(nin,ib)%PCUT(icell)%SCUT(1)
3979 write (*,fmt=
'(A,A,I2)')
"| +======NUM POINT=",
" ",
brick_list(nin,ib)%POLY(icell)%NumPOINT
3980 write (*,fmt=
'(A,A,I1,A,8I12)')
"| +======NODE LIST=",
3981 .
" (",mnod,
") ", plistnodid(icell)%p(1:mnod)
3982 write (*,fmt=
'(A,A,8I12)')
"| | radIDs=",
3983 .
" ", ixs(1+plistnodid(icell)%p(1:mnod),id)
3984 write (*,fmt=
'(A,A,8I12)')
"| | userIDs=",
3985 .
" ", itab(ixs(1+plistnodid(icell)%p(1:mnod),id))
3986 iad2 = ale_connectivity%ee_connect%iad_connect(brickid)
3987 lgth2 = ale_connectivity%ee_connect%iad_connect(brickid+1) -
3988 . ale_connectivity%ee_connect%iad_connect(brickid)
3989 If(sum(iabs(ale_connectivity%ee_connect%connected(iad2:iad2 + lgth2 - 1)))/=0)
then
3990 write (*,fmt=
'(A,6I10)')
"| +===Adj Brick(i)=", padjbrick(1:6,1)
3992 IF( padjbrick(j,1)/=0 )
THEN
3993 write (*,fmt=
'(A,6I10)')
"| +===Adj Brick(u)=", ixs(11,padjbrick(j,1))
3997 nadjcell =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell
3999 write (*,fmt=
'(A,I1,A,5I3)')
"| +======Adj Cells, face=",j,
" :",
4000 .
brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(1:nadjcell)
4005 write (*,fmt=
'(A )') "
"
4007.AND.
if(itask==0debug_outp)then
4008 write (*,FMT='(A )') " ----sini22_end----
"
4009 write (*,FMT='(A )') " "
4011 endif! (IBUG22_sinit/=0)
4013 !------------------------------------------------------------!
4014 ! @44. DEBUG - WRITE CUT CELL BUFFER !
4015 !------------------------------------------------------------!
4016 ! CALL WRITE_CUT_CELL_BUFFER() !post/debug
4018 !------------------------------------------------------------!
4019 ! @45. SUPERCELL CENTERS !
4020 !------------------------------------------------------------!
4022 NCELL = BRICK_LIST(NIN,IB)%NBCUT
4023 NumSECND = BRICK_LIST(NIN,IB)%SecndList%Num
4024 MainID = BRICK_LIST(NIN,IB)%mainID
4025 IF (MainID ==0) CYCLE
4026 VolCELL = BRICK_LIST(NIN,IB)%POLY(mainID)%Vnew
4027 VOL = VolCELL !cumul
4028 pPOINT(1:3) = BRICK_LIST(NIN,IB)%POLY(mainID)%CellCenter(1:3) * VolCELL
4030 ICELLv = BRICK_LIST(NIN,IB)%SecndList%ICELLv(IC)
4031 IBv = BRICK_LIST(NIN,IB)%SecndList%IBv(IC)
4032 VolCELL = BRICK_LIST(NIN,IBv)%POLY(ICELLv)%Vnew
4033 Point0(1:3) = BRICK_LIST(NIN,IBv)%POLY(ICELLv)%CellCenter(1:3)
4034 pPOINT(1) = pPOINT(1) + VolCELL * Point0(1)
4035 pPOINT(2) = pPOINT(2) + VolCELL * Point0(2)
4036 pPOINT(3) = pPOINT(3) + VolCELL * Point0(3)
4039 pPOINT(1) = pPOINT(1) / VOL
4040 pPOINT(2) = pPOINT(2) / VOL
4041 pPOINT(3) = pPOINT(3) / VOL
4042 BRICK_LIST(NIN,IB)%SCellCenter(1:3) = pPOINT(1:3)
4045 !------------------------------------------------------------!
4046 ! @46. MARK SUPER-CELL CENTERS WITH ORPHAN NODES !
4047 !------------------------------------------------------------!
4049 IF(IPARI(70)/=0)THEN
4050 NNODES = IGRNOD(IPARI(70))%NENTITY
4051 !!!WRITE(*,*)(ITAB(IBUFSSG(J)),J=IAD0,IAD0+NNODES-1)
4052.AND.
IF( ITASK==0 NNODES/=0 )THEN
4053 II = 1 ! first node of group node
4055 MCELL = BRICK_LIST(NIN,IB)%mainID
4056 IF (MCELL==0 ) CYCLE
4057.NOT.
IF (lStillNode) CYCLE
4058 Point0(1:3) = BRICK_LIST(NIN,IB)%SCellCenter(1:3)
4060 lStillNode = .FALSE.
4061 print *, "** warning inter22 : no more node in group to mark cell center. last one was
" ,
4062 . ITAB(IGRNOD(IPARI(70))%ENTITY(NNODES))
4065 X(1:3,IGRNOD(IPARI(70))%ENTITY(II)) = Point0(1:3)
4066 if(IBUG22_OrphanNodes == 1)then
4067 write (*,FMT='(A,I10,A,I10,A,I10)')"set orphan_node_id=
",ITAB(IGRNOD(IPARI(70))%ENTITY(II))
4069 II = II + 1 !next node
4072 !print *, "reset sphcel_id=
", IXT(NIXT,IGRNOD(IPARI(70))%ENTITY(II))
4073 X(1:3,IGRNOD(IPARI(70))%ENTITY(II)) = (/ZERO, ZERO, ZERO/)
4078 !------------------------------------------------------------!
4079 ! @47. UNCUT CELLS + POLY 9 : CENTERS !
4080 !------------------------------------------------------------!
4081 !FOR UNCUT BRICKS, Centers for polyehedra faces computed in i22subvol
4083 NCELL = BRICK_LIST(NIN,IB)%NBCUT
4085 IE = BRICK_LIST(NIN,IB)%ID
4086 NC(1:8) = IXS(2:9,IE)
4088 BRICK_LIST(NIN,IB)%POLY(1)%FACE(J)%Center(1) = FOURTH * SUM( X(1, NC(ICF(1:4,J)) ) )
4089 BRICK_LIST(NIN,IB)%POLY(1)%FACE(J)%Center(2) = FOURTH * SUM( X(2, NC(ICF(1:4,J)) ) )
4090 BRICK_LIST(NIN,IB)%POLY(1)%FACE(J)%Center(3) = FOURTH * SUM( X(3, NC(ICF(1:4,J)) ) )
4093 !simplification, car approximation precendente invalide lorsque limit(FACE9) = 0
4094 IE = BRICK_LIST(NIN,IB)%ID
4095 NC(1:8) = IXS(2:9,IE)
4097 !ICELL 9 only since polyhedra face centers were computed in i22subvol.
4098 ! Poly9 is complementary polyhedron, it is built without graph but deduced by boolean operation from full brick.
4099 ! its face centers must be computed to display face center (velocity post-treatment)
4100 ! face center are only known for cut polyhedra (A & C below), center for poly9 must be deduced (poly B below)
4103 ! !------------+-------!
4107 ! ! | ! Ii : intersection points
4108 ! ! I4 B | C ! A,C : cut polyhedra
4109 ! !\ | ! B : complemntary polyhedron
4110 ! ! \ | ! Ca,Cb,Cc : face centers for each A,B,C polyhedra
4111 ! ! \ | ! Npa,Npb,Npc : number of points for polygon on face
4113 ! !----+-------|-------!
4117 ! Cb = (N4+I1+I2+I3+I4)/5
4118 ! Cc = (N2+N3+I2+I3)/4
4119 ! 3Ca + 5Cb + 4Cc = Sum(Ni) + 2 Sum(Ii)
4120 ! => poly9 C9 = [-Npa.Ca -Npc.Cc + Sum(Ni) +2.Sum(Ii)] / Np9
4124 FACE = BRICK_LIST(NIN,IB)%POLY(9)%FACE(J)%Surf
4125 NP_(9) = BRICK_LIST(NIN,IB)%POLY(9)%FACE(J)%NumPOINT
4127.OR.
IF(ABS(FACE)<=EM10 NP_(9)==0)THEN
4128 BRICK_LIST(NIN,IB)%POLY(9)%FACE(J)%Center(1:3) = ZERO
4130 NCELL = BRICK_LIST(NIN,IB)%NBCUT
4132 NP_(ICELL) = BRICK_LIST(NIN,IB)%POLY(ICELL)%FACE(J)%NumPOINT
4133 Center(1:3,ICELL) = BRICK_LIST(NIN,IB)%POLY(ICELL)%FACE(J)%Center(1:3)
4135 !NP_ is number of points (intersection + nodes)
4136 ! pPoint is sum of nodes
4137 !CUT_point is sum of intersection points
4138 ! Center : are face center
4139 ! Point0 : is center of poly 9
4141 NP_(9) = BRICK_LIST(NIN,IB)%POLY(9)%FACE(J)%NumPOINT
4142 pPOINT(1) = SUM( X(1, NC(ICF(1:4,J)) ) )
4143 pPOINT(2) = SUM( X(2, NC(ICF(1:4,J)) ) )
4144 pPOINT(3) = SUM( X(3, NC(ICF(1:4,J)) ) )
4145 CUT_point(1:3) = BRICK_LIST(NIN,IB)%POLY(9)%FACE(J)%Center(1:3) !stored there in i22subvol.F it is SUM(cutpoints on the face J)
4146 Point0(1) = pPOINT(1) + TWO*CUT_point(1)
4147 . - Np_(1)*Center(1,1)- Np_(2)*Center(1,2)- Np_(3)*Center(1,3)- Np_(4)*Center(1,4)
4148 . - Np_(5)*Center(1,5)- Np_(6)*Center(1,6)- Np_(7)*Center(1,7)- Np_(8)*Center(1,8)
4149 Point0(2) = pPOINT(2) + TWO*CUT_point(2)
4150 . - Np_(1)*Center(2,1)- Np_(2)*Center(2,2)- Np_(3)*Center(2,3)- Np_(4)*Center(2,4)
4151 . - Np_(5)*Center(2,5)- Np_(6)*Center(2,6)- Np_(7)*Center(2,7)- Np_(8)*Center(2,8)
4152 Point0(3) = pPOINT(3) + TWO*CUT_point(3)
4153 . - Np_(1)*Center(3,1)- Np_(2)*Center(3,2)- Np_(3)*Center(3,3)- Np_(4)*Center(3,4)
4154 . - Np_(5)*Center(3,5)- Np_(6)*Center(3,6)- Np_(7)*Center(3,7)- Np_(8)*Center(3,8)
4155 Point0(1:3) = Point0(1:3) / NP_(9)
4156 BRICK_LIST(NIN,IB)%POLY(9)%FACE(J)%Center(1:3) = Point0(1:3)
4157 !print *, "poly9 center, ixs(11,ie), face j
", ixs(11,IE), J
4158 !print *, BRICK_LIST(NIN,IB)%POLY(9)%FACE(J)%Center(1:3)
4166 !------------------------------------------------------------!
4167 ! @48. MARK CELL CENTERS WITH ORPHAN NODES !
4168 !------------------------------------------------------------!
4170 IF(IPARI(81)/=0)THEN
4171 NNODES = IGRNOD(IPARI(81))%NENTITY
4172 !!!WRITE(*,*)(ITAB(IBUFSSG(J)),J=IAD0,IAD0+NNODES-1)
4173.AND.
IF( ITASK==0 NNODES/=0 )THEN
4174 II = 1 ! first node of group node
4177 NCELL = BRICK_LIST(NIN,IB)%NBCUT
4178 DO WHILE (ICELL<=NCELL) ! loop on polyhedron {1:NCELL} U {9}
4180.AND.
IF (ICELL>NCELL NCELL/=0)ICELL=9
4181.NOT.
IF (lStillNode) CYCLE
4182 Point0(1:3) = BRICK_LIST(NIN,IB)%POLY(ICELL)%CellCenter(1:3)
4184 lStillNode = .FALSE.
4185 print *, "** warning inter22 : no more node in group to mark cell center
",
4186 . ITAB(IGRNOD(IPARI(81))%ENTITY(NNODES))
4189 BRICK_LIST(NIN,IB)%POLY(ICELL)%ID_FREE_NODE = IGRNOD(IPARI(81))%ENTITY(II)
4190 X(1:3,IGRNOD(IPARI(81))%ENTITY(II)) = Point0(1:3)
4191 if(IBUG22_OrphanNodes == 1)then
4192 write (*,FMT='(A,I10,A,I10,A,I10)')"set orphan_node_id=
",
4193 . ITAB(IGRNOD(IPARI(81))%ENTITY(II)),"in brick_id=
",ixs(11,brick_list(nin,ib)%id)
4195 II = II + 1 !next node
4199 !print *, "reset sphcel_id=
", IXT(NIXT,IGRNOD(IPARI(81))%ENTITY(II))
4200 X(1:3,IGRNOD(IPARI(81))%ENTITY(II)) = ZERO
4206 !------------------------------------------------------------!
4207 ! @49. MARK FACE CENTERS WITH ORPHAN NODES !
4208 !------------------------------------------------------------!
4209 IF(IPARI(82)/=0)THEN
4210 NNODES = IGRNOD(IPARI(82))%NENTITY
4212 II = 1 ! first node of group node
4214 IE = BRICK_LIST(NIN,IB)%ID
4216 NCELL = BRICK_LIST(NIN,IB)%NBCUT
4217 DO WHILE (ICELL<=NCELL) ! loop on polyhedron {1:NCELL} U {9}
4219.AND.
IF (ICELL>NCELL NCELL/=0)ICELL=9
4220.NOT.
IF(lStillNode) CYCLE
4223 lStillNode = .FALSE.
4224 print *, "** warning inter22 : no more node in group to mark face centers.
" ,
4225 . ITAB(IGRNOD(IPARI(82))%ENTITY(NNODES))
4228 NODE_ID = IGRNOD(IPARI(82))%ENTITY(II)
4229 X(1:3,NODE_ID) = BRICK_LIST(NIN,IB)%POLY(ICELL)%FACE(J)%Center(1:3)
4230 II = II + 1 !next node
4240 ! id = brick_list(nin,ib)%id
4241 ! print *, "ixs =
", ixs(11,id)
4242 ! print *, "nbcut =
", brick_list(1,ib)%nbcut
4243 ! print *, "sectype1 =
", brick_list(1,ib)%sectype(1)
4244 ! print *, "sectype2 =
", brick_list(1,ib)%sectype(2)
4245 ! print *, "---------------------
"
4249 !------------------------------------------------------------!
4251 !------------------------------------------------------------!
4252 IF(ALLOCATED(debugMAINSECNDv))DEALLOCATE (debugMAINSECNDv)
4253 IF(ALLOCATED(IsMainV))DEALLOCATE (IsMainV)
4254 IF(ALLOCATED(F))DEALLOCATE (F)
4255 IF(ALLOCATED(VOL51))DEALLOCATE (VOL51,VOL51v)
4256 IF(ALLOCATED(ORIGIN_DATA))DEALLOCATE (ORIGIN_DATA)
4257 IF(ALLOCATED(DESTROY_DATA))DEALLOCATE (DESTROY_DATA)
4258 IF(ALLOCATED(Norigin))DEALLOCATE (Norigin)