37 SUBROUTINE admini(IXC ,IPARTC ,IXTG ,IPARTTG ,IPART ,
38 . IGEO,IPM ,IPARG ,X ,MS ,
39 . IN ,ELBUF_TAB,SH4TREE ,IPADMESH ,MSC ,
40 . INC ,SH3TREE,MSTG ,INTG ,PTG ,
41 . SH4TRIM ,SH3TRIM ,MSCND ,INCND ,PM ,
42 . MCP ,MCPC ,MCPTG ,TAGTRIMC,TAGTRIMTG,
53#include "implicit_f.inc"
62#include "remesh_c.inc"
64#include "vect01_c.inc"
68 INTEGER IXC(NIXC,*), IPARTC(*), IXTG(NIXTG,*), IPARTTG(*),
69 . IPART(LIPART1,*), IPARG(NPARG,*),
70 . IGEO(NPROPGI,*), IPM(NPROPMI,*),
71 . SH4TREE(KSH4TREE,*), IPADMESH(KIPADMESH,*),
72 . SH3TREE(KSH3TREE,*), SH4TRIM(*), SH3TRIM(*),
73 . TAGTRIMC(*), TAGTRIMTG(*)
74 INTEGER ,
INTENT(IN) :: ITHERM_FE
76 . X(3,*), MS(*), IN(*), MSC(*), INC(*),
77 . MSTG(*), INTG(*), PTG(3,*), MSCND(*), INCND(*),
78 . PM(NPROPM,*), MCP(*), (*), MCPTG(*)
79 TYPE(ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
83 INTEGER N,IP,INILEV,MYLEV,KINILEV,NTMP,IERR,
84 . LEVEL,LE,LELT,NELT(2*(4**LEVELMAX)),LEV,NE,SON,LELT1,LELT2,
85 . cnd2map(2*(4**levelmax))
86 INTEGER NN,IB,M,N1,N2,N3,N4,NG1
88 INTEGER I,NG,MLW,KAD,NEL,ISTRA,ISH3N,IEXPAN,LEVSON
92 IF(istatcnd/=0.AND.tt==zero)
THEN
98 IF(ipart(10,ipartc(n)) > 0)
THEN
101 IF(level==0 .OR. level==-1)
THEN
107 mscnd(n1)=mscnd(n1)+msc(n)
108 mscnd(n2)=mscnd(n2)+msc(n)
109 mscnd(n3)=mscnd(n3)+msc(n)
110 mscnd(n4)=mscnd(n4)+msc(n)
111 incnd(n1)=incnd(n1)+inc(n)
112 incnd(n2)=incnd(n2)+inc(n)
113 incnd(n3)=incnd(n3)+inc(n)
114 incnd(n4)=incnd(n4)+inc(n)
125 IF(level < 0) cnd2map(1)=1
127 DO WHILE (lev < levelmax)
133 m = sh4tree(2,ne)+ib-1
138 IF(cnd2map(le)==1)
THEN
144 mscnd(n1)=mscnd(n1)+mbig
145 mscnd(n2)=mscnd(n2)+mbig
146 mscnd(n3)=mscnd(n3)+mbig
147 mscnd(n4)=mscnd(n4)+mbig
149 incnd(n1)=incnd(n1)+mbig
150 incnd(n2)=incnd(n2)+mbig
151 incnd(n3)=incnd(n3)+mbig
152 incnd(n4)=incnd(n4)+mbig
154 IF(sh4tree(3,m) < 0) cnd2map(lelt)=1
159 IF(cnd2map(le)==1)
THEN
165 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
166 mscnd(n2)=
max(zero,mscnd(n2)-mbig)
167 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
168 mscnd(n4)=
max(zero,mscnd(n4)-mbig)
170 incnd(n1)=
max(zero,incnd(n1)-mbig)
171 incnd(n2)=
max(zero,incnd(n2)-mbig)
172 incnd(n3)=
max(zero,incnd(n3)-mbig)
173 incnd(n4)=
max(zero,incnd(n4)-mbig)
197 IF(ipart(10,iparttg(n)) > 0)
THEN
200 IF(level==0 .OR. level==-1)
THEN
205 mscnd(n1)=mscnd(n1)+mstg(n)
206 mscnd(n2)=mscnd(n2)+mstg(n)
207 mscnd(n3)=mscnd(n3)+mstg(n)
208 incnd(n1)=incnd(n1)+intg(n)
209 incnd(n2)=incnd(n2)+intg(n)
210 incnd(n3)=incnd(n3)+intg(n)
221 IF(level < 0) cnd2map(1)=1
223 DO WHILE (lev < levelmax)
230 m = sh3tree(2,ne)+ib-1
235 IF(cnd2map(le)==1)
THEN
240 mscnd(n1)=mscnd(n1)+mstg(n)
241 mscnd(n2)=mscnd(n2)+mstg(n)
242 mscnd(n3)=mscnd(n3)+mstg(n)
243 incnd(n1)=incnd(n1)+intg(n)
244 incnd(n2)=incnd(n2)+intg(n)
245 incnd(n3)=incnd(n3)+intg(n)
247 IF(sh3tree(3,m) < 0) cnd2map(lelt)=1
252 IF(cnd2map(le)==1)
THEN
257 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
258 mscnd(n2)=
max(zero,mscnd(n2)-mbig)
259 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
261 incnd(n1)=
max(zero,incnd(n1)-mbig)
262 incnd(n2)=
max(zero,incnd(n2)-mbig)
263 incnd(n3)=
max(zero,incnd(n3)-mbig)
275 mstg(nelt(le))=mstg(n)
276 intg(nelt(le))=intg(n)
288 IF(ipart(10,ipartc(n)) > 0 .AND.
289 . sh4tree(3,n) >= 0)
THEN
310 IF(mylev == levelmax)
THEN
314 CALL ancmsg(msgid=154,anmode=aninfo,
315 . i1=ixc(nixc,n),i2=mylev,i3=itrim)
329 elbuf_tab(ng)%GBUF%OFF(i) = zero
333 sh4tree(3,n)=-(sh4tree(3,n)+1)
343 elbuf_tab(ng)%GBUF%OFF(i) = zero
356 sh4tree(3,m)=-sh4tree(3,m)-1
373 mscnd(n1)=mscnd(n1)+mbig
374 mscnd(n2)=mscnd(n2)+mbig
375 mscnd(n3)=mscnd(n3)+mbig
376 mscnd(n4)=mscnd(n4)+mbig
378 incnd(n1)=incnd(n1)+mbig
379 incnd(n2)=incnd(n2)+mbig
380 incnd(n3)=incnd(n3)+mbig
381 incnd(n4)=incnd(n4)+mbig
384 IF(itherm_fe > 0)
THEN
395#include "lockoff.inc"
398 CALL admmap4(n, ixc, x, iparg, elbuf_tab,
399 . igeo, ipm ,sh4tree)
407 ms(n1)=
max(zero,ms(n1)-msc(n))
408 ms(n2)=
max(zero,ms(n2)-msc(n))
409 ms(n3)=
max(zero,ms(n3)-msc(n))
410 ms(n4)=
max(zero,ms(n4)-msc(n))
411 in(n1)=
max(zero,in(n1)-inc(n))
412 in(n2)=
max(zero,in(n2)-inc(n))
413 in(n3)=
max(zero,in(n3)-inc(n))
414 in(n4)=
max(zero,in(n4)-inc(n))
417 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
418 mscnd(n2)=
max(zero,mscnd(n2)-mbig)
419 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
420 mscnd(n4)=
max(zero,mscnd(n4)-mbig)
422 incnd(n1)=
max(zero,incnd(n1)-mbig)
423 incnd(n2)=
max(zero,incnd(n2)-mbig)
424 incnd(n3)=
max(zero,incnd(n3)-mbig)
425 incnd(n4)=
max(zero,incnd(n4)-mbig)
427#include "lockoff.inc"
429 IF(itherm_fe > 0)
THEN
432 mcp(n1)=
max(zero,mcp(n1)-mcpn)
433 mcp(n2)=
max(zero,mcp(n2)-mcpn)
434 mcp(n3)=
max(zero,mcp(n3)-mcpn)
435 mcp(n4)=
max(zero,mcp(n4)-mcpn)
436#include "lockoff.inc"
441 sh4tree(3,n)=-(sh4tree(3,n)+1)
445 m = sh4tree(2,n)+ib-1
446 IF(sh4trim(m)/=-1)
THEN
447 CALL ancmsg(msgid=155,anmode=aninfo,
448 . i1=ixc(nixc,n),i2=itrim,
449 . i3=ixc(nixc,m),i4=sh4trim(m))
490 inilev=ipadmesh(1,ip)
497 m = sh4tree(2,n)+ib-1
505 sh4tree(3,m)=-sh4tree(3,m)-1
522 mscnd(n1)=mscnd(n1)+mbig
523 mscnd(n2)=mscnd(n2)+mbig
524 mscnd(n3)=mscnd(n3)+mbig
525 mscnd(n4)=mscnd(n4)+mbig
527 incnd(n1)=incnd(n1)+mbig
528 incnd(n2)=incnd(n2)+mbig
529 incnd(n3)=incnd(n3)+mbig
530 incnd(n4)=incnd(n4)+mbig
533 IF(itherm_fe > 0)
THEN
545#include "lockoff.inc"
548 CALL admmap4(n, ixc, x, iparg, elbuf_tab,
549 . igeo, ipm ,sh4tree)
557 ms(n1)=
max(zero,ms(n1)-msc(n))
558 ms(n2)=
max(zero,ms(n2)-msc(n))
559 ms(n3)=
max(zero,ms(n3)-msc(n))
560 ms(n4)=
max(zero,ms(n4)-msc(n))
561 in(n1)=
max(zero,in(n1)-inc(n))
562 in(n2)=
max(zero,in(n2)-inc(n))
563 in(n3)=
max(zero,in(n3)-inc(n))
564 in(n4)=
max(zero,in(n4)-inc(n))
567 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
569 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
570 mscnd(n4)=
max(zero,mscnd(n4)-mbig)
572 incnd(n1)=
max(zero,incnd(n1)-mbig)
573 incnd(n2)=
max(zero,incnd(n2)-mbig)
574 incnd(n3)=
max(zero,incnd(n3)-mbig)
575 incnd(n4)=
max(zero,incnd(n4)-mbig)
577#include "lockoff.inc"
579 IF(itherm_fe > 0)
THEN
582 mcp(n1)=
max(zero,mcp(n1)-mcpn)
583 mcp(n2)=
max(zero,mcp(n2)-mcpn)
584 mcp(n3)=
max(zero,mcp(n3)-mcpn)
585 mcp(n4)=
max(zero,mcp(n4)-mcpn)
586#include "lockoff.inc"
591 sh4tree(3,n)=-(sh4tree(3,n)+1)
615 IF(ipart(10,iparttg(n)) > 0 .AND.
616 . sh3tree(3,n) >= 0)
THEN
637 IF(mylev == levelmax)
THEN
641 CALL ancmsg(msgid=156,anmode=aninfo)
655 elbuf_tab(ng)%GBUF%OFF(i) = zero
659 sh3tree(3,n)=-(sh3tree(3,n)+1)
667 m = sh3tree(2,n)+ib-1
674 sh3tree(3,m)=-sh3tree(3,m)-1
681 ms(n1)=ms(n1)+mstg(m)*ptg(1,m)
682 ms(n2)=ms(n2)+mstg(m)*ptg(2,m)
683 ms(n3)=ms(n3)+mstg(m)*ptg
684 in(n1)=in(n1)+intg(m)*ptg(1,m)
685 in(n2)=in(n2)+intg(m)*ptg(2,m
686 in(n3)=in(n3)+intg(m)*ptg(3,m)
689 mscnd(n1)=mscnd(n1)+mbig
690 mscnd(n2)=mscnd(n2)+mbig
691 mscnd(n3)=mscnd(n3)+mbig
693 incnd(n1)=incnd(n1)+mbig
694 incnd(n2)=incnd(n2)+mbig
695 incnd(n3)=incnd(n3)+mbig
698 IF(itherm_fe > 0)
THEN
699 mcp(n1)=mcp(n1)+mcptg(m)*ptg(1,m)
700 mcp(n2)=mcp(n2)+mcptg(m)*ptg(2,m)
701 mcp(n3)=mcp(n3)+mcptg(m)*ptg(3,m)
707#include "lockoff.inc"
710 CALL admmap3(n, ixtg, x, iparg, elbuf_tab,
711 . igeo, ipm ,sh3tree)
717 ms(n1)=
max(zero,ms(n1)-mstg(n)*ptg(1,n))
718 ms(n2)=
max(zero,ms(n2)-mstg(n)*ptg(2,n))
719 ms(n3)=
max(zero,ms(n3)-mstg(n)*ptg(3,n))
720 in(n1)=
max(zero,in(n1)-intg(n)*ptg(1,n))
721 in(n2)=
max(zero,in(n2)-intg(n)*ptg(2,n))
722 in(n3)=
max(zero,in(n3)-intg(n)*ptg(3,n))
725 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
726 mscnd(n2)=
max(zero,mscnd(n2)-mbig)
727 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
729 incnd(n1)=
max(zero,incnd(n1)-mbig)
730 incnd(n2)=
max(zero,incnd(n2)-mbig)
731 incnd(n3)=
max(zero,incnd(n3)-mbig)
734 IF(itherm_fe > 0)
THEN
736 mcp(n1)=
max(zero,mcp(n1)-mcptg(n)*ptg(1,n))
737 mcp(n2)=
max(zero,mcp(n2)-mcptg(n)*ptg(2,n))
738 mcp(n3)=
max(zero,mcp(n3)-mcptg(n)*ptg(3,n))
739#include "lockoff.inc"
744 sh3tree(3,n)=-(sh3tree(3,n)+1)
748 m = sh3tree(2,n)+ib-1
749 IF(sh3trim(m)/=-1)
THEN
750 CALL ancmsg(msgid=156,anmode=aninfo)
790 inilev=ipadmesh(1,ip)
797 m = sh3tree(2,n)+ib-1
804 sh3tree(3,m)=-sh3tree(3,m)-1
811 ms(n1)=ms(n1)+mstg(m)*ptg(1,m)
812 ms(n2)=ms(n2)+mstg(m)*ptg(2,m)
813 ms(n3)=ms(n3)+mstg(m)*ptg(3,m)
814 in(n1)=in(n1)+intg(m)*ptg(1,m)
815 in(n2)=in(n2)+intg(m)*ptg(2,m)
816 in(n3)=in(n3)+intg(m)*ptg(3,m)
819 mscnd(n1)=mscnd(n1)+mbig
820 mscnd(n2)=mscnd(n2)+mbig
821 mscnd(n3)=mscnd(n3)+mbig
823 incnd(n1)=incnd(n1)+mbig
824 incnd(n2)=incnd(n2)+mbig
825 incnd(n3)=incnd(n3)+mbig
828 IF(itherm_fe > 0)
THEN
829 mcp(n1)=mcp(n1)+mcptg(m)*ptg(1,m)
830 mcp(n2)=mcp(n2)+mcptg(m)*ptg(2,m)
831 mcp(n3)=mcp(n3)+mcptg(m)*ptg(3,m)
837#include "lockoff.inc"
840 CALL admmap3(n, ixtg, x, iparg, elbuf_tab,
841 . igeo, ipm , sh3tree)
847 ms(n1)=
max(zero,ms(n1)-mstg(n)*ptg(1,n))
848 ms(n2)=
max(zero,ms(n2)-mstg(n)*ptg(2,n))
849 ms(n3)=
max(zero,ms(n3)-mstg(n)*ptg(3,n))
850 in(n1)=
max(zero,in(n1)-intg(n)*ptg(1,n))
851 in(n2)=
max(zero,in(n2)-intg(n)*ptg(2,n))
852 in(n3)=
max(zero,in(n3)-intg(n)*ptg(3,n))
855 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
856 mscnd(n2)=
max(zero,mscnd(n2)-mbig)
857 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
859 incnd(n1)=
max(zero,incnd(n1)-mbig)
860 incnd(n2)=
max(zero,incnd(n2)-mbig)
861 incnd(n3)=
max(zero,incnd(n3)-mbig)
864 IF(itherm_fe > 0)
THEN
866 mcp(n1)=
max(zero,mcp(n1)-mcptg(n)*ptg(1,n))
867 mcp(n2)=
max(zero,mcp(n2)-mcptg(n)*ptg(2,n))
868 mcp(n3)=
max(zero,mcp(n3)-mcptg(n)*ptg(3,n))
869#include "lockoff.inc"
874 sh3tree(3,n)=-(sh3tree(3,n)+1)
894 IF(nadmesh/=0.AND.idel7ng>=1.AND.(lsh4trim>0.OR.lsh3trim>0))
THEN
895 tagtrimc(1:numelc) = 0
896 tagtrimtg(1:numeltg) = 0
900 IF(ipart(10,ipartc(n)) > 0)
THEN
903 IF(level <0.AND.level/=(-levelmax-1).AND.itrim >=0)
THEN
911 DO WHILE (lev < levelmax)
917 m = sh4tree(2,ne)+ib-1
922 levson = sh4tree(3,m)
933 ELSEIF (level <0.AND.itrim == -1)
THEN
938 elbuf_tab(ng)%GBUF%OFF(i) = zero
948 IF(ipart(10,iparttg(n)) > 0)
THEN
951 IF(level <0.AND.itrim >=0)
THEN
959 DO WHILE (lev < levelmax)
965 m = sh3tree(2,ne)+ib-1
969 IF(sh3tree(3,m) >= 0)
THEN
978 ELSEIF (level <0.AND.itrim == -1)
THEN
983 elbuf_tab(ng)%GBUF%OFF(i) = zero
991 ALLOCATE(
tagnod(numnod),stat=ierr)
992 IF (ierr /= 0)
CALL arret(2)
994 ALLOCATE(nodnorm(3,numnod),stat=ierr)
995 IF (ierr /= 0)
CALL arret(2)