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 29 of file fillcne_xfem.F.

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