33 SUBROUTINE admfor0(IXC ,IPARTC,IXTG ,IPARTTG,IPART ,
34 . A ,STIFN ,AR ,STIFR ,X ,
35 . SH4TREE,SH3TREE,STCONT,FTHE ,CONDN ,
36 . NODADT_THERM,ITHERM_FE)
42 use element_mod ,
only : nixc,nixtg
46#include "implicit_f.inc"
54#include "remesh_c.inc"
60 INTEGER (NIXC,*), IPARTC(*), IXTG(NIXTG,*), IPARTTG(*),
61 . IPART(LIPART1,*), SH4TREE(KSH4TREE,*), SH3TREE(KSH3TREE,*)
62 INTEGER ,
INTENT(IN) :: NODADT_THERM
63 INTEGER ,
INTENT(IN) :: ITHERM_FE
64 my_real A(3,*), STIFN(*), AR(3,*), STIFR(*), X(3,*),
65 . stcont(*), fthe(*),condn(*)
69 INTEGER KN, KN1, KN2, KN3, KN4
70 INTEGER N, NN, LEVEL, IP, NLEV
71 INTEGER SON,M1,M2,M3,M4,MC,N1,N2,N3,N4,J,K
73 . le,lelt,lev,ne,lelt1,lelt2,
75 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LNOD
76 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NELT
77 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LKINNOD
81 my_real,
DIMENSION(:),
ALLOCATABLE :: rnod
82 my_real,
DIMENSION(:),
ALLOCATABLE :: snod
84 CALL my_alloc(lnod,numnod)
85 CALL my_alloc(nelt,2*(4**levelmax))
86 CALL my_alloc(lkinnod,numnod)
87 CALL my_alloc(rnod,numnod)
88 CALL my_alloc(snod,numnod)
91 DO level=levelmax-1,0,-1
112 stifn(n1)=stifn(n1)+ac
113 stifn(n2)=stifn(n2)+ac
114 stifn(n3)=stifn(n3)+ac
115 stifn(n4)=stifn(n4)+ac
118 stcont(n1)=stcont(n1)+ac
119 stcont(n2)=stcont(n2)+ac
120 stcont(n3)=stcont(n3)+ac
121 stcont(n4)=stcont(n4)+ac
132 stifr(n1)=stifr(n1)+ac
133 stifr(n2)=stifr(n2)+ac
134 stifr(n3)=stifr(n3)+ac
135 stifr(n4)=stifr(n4)+ac
137 IF(itherm_fe > 0)
THEN
145 IF(nodadt_therm > 0)
THEN
147 condn(n1)=condn(n1)+ac
148 condn(n2)=condn(n2)+ac
149 condn(n3)=condn(n3)+ac
150 condn(n4)=condn(n4)+ac
158 IF(lkinnod(m1)==0)
THEN
166 stifn(n1)=stifn(n1)+a1
167 stifn(n2)=stifn(n2)+a1
171 stcont(n1)=stcont(n1)+a1
172 stcont(n2)=stcont(n2)+a1
181 stifr(n1)=stifr(n1)+a1
182 stifr(n2)=stifr(n2)+a1
184 IF(itherm_fe > 0)
THEN
190 IF(nodadt_therm > 0)
THEN
192 condn(n1)=condn(n1)+a1
193 condn(n2)=condn(n2)+a1
201 IF(lkinnod(m2)==0)
THEN
209 stifn(n2)=stifn(n2)+a2
210 stifn(n3)=stifn(n3)+a2
214 stcont(n2)=stcont(n2)+a2
215 stcont(n3)=stcont(n3)+a2
224 stifr(n2)=stifr(n2)+a2
225 stifr(n3)=stifr(n3)+a2
227 IF(itherm_fe > 0)
THEN
233 IF(nodadt_therm > 0)
THEN
235 condn(n2)=condn(n2)+a2
236 condn(n3)=condn(n3)+a2
244 IF(lkinnod(m3)==0)
THEN
252 stifn(n3)=stifn(n3)+a3
253 stifn(n4)=stifn(n4)+a3
257 stcont(n3)=stcont(n3)+a3
258 stcont(n4)=stcont(n4)+a3
267 stifr(n3)=stifr(n3)+a3
268 stifr(n4)=stifr(n4)+a3
270 IF(itherm_fe > 0)
THEN
276 IF(nodadt_therm > 0)
THEN
278 condn(n3)=condn(n3)+a3
279 condn(n4)=condn(n4)+a3
287 IF(lkinnod(m4)==0)
THEN
295 stifn(n1)=stifn(n1)+a4
296 stifn(n4)=stifn(n4)+a4
300 stcont(n1)=stcont(n1)+a4
301 stcont(n4)=stcont(n4)+a4
310 stifr(n1)=stifr(n1)+a4
311 stifr(n4)=stifr(n4)+a4
313 IF(itherm_fe > 0)
THEN
319 IF(nodadt_therm > 0)
THEN
321 condn(n1)=condn(n1)+a4
322 condn(n4)=condn(n4)+a4
342 IF(lkinnod(m1)==0)
THEN
350 stifn(n1)=stifn(n1)+a1
351 stifn(n2)=stifn(n2)+a1
355 stcont(n1)=stcont(n1)+a1
356 stcont(n2)=stcont(n2)+a1
365 stifr(n1)=stifr(n1)+a1
366 stifr(n2)=stifr(n2)+a1
368 IF(itherm_fe > 0)
THEN
374 IF(nodadt_therm > 0)
THEN
376 condn(n1)=condn(n1)+a1
377 condn(n2)=condn(n2)+a1
385 IF(lkinnod(m2)==0)
THEN
393 stifn(n2)=stifn(n2)+a2
394 stifn(n3)=stifn(n3)+a2
398 stcont(n2)=stcont(n2)+a2
399 stcont(n3)=stcont(n3)+a2
408 stifr(n2)=stifr(n2)+a2
409 stifr(n3)=stifr(n3)+a2
411 IF(itherm_fe > 0)
THEN
417 IF(nodadt_therm > 0)
THEN
419 condn(n2)=condn(n2)+a2
420 condn(n3)=condn(n3)+a2
428 IF(lkinnod(m3)==0)
THEN
436 stifn(n3)=stifn(n3)+a3
437 stifn(n1)=stifn(n1)+a3
441 stcont(n3)=stcont(n3)+a3
442 stcont(n1)=stcont(n1)+a3
451 stifr(n3)=stifr(n3)+a3
452 stifr(n1)=stifr(n1)+a3
454 IF(itherm_fe > 0)
THEN
460 IF(nodadt_therm > 0)
THEN
462 condn(n3)=condn(n3)+a3
463 condn(n1)=condn(n1)+a3
474 IF(istatcnd==0)
RETURN
478 acnd(1:3,1:numnod)=a (1:3,1:numnod)
479 arcnd(1:3,1:numnod)=ar(1:3,1:numnod)
510 DO WHILE (lev < levelmax)
514 IF(sh4tree(3,ne) >= 0) cycle
536 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
543 rnod(ni)=half*(rnod(m1)+rnod(m2))
544 snod(ni)=half*(snod(m1)+snod(m2))
547 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
552 rnod(ni)=half*(rnod(m2)+rnod(m3))
553 snod(ni)=half*(snod(m2)+snod(m3))
556 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
561 rnod(ni)=half*(rnod(m3)+rnod(m4))
562 snod(ni)=half*(snod(m3)+snod(m4))
565 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
570 rnod(ni)=half*(rnod(m4)+rnod(m1))
571 snod(ni)=half*(snod(m4)+snod(m1))
574 IF(lkinnod(ni)==0)
THEN
579 rnod(ni)=fourth*(rnod(m1)+rnod(m2)+rnod(m3)+rnod(m4))
580 snod(ni)=fourth*(snod(m1)+snod(m2)+snod(m3)+snod(m4))
595 phi =fourth*(one-r)*(one-s)
600 stifn(n1)=stifn(n1)+phi*stcont(ni)
605 phi=fourth*(one+r)*(one-s)
610 stifn(n2)=stifn(n2)+phi*stcont(ni)
615 phi=fourth*(one+r)*(one+s)
620 stifn(n3)=stifn(n3)+phi*stcont(ni)
625 phi=fourth*(one-r)*(one+s)
630 stifn(n4)=stifn(n4)+phi*stcont(ni)
668 DO WHILE (lev < levelmax)
672 IF(sh3tree(3,ne) >= 0) cycle
693 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
698 rnod(ni)=half*(rnod(m1)+rnod(m2))
699 snod(ni)=half*(snod(m1)+snod(m2))
702 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
707 rnod(ni)=half*(rnod(m2)+rnod(m3))
708 snod(ni)=half*(snod(m2)+snod(m3))
711 IF(lkinnod(ni)==0.AND.
tagnod(ni)==0)
THEN
716 rnod(ni)=half*(rnod(m3)+rnod(m1))
717 snod(ni)=half*(snod(m3)+snod(m1))
737 stifn(n1)=stifn(n1)+phi*stcont(ni)
747 stifn(n2)=stifn(n2)+phi*stcont(ni)
757 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)