32
33
34
36 use element_mod , only : nixc,nixtg
37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "param_c.inc"
45#include "com01_c.inc"
46#include "com04_c.inc"
47#include "com_xfem1.inc"
48
49
50
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
57
58
59
60 INTEGER KNOD2ELC(NUMNOD+1)
61 INTEGER I,J,N,LFT,LLT,NFT,NEL,ITY,IXFEM,NG
62
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
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
88
89 ienrnod = 0
90 DO i=1,numnod
91 ienrnod =
max(ienrnod,knod2elc(i))
92 END DO
93
94 ienrnod =
max(ienrnod,4)
95 ienrnod = ienrnod * nlevmax
96
97
98
99
100
101
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))
107
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))
112
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))
120
121 ALLOCATE(crksky(i)%FSKY(8,lcne_crkxfem))
122
123 crklvset(i)%ELCUT= 0
124 crklvset(i)%HFI0 = 0
125 crklvset(i)%ENRICH0 = 0
126 crklvset(i)%EDGE0 = 0
127
128 crklvset(i)%EDGE= 0
129 crklvset(i)%EDGETG = 0
130 crklvset(i)%ICUTEDGE = 0
131 crklvset(i)%RATIOEDGE = 0
132
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
142
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
155
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))
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
166
167 RETURN