228 . IPART ,IPARTC,IPARTTG,IXC ,IXTG ,
229 . X ,ITAB ,ITABM1 ,SH4TREE,SH3TREE,
239#include "implicit_f.inc"
243#include "param_c.inc"
244#include "com04_c.inc"
245#include "scr17_c.inc"
246#include "remesh_c.inc"
250 INTEGER (LIPART1,*), IPARTC(*), IPARTTG(*),
251 . IXC(NIXC,*), IXTG(NIXTG,*),ITAB(*),ITABM1(*),
252 . SH4TREE(KSH4TREE,*), SH3TREE(KSH3TREE,*),
253 . ipadmesh(kipadmesh,*)
254 my_real x(3,*), padmesh(kpadmesh,*)
258 INTEGER ID,NP,J10(10),
259 . N,IP,I,J,NLEV,NI,NJ,NK,NL,NN,
261 . level,numelc_lev,numeltg_lev,
262 . numelc_old,numeltg_old,
263 . numelc_old_old,numeltg_old_old,
264 . numelc_new,numeltg_new,numnod_new,
266 INTEGER,
DIMENSION(:),
ALLOCATABLE
268INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAG
272 CHARACTER(LEN=NCHARTITLE) :: TITR
273 CHARACTER(LEN=NCHARKEY) :: KEY
275 DATA mess /
'OPTIONS FOR ADAPTIVE MESHING DEFINITION '/
277 IF(iadmstat /= 0)
RETURN
286 DO 100 level=1,levelmax
287 numelc_old_old=numelc_old
288 numelc_old =numelc_new
289 numeltg_old_old=numeltg_old
290 numeltg_old =numeltg_new
292 numelc_lev =numelc_old-numelc_old_old
293 numeltg_lev=numeltg_old-numeltg_old_old
297 ALLOCATE(knod2sh(0:numnod_new),stat=stat)
298 IF(stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
303 DO n=numelc_old_old+1,numelc_old
306 knod2sh(ni)=knod2sh(ni)+1
310 DO n=numeltg_old_old+1,numeltg_old
313 knod2sh(ni)=knod2sh(ni)+1
318 knod2sh(n)=knod2sh(n)+knod2sh(n-1)
321 ALLOCATE(nod2sh(4*numelc_lev+3*numeltg_lev),stat=stat)
322 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
330 knod2sh(ni)=knod2sh(ni)+1
331 nod2sh(knod2sh(ni))=n
339 knod2sh(ni)=knod2sh(ni)+1
340 nod2sh(knod2sh(ni))=numelc_lev+n
350 ALLOCATE(tag(5,numelc_lev+numeltg_lev),stat=stat)
364 nj=ixc(mod(i,4)+2,nn)
366 numnod_new=numnod_new+1
369 x(j,numnod_new)=half*(x(j,ni)+x(j,nj))
371 DO k=knod2sh(ni-1)+1,knod2sh(ni)
374 DO l=knod2sh(nj-1)+1,knod2sh(nj)
377 IF(q<=numelc_lev)
THEN
381 nl=ixc(mod(j,4)+2,qq)
383 IF((nk==ni.AND.nl==nj).OR.
384 . (nl==ni.AND.nk==nj))
THEN
389 qq=numeltg_old_old+q-numelc_lev
392 nl=ixtg(mod(j,3)+2,qq)
394 IF((nk==ni.AND.nl==nj).OR.
395 . (nl==ni.AND.nk==nj))
THEN
413 numnod_new=numnod_new+1
420 xa=half*(x(j,ni)+x(j,nj))
421 xb=half*(x(j,nk)+x(j,nl))
422 x(j,numnod_new)=half*(xa+xb)
432 IF(tag(i,n+numelc_lev)==0)
THEN
434 nj=ixtg(mod(i,3)+2,nn)
436 numnod_new=numnod_new+1
437 tag(i,n+numelc_lev)=numnod_new
439 x(j,numnod_new)=half*(x(j,ni)+x(j,nj))
441 DO k=knod2sh(ni-1)+1,knod2sh(ni)
444 DO l=knod2sh(nj-1)+1,knod2sh(nj)
447 IF(q<=numelc_lev)
THEN
451 nl=ixc(mod(j,4)+2,qq)
453 IF((nk==ni.AND.nl==nj).OR.
454 . (nl==ni.AND.nk==nj))
THEN
459 qq=numeltg_old_old+q-numelc_lev
462 nl=ixtg(mod(j,3)+2,qq)
464 IF((nk==ni.AND.nl==nj).OR.
465 . (nl==ni.AND.nk==nj))
THEN
478 numelc_new=numelc_old
487 ixc(j,numelc_new+i)=ixc(j,nn)
491 numelc_new=numelc_new+1
492 ixc(2,numelc_new)=ixc(2,nn)
493 ixc(3,numelc_new)=tag(1,n)
494 ixc(4,numelc_new)=tag(5,n)
495 ixc(5,numelc_new)=tag(4,n)
496 ipartc(numelc_new)=ip
498 sh4tree(1,numelc_new)=nn
499 sh4tree(2,nn)=numelc_new
503 sh4tree(3,numelc_new)=-(level+1)
505 numelc_new=numelc_new+1
506 ixc(2,numelc_new)=tag(1,n)
507 ixc(3,numelc_new)=ixc(3,nn)
508 ixc(4,numelc_new)=tag(2,n)
509 ixc(5,numelc_new)=tag(5,n)
510 ipartc(numelc_new)=ip
512 sh4tree(1,numelc_new)=nn
513 sh4tree(3,numelc_new)=-(level+1)
515 numelc_new=numelc_new+1
516 ixc(2,numelc_new)=tag(5,n)
517 ixc(3,numelc_new)=tag(2,n)
518 ixc(4,numelc_new)=ixc(4,nn)
519 ixc(5,numelc_new)=tag(3,n)
520 ipartc(numelc_new)=ip
522 sh4tree(1,numelc_new)=nn
523 sh4tree(3,numelc_new)=-(level+1)
525 numelc_new=numelc_new+1
526 ixc(2,numelc_new)=tag(4,n)
527 ixc(3,numelc_new)=tag(5,n)
528 ixc(4,numelc_new)=tag(3,n)
529 ixc(5,numelc_new)=ixc(5,nn)
530 ipartc(numelc_new)=ip
532 sh4tree(1,numelc_new)=nn
533 sh4tree(3,numelc_new)=-(level+1)
536 numeltg_new=numeltg_old
545 ixtg(j,numeltg_new+i)=ixtg(j,nn)
549 numeltg_new=numeltg_new+1
550 ixtg(2,numeltg_new)= ixtg(2,nn)
551 ixtg(3,numeltg_new)= tag(1,n+numelc_lev)
552 ixtg(4,numeltg_new)= tag(3,n+numelc_lev)
553 iparttg(numeltg_new)=ip
555 sh3tree(1,numeltg_new)=nn
556 sh3tree(2,nn)=numeltg_new
557 sh3tree(3,numeltg_new)=-(level+1)
559 numeltg_new=numeltg_new+1
560 ixtg(2,numeltg_new)= tag(1,n+numelc_lev)
561 ixtg(3,numeltg_new)= ixtg(3,nn)
562 ixtg(4,numeltg_new)= tag(2,n+numelc_lev)
563 iparttg(numeltg_new)=ip
565 sh3tree(1,numeltg_new)=nn
566 sh3tree(3,numeltg_new)=-(level+1)
568 numeltg_new=numeltg_new+1
569 ixtg(2,numeltg_new)= tag(3,n+numelc_lev)
570 ixtg(3,numeltg_new)= tag(2,n+numelc_lev)
571 ixtg(4,numeltg_new)= ixtg(4,nn)
572 iparttg(numeltg_new)=ip
574 sh3tree(1,numeltg_new)=nn
575 sh3tree(3,numeltg_new)=-(level+1)
577 numeltg_new=numeltg_new+1
578 ixtg(2,numeltg_new)= tag(2,n+numelc_lev)
579 ixtg(3,numeltg_new)= tag(3,n+numelc_lev)
580 ixtg(4,numeltg_new)= tag
581 iparttg(numeltg_new)=ip
583 sh3tree(1,numeltg_new)=nn
584 sh3tree(3,numeltg_new)=-(level+1)
709 CALL constit(itab,itabm1,numnod)
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)