OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
allocxfem.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!|| allocxfem ../starter/source/elements/xfem/allocxfem.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- uses -----------------------------------------------------
28!||====================================================================
29 SUBROUTINE allocxfem(
30 . IXC ,IXTG ,IPARG ,LCNE_CRKXFEM,CRKLVSET,
31 . CRKSKY ,CRKAVX,CRKEDGE,XFEM_PHANTOM)
32C-----------------------------------------------
33C M o d u l e s
34C-----------------------------------------------
35 USE xfem2def_mod
36C-----------------------------------------------
37C I m p l i c i t T y p e s
38C-----------------------------------------------
39#include "implicit_f.inc"
40C-----------------------------------------------
41C C o m m o n B l o c k s
42C-----------------------------------------------
43#include "param_c.inc"
44#include "com01_c.inc"
45#include "com04_c.inc"
46#include "com_xfem1.inc"
47C-----------------------------------------------
48C D u m m y A r g u m e n t s
49C-----------------------------------------------
50 INTEGER IXC(NIXC,*),IXTG(NIXTG,*),IPARG(NPARG,*),LCNE_CRKXFEM
51 TYPE (XFEM_LVSET_) , DIMENSION(NLEVMAX) :: CRKLVSET
52 TYPE (XFEM_SKY_) , DIMENSION(NLEVMAX) :: CRKSKY
53 TYPE (XFEM_AVX_) , DIMENSION(NLEVMAX) :: CRKAVX
54 TYPE (XFEM_EDGE_) , DIMENSION(NXLAYMAX):: CRKEDGE
55 TYPE (XFEM_PHANTOM_), DIMENSION(NXLAYMAX):: XFEM_PHANTOM
56C-----------------------------------------------
57C L O C A L V A R I A B L E S
58C-----------------------------------------------
59 INTEGER KNOD2ELC(NUMNOD+1)
60 INTEGER I,J,N,LFT,LLT,NFT,NEL,ITY,IXFEM,NG
61C=======================================================================
62 knod2elc = 0
63 DO ng=1,ngroup
64 nel=iparg(2,ng)
65 nft=iparg(3,ng)
66 ity=iparg(5,ng)
67 ixfem=iparg(54,ng)
68 lft=1
69 llt=min(nvsiz,nel)
70 IF (ixfem == 0 ) cycle
71 IF (ity==3) THEN
72 DO i=lft,llt
73 DO j=2,5
74 n = ixc(j,i+nft)
75 knod2elc(n) = knod2elc(n) + 1
76 END DO
77 END DO
78 ELSE IF(ity==7) THEN
79 DO i=lft,llt
80 DO j=2,4
81 n = ixtg(j,i+nft)
82 knod2elc(n) = knod2elc(n) + 1
83 END DO
84 END DO
85 END IF
86 ENDDO ! NG=1,NGROUP
87C
88 ienrnod = 0
89 DO i=1,numnod
90 ienrnod = max(ienrnod,knod2elc(i))
91 END DO
92C
93 ienrnod = max(ienrnod,4)
94 ienrnod = ienrnod * nlevmax
95C--------------------
96C INITIALISATION
97C--------------------
98C crack xfem for layered shell
99C--------------------
100c
101 DO i=1,nlevmax
102 ALLOCATE(crklvset(i)%ELCUT(ecrkxfe))
103 ALLOCATE(crklvset(i)%HFI0(4,ecrkxfe))
104 ALLOCATE(crklvset(i)%ENRICH0(4,ecrkxfe))
105 ALLOCATE(crklvset(i)%EDGE0(4,ecrkxfe))
106C
107 ALLOCATE(crklvset(i)%EDGE(4,ecrkxfec))
108 ALLOCATE(crklvset(i)%EDGETG(3,ecrkxfetg))
109 ALLOCATE(crklvset(i)%ICUTEDGE(numedges))
110 ALLOCATE(crklvset(i)%RATIOEDGE(numedges))
111C
112 ALLOCATE(crkavx(i)%A(3,lcne_crkxfem))
113 ALLOCATE(crkavx(i)%AR(3,lcne_crkxfem))
114 ALLOCATE(crkavx(i)%V(3,lcne_crkxfem))
115 ALLOCATE(crkavx(i)%VR(3,lcne_crkxfem))
116 ALLOCATE(crkavx(i)%X(3,lcne_crkxfem))
117 ALLOCATE(crkavx(i)%U(3,lcne_crkxfem))
118 ALLOCATE(crkavx(i)%XX(3,4*ecrkxfe))
119c
120 ALLOCATE(crksky(i)%FSKY(8,lcne_crkxfem))
121C
122 crklvset(i)%ELCUT= 0
123 crklvset(i)%HFI0 = 0
124 crklvset(i)%ENRICH0 = 0
125 crklvset(i)%EDGE0 = 0
126C
127 crklvset(i)%EDGE= 0
128 crklvset(i)%EDGETG = 0
129 crklvset(i)%ICUTEDGE = 0
130 crklvset(i)%RATIOEDGE = 0
131C
132 crkavx(i)%A = 0
133 crkavx(i)%AR = 0
134 crkavx(i)%V = 0
135 crkavx(i)%VR = 0
136 crkavx(i)%X = 0
137 crkavx(i)%U = 0
138 crkavx(i)%XX = 0
139 crksky(i)%FSKY = 0
140 ENDDO
141C
142 DO i=1,nxlaymax
143 ALLOCATE(crkedge(i)%LAYCUT(ecrkxfe))
144 ALLOCATE(crkedge(i)%EDGEICRK(numedges))
145 ALLOCATE(crkedge(i)%EDGEIFI(2,numedges))
146 ALLOCATE(crkedge(i)%EDGEENR(2,numedges))
147 ALLOCATE(crkedge(i)%EDGETIP(2,numedges))
148 crkedge(i)%LAYCUT = 0
149 crkedge(i)%EDGEICRK = 0
150 crkedge(i)%EDGEIFI = 0
151 crkedge(i)%EDGEENR = 0
152 crkedge(i)%EDGETIP = 0
153 ENDDO
154c
155 DO i=1,nxlaymax
156 ALLOCATE(xfem_phantom(i)%ELCUT(ecrkxfe))
157 ALLOCATE(xfem_phantom(i)%IFI(lcnecrkxfem))
158 ALLOCATE(xfem_phantom(i)%ITRI(2,ecrkxfe))
159 ALLOCATE(xfem_phantom(i)%TAGXP(1,1,1)) ! not used in starter
160 xfem_phantom(i)%ELCUT = 0
161 xfem_phantom(i)%TAGXP = 0
162 xfem_phantom(i)%IFI = 0
163 xfem_phantom(i)%ITRI = 0
164 ENDDO
165C---
166 RETURN
167 END
subroutine allocxfem(ixc, ixtg, iparg, lcne_crkxfem, crklvset, crksky, crkavx, crkedge, xfem_phantom)
Definition allocxfem.F:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21