39 . IXS ,IXTG ,V ,IPARG ,ELBUF_TAB,
57 use element_mod ,
only : nixs,nixtg
61#include "implicit_f.inc"
70#include "subvolumes.inc"
75 INTEGER,
INTENT(IN) :: NPTS
76 my_real,
INTENT(IN) :: p(3,npts)
84 INTEGER :: NIN, ITASK,IbugANIM22, IXS(NIXS,*), IPARI(48:50),
85 . ITAB(*),IXTG(NIXTG,*), IPARG(NPARG,*)
86 my_real,
intent(inout),
TARGET ::
87 . x(3,*),v(3,*),w(3,*)
88 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
90 TYPE (GROUP_) ,
DIMENSION(NGRSH3N) :: IGRSH3N
94 INTEGER I, J, K,N, IAD(7), NBCUT, ICUT(8,7), IB, ICELL, NTRUS,INOD,
95 . IEDG(6) , KK , II , IAD0, IDSPRI, SECID, Fa(0:6),
96 .
id, icode, idble,m, ie, nbf, nbl,nnod, mnod, nintpoint, m_sum,numpt,igr
98 . cutpoint(3), cutcoor, vmin, vmax, vol, vol1, vol2
99 CHARACTER*14 SECTYPE, SECTYPE2
100 my_real :: vF(1:3,0:6)
101! my_real,
DIMENSION(:) ,
POINTER :: pface
103 my_real ,
POINTER :: pFACE0
107 my_real,
DIMENSION(:,:),
POINTER :: pcut
109 TYPE(
poly_entity),
DIMENSION(:),
POINTER :: pSUBVOL,pNNodCell,pNPointCell
110 TYPE(NODE_ENTITY)
DIMENSION(:),
POINTER :: pWhichCellNod
111 my_real,
DIMENSION(:) ,
POINTER :: pvol
112 my_real,
DIMENSION(:) ,
POINTER :: a1,a2,a3,a4,a5,a6
114 my_real :: wn1(3),wn2(3),wn3(3),wn4(3),wn5(3),wn6(3)
115 my_real :: wf1(3),wf2(3),wf3(3),wf4(3),wf5(3),wf6(3) , wf0(3)
116 my_real,
DIMENSION(:) ,
POINTER :: n1
117 my_real :: c(1:3,0:6), scut, ctmp(3), valtmp(3)
118 my_real :: diag1(3), diag2(3), uncutvol, z(3,6), volratiomin
120 integer :: pNNodCell_bak(2), EdgNod1, EdgNod2
121 INTEGER :: Cod1, Cod2, Cod1_bis, Cod2_bis
122 LOGICAL :: bAMBIGOUS, , bTWICE
123 INTEGER :: INodTAG(8), IEtab(8),IEnod(1:4), IPCUT, ICRIT,ISHELL,NSH3N, NTRIA(1:3),NCELL
124 my_real :: pcut_vect(1:3,4), ievect(1:3,8), criteria(2), pt(3,3), volratio,
norm,dist,tmp(3),scut1,scut2,beta
126 INTEGER :: nFACE, IPOS, iCUTe(2,12), iPOSe(12), tagEDG, iCOMPL
127 INTEGER :: EdgePos(1:16,2), EdgeList(1:16)
128 INTEGER :: ITAG(1:8),NFL,NEL,NEL_B,NG,IDLOC
130 CHARACTER*14 :: tmp_SECTYPE(8)
131 INTEGER :: tmp_SecID_CELL(8),tmp_NumNOD(8),tmp_NumPOINT(8),NTAG
134 TYPE(CUT_PLANE)tmpCUT(8)
142 print *,
"================================="
143 print *,
"======== SUBVOL ==========="
144 print *, "=================================
"
149 IGR = IPARI(49) ! sh3n group identifier
150 NEL = IPARI(50) ! sh3n group elements
151 II = 1 ! attention, first sh3n element of the group
153 NBF = 1+ITASK*NB/NTHREAD
154 NBL = (ITASK+1)*NB/NTHREAD
159 BRICK_LIST(NIN,IB)%POLY(1:9)%FACE(K)%Center(1) = ZERO
160 BRICK_LIST(NIN,IB)%POLY(1:9)%FACE(K)%Center(2) = ZERO
161 BRICK_LIST(NIN,IB)%POLY(1:9)%FACE(K)%Center(3) = ZERO
164 ICODE = BRICK_LIST(NIN,IB)%ICODE
165 IDBLE = BRICK_LIST(NIN,IB)%IDBLE
167 IF(ICODE==IDBLE)bTWICE = .TRUE.
170 ID = BRICK_LIST(NIN,IB)%ID
171 pSUBVOL(1:9) => BRICK_LIST(NIN,IB)%POLY(1:9)!%Vnew
172 pSUBVOL(1:9)%Vnew = ZERO
173 pNNodCell(1:9) => BRICK_LIST(NIN,IB)%POLY(1:9)!%NumNOD
174 pNNodCell(1:9)%NumNOD = 0
175 pNPointCell(1:9) => BRICK_LIST(NIN,IB)%POLY(1:9)!%NumPOINT
176 pNPointCell(1:9)%NumPOINT = 0
177 !pListNodID => BRICK_LIST(NIN,IB)%POLY(1:9)%ListNodID(1:8)
179 BRICK_LIST(NIN,IB)%POLY(1:9)%ListNodID(1) = 0
180 BRICK_LIST(NIN,IB)%POLY(1:9)%ListNodID(2) = 0
181 BRICK_LIST(NIN,IB)%POLY(1:9)%ListNodID(3) = 0
182 BRICK_LIST(NIN,IB)%POLY(1:9)%ListNodID(4) = 0
183 BRICK_LIST(NIN,IB)%POLY(1:9)%ListNodID(5) = 0
184 BRICK_LIST(NIN,IB)%POLY(1:9)%ListNodID(6) = 0
185 BRICK_LIST(NIN,IB)%POLY(1:9)%ListNodID(7) = 0
186 BRICK_LIST(NIN,IB)%POLY(1:9)%ListNodID(8) = 0
188 BRICK_LIST(NIN,IB)%POLY(1:9)%FACE0%Surf = ZERO
190 BRICK_LIST(NIN,IB)%POLY(1:9)%FACE(K)%Surf = ZERO
195 pWhichCellNod(1:8) => BRICK_LIST(NIN,IB)%NODE(1:8)!%WhichCell
196 pWhichCellNod(1:8)%WhichCell = 0
198 EdgePos(1:16,1:2) = 0
201 BRICK_LIST(NIN,IB)%POLY(1:9)%FACE(K)%Vel(1) = ZERO
202 BRICK_LIST(NIN,IB)%POLY(1:9)%FACE(K)%Vel(2) = ZERO
203 BRICK_LIST(NIN,IB)%POLY(1:9)%FACE(K)%Vel(3) = ZERO
205 BRICK_LIST(NIN,IB)%PCUT(1:9)%Vel(1) = ZERO
206 BRICK_LIST(NIN,IB)%PCUT(1:9)%Vel(2) = ZERO
207 BRICK_LIST(NIN,IB)%PCUT(1:9)%Vel(3) = ZERO
209 !--------------------------------------------------------------------------------!
210 ! 1. CHECK FIRST IF AMBIGUOUS COMBINATION !
211 !--------------------------------------------------------------------------------!
212 !bAMBIGOUS == .TRUE. => ambiguous combination detected
213 ! (code1_bis, code2_bis) is then the alternative combination
214 IF(BRICK_LIST(NIN,IB)%NBCUT == 2)THEN
215 SECTYPE = BRICK_LIST(NIN,IB)%SECTYPE(1)
216 Cod1 = IABS(BRICK_LIST(NIN,IB)%SecID_CELL(1))
218 IF(SECTYPE(1:5)=='PENTA')THEN
219 SECTYPE = BRICK_LIST(NIN,IB)%SECTYPE(2)
220 Cod2 = IABS(BRICK_LIST(NIN,IB)%SecID_CELL(2))
221 IF(SECTYPE(1:5)=='PENTA')THEN
222.AND.
IF (Cod1==10 Cod2==17 )THEN
226.AND.
ELSEIF (Cod1==11 Cod2==14 )THEN
230.AND.
ELSEIF (Cod1==12 Cod2==19 )THEN
234.AND.
ELSEIF (Cod1==13 Cod2==16 )THEN
238.AND.
ELSEIF (Cod1==15 Cod2==18 )THEN
242.AND.
ELSEIF (Cod1== 09 Cod2==20 )THEN
249 !CHECK SURFACE NORMAL AND SOLVE THE AMBIGUITY
250.NOT.
IF(bAMBIGOUS)THEN
251 !print *, "not ambiguous
"
253 !print *, "ambiguous=
", Cod1,Cod2
254 !----------------------------------------------------------------
255 !RETRIEVING LAGRANGIAN FACES & CUT PLANE NORMAL
256 !----------------------------------------------------------------
258 IAD(1:4) = (/((IB-1)*12+IABS(Gcorner(K,SECID)),K=1,4)/)
262.AND.
IF(EDGE_LIST(NIN,IAD(K))%NBCUT > 1 Gcorner(K,SECID) > 0)ICUT(1,K) = 2 !should be 1 but formulation might be updated later, keep general form using edge orientation (ICUT=2 possible).
264 IEtab(K) = EDGE_LIST(NIN,IAD(K))%CUTSHELL(ICUT(1,K))
265 CUTCOOR = EDGE_LIST(NIN,IAD(K))%CUTCOOR(ICUT(1,K)) ! manage double intersections see comment above
266 CUTPOINT(1:3) = X(1:3, EDGE_LIST(NIN,IAD(K))%NODE(1) ) + CUTCOOR * (EDGE_LIST(NIN,IAD(K))%VECTOR(1:3))
267 EDGE_LIST(NIN,IAD(K))%CUTPOINT(1:3,ICUT(1,1)) = CUTPOINT(1:3)
269 a1 => EDGE_LIST(NIN,IAD(1))%CUTPOINT(1:3,ICUT(1,1))
270 a2 => EDGE_LIST(NIN,IAD(2))%CUTPOINT(1:3,ICUT(1,2))
271 a3 => EDGE_LIST(NIN,IAD(3))%CUTPOINT(1:3,ICUT(1,3))
272 a4 => EDGE_LIST(NIN,IAD(4))%CUTPOINT(1:3,ICUT(1,4))
273 vF(:,0) = I22AERA(4,(/a1,a2,a3,a4/),C(1:3, 0 )) !Cut surface normal vector (not unitary : 2S factor)
274 ! cannot be zero if intersections are limited to cutcoor = em06 and one-em06 in i22intersect.f (0 and 1.00 impossible => no degenerate penta with scut=0.000, and no division by 0)
275 PCut_vect(1:3,1) = vF(:,0) / SQRT(SUM(vF(:,0)*vF(:,0)))
276 !----------------------------------------------------------------
278 IAD(1:4) = (/((IB-1)*12+IABS(Gcorner(K,SECID)),K=1,4)/)
281.AND.
IF(EDGE_LIST(NIN,IAD(K))%NBCUT > 1 Gcorner(K,SECID) > 0)ICUT(2,K) = 2 !should be 1 but formulation might be updated later, keep general form using edge orientation (ICUT=2 possible).
283 IEtab(4+K) = EDGE_LIST(NIN,IAD(K))%CUTSHELL(ICUT(2,K))
284 CUTCOOR = EDGE_LIST(NIN,IAD(K))%CUTCOOR(ICUT(2,K)) ! manage double intersections see comment above
285 CUTPOINT(1:3) = X(1:3, EDGE_LIST(NIN,IAD(K))%NODE(1) ) + CUTCOOR * (EDGE_LIST(NIN,IAD(K))%VECTOR(1:3))
286 EDGE_LIST(NIN,IAD(K))%CUTPOINT(1:3,ICUT(2,1)) = CUTPOINT(1:3)
288 a1 => EDGE_LIST(NIN,IAD(1))%CUTPOINT(1:3,ICUT(2,1))
289 a2 => EDGE_LIST(NIN,IAD(2))%CUTPOINT(1:3,ICUT(2,2))
290 a3 => EDGE_LIST(NIN,IAD(3))%CUTPOINT(1:3,ICUT(2,3))
291 a4 => EDGE_LIST(NIN,IAD(4))%CUTPOINT(1:3,ICUT(2,4))
292 vF(:,0) = I22AERA(4,(/a1,a2,a3,a4/),C(1:3, 0 )) !Cut surface normal vector (not unitary : 2S factor)
293 ! cannot be zero if intersections are limited to cutcoor = em06 and one-em06 in i22intersect.f (0 and 1.00 impossible => no degenerate penta with scut=0.000, and no division by 0)
294 PCut_vect(1:3,2) = vF(:,0) / SQRT(SUM(vF(:,0)*vF(:,0)))
295 !----------------------------------------------------------------
297 IAD(1:4) = (/((IB-1)*12+IABS(Gcorner(K,SECID)),K=1,4)/)
301.AND.
IF(EDGE_LIST(NIN,IAD(K))%NBCUT > 1 Gcorner(K,SECID) > 0)ICUT(1,K) = 2 !should be 1 but formulation might be updated later, keep general form using edge orientation (ICUT=2 possible).
302 !IEtab(4+K) = EDGE_LIST(NIN,IAD(K))%CUTSHELL(ICUT(1,K))
303 CUTCOOR = EDGE_LIST(NIN,IAD(K))%CUTCOOR(ICUT(1,K)) ! manage double intersections see comment above
304 CUTPOINT(1:3) = X(1:3, EDGE_LIST(NIN,IAD(K))%NODE(1) ) + CUTCOOR * (EDGE_LIST(NIN,IAD(K))%VECTOR(1:3))
305 EDGE_LIST(NIN,IAD(K))%CUTPOINT(1:3,ICUT(1,1)) = CUTPOINT(1:3)
307 a1 => EDGE_LIST(NIN,IAD(1))%CUTPOINT(1:3,ICUT(1,1))
308 a2 => EDGE_LIST(NIN,IAD(2))%CUTPOINT(1:3,ICUT(1,2))
309 a3 => EDGE_LIST(NIN,IAD(3))%CUTPOINT(1:3,ICUT(1,3))
310 a4 => EDGE_LIST(NIN,IAD(4))%CUTPOINT(1:3,ICUT(1,4))
311 vF(:,0) = I22AERA(4,(/a1,a2,a3,a4/),C(1:3, 0 )) !Cut surface normal vector (not unitary : 2S factor)
312 ! cannot be zero if intersections are limited to cutcoor = em06 and one-em06 in i22intersect.f (0 and 1.00 impossible => no degenerate penta with scut=0.000, and no division by 0)
313 PCut_vect(1:3,3) = vF(:,0) / SQRT(SUM(vF(:,0)*vF(:,0)))
314 !----------------------------------------------------------------
316 IAD(1:4) = (/((IB-1)*12+IABS(Gcorner(K,SECID)),K=1,4)/)
320.AND.
IF(EDGE_LIST(NIN,IAD(K))%NBCUT > 1 Gcorner(K,SECID) > 0)ICUT(2,K) = 2 !should be 1 but formulation might be updated later, keep general form using edge orientation (ICUT=2 possible).
321 !IEtab(4+K) = EDGE_LIST(NIN,IAD(K))%CUTSHELL(ICUT(2,K))
322 CUTCOOR = EDGE_LIST(NIN,IAD(K))%CUTCOOR(ICUT(2,K)) ! manage double intersections see comment above
323 CUTPOINT(1:3) = X(1:3, EDGE_LIST(NIN,IAD(K))%NODE(1) ) + CUTCOOR * (EDGE_LIST(NIN,IAD(K))%VECTOR(1:3))
324 EDGE_LIST(NIN,IAD(K))%CUTPOINT(1:3,ICUT(2,1)) = CUTPOINT(1:3)
326 a1 => EDGE_LIST(NIN,IAD(1))%CUTPOINT(1:3,ICUT(2,1))
327 a2 => EDGE_LIST(NIN,IAD(2))%CUTPOINT(1:3,ICUT(2,2))
328 a3 => EDGE_LIST(NIN,IAD(3))%CUTPOINT(1:3,ICUT(2,3))
329 a4 => EDGE_LIST(NIN,IAD(4))%CUTPOINT(1:3,ICUT(2,4))
330 vF(:,0) = I22AERA(4,(/a1,a2,a3,a4/),C(1:3, 0 )) !Cut surface normal vector (not unitary : 2S factor)
331 ! cannot be zero if intersections are limited to cutcoor = em06 and one-em06 in i22intersect.f (0 and 1.00 impossible => no degenerate penta with scut=0.000, and no division by 0)
332 PCut_vect(1:3,4) = vF(:,0) / SQRT(SUM(vF(:,0)*vF(:,0)))
333 !----------------------------------------------------------------
334 !COMPUTING NORMALS AT LAGRANGIAN FACES
335 !----------------------------------------------------------------
338 IEnod(3:4)=IRECT_L(3:4,IE)
339 IF(IEnod(3)==IEnod(4))THEN
341 Diag1(1:3) = IRECT_L((/5,9,13/),IE) - IRECT_L((/6,10,14/),IE)
342 Diag2(1:3) = IRECT_L((/5,9,13/),IE) - IRECT_L((/7,11,15/),IE)
343 IEvect(1,I) = + Diag1(2)*Diag2(3) - diag1(3)*Diag2(2)
344 IEvect(2,I) = + Diag1(3)*Diag2(1) - diag1(1)*Diag2(3)
345 IEvect(3,I) = + Diag1(1)*Diag2(2) - diag1(2)*Diag2(1)
346 IEvect(1:3,I) = HALF * IEvect(1:3,I) / SQRT(SUM( IEvect(1:3,I) * IEvect(1:3,I) ))
349 Diag1(1:3) = IRECT_L((/5, 9,13/),IE) - IRECT_L((/7,11,15/),IE)
350 Diag2(1:3) = IRECT_L((/6,10,14/),IE) - IRECT_L((/8,12,16/),IE)
351 IEvect(1,I) = + Diag1(2)*Diag2(3) - diag1(3)*Diag2(2)
352 IEvect(2,I) = + Diag1(3)*Diag2(1) - diag1(1)*Diag2(3)
353 IEvect(3,I) = + Diag1(1)*Diag2(2) - diag1(2)*Diag2(1)
354 IEvect(1:3,I) = HALF * IEvect(1:3,I) / SQRT(SUM( IEvect(1:3,I) * IEvect(1:3,I) ))
357 !----------------------------------------------------------------
358 !COMPUTING DETERMINATION CRITERIA
359 !----------------------------------------------------------------
364 CRITERIA(ICRIT) = CRITERIA(ICRIT) + ABS( SUM(IEvect(1:3,(IPCUT-1)*4+J)*PCut_vect( 1:3 , (ICRIT-1)*2 + IPCUT) ) )
368 !----------------------------------------------------------------
369 !DETERMINING THE CORRECT COMBINATION
370 !----------------------------------------------------------------
371 IF (CRITERIA(1) > CRITERIA(2))THEN
373 ELSEIF(CRITERIA(2) > CRITERIA(1))THEN
375 BRICK_LIST(NIN,IB)%SecID_CELL(1:2) = (/ Cod1_bis, Cod2_bis /)
376 BRICK_LIST(NIN,IB)%SECTYPE(1) = StrCode(Cod1_bis)
377 BRICK_LIST(NIN,IB)%SECTYPE(2) = StrCode(Cod2_bis)
382 !----------------------------------------------------------------
384 ENDIF!(BRICK_LIST(NIN,IB)%NBCUT == 2)
387 !--------------------------------------------------------------------------------!
388 ! 2. COMPUTE POLYHEDRON VOLUME AND FACES !
389 !--------------------------------------------------------------------------------!
390 NCELL = BRICK_LIST(NIN,IB)%NBCUT
398.AND.
IF( ID>NFL ID<=NFL+NEL_B)THEN
400 UNCUTVOL = ELBUF_TAB(NG)%GBUF%VOL(IDLOC)
412 SECTYPE = BRICK_LIST(NIN,IB)%SECTYPE(ICELL)
413 SECID = BRICK_LIST(NIN,IB)%SecID_Cell(ICELL)
420 IF(SECTYPE(1:5)=='TETRA')THEN
423 NNOD = N_TETRA+C_TETRA
425 ELSEIF(SECTYPE(1:5)=='PENTA')THEN
428 NNOD = N_PENTA+C_PENTA
430 ELSEIF(SECTYPE(1:5)=='POLY3')THEN
433 NNOD = N_POLY3+C_POLY3
435 ELSEIF(SECTYPE(1:5)=='HEXAE')THEN
438 NNOD = N_HEXAE+C_HEXAE
440 ELSEIF(SECTYPE(1:6)=='POLY4 ')THEN
443 NNOD = N_POLY4+C_POLY4
445 ELSEIF(SECTYPE(1:6)=='POLY4A')THEN
448 NNOD = N_POLY4A+C_POLY4A
450 ELSEIF(SECTYPE(1:6)=='POLY4B')THEN
453 NNOD = N_POLY4B+C_POLY4B
455 ELSEIF(SECTYPE(1:5)=='POLYC')THEN
458 NNOD = N_POLYC+C_POLYC
462 NINTPOINT = NINTPOINT + NTRUS
463 IAD(1:NTRUS) = (/((IB-1)*12+IABS(Gcorner(K,SECID)),K=1,NTRUS)/)
464 IAD(NTRUS+1) = IAD(1)
466 EdgeList(IABS(Gcorner(K,SECID))) = EdgeList(IABS(Gcorner(K,SECID))) + 1
469 !----------------------------------------------------------------
470 !calculation of intersection point coordinates
471 !----------------------------------------------------------------
472 !if twice the same intersections, the 2nd one is the biggest one choose farthest intersection points
474 tagEDG = Gcorner(K,SECID)
476 !Negative orientation: we take the closest
481 IF(EDGE_LIST(NIN,IAD(K))%NBCUT==1)THEN
487 EdgePos(IABS(tagEdg), ipos) = 1
488 IF(iCUTe(ipos,tagEDG)==1)ipos = MOD(ipos,2)+1 !already taken by Polyhedre precedent, we take the other
489 CUTCOOR = EDGE_LIST(NIN,IAD(K))%CUTCOOR(ipos)
490 CUTPOINT(1:3) = X(1:3, EDGE_LIST(NIN,IAD(K))%NODE(1) ) + CUTCOOR * (EDGE_LIST(NIN,IAD(K))%VECTOR(1:3))
491 IE = EDGE_LIST(NIN,IAD(K))%CUTSHELL(ipos)
492 EDGE_LIST(NIN,IAD(K))%CUTPOINT(1:3,ipos) = CUTPOINT(1:3)
493 EDGE_LIST(NIN,IAD(K))%CUTVEL(1:3,ipos) = IRECT_L(24:26,IE)
494 ICUTe(ipos, IABS(Gcorner(K,SECID))) = 1 !We will take the following intersection point.
497! print *, "gcorner = ", gcorner(1:ntrus,secid)
500 if(
brick_list(nin,ib)%ICODE==0.and.icell>=1)
then
501 print *,
"error i22subvol."
507 nsh3n = getnumtria(getpolyhedratype(secid))
508 IF(ii<=nel-nsh3n.AND.nspmd<=1)
THEN
523 ntria(1:3) = gtria(1:3,k,getpolyhedratype(secid))
524 x(1:3,ixtg(2,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(1)) )%CUTPOINT(1:3,ipose(ntria(1)) )
525 x(1:3,ixtg(3,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(2)) )%CUTPOINT(1:3,ipose(ntria(2)) )
526 x(1:3,ixtg(4,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(3)) )%CUTPOINT(1:3,ipose(ntria(3)) )
527 v(1:3,ixtg(2,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(1)) )%CUTVEL(1:3,ipose(ntria(1)) )
528 v(1:3,ixtg(3,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(2)) )%CUTVEL(1:3,ipose(ntria(2)) )
529 v(1:3,ixtg(4,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(3)) )%CUTVEL(1:3,ipose(ntria(3)) )
546#include "lockoff.inc"
557 IF(sectype(1:5)==
'TETRA')
THEN
560 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
561 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
562 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
563 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
564 fa(1:3) = gface(1:3,secid)
565 vf(:,1) =
i22aera(3,(/n1,a2,a1/), c(1:3,fa(1)))
566 vf(:,2) =
i22aera(3,(/n1,a3,a2/), c(1:3,fa(2)))
567 vf(:,3) =
i22aera(3,(/n1,a1,a3/), c(1:3,fa(3)))
568 vf(:,0) =
i22aera(3,(/a1,a2,a3/), c(1:3, 0 ))
569 vol = sum((/(vf(:,i)*c(:,fa(i)),i=0,3)/))
570 vol = third * abs(vol)
571 volratio = vol/uncutvol
572 IF(volratio <= volratiomin)
THEN
574 nintpoint = nintpoint - ntrus
578 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
579 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
580 brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) + a1 + a3
581 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c
582 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
583 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3)
584 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3,
585 scut = sqrt(sum(vf(:,0)*vf(:,0)))
586 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
587 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
588 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
589 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
590 pface(fa(3))%Surf = sqrt(sum(vf
593 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
594 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
599 psubvol(icell)%Vnew = vol
600 pnnodcell(icell)%NumNOD = mnod
601 pnpointcell(icell)%NumPOINT= nnod
602 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/a1(1),a2(1),a3(1),n1(1)/) ) / four
603 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/a1(2),a2(2),a3(2),n1(2)/) ) / four
604 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum( (/a1(3),a2(3),a3(3),n1(3)/) ) / four
605 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
606 inodtag(gnode(1:mnod,secid)) = 1
607 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
610 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
611 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
612 n1 => v(1:3,ixs(gnode(1,secid
617 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = third* (a1(1:3) + a2(1:3) + a3(1:3))
619 ELSEIF(sectype(1:5)==
'PENTA')
THEN
621 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
622 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
623 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
624 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
625 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
626 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
627 fa(1:4) = gface(1:4,secid)
628 vf(:,1) =
i22aera(3,(/n1,a2,a1/), c(1:3,fa(1)))
629 vf(:,2) =
i22aera(3,(/n2,a4,a3/),
630 vf(:,3) =
i22aera(4,(/n1,n2,a3,a2/),c(1:3,fa(3)))
631 vf(:,4) =
i22aera(4,(/n2,n1,a1,a4/),c(1:3,fa(4)))
632 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/),c(1:3, 0 ))
633 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,4)/))
634 vol = third * abs(vol)
635 volratio = vol/uncutvol
636 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
637 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(9)%FACE(fa(3))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3)+ a3
639 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
640 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
642 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
643 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
644 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
645 scut = sqrt(sum(vf(:,0)*vf(:,0)))
646 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
647 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
648 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
649 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
650 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
651 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
653 IF(volratio <= volratiomin)
THEN
654 IF(scut / exp(0.666*log(uncutvol)) <= em03)
THEN
656 nintpoint = nintpoint - ntrus
662 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
663 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
669 psubvol(icell)%Vnew = vol
670 pnnodcell(icell)%NumNOD = mnod
671 pnpointcell(icell)%NumPOINT= nnod
672 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/a1(1),a2(1),a3(1),a4(1),n1(1),n2(1)
673 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/a1(2),a2(2),a3(2),a4(2),n1(2),n2(2)/) ) / six
674 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum( (/a1(3),a2(3),a3(3),a4(3),n1(3),n2(3)/) ) / six
675 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
676 inodtag(gnode(1:mnod,secid)) = 1
677 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
679 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
680 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
681 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
682 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
683 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
684 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
690 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = fourth* (a1(1:3) + a2(1:3) + a3(1:3) + a4(1:3))
692 ELSEIF(sectype(1:5)==
'POLY3')
THEN
694 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
695 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
696 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
697 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
698 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
699 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
700 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
701 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
702 fa(1:5) = gface(1:5,secid)
703 vf(:,1) =
i22aera(5,(/n1,n2,n3,a3,a2/),c(1:3,fa(1)))
704 vf(:,2) =
i22aera(3,(/n3,a4,a3/), c(1:3,fa(2)))
705 vf(:,3) =
i22aera(4,(/n3,n2,a5,a4/), c(1:3,fa(3)))
706 vf(:,4) =
i22aera(4,(/n2,n1,a1,a5/), c(1:3,fa(4)))
707 vf(:,5) =
i22aera(3,(/n1,a2,a1/), c(1:3,fa(5)))
708 vf(:,0) =
i22aera(5,(/a1,a2,a3,a4,a5/),c(1:3, 0 ))
709 brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) + a3 + a2
711 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 + a4
712 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:
713 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 + a1
714 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
715 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
716 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
717 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
718 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
719 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
720 scut = sqrt(sum(vf(:,0)*vf(:,0)))
721 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
722 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
723 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
724 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
725 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
726 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
727 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
730 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
738 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,5)/))
739 vol = third * abs(vol)
740 psubvol(icell)%Vnew = vol
741 pnnodcell(icell)%NumNOD = mnod
742 pnpointcell(icell)%NumPOINT= nnod
743 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/a1(1),a2(1),a3(1),a4(1),a5(1),n1(1),n2(1
744 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/a1(2),a2(2),a3(2),a4(2),a5(2),n1(2),n2(2),n3(2)/) ) / eight
745 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
746 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid
747 inodtag(gnode(1:mnod,secid)) = 1
748 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
750 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
751 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
752 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
753 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
754 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
755 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
756 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
757 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
764 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_fifth * (a1+a2+a3+a4+a5)
766 ELSEIF(sectype(1:5)==
'HEXAE')
THEN
768 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
769 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
770 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
771 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
772 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
773 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
774 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
775 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
776 fa(1:5) = gface(1:5,secid)
777 vf(:,1) =
i22aera(4,(/n4,n3,n2,n1/), c(1:3,fa(1)))
778 vf(:,2) =
i22aera(4,(/n1,n2,a2,a1/), c(1:3,fa(2)))
779 vf(:,3) =
i22aera(4,(/n2,n3,a3,a2/), c(1:3,fa(3)))
780 vf(:,4) =
i22aera(4,(/n3,n4,a4,a3/), c(1:3,fa(4)))
781 vf(:,5) =
i22aera(4,(/n4,n1,a1,a4/), c(1:3,fa(5)))
782 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/), c(1:3, 0 ))
785 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
787 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
788 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
789 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
790 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
791 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
792 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa
793 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3,
794 scut = sqrt(sum(vf(:,0)*vf(:,0)))
795 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
796 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
797 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
798 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
799 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
800 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
801 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
804 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
805 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
811 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,5)/))
812 vol = third * abs(vol)
813 psubvol(icell)%Vnew = vol
814 pnnodcell(icell)%NumNOD = mnod
815 pnpointcell(icell)%NumPOINT= nnod
817 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
818 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
819 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
821 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
823 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
824 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
825 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
826 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
828 n2 => v(1:3,ixs(gnode(2,secid)+1,
id
829 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
830 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
837 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = fourth * (a1+a2+a3+a4)
839 ELSEIF(sectype(1:6)==
'POLY4 ')
THEN
841 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
842 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
843 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
844 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose
845 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
847 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
848 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
849 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
850 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
851 fa(1:6) = gface(1:6,secid)
852 vf(:,1) =
i22aera(3,(/n1,a2,a1/) , c(1:3,fa(1)))
853 vf(:,2) =
i22aera(5,(/n2,n4,a5,a4,n3/), c(1:3,fa(2)))
854 vf(:,3) =
i22aera(5,(/a1,a6,n4,n2,n1
855 vf(:,4) =
i22aera(5,(/n1,n2,n3,a3,a2/
856 vf(:,5) =
i22aera(3,(/n4,a6,a5/), c(1:3,fa(5)))
857 vf(:,6) =
i22aera(3,(/n3,a4,a3/), c(1:3,fa(6)))
858 vf(:,0) =
i22aera(6,(/a1,a2,a3,a4,a5,a6/),c(1:3, 0 ))
859 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,6)/))
860 vol = third * abs(vol)
864 if((vol1+vol2)/uncutvol>=one-em04)
then
866 nintpoint = nintpoint - ntrus
869 elseif( abs((vol1-vol2)/uncutvol)<=em04 )
then
872 tmp(1) = c(1, 0 ) -
brick_list(nin,ib)%POLY(1)%FACE0%Center(1)
873 tmp(2) = c(2, 0 ) -
brick_list(nin,ib)%POLY(1)%FACE0%Center(2)
874 tmp(3) = c(3, 0 ) -
brick_list(nin,ib)%POLY(1)%FACE0%Center(3)
875 dist = tmp(1)*tmp(1)+tmp(2)*tmp(2)+tmp
877 if (dist / exp(0.333*log(uncutvol)) <= em04)
THEN
879 nintpoint = nintpoint - ntrus
885 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
886 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
887 brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) + a1 + a6
888 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3
889 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
890 brick_list(nin,ib)%POLY(9)%FACE(fa(6))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(6))%Center(1:3) + a4 + a3
891 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
892 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
893 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
894 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
895 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
896 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%Center(1:3) = c(1:3,fa(6))
897 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
898 scut = sqrt(sum(vf(:,0)*vf(:,0)))
899 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
900 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
901 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
902 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
903 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
904 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
905 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
906 pface(fa(6))%Surf = sqrt(sum(vf(:,6)*vf(:,6)))
909 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
910 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
918 psubvol(icell)%Vnew = vol
919 pnnodcell(icell)%NumNOD = mnod
920 pnpointcell(icell)%NumPOINT= nnod
921 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
922 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
923 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
924 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
925 inodtag(gnode(1:mnod,secid)) = 1
926 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
928 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
929 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
930 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
931 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
932 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
933 a6 =>
edge_list(nin,iad(6))%CUTVEL(1:3,ipose(6))
934 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
935 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
936 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
937 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
945 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a2+a3+a4+a5+a6 )
947 ELSEIF(sectype(1:6)==
'POLY4A')
THEN
949 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
950 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
951 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
952 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
953 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
954 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
955 n1 => x(1:3,ixs(gnode(1,secid)
956 n2 => x(1:3,ixs(gnode
957 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
958 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
959 fa(1:6) = gface(1:6,secid)
960 vf(:,1) =
i22aera(3,(/n1,a1,a6/) , c(1:3,fa(1)))
961 vf(:,2) =
i22aera(4,(/n1,n2,a2,a1/) , c(1:3,fa(2)))
962 vf(:,3) =
i22aera(5,(/n2,n3,n4,a3,a2/), c(1:3,fa(3)))
963 vf(:,4) =
i22aera(3,(/n4,a4,a3/) , c(1:3,fa(4)))
964 vf(:,5) =
i22aera(4,(/n4,n3,a5,a4/) , c(1:3,fa(5)))
965 vf(:,6) =
i22aera(5,(/n3,n2,n1,a6,a5/), c(1:3,fa(6)))
966 vf(:,0) =
i22aera(6,(/a1,a2,a3,a4,a5
967 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 + a6
968 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 + a1
969 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
970 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
971 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
973 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
974 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
975 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
976 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
977 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
978 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%Center(1:3)
979 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
980 scut = sqrt(sum(vf(:,0)*vf(:,0)))
981 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
982 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
983 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
984 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
985 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
986 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
987 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
988 pface(fa(6))%Surf = sqrt(sum(vf(:,6)*vf(:,6)))
991 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
992 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
1000 vol = sum((/(vf(:,i)*c(1:3,fa(i
1002 psubvol(icell)%Vnew = vol
1003 pnnodcell(icell)%NumNOD = mnod
1004 pnpointcell(icell)%NumPOINT= nnod
1005 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
1006 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
1007 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum((/a1(3),a2(3),a3(3),a4(3),a5(3),a6
1009 inodtag(gnode(1:mnod,secid)) = 1
1010 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
1012 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
1013 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
1014 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
1015 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
1016 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
1017 a6 =>
edge_list(nin,iad(6))%CUTVEL(1:3,ipose(6))
1018 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
1019 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
1020 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
1021 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
1029 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a2+a3+a4+a5+a6 )
1031 ELSEIF(sectype(1:6)==
'POLY4B')
THEN
1033 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1034 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1035 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1036 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1037 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1038 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1039 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1040 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1041 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1042 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1043 fa(1:6) = gface(1:6,secid)
1044 vf(:,1) = -
i22aera(3,(/n1,a1,a6/) , c(1:3,fa(1)))
1045 vf(:,2) = -
i22aera(4,(/n1,n2,a2,a1/) , c(1:3,fa(2)))
1047 vf(:,4) = -
i22aera(3,(/n4,a4,a3/) , c(1:3,fa(4)))
1048 vf(:,5) = -
i22aera(4,(/n4,n3,a5,a4/) , c(1:3,fa(5)))
1049 vf(:,6) = -
i22aera(5,(/n3,n2,n1,a6,a5/), c(1:3,fa(6)))
1050 vf(:,0) = -
i22aera(6,(/a1,a2,a3,a4,a5,a6/),c(1:3, 0 ))
1052 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 + a1
1055 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
1056 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
1057 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
1058 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
1059 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
1060 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
1061 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c
1062 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%Center(1:3) = c(1:3,fa(6
1063 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
1064 scut = sqrt(sum(vf(:,0)*vf(:,0)))
1065 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
1067 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
1068 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
1069 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
1070 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
1071 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
1072 pface(fa(6))%Surf = sqrt(sum(vf(:,6)*vf(:,6)))
1075 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
1076 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
1084 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,6)/))
1085 vol = third * abs(vol)
1086 psubvol(icell)%Vnew = vol
1087 pnnodcell(icell)%NumNOD = mnod
1088 pnpointcell(icell)%NumPOINT= nnod
1089 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
1090 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
1091 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
1092 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
1093 inodtag(gnode(1:mnod,secid)) = 1
1094 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
1096 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
1097 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
1098 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
1099 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
1100 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
1101 a6 =>
edge_list(nin,iad(6))%CUTVEL(1:3,ipose(6))
1102 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
1103 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
1104 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
1105 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
1113 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a2+a3+a4+a5+a6 )
1115 ELSEIF(sectype(1:5)==
'POLYC')
THEN
1117 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1118 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1119 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1120 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1121 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1122 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1123 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1124 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1125 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1126 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1127 fa(1:6) = gface(1:6,secid)
1128 vf(:,1) =
i22aera(4,(/n1,n2,n3,n4/) , c(1:3,fa(1)))
1129 vf(:,2) =
i22aera(4,(/n1,a1,a2,n2/) , c(1:3,fa(2)))
1130 vf(:,3) =
i22aera(4,(/n2,a2,a3,n3/) , c(1:3,fa(3)))
1131 vf(:,4) =
i22aera(4,(/n1,n4,a4,a1/) , c(1:3,fa(4)))
1132 vf(:,5) =
i22aera(7,(/n4,n3,a3,a6,a5,a4,n4/) , c(1:3,fa(5)))
1133 vf(:,0) =
i22aera(6,(/a1,a4,a5,a6,a3,a2/) , c(1:3, 0 ))
1134 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
1135 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
1137 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
1138 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
1139 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
1140 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
1141 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
1142 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
1143 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
1144 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
1145 scut = sqrt(sum(vf(:,0)*vf(:,0)))
1146 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
1147 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
1148 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
1149 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
1150 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
1151 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
1152 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
1155 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
1156 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
1164 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,5)/))
1165 vol = third * abs(vol)
1166 psubvol(icell)%Vnew = vol
1167 pnnodcell(icell)%NumNOD = mnod
1168 pnpointcell(icell)%NumPOINT= nnod
1169 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
1170 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
1171 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
1172 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
1173 inodtag(gnode(1:mnod,secid)) = 1
1174 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
1176 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
1177 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
1178 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
1179 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
1180 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
1181 a6 =>
edge_list(nin,iad(6))%CUTVEL(1:3,ipose(6))
1182 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
1183 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
1184 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
1185 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
1192 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a4+a5+a6+a3+a2)
1197 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
1198 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
1200 pface(fa(j))%Surf =- pface(fa(j))%Surf
1202 psubvol(icell)%Vnew =- psubvol(icell)%Vnew
1203 pnnodcell(icell)%NumNOD = 8-mnod
1209 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = zero
1210 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = zero
1211 IF(i22_aleul == 1)
THEN
1212 IF(sectype(1:5)==
'TETRA')
THEN
1214 fa(1:3) = gface(1:3,secid)
1216 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1217 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1218 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1220 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1221 j = iad(1)-(ib-1)*12;
1224 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1225 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1226 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1228 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1229 j = iad(2)-(ib-1)*12;
1232 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1233 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1234 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1236 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1237 j = iad(3)-(ib-1)*12;
1240 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1241 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1242 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1244 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1245 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1246 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1247 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1249 wf1(1) = third*(wn1(1)+wa2(1)+wa1(1))
1250 wf1(2) = third*(wn1(2)+wa2(2)+wa1(2))
1251 wf1(3) = third*(wn1(
1253 wf2(1) = third*(wn1(1)+wa3(1)+wa2(1))
1254 wf2(2) = third*(wn1(2)+wa3(2)+wa2(2))
1255 wf2(3) = third*(wn1(3)+wa3(3)+wa2(3))
1257 wf3(1) = third*(wn1(1)+wa1(1)+wa3(1))
1258 wf3(2) = third*(wn1(2)+wa1(2)+wa3(2))
1259 wf3(3) = third*(wn1(3)+wa1(3)+wa3(3))
1261 wf0(1) = third*(wa1(1)+wa2(1)+wa3(1))
1262 wf0(2) = third*(wa1(2)+wa2(2)+wa3(2))
1263 wf0(3) = third*(wa1(3)+wa2(3)+wa3(3))
1265 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1266 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1267 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1268 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1271 ELSEIF(sectype(1:5)==
'PENTA')
THEN
1273 fa(1:4) = gface(1:4,secid)
1274 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1275 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1276 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1277 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1278 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1279 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1281 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1282 j = iad(1)-(ib-1)*12;
1285 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1286 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1287 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1289 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1290 j = iad(2)-(ib-1)*12;
1293 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1294 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1295 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1297 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1298 j = iad(3)-(ib-1)*12;
1301 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1302 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1303 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1305 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1306 j = iad(4)-(ib-1)*12;
1309 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1310 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1311 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1313 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1314 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1315 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1317 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1318 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1319 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1321 wf1(1) = third*(wn1(1)+wa2(1)+wa1(1))
1322 wf1(2) = third*(wn1(2)+wa2(2)+wa1(2))
1323 wf1(3) = third*(wn1(3)+wa2(3)+wa1(3))
1325 wf2(1) = third*(wn2(1)+wa4(1)+wa3(1))
1326 wf2(2) = third*(wn2(2)+wa4(2)+wa3(2))
1327 wf2(3) = third*(wn2(3)+wa4(3)+wa3
1329 wf3(1) = fourth*(wn1(1)+wn2(1)+wa3(1)+wa2(1))
1330 wf3(2) = fourth*(wn1
1331 wf3(3) = fourth*(wn1(3)+wn2(3)+wa3(3)+wa2(3))
1333 wf4(1) = fourth*(wn2(1)+wn1(1)+wa1(1)+wa4(1))
1334 wf4(2) = fourth*(wn2(2)+wn1
1335 wf4(3) = fourth*(wn2(3)+wn1(3)+wa1(3)+wa4(3))
1337 wf0(1) = fourth*(wa1(1)+wa2(1)+wa3(1)+wa4(1))
1338 wf0(2) = fourth*(wa1(2)+wa2(2)+wa3(2)+wa4(2))
1339 wf0(3) = fourth*(wa1(3)+wa2(3)+wa3(3)+wa4(3))
1341 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1342 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1343 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1344 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1345 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1347 ELSEIF(sectype(1:5)==
'POLY3')
THEN
1349 fa(1:5) = gface(1:5,secid)
1350 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1351 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1352 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1353 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1354 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1355 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1356 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1357 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1359 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1360 j = iad(1)-(ib-1)*12;
1363 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1364 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1365 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1367 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1368 j = iad(2)-(ib-1)*12;
1371 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1372 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1373 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1375 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1376 j = iad(3)-(ib-1)*12;
1379 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1380 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1381 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1384 j = iad(4)-(ib-1)*12;
1387 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1388 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1389 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1391 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(5));
1392 j = iad(5)-(ib-1)*12;
1395 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1396 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1397 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1399 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1400 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1401 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1403 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1404 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1405 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1407 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1408 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1409 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1411 wf1(1) = one_fifth*(wn1(1)+wn2(1)+wn3(1)+wa3(1)+wa2(1))
1412 wf1(2) = one_fifth*(wn1(2)+wn2(2)+wn3(2)+wa3(2)+wa2(2))
1413 wf1(3) = one_fifth*(wn1(3)+wn2(3)+wn3(3)+wa3(3)+wa2(3))
1415 wf2(1) = third*(wn3(1)+wa4(1)+wa3(1))
1416 wf2(2) = third*(wn3(2)+wa4(2)+wa3(2))
1417 wf2(3) = third*(wn3(3)+wa4(3)+wa3(3))
1419 wf3(1) = fourth*(wn3(1)+wn2(1)+wa5(1)+wa4(1))
1420 wf3(2) = fourth*(wn3(2)+wn2(2)+wa5(2)+wa4(2))
1421 wf3(3) = fourth*(wn3(3)+wn2(3)+wa5(3)+wa4(3))
1423 wf4(1) = fourth*(wn2(1)+wn1(1)+wa1(1)+wa5(1))
1424 wf4(2) = fourth*(wn2(2)+wn1(2)+wa1(2)+wa5(2))
1425 wf4(3) = fourth*(wn2(3)+wn1(3)+wa1(3)+wa5(3))
1427 wf5(1) = third*(wn1(1)+wa2(1)+wa1(1))
1428 wf5(2) = third*(wn1(2)+wa2(2)+wa1(2))
1429 wf5(3) = third*(wn1(3)+wa2(3)+wa1(3))
1431 wf0(1) = one_fifth*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1))
1432 wf0(2) = one_fifth*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2))
1433 wf0(3) = one_fifth*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3))
1435 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0
1436 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1437 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1438 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1439 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4
1440 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1442 ELSEIF(sectype(1:5)==
'HEXAE')
THEN
1444 fa(1:5) = gface(1:5,secid)
1446 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose
1447 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1448 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1449 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1450 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1451 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1452 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1454 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1455 j = iad(1)-(ib-1)*12;
1458 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1459 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1460 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1462 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1463 j = iad(2)-(ib-1)*12;
1466 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1467 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1468 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1470 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1471 j = iad(3)-(ib-1)*12;
1474 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1475 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1476 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1478 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1479 j = iad(4)-(ib-1)*12;
1482 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1483 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1484 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1486 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1487 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1488 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1490 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1491 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1492 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1494 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1495 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1496 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1498 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1499 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1500 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1502 wf1(1) = fourth*(wn4(1)+wn3(1)+wn2(1)+wn1(1))
1503 wf1(2) = fourth*(wn4(2)+wn3(2)+wn2(2)+wn1(2))
1504 wf1(3) = fourth*(wn4(3)+wn3(3)+wn2(3)+wn1(3))
1506 wf2(1) = fourth*(wn1(1)+wn2(1)+wa2(1)+wa1(1))
1507 wf2(2) = fourth*(wn1(2)+wn2(2)+wa2(2)+wa1(2))
1508 wf2(3) = fourth*(wn1(3)+wn2(3)+wa2(3)+wa1(3))
1510 wf3(1) = fourth*(wn2(1)+wn3(1)+wa3(1)+wa2(1))
1511 wf3(2) = fourth*(wn2(2)+wn3(2)+wa3
1512 wf3(3) = fourth*(wn2(3)+wn3(3)+wa3(3)+wa2(3))
1514 wf4(1) = fourth*(wn3(1)+wn4(1)+wa4(1)+wa3(1))
1515 wf4(2) = fourth*(wn3(2)+wn4(2)+wa4(2)+wa3(2))
1516 wf4(3) = fourth*(wn3(3)+wn4(3)+wa4(3)+wa3(3))
1518 wf5(1) = fourth*(wn4(1)+wn1(1)+wa1(1)+wa4(1))
1519 wf5(2) = fourth*(wn4(2)+wn1(2)+wa1(2)+wa4(2))
1520 wf5(3) = fourth*(wn4(3)+wn1(3)+wa1(3)+wa4(3))
1522 wf0(1) = one_fifth*(wa1(1)+wa2(1)+wa3(1)+wa4(1))
1523 wf0(2) = one_fifth*(wa1(2)+wa2(2)+wa3(2)+wa4(2))
1524 wf0(3) = one_fifth*(wa1(3)+wa2(3)+wa3(3)+wa4(3))
1526 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1527 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1528 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1529 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1530 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1531 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1534 ELSEIF(sectype(1:6)==
'POLY4 ')
THEN
1536 fa(1:6) = gface(1:6,secid)
1537 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1538 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1539 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1540 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1541 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1542 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1543 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1544 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1545 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1546 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1548 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1549 j = iad(1)-(ib-1)*12;
1552 wa1(1) = beta * w(1,edgnod1
1553 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1554 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1556 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1557 j = iad(2)-(ib-1)*12;
1560 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1561 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1562 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1564 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1565 j = iad(3)-(ib-1)*12;
1568 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1569 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1570 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1572 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1573 j = iad(4)-(ib-1)*12;
1576 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1577 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1578 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1580 beta =
edge_list(nin,iad(5))%CUTCOOR(ipose(5));
1581 j = iad(5)-(ib-1)*12;
1584 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1585 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1586 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1588 beta =
edge_list(nin,iad(6))%CUTCOOR(ipose(6));
1589 j = iad(6)-(ib-1)*12;
1592 wa6(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1593 wa6(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1594 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1596 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1597 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1598 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1600 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1601 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1602 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1604 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1605 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1606 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1608 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1609 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1610 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1612 wf1(1) = third*(wn1(1)+wa1(1)+wa6(1))
1613 wf1(2) = third*(wn1(2)+wa1(2)+wa6(2))
1614 wf1(3) = third*(wn1(3)+wa1(3)+wa6(3))
1616 wf2(1) = fourth*(wn1(1)+wn2(1)+wa2(1)+wa1(1))
1617 wf2(2) = fourth*(wn1(2)+wn2(2)+wa2(2)+wa1(2))
1618 wf2(3) = fourth*(wn1(3)+wn2(3)+wa2(3)+wa1(3))
1620 wf3(1) = one_fifth*(wn2(1)+wn3(1)+wn4(1)+wa3(1)+wa2(1))
1621 wf3(2) = one_fifth*(wn2(2)+wn3(2)+wn4(2)+wa3(2)+wa2(2))
1622 wf3(3) = one_fifth*(wn2(3)+wn3(3)+wn4(3)+wa3(3)+wa2(3))
1624 wf4(1) = third*(wn4(1)+wa4(1)+wa3(1))
1625 wf4(2) = third*(wn4(2)+wa4(2)+wa3(2))
1626 wf4(3) = third*(wn4(3)+wa4(3)+wa3(3))
1628 wf5(1) = fourth*(wn4(1)+wn3(1)+wa5(1)+wa4(1))
1629 wf5(2) = fourth*(wn4(2)+wn3(2)+wa5(2)+wa4(2))
1630 wf5(3) = fourth*(wn4(3)+wn3(3)+wa5(3)+wa4(3))
1632 wf6(1) = fourth*(wn3(1)+wn2(1)+wn1(1)+wa6(1)+wa5(1))
1633 wf6(2) = fourth*(wn3(2)+wn2(2)+wn1(2)+wa6(2)+wa5(2))
1634 wf6(3) = fourth*(wn3(3)+wn2(3)+wn1(3)+wa6(3)+wa5(3))
1636 wf0(1) = one_over_6*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1)+wa6(1))
1637 wf0(2) = one_over_6*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2)+wa6(2))
1638 wf0(3) = one_over_6*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3)+wa6(3))
1640 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1641 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1642 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1643 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1644 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1645 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1646 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%W(1:3) = wf6(1:3)
1649 ELSEIF(sectype(1:6)==
'POLY4A')
THEN
1651 fa(1:6) = gface(1:6,secid)
1652 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1653 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1654 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1655 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1656 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1657 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1658 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1659 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1660 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1661 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1664 j = iad(1)-(ib-1)*12;
1667 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1668 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1669 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1671 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1672 j = iad(2)-(ib-1)*12;
1675 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1676 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1677 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1679 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1680 j = iad(3)-(ib-1)*12;
1683 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1684 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1685 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1688 j = iad(4)-(ib-1)*12;
1691 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1692 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1693 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1695 beta =
edge_list(nin,iad(5))%CUTCOOR(ipose(5));
1696 j = iad(5)-(ib-1)*12;
1699 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2
1700 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1701 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w
1703 beta =
edge_list(nin,iad(6))%CUTCOOR(ipose(6));
1704 j = iad(6)-(ib-1)*12;
1707 wa6(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1708 wa6(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1709 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1711 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1712 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1713 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1715 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1716 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1717 wn2(3)= w(3,ixs(gnode(2,secid
1719 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1720 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1721 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1723 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1724 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1725 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1727 wf1(1) = third*(wn1(1)+wa1(1)+wa6(1))
1728 wf1(2) = third*(wn1(2)+wa1(2)+wa6(2))
1729 wf1(3) = third*(wn1(3)+wa1(3)+wa6(3))
1731 wf2(1) = fourth*(wn1(1)+wn2(1)+wa2(1)+wa1(1))
1732 wf2(2) = fourth*(wn1(2)+wn2(2)+wa2(2)+wa1(2))
1733 wf2(3) = fourth*(wn1(3)+wn2(3)+wa2(3)+wa1(3))
1735 wf3(1) = one_fifth*(wn2(1)+wn3(1)+wn4(1)+wa3(1)+wa2(1))
1736 wf3(2) = one_fifth*(wn2(2)+wn3(2)+wn4(2)+wa3(2)+wa2(2))
1737 wf3(3) = one_fifth*(wn2(3)+wn3(3)+wn4(3)+wa3(3)+wa2(3))
1739 wf4(1) = third*(wn4(1)+wa4(1)+wa3(1))
1740 wf4(2) = third*(wn4(2)+wa4(2)+wa3(2))
1741 wf4(3) = third*(wn4(3)+wa4(3)+wa3(3))
1743 wf5(1) = fourth*(wn4(1)+wn3(1)+wa5(1)+wa4(1))
1744 wf5(2) = fourth*(wn4(2)+wn3(2)+wa5(2)+wa4(2))
1745 wf5(3) = fourth*(wn4(3)+wn3(3)+wa5(3)+wa4(3))
1747 wf6(1) = fourth*(wn3(1)+wn2(1)+wn1(1)+wa6(1)+wa5
1748 wf6(2) = fourth*(wn3(2)+wn2(2)+wn1(2)+wa6(2)+wa5(2))
1749 wf6(3) = fourth*(wn3(3)+wn2(3)+wn1(3)+wa6(3)+wa5(3))
1751 wf0(1) = one_over_6*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1)+wa6(1))
1752 wf0(2) = one_over_6*(wa1(2)+wa2(2)+wa3(2)+wa4
1753 wf0(3) = one_over_6*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3)+wa6
1756 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1757 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1758 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1759 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1760 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5
1761 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%W(1:3) = wf6
1763 ELSEIF(sectype(1:6)==
'POLY4B')
THEN
1765 fa(1:6) = gface(1:6,secid)
1766 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1767 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1768 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose
1769 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose
1770 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1771 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1772 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1773 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1774 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1775 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1777 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1778 j = iad(1)-(ib-1)*12;
1781 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1782 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1783 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1785 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1786 j = iad(2)-(ib-1)*12;
1789 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1791 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1793 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1794 j = iad(3)-(ib-1)*12;
1797 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1798 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1799 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1801 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1802 j = iad(4)-(ib-1)*12;
1805 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1806 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1807 wa4(3) = beta * w(3,edgnod1) + (one
1809 beta =
edge_list(nin,iad(5))%CUTCOOR(ipose(5));
1810 j = iad(5)-(ib-1)*12;
1813 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1814 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1815 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1817 beta =
edge_list(nin,iad(6))%CUTCOOR(ipose(6));
1818 j = iad(6)-(ib-1)*12;
1821 wa6(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1822 wa6(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1823 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1825 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1826 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1827 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1829 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1830 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1831 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1833 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1834 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1835 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1837 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1838 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1839 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1841 wf1(1) = third*(wn1(1)+wa1(1)+wa6(1))
1842 wf1(2) = third*(wn1(2)+wa1(2)+wa6(2))
1843 wf1(3) = third*(wn1(3)+wa1(3)+wa6(3))
1845 wf2(1) = fourth*(wn1(1)+wn2(1)+wa2(1)+wa1(1))
1846 wf2(2) = fourth*(wn1(2)+wn2(2)+wa2(2)+wa1(2))
1847 wf2(3) = fourth*(wn1(3)+wn2(3)+wa2(3)+wa1(3))
1849 wf3(1) = one_fifth*(wn2(1)+wn3(1)+wn4(1)+wa3(1)+wa2(1))
1850 wf3(2) = one_fifth*(wn2(2)+wn3(2)+wn4(2)+wa3(2)+wa2(2))
1851 wf3(3) = one_fifth*(wn2(3)+wn3(3)+wn4(3)+wa3(3)+wa2(3))
1853 wf4(1) = third*(wn4(1)+wa4(1)+wa3(1))
1854 wf4(2) = third*(wn4(2)+wa4(2)+wa3(2))
1855 wf4(3) = third*(wn4(3)+wa4(3)+wa3(3))
1857 wf5(1) = fourth*(wn4(1)+wn3(1)+wa5(1)+wa4(1))
1858 wf5(2) = fourth*(wn4(2)+wn3(2)+wa5(2)+wa4(2))
1859 wf5(3) = fourth*(wn4(3)+wn3(3)+wa5(3)+wa4(3))
1861 wf6(1) = fourth*(wn3(1)+wn2(1)+wn1(1)+wa6(1)+wa5(1))
1862 wf6(2) = fourth*(wn3(2)+wn2(2)+wn1(2)+wa6(2)+wa5(2))
1863 wf6(3) = fourth*(wn3(3)+wn2(3)+wn1(3)+wa6(3)+wa5(3))
1865 wf0(1) = one_over_6*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1)+wa6(1))
1866 wf0(2) = one_over_6*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2)+wa6(2))
1867 wf0(3) = one_over_6*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3)+wa6(3))
1869 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1870 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1871 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1872 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1873 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1874 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1875 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%W(1:3) = wf6(1:3)
1877 ELSEIF(sectype(1:5)==
'POLYC')
THEN
1879 fa(1:6) = gface(1:6,secid)
1880 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1881 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1882 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1883 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1884 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1885 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1886 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1887 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1888 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1889 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1891 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1892 j = iad(1)-(ib-1)*12;
1895 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1896 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1897 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1899 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1900 j = iad(2)-(ib-1)*12;
1903 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1904 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1905 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1907 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1908 j = iad(3)-(ib-1)*12;
1911 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1912 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1913 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1915 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1916 j = iad(4)-(ib-1)*12;
1919 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1920 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1921 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1923 beta =
edge_list(nin,iad(5))%CUTCOOR(ipose(5));
1924 j = iad(5)-(ib-1)*12;
1927 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1928 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1929 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1931 beta =
edge_list(nin,iad(6))%CUTCOOR(ipose(6));
1932 j = iad(6)-(ib-1)*12;
1935 wa6(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1936 wa6(2) = beta * w(2,edgnod1) + (one
1937 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1939 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1940 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1941 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1943 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1944 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1945 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1947 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1948 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1949 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1951 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1952 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1953 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1955 wf1(1) = fourth*(wn1(1)+wn2(1)+wn3(1)+wn4(1))
1956 wf1(2) = fourth*(wn1(2)+wn2(2)+wn3(2)+wn4(2))
1957 wf1(3) = fourth*(wn1(3)+wn2(3)+wn3(3)+wn4(3))
1959 wf2(1) = fourth*(wn1(1)+wa1(1)+wa2(1)+wn2(1))
1960 wf2(2) = fourth*(wn1(2)+wa1(2)+wa2(2)+wn2(2))
1961 wf2(3) = fourth*(wn1(3)+wa1(3)+wa2(3)+wn2(3))
1963 wf3(1) = fourth*(wn2(1)+wa2(1)+wa3(1)+wn3(1))
1964 wf3(2) = fourth*(wn2(2)+wa2(2)+wa3(2)+wn3(2))
1965 wf3(3) = fourth*(wn2(3)+wa2(3)+wa3(3)+wn3(3))
1967 wf4(1) = fourth*(wn1(1)+wn4(1)+wa4(1)+wa1(1))
1968 wf4(2) = fourth*(wn1(2)+wn4(2)+wa4(2)+wa1(2))
1969 wf4(3) = fourth*(wn1(3)+wn4(3)+wa4(3)+wa1(3))
1971 wf5(1) = (wn4(1)+wn3(1)+wa3(1)+wa6(1)+wa5(1)+wa4(1)+wn4(1))/seven
1972 wf5(2) = (wn4(2)+wn3(2)+wa3(2)+wa6(2)+wa5(2)+wa4(2)+wn4(2))/seven
1973 wf5(3) = (wn4(3)+wn3(3)+wa3(3)+wa6(3)+wa5(3)+wa4(3)+wn4(3))/seven
1975 wf0(1) = one_over_6*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1)+wa6(1))
1976 wf0(2) = one_over_6*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2)+wa6(2))
1977 wf0(3) = one_over_6*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3)+wa6(3))
1979 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1980 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1981 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1982 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1983 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1984 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1997 ntag = sum(itag(1:8))
2002 tmp_sectype(k) =
brick_list(nin,ib)%SECTYPE(k
2003 tmp_secid_cell(k) =
brick_list(nin,ib)%SecID_CELL(k)
2013 brick_list(nin,ib)%SECTYPE(n) = tmp_sectype(n+1)
2014 brick_list(nin,ib)%SecID_CELL(n) = tmp_secid_cell(n+1)
2025 brick_list(nin,ib)%NODE(n)%WhichCell = inod - ntag
2036 brick_list(nin,ib)%SECTYPE(k) =
'______________'
2048 IF(edgelist(j) /=
edge_list(nin,k)%NBCUT)
THEN
2049 IF(edgelist(j)==1)
THEN
2052 IF(edgepos(j,1)==1)
THEN
2054 ELSEIF(edgepos(j,2)==1)
THEN
2061 ELSEIF(edgelist(j)==0)
THEN
2076 pnnodcell(icell)%NumNOD = 8
2077 pnpointcell(icell)%NumPOINT = 8
2078 n1 => x(1:3, ixs(1+1,
brick_list(nin,ib)%ID ))
2079 n2 => x(1:3, ixs(1+2,
brick_list(nin,ib)%ID ))
2080 n3 => x(1:3, ixs(1+3,
brick_list(nin,ib)%ID ))
2081 n4 => x(1:3, ixs(1+4,
brick_list(nin,ib)%ID ))
2082 n5 => x(1:3, ixs(1+5,
brick_list(nin,ib)%ID ))
2083 n6 => x(1:3, ixs(1+6,
brick_list(nin,ib)%ID ))
2084 n7 => x(1:3, ixs(1+7,
brick_list(nin,ib)%ID ))
2085 n8 => x(1:3, ixs(1+8,
brick_list(nin,ib)%ID ))
2086 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
2087 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
2088 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
2089 brick_list(nin,ib)%POLY(icell)%ListNodID(1:8) = (/ 1,2,3,4,5,6,7,8/)
2090 brick_list(nin,ib)%NODE(1:8)%WhichCell = icell
2103 cod1 = iabs(
brick_list(nin,ib)%SecID_CELL(1))
2104 cod2 = iabs(
brick_list(nin,ib)%SecID_CELL(2))
2112 valtmp(1:3) =
brick_list(nin,ib)%POLY(1)%CellCenter(1:3)
2171 brick_list(nin,ib)%POLY(3)%FACE(1:6)%Surf = zero
2175 brick_list(nin,ib)%POLY(3)%CellCenter(1) = zero
2176 brick_list(nin,ib)%POLY(3)%CellCenter(2) = zero
2177 brick_list(nin,ib)%POLY(3)%CellCenter(3) = zero
2178 brick_list(nin,ib)%POLY(3)%ListNodID(1:8) = 0
2180 brick_list(nin,ib)%POLY(3)%FACE(k)%Vel(1) = zero
2181 brick_list(nin,ib)%POLY(3)%FACE(k)%Vel(2) = zero
2186 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 2)
THEN
2197 nn => x(1:3, ixs(1+i,
brick_list(nin,ib)%ID ))
2198 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 2)
THEN
2210 brick_list(nin,ib)%POLY(1)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(1)%CellCenter(1:3) / numpt
2216 valtmp(1:3) =
brick_list(nin,ib)%POLY(2)%CellCenter(1:3)
2223 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 2)
THEN
2233 brick_list(nin,ib)%POLY(2)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(2)%CellCenter(1:3) * numpt
2235 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 1)
THEN
2236 nn => x(1:3, ixs(1+i,
brick_list(nin,ib)%ID ))
2242 nn => x(1:3, ixs(1+i,
brick_list(nin,ib)%ID ))
2249 brick_list(nin,ib)%POLY(2)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(2)%CellCenter(1:3) / numpt
2257 inodtag(
brick_list(nin,ib)%POLY(1)%ListNodID(i) ) = 1
2261 IF(inodtag(i) == 0)
THEN
2267 brick_list(nin,ib)%POLY(9)%CellCenter(1:3) = valtmp(1:3)
2303 IF (ii<=nel.AND.nspmd<=1.AND.itask==0)
THEN
2304#include "lockon.inc"
2309 x(1:3,ixtg(2,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2310 x(1:3,ixtg(3,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2311 x(1:3,ixtg(4,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2312 v(1:3,ixtg(2,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2313 v(1:3,ixtg(3,igrsh3n(igr)%ENTITY(j)))=(
2314 v(1:3,ixtg(4,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2316#include "lockoff.inc"
2330 write (*,fmt=
'(A,2I12)')
"=== BRICK ID===", ixs(11,
id) ,
id
2332 do while (icell <= ncell .OR. icell == 9 )
2334 write (*,fmt=
'(A )')
"|"
2336 write (*,fmt=
'(A,I1,A,A ,A1,I2,A1 )')
"+== ICELL= ", icell ,
", SecType=",
'COMPLEMENT' ,
2339 write (*,fmt=
'(A,I1,A,A14,A1,I2,A1 )')
"+== ICELL= ", icell ,
", SecType=",
brick_list(nin,ib)%SECTYPE(icell) ,
2342 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
2343 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
2344 write (*,fmt=
'(A )')
"| |"
2345 write (*,fmt=
'(A,F20.14)')
"| +======SUVOLUMES=",
brick_list
2346 write (*,fmt=
'(A,6F20.14)'"| +=======SUBFACES="
2347 write (*,fmt=
'(A,F20.14)')
"| +=======CUT AERA=",
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
2348 write (*,fmt=
'(A,A,I2)')
"| +======NUM POINT=",
" ",
brick_list(nin,ib)%POLY(icell
2349 write (*,fmt=
'(A,A,I1,A,8I12)')
"| +======NODE LIST=",
" (",mnod,
") ",
brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod)
2350 write (*,fmt=
'(A,A ,8I12)')
"| radIDs=",
" ",
2352 write (*,fmt=
'(A,A ,8I12)')
"| userIDs=",
" ",
2353 . itab(ixs(1+
brick_list(nin,ib)%POLY(icell)%ListNodID
2359 if(icell>ncell .and. icell/=10) icell = 9
2361 write (*,fmt=
'(A )')
" "