35
37 use element_mod , only : nixc
38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "mvsiz_p.inc"
46#include "param_c.inc"
47
48
49
50#include "com04_c.inc"
51#include "com_xfem1.inc"
52
53
54
55 INTEGER NFT,JFT,JLT,NXLAY
56 INTEGER IPARG(NPARG,*),IXC(NIXC,*),ELCUTC(2,*),INOD_CRK(*),
57 . IADC_CRK(4,*),IEL_CRK(*),ENRTAG(NUMNOD,*),XEDGE4N(4,*),ITAB(*)
58 TYPE (XFEM_EDGE_) , DIMENSION(*) :: CRKEDGE
59
60
61
62 INTEGER I,K,IR,IAD,NELCRK,ELCRK,ILEV,ILAY,IXEL,ELCUT,LAYCUT,
63 . ENR0,ENR,IBOUNDEDGE,EDGE,ITRI,NUMXEL,NSX,
64 . ISEND_NSX,ISEND_IAD
65 INTEGER JCT(MVSIZ),NS(4),IADC(4)
66
67 nelcrk = 0
68 DO i=jft,jlt
69 jct(i) = 0
70 IF (elcutc(1,i+nft) /= 0) THEN
71 nelcrk = nelcrk + 1
72 jct(nelcrk) = i
73 ENDIF
74 ENDDO
75 IF (nelcrk == 0) RETURN
76
77 DO ilay=1,nxlay
78 DO ir=1,nelcrk
79 i = jct(ir)
80 elcrk = iel_crk(i+nft)
82 laycut = abs(crkedge(ilay)%LAYCUT(elcrk))
83 IF (elcut /= 0 .and. laycut == 1) THEN
85 ns(1) = ixc(2,i+nft)
86 ns(2) = ixc(3,i+nft)
87 ns(3) = ixc(4,i+nft)
88 ns(4) = ixc(5,i+nft)
89 iadc(1) = iadc_crk(1,elcrk)
90 iadc(2) = iadc_crk(2,elcrk)
91 iadc(3) = iadc_crk(3,elcrk)
92 iadc(4) = iadc_crk(4,elcrk)
93 isend_nsx = 0
94 isend_iad = 0
95
96 IF (itri /= 0) THEN
97 ixel = 3
98 ilev = nxel*(ilay-1) + ixel
99
100 DO k=1,4
101 iad = iadc(k)
104 edge = xedge4n(k,elcrk)
105 iboundedge = crkedge(ilay)%IBORDEDGE(edge)
106 nsx = inod_crk(ns(k))
107 IF (enr > 0 .and. iboundedge /= 2) THEN
111 isend_nsx = nsx
112 isend_iad = iad
113 ENDIF
114 ENDDO
115 ENDIF
116
117 numxel = 2
118 DO ixel=1,numxel
119 ilev = nxel*(ilay-1) + ixel
120 DO k=1,4
121 iad = iadc(k)
123 enr = abs(
crklvset(ilev)%ENR0(1,iad))
124 edge = xedge4n(k,elcrk)
125 iboundedge = crkedge(ilay)%IBORDEDGE(edge)
126 nsx = inod_crk(ns(k))
127 IF (isend_nsx /= nsx .and. isend_iad /= iad) THEN
128 IF (enr > 0 .and. iboundedge /= 2) THEN
132 ENDIF
133 ENDIF
134 ENDDO
135 ENDDO
136
137 ENDIF
138 ENDDO
139 ENDDO
140
141 RETURN
type(xfem_phantom_), dimension(:), allocatable xfem_phantom
type(xfem_lvset_), dimension(:), allocatable crklvset