34
36
37
38
39#include "implicit_f.inc"
40
41
42
43#include "mvsiz_p.inc"
44
45
46
47#include "com04_c.inc"
48#include "com_xfem1.inc"
49#include "param_c.inc"
50
51
52
53 INTEGER NFT,JFT,JLT,NXLAY
54 INTEGER IPARG(NPARG,*),IXTG(NIXTG,*),ELCUTC(2,*),INOD_CRK(*),
55 . IAD_CRKTG(3,*),XEDGE3N(3,*),IEL_CRKTG(*),ENRTAG(NUMNOD,*),ITAB(NUMNOD)
56 TYPE (XFEM_EDGE_) , DIMENSION(*) :: CRKEDGE
57
58
59
60 INTEGER I,K,IR,ELCRK,ELCRKTG,ILEV,ILAY,IXEL,ELCUT,IECUT,NELCRK,NSX,
61 . IED,EDGE,FAC,IBOUNDEDGE,LAYCUT,ENR0,ENR,ITRI,ITIP,IAD,COUNT
62 INTEGER JCT(MVSIZ),IADC(3),NS(3)
63
64 nelcrk = 0
65 DO i=jft,jlt
66 jct(i) = 0
67 IF (elcutc(1,i+nft) /= 0) THEN
68 nelcrk = nelcrk + 1
69 jct(nelcrk) = i
70 ENDIF
71 ENDDO
72 IF (nelcrk == 0) RETURN
73
74 DO ilay=1,nxlay
75 DO ixel=1,nxel
76 ilev = nxel*(ilay-1) + ixel
77 DO ir=1,nelcrk
78 i = jct(ir)
79 elcrktg = iel_crktg(i+nft)
80 elcrk = elcrktg + ecrkxfec
82 IF (elcut /= 0) THEN
83 ns(1) = ixtg(2,i+nft)
84 ns(2) = ixtg(3,i+nft)
85 ns(3) = ixtg(4,i+nft)
86 iadc(1) = iad_crktg(1,elcrktg
87 iadc(2) = iad_crktg(2,elcrktg)
88 iadc(3) = iad_crktg
90 laycut = crkedge(ilay)%LAYCUT(elcrk)
91
92 IF (abs(laycut) == 1) THEN
93
94
95
96 IF (ixel == 3) THEN
97 DO k=1,3
98 iad = iadc(k)
101 edge = xedge3n(k,elcrktg)
102 iboundedge = crkedge(ilay)%IBORDEDGE(edge)
103 nsx = inod_crk(ns(k))
104 IF (enr > 0 .and. iboundedge /= 2) THEN
108 ENDIF
109 ENDDO
110 ELSE
111 DO k=1,3
112 iad = iadc(k)
114 enr = abs(
crklvset(ilev)%ENR0(1,iad))
115 edge = xedge3n(k,elcrktg)
116 iboundedge = crkedge(ilay)%IBORDEDGE(edge)
117 nsx = inod_crk(ns(k))
118 IF (enr > 0 .and. iboundedge /= 2) THEN
122 ENDIF
123 ENDDO
124 ENDIF
125 ENDIF
126
127 ENDIF
128 ENDDO
129 ENDDO
130 ENDDO
131
132 RETURN
type(xfem_phantom_), dimension(:), allocatable xfem_phantom
type(xfem_lvset_), dimension(:), allocatable crklvset