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