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)
43#include "implicit_f.inc"
48#include "com_xfem1.inc"
52 INTEGER IXC(NIXC,*),NUMELC_L, NODLOCAL(*),INDX_CRK(*),
53 . NUMNOD_L,CEL(*),CEP_XFE(*),PROC,NCRKPART,
54 . INOD_L(*),IXTG(NIXTG,*),NUMELTG_L,NUMNODCRK_L,
55 . IEDGECRK_L(*),IBORDEDGE_L(*),NUMEDGES_L,
56 . INDEX_CRKXFEM(*),INOD_CRKXFEM(*),LCNECRKXFEM_L,
57 . EDGEGLOBAL(*),CEP(*)
58 TYPE (XFEM_SHELL_) ,
DIMENSION(NLEVMAX) :: CRKSHELL
59 TYPE (XFEM_LVSET_) ,
DIMENSION(NLEVMAX) :: CRKLVSET
60 TYPE (XFEM_SKY_) ,
DIMENSION(NLEVMAX) :: CRKSKY
61 TYPE (XFEM_AVX_) ,
DIMENSION(NLEVMAX) :: CRKAVX
62 TYPE (XFEM_EDGE_) ,
DIMENSION(NXLAYMAX) :: CRKEDGE
63 TYPE (XFEM_PHANTOM_),
DIMENSION(NXLAYMAX) :: XFEM_PHANTOM
67 INTEGER I,,K,ELEM,ND,NDSZ_L,ELSZ_L,ELPL,NCOUNT,EMPL,ILAY,
68 . eltyp,ix(4),offc,offtg,off,idim,next,elszc_l,elsztg_l,
69 . sh4n,sh3n,sh4n_l,sh3n_l,crkshellid_l,
70 . nelxfe_l,ied,ied_gl,nlay,len,lenlay,ncountall,elem_gl,elem_l,
71 . nenr,xfenumnods,iel_l
75 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NODTAG,ELEMTAG,CRKSIZN_L
76 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ELEMXFEMID,
78 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: IFI,ENRICH0,IEDGEX
79 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: KNOD2ELC,EDGEIFI,EDGEENR
80 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: XFECRKNODID,ELTYPE,NOD2IAD
81 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: ICUTEDGE,EDGEICRK,LAYCUT
82 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: EDGETIP
83 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: NOD_XFENODES
84 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: SH_XFENODES
85 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: ELEMLOC_C,ELEMLOC_TG
86 my_real,
DIMENSION(:) ,
ALLOCATABLE :: ratioedge,avx,avxx,fsky,
area
89 ALLOCATE( nodtag(numnod_l),elemtag(numelc_l+numeltg_l) )
90 ALLOCATE( crksizn_l(nlevmax) )
92 offc = numels + numelq
93 offtg = offc + numelc + numelt + numelp + numelr
102 ALLOCATE(elemloc_c(numelc))
103 ALLOCATE(elemloc_tg(numeltg))
109 IF(cep(i+offc) == proc)
THEN
116 IF(cep(i+offtg) == proc)
THEN
124 ALLOCATE (elcut(numelc_l+numeltg_l))
134 DO i=1,crkshell(k)%CRKNUMSHELL
135 eltyp = crkshell(k)%ELTYPE(i)
136 elem = crkshell(k)%PHANTOML(i)
137 IF (cep_xfe(i) == proc)
THEN
138 nelxfe_l = nelxfe_l + 1
140 crksizn_l(k)=crksizn_l(k)+eltyp
145 nodtag(nodlocal(nd))=nd
147 ELSEIF (eltyp == 3)
THEN
151 nodtag(nodlocal(nd))=nd
159 elsz_l = elszc_l + elsztg_l
163 IF (nodtag(i) > 0) ndsz_l=ndsz_l+1
168 ALLOCATE(elemxfemid(elsz_l))
169 ALLOCATE(eltype(elsz_l))
170 ALLOCATE(
area(elsz_l))
176 ALLOCATE(knod2elc(4,elsz_l),xfecrknodid(4*elsz_l),
177 . sh_xfenodes(4,elsz_l),enrich0(lcnecrkxfem_l),
178 . nod_xfenodes(4*elsz_l))
180 ALLOCATE(laycut(elsz_l))
181 ALLOCATE(iedgex(idim))
197 IF (elemtag(i) > 0)
THEN
200 eltyp = crkshell(k)%ELTYPE(nd)
201 elem_gl = crkshell(k)%PHANTOML(nd)
203 elem_l = elemloc_c(elem_gl)
205 ELSEIF (eltyp == 3)
THEN
206 elem_l = elemloc_tg(elem_gl)
210 elemxfemid(elpl) = crkshell(k)%PHANTOMG(nd)
211 ilay = (k-1)/nxel + 1
212 elcut(elpl) = xfem_phantom(ilay)%ELCUT(nd)
216 laycut(elpl) = crkedge(k)%LAYCUT(nd)
222 iedgex(next+j) = crklvset(k)%EDGE(j,nd)
224 iedgex(next+j) = crklvset(k)%EDGETG(j,nd-ecrkxfec)
231 knod2elc(j,elpl) = crkshell(k)%XNODEG(j,nd)
234 xfecrknodid(ncount) = crkshell(k)%XNODEG(j,nd)
235 ncountall = ncountall + 1
236 nod_xfenodes(ncount) = ncountall
237 sh_xfenodes(j,elpl) = ncountall
242 xfenumnods = 4*elsz_l
243 ALLOCATE(avx(3*lcnecrkxfem_l))
244 ALLOCATE(avxx(3*xfenumnods))
245 ALLOCATE(fsky(8*lcnecrkxfem_l))
246 ALLOCATE(nod2iad(xfenumnods))
260 CALL write_i_c(nod_xfenodes , xfenumnods)
282 DEALLOCATE(elemxfemid)
287 DEALLOCATE(xfecrknodid)
288 DEALLOCATE(nod_xfenodes)
289 DEALLOCATE(sh_xfenodes)
290 DEALLOCATE(avx,avxx,fsky)
294 DEALLOCATE(elemloc_c)
295 DEALLOCATE(elemloc_tg)
299 nlay = int(nlevmax/nxel)
300 nenr = int(ienrnod/nlevmax)
303 ALLOCATE(ifi(lcnecrkxfem_l) )
304 ALLOCATE(tagxp(numnodcrk_l*ienrnod*5))
305 ALLOCATE(itri(elsz_l*2))
313 CALL write_i_c(tagxp ,numnodcrk_l*ienrnod*5
325 ALLOCATE(edgeicrk(numedges_l))
326 ALLOCATE(edgeifi(2,numedges_l))
327 ALLOCATE(edgeenr(2,numedges_l))
328 ALLOCATE(edgetip(2,numedges_l))
329 ALLOCATE(icutedge(numedges_l))
330 ALLOCATE(ratioedge(numedges_l))
337 k = (ilay-1)*nxel + 1
339 ied_gl = edgeglobal(ied)
340 edgeicrk(ied) = crkedge(ilay)%EDGEICRK(ied_gl)
341 edgeifi(1,ied) = crkedge(ilay)%EDGEIFI(1,ied_gl)
342 edgeifi(2,ied) = crkedge(ilay)%EDGEIFI(2,ied_gl)
343 edgeenr(1,ied) = crkedge(ilay)%EDGEENR(1,ied_gl)
344 edgeenr(2,ied) = crkedge(ilay)%EDGEENR(2,ied_gl)
345 edgetip(1,ied) = crkedge(ilay)%EDGETIP(1,ied_gl)
346 edgetip(2,ied) = crkedge(ilay)%EDGETIP(2,ied_gl)
347 icutedge(ied) = crklvset(k)%ICUTEDGE(ied_gl)
348 ratioedge(ied) = crklvset(k)%RATIOEDGE(ied_gl
358 CALL write_db (ratioedge ,numedges_l)
361 DEALLOCATE(ratioedge)
368 IF (
ALLOCATED(laycut))
DEALLOCATE(laycut)
372 len = 4*elszc_l + 3*elsztg_l
379 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)