44
45
46
48 USE elbufdef_mod
49
50
51
52#include "implicit_f.inc"
53
54
55
56#include "com01_c.inc"
57#include "com04_c.inc"
58#include "com_xfem1.inc"
59#include "param_c.inc"
60#include "task_c.inc"
61#include "vect01_c.inc"
62
63
64
65 INTEGER IPARG(NPARG,*),IXC(NIXC,*),NGROUC,IGROUC(*),
66 . IEL_CRK(*),ELCUTC(2,*),IXTG(NIXTG,*),IADC_CRK(*),
67 . IAD_ELEM(2,*),IAD_EDGE(*),FR_EDGE(*),FR_NBEDGE(*),
68 . NLAY,FR_ELEM(*),INOD_CRK(*),XEDGE4N(4,*),XEDGE3N(3,*)
69
70 TYPE(ELBUF_STRUCT_), DIMENSION(NGROUP,NXEL) :: XFEM_TAB
71 TYPE (XFEM_EDGE_) , DIMENSION(*) :: CRKEDGE
72
73
74
75 INTEGER I,IG,NG,JFT,JLT,NEL,NF1,IXFEM,IADXFEM,NXLAY,OFF,
76 . STEP,ITG1,ITG2,FLAG,SIZE,LSDRC,ACTIFXFEM
77
78
79
80 IF (nspmd > 1) THEN
81 flag = 1
82 SIZE = nlay
83 lsdrc = fr_nbedge(nspmd+1)
85 . flag ,crkedge)
86 ENDIF
87
88
89
90
91 itg1 = 1+numelc
92 itg2 = 1+4*ecrkxfec
93
94
95
96
97
98 DO ig = 1, ngrouc
99 ng = igrouc(ig)
100 off = iparg(8,ng)
101 ixfem = iparg(54,ng)
102 IF (ixfem > 0 .and. off < 1) THEN
104
105 nel = iparg(2,ng)
106 nft = iparg(3,ng)
107 ity = iparg(5,ng)
108 nxlay = iparg(59,ng)
109 lft = 1
111 jft=lft
112 jlt=llt
113
114 IF (ity == 3) THEN
116 . ng ,elcutc,iel_crk,ity ,crkedge)
117
118 ELSE IF (ity == 7) THEN
120 . ng ,elcutc(1,itg1),iel_crk(itg1),ity,crkedge)
121 ENDIF
122
124 ENDIF
125 ENDDO
126!$omp END DO
127
128
129
130
131
132 DO ig = 1, ngrouc
133 ng = igrouc(ig)
134 off = iparg(8,ng)
135 ixfem = iparg(54,ng)
136 actifxfem = iparg(70,ng)
137 IF (ixfem > 0 .and. off < 1 .and. actifxfem > 0) THEN
139
140 nel = iparg(2,ng)
141 nft = iparg(3,ng)
142 ity = iparg(5,ng)
143 npt = iparg(6,ng)
144 nxlay = iparg(59,ng)
145 lft = 1
147 jft=lft
148 jlt=llt
149
150 IF (ity == 3) THEN
151 CALL upoffc(xfem_tab ,ng ,
152 . nft ,jft ,jlt ,ixfem ,iel_crk ,
153 . elcutc ,inod_crk,iadc_crk ,ixc ,nxlay ,
154 . crkedge ,xedge4n )
155
156 ELSE IF (ity == 7) THEN
158 . nft ,jft ,jlt ,ixfem ,iel_crk(itg1),
159 . elcutc(1,itg1),inod_crk,iadc_crk(itg2),ixtg ,nxlay ,
160 . crkedge ,xedge3n )
161 ENDIF
162
164 ENDIF
165 ENDDO
166
167
168 IF (nspmd > 1) THEN
169 flag = 0
170 SIZE = nlay
171 lsdrc = fr_nbedge(nspmd+1)
173 . flag ,crkedge)
174
175 flag = 3
176 SIZE = 6*nlay
177 lsdrc = fr_nbedge(nspmd+1)
179 . flag ,crkedge)
180
182 ENDIF
183
184 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)