41
42
43
44
45
46
47
48
49
50
51
55 USE elbufdef_mod
57 use element_mod , only : nixs,nixtg
58
59
60
61#include "implicit_f.inc"
62#include "comlock.inc"
63
64
65
66#include "com01_c.inc"
67#include "com04_c.inc"
68#include "param_c.inc"
69#include "task_c.inc"
70#include "subvolumes.inc"
71#include "inter22.inc"
72
73 INTERFACE
75 INTEGER, INTENT(IN) :: NPTS
76 my_real,
INTENT(IN) :: p(3,npts)
79 END FUNCTION
80 END INTERFACE
81
82
83
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
89
90 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
91
92
93
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
101
102 TYPE(POLYFACE_ENTITY),dimension(:),pointer :: pFACE
104
105
106
107 my_real,
DIMENSION(:,:),
POINTER :: pcut
108
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
113 my_real :: wa1(3),wa2(3),wa3(3),wa4(3),wa5(3),wa6(3)
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,n2,n3,n4 ,n5,n6,n7,n8, nn
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
119
120 integer :: pNNodCell_bak(2), EdgNod1, EdgNod2
121 INTEGER :: Cod1, Cod2, Cod1_bis, Cod2_bis
122 LOGICAL :: bAMBIGOUS, IsSH3N, 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
125 LOGICAL :: bCOMPL
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
129 LOGICAL :: lFOUND
130 CHARACTER*14 :: tmp_SECTYPE(8)
131 INTEGER :: tmp_SecID_CELL(8),tmp_NumNOD(8),tmp_NumPOINT(8),NTAG
132
133 TYPE(POLY_ENTITY)tmpPOLY(8)
134 TYPE(CUT_PLANE)tmpCUT(8)
135
136
137
138
139
141 print *,""
142 print *, "================================="
143 print *, "======== SUBVOL ==========="
144 print *, "================================="
145 endif
146
147 volratiomin = em10
148
149 igr = ipari(49)
150 nel = ipari(50)
151 ii = 1
152
153 nbf = 1+itask*
nb/nthread
154 nbl = (itask+1)*
nb/nthread
155
156 DO ib=nbf,nbl
157
158 DO k=1,6
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
162 ENDDO
163
166 btwice = .false.
167 IF(icode==idble)btwice = .true.
168
169 secid = 0
172 psubvol(1:9)%Vnew = zero
173 pnnodcell(1:9) =>
brick_list(nin,ib)%POLY(1:9)
174 pnnodcell(1:9)%NumNOD = 0
175 pnpointcell(1:9) =>
brick_list(nin,ib)%POLY(1:9)
176 pnpointcell(1:9)%NumPOINT = 0
177
178
187
188 brick_list(nin,ib)%POLY(1:9)%FACE0%Surf = zero
189 DO k=1,6
190 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Surf = zero
191 ENDDO
192
193 nintpoint = 0
194 m_sum = 0
195 pwhichcellnod(1:8) =>
brick_list(nin,ib)%NODE(1:8)
196 pwhichcellnod(1:8)%WhichCell = 0
197 edgelist(1:16) = 0
198 edgepos(1:16,1:2) = 0
199
200 DO k=1,6
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
204 ENDDO
208
209
210
211
212
213
217 bambigous = .false.
218 IF(sectype(1:5)=='PENTA')THEN
221 IF(sectype(1:5)=='PENTA')THEN
222 IF (cod1==10 .AND. cod2==17 )THEN
223 bambigous = .true.
224 cod1_bis = 12
225 cod2_bis = 19
226 ELSEIF (cod1==11 .AND. cod2==14 )THEN
227 bambigous = .true.
228 cod1_bis = 15
229 cod2_bis = 18
230 ELSEIF (cod1==12 .AND. cod2==19 )THEN
231 bambigous = .true.
232 cod1_bis = 10
233 cod2_bis = 17
234 ELSEIF (cod1==13 .AND. cod2==16 )THEN
235 bambigous = .true.
236 cod1_bis = 09
237 cod2_bis = 20
238 ELSEIF (cod1==15 .AND. cod2==18 )THEN
239 bambigous = .true.
240 cod1_bis = 11
241 cod2_bis = 14
242 ELSEIF (cod1== 09 .AND. cod2==20 )THEN
243 bambigous = .true.
244 cod1_bis = 13
245 cod2_bis = 16
246 ENDIF
247 ENDIF
248 ENDIF
249
250 IF(.NOT.bambigous)THEN
251
252 ELSE
253
254
255
256
257 secid = cod1
258 iad(1:4) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,4)/)
259 iad(5) = iad(1)
260 icut(1:2,1:4) = 1
261 DO k=1,4
262 IF(
edge_list(nin,iad(k))%NBCUT > 1 .AND. gcorner(k,secid) > 0)icut(1,k) = 2
263
264 ietab(k) =
edge_list(nin,iad(k))%CUTSHELL(icut(1,k))
265 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(icut(1,k))
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)
268 END DO
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 ))
274
275 pcut_vect(1:3,1) = vf(:,0) / sqrt(sum(vf(:,0)*vf(:,0)))
276
277 secid = cod2
278 iad(1:4) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,4)/)
279 iad(5) = iad(1)
280 DO k=1,4
281 IF(
edge_list(nin,iad(k))%NBCUT > 1 .AND. gcorner(k,secid) > 0)icut(2,k) = 2
282
283 ietab(4+k) =
edge_list(nin,iad(k))%CUTSHELL(icut(2,k))
284 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(icut(2,k))
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)
287 END DO
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 ))
293
294 pcut_vect(1:3,2) = vf(:,0) / sqrt(sum(vf(:,0)*vf(:,0)))
295
296 secid = cod1_bis
297 iad(1:4) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,4)/)
298 iad(5) = iad(1)
299 icut(1,1:4) = 1
300 DO k=1,4
301 IF(
edge_list(nin,iad(k))%NBCUT > 1 .AND. gcorner(k,secid) > 0)icut(1,k) = 2
302
303 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(icut(1,k))
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)
306 END DO
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 ))
312
313 pcut_vect(1:3,3) = vf(:,0) / sqrt(sum(vf(:,0)*vf(:,0)))
314
315 secid = cod2_bis
316 iad(1:4) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,4)/)
317 iad(5) = iad(1)
318 icut(2,1:4) = 1
319 DO k=1,4
320 IF(
edge_list(nin,iad(k))%NBCUT > 1 .AND. gcorner(k,secid) > 0)icut(2,k) = 2
321
322 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(icut(2,k))
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)
325 END DO
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 ))
331
332 pcut_vect(1:3,4) = vf(:,0) / sqrt(sum(vf(:,0)*vf(:,0)))
333
334
335
336 DO i=1,8
337 ie = ietab(i)
338 ienod(3:4)=irect_l(3:4,ie)
339 IF(ienod(3)==ienod(4))THEN
340 issh3n=.true.
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) ))
347 ELSE
348 issh3n=.false.
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) ))
355 ENDIF
356 ENDDO
357
358
359
360 criteria(:) = zero
361 DO icrit = 1,2
362 DO ipcut = 1,2
363 DO j = 1,4
364 criteria(icrit) = criteria(icrit) + abs( sum(ievect(1:3,(ipcut-1)*4+j)*pcut_vect( 1:3 , (icrit-1)*2 + ipcut
365 enddo
366 enddo
367 enddo
368
369
370
371 IF (criteria(1) > criteria(2))THEN
372
373 ELSEIF(criteria(2) > criteria(1))THEN
374
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)
378
379 ELSE
380
381 ENDIF
382
383 endif
384 endif
385
386
387
388
389
391 icute(1:2,1:12) = 0
392
393
394 uncutvol = one
395 DO ng=1,ngroup
396 nel_b=iparg(2,ng)
397 nfl =iparg(3,ng)
398 IF(
id>nfl.AND.
id<=nfl+nel_b)
THEN
400 uncutvol = elbuf_tab(ng)%GBUF%VOL(idloc)
401 EXIT
402 ENDIF
403 enddo
404
405 itag(1:8) = 0
406
407 DO icell=1, ncell
408 m = 0
409 ntrus = 0
410 nnod = 0
411 mnod = 0
414 bcompl = .false.
415 IF(secid<0)THEN
416 bcompl = .true.
417 secid = - secid
418 ENDIF
419 inodtag(1:8) = 0
420 IF(sectype(1:5)=='TETRA')THEN
421 ntrus= c_tetra
422 m = m_tetra
423 nnod = n_tetra+c_tetra
424 mnod = n_tetra
425 ELSEIF(sectype(1:5)=='PENTA')THEN
426 ntrus= c_penta
427 m = m_penta
428 nnod = n_penta+c_penta
429 mnod = n_penta
430 ELSEIF(sectype(1:5)=='POLY3')THEN
431 ntrus= c_poly3
432 m = m_poly3
433 nnod = n_poly3+c_poly3
434 mnod = n_poly3
435 ELSEIF(sectype(1:5)=='HEXAE')THEN
436 ntrus= c_hexae
437 m = m_hexae
438 nnod = n_hexae+c_hexae
439 mnod = n_hexae
440 ELSEIF(sectype(1:6)=='POLY4 ')THEN
441 ntrus= c_poly4
442 m = m_poly4
443 nnod = n_poly4+c_poly4
444 mnod = n_poly4
445 ELSEIF(sectype(1:6)=='POLY4A')THEN
446 ntrus= c_poly4a
447 m = m_poly4a
448 nnod = n_poly4a+c_poly4a
449 mnod = n_poly4a
450 ELSEIF(sectype(1:6)=='POLY4B')THEN
451 ntrus= c_poly4b
452 m = m_poly4b
453 nnod = n_poly4b+c_poly4b
454 mnod = n_poly4b
455 ELSEIF(sectype(1:5)=='POLYC')THEN
456 ntrus= c_polyc
457 m = m_polyc
458 nnod = n_polyc+c_polyc
459 mnod = n_polyc
460 END IF
461 m_sum = m_sum + m
462 nintpoint = nintpoint + ntrus
463 iad(1:ntrus) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,ntrus)/)
464 iad(ntrus+1) = iad(1)
465 DO k=1,ntrus
466 edgelist(iabs(gcorner(k,secid))) = edgelist(iabs(gcorner(k,secid))) + 1
467 ENDDO
468
469
470
471
472
473 DO k=1,ntrus
474 tagedg = gcorner(k,secid)
475 IF(tagedg<0)THEN
476
477 ipos = 1
478 tagedg = - tagedg
479 ELSE
480
482 ipos = 1
483 ELSE
484 ipos = 2
485 ENDIF
486 ENDIF
487 edgepos(iabs(tagedg), ipos) = 1
488 IF(icute(ipos,tagedg)==1)ipos = mod(ipos,2)+1
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:
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
495 ipose(k) = ipos
496 END DO
497
498
499
500 if(
brick_list(nin,ib)%ICODE==0.and.icell>=1)
then
501 print *, "error i22subvol."
502 stop 221
503 end if
504
505
506
507 nsh3n = getnumtria(getpolyhedratype(secid))
508 IF(ii<=nel-nsh3n.AND.nspmd<=1)THEN
509
510
511
512#include "lockon.inc"
513
514
515
516
517
518
519
520
521
522 DO k=1,nsh3n
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)) )
530
531
532
533
534
535
536
537
538
539
540
541
542
543 ii=ii+1
544 END DO
545
546#include "lockoff.inc"
547 END IF
548
549
550
551
552
553
554 fa(0) = 0
555
556
557 IF(sectype(1:5)=='TETRA')THEN
558 nface = f_tetra
559
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
573 itag(icell)=1
574 nintpoint = nintpoint - ntrus
575
576 cycle
577 ENDIF
578 brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1
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(1:3,fa(1))
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, 0 )
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(:,3)*vf(:,3)))
591 pface0 = scut
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
608
609 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
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)+1,
id))
613
614
615
616
617 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = third* (a1(1:3) + a2(1:3) + a3(1:3))
618
619 ELSEIF(sectype(1:5)=='PENTA')THEN
620 nface = f_penta
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/), c(1:3,fa(2)))
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
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 + a2
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 + a4
640 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
641 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c
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 =
652 pface0 = scut
653 IF(volratio <= volratiomin) THEN
654 IF(scut / exp(0.666*log(uncutvol)) <= em03)THEN
655 itag(icell)=1
656 nintpoint = nintpoint - ntrus
657
658 cycle
659 ENDIF
660 ENDIF
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)/) ) / six
673 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/a1(2),a2(2),a3(2),a4(2),n1(2),n2(2)/) ) / 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
678
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))
685
686
687
688
689
690 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = fourth* (a1(1:3) + a2(1:3) + a3(1:3) + a4(1:3))
691
692 ELSEIF(sectype(1:5)=='POLY3')THEN
693 nface = f_poly3
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)
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)
710 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
712 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 + a5
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)))
728 pface0 = scut
730 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
731 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,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),n3(1)/) ) / eight
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
749
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))
758
759
760
761
762
763
764 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_fifth * (a1+a2+a3+a4+a5)
765
766 ELSEIF(sectype(1:5)=='HEXAE')THEN
767 nface = f_hexae
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 ))
783 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
784 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
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
786 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
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 + a4
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(5))
793 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
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)))
802 pface0 = scut
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
816 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
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)/) )
819 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
820 inodtag(gnode(1:mnod,secid)) = 1
821 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
822
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))
827 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
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))
831
832
833
834
835
836
837 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = fourth * (a1+a2+a3+a4)
838
839 ELSEIF(sectype(1:6)=='POLY4 ')THEN
840 nface = f_poly4
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(4))
845 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
846 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
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/), c(1:3,fa(3)))
855 vf(:,4) =
i22aera(5,(/n1,n2,n3,a3,a2/), c(1:3,fa(4)))
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)
861 if(icell==2)then
863 vol2 = vol
864 if((vol1+vol2)/uncutvol>=one-em04)then
865 itag(icell)=1
866 nintpoint = nintpoint - ntrus
867
868 cycle
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(3)*tmp(3)
876 dist = sqrt(dist)
877 if (dist / exp(0.333*log(uncutvol)) <= em04)THEN
878 itag(icell)=1
879 nintpoint = nintpoint - ntrus
880
881 cycle
882 ENDIF
883 endif
884 endif
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)
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) + a3 + a2
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)))
907 pface0 = scut
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
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
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
927
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))
938
939
940
941
942
943
944
945 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a2+a3+a4+a5+a6 )
946
947 ELSEIF(sectype(1:6)=='POLY4A')THEN
948 nface = f_poly4a
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)+1,
id))
956 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
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,a6/),c(1:3, 0 ))
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
972 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
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) = c(1:3,fa(6))
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)))
989 pface0 = scut
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)),i=0,6)/))
1001 vol = third * abs(vol)
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)/))/ten
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(3),n1(3),n2(3),n3(3),n4(3)/))/ten
1008 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
1009 inodtag(gnode(1:mnod,secid)) = 1
1010 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
1011
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))
1022
1023
1024
1025
1026
1027
1028
1029 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a2+a3+a4+a5+a6 )
1030
1031 ELSEIF(sectype(1:6)=='POLY4B')THEN
1032 nface = f_poly4b
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)))
1046 vf(:,3) = -
i22aera(5,(/n2,n3,n4,a3,a2/), c(1:3,fa(3)))
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 ))
1051 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
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
1053 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
1054 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
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
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(1:3,fa(5))
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)
1066 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
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)))
1073 pface0 = scut
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
1095
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))
1106
1107
1108
1109
1110
1111
1112
1113 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a2+a3+a4+a5+a6 )
1114
1115 ELSEIF(sectype(1:5)=='POLYC')THEN
1116 nface = f_polyc
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
1136 brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) +a2+a3
1137 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center
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)))
1153 pface0 = scut
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
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
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)/)
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
1175
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))
1186
1187
1188
1189
1190
1191
1192 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a4+a5+a6+a3+a2)
1193 END IF
1194
1195
1196 IF(bcompl)THEN
1197 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
1198 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
1199 DO j=1,nface
1200 pface(fa(j))%Surf =- pface(fa(j))%Surf
1201 ENDDO
1202 psubvol(icell)%Vnew =- psubvol(icell)%Vnew
1203 pnnodcell(icell)%NumNOD = 8-mnod
1204 ENDIF
1205
1206
1207
1208
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
1213 nface = f_tetra
1214 fa(1:3) = gface(1:3,secid)
1215
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))
1219
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)
1227
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)
1235
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)
1243
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))
1248
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(3)+wa2(3)+wa1(3))
1252
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))
1256
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))
1260
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))
1264
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)
1269
1270
1271 ELSEIF(sectype(1:5)=='PENTA')THEN
1272 nface = f_penta
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))
1280
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)
1288
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)
1296
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)
1304
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)
1312
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))
1316
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))
1320
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))
1324
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(3))
1328
1329 wf3(1) = fourth*(wn1(1)+wn2(1)+wa3(1)+wa2(1))
1330 wf3(2) = fourth*(wn1(2)+wn2(2)+wa3(2)+wa2(2))
1331 wf3(3) = fourth*(wn1(3)+wn2(3)+wa3(3)+wa2(3))
1332
1333 wf4(1) = fourth*(wn2(1)+wn1(1)+wa1(1)+wa4(1))
1334 wf4(2) = fourth*(wn2(2)+wn1(2)+wa1(2)+wa4(2))
1335 wf4(3) = fourth*(wn2(3)+wn1(3)+wa1(3)+wa4(3))
1336
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))
1340
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)
1346
1347 ELSEIF(sectype(1:5)=='POLY3')THEN
1348 nface = f_poly3
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))
1358
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)
1366
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)
1374
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)
1382
1383 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
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)
1390
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)
1398
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))
1402
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))
1406
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))
1410
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))
1414
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))
1418
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))
1422
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))
1426
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))
1430
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))
1434
1435 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
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(1:3)
1440 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1441
1442 ELSEIF(sectype(1:5)=='HEXAE')THEN
1443 nface = f_hexae
1444 fa(1:5) = gface(1:5,secid)
1445 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1446 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
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))
1453
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)
1461
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)
1469
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)
1477
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)
1485
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))
1489
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))
1493
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))
1497
1498 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1499 wn4(2)= w(2,ixs(gnode(4,secid
1500 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1501
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))
1505
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))
1509
1510 wf3(1) = fourth*(wn2(1)+wn3(1)+wa3(1)+wa2(1))
1511 wf3(2) = fourth*(wn2(2)+wn3(2)+wa3(2)+wa2(2))
1512 wf3(3) = fourth*(wn2(3)+wn3(3)+wa3(3)+wa2(3))
1513
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))
1517
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))
1521
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))
1525
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)
1532
1533
1534 ELSEIF(sectype(1:6)=='POLY4 ')THEN
1535 nface = f_poly4
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))
1547
1548 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1549 j = iad(1)-(ib-1)*12;
1552 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1553 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1554 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1555
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)
1563
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)
1571
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)
1579
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)
1587
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)
1595
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))
1599
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))
1603
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))
1607
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))
1611
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))
1615
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))
1619
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))
1623
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))
1627
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))
1631
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))
1635
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))
1639
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)
1647
1648
1649 ELSEIF(sectype(1:6)=='POLY4A')THEN
1650 nface = f_poly4a
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))
1662
1663 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1)
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)
1670
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)
1678
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)
1686
1687 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4))
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)
1694
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(3,edgnod2)
1702
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)
1710
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))
1714
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)+1,
id))
1718
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))
1722
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))
1726
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))
1730
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))
1734
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))
1738
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))
1742
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))
1746
1747 wf6(1) = fourth*(wn3(1)+wn2(1)+wn1(1)+wa6(1)+wa5(1))
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))
1750
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(2)+wa5(2)+wa6(2))
1753 wf0(3) = one_over_6*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3)+wa6(3))
1754
1755 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
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(1:3)
1761 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%W(1:3) = wf6(1:3)
1762
1763 ELSEIF(sectype(1:6)=='POLY4B')THEN
1764 nface = f_poly4b
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(3))
1769 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
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))
1776
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)
1784
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)
1790 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1791 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1792
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)
1800
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-beta)*w(3,edgnod2)
1808
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)
1816
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)
1824
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))
1828
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))
1832
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))
1836
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))
1840
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))
1844
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))
1848
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))
1852
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))
1856
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))
1860
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))
1864
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))
1868
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)
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)
1876
1877 ELSEIF(sectype(1:5)=='POLYC')THEN
1878 nface = f_polyc
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))
1890
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)
1898
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)
1906
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)
1914
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)
1922
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)
1930
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-beta)*w(2,edgnod2)
1937 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1938
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))
1942
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))
1946
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))
1950
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))
1954
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))
1958
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))
1962
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))
1966
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))
1970
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
1974
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))
1978
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)
1985
1986 END IF
1987 ENDIF
1988
1989
1990
1991
1992
1993
1994 END DO
1995
1996
1997 ntag = sum(itag(1:8))
1998 IF(ntag>0)THEN
1999
2000 numpt = 0
2001 DO k=1,8
2002 tmp_sectype(k) =
brick_list(nin,ib)%SECTYPE(k)
2003 tmp_secid_cell(k) =
brick_list(nin,ib)%SecID_CELL(k)
2004
2005
2008 ENDDO
2009
2010 DO k=1,8
2011 IF(itag(k)==1)THEN
2012 DO n=k
2013 brick_list(nin,ib)%SECTYPE(n) = tmp_sectype(n+1)
2015
2016
2019 ENDDO
2020 numpt=numpt+1
2021
2022 DO n=1,8
2024 IF(inod >= k)THEN
2025 brick_list(nin,ib)%NODE(n)%WhichCell = inod - ntag
2026 ENDIF
2027 ENDDO
2028 ENDIF
2029 ENDDO
2036 brick_list(nin,ib)%SECTYPE(k) =
'______________'
2037 ENDDO
2038 ENDIF
2039
2040
2041
2042
2043
2044 DO j=1,12
2045 k = (ib-1)*12+j
2046
2047
2048 IF(edgelist(j) /=
edge_list(nin,k)%NBCUT)
THEN
2049 IF(edgelist(j)==1)THEN
2051 !keep only relevant node
2052 IF(edgepos(j,1)==1)THEN
2053
2054 ELSEIF(edgepos(j,2)==1)THEN
2055
2060 ENDIF
2061 ELSEIF(edgelist(j)==0)THEN
2063 ENDIF
2064 ENDIF
2065 ENDDO
2066
2067
2068
2069
2070
2071
2072
2073
2075 icell = 1
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
2091 ENDIF
2092
2093 END DO
2094
2095
2096
2097
2098
2099 DO ib=nbf,nbl
2103 cod1 = iabs(
brick_list(nin,ib)%SecID_CELL(1))
2104 cod2 = iabs(
brick_list(nin,ib)%SecID_CELL(2))
2105 IF(cod1==cod2)THEN
2109
2110 IF(vol1>vol2)THEN
2111
2112 valtmp(1:3) =
brick_list(nin,ib)%POLY(1)%CellCenter(1:3)
2113
2114
2131
2132
2133
2150
2151
2169
2170
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
2179 DO k=0,6
2180 brick_list(nin,ib)%POLY(3)%FACE(k)%Vel(1) = zero
2181 brick_list(nin,ib)%POLY(3)%FACE(k)%Vel(2) = zero
2182 brick_list(nin,ib)%POLY(3)%FACE(k)%Vel(3) = zero
2183 ENDDO
2184
2185 DO i=1,8
2186 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 2)
THEN
2187
2188 ELSE
2190 ENDIF
2191 ENDDO
2192
2193
2194
2195 brick_list(nin,ib)%POLY(1)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(1)%CellCenter(1:3) * numpt
2196 DO i=1,8
2197 nn => x(1:3, ixs(1+i,
brick_list(nin,ib)%ID ))
2198 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 2)
THEN
2202 numpt = numpt - 1
2203 ELSE
2207 numpt = numpt + 1
2208 ENDIF
2209 ENDDO
2210 brick_list(nin,ib)%POLY(1)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(1)%CellCenter(1:3) / numpt
2211
2212
2213
2214
2215 ELSE
2216 valtmp(1:3) =
brick_list(nin,ib)%POLY(2)%CellCenter(1:3)
2222 DO i=1,8
2223 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 2)
THEN
2225 ELSE
2227 ENDIF
2228 ENDDO
2229
2230
2231
2233 brick_list(nin,ib)%POLY(2)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(2)%CellCenter(1:3) * numpt
2234 DO i=1,8
2235 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 1)
THEN
2236 nn => x(1:3, ixs(1+i,
brick_list(nin,ib)%ID ))
2240 numpt = numpt - 1
2241 ELSE
2242 nn => x(1:3, ixs(1+i,
brick_list(nin,ib)%ID ))
2246 numpt = numpt + 1
2247 ENDIF
2248 ENDDO
2249 brick_list(nin,ib)%POLY(2)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(2)%CellCenter(1:3) / numpt
2250
2251 ENDIF
2252
2253
2254
2255 inodtag(1:8) = 0
2257
2258 ENDDO
2259 j = 1
2260 DO i=1,8
2261 IF(inodtag(i) == 0)THEN
2263 j = j + 1
2264 ENDIF
2265 ENDDO
2266
2267 brick_list(nin,ib)%POLY(9)%CellCenter(1:3) = valtmp(1:3)
2270
2271 ENDIF
2272 ENDIF
2273 ENDDO
2274
2275
2276
2277
2278
2279 DO ib=nbf,nbl
2281
2282 DO j=1,12
2283 k = (ib
2294 enddo
2295 enddo
2296
2297
2298
2299
2300
2302
2303 IF (ii<=nel.AND.nspmd<=1.AND.itask==0) THEN
2304#include "lockon.inc"
2305
2306 DO j=1,nel
2307
2308
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)))=(/zero,zero,zero/)
2314 v(1:3,ixtg(4,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2315 END DO
2316#include "lockoff.inc"
2317 END IF
2318
2319
2320
2321
2322
2323
2324 if(itask==0)then
2325
2330 write (*,fmt=
'(A,2I12)')
"=== BRICK ID===", ixs(11,
id) ,
id
2331 icell = 1
2332 do while (icell <= ncell .OR. icell == 9 )
2334 write (*,fmt='(A )') "|"
2335 if(icell==9)then
2336 write (*,fmt='(A,I1,A,A ,A1,I2,A1 )') "+== ICELL= ", icell , ", SecType=", 'COMPLEMENT' ,
2337 . "(", 0 , ")"
2338 else
2339 write (*,fmt='(A,I1,A,A14,A1,I2,A1 )') "+== icell= ", ICELL , ", sectype=", BRICK_LIST(NIN,IB)%SECTYPE(ICELL) ,
2340 . "(", BRICK_LIST(NIN,IB)%SecID_Cell(ICELL) , ""
2341 endif
2342 pFACE(1:6) => BRICK_LIST(NIN,IB)%POLY(ICELL)%FACE(1:6)!%Surf
2343 pFACE0=> BRICK_LIST(NIN,IB)%POLY(ICELL)%FACE0%Surf
2344 write (*,FMT='(A )') "| |"
2345 write (*,FMT='(A,F20.14)') "| +======suvolumes=", BRICK_LIST(NIN,IB)%POLY(ICELL)%Vnew
2346 write (*,FMT='(A,6F20.14)') "| +=======subfaces=", BRICK_LIST(NIN,IB)%POLY(ICELL)%FACE(1:6)%Surf
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)%NumPOINT
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=", " ",
2351 . IXS(1+BRICK_LIST(NIN,IB)%POLY(ICELL)%ListNodID(1:MNOD),ID)
2352 write (*,FMT='(A,A ,8I12)') "| userids="," ",
2353 . ITAB(IXS(1+BRICK_LIST(NIN,IB)%POLY(ICELL)%ListNodID(1:MNOD),ID))
2354! do i=0,6
2355! print *, "sn=", vF(:,I)
2356! print *, " c=", C(1:3, Fa(I))
2357! end do
2358 icell = icell + 1
2359.and. if(icell>ncell icell/=10) icell = 9 ! list is also : {1:ncell} U {9}
2360 enddo!next icell
2361 write (*,FMT='(A )') " "
2362
2363 end do!next I
2364
2365 endif!(IBUG22_subvol==1)
2366 end if
2367 !----------------------------------------------------------------
2368
2369
2370 RETURN
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
type(edge_entity), dimension(:,:), allocatable, target edge_list
type(brick_entity), dimension(:,:), allocatable, target brick_list
type(int22_buf_t) int22_buf