38 . IXS ,IXTG ,V ,IPARG ,ELBUF_TAB,
59#include "implicit_f.inc"
68#include "subvolumes.inc"
73 INTEGER,
INTENT(IN) :: NPTS
74 my_real,
INTENT(IN) :: p(3,npts)
82 INTEGER :: NIN, ITASK,IbugANIM22, IXS(NIXS,*), IPARI(48:50),
83 . ITAB(*),IXTG(NIXTG,*), IPARG(NPARG,*)
84 my_real,
intent(inout),
TARGET ::
85 . x(3,*),v(3,*),w(3,*)
86 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
88 TYPE (GROUP_) ,
DIMENSION(NGRSH3N) :: IGRSH3N
92 INTEGER I, J, K,N, IAD(7), NBCUT, ICUT(8,7), IB, ICELL, NTRUS,INOD,
93 . IEDG(6) , KK , II , IAD0, IDSPRI, SECID, Fa(0:6),
94 .
id, icode, idble,m, ie, nbf, nbl,nnod, mnod, nintpoint, m_sum,numpt,igr
96 . cutpoint(3), cutcoor, vmin, vmax, vol, vol1, vol2
97 CHARACTER*14 SECTYPE, SECTYPE2
98 my_real :: vF(1:3,0:6)
101 my_real ,
POINTER :: pFACE0
105 my_real,
DIMENSION(:,:),
POINTER :: pcut
107 TYPE(
poly_entity),
DIMENSION(:),
POINTER :: pSUBVOL,pNNodCell,pNPointCell
108 TYPE(NODE_ENTITY),
DIMENSION(:),
POINTER :: pWhichCellNod
109 my_real,
DIMENSION(:) ,
POINTER :: pvol
110 my_real,
DIMENSION(:) ,
POINTER :: a1,a2,a3,a4,a5,a6
111 my_real :: wa1(3),wa2(3),wa3(3),wa4(3),wa5(3),wa6(3)
112 my_real :: wn1(3),wn2(3),wn3(3),wn4(3),wn5(3),wn6(3)
113 my_real :: wf1(3),wf2(3),wf3(3),wf4(3),wf5(3),wf6(3) , wf0(3)
114 my_real,
DIMENSION(:) ,
POINTER :: n1,n2,n3,n4 ,n5,n6,n7,n8, nn
115 my_real :: c(1:3,0:6), scut, ctmp(3), valtmp(3)
116 my_real :: diag1(3), diag2(3), uncutvol, z(3,6), volratiomin
118 integer :: pNNodCell_bak(2), EdgNod1, EdgNod2
119 INTEGER :: Cod1, , Cod1_bis, Cod2_bis
120 LOGICAL :: bAMBIGOUS, IsSH3N, bTWICE
121 INTEGER :: INodTAG(8), IEtab(8),IEnod(1:4), IPCUT, ICRIT,ISHELL,NSH3N, NTRIA(1:3),NCELL
122 my_real :: pcut_vect(1:3,4), ievect(1:3,8), criteria(2), pt(3,3), volratio,
norm,dist,tmp(3),scut1,scut2,beta
124 INTEGER :: nFACE, IPOS, iCUTe(2,12), iPOSe(12), tagEDG, iCOMPL
125 INTEGER :: EdgePos(1:16,2), EdgeList(1:16)
126 INTEGER :: ITAG(1:8),NFL,NEL,NEL_B,NG,IDLOC
128 CHARACTER*14 :: tmp_SECTYPE(8)
129 INTEGER :: tmp_SecID_CELL(8),tmp_NumNOD(8),tmp_NumPOINT(8),NTAG
132 TYPE(CUT_PLANE)tmpCUT(8)
140 print *,
"================================="
141 print *,
"======== SUBVOL ==========="
142 print *,
"================================="
151 nbf = 1+itask*
nb/nthread
152 nbl = (itask+1)*
nb/nthread
157 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Center(1) = zero
158 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Center(2) = zero
159 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Center(3) = zero
165 IF(icode==idble)btwice = .true.
170 psubvol(1:9)%Vnew = zero
171 pnnodcell(1:9) =>
brick_list(nin,ib)%POLY(1:9)
172 pnnodcell(1:9)%NumNOD = 0
173 pnpointcell(1:9) =>
brick_list(nin,ib)%POLY(1:9)
174 pnpointcell(1:9)%NumPOINT = 0
186 brick_list(nin,ib)%POLY(1:9)%FACE0%Surf = zero
188 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Surf = zero
193 pwhichcellnod(1:8) =>
brick_list(nin,ib)%NODE(1:8)
194 pwhichcellnod(1:8)%WhichCell = 0
196 edgepos(1:16,1:2) = 0
199 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Vel(1) = zero
200 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Vel(2) = zero
201 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Vel(3) = zero
216 IF(sectype(1:5)==
'PENTA')
THEN
219 IF(sectype(1:5)==
'PENTA')
THEN
220 IF (cod1==10 .AND. cod2==17 )
THEN
224 ELSEIF (cod1==11 .AND. cod2==14 )
THEN
228 ELSEIF (cod1==12 .AND. cod2==19 )
THEN
232 ELSEIF (cod1==13 .AND. cod2==16 )
THEN
236 ELSEIF (cod1==15 .AND. cod2==18 )
THEN
240 ELSEIF (cod1== 09 .AND. cod2==20 )
THEN
248 IF(.NOT.bambigous)
THEN
256 iad(1:4) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,4)/)
260 IF(
edge_list(nin,iad(k))%NBCUT > 1 .AND. gcorner(k,secid) > 0)icut(1,k) = 2
262 ietab(k) =
edge_list(nin,iad(k))%CUTSHELL(icut(1,k))
263 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(icut(1,k))
264 cutpoint(1:3) = x(1:3,
edge_list(nin,iad(k))%NODE(1) ) + cutcoor * (
edge_list(nin,iad(k))%VECTOR(1:3))
265 edge_list(nin,iad(k))%CUTPOINT(1:3,icut(1,1)) = cutpoint(1:3)
267 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,icut(1,1))
268 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,icut(1,2))
269 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,icut(1,3))
270 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,icut(1,4))
271 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/),c(1:3, 0 ))
273 pcut_vect(1:3,1) = vf(:,0) / sqrt(sum(vf(:,0)*vf(:,0)))
276 iad(1:4) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,4)/)
279 IF(
edge_list(nin,iad(k))%NBCUT > 1 .AND. gcorner(k,secid) > 0)icut(2,k) = 2
281 ietab(4+k) =
edge_list(nin,iad(k))%CUTSHELL(icut(2,k))
282 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(icut(2,k))
283 cutpoint(1:3) = x(1:3,
edge_list(nin,iad(k))%NODE(1) ) + cutcoor * (
edge_list(nin,iad(k))%VECTOR(1:3))
284 edge_list(nin,iad(k))%CUTPOINT(1:3,icut(2,1)) = cutpoint(1:3)
286 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,icut(2,1))
287 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,icut(2,2))
288 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,icut(2,3))
289 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,icut(2,4))
290 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/),c(1:3, 0 ))
292 pcut_vect(1:3,2) = vf(:,0) / sqrt(sum(vf(:,0)*vf(:,0)))
295 iad(1:4) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,4)/)
299 IF(
edge_list(nin,iad(k))%NBCUT > 1 .AND. gcorner
301 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(icut(1,k))
302 cutpoint(1:3) = x(1:3,
edge_list(nin,iad(k))%NODE(1) ) + cutcoor * (
edge_list(nin,iad(k))%VECTOR(1:3))
303 edge_list(nin,iad(k))%CUTPOINT(1:3,icut(1,1)) = cutpoint(1:3)
305 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,icut(1,1))
306 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,icut(1,2))
307 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,icut(1,3))
308 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,icut(1,4))
309 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/),c(1:3, 0 ))
311 pcut_vect(1:3,3) = vf(:,0) / sqrt(sum(vf(:,0)*vf(:,0)))
314 iad(1:4) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,4)/)
318 IF(
edge_list(nin,iad(k))%NBCUT > 1 .AND. gcorner(k,secid) > 0)icut(2,k
320 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(icut(2,k))
321 cutpoint(1:3) = x(1:3,
edge_list(nin,iad(k))%NODE(1) ) + cutcoor * (
edge_list(nin,iad(k))%VECTOR(1:3))
322 edge_list(nin,iad(k))%CUTPOINT(1:3,icut(2,1)) = cutpoint(1:3)
324 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,icut(2,1))
325 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,icut(2,2))
326 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,icut(2,3))
327 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,icut(2,4))
328 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/),c(1:3, 0 ))
330 pcut_vect(1:3,4) = vf(:,0) / sqrt(sum(vf(:,0)*vf(:,0)))
336 ienod(3:4)=irect_l(3:4,ie)
337 IF(ienod(3)==ienod(4))
THEN
339 diag1(1:3) = irect_l((/5,9,13/),ie) - irect_l((/6,10,14/),ie)
340 diag2(1:3) = irect_l((/5,9,13/),ie) - irect_l((/7,11,15/),ie)
341 ievect(1,i) = + diag1(2)*diag2(3) - diag1(3)*diag2(2)
342 ievect(2,i) = + diag1(3)*diag2(1) - diag1(1)*diag2(3)
343 ievect(3,i) = + diag1(1)*diag2(2) - diag1(2)*diag2(1)
344 ievect(1:3,i) = half * ievect(1:3,i) / sqrt(sum( ievect(1:3,i
347 diag1(1:3) = irect_l((/5, 9,13/),ie) - irect_l((/7,11,15/),ie)
348 diag2(1:3) = irect_l((/6,10,14/),ie) - irect_l((/8,12,16/),ie)
349 ievect(1,i) = + diag1(2)*diag2(3) - diag1(3)*diag2(2)
350 ievect(2,i) = + diag1(3)*diag2(1) - diag1(1)*diag2(3)
351 ievect(3,i) = + diag1(1)*diag2(2) - diag1(2)*diag2(1)
352 ievect(1:3,i) = half * ievect(1:3,i) / sqrt(sum( ievect(1:3,i) * ievect(1:3,i) ))
362 criteria(icrit) = criteria(icrit) + abs( sum(ievect(1:3,(ipcut-1)*4+j)*pcut_vect( 1:3 , (icrit-1)*2 + ipcut) ) )
369 IF (criteria(1) > criteria(2))
THEN
371 ELSEIF(criteria(2) > criteria(1))
THEN
373 brick_list(nin,ib)%SecID_CELL(1:2) = (/ cod1_bis, cod2_bis /)
374 brick_list(nin,ib)%SECTYPE(1) = strcode(cod1_bis)
375 brick_list(nin,ib)%SECTYPE(2) = strcode(cod2_bis)
396 IF(
id>nfl.AND.
id<=nfl+nel_b)
THEN
398 uncutvol = elbuf_tab(ng)%GBUF%VOL(idloc)
418 IF(sectype(1:5)==
'TETRA')
THEN
421 nnod = n_tetra+c_tetra
423 ELSEIF(sectype(1:5)==
'PENTA')
THEN
426 nnod = n_penta+c_penta
428 ELSEIF(sectype(1:5)==
'POLY3')
THEN
431 nnod = n_poly3+c_poly3
433 ELSEIF(sectype(1:5)==
'HEXAE')
THEN
436 nnod = n_hexae+c_hexae
438 ELSEIF(sectype(1:6)==
'POLY4 ')
THEN
441 nnod = n_poly4+c_poly4
443 ELSEIF(sectype(1:6)==
'POLY4A')
THEN
446 nnod = n_poly4a+c_poly4a
448 ELSEIF(sectype(1:6)==
'POLY4B')
THEN
451 nnod = n_poly4b+c_poly4b
453 ELSEIF(sectype(1:5)==
'POLYC')
THEN
456 nnod = n_polyc+c_polyc
460 nintpoint = nintpoint + ntrus
461 iad(1:ntrus) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,ntrus)/)
462 iad(ntrus+1) = iad(1)
464 edgelist(iabs(gcorner(k,secid))) = edgelist(iabs(gcorner(k,secid))) + 1
472 tagedg = gcorner(k,secid)
485 edgepos(iabs(tagedg), ipos) = 1
486 IF(icute(ipos,tagedg)==1)ipos = mod(ipos,2)+1
489 ie =
edge_list(nin,iad(k))%CUTSHELL(ipos)
490 edge_list(nin,iad(k))%CUTPOINT(1:3,ipos) = cutpoint(1:3)
491 edge_list(nin,iad(k))%CUTVEL(1:3,ipos) = irect_l(24:26,ie
492 icute(ipos, iabs(gcorner(k,secid))) = 1
498 if(
brick_list(nin,ib)%ICODE==0.and.icell>=1)
then
499 print *,
"error i22subvol."
505 nsh3n = getnumtria(getpolyhedratype(secid))
506 IF(ii<=nel-nsh3n.AND.nspmd<=1)
THEN
521 ntria(1:3) = gtria(1:3,k,getpolyhedratype(secid))
522 x(1:3,ixtg(2,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(1)) )%CUTPOINT(1:3,ipose(ntria(1)) )
523 x(1:3,ixtg(3,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(2)) )%CUTPOINT(1:3,ipose(ntria(2)) )
524 x(1:3,ixtg(4,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria
525 v(1:3,ixtg(2,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(1)) )%CUTVEL(1:3,ipose
526 v(1:3,ixtg(3,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(2)) )%CUTVEL(1:3,ipose(ntria(2)) )
527 v(1:3,ixtg(4,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(3)) )%CUTVEL
544#include "lockoff.inc"
555 IF(sectype(1:5)==
'TETRA')
THEN
558 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
559 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
560 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
561 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
562 fa(1:3) = gface(1:3,secid)
563 vf(:,1) =
i22aera(3,(/n1,a2,a1/), c(1:3,fa(1)))
564 vf(:,2) =
i22aera(3,(/n1,a3,a2/), c(1:3,fa(2)))
565 vf(:,3) =
i22aera(3,(/n1,a1,a3/), c(1:3,fa(3)))
566 vf(:,0) =
i22aera(3,(/a1,a2,a3/), c(1:3, 0 ))
567 vol = sum((/(vf(:,i)*c(:,fa(i)),i=0,3)/))
568 vol = third * abs(vol)
569 volratio = vol/uncutvol
570 IF(volratio <= volratiomin)
THEN
572 nintpoint = nintpoint - ntrus
576 brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) + a2 + a1
577 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) + a3 + a2
579 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
580 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
581 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
582 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c
583 scut = sqrt(sum(vf(:,0)*vf(:,0)))
584 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
585 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
586 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
587 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
588 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
591 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
592 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
597 psubvol(icell)%Vnew = vol
598 pnnodcell(icell)%NumNOD = mnod
599 pnpointcell(icell)%NumPOINT= nnod
600 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/a1(1),a2(1),a3(1),n1
601 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/a1(2),a2(2),a3(2),n1(2)/) ) / four
602 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum( (/a1(3),a2(3),a3
603 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
604 inodtag(gnode(1:mnod,secid)) = 1
605 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
607 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
608 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
609 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
610 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
615 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = third* (a1(1:3) + a2(1:3) + a3(1:3))
617 ELSEIF(sectype(1:5)==
'PENTA')
THEN
619 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
620 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
621 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
622 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
623 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
624 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
625 fa(1:4) = gface(1:4,secid)
626 vf(:,1) =
i22aera(3,(/n1,a2,a1/), c(1:3,fa(1)))
627 vf(:,2) =
i22aera(3,(/n2,a4,a3/), c(1:3,fa(2)))
628 vf(:,3) =
i22aera(4,(/n1,n2,a3,a2/),c(1:3,fa(3)))
629 vf(:,4) =
i22aera(4,(/n2,n1,a1,a4/),c(1:3,fa(4)))
630 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/),c(1:3, 0 ))
631 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,4)/))
632 vol = third * abs(vol)
633 volratio = vol/uncutvol
635 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3)+ a4 + a3
638 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
639 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
640 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
641 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
642 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
643 scut = sqrt(sum(vf(:,0)*vf(:,0)))
644 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
645 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
646 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
647 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
648 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
649 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
651 IF(volratio <= volratiomin)
THEN
652 IF(scut / exp(0.666*log(uncutvol)) <= em03
THEN
654 nintpoint = nintpoint - ntrus
660 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
661 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
667 psubvol(icell)%Vnew = vol
668 pnnodcell(icell)%NumNOD = mnod
669 pnpointcell(icell)%NumPOINT= nnod
670 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/a1(1),a2(1),a3(1),a4(1),n1(1),n2(1)/) ) / six
671 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/a1(2),a2(2),a3(2),a4(2),n1
672 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum( (/a1(3),a2(3),a3(3),a4(3),n1(3),n2(3)/) ) / six
673 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
674 inodtag(gnode(1:mnod,secid)) = 1
675 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
677 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
678 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
679 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
680 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
681 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
682 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
688 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = fourth* (a1(1:3) + a2(1:3) + a3(1:3) + a4(1:3))
690 ELSEIF(sectype(1:5)==
'POLY3')
THEN
692 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
693 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
694 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
695 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
696 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
697 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
698 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
699 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
700 fa(1:5) = gface(1:5,secid)
701 vf(:,1) =
i22aera(5,(/n1,n2,n3,a3,a2/),c(1:3,fa(1)))
702 vf(:,2) =
i22aera(3,(/n3,a4,a3/), c(1:3,fa(2)))
703 vf(:,3) =
i22aera(4,(/n3,n2,a5,a4/), c(1:3,fa(3)))
704 vf(:,4) =
i22aera(4,(/n2,n1,a1,a5/), c(1:3,fa(4)))
705 vf(:,5) =
i22aera(3,(/n1,a2,a1/), c(1:3,fa(5)))
706 vf(:,0) =
i22aera(5,(/a1,a2,a3,a4,a5/),c(1:3, 0 ))
707 brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3
708 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) + a4 + a3
709 brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) + a5
710 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) + a1 +
711 brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) + a2 +
712 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
713 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
714 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
715 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
716 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
717 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
718 scut = sqrt(sum(vf(:,0)*vf(:,0)))
719 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
720 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
721 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
722 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
723 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
724 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
725 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
728 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
729 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
736 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,5)/))
737 vol = third * abs(vol)
738 psubvol(icell)%Vnew = vol
739 pnnodcell(icell)%NumNOD = mnod
740 pnpointcell(icell)%NumPOINT= nnod
741 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/a1(1),a2(1),a3(1),a4(1),a5(1),n1(1),n2(1),n3(1)/) ) / eight
742 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/a1(2),a2(2),a3(2),a4(2),a5(2),n1(2),n2(2),n3
743 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum( (/a1(3),a2(3),a3(3),a4(3),a5(3),n1(3),n2(3),n3(3)/) ) / eight
744 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
745 inodtag(gnode(1:mnod,secid)) = 1
746 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
748 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
749 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
750 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
751 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
752 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
753 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
754 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
755 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
762 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_fifth * (a1+a2+a3+a4+a5)
764 ELSEIF(sectype(1:5)==
'HEXAE')
THEN
766 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
767 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
768 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
769 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
770 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
771 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
772 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
773 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
774 fa(1:5) = gface(1:5,secid)
775 vf(:,1) =
i22aera(4,(/n4,n3,n2,n1/), c(1:3,fa(1)))
776 vf(:,2) =
i22aera(4,(/n1,n2,a2,a1/), c(1:3,fa(2)))
777 vf(:,3) =
i22aera(4,(/n2,n3,a3,a2/), c(1:3,fa(3)))
778 vf(:,4) =
i22aera(4,(/n3,n4,a4,a3/), c(1:3,fa(4)))
779 vf(:,5) =
i22aera(4,(/n4,n1,a1,a4/), c(1:3,fa(5)))
780 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/), c(1:3, 0 ))
781 brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) + zero
783 brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) + a3 + a2
784 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) + a4 + a3
785 brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) + a1 + a4
786 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center
787 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa
788 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c
789 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
790 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
791 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
792 scut = sqrt(sum(vf(:,0)*vf(:,0)))
793 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
794 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
795 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
796 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
797 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
798 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
799 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
802 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
803 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
809 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,5)/))
810 vol = third * abs(vol)
811 psubvol(icell)%Vnew = vol
812 pnnodcell(icell)%NumNOD = mnod
813 pnpointcell(icell)%NumPOINT= nnod
814 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/a1(1),a2(1),a3(1),a4(1),n1(1),n2(1),n3(1),n4(1)/) ) / eight
815 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/a1(2),a2(2),a3(2),a4(2),n1(2),n2(2),n3(2),n4(2)/) ) / eight
816 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum( (/a1(3),a2(3),a3(3),a4(3),n1(3),n2(3),n3(3),n4(3)/) ) / eight
817 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
819 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
821 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
823 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
825 n1 => v(1:3,ixs(gnode(1,secid)+1,
id
826 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
827 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
828 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
835 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = fourth * (a1+a2+a3+a4)
837 ELSEIF(sectype(1:6)==
'POLY4 ')
THEN
839 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
840 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
841 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
842 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose
844 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
845 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
846 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
847 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
848 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
849 fa(1:6) = gface(1:6,secid)
850 vf(:,1) =
i22aera(3,(/n1,a2,a1/) , c(1:3,fa(1)))
851 vf(:,2) =
i22aera(5,(/n2,n4,a5,a4,n3/), c(1:3,fa(2)))
852 vf(:,3) =
i22aera(5,(/a1,a6,n4,n2,n1/), c(1:3,fa(3)))
856 vf(:,0) =
i22aera(6,(/a1,a2,a3,a4,a5,a6/),c(1:3, 0 ))
857 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,6)/))
858 vol = third * abs(vol)
862 if((vol1+vol2)/uncutvol>=one-em04
then
864 nintpoint = nintpoint - ntrus
867 elseif( abs((vol1-vol2)/uncutvol
then
871 tmp(2) = c(2, 0 ) -
brick_list(nin,ib)%POLY(1)%FACE0%Center(2)
872 tmp(3) = c(3, 0 ) -
brick_list(nin,ib)%POLY(1)%FACE0%Center(3)
873 dist = tmp(1)*tmp(1)+tmp(2)*tmp(2)+tmp(3)*tmp(3)
875 if (dist / exp(0.333*log(uncutvol)) <= em04)
THEN
877 nintpoint = nintpoint - ntrus
884 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) + a5 + a4
886 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) + a3
887 brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) + a6 + a5
889 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
891 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
896 scut = sqrt(sum(vf(:,0)*vf(:,0)))
897 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
898 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
899 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
900 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
901 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
902 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
903 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
904 pface(fa(6))%Surf = sqrt(sum(vf(:,6)*vf(:,6)))
907 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
908 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
916 psubvol(icell)%Vnew = vol
917 pnnodcell(icell)%NumNOD = mnod
918 pnpointcell(icell)%NumPOINT= nnod
919 brick_list(nin,ib)%POLY(icell)%CellCenter(1)=sum((/a1(1),a2(1),a3(1),a4
920 brick_list(nin,ib)%POLY(icell)%CellCenter(2)=sum((/a1(2),a2(2),a3(2),a4(2),a5(2),a6(2),n1(2),n2(2),n3(2),n4(2)/))/ten
921 brick_list(nin,ib)%POLY(icell)%CellCenter(3)=sum((/a1(3),a2(3),a3(3),a4(3),a5
922 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
923 inodtag(gnode(1:mnod,secid)) = 1
924 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
926 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
927 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
928 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
929 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
930 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
931 a6 =>
edge_list(nin,iad(6))%CUTVEL(1:3,ipose(6))
932 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
933 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
934 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
935 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
943 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a2+a3+a4
945 ELSEIF(sectype(1:6)==
'POLY4A')
THEN
947 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
948 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
949 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
950 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
951 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
952 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
953 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
954 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
955 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
956 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
957 fa(1:6) = gface(1:6,secid)
958 vf(:,1) =
i22aera(3,(/n1,a1,a6/) , c(1:3,fa(1)))
959 vf(:,2) =
i22aera(4,(/n1,n2,a2,a1/) , c(1:3,fa(2)))
960 vf(:,3) =
i22aera(5,(/n2,n3,n4,a3,a2/), c(1:3,fa(3)))
961 vf(:,4) =
i22aera(3,(/n4,a4,a3/) , c(1:3,fa(4)))
962 vf(:,5) =
i22aera(4,(/n4,n3,a5,a4/) , c(1:3,fa(5)))
963 vf(:,6) =
i22aera(5,(/n3,n2,n1,a6,a5/), c(1:3,fa(6)))
964 vf(:,0) =
i22aera(6,(/a1,a2,a3,a4,a5,a6/),c(1:3, 0 ))
965 brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) + a1
966 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) +
970 brick_list(nin,ib)%POLY(9)%FACE(fa(6))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(6))%Center(1:3) + a6 + a5
971 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
972 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:
973 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
974 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
975 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
976 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%Center(1:3) = c(1:3,fa(6))
977 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
978 scut = sqrt(sum(vf(:,0)*vf(:,0)))
979 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
980 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
981 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
982 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
983 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
984 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
985 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
986 pface(fa(6))%Surf = sqrt(sum(vf(:,6)*vf(:,6)))
989 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
990 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
998 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,6)/))
999 vol = third * abs(vol)
1000 psubvol(icell)%Vnew = vol
1001 pnnodcell(icell)%NumNOD = mnod
1002 pnpointcell(icell)%NumPOINT= nnod
1003 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum((/a1(1),a2(1),a3(1),a4(1),a5(1),a6(1),n1(1),n2(1),n3
1004 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum((/a1(2),a2(2),a3(2),a4(2),a5(2),a6(2),n1(2),n2(2),n3(2),n4(
1005 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum((/a1(3),a2(3),a3(3),a4(3),a5(3)
1006 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
1007 inodtag(gnode(1:mnod,secid)) = 1
1008 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
1010 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
1011 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
1012 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
1013 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
1014 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
1015 a6 =>
edge_list(nin,iad(6))%CUTVEL(1:3,ipose(6))
1016 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
1017 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
1018 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
1019 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
1027 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a2+a3+a4+a5+a6 )
1029 ELSEIF(sectype(1:6)==
'POLY4B')
THEN
1031 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1032 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1033 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1034 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1035 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1036 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1037 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1038 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1039 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1040 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1041 fa(1:6) = gface(1:6,secid)
1042 vf(:,1) = -
i22aera(3,(/n1,a1,a6/) , c(1:3,fa(1)))
1043 vf(:,2) = -
i22aera(4,(/n1,n2,a2,a1/) , c(1:3,fa(2)))
1044 vf(:,3) = -
i22aera(5,(/n2,n3,n4,a3,a2/), c(1:3,fa(3)))
1045 vf(:,4) = -
i22aera(3,(/n4,a4,a3/) , c(1:3,fa(4)))
1046 vf(:,5) = -
i22aera(4,(/n4,n3,a5,a4/) , c(1:3,fa(5)))
1047 vf(:,6) = -
i22aera(5,(/n3,n2,n1,a6,a5/), c(1:3,fa(6)))
1048 vf(:,0) = -
i22aera(6,(/a1,a2,a3,a4,a5,a6/),c(1:3, 0 ))
1050 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) + a2
1051 brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) + a3 + a2
1052 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) +
1053 brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) + a5 + a4
1054 brick_list(nin,ib)%POLY(9)%FACE(fa(6))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(6))%Center(1:3) + a6
1055 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
1056 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
1057 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
1058 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
1059 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
1060 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%Center(1:3) = c(1:3,fa(6))
1061 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
1062 scut = sqrt(sum(vf(:,0)*vf(:,0)))
1064 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
1065 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
1066 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
1067 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
1068 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
1069 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
1070 pface(fa(6))%Surf = sqrt(sum(vf(:,6)*vf(:,6)))
1073 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
1074 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
1082 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,6)/))
1083 vol = third * abs(vol)
1084 psubvol(icell)%Vnew = vol
1085 pnnodcell(icell)%NumNOD = mnod
1086 pnpointcell(icell)%NumPOINT= nnod
1087 brick_list(nin,ib)%POLY(icell)%CellCenter(1)=sum((/a1(1),a2(1),a3(1),a4
1088 brick_list(nin,ib)%POLY(icell)%CellCenter(2)=sum((/a1(2),a2(2),a3(2),a4(2),a5(2),a6(2),n1(2),n2(2),n3(2),n4(2)/))/ten
1089 brick_list(nin,ib)%POLY(icell)%CellCenter(3)=sum((/a1(3),a2(3),a3(3),a4
1090 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
1091 inodtag(gnode(1:mnod,secid)) = 1
1092 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
1094 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
1095 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
1096 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
1097 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
1098 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
1099 a6 =>
edge_list(nin,iad(6))%CUTVEL(1:3,ipose(6))
1100 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
1101 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
1102 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
1103 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
1111 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a2+a3+a4+a5+a6 )
1113 ELSEIF(sectype(1:5)==
'POLYC')
THEN
1115 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1116 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1117 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1118 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1119 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1120 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1121 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1122 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1123 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1124 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1125 fa(1:6) = gface(1:6,secid)
1126 vf(:,1) =
i22aera(4,(/n1,n2,n3,n4/) , c(1:3,fa(1)))
1127 vf(:,2) =
i22aera(4,(/n1,a1,a2,n2/) , c(1:3,fa(2)))
1128 vf(:,3) =
i22aera(4,(/n2,a2,a3,n3/) , c(1:3,fa(3)))
1129 vf(:,4) =
i22aera(4,(/n1,n4,a4,a1/) , c(1:3,fa(4)))
1130 vf(:,5) =
i22aera(7,(/n4,n3,a3,a6,a5,a4,n4/) , c(1:3,fa(5)))
1131 vf(:,0) =
i22aera(6,(/a1,a4,a5,a6,a3,a2/) , c(1:3, 0 ))
1132 brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) + zero
1133 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) +a1+a2
1134 brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center
1135 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) +a4+a1
1136 brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) +a3+a6+a5+a4
1137 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
1138 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
1139 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa
1140 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
1141 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
1142 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
1143 scut = sqrt(sum(vf(:,0)*vf(:,0)))
1144 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
1145 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
1146 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
1147 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
1148 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
1149 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
1150 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
1153 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
1154 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
1162 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,5)/))
1163 vol = third * abs(vol)
1164 psubvol(icell)%Vnew = vol
1165 pnnodcell(icell)%NumNOD = mnod
1166 pnpointcell(icell)%NumPOINT= nnod
1167 brick_list(nin,ib)%POLY(icell)%CellCenter(1)=sum((/a1(1),a2(1),a3(1),a4(1),a5(1),a6(1),n1(1),n2(1),n3(1),n4(1)/))/ten
1168 brick_list(nin,ib)%POLY(icell)%CellCenter(2)=sum((/a1(2),a2(2),a3(2),a4(2),a5(2),a6(2),n1(2),n2(2),n3(2),n4(2)/))/ten
1169 brick_list(nin,ib)%POLY(icell)%CellCenter(3)=sum((/a1(3),a2(3),a3(3),a4(3),a5(3),a6(3),n1(3),n2(3),n3(3),n4(3)/))/ten
1170 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
1171 inodtag(gnode(1:mnod,secid)) = 1
1172 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
1174 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
1175 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
1176 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
1177 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
1178 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
1179 a6 =>
edge_list(nin,iad(6))%CUTVEL(1:3,ipose(6))
1180 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
1181 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
1182 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
1183 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
1190 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a4+a5+a6+a3+a2)
1195 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
1196 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
1198 pface(fa(j))%Surf =- pface(fa(j))%Surf
1200 psubvol(icell)%Vnew =- psubvol(icell)%Vnew
1201 pnnodcell(icell)%NumNOD = 8-mnod
1207 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = zero
1208 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = zero
1209 IF(i22_aleul == 1)
THEN
1210 IF(sectype(1:5)==
'TETRA')
THEN
1212 fa(1:3) = gface(1:3,secid)
1214 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1215 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1216 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1218 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1219 j = iad(1)-(ib-1)*12;
1222 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1223 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1224 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1226 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1227 j = iad(2)-(ib-1)*12;
1230 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1231 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1232 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1234 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1235 j = iad(3)-(ib-1)*12;
1238 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w
1239 wa3(2) = beta * w(2,edgnod1
1242 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1243 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1244 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1245 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1247 wf1(1) = third*(wn1(1)+wa2(1)+wa1(1))
1248 wf1(2) = third*(wn1(2)+wa2(2)+wa1(2))
1249 wf1(3) = third*(wn1(3)+wa2(3)+wa1(3))
1253 wf2(3) = third*(wn1(3)+wa3(3)+wa2(3))
1255 wf3(1) = third*(wn1(1)+wa1(1)+wa3(1))
1256 wf3(2) = third*(wn1(2)+wa1(2)+wa3(2))
1257 wf3(3) = third*(wn1(3)+wa1(3)+wa3(3))
1259 wf0(1) = third*(wa1(1)+wa2(1)+wa3(1))
1260 wf0(2) = third*(wa1(2)+wa2(2)+wa3(2))
1261 wf0(3) = third*(wa1(3)+wa2(3)+wa3(3))
1263 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1264 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1265 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1266 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1269 ELSEIF(sectype(1:5)==
'PENTA')
THEN
1271 fa(1:4) = gface(1:4,secid)
1272 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1273 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1274 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1275 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1276 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1277 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1279 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1280 j = iad(1)-(ib-1)*12;
1283 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1284 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1285 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1288 j = iad(2)-(ib-1)*12;
1291 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1292 wa2(2) = beta * w(2,edgnod1) + (one-beta
1293 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1295 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose
1296 j = iad(3)-(ib-1)*12;
1299 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2
1300 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1301 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1303 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1304 j = iad(4)-(ib-1)*12;
1307 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1308 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1309 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1311 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1312 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1313 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1315 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1316 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1317 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1319 wf1(1) = third*(wn1(1)+wa2(1)+wa1(1))
1320 wf1(2) = third*(wn1(2)+wa2(2)+wa1(2))
1321 wf1(3) = third*(wn1(3)+wa2(3)+wa1(3))
1323 wf2(1) = third*(wn2(1)+wa4(1)+wa3(1))
1324 wf2(2) = third*(wn2(2)+wa4(2)+wa3(2))
1325 wf2(3) = third*(wn2(3)+wa4(3)+wa3(3))
1327 wf3(1) = fourth*(wn1(1)+wn2(1)+wa3(1)+wa2(1))
1328 wf3(2) = fourth*(wn1(2)+wn2(2)+wa3(2)+wa2(2))
1329 wf3(3) = fourth*(wn1(3)+wn2(3)+wa3(3)+wa2(3))
1331 wf4(1) = fourth*(wn2(1)+wn1(1)+wa1(1)+wa4(1))
1332 wf4(2) = fourth*(wn2(2)+wn1(2)+wa1(2)+wa4(2))
1333 wf4(3) = fourth*(wn2(3)+wn1(3)+wa1(3)+wa4(3))
1335 wf0(1) = fourth*(wa1(1)+wa2(1)+wa3(1)+wa4(1))
1336 wf0(2) = fourth*(wa1(2)+wa2(2)+wa3(2)+wa4(2))
1337 wf0(3) = fourth*(wa1(3)+wa2(3)+wa3(3)+wa4(3))
1339 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1340 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1341 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1342 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1343 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1345 ELSEIF(sectype(1:5)==
'POLY3')
THEN
1347 fa(1:5) = gface(1:5,secid)
1348 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1349 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1350 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1351 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1352 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1353 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1354 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1355 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1357 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1358 j = iad(1)-(ib-1)*12;
1361 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1362 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1363 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1365 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1366 j = iad(2)-(ib-1)*12;
1369 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1370 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1371 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1373 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1374 j = iad(3)-(ib-1)*12;
1377 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1378 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1379 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1382 j = iad(4)-(ib-1)*12;
1385 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1386 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1387 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1389 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(5));
1390 j = iad(5)-(ib-1)*12;
1393 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2
1395 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1397 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1398 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1399 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1401 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1402 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1403 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1405 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1406 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1407 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1409 wf1(1) = one_fifth*(wn1(1)+wn2(1)+wn3(1)+wa3(1)+wa2(1))
1410 wf1(2) = one_fifth*(wn1(2)+wn2(2)+wn3(2)+wa3(2)+wa2(2))
1411 wf1(3) = one_fifth*(wn1(3)+wn2(3)+wn3(3)+wa3(3)+wa2(3))
1413 wf2(1) = third*(wn3(1)+wa4(1)+wa3(1))
1414 wf2(2) = third*(wn3(2)+wa4(2)+wa3(2))
1415 wf2(3) = third*(wn3(3)+wa4(3)+wa3(3))
1417 wf3(1) = fourth*(wn3(1)+wn2(1)+wa5(1)+wa4(1))
1418 wf3(2) = fourth*(wn3(2)+wn2(2)+wa5(2)+wa4(2))
1419 wf3(3) = fourth*(wn3(3)+wn2(3)+wa5(3)+wa4(3))
1421 wf4(1) = fourth*(wn2(1)+wn1(1)+wa1(1)+wa5(1))
1422 wf4(2) = fourth*(wn2(2)+wn1(2)+wa1(2)+wa5(2))
1423 wf4(3) = fourth*(wn2(3)+wn1(3)+wa1(3)+wa5(3))
1425 wf5(1) = third*(wn1(1)+wa2(1)+wa1(1))
1426 wf5(2) = third*(wn1(2)+wa2(2)+wa1(2))
1427 wf5(3) = third*(wn1(3)+wa2(3)+wa1(3))
1429 wf0(1) = one_fifth*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1))
1430 wf0(2) = one_fifth*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2))
1431 wf0(3) = one_fifth*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3))
1433 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1434 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1435 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1436 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1437 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1438 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1440 ELSEIF(sectype(1:5)==
'HEXAE')
THEN
1442 fa(1:5) = gface(1:5,secid)
1443 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1444 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1445 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1446 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1447 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1448 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1449 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1450 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1452 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1453 j = iad(1)-(ib-1)*12;
1456 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1457 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1458 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1460 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1461 j = iad(2)-(ib-1)*12;
1464 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1465 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1466 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1468 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1469 j = iad(3)-(ib-1)*12;
1472 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1473 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1474 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1476 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1477 j = iad(4)-(ib-1)*12;
1480 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1481 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1482 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1484 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1485 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1486 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1488 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1489 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1490 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1492 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1493 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1494 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1496 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1497 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1498 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1500 wf1(1) = fourth*(wn4(1)+wn3(1)+wn2(1)+wn1(1))
1501 wf1(2) = fourth*(wn4(2)+wn3(2)+wn2(2)+wn1(2))
1502 wf1(3) = fourth*(wn4(3)+wn3(3)+wn2(3)+wn1(3))
1504 wf2(1) = fourth*(wn1(1)+wn2(1)+wa2(1)+wa1(1))
1505 wf2(2) = fourth*(wn1(2)+wn2(2)+wa2(2)+wa1(2))
1506 wf2(3) = fourth*(wn1(3)+wn2(3)+wa2(3)+wa1(3))
1508 wf3(1) = fourth*(wn2(1)+wn3(1)+wa3(1)+wa2(1))
1509 wf3(2) = fourth*(wn2(2)+wn3(2)+wa3(2)+wa2(2))
1510 wf3(3) = fourth*(wn2(3)+wn3(3)+wa3(3)+wa2(3))
1512 wf4(1) = fourth*(wn3(1)+wn4(1)+wa4(1)+wa3(1))
1513 wf4(2) = fourth*(wn3(2)+wn4
1514 wf4(3) = fourth*(wn3(3)+wn4(3)+wa4(3)+wa3(3))
1516 wf5(1) = fourth*(wn4(1)+wn1(1)+wa1(1)+wa4(1))
1517 wf5(2) = fourth*(wn4(2)+wn1(2)+wa1(2)+wa4(2))
1518 wf5(3) = fourth*(wn4(3)+wn1(3)+wa1(3)+wa4(3))
1520 wf0(1) = one_fifth*(wa1(1)+wa2(1)+wa3(1)+wa4(1))
1521 wf0(2) = one_fifth*(wa1(2)+wa2(2)+wa3(2)+wa4(2))
1522 wf0(3) = one_fifth*(wa1(3)+wa2(3)+wa3(3)+wa4(3))
1525 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1527 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1528 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1529 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1532 ELSEIF(sectype(1:6)==
'POLY4 ')
THEN
1534 fa(1:6) = gface(1:6,secid)
1535 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1537 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1538 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1540 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1541 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1542 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1543 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1544 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1547 j = iad(1)-(ib-1)*12;
1550 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1551 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1552 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1554 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1555 j = iad(2)-(ib-1)*12;
1558 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1559 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1560 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1562 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1563 j = iad(3)-(ib-1)*12;
1566 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1567 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1568 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1570 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1571 j = iad(4)-(ib-1)*12;
1574 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1575 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1576 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1578 beta =
edge_list(nin,iad(5))%CUTCOOR(ipose(5));
1579 j = iad(5)-(ib-1)*12;
1582 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1583 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1584 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1586 beta =
edge_list(nin,iad(6))%CUTCOOR(ipose(6));
1587 j = iad(6)-(ib-1)*12;
1590 wa6(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1591 wa6(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1592 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1594 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1595 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1596 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1598 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1599 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1600 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1602 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1603 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1604 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1606 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1607 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1608 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1610 wf1(1) = third*(wn1(1)+wa1(1)+wa6(1))
1611 wf1(2) = third*(wn1(2)+wa1(2)+wa6(2))
1612 wf1(3) = third*(wn1(3)+wa1(3)+wa6(3))
1614 wf2(1) = fourth*(wn1(1)+wn2(1)+wa2(1)+wa1(1))
1615 wf2(2) = fourth*(wn1(2)+wn2(2)+wa2(2)+wa1(2))
1616 wf2(3) = fourth*(wn1(3)+wn2(3)+wa2(3)+wa1(3))
1618 wf3(1) = one_fifth*(wn2(1)+wn3(1)+wn4
1619 wf3(2) = one_fifth*(wn2(2)+wn3(2)+wn4(2)+wa3(2)+wa2(2))
1620 wf3(3) = one_fifth*(wn2(3)+wn3(3)+wn4(3)+wa3(3)+wa2(3))
1622 wf4(1) = third*(wn4(1)+wa4(1)+wa3(1))
1623 wf4(2) = third*(wn4(2)+wa4(2)+wa3(2))
1624 wf4(3) = third*(wn4(3)+wa4(3)+wa3(3))
1626 wf5(1) = fourth*(wn4(1)+wn3(1)+wa5(1)+wa4(1))
1627 wf5(2) = fourth*(wn4(2)+wn3(2)+wa5(2)+wa4(2))
1628 wf5(3) = fourth*(wn4(3)+wn3(3)+wa5
1630 wf6(1) = fourth*(wn3(1)+wn2
1631 wf6(2) = fourth*(wn3(2)+wn2(2)+wn1(2)+wa6(2)+wa5(2))
1632 wf6(3) = fourth*(wn3(3)+wn2(3)+wn1(3)+wa6(3)+wa5(3))
1634 wf0(1) = one_over_6*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1)+wa6(1))
1635 wf0(2) = one_over_6*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2)+wa6(2))
1636 wf0(3) = one_over_6*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3)+wa6(3))
1638 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1639 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1640 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2
1641 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1642 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1643 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1644 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%W(1:3) = wf6(1:3)
1647 ELSEIF(sectype(1:6)==
'POLY4A')
THEN
1649 fa(1:6) = gface(1:6,secid)
1650 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1651 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1652 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1653 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1654 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1655 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1656 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1657 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1658 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1659 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1661 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1662 j = iad(1)-(ib-1)*12;
1665 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1666 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1667 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1669 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1670 j = iad(2)-(ib-1)*12;
1673 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1675 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1677 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1678 j = iad(3)-(ib-1)*12;
1681 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1682 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1683 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1685 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1686 j = iad(4)-(ib-1)*12;
1689 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1690 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1691 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1693 beta =
edge_list(nin,iad(5))%CUTCOOR(ipose(5));
1694 j = iad(5)-(ib-1)*12;
1697 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1698 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1699 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1701 beta =
edge_list(nin,iad(6))%CUTCOOR(ipose(6));
1702 j = iad(6)-(ib-1)*12;
1705 wa6(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1706 wa6(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1707 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1709 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1710 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1711 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1713 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1714 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1715 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1717 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1718 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1719 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1721 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1722 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1723 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1725 wf1(1) = third*(wn1(1)+wa1(1)+wa6(1))
1726 wf1(2) = third*(wn1(2)+wa1(2)+wa6(2))
1727 wf1(3) = third*(wn1(3)+wa1(3)+wa6(3))
1729 wf2(1) = fourth*(wn1(1)+wn2(1)+wa2(1)+wa1(1))
1730 wf2(2) = fourth*(wn1(2)+wn2(2)+wa2(2)+wa1(2))
1731 wf2(3) = fourth*(wn1(3)+wn2(3)+wa2(3)+wa1(3))
1733 wf3(1) = one_fifth*(wn2(1)+wn3(1)+wn4(1)+wa3(1)+wa2(1))
1734 wf3(2) = one_fifth*(wn2(2)+wn3(2)+wn4(2)+wa3(2)+wa2(2))
1735 wf3(3) = one_fifth*(wn2(3)+wn3(3)+wn4(3)+wa3(3)+wa2(3))
1737 wf4(1) = third*(wn4(1)+wa4(1)+wa3(1))
1738 wf4(2) = third*(wn4(2)+wa4(2)+wa3(2))
1739 wf4(3) = third*(wn4(3)+wa4(3)+wa3(3))
1741 wf5(1) = fourth*(wn4(1)+wn3(1)+wa5(1)+wa4(1))
1742 wf5(2) = fourth*(wn4(2)+wn3(2)+wa5(2)+wa4(2))
1743 wf5(3) = fourth*(wn4(3)+wn3(3)+wa5(3)+wa4(3))
1745 wf6(1) = fourth*(wn3(1)+wn2(1)+wn1(1)+wa6(1)+wa5(1))
1746 wf6(2) = fourth*(wn3(2)+wn2(2)+wn1(2)+wa6(2)+wa5(2))
1747 wf6(3) = fourth*(wn3(3)+wn2(3)+wn1(3)+wa6(3)+wa5(3))
1749 wf0(1) = one_over_6*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1)+wa6(1))
1750 wf0(2) = one_over_6*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2)+wa6(2))
1751 wf0(3) = one_over_6*(wa1(3)+wa2(3
1754 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1755 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1757 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1758 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1759 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%W(1:3) = wf6(1:3)
1761 ELSEIF(sectype(1:6)==
'POLY4B')
THEN
1763 fa(1:6) = gface(1:6,secid)
1764 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1765 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1766 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1767 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1769 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1770 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1771 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1772 n3 => x(1:3,ixs(gnode
1775 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1776 j = iad(1)-(ib-1)*12;
1779 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1780 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1781 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1783 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1784 j = iad(2)-(ib-1)*12;
1787 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1788 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1789 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1791 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1792 j = iad(3)-(ib-1)*12;
1795 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w
1796 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1797 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1799 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1800 j = iad(4)-(ib-1)*12;
1803 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1804 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1805 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1807 beta =
edge_list(nin,iad(5))%CUTCOOR(ipose(5));
1808 j = iad(5)-(ib-1)*12;
1811 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1812 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1813 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1815 beta =
edge_list(nin,iad(6))%CUTCOOR(ipose(6));
1816 j = iad(6)-(ib-1)*12;
1819 wa6(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1820 wa6(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1821 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1823 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1824 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1827 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1828 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1829 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1831 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1832 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1833 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1835 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1836 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1837 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1839 wf1(1) = third*(wn1(1)+wa1(1)+wa6(1))
1840 wf1(2) = third*(wn1(2)+wa1(2)+wa6(2))
1841 wf1(3) = third*(wn1(3)+wa1(3)+wa6(3))
1843 wf2(1) = fourth*(wn1(1)+wn2(1)+wa2(1)+wa1(1))
1844 wf2(2) = fourth*(wn1(2)+wn2(2)+wa2(2)+wa1(2))
1845 wf2(3) = fourth*(wn1(3)+wn2(3)+wa2(3)+wa1(3))
1847 wf3(1) = one_fifth*(wn2(1)+wn3(1)+wn4(1)+wa3(1)+wa2(1))
1848 wf3(2) = one_fifth*(wn2(2)+wn3(2)+wn4(2)+wa3(2)+wa2(2))
1849 wf3(3) = one_fifth*(wn2(3)+wn3(3)+wn4(3)+wa3(3)+wa2(3))
1851 wf4(1) = third*(wn4(1)+wa4(1)+wa3(1))
1852 wf4(2) = third*(wn4(2)+wa4(2)+wa3(2))
1853 wf4(3) = third*(wn4(3)+wa4(3)+wa3(3))
1855 wf5(1) = fourth*(wn4(1)+wn3(1)+wa5(1)+wa4(1))
1856 wf5(2) = fourth*(wn4(2)+wn3(2)+wa5(2)+wa4(2))
1857 wf5(3) = fourth*(wn4(3)+wn3(3)+wa5(3)+wa4(3))
1859 wf6(1) = fourth*(wn3(1)+wn2(1)+wn1(1)+wa6(1)+wa5(1))
1860 wf6(2) = fourth*(wn3(2)+wn2(2)+wn1(2)+wa6(2)+wa5(2))
1861 wf6(3) = fourth*(wn3(3)+wn2(3)+wn1(3)+wa6(3)+wa5(3))
1863 wf0(1) = one_over_6*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1)+wa6(1))
1864 wf0(2) = one_over_6*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2)+wa6(2))
1865 wf0(3) = one_over_6*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3)+wa6(3))
1867 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1868 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1869 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1871 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1872 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1873 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%W(1:3) = wf6(1:3)
1875 ELSEIF(sectype(1:5)==
'POLYC')
THEN
1877 fa(1:6) = gface(1:6,secid)
1878 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1879 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1880 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1881 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1882 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1883 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1884 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1885 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1886 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1887 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1889 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1890 j = iad(1)-(ib-1)*12;
1893 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1894 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1895 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1897 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1898 j = iad(2)-(ib-1)*12;
1901 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2
1902 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1903 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1906 j = iad(3)-(ib-1)*12;
1909 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1911 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1913 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1914 j = iad(4)-(ib-1)*12;
1917 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1918 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1919 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1921 beta =
edge_list(nin,iad(5))%CUTCOOR(ipose(5));
1922 j = iad(5)-(ib-1)*12;
1925 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1926 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1927 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1929 beta =
edge_list(nin,iad(6))%CUTCOOR(ipose(6));
1930 j = iad(6)-(ib-1)*12;
1933 wa6(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1934 wa6(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1935 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1937 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1938 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1939 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1941 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1942 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1943 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1945 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1946 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1947 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1949 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1950 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1951 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1953 wf1(1) = fourth*(wn1(1)+wn2(1)+wn3(1)+wn4(1))
1954 wf1(2) = fourth*(wn1(2)+wn2(2)+wn3(2)+wn4(2))
1955 wf1(3) = fourth*(wn1(3)+wn2(3)+wn3(3)+wn4(3))
1957 wf2(1) = fourth*(wn1(1)+wa1(1)+wa2(1)+wn2(1))
1958 wf2(2) = fourth*(wn1(2)+wa1(2)+wa2(2)+wn2(2))
1959 wf2(3) = fourth*(wn1(3)+wa1(3)+wa2(3)+wn2(3))
1961 wf3(1) = fourth*(wn2(1)+wa2(1)+wa3(1)+wn3(1))
1962 wf3(2) = fourth*(wn2(2)+wa2(2)+wa3(2)+wn3(2))
1963 wf3(3) = fourth*(wn2(3)+wa2(3)+wa3(3)+wn3(3))
1965 wf4(1) = fourth*(wn1(1)+wn4(1)+wa4(1)+wa1(1))
1966 wf4(2) = fourth*(wn1(2)+wn4(2)+wa4(2)+wa1(2))
1967 wf4(3) = fourth*(wn1(3)+wn4(3)+wa4(3)+wa1(3))
1969 wf5(1) = (wn4(1)+wn3(1)+wa3(1)+wa6(1)+wa5(1)+wa4(1)+wn4(1))/seven
1970 wf5(2) = (wn4(2)+wn3(2)+wa3(2)+wa6(2)+wa5(2)+wa4(2)+wn4(2))/seven
1971 wf5(3) = (wn4(3)+wn3(3)+wa3(3)+wa6(3)+wa5(3)+wa4(3)+wn4(3))/seven
1973 wf0(1) = one_over_6*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1)+wa6(1))
1974 wf0(2) = one_over_6*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2)+wa6(2))
1975 wf0(3) = one_over_6*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3)+wa6(3))
1977 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1978 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1979 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1980 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1981 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1982 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1995 ntag = sum(itag(1:8))
2000 tmp_sectype(k) =
brick_list(nin,ib)%SECTYPE(k)
2001 tmp_secid_cell(k) =
brick_list(nin,ib)%SecID_CELL(k)
2011 brick_list(nin,ib)%SECTYPE(n) = tmp_sectype(n+1)
2012 brick_list(nin,ib)%SecID_CELL(n) = tmp_secid_cell(n+1)
2023 brick_list(nin,ib)%NODE(n)%WhichCell = inod - ntag
2034 brick_list(nin,ib)%SECTYPE(k) =
'______________'
2046 IF(edgelist(j) /=
edge_list(nin,k)%NBCUT)
THEN
2047 IF(edgelist(j)==1)
THEN
2050 IF(edgepos(j,1)==1)
THEN
2052 ELSEIF(edgepos(j,2)==1)
THEN
2059 ELSEIF(edgelist(j)==0)
THEN
2074 pnnodcell(icell)%NumNOD = 8
2075 pnpointcell(icell)%NumPOINT = 8
2076 n1 => x(1:3, ixs(1+1,
brick_list(nin,ib)%ID ))
2077 n2 => x(1:3, ixs(1+2,
brick_list(nin,ib)%ID ))
2078 n3 => x(1:3, ixs(1+3,
brick_list(nin,ib)%ID ))
2079 n4 => x(1:3, ixs(1+4,
brick_list(nin,ib)%ID ))
2080 n5 => x(1:3, ixs(1+5,
brick_list(nin,ib)%ID ))
2081 n6 => x(1:3, ixs(1+6,
brick_list(nin,ib)%ID ))
2082 n7 => x(1:3, ixs(1+7,
brick_list(nin,ib)%ID ))
2083 n8 => x(1:3, ixs(1+8,
brick_list(nin,ib)%ID ))
2084 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/n1(1),n2(1),n3(1),n4(1),n5(1),n6(1),n7(1),n8(1)/) ) / eight
2085 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/n1(2),n2(2),n3(2),n4(2),n5(2),n6(2),n7(2),n8(2)/) ) / eight
2086 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum( (/n1(3),n2(3),n3(3),n4(3),n5(3),n6(3),n7(3),n8(3)/) ) / eight
2087 brick_list(nin,ib)%POLY(icell)%ListNodID(1:8) = (/ 1,2,3,4,5,6,7,8/)
2088 brick_list(nin,ib)%NODE(1:8)%WhichCell = icell
2101 cod1 = iabs(
brick_list(nin,ib)%SecID_CELL(1))
2102 cod2 = iabs(
brick_list(nin,ib)%SecID_CELL(2))
2110 valtmp(1:3) =
brick_list(nin,ib)%POLY(1)%CellCenter(1:3)
2173 brick_list(nin,ib)%POLY(3)%CellCenter(1) = zero
2174 brick_list(nin,ib)%POLY(3)%CellCenter(2) = zero
2175 brick_list(nin,ib)%POLY(3)%CellCenter(3) = zero
2176 brick_list(nin,ib)%POLY(3)%ListNodID(1:8) = 0
2178 brick_list(nin,ib)%POLY(3)%FACE(k)%Vel(1) = zero
2179 brick_list(nin,ib)%POLY(3)%FACE(k)%Vel(2) = zero
2180 brick_list(nin,ib)%POLY(3)%FACE(k)%Vel(3) = zero
2184 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 2)
THEN
2193 brick_list(nin,ib)%POLY(1)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(1)%CellCenter(1:3) * numpt
2195 nn => x(1:3, ixs(1+i,
brick_list(nin,ib)%ID ))
2196 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 2)
THEN
2208 brick_list(nin,ib)%POLY(1)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(1)%CellCenter(1:3) / numpt
2214 valtmp(1:3) =
brick_list(nin,ib)%POLY(2)%CellCenter(1:3)
2221 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 2)
THEN
2231 brick_list(nin,ib)%POLY(2)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(2)%CellCenter(1:3) * numpt
2233 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 1)
THEN
2234 nn => x(1:3, ixs(1+i,
brick_list(nin,ib)%ID ))
2240 nn => x(1:3, ixs(1+i,
brick_list(nin,ib)%ID ))
2255 inodtag(
brick_list(nin,ib)%POLY(1)%ListNodID(i) ) = 1
2259 IF(inodtag(i) == 0)
THEN
2265 brick_list(nin,ib)%POLY(9)%CellCenter(1:3) = valtmp(1:3)
2301 IF (ii<=nel.AND.nspmd<=1.AND.itask==0)
THEN
2302#include "lockon.inc"
2307 x(1:3,ixtg(2,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2308 x(1:3,ixtg(3,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2309 x(1:3,ixtg(4,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2310 v(1:3,ixtg(2,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2311 v(1:3,ixtg(3,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2312 v(1:3,ixtg(4,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2314#include "lockoff.inc"
2328 write (*,fmt=
'(A,2I12)')
"=== BRICK ID===", ixs(11,
id) ,
id
2330 do while (icell <= ncell .OR. icell == 9 )
2332 write (*,fmt=
'(A )')
"|"
2334 write (*,fmt=
'(A,I1,A,A ,A1,I2,A1 )')
"+== ICELL= ", icell ,
", SecType=",
'COMPLEMENT' ,
2337 write (*,fmt=
'(A,I1,A,A14,A1,I2,A1 )')
"+== ICELL= ", icell ,
", SecType=",
brick_list(nin,ib)%SECTYPE(icell) ,
2338 .
"(",
brick_list(nin,ib)%SecID_Cell(icell) ,
")"
2340 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
2341 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
2342 write (*,fmt=
'(A )')
"| |"
2343 write (*,fmt=
'(A,F20.14)')
"| +======SUVOLUMES=",
brick_list(nin,ib)%POLY(icell)%Vnew
2344 write (*,fmt=
'(A,6F20.14)')
"| +=======SUBFACES=",
brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Surf
2345 write (*,fmt=
'(A,F20.14)')
"| +=======CUT AERA=",
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
2346 write (*,fmt=
'(A,A,I2)')
"| +======NUM POINT=",
" ",
brick_list(nin,ib)%POLY(icell)%NumPOINT
2347 write (*,fmt=
'(A,A,I1,A,8I12)')
"| +======NODE LIST=",
" (",mnod,
") ",
brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod)
2348 write (*,fmt=
'(A,A ,8I12)')
"| radIDs=",
" ",
2349 . ixs(1+
brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod),
id)
2350 write (*,fmt=
'(A,A ,8I12)')
"| userIDs=",
" ",
2351 . itab(ixs(1+
brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod),
id))
2353! print *,
"Sn=", vf(:,i)
2357 if(icell>ncell .and. icell/=10) icell = 9 ! list is also : {1:ncell} u {9}
2359 write (*,fmt=
'(A )')
" "