OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
xfeoff.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com_xfem1.inc"
#include "param_c.inc"
#include "task_c.inc"
#include "vect01_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine xfeoff (xfem_tab, iparg, ixc, ngrouc, igrouc, iel_crk, elcutc, ixtg, iadc_crk, iad_elem, iad_edge, fr_edge, fr_nbedge, fr_elem, nlay, inod_crk, crkedge, xedge4n, xedge3n)

Function/Subroutine Documentation

◆ xfeoff()

subroutine xfeoff ( type(elbuf_struct_), dimension(ngroup,nxel) xfem_tab,
integer, dimension(nparg,*) iparg,
integer, dimension(nixc,*) ixc,
integer ngrouc,
integer, dimension(*) igrouc,
integer, dimension(*) iel_crk,
integer, dimension(2,*) elcutc,
integer, dimension(nixtg,*) ixtg,
integer, dimension(*) iadc_crk,
integer, dimension(2,*) iad_elem,
integer, dimension(*) iad_edge,
integer, dimension(*) fr_edge,
integer, dimension(*) fr_nbedge,
integer, dimension(*) fr_elem,
integer nlay,
integer, dimension(*) inod_crk,
type (xfem_edge_), dimension(*) crkedge,
integer, dimension(4,*) xedge4n,
integer, dimension(3,*) xedge3n )

Definition at line 39 of file xfeoff.F.

44C-----------------------------------------------
45C M o d u l e s
46C-----------------------------------------------
48 USE elbufdef_mod
49C-----------------------------------------------
50C I m p l i c i t T y p e s
51C-----------------------------------------------
52#include "implicit_f.inc"
53C-----------------------------------------------
54C C o m m o n B l o c k s
55C-----------------------------------------------
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"
62C-----------------------------------------------
63C D u m m y A r g u m e n t s
64C-----------------------------------------------
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,*)
69C
70 TYPE(ELBUF_STRUCT_), DIMENSION(NGROUP,NXEL) :: XFEM_TAB
71 TYPE (XFEM_EDGE_) , DIMENSION(*) :: CRKEDGE
72C-----------------------------------------------
73C L o c a l V a r i a b l e s
74C-----------------------------------------------
75 INTEGER I,IG,NG,JFT,JLT,NEL,NF1,IXFEM,IADXFEM,NXLAY,OFF,
76 . STEP,ITG1,ITG2,FLAG,SIZE,LSDRC,ACTIFXFEM
77C=======================================================================
78C activation of new group if crack advancing or new crack initiate
79c-----------------------------------------------------------------------
80 IF (nspmd > 1) THEN
81 flag = 1
82 SIZE = nlay
83 lsdrc = fr_nbedge(nspmd+1)
84 CALL spmd_exch_iedge(iad_edge,fr_edge,SIZE ,lsdrc,fr_nbedge,
85 . flag ,crkedge)
86 ENDIF
87C---
88C_tmp IF(NUMELCRK2 == NUMELCRK)RETURN ! check in hypethreading, SPMD
89C---
90C----------------------------------------
91 itg1 = 1+numelc
92 itg2 = 1+4*ecrkxfec
93c-------------------------------
94C Boucle parallele dynamique SMP
95c-------------------------------
96!$OMP DO SCHEDULE(DYNAMIC,1)
97c
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
103 IF (iddw > 0) CALL startimeg(ng)
104C---
105 nel = iparg(2,ng)
106 nft = iparg(3,ng)
107 ity = iparg(5,ng)
108 nxlay = iparg(59,ng)
109 lft = 1
110 llt = min(nvsiz,nel)
111 jft=lft
112 jlt=llt
113C---
114 IF (ity == 3) THEN
115 CALL activ_xfem(iparg ,nft ,jft ,jlt ,nxlay,
116 . ng ,elcutc,iel_crk,ity ,crkedge)
117C---
118 ELSE IF (ity == 7) THEN
119 CALL activ_xfem(iparg ,nft ,jft ,jlt ,nxlay,
120 . ng ,elcutc(1,itg1),iel_crk(itg1),ity,crkedge)
121 ENDIF
122C---
123 IF (iddw > 0) CALL stoptimeg(ng)
124 ENDIF
125 ENDDO
126!$omp END DO
127C-------------
128C
129C Boucle parallele dynamique SMP
130C
131!$OMP DO SCHEDULE(DYNAMIC,1)
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
138 IF (iddw > 0) CALL startimeg(ng)
139C---
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
146 llt = min(nvsiz,nel)
147 jft=lft
148 jlt=llt
149C---
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 )
155C---
156 ELSE IF (ity == 7) THEN
157 CALL upofftg(xfem_tab ,ng ,
158 . nft ,jft ,jlt ,ixfem ,iel_crk(itg1),
159 . elcutc(1,itg1),inod_crk,iadc_crk(itg2),ixtg ,nxlay ,
160 . crkedge ,xedge3n )
161 ENDIF
162C---
163 IF (iddw > 0) CALL stoptimeg(ng)
164 ENDIF
165 ENDDO
166!$OMP END DO
167C-------------
168 IF (nspmd > 1) THEN
169 flag = 0
170 SIZE = nlay
171 lsdrc = fr_nbedge(nspmd+1)
172 CALL spmd_exch_iedge(iad_edge,fr_edge,SIZE ,lsdrc,fr_nbedge,
173 . flag ,crkedge)
174C
175 flag = 3
176 SIZE = 6*nlay
177 lsdrc = fr_nbedge(nspmd+1)
178 CALL spmd_exch_iedge(iad_edge,fr_edge,SIZE ,lsdrc,fr_nbedge,
179 . flag ,crkedge)
180C
181 CALL spmd_max_xfe_i(numelcrk) ! no more used (just for anim reasons)
182 ENDIF
183C-------------
184 RETURN
subroutine startimeg(ng)
Definition timer.F:1487
subroutine stoptimeg(ng)
Definition timer.F:1535
subroutine activ_xfem(iparg, nft, lft, llt, nxlay, ng, iel_crk, ity, crkedge)
Definition lslocal.F:563
#define min(a, b)
Definition macros.h:20
subroutine spmd_max_xfe_i(int)
Definition spmd_xfem.F:1130
subroutine spmd_exch_iedge(iad_edge, fr_edge, size, lsdrc, fr_nbedge, flag, crkedge)
Definition spmd_xfem.F:619
subroutine upoffc(xfem_tab, ng, nft, jft, jlt, ixfem, iel_crk, elcutc, inod_crk, iadc_crk, ixc, nxlay, crkedge, xedge4n)
Definition upoffc.F:35
subroutine upofftg(xfem_tab, ng, nft, jft, jlt, ixfem, iel_crk, elcutc, inod_crk, iadtg_crk, ixtg, nxlay, crkedge, xedge3n)
Definition upofftg.F:35