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

Go to the source code of this file.

Functions/Subroutines

subroutine fillcne_xfem (lcne_crkxfem, iparg, iel_crkxfem, inod_crkxfem, ixc, ixtg, cep, addcne_crkxfem, cne_xfe, cel_xfe, cep_xfe, crknodiad)

Function/Subroutine Documentation

◆ fillcne_xfem()

subroutine fillcne_xfem ( integer lcne_crkxfem,
integer, dimension(nparg,ngroup) iparg,
integer, dimension(numelc+numeltg) iel_crkxfem,
integer, dimension(*) inod_crkxfem,
integer, dimension(nixc,*) ixc,
integer, dimension(nixtg,*) ixtg,
integer, dimension(*) cep,
integer, dimension(0:ncrkxfe+1) addcne_crkxfem,
integer, dimension(lcne_crkxfem) cne_xfe,
integer, dimension(ecrkxfe) cel_xfe,
integer, dimension(ecrkxfe) cep_xfe,
integer, dimension(lcne_crkxfem) crknodiad )

Definition at line 30 of file fillcne_xfem.F.

33 use element_mod , only : nixc,nixtg
34C-----------------------------------------------
35C I m p l i c i t T y p e s
36C-----------------------------------------------
37#include "implicit_f.inc"
38C-----------------------------------------------
39C C o m m o n B l o c k s
40C-----------------------------------------------
41#include "com01_c.inc"
42#include "com04_c.inc"
43#include "com_xfem1.inc"
44#include "param_c.inc"
45C-----------------------------------------------
46C D u m m y A r g u m e n t s
47C-----------------------------------------------
48 INTEGER LCNE_CRKXFEM
49 INTEGER IXC(NIXC,*),IXTG(NIXTG,*),ADDCNE_CRKXFEM(0:NCRKXFE+1),
50 . CNE_XFE(LCNE_CRKXFEM),IEL_CRKXFEM(NUMELC+NUMELTG),INOD_CRKXFEM(*),
51 . CEP(*),CEL_XFE(ECRKXFE),CEP_XFE(ECRKXFE),CRKNODIAD(LCNE_CRKXFEM),
52 . IPARG(NPARG,NGROUP)
53C-----------------------------------------------
54C L o c a l V a r i a b l e s
55C-----------------------------------------------
56 INTEGER I, J, K, N, NG, NP, NEL, NFT, ITY, II, NIN, P, PROC, INDX, OFFC, OFFTG
57 INTEGER ADSKY(0:NCRKXFE+1)
58 INTEGER, ALLOCATABLE, DIMENSION(:) :: KNOD2ELC
59 INTEGER, ALLOCATABLE, DIMENSION(:,:) :: TAGSKYC,TAGSKYTG
60 INTEGER, DIMENSION(70000) :: WORK
61 INTEGER, DIMENSION(NUMELC) :: ITRIC
62 INTEGER, DIMENSION(NUMELTG) :: ITRITG
63 INTEGER, DIMENSION(NUMELC*2) :: INDXC
64 INTEGER, DIMENSION(NUMELTG*2):: INDXTG
65C=======================================================================
66C CALCULATION OF CNE ADDCNE_CRKXFEM CEL for XFEM part
67C-----------------------------------------------
68 ALLOCATE(knod2elc(numnod+1))
69 knod2elc = 0
70 ALLOCATE(tagskyc(4,numelc))
71 tagskyc = 0
72 ALLOCATE(tagskytg(3,numeltg))
73 tagskytg = 0
74C
75 DO i = 0, ncrkxfe + 1 ! NCRKXFE = Nb of nodes xfem
76 adsky(i) = addcne_crkxfem(i)
77 ENDDO
78C
79 offc = numels + numelq
80 offtg = offc + numelt + numelp + numelr + numelc
81c
82c---------------------------
83c Connectivities
84c---------------------------
85 DO i = 1, numelc
86 itric(i) = ixc(7,i) ! Id elements std in the order of input
87 ENDDO
88 CALL my_orders(0,work,itric,indxc,numelc,1)
89c
90 DO i = 1, numeltg
91 itritg(i) = ixtg(6,i)
92 ENDDO
93 CALL my_orders(0,work,itritg,indxtg,numeltg,1)
94c---------------------------
95 DO j=1,numelc
96 i = indxc(j)
97 DO k=1,4
98 n = ixc(k+1,i)
99 knod2elc(n) = knod2elc(n) + 1
100 tagskyc(k,i) = knod2elc(n) ! Number of std connects to a node
101 END DO
102 END DO
103c---
104 DO j=1,numeltg
105 i = indxtg(j)
106 DO k=1,3
107 n = ixtg(k+1,i)
108 knod2elc(n) = knod2elc(n) + 1
109 tagskytg(k,i) = knod2elc(n)
110 END DO
111 END DO
112c---------------------------
113c Shell -4n- Connectivities
114c---------------------------
115 indx = 0
116 DO j=1,numelc
117 i = indxc(j)
118 IF (iel_crkxfem(i) > 0) THEN
119 indx = indx + 1
120 DO k=1,4
121 n = ixc(k+1,i) ! Num noeud std
122 np = inod_crkxfem(n) ! Num noeud phantome
123 cne_xfe(adsky(np)) = i
124 crknodiad(adsky(np)) = tagskyc(k,i)
125 adsky(np) = adsky(np) + 1
126 ENDDO
127 ENDIF
128 ENDDO
129c---------------------------
130c Shell -3N- Connectivities
131c---------------------------
132 DO j=1,numeltg
133 i = indxtg(j)
134 IF (iel_crkxfem(i+numelc) > 0) THEN
135 indx = indx + 1
136 DO k=1,3
137 n = ixtg(k+1,i)
138 np = inod_crkxfem(n)
139 cne_xfe(adsky(np)) = i + numelc
140 crknodiad(adsky(np)) = tagskytg(k,i)
141 adsky(np) = adsky(np) + 1
142 ENDDO
143 ENDIF
144 ENDDO
145C-----------------------------------------------
146c Remplissage de CEL_XFE, CEP_XFE : Element Xfem Global/Local
147C-----------------------------------------------
148c SHELL -4N-
149c
150 DO proc = 1, nspmd
151 nin = 0
152 DO ng = 1, ngroup
153 nel = iparg(2,ng)
154 nft = iparg(3,ng)
155 ity = iparg(5,ng)
156 p = iparg(32,ng)+1
157 IF (ity == 3) THEN
158 IF (p == proc) THEN
159 DO i = 1, nel
160 n = iel_crkxfem(i+nft)
161 IF (n > 0) THEN
162 nin = nin + 1
163 cel_xfe(n) = nin
164 cep_xfe(n) = p-1
165 ENDIF
166 ENDDO
167 ENDIF
168 ENDIF
169 ENDDO
170 ENDDO
171c
172c SHELL -3N-
173c
174 DO proc = 1, nspmd
175 nin = 0
176 DO ng = 1, ngroup
177 nel = iparg(2,ng)
178 nft = iparg(3,ng)
179 ity = iparg(5,ng)
180 p = iparg(32,ng)+1
181 IF (ity == 7) THEN
182 IF (p == proc) THEN
183 ii = numelc + nft
184 DO i = 1, nel
185 n = iel_crkxfem(ii + i)
186 IF (n > 0) THEN
187 nin = nin + 1
188 cel_xfe(n) = nin
189 cep_xfe(n) = p-1
190 ENDIF
191 ENDDO
192 ENDIF
193 ENDIF
194 ENDDO
195 ENDDO
196c-----------
197 DEALLOCATE(tagskyc,tagskytg,knod2elc)
198c-----------
199 RETURN
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
Definition my_orders.c:82