32
33
34
36
37
38
39#include "implicit_f.inc"
40
41
42
43#include "com01_c.inc"
44#include "com04_c.inc"
45#include "com_xfem1.inc"
46#include "param_c.inc"
47
48
49
50 INTEGER NCRKPART
51 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXTG(NIXTG,*),INOD_CRK(*),
52 . NODLEVXF(*),INDX_CRK(*)
53 TYPE (XFEM_SHELL_) , DIMENSION(NLEVMAX) :: CRKSHELL
54
55
56
57 INTEGER NG,ITY,LFT,LLT,N,I,J,IPRT,NEL,NFT,IXFEM,ILEV,NCOUNT,
58 . ,NCOUNTG
59 INTEGER TAG_ARRAY(NUMNOD),TAG_SHELLS_C(NUMELC),TAG_SHELLS_TG(NUMELTG),
60 . NLEVXF,NN(4),TYPE_SHELLS_C(NUMELC),TYPE_SHELLS_TG(NUMELTG)
61
62 DO ilev=1,nlevmax
63 crkshell(ilev)%CRKNUMSHELL = 0
64 crkshell(ilev)%CRKNUMSH4 = 0
65 crkshell(ilev)%CRKNUMSH3 = 0
66 ENDDO
67
68 DO ilev=1,nlevmax
69 tag_array=0
70 tag_shells_c=0
71 tag_shells_tg=0
72 shcount =0
73 type_shells_c=0
74 type_shells_tg=0
75
76 DO ng=1,ngroup
77 ixfem =iparg(54,ng)
78 IF (ixfem > 0) THEN
79 nel =iparg(2,ng)
80 nft =iparg(3,ng)
81 ity =iparg(5,ng)
82 nlevxf=iparg(65,ng)
83 lft=1
84 llt=nel
85 IF (ity == 3) THEN
86
87
88
89 DO i=lft,llt
90 n = i + nft
91 tag_array(ixc(2,n))=1
92 tag_array(ixc(3,n))=1
93 tag_array(ixc(4,n))=1
94 tag_array(ixc(5,n))=1
95
96 nn(1) = inod_crk(ixc(2,n))
97 nn(2) = inod_crk(ixc(3,n))
98 nn(3) = inod_crk(ixc(4,n))
99 nn(4) = inod_crk(ixc(5,n))
100
101 nodlevxf(nn(1)) = nlevxf
102 nodlevxf(nn(2)) = nlevxf
103 nodlevxf(nn(3)) = nlevxf
104 nodlevxf(nn(4)) = nlevxf
105
106 tag_shells_c(n) = ilev
107 type_shells_c(n) = 4
108 crkshell(ilev)%CRKNUMSHELL = crkshell(ilev)%CRKNUMSHELL+1
109 crkshell(ilev)%CRKNUMSH4 = crkshell(ilev)%CRKNUMSH4+1
110 ENDDO
111 ELSEIF (ity == 7) THEN
112
113
114
115 DO i=lft,llt
116 n = i + nft
117 tag_array(ixtg(2,n))=1
118 tag_array(ixtg(3,n))=1
119 tag_array(ixtg(4,n))=1
120
121 nn(1) = inod_crk(ixtg(2,n))
122 nn(2) = inod_crk(ixtg(3,n))
123 nn(3) = inod_crk(ixtg(4,n))
124
125 nodlevxf(nn(1)) = nlevxf
126 nodlevxf(nn(2)) = nlevxf
127 nodlevxf(nn(3)) = nlevxf
128
129 tag_shells_tg(n) = ilev
130 type_shells_tg(n) = 3
131 crkshell(ilev)%CRKNUMSHELL = crkshell(ilev)%CRKNUMSHELL+1
132 crkshell(ilev)%CRKNUMSH3 = crkshell(ilev)%CRKNUMSH3+1
133 ENDDO
134 ENDIF
135 ENDIF
136 ENDDO
137
138
139
140 shcount = crkshell(ilev)%CRKNUMSHELL
141 ALLOCATE (crkshell(ilev)%PHANTOML(shcount))
142 ALLOCATE (crkshell(ilev)%ELTYPE(shcount))
143
144 shcount=0
145 DO i=1, numelc
146 IF (tag_shells_c(i) > 0)THEN
147 shcount = shcount+1
148 crkshell(ilev)%PHANTOML(shcount)=i
149 crkshell(ilev)%ELTYPE(shcount)=type_shells_c(i)
150 ENDIF
151 ENDDO
152
153 DO i=1,numeltg
154 IF (tag_shells_tg(i) > 0)THEN
155 shcount = shcount+1
156 crkshell(ilev)%PHANTOML(shcount)=i
157 crkshell(ilev)%ELTYPE(shcount)=type_shells_tg(i)
158 ENDIF
159 ENDDO
160
161 ENDDO
162
163
164
165
166 ncount = 0
167 DO ilev=1,nlevmax
168 ALLOCATE(crkshell(ilev)%PHANTOMG(crkshell(ilev)%CRKNUMSHELL))
169
170 DO i=1,crkshell(ilev)%CRKNUMSHELL
171 ncount=ncount+1
172 crkshell(ilev)%PHANTOMG(i)=ncount
173 ENDDO
174 ENDDO
175
176
177
178
179
180
181 DO ilev=1,nlevmax
182 IF (crkshell(ilev)%CRKNUMSHELL > 0) THEN
183 ncrkpart = ncrkpart + 1
184 indx_crk(ncrkpart) = ilev
185 ENDIF
186 ENDDO
187
188
189
190
191
192 ncountg = 0
193 DO ilev=1,nlevmax
194 ALLOCATE(crkshell(ilev)%XNODEG(4,crkshell(ilev)%CRKNUMSHELL))
195 ALLOCATE(crkshell(ilev)%XNODEL(4,crkshell(ilev)%CRKNUMSHELL))
196
197 ncount = 0
198 DO i=1,crkshell(ilev)%CRKNUMSHELL
199 DO j=1,4
200 ncount = ncount + 1
201 ncountg = ncountg + 1
202 crkshell(ilev)%XNODEG(j,i) = ncountg
203 crkshell(ilev)%XNODEL(j,i) = ncount
204 END DO
205 ENDDO
206 ENDDO
207
208 ncrknodg = 4*crkshell(1)%CRKNUMSHELL
209
210 RETURN