45
46
47
49 USE elbufdef_mod
50 use element_mod , only : nixc,nixtg
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "com01_c.inc"
59#include "com04_c.inc"
60#include "com_xfem1.inc"
61#include "param_c.inc"
62#include "task_c.inc"
63#include "vect01_c.inc"
64
65
66
67 INTEGER IPARG(NPARG,*),IXC(NIXC,*),NGROUC,IGROUC(*),
68 . IEL_CRK(*),ELCUTC(2,*),IXTG(NIXTG,*),IADC_CRK(*),
69 . IAD_ELEM(2,*),IAD_EDGE(*),FR_EDGE(*),FR_NBEDGE(*),
70 . NLAY,FR_ELEM(*),INOD_CRK(*),XEDGE4N(4,*),XEDGE3N(3,*)
71
72 TYPE(ELBUF_STRUCT_), DIMENSION(NGROUP,NXEL) :: XFEM_TAB
73 TYPE (XFEM_EDGE_) , DIMENSION(*) :: CRKEDGE
74
75
76
77 INTEGER IG,NG,JFT,JLT,NEL,IXFEM,NXLAY,OFF,
78 . ITG1,ITG2,FLAG,SIZE,LSDRC,ACTIFXFEM
79
80
81
82 IF (nspmd > 1) THEN
83 flag = 1
84 SIZE = nlay
85 lsdrc = fr_nbedge(nspmd+1)
87 . flag ,crkedge)
88 ENDIF
89
90
91
92
93 itg1 = 1+numelc
94 itg2 = 1+4*ecrkxfec
95
96
97
98
99
100 DO ig = 1, ngrouc
101 ng = igrouc(ig)
102 off = iparg(8,ng)
103 ixfem = iparg(54,ng)
104 IF (ixfem > 0 .and. off < 1) THEN
106
107 nel = iparg(2,ng)
108 nft = iparg(3,ng)
109 ity = iparg(5,ng)
110 nxlay = iparg(59,ng)
111 lft = 1
113 jft=lft
114 jlt=llt
115
116 IF (ity == 3) THEN
118 . ng ,elcutc,iel_crk,ity ,crkedge)
119
120 ELSE IF (ity == 7) THEN
122 . ng ,elcutc(1,itg1),iel_crk(itg1),ity,crkedge)
123 ENDIF
124
126 ENDIF
127 ENDDO
128
129
130
131
132
133
134 DO ig = 1, ngrouc
135 ng = igrouc(ig)
136 off = iparg(8,ng)
137 ixfem = iparg(54,ng)
138 actifxfem = iparg(70,ng)
139 IF (ixfem > 0 .and. off < 1 .and. actifxfem > 0) THEN
141
142 nel = iparg(2,ng)
143 nft = iparg(3,ng)
144 ity = iparg(5,ng)
145 npt = iparg(6,ng)
146 nxlay = iparg(59,ng)
147 lft = 1
149 jft=lft
150 jlt=llt
151
152 IF (ity == 3) THEN
153 CALL upoffc(xfem_tab ,ng ,
154 . nft ,jft ,jlt ,ixfem ,iel_crk ,
155 . elcutc ,inod_crk,iadc_crk ,ixc ,nxlay ,
156 . crkedge ,xedge4n )
157
158 ELSE IF (ity == 7) THEN
160 . nft ,jft ,jlt ,ixfem ,iel_crk(itg1),
161 . elcutc(1,itg1),inod_crk,iadc_crk(itg2),ixtg ,nxlay ,
162 . crkedge ,xedge3n )
163 ENDIF
164
166 ENDIF
167 ENDDO
168
169
170 IF (nspmd > 1) THEN
171 flag = 0
172 SIZE = nlay
173 lsdrc = fr_nbedge(nspmd+1)
175 . flag ,crkedge)
176
177 flag = 3
178 SIZE = 6*nlay
179 lsdrc = fr_nbedge(nspmd+1)
181 . flag ,crkedge)
182
184 ENDIF
185
186 RETURN
subroutine activ_xfem(iparg, nft, lft, llt, nxlay, ng, iel_crk, ity, crkedge)
subroutine spmd_max_xfe_i(int)
subroutine spmd_exch_iedge(iad_edge, fr_edge, size, lsdrc, fr_nbedge, flag, crkedge)
subroutine upoffc(xfem_tab, ng, nft, jft, jlt, ixfem, iel_crk, elcutc, inod_crk, iadc_crk, ixc, nxlay, crkedge, xedge4n)
subroutine upofftg(xfem_tab, ng, nft, jft, jlt, ixfem, iel_crk, elcutc, inod_crk, iadtg_crk, ixtg, nxlay, crkedge, xedge3n)