32 SUBROUTINE admfor0(IXC ,IPARTC,IXTG ,IPARTTG,IPART ,
33 . A ,STIFN ,AR ,STIFR ,X ,
34 . SH4TREE,SH3TREE,STCONT,FTHE ,CONDN ,
35 . NODADT_THERM,ITHERM_FE)
44#include "implicit_f.inc"
52#include "remesh_c.inc"
58 INTEGER IXC(NIXC,*), IPARTC(*), IXTG(NIXTG,*), IPARTTG(*),
59 . IPART(LIPART1,*), SH4TREE(,*), SH3TREE(KSH3TREE,*)
60 INTEGER ,
INTENT(IN) :: NODADT_THERM
61 INTEGER ,
INTENT(IN) :: ITHERM_FE
62 my_real A(3,*), STIFN(*), AR(3,*), STIFR(*), X(3,*),
63 . stcont(*), fthe(*),condn(*)
67 INTEGER KN, KN1, KN2, KN3, KN4
68 INTEGER N, , LEVEL, IP, NLEV
69 INTEGER SON,M1,M2,M3,M4,MC,N1,N2,N3,N4,J,K
71 . le,lelt,lev,ne,lelt1,lelt2,
73 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LNOD
74 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NELT
75 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LKINNOD
79 my_real,
DIMENSION(:),
ALLOCATABLE :: rnod
80 my_real,
DIMENSION(:),
ALLOCATABLE :: snod
82 CALL my_alloc(lnod,numnod)
83 CALL my_alloc(nelt,2*(4**levelmax))
84 CALL my_alloc(lkinnod,numnod)
85 CALL my_alloc(rnod,numnod)
86 CALL my_alloc(snod,numnod)
89 DO level=levelmax-1,0,-1
110 stifn(n1)=stifn(n1)+ac
111 stifn(n2)=stifn(n2)+ac
112 stifn(n3)=stifn(n3)+ac
113 stifn(n4)=stifn(n4)+ac
117 stcont(n2)=stcont(n2)+ac
130 stifr(n1)=stifr(n1)+ac
131 stifr(n2)=stifr(n2)+ac
132 stifr(n3)=stifr(n3)+ac
133 stifr(n4)=stifr(n4)+ac
135 IF(itherm_fe > 0)
THEN
143 IF(nodadt_therm > 0)
THEN
145 condn(n1)=condn(n1)+ac
146 condn(n2)=condn(n2)+ac
147 condn(n3)=condn(n3)+ac
148 condn(n4)=condn(n4)+ac
156 IF(lkinnod(m1)==0)
THEN
164 stifn(n1)=stifn(n1)+a1
165 stifn(n2)=stifn(n2)+a1
169 stcont(n1)=stcont(n1)+a1
170 stcont(n2)=stcont(n2)+a1
179 stifr(n1)=stifr(n1)+a1
180 stifr(n2)=stifr(n2)+a1
182 IF(itherm_fe > 0)
THEN
188 IF(nodadt_therm > 0)
THEN
190 condn(n1)=condn(n1)+a1
191 condn(n2)=condn(n2)+a1
199 IF(lkinnod(m2)==0)
THEN
207 stifn(n2)=stifn(n2)+a2
208 stifn(n3)=stifn(n3)+a2
212 stcont(n2)=stcont(n2)+a2
213 stcont(n3)=stcont(n3)+a2
222 stifr(n2)=stifr(n2)+a2
223 stifr(n3)=stifr(n3)+a2
225 IF(itherm_fe > 0)
THEN
231 IF(nodadt_therm > 0)
THEN
233 condn(n2)=condn(n2)+a2
234 condn(n3)=condn(n3)+a2
242 IF(lkinnod(m3)==0)
THEN
250 stifn(n3)=stifn(n3)+a3
251 stifn(n4)=stifn(n4)+a3
255 stcont(n3)=stcont(n3)+a3
256 stcont(n4)=stcont(n4)+a3
265 stifr(n3)=stifr(n3)+a3
266 stifr(n4)=stifr(n4)+a3
268 IF(itherm_fe > 0)
THEN
274 IF(nodadt_therm > 0)
THEN
276 condn(n3)=condn(n3)+a3
277 condn(n4)=condn(n4)+a3
285 IF(lkinnod(m4)==0)
THEN
293 stifn(n1)=stifn(n1)+a4
294 stifn(n4)=stifn(n4)+a4
298 stcont(n1)=stcont(n1)+a4
299 stcont(n4)=stcont(n4)+a4
308 stifr(n1)=stifr(n1)+a4
309 stifr(n4)=stifr(n4)+a4
311 IF(itherm_fe > 0)
THEN
317 IF(nodadt_therm > 0)
THEN
319 condn(n1)=condn(n1)+a4
320 condn(n4)=condn(n4)+a4
340 IF(lkinnod(m1)==0)
THEN
348 stifn(n1)=stifn(n1)+a1
349 stifn(n2)=stifn(n2)+a1
353 stcont(n1)=stcont(n1)+a1
354 stcont(n2)=stcont(n2)+a1
363 stifr(n1)=stifr(n1)+a1
364 stifr(n2)=stifr(n2)+a1
366 IF(itherm_fe > 0)
THEN
372 IF(nodadt_therm > 0)
THEN
374 condn(n1)=condn(n1)+a1
375 condn(n2)=condn(n2)+a1
383 IF(lkinnod(m2)==0)
THEN
391 stifn(n2)=stifn(n2)+a2
392 stifn(n3)=stifn(n3)+a2
396 stcont(n2)=stcont(n2)+a2
397 stcont(n3)=stcont(n3)+a2
406 stifr(n2)=stifr(n2)+a2
407 stifr(n3)=stifr(n3)+a2
409 IF(itherm_fe > 0)
THEN
415 IF(nodadt_therm > 0)
THEN
417 condn(n2)=condn(n2)+a2
418 condn(n3)=condn(n3)+a2
426 IF(lkinnod(m3)==0)
THEN
434 stifn(n3)=stifn(n3)+a3
435 stifn(n1)=stifn(n1)+a3
439 stcont(n3)=stcont(n3)+a3
440 stcont(n1)=stcont(n1)+a3
458 IF(nodadt_therm > 0)
THEN
461 condn(n1)=condn(n1)+a3
472 IF(istatcnd==0)
RETURN
476 acnd(1:3,1:numnod)=a(1:3,1:numnod)
477 arcnd(1:3,1:numnod)=ar(1:3,1:numnod)
508 DO WHILE (lev < levelmax)
512 IF(sh4tree(3,ne) >= 0) cycle
534 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
541 rnod(ni)=half*(rnod(m1)+rnod(m2))
542 snod(ni)=half*(snod(m1)+snod(m2))
545 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
550 rnod(ni)=half*(rnod(m2)+rnod(m3))
551 snod(ni)=half*(snod(m2)+snod(m3))
554 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
559 rnod(ni)=half*(rnod(m3)+rnod(m4))
560 snod(ni)=half*(snod(m3)+snod(m4))
563 IF(lkinnod(ni)==0.AND.
tagnodTHEN
568 rnod(ni)=half*(rnod(m4)+rnod(m1))
569 snod(ni)=half*(snod(m4)+snod(m1))
572 IF(lkinnod(ni)==0)
THEN
577 rnod(ni)=fourth*(rnod(m1)+rnod(m2)+rnod(m3)+rnod(m4))
578 snod(ni)=fourth*(snod(m1)+snod(m2)+snod(m3)+snod(m4))
593 phi =fourth*(one-r)*(one-s)
598 stifn(n1)=stifn(n1)+phi*stcont(ni)
603 phi=fourth*(one+r)*(one-s)
608 stifn(n2)=stifn(n2)+phi*stcont(ni)
613 phi=fourth*(one+r)*(one+s)
618 stifn(n3)=stifn(n3)+phi*stcont(ni)
623 phi=fourth*(one-r)*(one+s)
628 stifn(n4)=stifn(n4)+phi*stcont(ni)
666 DO WHILE (lev < levelmax)
670 IF(sh3tree(3,ne) >= 0) cycle
691 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
696 rnod(ni)=half*(rnod(m1)+rnod(m2))
697 snod(ni)=half*(snod(m1)+snod(m2))
700 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
705 rnod(ni)=half*(rnod(m2)+rnod(m3))
706 snod(ni)=half*(snod(m2)+snod(m3))
709 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
714 rnod(ni)=half*(rnod(m3)+rnod(m1))
715 snod(ni)=half*(snod(m3)+snod(m1))
735 stifn(n1)=stifn(n1)+phi*stcont(ni)
745 stifn(n2)=stifn(n2)+phi*stcont(ni)
755 stifn(n3)=stifn(n3)+phi*stcont(ni)
subroutine admfor0(ixc, ipartc, ixtg, iparttg, ipart, a, stifn, ar, stifr, x, sh4tree, sh3tree, stcont, fthe, condn, nodadt_therm, itherm_fe)