234 . IPART ,IPARTC,IPARTTG,IXC ,IXTG ,
235 . X ,ITAB ,ITABM1 ,SH4TREE,SH3TREE,
242 use element_mod ,
only : nixc,nixtg
246#include "implicit_f.inc"
250#include "param_c.inc"
251#include "com04_c.inc"
252#include "scr17_c.inc"
253#include "remesh_c.inc"
257 INTEGER IPART(LIPART1,*), IPARTC(*), IPARTTG(*),
258 . IXC(NIXC,*), IXTG(NIXTG,*),ITAB(*),ITABM1(*),
259 . SH4TREE(KSH4TREE,*), SH3TREE(KSH3TREE,*),
260 . ipadmesh(kipadmesh,*)
261 my_real x(3,*), padmesh(kpadmesh,*)
265 INTEGER ID,NP,J10(10),
266 . N,IP,I,J,NLEV,NI,NJ,NK,NL,NN,
268 . level,numelc_lev,numeltg_lev,
269 . numelc_old,numeltg_old,
270 . numelc_old_old,numeltg_old_old,
271 . numelc_new,numeltg_new,numnod_new,
273 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
275 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAG
279 CHARACTER(LEN=NCHARTITLE) :: TITR
280 CHARACTER(LEN=NCHARKEY) :: KEY
282 DATA mess /
'OPTIONS FOR ADAPTIVE MESHING DEFINITION '/
284 IF(iadmstat /= 0)
RETURN
293 DO 100 level=1,levelmax
294 numelc_old_old=numelc_old
295 numelc_old =numelc_new
296 numeltg_old_old=numeltg_old
297 numeltg_old =numeltg_new
299 numelc_lev =numelc_old-numelc_old_old
300 numeltg_lev=numeltg_old-numeltg_old_old
304 ALLOCATE(knod2sh(0:numnod_new),stat=stat)
305 IF(stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
310 DO n=numelc_old_old+1,numelc_old
313 knod2sh(ni)=knod2sh(ni)+1
317 DO n=numeltg_old_old+1,numeltg_old
320 knod2sh(ni)=knod2sh(ni)+1
325 knod2sh(n)=knod2sh(n)+knod2sh(n-1)
328 ALLOCATE(nod2sh(4*numelc_lev+3*numeltg_lev),stat=stat)
329 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
337 knod2sh(ni)=knod2sh(ni)+1
338 nod2sh(knod2sh(ni))=n
346 knod2sh(ni)=knod2sh(ni)+1
347 nod2sh(knod2sh(ni))=numelc_lev+n
352 knod2sh(n)=knod2sh(n-1)
357 ALLOCATE(tag(5,numelc_lev+numeltg_lev),stat=stat)
358 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
371 nj=ixc(mod(i,4)+2,nn)
373 numnod_new=numnod_new+1
376 x(j,numnod_new)=half*(x(j,ni)+x(j,nj))
378 DO k=knod2sh(ni-1)+1,knod2sh(ni)
381 DO l=knod2sh(nj-1)+1,knod2sh(nj)
384 IF(q<=numelc_lev)
THEN
388 nl=ixc(mod(j,4)+2,qq)
390 IF((nk==ni.AND.nl==nj).OR.
391 . (nl==ni.AND.nk==nj))
THEN
396 qq=numeltg_old_old+q-numelc_lev
399 nl=ixtg(mod(j,3)+2,qq)
401 IF((nk==ni.AND.nl==nj).OR.
402 . (nl==ni.AND.nk==nj))
THEN
420 numnod_new=numnod_new+1
427 xa=half*(x(j,ni)+x(j,nj))
428 xb=half*(x(j,nk)+x(j,nl))
429 x(j,numnod_new)=half*(xa+xb)
439 IF(tag(i,n+numelc_lev)==0)
THEN
441 nj=ixtg(mod(i,3)+2,nn)
443 numnod_new=numnod_new+1
444 tag(i,n+numelc_lev)=numnod_new
446 x(j,numnod_new)=half*(x(j,ni)+x(j,nj))
448 DO k=knod2sh(ni-1)+1,knod2sh(ni)
451 DO l=knod2sh(nj-1)+1,knod2sh(nj)
454 IF(q<=numelc_lev)
THEN
460 IF((nk==ni.AND.nl==nj).OR.
461 . (nl==ni.AND.nk==nj))
THEN
466 qq=numeltg_old_old+q-numelc_lev
469 nl=ixtg(mod(j,3)+2,qq)
471 IF((nk==ni.AND.nl==nj).OR.
472 . (nl==ni.AND.nk==nj))
THEN
485 numelc_new=numelc_old
494 ixc(j,numelc_new+i)=ixc(j,nn)
498 numelc_new=numelc_new+1
499 ixc(2,numelc_new)=ixc(2,nn)
500 ixc(3,numelc_new)=tag(1,n)
501 ixc(4,numelc_new)=tag(5,n)
502 ixc(5,numelc_new)=tag(4,n)
503 ipartc(numelc_new)=ip
505 sh4tree(1,numelc_new)=nn
506 sh4tree(2,nn)=numelc_new
510 sh4tree(3,numelc_new)=-(level+1)
512 numelc_new=numelc_new+1
513 ixc(2,numelc_new)=tag(1,n)
514 ixc(3,numelc_new)=ixc(3,nn)
515 ixc(4,numelc_new)=tag(2,n)
516 ixc(5,numelc_new)=tag(5,n)
517 ipartc(numelc_new)=ip
519 sh4tree(1,numelc_new)=nn
520 sh4tree(3,numelc_new)=-(level+1)
522 numelc_new=numelc_new+1
523 ixc(2,numelc_new)=tag(5,n)
524 ixc(3,numelc_new)=tag(2,n)
525 ixc(4,numelc_new)=ixc(4,nn)
526 ixc(5,numelc_new)=tag(3,n)
527 ipartc(numelc_new)=ip
529 sh4tree(1,numelc_new)=nn
530 sh4tree(3,numelc_new)=-(level+1)
532 numelc_new=numelc_new+1
533 ixc(2,numelc_new)=tag(4,n)
534 ixc(3,numelc_new)=tag(5,n)
535 ixc(4,numelc_new)=tag(3,n)
536 ixc(5,numelc_new)=ixc(5,nn)
537 ipartc(numelc_new)=ip
539 sh4tree(1,numelc_new)=nn
540 sh4tree(3,numelc_new)=-(level+1)
543 numeltg_new=numeltg_old
552 ixtg(j,numeltg_new+i)=ixtg(j,nn)
556 numeltg_new=numeltg_new+1
557 ixtg(2,numeltg_new)= ixtg(2,nn)
558 ixtg(3,numeltg_new)= tag(1,n+numelc_lev)
559 ixtg(4,numeltg_new)= tag(3,n+numelc_lev)
560 iparttg(numeltg_new)=ip
562 sh3tree(1,numeltg_new)=nn
563 sh3tree(2,nn)=numeltg_new
564 sh3tree(3,numeltg_new)=-(level+1)
566 numeltg_new=numeltg_new+1
567 ixtg(2,numeltg_new)= tag(1,n+numelc_lev)
568 ixtg(3,numeltg_new)= ixtg(3,nn)
569 ixtg(4,numeltg_new)= tag(2,n+numelc_lev)
570 iparttg(numeltg_new)=ip
572 sh3tree(1,numeltg_new)=nn
573 sh3tree(3,numeltg_new)=-(level+1)
575 numeltg_new=numeltg_new+1
576 ixtg(2,numeltg_new)= tag(3,n+numelc_lev)
577 ixtg(3,numeltg_new)= tag(2,n+numelc_lev)
578 ixtg(4,numeltg_new)= ixtg(4,nn)
579 iparttg(numeltg_new)=ip
581 sh3tree(1,numeltg_new)=nn
582 sh3tree(3,numeltg_new)=-(level+1)
584 numeltg_new=numeltg_new+1
585 ixtg(2,numeltg_new)= tag(2,n+numelc_lev)
586 ixtg(3,numeltg_new)= tag(3,n+numelc_lev)
587 ixtg(4,numeltg_new)= tag(1,n+numelc_lev)
588 iparttg(numeltg_new)=ip
590 sh3tree(1,numeltg_new)=nn
591 sh3tree(3,numeltg_new)=-(level+1)
716 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)