35 1 INLOC,NROW ,ITAB ,SH4TREE,SH3TREE)
40 use element_mod ,
only : nixc,nixtg
44#include "implicit_f.inc"
52#include "remesh_c.inc"
56 INTEGER (NIXC,*),IXTG(NIXTG,*),NDOF(*),NNMAX,
57 1 nkine,inloc(*),nrow(*),itab(*),
58 2 sh4tree(ksh4tree,*), sh3tree(ksh3tree,*)
64 INTEGER N, NN, LEVEL, IP, NLEV,I,J,K,L,M1,M2,MK1,MK2
65 INTEGER SON,M(4),MC,NI(5),MN,NS,NZ,NR,NK,NKS,IS
66 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NROWK
67 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ICOK
71 DO level=levelmax-1,0,-1
116 DO level=levelmax-1,0,-1
138 IF(
tagnod(mn)==0.AND.ndof(mn)>0)
THEN
164 IF(
tagnod(mn)==0.AND.ndof(mn)>0)
THEN
193 IF (mn>0.AND.mn<=nks) is = mn
211 IF (mn>0.AND.mn<=nks) is = mn
225 ALLOCATE(nrowk(nk),icok(nnmax+l,nk))
274 CALL reorder_a(nrowk(mk1),icok(1,mk1),nn)
278 CALL reorder_a(nrowk(mk2),icok(1,mk2),nn)
288 IF (inloc(ns)==0)
THEN
292 nrow(ns)=
max(nrow(ns),nrowk(k))
296 nnmax=
max(nnmax,nrowk(mn))
297 IF (inloc(nn)==0)
THEN
301 nrow(nn)=
max(nrow(nn),nrowk(mn))
319 DEALLOCATE(nrowk,icok)
341#include "implicit_f.inc"
346 INTEGER INLOC(*),NROWK(*),ICOK(NNMAX,*)
350 INTEGER N, NN, LEVEL, IP, NLEV,I,J,K,M1,M2,MK1,MK2
351 INTEGER MN,NS,NZ,NR,NK
363 CALL reorder_a(nrowk(mk1),icok(1,mk1),nn)
367 CALL reorder_a(nrowk(mk2),icok(1,mk2),nn)
385 SUBROUTINE rm_imp0(NDDL ,IADK ,JDIK ,DIAG_K ,LT_K ,
386 1 NDOF ,IDDL ,IKC ,B ,ITAB )
394#include "implicit_f.inc"
399 . IADK(*),JDIK(*),NDOF(*),IDDL(*),IKC(*),ITAB(*)
401 . diag_k(*),lt_k(*),b(*)
412 3 itab ,ikc ,ndof ,nddl ,iddl ,
413 4 iadk ,jdik ,diag_k,lt_k ,b )
433 3 ITAB ,IKC ,NDOF ,NDDL ,IDDL ,
434 4 IADK ,JDIK ,DIAG_K,LT_K ,B )
438#include "implicit_f.inc"
443 . NIR,IRECT(*),I,NR,NODS(*),ITAB(*)
444 INTEGER NDDL,IADK(*),JDIK(*),NDOF(*),IDDL(*),IKC(*)
447 . diag_k(*),lt_k(*),b(*)
451 INTEGER J, J1, J2, J3, J4, K, JD, II, L, JJ,
452 . I1,ID,NL,NI,NJ,NIDOF,ND,NDI,NDJ,NDM,NM,L1,NM1,
456 . kdd(6,6),bd(6),kii(6,6),bi(6),facm,facm2
461 ndm =
max(ndm,ndof(nj))
474 CALL get_kii(i ,iddl ,iadk,diag_k,lt_k ,kdd,ndof(i))
478 nd =
min(ndm,ndof(nj))
479 CALL updkdd(nd,kdd,kii,facm2,1)
480 CALL put_kii(nj,iddl ,iadk,diag_k,lt_k ,kii,nd)
483 b(id) = b(id) + facm*bd(k)
487 nd =
min(nd,ndof(nm))
488 CALL updkdd(nd,kdd,kii,facm2,0)
489 CALL put_kij(nj,nm,iddl,iadk,jdik,lt_k,kii,nd,nd,ir)
490 IF (ir==1)
CALL print_wkij(itab(nj) ,itab(nm) ,3 )
498 CALL get_kij(ni,i,iddl,iadk,jdik,lt_k,kdd,nidof,ndof(i),ir)
499 IF (ir==1)
CALL print_wkij(itab(ni) ,itab(i) ,3 )
504 ndj =
min(ndm,ndof(nj))
507 CALL updkdd1(nidof,ndj,kdd,kii,facm,1)
508 CALL put_kii(nj ,iddl ,iadk,diag_k,lt_k,kii,ndj)
510 CALL updkdd1(ndi,ndof(i),kdd,kii,facm,0)
511 CALL put_kij(ni,nj,iddl,iadk,jdik,lt_k,kii,ndi,ndj,ir)
512 IF (ir==1)
CALL print_wkij(itab(ni) ,itab(nj) ,3 )
528 SUBROUTINE rm_imp2(IXC,IXTG,V ,VR ,SH4TREE,SH3TREE)
533 use element_mod ,
only : nixc,nixtg
537#include "implicit_f.inc"
541#include "param_c.inc"
542#include "remesh_c.inc"
546 INTEGER IXC(NIXC,*),IXTG(NIXTG,*),
547 2 SH4TREE(KSH4TREE,*), SH3TREE(KSH3TREE,*)
553 INTEGER N, NN, LEVEL, IP, NLEV, IERR
554 INTEGER SON,M(4),MC,N1,N2,N3,N4,J
558 DO level=0,levelmax-1
572 IF(tagnod(mc)==0)
THEN
575 v(j,mc)= fourth*(v(j,n1)+v(j,n2)+v(j,n3)+v(j,n4))
578 vr(j,mc)= fourth*(vr(j,n1)+vr(j,n2)+vr(j,n3)+vr(j,n4))
588 IF(tagnod(m(1))==0)
THEN
591 v(j,m(1))= half*(v(j,n1)+v(j,n2))
594 vr(j,m(1))= half*(vr(j,n1)+vr(j,n2))
599 IF(tagnod(m(2))==0)
THEN
602 v(j,m(2))= half*(v(j,n2)+v(j,n3))
605 vr(j,m(2))= half*(vr(j,n2)+vr(j,n3))
610 IF(tagnod(m(3))==0)
THEN
613 v(j,m(3))= half*(v(j,n3)+v(j,n4))
616 vr(j,m(3))= half*(vr(j,n3)+vr(j,n4))
621 IF(tagnod(m(4))==0)
THEN
624 v(j,m(4))= half*(v(j,n4)+v(j,n1))
627 vr(j,m(4))= half*(vr(j,n4)+vr(j,n1))
646 IF(tagnod(m(1))==0)
THEN
649 v(j,m(1))= half*(v(j,n1)+v(j,n2))
652 vr(j,m(1))= half*(vr(j,n1)+vr(j,n2))
657 IF(tagnod(m(2))==0)
THEN
660 v(j,m(2))= half*(v(j,n2)+v(j,n3))
663 vr(j,m(2))= half*(vr(j,n2)+vr(j,n3))
668 IF(tagnod(m(3))==0)
THEN
671 v(j,m(3))= half*(v(j,n3)+v(j,n1))
674 vr(j,m(3))= half*(vr(j,n3)+vr(j,n1))
subroutine updkdd(ndl, kdd, kii, h2, isym)
subroutine updkdd1(ndi, ndj, kdd, kii, h, isym)
subroutine print_wkij(ni, nj, iflag)
subroutine put_kii(ni, iddl, iadk, k_diag, k_lt, kii, nd)
subroutine put_kij(ni, nj, iddl, iadk, jdik, k_lt, kij, nk, nl, ierr)
subroutine get_kii(ni, iddl, iadk, k_diag, k_lt, kii, nd)
subroutine get_kij(ni, nj, iddl, iadk, jdik, k_lt, kij, nk, nl, ierr)
subroutine reorder_a(n, ic, id)
integer, dimension(:), allocatable lsh3act
integer, dimension(:), allocatable iad_nj
integer, dimension(:), allocatable lsh4kin
integer, dimension(:,:), allocatable ish_ms
integer, dimension(:), allocatable ish_ns
integer, dimension(:), allocatable jdi_nj
integer, dimension(:), allocatable lsh3kin
integer, dimension(:), allocatable psh4kin
integer, dimension(:), allocatable psh3kin
integer, dimension(:), allocatable tagnod
integer, dimension(:), allocatable lsh4act
subroutine cp_int(n, x, xc)
subroutine rm_imp2(ixc, ixtg, v, vr, sh4tree, sh3tree)
subroutine rmind_imp(nnmax, inloc, nrowk, icok)
subroutine rm_imp1(nir, irect, i, nr, nods, itab, ikc, ndof, nddl, iddl, iadk, jdik, diag_k, lt_k, b)
subroutine rm_imp0(nddl, iadk, jdik, diag_k, lt_k, ndof, iddl, ikc, b, itab)
subroutine rmdim_imp(ixc, ixtg, ndof, nnmax, nkine, inloc, nrow, itab, sh4tree, sh3tree)