38 SUBROUTINE admini(IXC ,IPARTC ,IXTG ,IPARTTG ,IPART ,
39 . IGEO,IPM ,IPARG ,X ,MS ,
40 . IN ,ELBUF_TAB,SH4TREE ,IPADMESH ,MSC ,
41 . INC ,SH3TREE,MSTG ,INTG ,PTG ,
42 . SH4TRIM ,SH3TRIM ,MSCND ,INCND ,PM ,
43 . MCP ,MCPC ,MCPTG ,TAGTRIMC,TAGTRIMTG,
51 use element_mod ,
only : nixc,nixtg
55#include "implicit_f.inc"
64#include "remesh_c.inc"
66#include "vect01_c.inc"
70 INTEGER IXC(NIXC,*), IPARTC(*), (NIXTG,*), IPARTTG(*),
71 . IPART(LIPART1,*), IPARG(NPARG,*),
72 . (NPROPGI,*), IPM(NPROPMI,*),
73 . SH4TREE(KSH4TREE,*), IPADMESH(KIPADMESH,*),
74 . SH3TREE(KSH3TREE,*), SH4TRIM(*), SH3TRIM(*),
75 . TAGTRIMC(*), TAGTRIMTG(*)
76 INTEGER ,
INTENT(IN) :: ITHERM_FE
78 . X(3,*), MS(*), IN(*), MSC(*), INC(*),
79 . MSTG(*), INTG(*), PTG(3,*), MSCND(*), INCND(*),
80 . PM(NPROPM,*), MCP(*), MCPC(*), MCPTG(*)
81 TYPE(ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
85 INTEGER N,IP,INILEV,MYLEV,KINILEV,NTMP,IERR,
86 . LEVEL,LE,LELT,NELT(2*(4**LEVELMAX)),LEV,NE,SON,LELT1,,
87 . cnd2map(2*(4**levelmax))
88 INTEGER NN,IB,M,N1,N2,N3,N4,NG1
90 INTEGER I,NG,MLW,KAD,NEL,ISTRA,ISH3N,IEXPAN,LEVSON
94 IF(istatcnd/=0.AND.tt==zero)
THEN
100 IF(ipart(10,ipartc(n)) > 0)
THEN
103 IF(level==0 .OR. level==-1)
THEN
109 mscnd(n1)=mscnd(n1)+msc(n)
110 mscnd(n2)=mscnd(n2)+msc(n)
111 mscnd(n3)=mscnd(n3)+msc(n)
112 mscnd(n4)=mscnd(n4)+msc(n)
113 incnd(n1)=incnd(n1)+inc(n)
114 incnd(n2)=incnd(n2)+inc(n)
115 incnd(n3)=incnd(n3)+inc(n)
116 incnd(n4)=incnd(n4)+inc(n)
127 IF(level < 0) cnd2map(1)=1
129 DO WHILE (lev < levelmax)
135 m = sh4tree(2,ne)+ib-1
140 IF(cnd2map(le)==1)
THEN
146 mscnd(n1)=mscnd(n1)+mbig
147 mscnd(n2)=mscnd(n2)+mbig
148 mscnd(n3)=mscnd(n3)+mbig
149 mscnd(n4)=mscnd(n4)+mbig
151 incnd(n1)=incnd(n1)+mbig
152 incnd(n2)=incnd(n2)+mbig
153 incnd(n3)=incnd(n3)+mbig
154 incnd(n4)=incnd(n4)+mbig
156 IF(sh4tree(3,m) < 0) cnd2map(lelt)=1
161 IF(cnd2map(le)==1)
THEN
167 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
168 mscnd(n2)=
max(zero,mscnd(n2)-mbig)
169 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
170 mscnd(n4)=
max(zero,mscnd(n4)-mbig)
172 incnd(n1)=
max(zero,incnd(n1)-mbig)
173 incnd(n2)=
max(zero,incnd(n2)-mbig)
174 incnd(n3)=
max(zero,incnd(n3)-mbig)
175 incnd(n4)=
max(zero,incnd(n4)-mbig)
199 IF(ipart(10,iparttg(n)) > 0)
THEN
202 IF(level==0 .OR. level==-1)
THEN
207 mscnd(n1)=mscnd(n1)+mstg(n)
208 mscnd(n2)=mscnd(n2)+mstg(n)
209 mscnd(n3)=mscnd(n3)+mstg(n)
210 incnd(n1)=incnd(n1)+intg(n)
211 incnd(n2)=incnd(n2)+intg(n)
212 incnd(n3)=incnd(n3)+intg(n)
223 IF(level < 0) cnd2map(1)=1
225 DO WHILE (lev < levelmax)
232 m = sh3tree(2,ne)+ib-1
237 IF(cnd2map(le)==1)
THEN
242 mscnd(n1)=mscnd(n1)+mstg(n)
243 mscnd(n2)=mscnd(n2)+mstg(n)
244 mscnd(n3)=mscnd(n3)+mstg(n)
245 incnd(n1)=incnd(n1)+intg(n)
246 incnd(n2)=incnd(n2)+intg(n)
247 incnd(n3)=incnd(n3)+intg(n)
249 IF(sh3tree(3,m) < 0) cnd2map(lelt)=1
254 IF(cnd2map(le)==1)
THEN
259 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
260 mscnd(n2)=
max(zero,mscnd(n2)-mbig)
261 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
263 incnd(n1)=
max(zero,incnd(n1)-mbig)
264 incnd(n2)=
max(zero,incnd(n2)-mbig)
265 incnd(n3)=
max(zero,incnd(n3)-mbig)
277 mstg(nelt(le))=mstg(n)
278 intg(nelt(le))=intg(n)
291 . sh4tree(3,n) >= 0)
THEN
312 IF(mylev == levelmax)
THEN
316 CALL ancmsg(msgid=154,anmode=aninfo,
317 . i1=ixc(nixc,n),i2=mylev,i3=itrim)
331 elbuf_tab(ng)%GBUF%OFF(i) = zero
335 sh4tree(3,n)=-(sh4tree(3,n)+1)
345 elbuf_tab(ng)%GBUF%OFF(i) = zero
350 m = sh4tree(2,n)+ib-1
358 sh4tree(3,m)=-sh4tree(3,m)-1
375 mscnd(n1)=mscnd(n1)+mbig
376 mscnd(n2)=mscnd(n2)+mbig
377 mscnd(n3)=mscnd(n3)+mbig
378 mscnd(n4)=mscnd(n4)+mbig
380 incnd(n1)=incnd(n1)+mbig
381 incnd(n2)=incnd(n2)+mbig
382 incnd(n3)=incnd(n3)+mbig
383 incnd(n4)=incnd(n4)+mbig
386 IF(itherm_fe > 0)
THEN
397#include "lockoff.inc"
400 CALL admmap4(n, ixc, x, iparg, elbuf_tab,
401 . igeo, ipm ,sh4tree)
409 ms(n1)=
max(zero,ms(n1)-msc(n))
410 ms(n2)=
max(zero,ms(n2)-msc(n))
411 ms(n3)=
max(zero,ms(n3)-msc(n))
412 ms(n4)=
max(zero,ms(n4)-msc(n))
414 in(n2)=
max(zero,in(n2)-inc(n))
415 in(n3)=
max(zero,in(n3)-inc(n))
416 in(n4)=
max(zero,in(n4)-inc(n))
419 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
420 mscnd(n2)=
max(zero,mscnd(n2)-mbig)
421 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
422 mscnd(n4)=
max(zero,mscnd(n4)-mbig)
424 incnd(n1)=
max(zero,incnd(n1)-mbig)
425 incnd(n2)=
max(zero,incnd(n2)-mbig)
426 incnd(n3)=
max(zero,incnd(n3)-mbig)
427 incnd(n4)=
max(zero,incnd(n4)-mbig)
429#include "lockoff.inc"
431 IF(itherm_fe > 0)
THEN
434 mcp(n1)=
max(zero,mcp(n1)-mcpn)
435 mcp(n2)=
max(zero,mcp(n2)-mcpn)
436 mcp(n3)=
max(zero,mcp(n3)-mcpn)
437 mcp(n4)=
max(zero,mcp(n4)-mcpn
438#include "lockoff.inc"
443 sh4tree(3,n)=-(sh4tree(3,n)+1)
447 m = sh4tree(2,n)+ib-1
448 IF(sh4trim(m)/=-1)
THEN
449 CALL ancmsg(msgid=155,anmode=aninfo,
450 . i1=ixc(nixc,n),i2=itrim,
451 . i3=ixc(nixc,m),i4=sh4trim(m))
492 inilev=ipadmesh(1,ip)
499 m = sh4tree(2,n)+ib-1
507 sh4tree(3,m)=-sh4tree(3,m)-1
524 mscnd(n1)=mscnd(n1)+mbig
525 mscnd(n2)=mscnd(n2)+mbig
526 mscnd(n3)=mscnd(n3)+mbig
527 mscnd(n4)=mscnd(n4)+mbig
529 incnd(n1)=incnd(n1)+mbig
530 incnd(n2)=incnd(n2)+mbig
531 incnd(n3)=incnd(n3)+mbig
532 incnd(n4)=incnd(n4)+mbig
535 IF(itherm_fe > 0)
THEN
547#include "lockoff.inc"
550 CALL admmap4(n, ixc, x, iparg, elbuf_tab,
551 . igeo, ipm ,sh4tree)
559 ms(n1)=
max(zero,ms(n1)-msc(n))
560 ms(n2)=
max(zero,ms(n2)-msc(n))
561 ms(n3)=
max(zero,ms(n3)-msc(n))
562 ms(n4)=
max(zero,ms(n4)-msc(n))
563 in(n1)=
max(zero,in(n1)-inc(n))
564 in(n2)=
max(zero,in(n2)-inc(n))
565 in(n3)=
max(zero,in(n3)-inc(n))
566 in(n4)=
max(zero,in(n4)-inc(n))
569 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
570 mscnd(n2)=
max(zero,mscnd(n2)-mbig)
571 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
572 mscnd(n4)=
max(zero,mscnd(n4)-mbig)
574 incnd(n1)=
max(zero,incnd(n1)-mbig)
575 incnd(n2)=
max(zero,incnd(n2)-mbig)
576 incnd(n3)=
max(zero,incnd(n3)-mbig)
577 incnd(n4)=
max(zero,incnd(n4)-mbig)
579#include "lockoff.inc"
581 IF(itherm_fe > 0)
THEN
584 mcp(n1)=
max(zero,mcp(n1)-mcpn)
585 mcp(n2)=
max(zero,mcp(n2)-mcpn)
586 mcp(n3)=
max(zero,mcp(n3)-mcpn)
587 mcp(n4)=
max(zero,mcp(n4)-mcpn)
588#include "lockoff.inc"
593 sh4tree(3,n)=-(sh4tree(3,n)+1)
617 IF(ipart(10,iparttg(n)) > 0 .AND.
618 . sh3tree(3,n) >= 0)
THEN
639 IF(mylev == levelmax)
THEN
643 CALL ancmsg(msgid=156,anmode=aninfo)
657 elbuf_tab(ng)%GBUF%OFF(i) = zero
661 sh3tree(3,n)=-(sh3tree(3,n)+1)
669 m = sh3tree(2,n)+ib-1
676 sh3tree(3,m)=-sh3tree(3,m)-1
683 ms(n1)=ms(n1)+mstg(m)*ptg(1,m)
684 ms(n2)=ms(n2)+mstg(m)*ptg(2,m)
685 ms(n3)=ms(n3)+mstg(m)*ptg(3,m)
686 in(n1)=in(n1)+intg(m)*ptg(1,m)
687 in(n2)=in(n2)+intg(m)*ptg(2,m)
688 in(n3)=in(n3)+intg(m)*ptg(3,m)
691 mscnd(n1)=mscnd(n1)+mbig
692 mscnd(n2)=mscnd(n2)+mbig
693 mscnd(n3)=mscnd(n3)+mbig
695 incnd(n1)=incnd(n1)+mbig
696 incnd(n2)=incnd(n2)+mbig
697 incnd(n3)=incnd(n3)+mbig
700 IF(itherm_fe > 0)
THEN
701 mcp(n1)=mcp(n1)+mcptg(m)*ptg(1,m)
702 mcp(n2)=mcp(n2)+mcptg(m)*ptg(2,m)
703 mcp(n3)=mcp(n3)+mcptg(m)*ptg(3,m)
709#include "lockoff.inc"
712 CALL admmap3(n, ixtg, x, iparg, elbuf_tab,
713 . igeo, ipm ,sh3tree)
719 ms(n1)=
max(zero,ms(n1)-mstg(n)*ptg(1,n))
720 ms(n2)=
max(zero,ms(n2)-mstg(n)*ptg(2,n))
721 ms(n3)=
max(zero,ms(n3)-mstg(n)*ptg(3,n))
722 in(n1)=
max(zero,in(n1)-intg(n)*ptg(1,n))
723 in(n2)=
max(zero,in(n2)-intg(n)*ptg(2,n))
724 in(n3)=
max(zero,in(n3)-intg(n)*ptg(3,n))
727 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
728 mscnd(n2)=
max(zero,mscnd(n2)-mbig)
729 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
731 incnd(n1)=
max(zero,incnd(n1)-mbig)
732 incnd(n2)=
max(zero,incnd(n2)-mbig)
733 incnd(n3)=
max(zero,incnd(n3)-mbig)
736 IF(itherm_fe > 0)
THEN
738 mcp(n1)=
max(zero,mcp(n1)-mcptg(n)*ptg(1,n))
739 mcp(n2)=
max(zero,mcp(n2)-mcptg(n)*ptg(2,n))
740 mcp(n3)=
max(zero,mcp(n3)-mcptg(n)*ptg(3,n))
741#include "lockoff.inc"
746 sh3tree(3,n)=-(sh3tree(3,n)+1)
750 m = sh3tree(2,n)+ib-1
751 IF(sh3trim(m)/=-1)
THEN
752 CALL ancmsg(msgid=156,anmode=aninfo)
792 inilev=ipadmesh(1,ip)
799 m = sh3tree(2,n)+ib-1
806 sh3tree(3,m)=-sh3tree(3,m)-1
813 ms(n1)=ms(n1)+mstg(m)*ptg(1,m)
814 ms(n2)=ms(n2)+mstg(m)*ptg(2,m)
815 ms(n3)=ms(n3)+mstg(m)*ptg(3,m)
816 in(n1)=in(n1)+intg(m)*ptg(1,m)
817 in(n2)=in(n2)+intg(m)*ptg(2,m)
818 in(n3)=in(n3)+intg(m)*ptg(3,m)
821 mscnd(n1)=mscnd(n1)+mbig
822 mscnd(n2)=mscnd(n2)+mbig
823 mscnd(n3)=mscnd(n3)+mbig
825 incnd(n1)=incnd(n1)+mbig
826 incnd(n2)=incnd(n2)+mbig
827 incnd(n3)=incnd(n3)+mbig
830 IF(itherm_fe > 0)
THEN
831 mcp(n1)=mcp(n1)+mcptg(m)*ptg(1,m)
832 mcp(n2)=mcp(n2)+mcptg(m)*ptg(2,m)
833 mcp(n3)=mcp(n3)+mcptg(m)*ptg(3,m)
839#include "lockoff.inc"
842 CALL admmap3(n, ixtg, x, iparg, elbuf_tab,
843 . igeo, ipm , sh3tree)
849 ms(n1)=
max(zero,ms(n1)-mstg(n)*ptg(1,n))
850 ms(n2)=
max(zero,ms(n2)-mstg(n)*ptg(2,n))
851 ms(n3)=
max(zero,ms(n3)-mstg(n)*ptg(3,n))
852 in(n1)=
max(zero,in(n1)-intg(n)*ptg(1,n))
853 in(n2)=
max(zero,in(n2)-intg(n)*ptg(2,n))
854 in(n3)=
max(zero,in(n3)-intg(n)*ptg(3,n))
857 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
858 mscnd(n2)=
max(zero,mscnd(n2)-mbig)
859 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
861 incnd(n1)=
max(zero,incnd(n1)-mbig)
862 incnd(n2)=
max(zero,incnd(n2)-mbig)
863 incnd(n3)=
max(zero,incnd(n3)-mbig)
866 IF(itherm_fe > 0)
THEN
868 mcp(n1)=
max(zero,mcp(n1)-mcptg(n)*ptg(1,n))
869 mcp(n2)=
max(zero,mcp(n2)-mcptg(n)*ptg(2,n))
870 mcp(n3)=
max(zero,mcp(n3)-mcptg(n)*ptg(3,n))
871#include "lockoff.inc"
876 sh3tree(3,n)=-(sh3tree(3,n)+1)
896 IF(nadmesh/=0.AND.idel7ng>=1.AND.(lsh4trim>0.OR.lsh3trim>0))
THEN
897 tagtrimc(1:numelc) = 0
898 tagtrimtg(1:numeltg) = 0
902 IF(ipart(10,ipartc(n)) > 0)
THEN
905 IF(level <0.AND.level/=(-levelmax-1).AND.itrim >=0)
THEN
913 DO WHILE (lev < levelmax)
919 m = sh4tree(2,ne)+ib-1
924 levson = sh4tree(3,m)
935 ELSEIF (level <0.AND.itrim == -1)
THEN
940 elbuf_tab(ng)%GBUF%OFF(i) = zero
950 IF(ipart(10,iparttg(n)) > 0)
THEN
953 IF(level <0.AND.itrim >=0)
THEN
961 DO WHILE (lev < levelmax)
967 m = sh3tree(2,ne)+ib-1
971 IF(sh3tree(3,m) >= 0)
THEN
980 ELSEIF (level <0.AND.itrim == -1)
THEN
985 elbuf_tab(ng)%GBUF%OFF(i) = zero
993 ALLOCATE(
tagnod(numnod),stat=ierr)
994 IF (ierr /= 0)
CALL arret(2)
996 ALLOCATE(nodnorm(3,numnod),stat=ierr)
997 IF (ierr /= 0)
CALL arret(2)