OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
xfem_crack_init.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| xfem_crack_init ../starter/source/elements/xfem/xfem_crack_init.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- uses -----------------------------------------------------
28!||====================================================================
29 SUBROUTINE xfem_crack_init(
30 . IPARG ,IXC ,IXTG ,INOD_CRK ,NODLEVXF,
31 . INDX_CRK,NCRKPART,CRKSHELL)
32C-----------------------------------------------
33C M o d u l e s
34C-----------------------------------------------
35 USE xfem2def_mod
36 use element_mod , only : nixc,nixtg
37C-----------------------------------------------
38C I m p l i c i t T y p e s
39C-----------------------------------------------
40#include "implicit_f.inc"
41C-----------------------------------------------
42C C o m m o n B l o c k s
43C-----------------------------------------------
44#include "com01_c.inc"
45#include "com04_c.inc"
46#include "com_xfem1.inc"
47#include "param_c.inc"
48C-----------------------------------------------
49C D u m m y A r g u m e n t s
50C-----------------------------------------------
51 INTEGER NCRKPART
52 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXTG(NIXTG,*),INOD_CRK(*),
53 . nodlevxf(*),indx_crk(*)
54 TYPE (XFEM_SHELL_) , DIMENSION(NLEVMAX) :: CRKSHELL
55C-----------------------------------------------
56C L O C A L V A R I A B L E S
57C-----------------------------------------------
58 INTEGER NG,ITY,LFT,LLT,N,I,J,NEL,NFT,IXFEM,ILEV,NCOUNT,
59 . SHCOUNT,NCOUNTG
60 INTEGER TAG_ARRAY(NUMNOD),TAG_SHELLS_C(NUMELC),TAG_SHELLS_TG(NUMELTG),
61 . NLEVXF,NN(4),TYPE_SHELLS_C(NUMELC),TYPE_SHELLS_TG(NUMELTG)
62C=======================================================================
63 DO ilev=1,nlevmax
64 crkshell(ilev)%CRKNUMSHELL = 0
65 crkshell(ilev)%CRKNUMSH4 = 0
66 crkshell(ilev)%CRKNUMSH3 = 0
67 ENDDO
68C-----------------------------------------------
69 DO ilev=1,nlevmax
70 tag_array=0
71 tag_shells_c=0
72 tag_shells_tg=0
73 shcount =0
74 type_shells_c=0
75 type_shells_tg=0
76c
77 DO ng=1,ngroup
78 ixfem =iparg(54,ng)
79 IF (ixfem > 0) THEN
80 nel =iparg(2,ng)
81 nft =iparg(3,ng)
82 ity =iparg(5,ng)
83 nlevxf=iparg(65,ng)
84 lft=1
85 llt=nel
86 IF (ity == 3) THEN
87C-----------------------------------------------
88C COQUES 4N
89C-----------------------------------------------
90 DO i=lft,llt
91 n = i + nft
92 tag_array(ixc(2,n))=1
93 tag_array(ixc(3,n))=1
94 tag_array(ixc(4,n))=1
95 tag_array(ixc(5,n))=1
96C
97 nn(1) = inod_crk(ixc(2,n))
98 nn(2) = inod_crk(ixc(3,n))
99 nn(3) = inod_crk(ixc(4,n))
100 nn(4) = inod_crk(ixc(5,n))
101C
102 nodlevxf(nn(1)) = nlevxf
103 nodlevxf(nn(2)) = nlevxf
104 nodlevxf(nn(3)) = nlevxf
105 nodlevxf(nn(4)) = nlevxf
106C
107 tag_shells_c(n) = ilev
108 type_shells_c(n) = 4
109 crkshell(ilev)%CRKNUMSHELL = crkshell(ilev)%CRKNUMSHELL+1
110 crkshell(ilev)%CRKNUMSH4 = crkshell(ilev)%CRKNUMSH4+1
111 ENDDO
112 ELSEIF (ity == 7) THEN
113C-----------------------------------------------
114C COQUES 3N
115C-----------------------------------------------
116 DO i=lft,llt
117 n = i + nft
118 tag_array(ixtg(2,n))=1
119 tag_array(ixtg(3,n))=1
120 tag_array(ixtg(4,n))=1
121C
122 nn(1) = inod_crk(ixtg(2,n))
123 nn(2) = inod_crk(ixtg(3,n))
124 nn(3) = inod_crk(ixtg(4,n))
125C
126 nodlevxf(nn(1)) = nlevxf
127 nodlevxf(nn(2)) = nlevxf
128 nodlevxf(nn(3)) = nlevxf
129C
130 tag_shells_tg(n) = ilev
131 type_shells_tg(n) = 3
132 crkshell(ilev)%CRKNUMSHELL = crkshell(ilev)%CRKNUMSHELL+1
133 crkshell(ilev)%CRKNUMSH3 = crkshell(ilev)%CRKNUMSH3+1
134 ENDDO
135 ENDIF
136 ENDIF ! IXFEM > 0
137 ENDDO ! NG=1,NGROUP
138C-------------------------------
139C CRACK Shells Post treatments
140C-------------------------------
141 shcount = crkshell(ilev)%CRKNUMSHELL
142 ALLOCATE (crkshell(ilev)%PHANTOML(shcount))
143 ALLOCATE (crkshell(ilev)%ELTYPE(shcount))
144C
145 shcount=0
146 DO i=1, numelc
147 IF (tag_shells_c(i) > 0)THEN
148 shcount = shcount+1
149 crkshell(ilev)%PHANTOML(shcount)=i
150 crkshell(ilev)%ELTYPE(shcount)=type_shells_c(i)
151 ENDIF
152 ENDDO
153C
154 DO i=1,numeltg
155 IF (tag_shells_tg(i) > 0)THEN
156 shcount = shcount+1
157 crkshell(ilev)%PHANTOML(shcount)=i
158 crkshell(ilev)%ELTYPE(shcount)=type_shells_tg(i)
159 ENDIF
160 ENDDO
161C
162 ENDDO ! DO ILEV=1,NLEVMAX
163c
164C-----------------------------------------------------------------------
165C Global shell crack numbers (by level)
166C-------------------------------
167 ncount = 0
168 DO ilev=1,nlevmax
169 ALLOCATE(crkshell(ilev)%PHANTOMG(crkshell(ilev)%CRKNUMSHELL))
170C
171 DO i=1,crkshell(ilev)%CRKNUMSHELL
172 ncount=ncount+1
173 crkshell(ilev)%PHANTOMG(i)=ncount
174 ENDDO
175 ENDDO
176C
177C Crack Nodes Post treatments
178C
179C-------------------------------
180C Crack parts (by level)
181C-------------------------------
182 DO ilev=1,nlevmax
183 IF (crkshell(ilev)%CRKNUMSHELL > 0) THEN
184 ncrkpart = ncrkpart + 1
185 indx_crk(ncrkpart) = ilev
186 ENDIF
187 ENDDO
188C
189C-------------------------------
190C Global NODES numbers (unconnected) for shell crack (by level)
191C-------------------------------
192C
193 ncountg = 0
194 DO ilev=1,nlevmax
195 ALLOCATE(crkshell(ilev)%XNODEG(4,crkshell(ilev)%CRKNUMSHELL))
196 ALLOCATE(crkshell(ilev)%XNODEL(4,crkshell(ilev)%CRKNUMSHELL))
197C
198 ncount = 0
199 DO i=1,crkshell(ilev)%CRKNUMSHELL
200 DO j=1,4
201 ncount = ncount + 1
202 ncountg = ncountg + 1
203 crkshell(ilev)%XNODEG(j,i) = ncountg ! global num de phantom nodes
204 crkshell(ilev)%XNODEL(j,i) = ncount ! Or = 4*(i -1) + J '= Num nodes phantomes of a single Ilev
205 END DO
206 ENDDO
207 ENDDO
208C---
209 ncrknodg = 4*crkshell(1)%CRKNUMSHELL ! = NCOUNT
210C-----------
211 RETURN
212 END
subroutine xfem_crack_init(iparg, ixc, ixtg, inod_crk, nodlevxf, indx_crk, ncrkpart, crkshell)