32 . IXC ,IXTG ,NUMELC_L,NUMELTG_L,NODLOCAL,
33 . NUMNOD_L ,INOD_L ,CEL ,CEP_XFE,PROC,
34 . IEDGECRK_L,IBORDEDGE_L,NUMEDGES_L,INDEX_CRKXFEM,
35 . INOD_CRKXFEM,LCNECRKXFEM_L,EDGEGLOBAL,CEP,CRKLVSET,
36 . NCRKPART, INDX_CRK, CRKSHELL,CRKSKY ,CRKAVX ,
37 . CRKEDGE ,XFEM_PHANTOM,NUMNODCRK_L)
40 use element_mod ,
only : nixc,nixtg
44#include "implicit_f.inc"
49#include "com_xfem1.inc"
53 INTEGER IXC(NIXC,*),NUMELC_L, NODLOCAL(*),INDX_CRK(*),
54 . NUMNOD_L,CEL(*),CEP_XFE(*),PROC,NCRKPART,
55 . INOD_L(*),IXTG(NIXTG,*),NUMELTG_L,NUMNODCRK_L,
56 . IEDGECRK_L(*),IBORDEDGE_L(*),NUMEDGES_L,
57 . INDEX_CRKXFEM(*),INOD_CRKXFEM(*),LCNECRKXFEM_L,
58 . EDGEGLOBAL(*),CEP(*)
59 TYPE (XFEM_SHELL_) ,
DIMENSION(NLEVMAX) :: CRKSHELL
60 TYPE (XFEM_LVSET_) ,
DIMENSION(NLEVMAX) :: CRKLVSET
61 TYPE (XFEM_SKY_) ,
DIMENSION(NLEVMAX) :: CRKSKY
62 TYPE (XFEM_AVX_) ,
DIMENSION(NLEVMAX) :: CRKAVX
63 TYPE (XFEM_EDGE_) ,
DIMENSION(NXLAYMAX) :: CRKEDGE
64 TYPE (XFEM_PHANTOM_),
DIMENSION(NXLAYMAX) :: XFEM_PHANTOM
68 INTEGER I,J,K,ELEM,ND,NDSZ_L,ELSZ_L,ELPL,NCOUNT,EMPL,ILAY,
69 . eltyp,ix(4),offc,offtg,off,idim,next,elszc_l,elsztg_l,
70 . sh4n,sh3n,sh4n_l,sh3n_l,crkshellid_l,
71 . nelxfe_l,ied,ied_gl,nlay,len,lenlay,ncountall,elem_gl,elem_l,
72 . nenr,xfenumnods,iel_l
76 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NODTAG,ELEMTAG,CRKSIZN_L
77 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ELEMXFEMID,
79 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: IFI,ENRICH0,IEDGEX
80 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: KNOD2ELC,EDGEIFI,EDGEENR
81 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: XFECRKNODID,ELTYPE,NOD2IAD
82 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: ICUTEDGE,EDGEICRK,LAYCUT
83 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: EDGETIP
84 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: NOD_XFENODES
85 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: SH_XFENODES
86 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: ELEMLOC_C,ELEMLOC_TG
87 my_real,
DIMENSION(:) ,
ALLOCATABLE :: ratioedge,avx,avxx,fsky,
area
90 ALLOCATE( nodtag(numnod_l),elemtag(numelc_l+numeltg_l) )
91 ALLOCATE( crksizn_l(nlevmax) )
93 offc = numels + numelq
94 offtg = offc + numelc + numelt + numelp + numelr
103 ALLOCATE(elemloc_c(numelc))
104 ALLOCATE(elemloc_tg(numeltg))
110 IF(cep(i+offc) == proc)
THEN
117 IF(cep(i+offtg) == proc)
THEN
125 ALLOCATE (elcut(numelc_l+numeltg_l))
135 DO i=1,crkshell(k)%CRKNUMSHELL
136 eltyp = crkshell(k)%ELTYPE(i)
137 elem = crkshell(k)%PHANTOML(i)
138 IF (cep_xfe(i) == proc)
THEN
139 nelxfe_l = nelxfe_l + 1
141 crksizn_l(k)=crksizn_l(k)+eltyp
146 nodtag(nodlocal(nd))=nd
148 ELSEIF (eltyp == 3)
THEN
152 nodtag(nodlocal(nd))=nd
160 elsz_l = elszc_l + elsztg_l
164 IF (nodtag(i) > 0) ndsz_l=ndsz_l+1
169 ALLOCATE(elemxfemid(elsz_l))
170 ALLOCATE(eltype(elsz_l))
171 ALLOCATE(
area(elsz_l))
177 ALLOCATE(knod2elc(4,elsz_l),xfecrknodid(4*elsz_l),
178 . sh_xfenodes(4,elsz_l),enrich0(lcnecrkxfem_l),
179 . nod_xfenodes(4*elsz_l))
181 ALLOCATE(laycut(elsz_l))
182 ALLOCATE(iedgex(idim))
198 IF (elemtag(i) > 0)
THEN
201 eltyp = crkshell(k)%ELTYPE(nd)
202 elem_gl = crkshell(k)%PHANTOML(nd)
204 elem_l = elemloc_c(elem_gl)
206 ELSEIF (eltyp == 3)
THEN
207 elem_l = elemloc_tg(elem_gl)
211 elemxfemid(elpl) = crkshell(k)%PHANTOMG(nd)
212 ilay = (k-1)/nxel + 1
213 elcut(elpl) = xfem_phantom(ilay)%ELCUT(nd)
217 laycut(elpl) = crkedge(k)%LAYCUT(nd)
223 iedgex(next+j) = crklvset(k)%EDGE(j,nd)
225 iedgex(next+j) = crklvset(k)%EDGETG(j,nd-ecrkxfec)
232 knod2elc(j,elpl) = crkshell(k)%XNODEG(j,nd)
235 xfecrknodid(ncount) = crkshell(k)%XNODEG(j,nd)
236 ncountall = ncountall + 1
237 nod_xfenodes(ncount) = ncountall
238 sh_xfenodes(j,elpl) = ncountall
243 xfenumnods = 4*elsz_l
244 ALLOCATE(avx(3*lcnecrkxfem_l))
245 ALLOCATE(avxx(3*xfenumnods))
246 ALLOCATE(fsky(8*lcnecrkxfem_l))
247 ALLOCATE(nod2iad(xfenumnods))
261 CALL write_i_c(nod_xfenodes , xfenumnods)
283 DEALLOCATE(elemxfemid)
288 DEALLOCATE(xfecrknodid)
289 DEALLOCATE(nod_xfenodes)
290 DEALLOCATE(sh_xfenodes)
291 DEALLOCATE(avx,avxx,fsky)
295 DEALLOCATE(elemloc_c)
296 DEALLOCATE(elemloc_tg)
300 nlay = int(nlevmax/nxel)
301 nenr = int(ienrnod/nlevmax)
304 ALLOCATE(ifi(lcnecrkxfem_l) )
305 ALLOCATE(tagxp(numnodcrk_l*ienrnod*5))
306 ALLOCATE(itri(elsz_l*2))
314 CALL write_i_c(tagxp ,numnodcrk_l*ienrnod*5)
326 ALLOCATE(edgeicrk(numedges_l))
327 ALLOCATE(edgeifi(2,numedges_l))
328 ALLOCATE(edgeenr(2,numedges_l))
329 ALLOCATE(edgetip(2,numedges_l))
330 ALLOCATE(icutedge(numedges_l))
331 ALLOCATE(ratioedge(numedges_l))
338 k = (ilay-1)*nxel + 1
340 ied_gl = edgeglobal(ied)
341 edgeicrk(ied) = crkedge(ilay)%EDGEICRK(ied_gl)
342 edgeifi(1,ied) = crkedge(ilay)%EDGEIFI(1,ied_gl)
343 edgeifi(2,ied) = crkedge(ilay)%EDGEIFI(2,ied_gl)
344 edgeenr(1,ied) = crkedge(ilay)%EDGEENR(1,ied_gl)
345 edgeenr(2,ied) = crkedge(ilay)%EDGEENR(2,ied_gl)
346 edgetip(1,ied) = crkedge(ilay)%EDGETIP(1,ied_gl)
347 edgetip(2,ied) = crkedge(ilay)%EDGETIP(2,ied_gl)
348 icutedge(ied) = crklvset(k)%ICUTEDGE(ied_gl)
349 ratioedge(ied) = crklvset(k)%RATIOEDGE(ied_gl)
359 CALL write_db (ratioedge ,numedges_l)
362 DEALLOCATE(ratioedge)
369 IF (
ALLOCATED(laycut))
DEALLOCATE(laycut)
373 len = 4*elszc_l + 3*elsztg_l
380 DEALLOCATE(crksizn_l)
subroutine w_anim_crk(ixc, ixtg, numelc_l, numeltg_l, nodlocal, numnod_l, inod_l, cel, cep_xfe, proc, iedgecrk_l, ibordedge_l, numedges_l, index_crkxfem, inod_crkxfem, lcnecrkxfem_l, edgeglobal, cep, crklvset, ncrkpart, indx_crk, crkshell, crksky, crkavx, crkedge, xfem_phantom, numnodcrk_l)