45
46
47
50 USE elbufdef_mod
51 use element_mod , only : nixc,nixtg
52
53
54
55#include "implicit_f.inc"
56#include "comlock.inc"
57
58
59
60#include "com01_c.inc"
61#include "com04_c.inc"
62#include "com08_c.inc"
63#include "param_c.inc"
64#include "remesh_c.inc"
65#include "scr17_c.inc"
66#include "vect01_c.inc"
67
68
69
70 INTEGER IXC(NIXC,*), IPARTC(*), IXTG(NIXTG,*), IPARTTG(*),
71 . IPART(LIPART1,*), IPARG(NPARG,*),
72 . IGEO(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
82
83
84
85 INTEGER N,IP,INILEV,MYLEV,KINILEV,NTMP,IERR,
86 . LEVEL,LE,LELT,NELT(2*(4**LEVELMAX)),LEV,NE,SON,LELT1,LELT2,
87 . CND2MAP(2*(4**LEVELMAX))
88 INTEGER NN,IB,M,N1,,N3,N4,NG1
89 INTEGER ITRIM, KTRIM
90 INTEGER I,NG,MLW,KAD,NEL,ISTRA,ISH3N,IEXPAN,LEVSON
92 . mbig, mcpm, mcpn
93
94 IF(istatcnd/=0.AND.tt==zero)THEN
95 mscnd(1:numnod) =zero
96 incnd(1:numnod) =zero
97
98 DO n=1,numelc
99
100 IF(ipart(10,ipartc(n)) > 0)THEN
101
102 level = sh4tree(3,n)
103 IF(level==0 .OR. level==-1)THEN
104
105 n1 = ixc(2,n)
106 n2 = ixc(3,n)
107 n3 = ixc(4,n)
108 n4 = ixc(5,n)
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)
117
118 lelt =1
119 nelt(1)=n
120
121 lelt1 =0
122 lelt2 =1
123
124 lev=0
125
126 cnd2map=0
127 IF(level < 0) cnd2map(1)=1
128
129 DO WHILE (lev < levelmax)
130 DO le=lelt1+1,lelt2
131
132 ne =nelt(le)
133 DO ib=1,4
134
135 m = sh4tree(2,ne)+ib-1
136
137 lelt=lelt+1
138 nelt(lelt)=m
139
140 IF(cnd2map(le)==1)THEN
141 n1 = ixc(2,m)
142 n2 = ixc(3,m)
143 n3 = ixc(4,m)
144 n4 = ixc(5,m)
145 mbig=msc(n)
146 mscnd(n1)=mscnd(n1)+mbig
147 mscnd(n2)=mscnd(n2)+mbig
148 mscnd(n3)=mscnd(n3)+mbig
149 mscnd(n4)=mscnd(n4)+mbig
150 mbig=inc(n)
151 incnd(n1)=incnd(n1)+mbig
152 incnd(n2)=incnd(n2)+mbig
153 incnd(n3)=incnd(n3)+mbig
154 incnd(n4)=incnd(n4)+mbig
155
156 IF(sh4tree(3,m) < 0) cnd2map(lelt)=1
157 END IF
158
159 END DO
160
161 IF(cnd2map(le)==1)THEN
162 n1 = ixc(2,ne)
163 n2 = ixc(3,ne)
164 n3 = ixc(4,ne)
165 n4 = ixc(5,ne)
166 mbig=msc(n)
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)
171 mbig=inc(n)
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)
176 END IF
177
178 END DO
179
180 lev =lev+1
181 lelt1 =lelt2
182 lelt2 =lelt
183
184 END DO
185
186 DO le=1,lelt
187 msc(nelt(le))=msc(n)
188 inc(nelt(le))=inc(n)
189 END DO
190 END IF
191
192 END IF
193
194 END DO
195
196
197 DO n=1,numeltg
198
199 IF(ipart(10,iparttg(n)) > 0)THEN
200
201 level = sh3tree(3,n)
202 IF(level==0 .OR. level==-1)THEN
203
204 n1 = ixtg(2,n)
205 n2 = ixtg(3,n)
206 n3 = ixtg(4,n)
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)
213
214 lelt =1
215 nelt(1)=n
216
217 lelt1 =0
218 lelt2 =1
219
220 lev=0
221
222 cnd2map=0
223 IF(level < 0) cnd2map(1)=1
224
225 DO WHILE (lev < levelmax)
226 DO le=lelt1+1,lelt2
227
228 ne =nelt(le)
229
230 DO ib=1,4
231
232 m = sh3tree(2,ne)+ib-1
233
234 lelt=lelt+1
235 nelt(lelt)=m
236
237 IF(cnd2map(le)==1)THEN
238
239 n1 = ixtg(2,m)
240 n2 = ixtg(3,m)
241 n3 = ixtg(4,m)
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)
248
249 IF(sh3tree(3,m) < 0) cnd2map(lelt)=1
250 END IF
251
252 END DO
253
254 IF(cnd2map(le)==1)THEN
255 n1 = ixtg(2,ne)
256 n2 = ixtg(3,ne)
257 n3 = ixtg(4,ne)
258 mbig=mstg(n)
259 mscnd(n1)=
max(zero,mscnd(n1)-mbig)
260 mscnd(n2)=
max(zero,mscnd(n2)-mbig)
261 mscnd(n3)=
max(zero,mscnd(n3)-mbig)
262 mbig=intg(n)
263 incnd(n1)=
max(zero,incnd(n1)-mbig)
264 incnd(n2)=
max(zero,incnd(n2)-mbig)
265 incnd(n3)=
max(zero,incnd(n3)-mbig)
266 END IF
267
268 END DO
269
270 lev =lev+1
271 lelt1 =lelt2
272 lelt2 =lelt
273
274 END DO
275
276 DO le=1,lelt
277 mstg(nelt(le))=mstg(n)
278 intg(nelt(le))=intg(n)
279 END DO
280 END IF
281
282 END IF
283
284 END DO
285
286 END IF
287
289 DO n=1,numelc
290 IF(ipart(10,ipartc(n)) > 0 .AND.
291 . sh4tree(3,n) >= 0)THEN
294 END IF
295 END DO
296
297 IF(lsh4trim > 0)THEN
298
299 5 CONTINUE
300
301 ktrim=0
303 DO nn=1,ntmp
305
306 itrim=sh4trim(n)
307 IF(itrim/=0)THEN
308
309 ktrim=1
310
311 mylev=sh4tree(3,n)
312 IF(mylev == levelmax)THEN
313
314
315 IF(itrim/=-1)THEN
316 CALL ancmsg(msgid=154,anmode=aninfo,
317 . i1=ixc(nixc,n),i2=mylev,i3=itrim)
319 END IF
320 ng =sh4tree(4,n)
321 mlw = iparg(1,ng)
322 nel = iparg(2,ng)
323 nft = iparg(3,ng)
324 kad = iparg(4,ng)
325 npt = iparg(6,ng)
326 istra= iparg(44,ng)
327 jhbe = iparg(23,ng)
328 igtyp= iparg(38,ng)
329 iexpan=iparg(49,ng)
330 i =n-nft
331 elbuf_tab(ng)%GBUF%OFF(i) = zero
332
333
335 sh4tree(3,n)=-(sh4tree(3,n)+1)
336
337 ELSE
338
339
340
341 IF(itrim==-1)THEN
342 ng =sh4tree(4,n)
343 nft = iparg(3,ng)
344 i =n-nft
345 elbuf_tab(ng)%GBUF%OFF(i) = zero
346
347 ENDIF
348 DO ib=1,4
349
350 m = sh4tree(2,n)+ib-1
351
352 n1 = ixc(2,m)
353 n2 = ixc(3,m)
354 n3 = ixc(4,m)
355 n4 = ixc(5,m)
356
357
358 sh4tree(3,m)=-sh4tree(3,m)-1
359#include "lockon.inc"
362
363
364 IF(istatcnd==0)THEN
365 ms(n1)=ms(n1)+msc(m)
366 ms(n2)=ms(n2)+msc(m)
367 ms(n3)=ms(n3)+msc(m)
368 ms(n4)=ms(n4)+msc(m)
369 in(n1)=in(n1)+inc(m)
370 in(n2)=in(n2)+inc(m)
371 in(n3)=in(n3)+inc(m)
372 in(n4)=in(n4)+inc(m)
373 ELSE
374 mbig=msc(m)
375 mscnd(n1)=mscnd(n1)+mbig
376 mscnd(n2)=mscnd(n2)+mbig
377 mscnd(n3)=mscnd(n3)+mbig
378 mscnd(n4)=mscnd(n4)+mbig
379 mbig=inc(m)
380 incnd(n1)=incnd(n1)+mbig
381 incnd(n2)=incnd(n2)+mbig
382 incnd(n3)=incnd(n3)+mbig
383 incnd(n4)=incnd(n4)+mbig
384 END IF
385
386 IF(itherm_fe > 0)THEN
387 mcpm=mcpc(m)
388 mcp(n1)=mcp(n1)+mcpm
389 mcp(n2)=mcp(n2)+mcpm
390 mcp(n3)=mcp(n3)+mcpm
391 mcp(n4)=mcp(n4)+mcpm
392 END IF
393
394
395 ng1 =sh4tree(4,m)
396 iparg(8,ng1)=0
397#include "lockoff.inc"
398 END DO
399
400 CALL admmap4(n, ixc, x, iparg, elbuf_tab,
401 . igeo, ipm ,sh4tree)
402
403 n1 = ixc(2,n)
404 n2 = ixc(3,n)
405 n3 = ixc(4,n)
406 n4 = ixc(5,n)
407#include "lockon.inc"
408 IF(istatcnd==0)THEN
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))
413 in(n1)=
max(zero,in(n1)-inc(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))
417 ELSE
418 mbig=msc(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)
423 mbig=inc(n)
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)
428 END IF
429#include "lockoff.inc"
430
431 IF(itherm_fe > 0)THEN
432#include "lockon.inc"
433 mcpn=mcpc(n)
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"
439 END IF
440
441
443 sh4tree(3,n)=-(sh4tree(3,n)+1)
444
445 IF(itrim==-1)THEN
446 DO ib=1,4
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))
453 END IF
454 END DO
455 END IF
456 END IF
457 END IF
458 END DO
459
460 IF(ktrim/=0)THEN
461
462 idel7nok=1
463
464
467 DO nn=1,ntmp
469 IF(n/=0)THEN
472 END IF
473 END DO
474 GOTO 5
475 END IF
476
477
478 lsh4trim=-lsh4trim
479 END IF
480
481
483 10 CONTINUE
484
485 kinilev=0
486
488 DO nn=1,ntmp
490 mylev=sh4tree(3,n)
491 ip=ipartc(n)
492 inilev=ipadmesh(1,ip)
493 IF(mylev<inilev)THEN
494 iadmesh=1
495 kinilev=1
496
497 DO ib=1,4
498
499 m = sh4tree(2,n)+ib-1
500
501 n1 = ixc(2,m)
502 n2 = ixc(3,m)
503 n3 = ixc(4,m)
504 n4 = ixc(5,m)
505
506
507 sh4tree(3,m)=-sh4tree(3,m)-1
508#include "lockon.inc"
511
512
513 IF(istatcnd==0)THEN
514 ms(n1)=ms(n1)+msc(m)
515 ms(n2)=ms(n2)+msc(m)
516 ms(n3)=ms(n3)+msc(m)
517 ms(n4)=ms(n4)+msc(m)
518 in(n1)=in(n1)+inc(m)
519 in(n2)=in(n2)+inc(m)
520 in(n3)=in(n3)+inc(m)
521 in(n4)=in(n4)+inc(m)
522 ELSE
523 mbig=msc(m)
524 mscnd(n1)=mscnd(n1)+mbig
525 mscnd(n2)=mscnd(n2)+mbig
526 mscnd(n3)=mscnd(n3)+mbig
527 mscnd(n4)=mscnd(n4)+mbig
528 mbig=inc(m)
529 incnd(n1)=incnd(n1)+mbig
530 incnd(n2)=incnd(n2)+mbig
531 incnd(n3)=incnd(n3)+mbig
532 incnd(n4)=incnd(n4)+mbig
533 END IF
534
535 IF(itherm_fe > 0)THEN
536 mcpm=mcpc(m)
537 mcp(n1)=mcp(n1)+mcpm
538 mcp(n2)=mcp(n2)+mcpm
539 mcp(n3)=mcp(n3)+mcpm
540 mcp(n4)=mcp(n4)+mcpm
541 END IF
542
543
544
545 ng1 =sh4tree(4,m)
546 iparg(8,ng1)=0
547#include "lockoff.inc"
548 END DO
549
550 CALL admmap4(n, ixc, x, iparg, elbuf_tab,
551 . igeo, ipm ,sh4tree)
552
553 n1 = ixc(2,n)
554 n2 = ixc(3,n)
555 n3 = ixc(4,n)
556 n4 = ixc(5,n)
557#include "lockon.inc"
558 IF(istatcnd==0)THEN
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))
567 ELSE
568 mbig=msc(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)
573 mbig=inc(n)
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)
578 END IF
579#include "lockoff.inc"
580
581 IF(itherm_fe > 0)THEN
582#include "lockon.inc"
583 mcpn=mcpc(n)
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"
589 END IF
590
591
593 sh4tree(3,n)=-(sh4tree(3,n)+1)
594 END IF
595 END DO
596
597 IF(kinilev/=0)THEN
598
599
602 DO nn=1,ntmp
604 IF(n/=0)THEN
607 END IF
608 END DO
609 GOTO 10
610 END IF
611
612
613
614
616 DO n=1,numeltg
617 IF(ipart(10,iparttg(n)) > 0 .AND.
618 . sh3tree(3,n) >= 0)THEN
621 END IF
622 END DO
623
624 IF(lsh3trim > 0)THEN
625
626 15 CONTINUE
627
628 ktrim=0
630 DO nn=1,ntmp
632
633 itrim=sh3trim(n)
634 IF(itrim/=0)THEN
635
636 ktrim=1
637
638 mylev=sh3tree(3,n)
639 IF(mylev == levelmax)THEN
640
641
642 IF(itrim/=-1)THEN
643 CALL ancmsg(msgid=156,anmode=aninfo)
645 END IF
646 ng = sh3tree(4,n)
647 mlw = iparg(1,ng)
648 nel = iparg(2,ng)
649 nft = iparg(3,ng)
650 kad = iparg(4,ng)
651 npt = iparg(6,ng)
652 istra= iparg(44,ng)
653 ish3n= iparg(23,ng)
654 igtyp= iparg(38,ng)
655 iexpan=iparg(49,ng)
656 i =n-nft
657 elbuf_tab(ng)%GBUF%OFF(i) = zero
658
659
661 sh3tree(3,n)=-(sh3tree(3,n)+1)
662
663 ELSE
664
665
666
667 DO ib=1,4
668
669 m = sh3tree(2,n)+ib-1
670
671 n1 = ixtg(2,m)
672 n2 = ixtg(3,m)
673 n3 = ixtg(4,m)
674
675
676 sh3tree(3,m)=-sh3tree(3,m)-1
677#include "lockon.inc"
680
681
682 IF(istatcnd==0)THEN
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)
689 ELSE
690 mbig=mstg(m)
691 mscnd(n1)=mscnd(n1)+mbig
692 mscnd(n2)=mscnd(n2)+mbig
693 mscnd(n3)=mscnd(n3)+mbig
694 mbig=intg(m)
695 incnd(n1)=incnd(n1)+mbig
696 incnd(n2)=incnd(n2)+mbig
697 incnd(n3)=incnd(n3)+mbig
698 END IF
699
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)
704 END IF
705
706
707 ng1 =sh3tree(4,m)
708 iparg(8,ng1)=0
709#include "lockoff.inc"
710 END DO
711
712 CALL admmap3(n, ixtg, x, iparg, elbuf_tab,
713 . igeo, ipm ,sh3tree)
714
715 n1 = ixtg(2,n)
716 n2 = ixtg(3,n)
717 n3 = ixtg(4,n)
718 IF(istatcnd==0)THEN
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))
725 ELSE
726 mbig=mstg(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)
730 mbig=intg(n)
731 incnd(n1)=
max(zero,incnd(n1)-mbig)
732 incnd(n2)=
max(zero,incnd(n2)-mbig)
733 incnd(n3)=
max(zero,incnd(n3)-mbig)
734 END IF
735
736 IF(itherm_fe > 0)THEN
737#include "lockon.inc"
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"
742 END IF
743
744
746 sh3tree(3,n)=-(sh3tree(3,n)+1)
747
748 IF(itrim==-1)THEN
749 DO ib=1,4
750 m = sh3tree(2,n)+ib-1
751 IF(sh3trim(m)/=-1)THEN
752 CALL ancmsg(msgid=156,anmode=aninfo)
754 END IF
755 END DO
756 END IF
757 END IF
758 END IF
759 END DO
760
761 IF(ktrim/=0)THEN
762
763 idel7nok=1
764
765
768 DO nn=1,ntmp
770 IF(n/=0)THEN
773 END IF
774 END DO
775 GOTO 15
776 END IF
777
778
779 lsh3trim=-lsh3trim
780 END IF
781
783 20 CONTINUE
784
785 kinilev=0
786
788 DO nn=1,ntmp
790 mylev=sh3tree(3,n)
791 ip =iparttg(n)
792 inilev=ipadmesh(1,ip)
793 IF(mylev<inilev)THEN
794 iadmesh=1
795 kinilev=1
796
797 DO ib=1,4
798
799 m = sh3tree(2,n)+ib-1
800
801 n1 = ixtg(2,m)
802 n2 = ixtg(3,m)
803 n3 = ixtg(4,m)
804
805
806 sh3tree(3,m)=-sh3tree(3,m)-1
807#include "lockon.inc"
810
811
812 IF(istatcnd==0)THEN
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)
819 ELSE
820 mbig=mstg(m)
821 mscnd(n1)=mscnd(n1)+mbig
822 mscnd(n2)=mscnd(n2)+mbig
823 mscnd(n3)=mscnd(n3)+mbig
824 mbig=intg(m)
825 incnd(n1)=incnd(n1)+mbig
826 incnd(n2)=incnd(n2)+mbig
827 incnd(n3)=incnd(n3)+mbig
828 END IF
829
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)
834 END IF
835
836
837 ng1 =sh3tree(4,m)
838 iparg(8,ng1)=0
839#include "lockoff.inc"
840 END DO
841
842 CALL admmap3(n, ixtg, x, iparg, elbuf_tab,
843 . igeo, ipm , sh3tree)
844
845 n1 = ixtg(2,n)
846 n2 = ixtg(3,n)
847 n3 = ixtg(4,n)
848 IF(istatcnd==0)THEN
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))
855 ELSE
856 mbig=mstg(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)
860 mbig=intg(n)
861 incnd(n1)=
max(zero,incnd(n1)-mbig)
862 incnd(n2)=
max(zero,incnd(n2)-mbig)
863 incnd(n3)=
max(zero,incnd(n3)-mbig)
864 END IF
865
866 IF(itherm_fe > 0)THEN
867#include "lockon.inc"
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"
872 END IF
873
874
876 sh3tree(3,n)=-(sh3tree(3,n)+1)
877 END IF
878 END DO
879
880 IF(kinilev/=0)THEN
881
882
885 DO nn=1,ntmp
887 IF(n/=0)THEN
890 END IF
891 END DO
892 GOTO 20
893 END IF
894
895
896 IF(nadmesh/=0.AND.idel7ng>=1.AND.(lsh4trim>0.OR.lsh3trim>0))THEN
897 tagtrimc(1:numelc) = 0
898 tagtrimtg(1:numeltg) = 0
899 IF(lsh4trim>0)THEN
900 DO n=1,numelc
901
902 IF(ipart(10,ipartc(n)) > 0)THEN
903 level = sh4tree(3,n)
904 itrim=sh4trim(n)
905 IF(level <0.AND.level/=(-levelmax-1).AND.itrim >=0) THEN
906 lelt =1
907 nelt(1)=n
908
909 lelt1 =0
910 lelt2 =1
911
912 lev=0
913 DO WHILE (lev < levelmax)
914 DO le=lelt1+1,lelt2
915
916 ne =nelt(le)
917 DO ib=1,4
918
919 m = sh4tree(2,ne)+ib-1
920
921 lelt=lelt+1
922 nelt(lelt)=m
923
924 levson = sh4tree(3,m)
925 IF(levson >= 0) THEN
926 tagtrimc(n) = 1
927 ENDIF
928 ENDDO
929 ENDDO
930 lev =lev+1
931 lelt1 =lelt2
932 lelt2 =lelt
933 ENDDO
934
935 ELSEIF (level <0.AND.itrim == -1) THEN
936 tagtrimc(n) = 1
937 ng =sh4tree(4,n)
938 nft = iparg(3,ng)
939 i =n-nft
940 elbuf_tab(ng)%GBUF%OFF(i) = zero
941 ENDIF
942 ENDIF
943
944 ENDDO
945 ENDIF
946
947 IF(lsh3trim>0)THEN
948 DO n=1,numeltg
949
950 IF(ipart(10,iparttg(n)) > 0)THEN
951 level = sh3tree(3,n)
952 itrim=sh3trim(n)
953 IF(level <0.AND.itrim >=0) THEN
954 lelt =1
955 nelt(1)=n
956
957 lelt1 =0
958 lelt2 =1
959
960 lev=0
961 DO WHILE (lev < levelmax)
962 DO le=lelt1+1,lelt2
963
964 ne =nelt(le)
965 DO ib=1,4
966
967 m = sh3tree(2,ne)+ib-1
968
969 lelt=lelt+1
970 nelt(lelt)=m
971 IF(sh3tree(3,m) >= 0) THEN
972 tagtrimtg(n) = 1
973 ENDIF
974 ENDDO
975 ENDDO
976 lev =lev+1
977 lelt1 =lelt2
978 lelt2 =lelt
979 ENDDO
980 ELSEIF (level <0.AND.itrim == -1) THEN
981 tagtrimtg(n) = 1
982 ng =sh3tree(4,n)
983 nft = iparg(3,ng)
984 i =n-nft
985 elbuf_tab(ng)%GBUF%OFF(i) = zero
986 ENDIF
987 ENDIF
988 ENDDO
989 ENDIF
990 ENDIF
991
992
993 ALLOCATE(
tagnod(numnod),stat=ierr)
994 IF (ierr /= 0)
CALL arret(2)
995
996 ALLOCATE(nodnorm(3,numnod),stat=ierr)
997 IF (ierr /= 0)
CALL arret(2)
998
999 RETURN
subroutine admmap3(n, ixtg, x, iparg, elbuf_tab, igeo, ipm, sh3tree)
subroutine admmap4(n, ixc, x, iparg, elbuf_tab, igeo, ipm, sh4tree)
integer, dimension(:), allocatable lsh3act
integer, dimension(:), allocatable tagnod
integer, dimension(:), allocatable lsh4act
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)