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

Go to the source code of this file.

Functions/Subroutines

subroutine allocxfem (ixc, ixtg, iparg, lcne_crkxfem, crklvset, crksky, crkavx, crkedge, xfem_phantom)

Function/Subroutine Documentation

◆ allocxfem()

subroutine allocxfem ( integer, dimension(nixc,*) ixc,
integer, dimension(nixtg,*) ixtg,
integer, dimension(nparg,*) iparg,
integer lcne_crkxfem,
type (xfem_lvset_), dimension(nlevmax) crklvset,
type (xfem_sky_), dimension(nlevmax) crksky,
type (xfem_avx_), dimension(nlevmax) crkavx,
type (xfem_edge_), dimension(nxlaymax) crkedge,
type (xfem_phantom_), dimension(nxlaymax) xfem_phantom )

Definition at line 29 of file allocxfem.F.

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
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21