40
41
42
43
44
45
46
47
48
49
50
54 USE elbufdef_mod
56
57
58
59#include "implicit_f.inc"
60#include "comlock.inc"
61
62
63
64#include "com01_c.inc"
65#include "com04_c.inc"
66#include "param_c.inc"
67#include "task_c.inc"
68#include "subvolumes.inc"
69#include "inter22.inc"
70
71 INTERFACE
73 INTEGER, INTENT(IN) :: NPTS
74 my_real,
INTENT(IN) :: p(3,npts)
77 END FUNCTION
78 END INTERFACE
79
80
81
82 INTEGER :: NIN, ITASK,IbugANIM22, IXS(NIXS,*), IPARI(48:50),
83 . ITAB(*),IXTG(NIXTG,*), IPARG(NPARG,*)
84 my_real,
intent(inout),
TARGET ::
85 . x(3,*),v(3,*),w(3,*)
86 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
87
88 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
89
90
91
92 INTEGER I, J, K,N, IAD(7), NBCUT, ICUT(8,7), IB, ICELL, NTRUS,INOD,
93 . IEDG(6) , KK , II , IAD0, IDSPRI, SECID, Fa(0:6),
94 . ID, ICODE, IDBLE,M, IE, NBF, NBL,NNOD, MNOD, NINTPOINT, M_SUM,NUMPT,IGR
96 . cutpoint(3), cutcoor, vmin, vmax, vol, vol1, vol2
97 CHARACTER*14 SECTYPE, SECTYPE2
99
100 TYPE(POLYFACE_ENTITY),dimension(:),pointer :: pFACE
102
103
104
105 my_real,
DIMENSION(:,:),
POINTER :: pcut
106
107 TYPE(POLY_ENTITY), DIMENSION(:), POINTER :: pSUBVOL,pNNodCell,pNPointCell
108 TYPE(NODE_ENTITY), DIMENSION(:), POINTER :: pWhichCellNod
109 my_real,
DIMENSION(:) ,
POINTER :: pvol
110 my_real,
DIMENSION(:) ,
POINTER :: a1,a2,a3,a4,a5,a6
111 my_real :: wa1(3),wa2(3),wa3(3),wa4(3),wa5(3),wa6(3)
112 my_real :: wn1(3),wn2(3),wn3(3),wn4(3),wn5(3),wn6(3)
113 my_real :: wf1(3),wf2(3),wf3(3),wf4(3),wf5(3),wf6(3) , wf0(3)
114 my_real,
DIMENSION(:) ,
POINTER :: n1,n2,n3,n4 ,n5,n6,n7,n8, nn
115 my_real :: c(1:3,0:6), scut, ctmp(3), valtmp(3)
116 my_real :: diag1(3), diag2(3), uncutvol, z(3,6), volratiomin
117
118 integer :: pNNodCell_bak(2), EdgNod1, EdgNod2
119 INTEGER :: Cod1, Cod2, Cod1_bis, Cod2_bis
120 LOGICAL :: bAMBIGOUS, IsSH3N, bTWICE
121 INTEGER :: INodTAG(8), IEtab(8),IEnod(1:4), IPCUT, ,,NSH3N, NTRIA(1:3),NCELL
122 my_real :: pcut_vect(1:3,4), ievect(1:3,8), criteria(2), pt(3,3), volratio,
norm,dist,tmp(3),scut1,scut2,beta
123 LOGICAL :: bCOMPL
124 INTEGER :: nFACE, IPOS, iCUTe(2,12), iPOSe(12), tagEDG, iCOMPL
125 INTEGER :: EdgePos(1:16,2), EdgeList(1:16)
126 INTEGER
127LOGICAL :: lFOUND
128 CHARACTER*14 :: tmp_SECTYPE(8)
129 INTEGER :: tmp_SecID_CELL(8),tmp_NumNOD(8),tmp_NumPOINT(8),NTAG
130
131 TYPE(POLY_ENTITY)tmpPOLY(8)
132 TYPE(CUT_PLANE)tmpCUT(8)
133
134
135
136
137
139 print *,""
140 print *, "================================="
141 print *, "======== SUBVOL ==========="
142 print *, "================================="
143 endif
144
145 volratiomin = em10
146
147 igr = ipari(49)
148 nel = ipari(50)
149 ii = 1
150
151 nbf = 1+itask*
nb/nthread
152 nbl = (itask+1)*
nb/nthread
153
154 DO ib=nbf,nbl
155
156 DO k=1,6
157 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Center(1) = zero
158 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Center(2) = zero
159 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Center(3) = zero
160 ENDDO
161
164 btwice = .false.
165 IF(icode==idble)btwice = .true.
166
167 secid = 0
170 psubvol(1:9)%Vnew = zero
171 pnnodcell(1:9) =>
brick_list(nin,ib)%POLY(1:9)
172 pnnodcell(1:9)%NumNOD = 0
173 pnpointcell(1:9) =>
brick_list(nin,ib)%POLY(1:9)
174 pnpointcell(1:9)%NumPOINT = 0
175
176
185
186 brick_list(nin,ib)%POLY(1:9)%FACE0%Surf = zero
187 DO k=1,6
188 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Surf = zero
189 ENDDO
190
191 nintpoint = 0
192 m_sum = 0
193 pwhichcellnod(1:8) =>
brick_list(nin,ib)%NODE(1:8)
194 pwhichcellnod(1:8)%WhichCell = 0
195 edgelist(1:16) = 0
196 edgepos(1:16,1:2) = 0
197
198 DO k=1,6
199 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Vel(1) = zero
200 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Vel(2) = zero
201 brick_list(nin,ib)%POLY(1:9)%FACE(k)%Vel(3) = zero
202 ENDDO
206
207
208
209
210
211
215 bambigous = .false.
216 IF(sectype(1:5)=='PENTA')THEN
219 IF(sectype(1:5)=='PENTA')THEN
220 IF (cod1==10 .AND. cod2==17 )THEN
221 bambigous = .true.
222 cod1_bis = 12
223 cod2_bis = 19
224 ELSEIF (cod1==11 .AND. cod2==14 )THEN
225 bambigous = .true.
226 cod1_bis = 15
227 cod2_bis = 18
228 ELSEIF (cod1==12 .AND. cod2==19 )THEN
229 bambigous = .true.
230 cod1_bis = 10
231 cod2_bis = 17
232 ELSEIF (cod1==13 .AND. cod2==16 )THEN
233 bambigous = .true.
234 cod1_bis = 09
235 cod2_bis = 20
236 ELSEIF (cod1==15 .AND. cod2==18 )THEN
237 bambigous = .true.
238 cod1_bis = 11
239 cod2_bis = 14
240 ELSEIF (cod1== 09 .AND. cod2==20 )THEN
241 bambigous = .true.
242 cod1_bis = 13
243 cod2_bis = 16
244 ENDIF
245 ENDIF
246 ENDIF
247
248 IF(.NOT.bambigous)THEN
249
250 ELSE
251
252
253
254
255 secid = cod1
256 iad(1:4) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,4)/)
257 iad(5) = iad(1)
258 icut(1:2,1:4) = 1
259 DO k=1,4
260 IF(
edge_list(nin,iad(k))%NBCUT > 1 .AND. gcorner(k,secid) > 0)icut(1,k) = 2
261
262 ietab(k) =
edge_list(nin,iad(k))%CUTSHELL(icut(1,k))
263 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(icut(1,k))
264 cutpoint(1:3) = x(1:3,
edge_list(nin,iad(k))%NODE(1) ) + cutcoor * (
edge_list(nin,iad(k))%VECTOR(1:3))
265 edge_list(nin,iad(k))%CUTPOINT(1:3,icut(1,1)) = cutpoint(1:3)
266 END DO
267 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,icut(1,1))
268 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,icut(1,2))
269 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,icut(1,3))
270 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,icut(1,4))
271 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/),c(1:3, 0 ))
272
273 pcut_vect(1:3,1) = vf(:,0) / sqrt(sum(vf(:,0)*vf(:,0)))
274
275 secid = cod2
276 iad(1:4) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,4)/)
277 iad(5) = iad(1)
278 DO k=1,4
279 IF(
edge_list(nin,iad(k))%NBCUT > 1 .AND. gcorner(k,secid) > 0)icut(2,k) = 2
280
281 ietab(4+k) =
edge_list(nin,iad(k))%CUTSHELL(icut(2,k))
282 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(icut(2,k))
283 cutpoint(1:3) = x(1:3,
edge_list(nin,iad(k))%NODE(1) ) + cutcoor * (
edge_list(nin,iad(k))%VECTOR(1:3))
284 edge_list(nin,iad(k))%CUTPOINT(1:3,icut(2,1)) = cutpoint(1:3)
285 END DO
286 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,icut(2,1))
287 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,icut(2,2))
288 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,icut(2,3))
289 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,icut(2,4))
290 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/),c(1:3, 0 ))
291
292 pcut_vect(1:3,2) = vf(:,0) / sqrt(sum(vf(:,0)*vf(:,0)))
293
294 secid = cod1_bis
295 iad(1:4) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,4)/)
296 iad(5) = iad(1)
297 icut(1,1:4) = 1
298 DO k=1,4
299 IF(
edge_list(nin,iad(k))%NBCUT > 1 .AND. gcorner(k,secid) > 0)icut(1,k) = 2
300
301 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(icut(1,k))
302 cutpoint(1:3) = x(1:3,
edge_list(nin,iad(k))%NODE(1) ) + cutcoor * (
edge_list(nin,iad(k))%VECTOR(1:3))
303 edge_list(nin,iad(k))%CUTPOINT(1:3,icut(1,1)) = cutpoint(1:3)
304 END DO !next k
305 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,icut(1,1))
306 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,icut(1,2))
307 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,icut(1,3))
308 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,icut(1,4))
309 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/),c(1:3, 0 ))
310
311 pcut_vect(1:3,3) = vf(:,0) / sqrt(sum(vf(:,0)*vf(:,0)))
312
313 secid = cod2_bis
314 iad(1:4) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,4)/)
315 iad(5) = iad(1)
316 icut(2,1:4) = 1
317 DO k=1,4
318 IF(
edge_list(nin,iad(k))%NBCUT > 1 .AND. gcorner(k,secid) > 0)icut(2,k) = 2
319
320 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(icut(2,k))
321 cutpoint(1:3) = x(1:3,
edge_list(nin,iad(k))%NODE(1) ) + cutcoor * (
edge_list(nin,iad(k))%VECTOR(1:3))
322 edge_list(nin,iad(k))%CUTPOINT(1:3,icut(2,1)) = cutpoint(1:3)
323 END DO
324 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,icut
325 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,icut(2,2))
326 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,icut
327 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,icut(2,4))
328 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/),c(1:3, 0 ))
329
330 pcut_vect(1:3,4) = vf(:,0) / sqrt(sum(vf(:,0)*vf(:,0)))
331
332
333
334 DO i=1,8
335 ie = ietab(i)
336 ienod(3:4)=irect_l(3:4,ie)
337 IF(ienod(3)==ienod(4))THEN
338 issh3n=.true.
339 diag1(1:3) = irect_l((/5,9,13/),ie) - irect_l((/6,10,14/),ie)
340 diag2(1:3) = irect_l((/5,9,13/),ie) - irect_l((/7,11,15/),ie)
341 ievect(1,i) = + diag1(2)*diag2(3) - diag1(3)*diag2(2)
342 ievect(2,i) = + diag1(3)*diag2(1) - diag1(1)*diag2(3)
343 ievect(3,i) = + diag1(1)*diag2(2) - diag1(2)*diag2(1)
344 ievect(1:3,i) = half * ievect(1:3,i) / sqrt(sum( ievect(1:3,i) * ievect(1:3,i) ))
345 ELSE
346 issh3n=.false.
347 diag1(1:3) = irect_l((/5, 9,13/),ie) - irect_l((/7,11,15/),ie)
348 diag2(1:3) = irect_l((/6,10,14/),ie) - irect_l((/8,12,16/),ie)
349 ievect(1,i) = + diag1(2)*diag2(3) - diag1(3)*diag2(2)
350 ievect(2,i) = + diag1(3)*diag2(1) - diag1(1)*diag2(3)
351 ievect(3,i) = + diag1(1)*diag2(2) - diag1(2)*diag2(1)
352 ievect(1:3,i) = half * ievect(1:3,i) / sqrt(sum( ievect(1:3,i) * ievect(1:3,i) ))
353 ENDIF
354 ENDDO
355
356
357
358 criteria(:) = zero
359 DO icrit = 1,2
360 DO ipcut = 1,2
361 DO j = 1,4
362 criteria(icrit) = criteria(icrit) + abs( sum(ievect(1:3,(ipcut-1)*4+j)*pcut_vect( 1:3 , (icrit-1)*2 + ipcut) ) )
363 enddo
364 enddo
365 enddo
366
367
368
369 IF (criteria(1) > criteria(2))THEN
370
371 ELSEIF(criteria(2) > criteria(1))THEN
372
373 brick_list(nin,ib)%SecID_CELL(1:2) = (/ cod1_bis, cod2_bis /)
374 brick_list(nin,ib)%SECTYPE(1) = strcode(cod1_bis)
375 brick_list(nin,ib)%SECTYPE(2) = strcode(cod2_bis)
376
377 ELSE
378
379 ENDIF
380
381 endif
382 endif
383
384
385
386
387
389 icute(1:2,1:12) = 0
390
391
392 uncutvol = one
393 DO ng=1,ngroup
394 nel_b=iparg(2,ng)
395 nfl =iparg(3,ng)
396 IF(
id>nfl.AND.
id<=nfl+nel_b)
THEN
398 uncutvol = elbuf_tab(ng)%GBUF%VOL(idloc)
399 EXIT
400 ENDIF
401 enddo
402
403 itag(1:8) = 0
404
405 DO icell=1, ncell
406 m = 0
407 ntrus = 0
408 nnod = 0
409 mnod = 0
412 bcompl = .false.
413 IF(secid<0)THEN
414 bcompl = .true.
415 secid = - secid
416 ENDIF
417 inodtag(1:8) = 0
418 IF(sectype(1:5)=='TETRA')THEN
419 ntrus= c_tetra
420 m = m_tetra
421 nnod = n_tetra+c_tetra
422 mnod = n_tetra
423 ELSEIF(sectype(1:5)=='PENTA')THEN
424 ntrus= c_penta
425 m = m_penta
426 nnod = n_penta+c_penta
427 mnod = n_penta
428 ELSEIF(sectype(1:5)=='POLY3')THEN
429 ntrus= c_poly3
430 m = m_poly3
431 nnod = n_poly3+c_poly3
432 mnod = n_poly3
433 ELSEIF(sectype(1:5)=='HEXAE')THEN
434 ntrus= c_hexae
435 m = m_hexae
436 nnod = n_hexae+c_hexae
437 mnod = n_hexae
438 ELSEIF(sectype(1:6)=='POLY4 ')THEN
439 ntrus= c_poly4
440 m = m_poly4
441 nnod = n_poly4+c_poly4
442 mnod = n_poly4
443 ELSEIF(sectype(1:6)=='POLY4A')THEN
444 ntrus= c_poly4a
445 m = m_poly4a
446 nnod = n_poly4a+c_poly4a
447 mnod = n_poly4a
448 ELSEIF(sectype(1:6)=='POLY4B')THEN
449 ntrus= c_poly4b
450 m = m_poly4b
451 nnod = n_poly4b+c_poly4b
452 mnod = n_poly4b
453 ELSEIF(sectype(1:5)=='POLYC')THEN
454 ntrus= c_polyc
455 m = m_polyc
456 nnod = n_polyc+c_polyc
457 mnod = n_polyc
458 END IF
459 m_sum = m_sum + m
460 nintpoint = nintpoint + ntrus
461 iad(1:ntrus) = (/((ib-1)*12+iabs(gcorner(k,secid)),k=1,ntrus)/)
462 iad(ntrus+1) = iad(1)
463 DO k=1,ntrus
464 edgelist(iabs(gcorner(k,secid))) = edgelist(iabs(gcorner(k,secid))) + 1
465 ENDDO
466
467
468
469
470
471 DO k=1,ntrus
472 tagedg = gcorner(k,secid)
473 IF(tagedg<0)THEN
474
475 ipos = 1
476 tagedg = - tagedg
477 ELSE
478 !on prend le plus eloigne
480 ipos = 1
481 ELSE
482 ipos = 2
483 ENDIF
484 ENDIF
485 edgepos(iabs(tagedg), ipos) = 1
486 IF(icute(ipos,tagedg)==1)ipos = mod(ipos,2)+1
487 cutcoor =
edge_list(nin,iad(k))%CUTCOOR(ipos)
488 cutpoint(1:3) = x(1:3,
edge_list(nin,iad(k))%NODE(1) ) + cutcoor * (
edge_list(nin,iad(k))%VECTOR(1:3))
489 ie =
edge_list(nin,iad(k))%CUTSHELL(ipos)
490 edge_list(nin,iad(k))%CUTPOINT(1:3,ipos) = cutpoint(1:3)
491 edge_list(nin,iad(k))%CUTVEL(1:3,ipos) = irect_l(24:26,ie)
492 icute(ipos, iabs(gcorner(k,secid))) = 1
493 ipose(k) = ipos
494 END DO
495
496
497
498 if(
brick_list(nin,ib)%ICODE==0.and.icell>=1)
then
499 print *, "error i22subvol."
500 stop 221
501 end if
502
503
504
505 nsh3n = getnumtria(getpolyhedratype(secid))
506 IF(ii<=nel-nsh3n.AND.nspmd<=1)THEN
507
508
509
510#include "lockon.inc"
511
512
513
514
515
516
517
518
519
520 DO k=1,nsh3n
521 ntria(1:3) = gtria(1:3,k,getpolyhedratype(secid))
522 x(1:3,ixtg(2,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(1)) )%CUTPOINT(1:3,ipose(ntria(1)) )
523 x(1:3,ixtg(3,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(2)) )%CUTPOINT(1:3,ipose(ntria(2)) )
524 x(1:3,ixtg(4,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(3)) )%CUTPOINT(1:3,ipose(ntria(3)) )
525 v(1:3,ixtg(2,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(1)) )%CUTVEL(1:3,ipose(ntria(1)) )
526 v(1:3,ixtg(3,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(2)) )%CUTVEL(1:3,ipose(ntria(2)) )
527 v(1:3,ixtg(4,igrsh3n(igr)%ENTITY(ii))) =
edge_list(nin,iad(ntria(3)) )%CUTVEL(1:3,ipose(ntria(3)) )
528
529
530
531
532
533
534
535
536
537
538
539
540
541 ii=ii+1
542 END DO
543
544#include "lockoff.inc"
545 END IF
546
547
548
549
550
551
552 fa(0) = 0
553
554
555 IF(sectype(1:5)=='TETRA')THEN
556 nface = f_tetra
557
558 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
559 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
560 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
561 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
562 fa(1:3) = gface(1:3,secid)
564 vf(:,2) =
i22aera(3,(/n1,a3,a2/), c(1:3,fa(2)))
565 vf(:,3) =
i22aera(3,(/n1,a1,a3/), c(1:3,fa(3)))
566 vf(:,0) =
i22aera(3,(/a1,a2,a3/), c(1:3, 0 ))
567 vol = sum((/(vf(:,i)*c(:,fa(i)),i=0,3)/))
568 vol = third * abs(vol)
569 volratio = vol/uncutvol
570 IF(volratio <= volratiomin) THEN
571 itag(icell)=1
572 nintpoint = nintpoint - ntrus
573
574 cycle
575 ENDIF
578
579 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
580 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
581 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
582 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
583 scut = sqrt(sum(vf(:,0)*vf(:,0)))
584 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
585 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
586 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
587 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
588 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
589 pface0 = scut
591 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
592 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
597 psubvol(icell)%Vnew = vol
598 pnnodcell(icell)%NumNOD = mnod
599 pnpointcell(icell)%NumPOINT= nnod
600 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/a1(1),a2(1),a3(1),n1(1)/) ) / four
601 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/a1(2),a2(2),a3(2),n1(2)/) ) / four
602 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum( (/a1(3),a2(3),a3(3),n1(3)/) ) / four
603 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
604 inodtag(gnode(1:mnod,secid)) = 1
605 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
606
607 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
608 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
609 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
610 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
611
612
613
614
615 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = third* (a1(1:3) + a2(1:3) + a3(1:3))
616
617 ELSEIF(sectype(1:5)=='PENTA')THEN
618 nface = f_penta
619 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
620 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
621 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
622 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
623 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
624 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
625 fa(1:4) = gface(1:4,secid)
626 vf(:,1) =
i22aera(3,(/n1,a2,a1/), c(1:3,fa(1)))
627 vf(:,2) =
i22aera(3,(/n2,a4,a3/), c(1:3,fa(2)))
628 vf(:,3) =
i22aera(4,(/n1,n2,a3,a2/),c(1:3,fa(3)))
629 vf(:,4) =
i22aera(4,(/n2,n1,a1,a4/),c(1:3,fa(4)))
630 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/),c(1:3, 0 ))
631 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,4)/))
632 vol = third * abs(vol)
633 volratio = vol/uncutvol
634 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
635 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center
636 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
637 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
638 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
639 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
640 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
641 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
642 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
643 scut = sqrt(sum(vf(:,0)*vf(:,0)))
644 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
645 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
646 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
647 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
648 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
649 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
650 pface0 = scut
651 IF(volratio <= volratiomin) THEN
652 IF(scut / exp(0.666*log(uncutvol)) <= em03)THEN
653 itag(icell)=1
654 nintpoint = nintpoint - ntrus
655
656 cycle
657 ENDIF
658 ENDIF
660 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
661 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
662 brick_list(nin,ib)%PCUT(icell)%NP = 4 !polygon points(number)
666 brick_list(nin,ib)%PCUT(icell)%P(1:3,4)= a4 !polygon points(coordinates)
667 psubvol(icell)%Vnew = vol
668 pnnodcell(icell)%NumNOD = mnod
669 pnpointcell(icell)%NumPOINT= nnod
670 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/a1(1),a2(1),a3(1),a4(1),n1(1),n2(1)/) ) / six
671 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/a1(2),a2(2),a3(2),a4(2),n1(2),n2(2)/) ) / six
672 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum( (/a1(3),a2(3),a3(3),a4(3),n1(3),n2(3)/) ) / six
673 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
674 inodtag(gnode(1:mnod,secid)) = 1
675 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
676
677 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
678 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
679 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
680 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
681 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
682 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
683
684
685
686
687
688 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = fourth* (a1(1:3) + a2(1:3) + a3(1:3) + a4(1:3))
689
690 ELSEIF(sectype(1:5)=='POLY3')THEN
691 nface = f_poly3
692 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
693 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
694 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
695 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
696 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
697 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
698 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
699 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
700 fa(1:5) = gface(1:5,secid)
701 vf(:,1) =
i22aera(5,(/n1,n2,n3,a3,a2/),c(1:3,fa(1)))
702 vf(:,2) =
i22aera(3,(/n3,a4,a3/), c(1:3,fa(2)))
703 vf(:,3) =
i22aera(4,(/n3,n2,a5,a4/), c(1:3,fa(3)))
704 vf(:,4) =
i22aera(4,(/n2,n1,a1,a5/), c(1:3,fa(4)))
705 vf(:,5) =
i22aera(3,(/n1,a2,a1/), c(1:3,fa(5)))
706 vf(:,0) =
i22aera(5,(/a1,a2,a3,a4,a5/),c(1:3, 0 ))
707 brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) + a3 + a2
708 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) + a4 + a3
709 brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) + a5 + a4
710 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) + a1 + a5
711 brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) + a2 + a1
712 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
713 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
714 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
715 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
716 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
717 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
718 scut = sqrt(sum(vf(:,0)*vf(:,0)))
719 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
720 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
721 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
722 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
723 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
724 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
725 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
726 pface0 = scut
728 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
729 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
736 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,5)/))
737 vol = third * abs(vol)
738 psubvol(icell)%Vnew = vol
739 pnnodcell(icell)%NumNOD = mnod
740 pnpointcell(icell)%NumPOINT= nnod
741 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/a1(1),a2(1),a3(1),a4(1),a5(1),n1(1),n2(1),n3(1)/) ) / eight
742 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/a1(2),a2(2),a3(2),a4(2),a5(2),n1(2),n2(2),n3(2)/) ) / eight
743 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum( (/a1(3),a2(3),a3(3),a4(3),a5(3),n1(3),n2(3),n3(3)/) ) / eight
744 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
745 inodtag(gnode(1:mnod,secid)) = 1
746 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
747
748 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
749 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
750 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
751 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
752 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
753 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
754 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
755 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
756
757
758
759
760
761
762 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_fifth * (a1+a2+a3+a4+a5)
763
764 ELSEIF(sectype(1:5)=='HEXAE')THEN
765 nface = f_hexae
766 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
767 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
768 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
769 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
770 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
771 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
772 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
773 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
774 fa(1:5) = gface(1:5,secid)
775 vf(:,1) =
i22aera(4,(/n4,n3,n2,n1/), c(1:3,fa(1)))
776 vf(:,2) =
i22aera(4,(/n1,n2,a2,a1/), c(1:3,fa(2)))
777 vf(:,3) =
i22aera(4,(/n2,n3,a3,a2/), c(1:3,fa(3)))
778 vf(:,4) =
i22aera(4,(/n3,n4,a4,a3/), c(1:3,fa(4)))
779 vf(:,5) =
i22aera(4,(/n4,n1,a1,a4/), c(1:3,fa(5)))
780 vf(:,0) =
i22aera(4,(/a1,a2,a3,a4/), c(1:3, 0 ))
781 brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) + zero
782 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
783 brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) + a3 + a2
784 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) + a4 + a3
785 brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) + a1 + a4
786 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
787 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
788 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
789 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
790 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
791 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
792 scut = sqrt(sum(vf(:,0)*vf(:,0)))
793 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
794 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
795 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
796 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
797 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
798 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
799 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
800 pface0 = scut
802 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
803 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
809 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,5)/))
810 vol = third * abs(vol)
811 psubvol(icell)%Vnew = vol
812 pnnodcell(icell)%NumNOD = mnod
813 pnpointcell(icell)%NumPOINT= nnod
814 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/a1(1),a2(1),a3(1),a4(1),n1(1),n2(1),n3(1),n4(1)/) ) / eight
815 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/a1(2),a2(2),a3(2),a4(2),n1(2),n2(2),n3(2),n4(2)/) ) / eight
816 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum( (/a1(3),a2(3),a3(3),a4(3),n1(3),n2(3),n3(3),n4(3)/) ) / eight
817 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
818 inodtag(gnode(1:mnod,secid)) = 1
819 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
820
821 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
822 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
823 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
824 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
825 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
826 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
827 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
828 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
829
830
831
832
833
834
835 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = fourth * (a1+a2+a3+a4)
836
837 ELSEIF(sectype(1:6)=='POLY4 ')THEN
838 nface = f_poly4
839 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
840 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
841 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
842 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
843 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
844 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
845 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
846 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
847 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
848 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
849 fa(1:6) = gface(1:6,secid)
850 vf(:,1) =
i22aera(3,(/n1,a2,a1/) , c(1:3,fa(1)))
851 vf(:,2) =
i22aera(5,(/n2,n4,a5,a4,n3/), c(1:3,fa(2)))
852 vf(:,3) =
i22aera(5,(/a1,a6,n4,n2,n1/), c(1:3,fa(3)))
853 vf(:,4) =
i22aera(5,(/n1,n2,n3,a3,a2/), c(1:3,fa(4)))
854 vf(:,5) =
i22aera(3,(/n4,a6,a5/), c(1:3,fa(5)))
855 vf(:,6) =
i22aera(3,(/n3,a4,a3/), c(1:3,fa(6)))
856 vf(:,0) =
i22aera(6,(/a1,a2,a3,a4,a5,a6/),c(1:3, 0 ))
857 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,6)/))
858 vol = third * abs(vol)
859 if(icell==2)then
861 vol2 = vol
862 if((vol1+vol2)/uncutvol>=one-em04)then
863 itag(icell)=1
864 nintpoint = nintpoint - ntrus
865
866 cycle
867 elseif( abs((vol1-vol2)/uncutvol)<=em04 )then
870 tmp(1) = c(1, 0 ) -
brick_list(nin,ib)%POLY(1)%FACE0%Center(1)
871 tmp(2) = c(2, 0 ) -
brick_list(nin,ib)%POLY(1)%FACE0%Center(2)
872 tmp(3) = c(3, 0 ) -
brick_list(nin,ib)%POLY(1)%FACE0%Center(3)
873 dist = tmp(1)*tmp(1)+tmp(2)*tmp(2)+tmp(3)*tmp(3)
874 dist = sqrt(dist)
875 if (dist / exp(0.333*log(uncutvol)) <= em04)THEN
876 itag(icell)=1
877 nintpoint = nintpoint - ntrus
878
879 cycle
880 ENDIF
881 endif
882 endif
883 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
884 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center
885 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
886 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) + a3
887 brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(
889 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
890 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
891 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
892 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
893 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
894 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%Center(1:3) = c(1:3,fa(6))
895 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
896 scut = sqrt(sum(vf(:,0)*vf(:,0)))
897 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
898 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
899 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
900 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
901 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
902 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
903 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
904 pface(fa(6))%Surf = sqrt(sum(vf(:,6)*vf(:,6)))
905 pface0 = scut
907 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
908 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
916 psubvol(icell)%Vnew = vol
917 pnnodcell(icell)%NumNOD = mnod
918 pnpointcell(icell)%NumPOINT= nnod
919 brick_list(nin,ib)%POLY(icell)%CellCenter(1)=sum((/a1(1),a2(1),a3(1),a4(1),a5(1),a6(1),n1(1),n2(1),n3(1),n4(1)/))/ten
920 brick_list(nin,ib)%POLY(icell)%CellCenter(2)=sum((/a1
921 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
922 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
923 inodtag(gnode(1:mnod,secid)) = 1 !tag local brick nodes [1 to 8] if used by polyhedron
924 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
925
926 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
927 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
928 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
929 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
930 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
931 a6 =>
edge_list(nin,iad(6))%CUTVEL(1:3,ipose(6))
932 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
933 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
934 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
935 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
936
937
938
939
940
941
942
943 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a2+a3+a4+a5+a6 )
944
945 ELSEIF(sectype(1:6)=='POLY4A')THEN
946 nface = f_poly4a
947 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
948 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
949 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
950 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
951 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
952 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
953 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
954 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
955 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
956 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
957 fa(1:6) = gface(1:6,secid)
958 vf(:,1) =
i22aera(3,(/n1,a1,a6/) , c(1:3,fa(1)))
959 vf(:,2) =
i22aera(4,(/n1,n2,a2,a1/) , c(1:3,fa(2)))
960 vf(:,3) =
i22aera(5,(/n2,n3,n4,a3,a2/), c(1:3,fa(3)))
961 vf(:,4) =
i22aera(3,(/n4,a4,a3/) , c(1:3,fa(4)))
962 vf(:,5) =
i22aera(4,(/n4,n3,a5,a4/) , c(1:3,fa(5)))
963 vf(:,6) =
i22aera(5,(/n3,n2,n1,a6,a5/), c(1:3,fa(6)))
964 vf(:,0) =
i22aera(6,(/a1,a2,a3,a4,a5,a6/),c(1:3, 0 ))
965 brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) + a1 + a6
966 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) + a2 + a1
967 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
968 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
969 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(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
973 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
974 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa
975 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
976 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%Center(1:3) = c(1:3,fa(6)
978 scut = sqrt(sum(vf(:,0)*vf(:,0)))
979 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
980 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
981 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
982 pface
983 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
984 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
985 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
986 pface(fa(6))%Surf = sqrt(sum(vf(:,6)*vf(:,6)))
987 pface0 = scut
989 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
990 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
998 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,6)/))
999 vol = third * abs(vol)
1000 psubvol(icell)%Vnew = vol
1001 pnnodcell(icell)%NumNOD = mnod !
main(brick nodes)
1002 pnpointcell(icell)%NumPOINT= nnod
1003 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum((/a1(1),a2(1),a3(1),a4(1),a5(1),a6(1),n1(1),n2(1),n3(1),n4(1)/))/ten
1004 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum((/a1(2),a2(2),a3(2),a4(2),a5(2),a6(2),n1(2),n2(2),n3(2),n4(2)/))/ten
1005 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
1006 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
1007 inodtag(gnode(1:mnod,secid)) = 1
1008 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
1009
1010 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
1011 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
1012 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
1013 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
1014 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
1015 a6 =>
edge_list(nin,iad(6))%CUTVEL(1:3,ipose(6))
1016 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
1017 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
1018 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
1019 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
1020
1021
1022
1023
1024
1025
1026
1027 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a2+a3+a4+a5+a6 )
1028
1029 ELSEIF(sectype(1:6)=='POLY4B')THEN
1030 nface = f_poly4b
1031 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1032 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1033 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1034 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1035 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1036 a6
1037 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1038 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1039 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1040 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1041 fa(1:6) = gface(1:6,secid)
1042 vf(:,1) = -
i22aera(3,(/n1,a1,a6/) , c(1:3,fa(1)))
1043 vf(:,2) = -
i22aera(4,(/n1,n2,a2,a1/) , c(1:3,fa(2)))
1044 vf(:,3) = -
i22aera(5,(/n2,n3,n4,a3,a2/), c(1:3,fa(3)))
1045 vf(:,4) = -
i22aera(3,(/n4,a4,a3/) , c(1:3,fa(4)))
1046 vf(:,5) = -
i22aera(4,(/n4,n3,a5,a4/) , c(1:3,fa(5)))
1047 vf(:,6) = -
i22aera(5,(/n3,n2,n1,a6,a5/), c(1:3,fa(6)))
1048 vf(:,0) = -
i22aera(6,(/a1,a2,a3,a4,a5,a6/),c(1:3, 0 ))
1049 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
1050 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) + a2 + a1
1051 brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) + a3 + a2
1052 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) + a4 + a3
1053 brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) + a5 + a4
1054 brick_list(nin,ib)%POLY(9)%FACE(fa(6))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(6))%Center(1:3) + a6 + a5
1055 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
1056 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa(2))
1057 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
1058 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
1059 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
1060 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%Center(1:3) = c(1:3,fa(6))
1061 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
1062 scut = sqrt(sum(vf(:,0)*vf(:,0)))
1063 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
1064 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
1065 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
1066 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
1067 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
1068 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
1069 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
1070 pface(fa(6))%Surf = sqrt(sum(vf(:,6)*vf(:,6)))
1071 pface0 = scut
1073 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
1074 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
1082 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,6)/))
1083 vol = third * abs(vol)
1084 psubvol(icell)%Vnew = vol
1085 pnnodcell(icell)%NumNOD = mnod
1086 pnpointcell(icell)%NumPOINT= nnod
1087 brick_list(nin,ib)%POLY(icell)%CellCenter(1)=sum((/a1(1),a2(1),a3(1),a4(1),a5(1),a6(1),n1(1),n2(1),n3(1),n4(1)/))/ten
1088 brick_list(nin,ib)%POLY(icell)%CellCenter(2)=sum((/a1(2),a2(2),a3(2),a4(2),a5(2),a6(2),n1(2),n2(2),n3(2),n4(2)/))/ten
1089 brick_list(nin,ib)%POLY(icell)%CellCenter(3)=sum((/a1(3),a2(3),a3(3),a4(3),a5(3),a6(3),n1(3),n2(3),n3(3),n4(3)/))/ten
1090 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
1091 inodtag(gnode(1:mnod,secid)) = 1
1092 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
1093
1094 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
1095 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
1096 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
1097 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
1098 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
1099 a6 =>
edge_list(nin,iad(6))%CUTVEL(1:3,ipose(6))
1100 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
1101 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
1102 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
1103 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
1104
1105
1106
1107
1108
1109
1110
1111 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a2+a3+a4+a5+a6 )
1112
1113 ELSEIF(sectype(1:5)=='POLYC')THEN
1114 nface = f_polyc
1115 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1116 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1117 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1118 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1119 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1120 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1121 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1122 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1123 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1124 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1125 fa(1:6) = gface(1:6,secid)
1126 vf(:,1) =
i22aera(4,(/n1,n2,n3,n4/) , c(1:3,fa(1)))
1127 vf(:,2) =
i22aera(4,(/n1,a1,a2,n2/) , c(1:3,fa(2)))
1128 vf(:,3) =
i22aera(4,(/n2,a2,a3,n3/) , c(1:3,fa(3)))
1129 vf(:,4) =
i22aera(4,(/n1,n4,a4,a1/) , c(1:3,fa(4)))
1130 vf(:,5) =
i22aera(7,(/n4,n3,a3,a6,a5,a4,n4/) , c(1:3,fa(5)))
1131 vf(:,0) =
i22aera(6,(/a1,a4,a5,a6,a3,a2/) , c(1:3, 0 ))
1132 brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(1))%Center(1:3) + zero
1133 brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(2))%Center(1:3) +a1+a2
1134 brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(3))%Center(1:3) +a2+a3
1135 brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(4))%Center(1:3) +a4+a1
1136 brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) =
brick_list(nin,ib)%POLY(9)%FACE(fa(5))%Center(1:3) +a3+a6+a5+a4
1137 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%Center(1:3) = c(1:3,fa(1))
1138 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%Center(1:3) = c(1:3,fa
1139 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%Center(1:3) = c(1:3,fa(3))
1140 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%Center(1:3) = c(1:3,fa(4))
1141 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%Center(1:3) = c(1:3,fa(5))
1142 brick_list(nin,ib)%POLY(icell)%FACE0%Center(1:3) = c(1:3, 0 )
1143 scut = sqrt(sum(vf(:,0)*vf(:,0)))
1144 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
1145 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
1146 pface(fa(1))%Surf = sqrt(sum(vf(:,1)*vf(:,1)))
1147 pface(fa(2))%Surf = sqrt(sum(vf(:,2)*vf(:,2)))
1148 pface(fa(3))%Surf = sqrt(sum(vf(:,3)*vf(:,3)))
1149 pface(fa(4))%Surf = sqrt(sum(vf(:,4)*vf(:,4)))
1150 pface(fa(5))%Surf = sqrt(sum(vf(:,5)*vf(:,5)))
1151 pface0 = scut
1153 brick_list(nin,ib)%PCUT(icell)%B(1:3) = c(1:3,0)
1154 brick_list(nin,ib)%PCUT(icell)%N(1:3) = vf(:,0)
1162 vol = sum((/(vf(:,i)*c(1:3,fa(i)),i=0,5)/))
1163 vol = third * abs(vol)
1164 psubvol(icell)%Vnew = vol
1165 pnnodcell(icell)%NumNOD = mnod
1166 pnpointcell(icell)%NumPOINT= nnod
1167 brick_list(nin,ib)%POLY(icell)%CellCenter(1)=sum((/a1(1),a2(1),a3(1),a4(1),a5(1),a6(1),n1(1),n2
1168 brick_list(nin,ib)%POLY(icell)%CellCenter(2)=sum((/a1(2),a2(2),a3(2),a4(2),a5(2),a6(2),n1(2),n2(2),n3(2),n4(2)/))/ten
1169 brick_list(nin,ib)%POLY(icell)%CellCenter(3)=sum((/a1(3),a2(3),a3(3),a4(3),a5(3),a6(3),n1(3),n2(3),n3(3),n4(3)/))/ten
1170 brick_list(nin,ib)%POLY(icell)%ListNodID(1:mnod) = gnode(1:mnod,secid)
1171 inodtag(gnode(1:mnod,secid)) = 1
1172 pwhichcellnod(gnode(1:mnod,secid))%WhichCell = icell
1173
1174 a1 =>
edge_list(nin,iad(1))%CUTVEL(1:3,ipose(1))
1175 a2 =>
edge_list(nin,iad(2))%CUTVEL(1:3,ipose(2))
1176 a3 =>
edge_list(nin,iad(3))%CUTVEL(1:3,ipose(3))
1177 a4 =>
edge_list(nin,iad(4))%CUTVEL(1:3,ipose(4))
1178 a5 =>
edge_list(nin,iad(5))%CUTVEL(1:3,ipose(5))
1179 a6 =>
edge_list(nin,iad(6))%CUTVEL(1:3,ipose(6))
1180 n1 => v(1:3,ixs(gnode(1,secid)+1,
id))
1181 n2 => v(1:3,ixs(gnode(2,secid)+1,
id))
1182 n3 => v(1:3,ixs(gnode(3,secid)+1,
id))
1183 n4 => v(1:3,ixs(gnode(4,secid)+1,
id))
1184
1185
1186
1187
1188
1189
1190 brick_list(nin,ib)%PCUT(icell)%Vel(1:3) = one_over_6 * (a1+a4+a5+a6+a3+a2)
1191 END IF
1192
1193
1194 IF(bcompl)THEN
1195 pface(1:6) =>
brick_list(nin,ib)%POLY(icell)%FACE(1:6)
1196 pface0=>
brick_list(nin,ib)%POLY(icell)%FACE0%Surf
1197 DO j=1,nface
1198 pface(fa(j))%Surf =- pface(fa(j))%Surf
1199 ENDDO
1200 psubvol(icell)%Vnew =- psubvol(icell)%Vnew
1201 pnnodcell(icell)%NumNOD = 8-mnod
1202 ENDIF
1203
1204
1205
1206
1207 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = zero
1208 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = zero
1209 IF(i22_aleul == 1)THEN
1210 IF(sectype(1:5)=='TETRA')THEN
1211 nface = f_tetra
1212 fa(1:3) = gface(1:3,secid)
1213
1214 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1215 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1216 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1217
1218 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1219 j = iad(1)-(ib-1)*12;
1222 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1223 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1224 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1225
1226 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1227 j = iad(2)-(ib-1)*12;
1230 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1231 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1232 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1233
1234 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1235 j = iad(3)-(ib-1)*12;
1238 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1239 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1240 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1241
1242 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1243 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1244 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1245 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1246
1247 wf1(1) = third*(wn1(1)+wa2(1)+wa1(1))
1248 wf1(2) = third*(wn1(2)+wa2(2)+wa1(2))
1249 wf1(3) = third*(wn1(3)+wa2(3)+wa1(3))
1250
1251 wf2(1) = third*(wn1(1)+wa3(1)+wa2(1))
1252 wf2(2) = third*(wn1(2)+wa3(2)+wa2(2))
1253 wf2(3) = third*(wn1(3)+wa3(3)+wa2(3))
1254
1255 wf3(1) = third*(wn1(1)+wa1(1)+wa3(1))
1256 wf3(2) = third*(wn1(2)+wa1(2)+wa3(2))
1257 wf3(3) = third*(wn1(3)+wa1(3)+wa3(3))
1258
1259 wf0(1) = third*(wa1(1)+wa2(1)+wa3(1))
1260 wf0(2) = third*(wa1(2)+wa2(2)+wa3(2))
1261 wf0(3) = third*(wa1(3)+wa2(3)+wa3(3))
1262
1263 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1264 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1265 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1266 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1267
1268
1269 ELSEIF(sectype(1:5)=='PENTA')THEN
1270 nface = f_penta
1271 fa(1:4) = gface(1:4,secid)
1272 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1273 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1274 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1275 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1276 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1277 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1278
1279 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1280 j = iad(1)-(ib-1)*12;
1283 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1284 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1285 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1286
1287 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1288 j = iad(2)-(ib-1)*12;
1291 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1292 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1293 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1294
1295 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1296 j = iad(3)-(ib-1)*12;
1299 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1300 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1301 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1302
1303 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1304 j = iad(4)-(ib-1)*12;
1307 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1308 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1309 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1310
1311 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1312 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1313 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1314
1315 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1316 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1317 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1318
1319 wf1(1) = third*(wn1(1)+wa2(1)+wa1(1))
1320 wf1(2) = third*(wn1(2)+wa2(2)+wa1(2))
1321 wf1(3) = third*(wn1(3)+wa2(3)+wa1(3))
1322
1323 wf2(1) = third*(wn2(1)+wa4(1)+wa3(1))
1324 wf2(2) = third*(wn2(2)+wa4(2)+wa3(2))
1325 wf2(3) = third*(wn2(3)+wa4(3)+wa3(3))
1326
1327 wf3(1) = fourth*(wn1(1)+wn2(1)+wa3(1)+wa2(1))
1328 wf3(2) = fourth*(wn1(2)+wn2(2)+wa3(2)+wa2(2))
1329 wf3(3) = fourth*(wn1(3)+wn2(3)+wa3(3)+wa2(3))
1330
1331 wf4(1) = fourth*(wn2(1)+wn1(1)+wa1(1)+wa4(1))
1332 wf4(2) = fourth*(wn2(2)+wn1(2)+wa1
1333 wf4(3) = fourth*(wn2(3)+wn1(3)+wa1(3)+wa4(3))
1334
1335 wf0(1) = fourth*(wa1(1)+wa2(1)+wa3(1)+wa4(1))
1336 wf0(2) = fourth*(wa1(2)+wa2(2)+wa3(2)+wa4(2))
1337 wf0(3) = fourth*(wa1(3)+wa2(3)+wa3(3)+wa4
1338
1339 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1340 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1341 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1342 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1343 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1344
1345 ELSEIF(sectype(1:5)=='POLY3')THEN
1346 nface = f_poly3
1347 fa(1:5) = gface(1:5,secid)
1348 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1349 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1350 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1351 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1352 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1353 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1354 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1355 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1356
1357 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1358 j = iad(1)-(ib-1)*12;
1361 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1362 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1363 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1364
1365 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1366 j = iad(2)-(ib-1)*12;
1369 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1370 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1371 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1372
1373 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1374 j = iad(3)-(ib-1)*12;
1377 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1378 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1379 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1380
1381 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1382 j = iad(4)-(ib-1)*12;
1385 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1386 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1387 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1388
1389 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(5));
1390 j = iad(5)-(ib-1)*12;
1393 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1394 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1395 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1396
1397 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1398 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1399 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1400
1401 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1402 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1403 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1404
1405 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1406 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1407 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1408
1409 wf1(1) = one_fifth*(wn1(1)+wn2(1)+wn3(1)+wa3(1)+wa2(1))
1410 wf1(2) = one_fifth*(wn1(2)+wn2(2)+wn3(2)+wa3(2)+wa2
1411 wf1(3) = one_fifth*(wn1(3)+wn2(3)+wn3(3)+wa3(3
1412
1413 wf2(1) = third*(wn3(1)+wa4(1)+wa3(1))
1414 wf2(2) = third*(wn3(2)+wa4(2)+wa3(2))
1415 wf2(3) = third*(wn3(3)+wa4(3)+wa3(3))
1416
1417 wf3(1) = fourth*(wn3(1)+wn2(1)+wa5(1)+wa4(1))
1418 wf3(2) = fourth*(wn3(2)+wn2(2)+wa5(2)+wa4(2))
1419 wf3(3) = fourth*(wn3(3)+wn2(3)+wa5(3)+wa4(3))
1420
1421 wf4(1) = fourth*(wn2(1)+wn1(1)+wa1(1)+wa5(1))
1422 wf4(2) = fourth*(wn2(2)+wn1(2)+wa1(2)+wa5(2))
1423 wf4(3) = fourth*(wn2(3)+wn1(3)+wa1(3)+wa5(3))
1424
1425 wf5(1) = third*(wn1(1)+wa2(1)+wa1(1))
1426 wf5(2) = third*(wn1(2)+wa2(2)+wa1(2))
1427 wf5(3) = third*(wn1(3)+wa2(3)+wa1(3))
1428
1429 wf0(1) = one_fifth*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1))
1430 wf0(2) = one_fifth*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2))
1431 wf0(3) = one_fifth*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3))
1432
1433 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1434 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1435 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1436 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1437 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1438 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1439
1440 ELSEIF(sectype(1:5)=='HEXAE')THEN
1441 nface = f_hexae
1442 fa(1:5) = gface(1:5,secid)
1443 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1444 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1445 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1446 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1447 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1448 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1449 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1450 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1451
1452 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1453 j = iad(1)-(ib-1)*12;
1456 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1457 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1458 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1459
1460 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1461 j = iad(2)-(ib-1)*12;
1464 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1465 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1466 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1467
1468 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1469 j = iad(3)-(ib-1)*12;
1472 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1473 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1474 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1475
1476 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1477 j = iad(4)-(ib-1)*12;
1480 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1481 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1482 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1483
1484 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1485 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1486 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1487
1488 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1489 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1490 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1491
1492 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1493 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1494 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1495
1496 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1497 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1498 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1499
1500 wf1(1) = fourth*(wn4(1)+wn3(1)+wn2(1)+wn1(1))
1501 wf1(2) = fourth*(wn4(2)+wn3(2)+wn2(2)+wn1(2))
1502 wf1(3) = fourth*(wn4(3)+wn3(3)+wn2(3)+wn1(3))
1503
1504 wf2(1) = fourth*(wn1(1)+wn2(1)+wa2(1)+wa1(1))
1505 wf2(2) = fourth*(wn1(2)+wn2(2)+wa2(2)+wa1(2))
1506 wf2(3) = fourth*(wn1(3)+wn2(3)+wa2(3)+wa1(3))
1507
1508 wf3(1) = fourth*(wn2(1)+wn3(1)+wa3(1)+wa2(1))
1509 wf3(2) = fourth*(wn2(2)+wn3(2)+wa3(2)+wa2(2))
1510 wf3(3) = fourth*(wn2(3)+wn3(3)+wa3(3)+wa2(3))
1511
1512 wf4(1) = fourth*(wn3(1)+wn4(1)+wa4(1)+wa3(1))
1513 wf4(2) = fourth*(wn3(2)+wn4(2)+wa4(2)+wa3(2))
1514 wf4(3) = fourth*(wn3(3)+wn4(3)+wa4(3)+wa3(3))
1515
1516
1517 wf5(2) = fourth*(wn4(2)+wn1(2)+wa1(2)+wa4(2))
1518 wf5(3) = fourth*(wn4(3)+wn1(3)+wa1(3)+wa4(3))
1519
1520 wf0(1) = one_fifth*(wa1(1)+wa2(1)+wa3(1)+wa4(1))
1521 wf0(2) = one_fifth*(wa1(2)+wa2(2)+wa3(2)+wa4(2))
1522 wf0(3) = one_fifth*(wa1(3)+wa2(3)+wa3(3)+wa4(3))
1523
1524 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1525 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1526 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1527 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1528 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1529 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1530
1531
1532 ELSEIF(sectype(1:6)=='POLY4 ')THEN
1533 nface = f_poly4
1534 fa(1:6) = gface(1:6,secid)
1535 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1536 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1537 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1538 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1539 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1540 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1541 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1542 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1543 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1544 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1545
1546 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1547 j = iad(1)-(ib-1)*12;
1550 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1551 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1552 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1553
1554 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1555 j = iad(2)-(ib-1)*12;
1558 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1559 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1560 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1561
1562 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1563 j = iad(3)-(ib-1)*12;
1566 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1567 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1568 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1569
1570 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1571 j = iad(4)-(ib-1)*12;
1574 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1575 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1576 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1577
1578 beta =
edge_list(nin,iad(5))%CUTCOOR(ipose(5));
1579 j = iad(5)-(ib-1)*12;
1582 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1583 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1584 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1585
1586 beta =
edge_list(nin,iad(6))%CUTCOOR(ipose(6));
1587 j = iad(6)-(ib-1)*12;
1590 wa6(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1591 wa6(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1592 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1593
1594 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1595 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1596 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1597
1598 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1599 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1600 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1601
1602 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1603 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1604 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1605
1606 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1607 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1608 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1609
1610 wf1(1) = third*(wn1(1)+wa1(1)+wa6(1))
1611 wf1(2) = third*(wn1(2)+wa1(2)+wa6(2))
1612 wf1(3) = third*(wn1(3)+wa1(3)+wa6(3))
1613
1614 wf2(1) = fourth*(wn1(1)+wn2(1)+wa2(1)+wa1(1))
1615 wf2(2) = fourth*(wn1(2)+wn2(2)+wa2(2)+wa1(2))
1616 wf2(3) = fourth*(wn1(3)+wn2(3)+wa2(3)+wa1(3))
1617
1618 wf3(1) = one_fifth*(wn2(1)+wn3(1)+wn4(1)+wa3(1)+wa2(1))
1619 wf3(2) = one_fifth*(wn2(2)+wn3(2)+wn4(2)+wa3(2)+wa2(2))
1620 wf3(3) = one_fifth*(wn2(3)+wn3(3)+wn4(3)+wa3(3)+wa2(3))
1621
1622 wf4(1) = third*(wn4(1)+wa4(1)+wa3(1))
1623 wf4(2) = third*(wn4(2)+wa4(2)+wa3(2))
1624 wf4(3) = third*(wn4(3)+wa4(3)+wa3(3))
1625
1626 wf5(1) = fourth*(wn4(1)+wn3(1)+wa5(1)+wa4(1))
1627 wf5(2) = fourth*(wn4(2)+wn3(2)+wa5(2)+wa4(2))
1628 wf5(3) = fourth*(wn4(3)+wn3(3)+wa5(3)+wa4(3))
1629
1630 wf6(1) = fourth*(wn3(1)+wn2(1)+wn1(1)+wa6(1)+wa5(1))
1631 wf6(2) = fourth*(wn3(2)+wn2(2)+wn1(2)+wa6(2)+wa5(2))
1632 wf6(3) = fourth*(wn3(3)+wn2(3)+wn1(3)+wa6(3)+wa5(3))
1633
1634 wf0(1) = one_over_6*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1)+wa6(1))
1635 wf0(2) = one_over_6*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2)+wa6(2))
1636 wf0(3) = one_over_6*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3)+wa6(3))
1637
1638 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1639 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1640 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2
1641 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1642 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1643 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1645
1646
1647 ELSEIF(sectype(1:6)=='POLY4A')THEN
1648 nface = f_poly4a
1649 fa(1:6) = gface(1:6,secid)
1650 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1651 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1652 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1653 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1654 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1655 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1656 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1657 n2 => x(1:3,ixs(gnode(2,secid)+1,
id
1658 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1659 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1660
1661 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1662 j = iad(1)-(ib-1)*12;
1665 wa1(1) = beta * w(1,edgnod1) + (one-beta
1666 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w
1667 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1668
1669 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1670 j = iad(2)-(ib-1)*12;
1673 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1674 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1675 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1676
1677 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1678 j = iad(3)-(ib-1)*12;
1681 wa3
1682 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1683 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1684
1685 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1686 j = iad(4)-(ib-1)*12;
1689 wa4(1) = beta * w(1,edgnod1
1690 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1691 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1692
1694 j = iad(5)-(ib-1)*12;
1697 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1698 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2
1699 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1700
1701 beta =
edge_list(nin,iad(6))%CUTCOOR(ipose
1702 j = iad(6)-(ib-1)*12;
1705 wa6(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1706 wa6(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1707 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1708
1709 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1710 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1711 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1712
1713 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1714 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1715 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1716
1717 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1718 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1719 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1720
1721 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1722 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1723 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1724
1725 wf1(1) = third*(wn1(1)+wa1(1)+wa6(1))
1726 wf1(2) = third*(wn1(2)+wa1(2)+wa6(2))
1727 wf1(3) = third*(wn1(3)+wa1(3)+wa6(3))
1728
1729 wf2(1) = fourth*(wn1(1)+wn2(1)+wa2(1)+wa1(1))
1730 wf2(2) = fourth*(wn1(2)+wn2(2)+wa2(2)+wa1(2))
1731 wf2(3) = fourth*(wn1(3)+wn2(3)+wa2(3)+wa1(3))
1732
1733 wf3(1) = one_fifth*(wn2(1)+wn3(1)+wn4(1)+wa3(1)+wa2(1))
1734 wf3(2) = one_fifth*(wn2(2)+wn3(2)+wn4(2)+wa3(2)+wa2(2))
1735 wf3(3) = one_fifth*(wn2(3)+wn3(3)+wn4(3)+wa3(3)+wa2(3))
1736
1737 wf4(1) = third*(wn4(1)+wa4(1)+wa3(1))
1738 wf4(2) = third*(wn4(2)+wa4(2)+wa3(2))
1739 wf4(3) = third*(wn4(3)+wa4(3)+wa3(3))
1740
1741 wf5(1) = fourth*(wn4(1)+wn3(1)+wa5(1)+wa4(1))
1742 wf5(2) = fourth*(wn4(2)+wn3(2)+wa5(2)+wa4(2))
1743 wf5(3) = fourth*(wn4(3)+wn3(3)+wa5(3)+wa4(3))
1744
1745 wf6(1) = fourth*(wn3(1)+wn2(1)+wn1(1)+wa6(1)+wa5(1))
1746 wf6(2) = fourth*(wn3(2)+wn2(2)+wn1(2)+wa6(2)+wa5(2))
1747 wf6(3) = fourth*(wn3(3)+wn2(3)+wn1(3)+wa6(3)+wa5(3))
1748
1749 wf0(1) = one_over_6*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1)+wa6(1))
1750 wf0(2) = one_over_6*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2)+wa6(2))
1751 wf0(3) = one_over_6*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3)+wa6(3))
1752
1753 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1754 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:
1755 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1756 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1757 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1758 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1759 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%W(1:3) = wf6(1:3)
1760
1761 ELSEIF(sectype(1:6)=='POLY4B')THEN
1762 nface = f_poly4b
1763 fa(1:6) = gface(1:6,secid)
1764 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1765 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1766 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1767 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1768 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1769 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1770 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1771 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1772 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1773 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1774
1775 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1776 j = iad(1)-(ib-1)*12;
1779 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1780 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1781 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1782
1783 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1784 j = iad(2)-(ib-1)*12;
1787 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1788 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1789 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1790
1791 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1792 j = iad(3)-(ib-1)*12;
1795 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1796 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1797 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1798
1799 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1800 j = iad(4)-(ib-1)*12;
1803 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1804 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1805 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1806
1807 beta =
edge_list(nin,iad(5))%CUTCOOR(ipose(5));
1808 j = iad(5)-(ib-1)*12;
1811 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1812 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1813 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1814
1815 beta =
edge_list(nin,iad(6))%CUTCOOR(ipose(6));
1816 j = iad(6)-(ib-1)*12;
1819 wa6(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1820 wa6(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1821 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1822
1823 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1824 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1825 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1826
1827 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1828 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1829 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1830
1831 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1832 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1833 wn3(3)= w(3,ixs(gnode
1834
1835 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1836 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1837 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1838
1839 wf1(1) = third*(wn1(1)+wa1(1)+wa6(1))
1840 wf1(2) = third*(wn1(2)+wa1(2)+wa6(2))
1841 wf1(3) = third*(wn1(3)+wa1(3)+wa6(3))
1842
1843 wf2(1) = fourth*(wn1(1)+wn2(1)+wa2(1)+wa1(1))
1844 wf2(2) = fourth*(wn1(2)+wn2(2)+wa2(2)+wa1(2))
1845 wf2(3) = fourth*(wn1(3)+wn2(3)+wa2(3)+wa1(3))
1846
1847 wf3(1) = one_fifth*(wn2(1)+wn3(1)+wn4(1)+wa3(1)+wa2(1))
1848 wf3(2) = one_fifth*(wn2(2)+wn3(2)+wn4(2)+wa3(2)+wa2(2))
1849 wf3(3) = one_fifth*(wn2(3)+wn3(3)+wn4(3)+wa3(3)+wa2(3))
1850
1851 wf4(1) = third*(wn4(1)+wa4(1)+wa3(1))
1852 wf4(2) = third*(wn4(2)+wa4(2)+wa3(2))
1853 wf4(3) = third*(wn4(3)+wa4(3)+wa3(3))
1854
1855 wf5(1) = fourth*(wn4(1)+wn3(1)+wa5(1)+wa4(1))
1856 wf5(2) = fourth*(wn4(2)+wn3(2)+wa5(2)+wa4(2))
1857 wf5(3) = fourth*(wn4(3)+wn3(3)+wa5(3)+wa4(3))
1858
1859 wf6(1) = fourth*(wn3(1)+wn2(1)+wn1(1)+wa6(1)+wa5(1))
1860 wf6(2) = fourth*(wn3(2)+wn2(2)+wn1(2)+wa6(2)+wa5(2))
1861 wf6(3) = fourth*(wn3(3)+wn2(3)+wn1(3)+wa6(3)+wa5(3))
1862
1863 wf0(1) = one_over_6*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1)+wa6(1))
1864 wf0(2) = one_over_6*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2)+wa6(2))
1865 wf0(3) = one_over_6*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3)+wa6(3))
1866
1867 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1868 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1869 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1870 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1871 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1872 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1873 brick_list(nin,ib)%POLY(icell)%FACE(fa(6))%W(1:3) = wf6(1:3)
1874
1875 ELSEIF(sectype(1:5)=='POLYC')THEN
1876 nface = f_polyc
1877 fa(1:6) = gface(1:6,secid)
1878 a1 =>
edge_list(nin,iad(1))%CUTPOINT(1:3,ipose(1))
1879 a2 =>
edge_list(nin,iad(2))%CUTPOINT(1:3,ipose(2))
1880 a3 =>
edge_list(nin,iad(3))%CUTPOINT(1:3,ipose(3))
1881 a4 =>
edge_list(nin,iad(4))%CUTPOINT(1:3,ipose(4))
1882 a5 =>
edge_list(nin,iad(5))%CUTPOINT(1:3,ipose(5))
1883 a6 =>
edge_list(nin,iad(6))%CUTPOINT(1:3,ipose(6))
1884 n1 => x(1:3,ixs(gnode(1,secid)+1,
id))
1885 n2 => x(1:3,ixs(gnode(2,secid)+1,
id))
1886 n3 => x(1:3,ixs(gnode(3,secid)+1,
id))
1887 n4 => x(1:3,ixs(gnode(4,secid)+1,
id))
1888
1889 beta =
edge_list(nin,iad(1))%CUTCOOR(ipose(1));
1890 j = iad(1)-(ib-1)*12;
1893 wa1(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1894 wa1(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1895 wa1(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1896
1897 beta =
edge_list(nin,iad(2))%CUTCOOR(ipose(2));
1898 j = iad(2)-(ib-1)*12;
1901 wa2(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1902 wa2(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1903 wa2(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1904
1905 beta =
edge_list(nin,iad(3))%CUTCOOR(ipose(3));
1906 j = iad(3)-(ib-1)*12;
1909 wa3(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1910 wa3(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1911 wa3(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1912
1913 beta =
edge_list(nin,iad(4))%CUTCOOR(ipose(4));
1914 j = iad(4)-(ib-1)*12;
1917 wa4(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1918 wa4(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1919 wa4(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1920
1921 beta =
edge_list(nin,iad(5))%CUTCOOR(ipose(5));
1922 j = iad(5)-(ib-1)*12;
1925 wa5(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1926 wa5(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1927 wa5(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1928
1929 beta =
edge_list(nin,iad(6))%CUTCOOR(ipose(6));
1930 j = iad(6)-(ib-1)*12;
1933 wa6(1) = beta * w(1,edgnod1) + (one-beta)*w(1,edgnod2)
1934 wa6(2) = beta * w(2,edgnod1) + (one-beta)*w(2,edgnod2)
1935 wa6(3) = beta * w(3,edgnod1) + (one-beta)*w(3,edgnod2)
1936
1937 wn1(1)= w(1,ixs(gnode(1,secid)+1,
id))
1938 wn1(2)= w(2,ixs(gnode(1,secid)+1,
id))
1939 wn1(3)= w(3,ixs(gnode(1,secid)+1,
id))
1940
1941 wn2(1)= w(1,ixs(gnode(2,secid)+1,
id))
1942 wn2(2)= w(2,ixs(gnode(2,secid)+1,
id))
1943 wn2(3)= w(3,ixs(gnode(2,secid)+1,
id))
1944
1945 wn3(1)= w(1,ixs(gnode(3,secid)+1,
id))
1946 wn3(2)= w(2,ixs(gnode(3,secid)+1,
id))
1947 wn3(3)= w(3,ixs(gnode(3,secid)+1,
id))
1948
1949 wn4(1)= w(1,ixs(gnode(4,secid)+1,
id))
1950 wn4(2)= w(2,ixs(gnode(4,secid)+1,
id))
1951 wn4(3)= w(3,ixs(gnode(4,secid)+1,
id))
1952
1953 wf1(1) = fourth*(wn1(1)+wn2(1)+wn3(1)+wn4(1))
1954 wf1(2) = fourth*(wn1(2)+wn2(2)+wn3(2)+wn4(2))
1955 wf1(3) = fourth*(wn1(3)+wn2(3)+wn3(3)+wn4(3))
1956
1957 wf2(1) = fourth*(wn1(1)+wa1(1)+wa2(1)+wn2(1))
1958 wf2(2) = fourth*(wn1(2)+wa1(2)+wa2(2)+wn2(2))
1959 wf2(3) = fourth*(wn1(3)+wa1(3)+wa2(3)+wn2(3))
1960
1961 wf3(1) = fourth*(wn2(1)+wa2(1)+wa3(1)+wn3(1))
1962 wf3(2)
1963 wf3(3) = fourth*(wn2(3)+wa2(3)+wa3(3)+wn3(3))
1964
1965 wf4(1) = fourth*(wn1(1)+wn4(1)+wa4(1)+wa1(1))
1966 wf4(2) = fourth*(wn1(2)+wn4(2)+wa4(2)+wa1(2))
1967 wf4(3) = fourth*(wn1
1968
1969 wf5(1) = (wn4(1)+wn3(1)+wa3(1)+wa6(1)+wa5(1)+wa4(1)+wn4(1))/seven
1970 wf5(2) = (wn4(2)+wn3(2)+wa3(2)+wa6
1971 wf5(3) = (wn4(3)+wn3(3)+wa3(3)+wa6(3)+wa5(3)+wa4(3)+wn4(3))/seven
1972
1973 wf0(1) = one_over_6*(wa1(1)+wa2(1)+wa3(1)+wa4(1)+wa5(1)+wa6(1))
1974 wf0(2) = one_over_6*(wa1(2)+wa2(2)+wa3(2)+wa4(2)+wa5(2)+wa6(2))
1975 wf0(3) = one_over_6*(wa1(3)+wa2(3)+wa3(3)+wa4(3)+wa5(3)+wa6(3))
1976
1977 brick_list(nin,ib)%POLY(icell)%FACE0%W(1:3) = wf0(1:3)
1978 brick_list(nin,ib)%POLY(icell)%FACE(fa(1))%W(1:3) = wf1(1:3)
1979 brick_list(nin,ib)%POLY(icell)%FACE(fa(2))%W(1:3) = wf2(1:3)
1980 brick_list(nin,ib)%POLY(icell)%FACE(fa(3))%W(1:3) = wf3(1:3)
1981 brick_list(nin,ib)%POLY(icell)%FACE(fa(4))%W(1:3) = wf4(1:3)
1982 brick_list(nin,ib)%POLY(icell)%FACE(fa(5))%W(1:3) = wf5(1:3)
1983
1984 END IF
1985 ENDIF
1986
1987
1988
1989
1990
1991
1992 END DO
1993
1994
1995 ntag = sum(itag(1:8))
1996 IF(ntag>0)THEN
1997
1998 numpt = 0
1999 DO k=1,8
2000 tmp_sectype(k) =
brick_list(nin,ib)%SECTYPE(k)
2001 tmp_secid_cell(k) =
brick_list(nin,ib)%SecID_CELL(k)
2002
2003
2006 ENDDO
2007
2008 DO k=1,8
2009 IF(itag(k)==1)THEN
2010 DO n=k,7
2011 brick_list(nin,ib)%SECTYPE(n) = tmp_sectype(n+1)
2012 brick_list(nin,ib)%SecID_CELL(n) = tmp_secid_cell(n+1)
2013
2014
2017 ENDDO
2018 numpt=numpt+1
2019
2020 DO n=1,8
2022 IF(inod >= k)THEN
2023 brick_list(nin,ib)%NODE(n)%WhichCell = inod - ntag
2024 ENDIF
2025 ENDDO
2026 ENDIF
2027 ENDDO
2034 brick_list(nin,ib)%SECTYPE(k) =
'______________'
2035 ENDDO
2036 ENDIF
2037
2038 !----------------------------------------------------------------
2039
2040
2041
2042 DO j=1,12
2043 k = (ib-1)*12+j
2044
2045
2046 IF(edgelist(j) /=
edge_list(nin,k)%NBCUT)
THEN
2047 IF(edgelist(j)==1)THEN
2049
2050 IF(edgepos(j,1)==1)THEN
2051
2052 ELSEIF(edgepos(j,2)==1)THEN
2053
2058 ENDIF
2059 ELSEIF(edgelist(j)==0)THEN
2061 ENDIF
2062 ENDIF
2063 ENDDO
2064
2065
2066
2067
2068
2069
2070
2071
2073 icell = 1
2074 pnnodcell(icell)%NumNOD = 8
2075 pnpointcell(icell)%NumPOINT = 8
2076 n1 => x(1:3, ixs(1+1,
brick_list(nin,ib)%ID ))
2077 n2 => x(1:3, ixs(1+2,
brick_list(nin,ib)%ID ))
2078 n3 => x(1:3, ixs(1+3,
brick_list(nin,ib)%ID ))
2079 n4 => x(1:3, ixs(1+4,
brick_list(nin,ib)%ID ))
2080 n5 => x(1:3, ixs(1+5,
brick_list(nin,ib)%ID ))
2081 n6 => x(1:3, ixs(1+6,
brick_list(nin,ib)%ID ))
2082 n7 => x(1:3, ixs(1+7,
brick_list(nin,ib)%ID ))
2083 n8 => x(1:3, ixs(1+8,
brick_list(nin,ib)%ID ))
2084 brick_list(nin,ib)%POLY(icell)%CellCenter(1)= sum( (/n1(1),n2(1),n3(1),n4(1),n5(1),n6(1),n7(1),n8(1)/) ) / eight
2085 brick_list(nin,ib)%POLY(icell)%CellCenter(2)= sum( (/n1(2),n2(2),n3(2),n4(2),n5(2),n6(2),n7(2)
2086 brick_list(nin,ib)%POLY(icell)%CellCenter(3)= sum( (/n1(3),n2(3),n3(3),n4(3),n5(3),n6(3),n7(3),n8(3)/) ) / eight
2087 brick_list(nin,ib)%POLY(icell)%ListNodID(1:8) = (/ 1,2,3,4,5,6,7,8/)
2088 brick_list(nin,ib)%NODE(1:8)%WhichCell = icell
2089 ENDIF
2090
2091 END DO
2092
2093
2094
2095
2096
2097 DO ib=nbf,nbl
2101 cod1 = iabs(
brick_list(nin,ib)%SecID_CELL(1))
2102 cod2 = iabs(
brick_list(nin,ib)%SecID_CELL(2))
2103 IF(cod1==cod2)THEN
2107
2108 IF(vol1>vol2)THEN
2109
2110 valtmp(1:3) =
brick_list(nin,ib)%POLY(1)%CellCenter(1:3)
2111
2112
2129
2130
2131
2148
2149
2167
2168
2169 brick_list(nin,ib)%POLY(3)%FACE(1:6)%Surf = zero
2173 brick_list(nin,ib)%POLY(3)%CellCenter(1) = zero
2174 brick_list(nin,ib)%POLY(3)%CellCenter(2) = zero
2175 brick_list(nin,ib)%POLY(3)%CellCenter(3) = zero
2176 brick_list(nin,ib)%POLY(3)%ListNodID(1:8) = 0
2177 DO k=0,6
2178 brick_list(nin,ib)%POLY(3)%FACE(k)%Vel(1) = zero
2180 brick_list(nin,ib)%POLY(3)%FACE(k)%Vel(3) = zero
2181 ENDDO
2182
2183 DO i=1,8
2184 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 2)
THEN
2185
2186 ELSE
2188 ENDIF
2189 ENDDO
2190
2191
2192
2193 brick_list(nin,ib)%POLY(1)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(1)%CellCenter(1:3) * numpt
2194 DO i=1,8
2196 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 2)
THEN
2200 numpt = numpt - 1
2201 ELSE
2205 numpt = numpt + 1
2206 ENDIF
2207 ENDDO
2208 brick_list(nin,ib)%POLY(1)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(1)%CellCenter(1:3) / numpt
2209
2210
2211
2212
2213 ELSE
2214 valtmp(1:3) =
brick_list(nin,ib)%POLY(2)%CellCenter(1:3)
2220 DO i=1,8
2223 ELSE
2225 ENDIF
2226 ENDDO
2227
2228
2229
2231 brick_list(nin,ib)%POLY(2)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(2)%CellCenter(1:3) * numpt
2232 DO i=1,8
2233 IF(
brick_list(nin,ib)%NODE(i)%WhichCell == 1)
THEN
2234 nn => x(1:3, ixs(1+i,
brick_list(nin,ib)%ID ))
2238 numpt = numpt - 1
2239 ELSE
2240 nn => x(1:3, ixs(1+i,
brick_list(nin,ib)%ID ))
2244 numpt = numpt + 1
2245 ENDIF
2246 ENDDO
2247 brick_list(nin,ib)%POLY(2)%CellCenter(1:3) =
brick_list(nin,ib)%POLY(2)%CellCenter(1:3) / numpt
2248
2249 ENDIF
2250
2251
2252
2253 inodtag(1:8) = 0
2255 inodtag(
brick_list(nin,ib)%POLY(1)%ListNodID(i)
2256 ENDDO
2257 j = 1
2258 DO i=1,8
2259 IF(inodtag(i) == 0)THEN
2261 j = j + 1
2262 ENDIF
2263 ENDDO
2264
2265 brick_list(nin,ib)%POLY(9)%CellCenter(1:3) = valtmp(1:3)
2268
2269 ENDIF
2270 ENDIF
2271 ENDDO
2272
2273
2274
2275
2276
2277 DO ib=nbf,nbl
2279
2280 DO j=1,12
2281 k = (ib-1)*12+j
2292 enddo
2293 enddo
2294
2295
2296
2297
2298
2300
2301 IF (ii<=nel.AND.nspmd<=1.AND.itask==0) THEN
2302#include "lockon.inc"
2303
2304 DO j=1,nel
2305
2306
2307 x(1:3,ixtg(2,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2308 x(1:3,ixtg(3,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2309 x(1:3,ixtg(4,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2310 v(1:3,ixtg(2,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2311 v(1:3,ixtg(3,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2312 v(1:3,ixtg(4,igrsh3n(igr)%ENTITY(j)))=(/zero,zero,zero/)
2313 END DO
2314#include "lockoff.inc"
2315 END IF
2316
2317
2318
2319
2320
2321
2322 if(itask==0)then
2323
2328 write (*,fmt=
'(A,2I12)')
"=== BRICK ID===", ixs(11,
id) ,
id
2329 icell = 1
2330 do while (icell <= ncell .OR. icell == 9 )
2332 write (*,fmt='(A )') "|"
2333 if(icell==9)then
2334 write (*,fmt='(A,I1,A,A ,A1,I2,A1 )') "+== ICELL= ", icell , ", SecType=", 'COMPLEMENT' ,
2335 . "(", 0 , ")"
2336 else
2337 write (*,fmt='(A,I1,A,A14,A1,I2,A1 )') "+== ICELL= ", icell , ", sectype=", BRICK_LIST(NIN,IB)%SECTYPE(ICELL) ,
2338 . "(", BRICK_LIST(NIN,IB)%SecID_Cell(ICELL) , ")"
2339 endif
2340 pFACE(1:6) => BRICK_LIST(NIN,IB)%POLY(ICELL)%FACE(1:6)!%Surf
2341 pFACE0=> BRICK_LIST(NIN,IB)%POLY(ICELL)%FACE0%Surf
2342 write (*,FMT='(A )') "| |"
2343 write (*,FMT='(A,F20.14)') "| +======suvolumes=", BRICK_LIST(NIN,IB)%POLY(ICELL)%Vnew
2344 write (*,FMT='(A,6F20.14)') "| +=======subfaces=", BRICK_LIST(NIN,IB)%POLY(ICELL)%FACE(1:6)%Surf
2345 write (*,FMT='(A,F20.14)') "| +=======cut aera=", BRICK_LIST(NIN,IB)%POLY(ICELL)%FACE0%Surf
2346 write (*,FMT='(A,A,I2)') "| +======num point="," ",BRICK_LIST(NIN,IB)%POLY(ICELL)%NumPOINT
2347 write (*,FMT='(A,A,I1,A,8I12)')"| +======node list="," (",MNOD,") ", BRICK_LIST(NIN,IB)%POLY(ICELL)%ListNodID(1:MNOD)
2348 write (*,FMT='(A,A ,8I12)') "| radids=", " ",
2349 . IXS(1+BRICK_LIST(NIN,IB)%POLY(ICELL)%ListNodID(1:MNOD),ID)
2350 write (*,FMT='(A,A ,8I12)') "| userids="," ",
2351 . ITAB(IXS(1+BRICK_LIST(NIN,IB)%POLY(ICELL)%ListNodID(1:MNOD),ID))
2352! do i=0,6
2353! print *, "sn=", vF(:,I)
2354! print *, " c=", C(1:3, Fa(I))
2355! end do
2356 icell = icell + 1
2357.and. if(icell>ncell icell/=10) icell = 9 ! list is also : {1:ncell} U {9}
2358 enddo!next icell
2359 write (*,FMT='(A )') " "
2360
2361 end do!next I
2362
2363 endif!(IBUG22_subvol==1)
2364 end if
2365 !----------------------------------------------------------------
2366
2367
2368 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
int main(int argc, char *argv[])