32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
68
69
70
71#include "implicit_f.inc"
72
73
74
75 INTEGER,INTENT(IN) :: IB,ICELL_TARGET,ICELLv,,J,Jv, IXS(NIXS,*),NIN,ITASK
76
77
78
79 INTEGER :: ,ICELL, NAdjv,IADJv,ID,NBCUT,ICELL_DEST,IADJ, NListNod9,NADj, IE, K
80 INTEGER :: WhichCell_Node(8),INOD, I, NumNODES_Cell, NumIntP,NumPOINT_Face(6),ListNodID(8)
82 TYPE (BRICK_ENTITY) :: CUTCELL_TMP
83 LOGICAL :: bFOUND
84
85
86
89 ncell = nbcut
90
91 if(itask==0)then
94 write (*,fmt='(A,I10,A1,I1)') "destroying cell", ixs(11,ie),".",icell_target
95 endif
96 endif
97
98 IF(ncell==0 .OR. (nbcut>1.AND.icell_target==9) )THEN
99 print *,
"**error inter22 : unexpected situation, elem id=", ixs(11,
id)
100 ENDIF
101
102 IF(icell_target==9)THEN
103
104
105
106
107
110
112
115
118
119 brick_list(nin,ib)%POLY(1)%FACE(1:6)%NumPOINT = 4
120 brick_list(nin,ib)%POLY(9)%FACE(1:6)%NumPOINT = 0
121
122 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Adjacent_Cell(1) = 0
123 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Adjacent_Cell(2) = 0
124 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Adjacent_Cell(3) = 0
125 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Adjacent_Cell(4) = 0
126 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Adjacent_Cell(5) = 0
127
128 brick_list(nin,ib)%POLY(9)%FACE(1:6)%NAdjCell = 0
129 brick_list(nin,ib)%POLY(1)%ListNodID(1:8) = (/1,2,3,4,5,6,7,8/)
132
134
135 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Surf = zero
136
143 brick_list(nin,ib)%SECTYPE(1) =
'REMOVED 0-CELL'
144
145 brick_list(nin,ib)%POLY(1)%WhereIsMain(1:2) = 0
147 brick_list(nin,ib)%POLY(1)%WhereIsMain(4) = ib
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171 ELSEIF(nbcut==1 .AND. icell_target==1)THEN
172
173
174
175
176
177
179
181
183
186
189
190 brick_list(nin,ib)%POLY(1)%FACE(1:6)%NumPOINT = 4
191 brick_list(nin,ib)%POLY(9)%FACE(1:6)%NumPOINT = 0
192
193 brick_list(nin,ib)%POLY(1)%WhereIsMain(1:2) = 0
195 brick_list(nin,ib)%POLY(1)%WhereIsMain(4) = ib
196
197 DO k=1,6
198 brick_list(nin,ib)%POLY(1)%FACE(k)%Adjacent_Cell(1) =
brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(1)
199 brick_list(nin,ib)%POLY(1)%FACE(k)%Adjacent_Cell(2) =
brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell
200 brick_list(nin,ib)%POLY(1)%FACE(k)%Adjacent_Cell(3) =
brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(3
201 brick_list(nin,ib)%POLY(1)%FACE(k)%Adjacent_Cell(4) =
brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(4)
202 brick_list(nin,ib)%POLY(1)%FACE(k)%Adjacent_Cell(5) =
brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(
203 ENDDO
204
205 DO k=1,6
206 brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(1) = 0
207 brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(2) = 0
208 brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(3) = 0
209 brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(4) = 0
210 brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(5) = 0
211 ENDDO
212
214 brick_list(nin,ib)%POLY(9)%FACE(1:6)%NAdjCell = 0
215
216 brick_list(nin,ib)%POLY(1)%ListNodID(1:8) = (/1,2,3,4,5,6,7,8/)
218
221
223
224 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Surf = zero
225
232
234
235 brick_list(nin,ib)%SECTYPE(1) =
'REMOVED 0-CELL'
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257 ELSE
258
259
260
261
262
263
264
265
266
267
268 face_cell(1:6) =
brick_list(nin,ib)%POLY(icell_target)%FACE(1:6)%Surf
269 numnodes_cell =
brick_list(nin,ib)%POLY(icell_target)%NumNOD
270 numintp =
brick_list(nin,ib)%POLY(icell_target)%NumPOINT - numnodes_cell
271 numpoint_face(1:6) =
brick_list(nin,ib)%POLY(icell_target)%FACE(1:6)%NumPOINT
272 listnodid(1:8) =
brick_list(nin,ib)%POLY(icell_target)%ListNodID(1:
273
274 icell = icell_target - 1
275
276 DO WHILE (icell<=ncell)
277 icell = icell +1
278 IF (icell>=ncell)EXIT
282 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%NumPOINT =
brick_list(nin,ib)%POLY(icell+1)%FACE(1:6)%NumPOINT
283 DO k=1,6
284 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(1) =
brick_list(nin,ib)%POLY(icell+1)%FACE(k)%Adjacent_Cell(1)
285 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(2) =
brick_list(nin,ib)%POLY(icell+1)%FACE(k)%Adjacent_Cell(2)
286 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(3) =
brick_list(nin,ib)%POLY(icell+1)%FACE(k)%Adjacent_Cell(3)
287 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(4) =
brick_list(nin,ib)%POLY(icell+1)%FACE(k)%Adjacent_Cell(4)
288 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(5) =
brick_list(nin,ib)%POLY(icell+1)%FACE(k)%Adjacent_Cell(5)
289 ENDDO
290 brick_list(nin,ib)%POLY(icell)%FACE(1)%NAdjCell =
brick_list(nin,ib)%POLY(icell+1)%FACE(1)%NAdjCell
301 brick_list(nin,ib)%POLY(icell)%CellCENTER(1:3) =
brick_list(nin,ib)%POLY(icell+1)%CellCENTER(1:3)
302 enddo
303
304 icell = nbcut
308 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%NumPOINT = 0
309 DO k=1,6
310 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(1) = 0
311 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(2) = 0
312 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(3) = 0
313 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(4) = 0
314 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(5) = 0
315 ENDDO
316 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%NAdjCell = 0
317 brick_list(nin,ib)%POLY(icell)%ListNodID(1:8) = 0
319 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Surf = zero
320 brick_list(nin,ib)%POLY(icell)%FACE0%Surf = zero
325 brick_list(nin,ib)%PCUT(icell)%P(1:3,1:6) = zero
327 brick_list(nin,ib)%SECTYPE(icell) =
'REMOVED 0-CELL'
328
330 DO inod=1,8
331 IF(
brick_list(nin,ib)%NODE(inod)%WhichCell==icell_target)
brick_list(nin,ib)%NODE(inod)%WhichCell=9
332 ENDDO
333 DO i=1,6
334
335 brick_list(nin,ib)%POLY(9)%FACE(i)%Surf =
brick_list(nin,ib)%POLY(9)%FACE(i)%Surf + face_cell(i)
336 ENDDO
340 DO i=1,6
341 brick_list(nin,ib)%POLY(9)%FACE(i)%NumPOINT =
brick_list(nin,ib)%POLY(9)%FACE(i)%NumPOINT + numpoint_face(i)
342 ENDDO
343 brick_list(nin,ib)%POLY(9)%ListNodID(nlistnod9+1:8) = listnodid(1:numnodes_cell)
344
345
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369 ENDIF
370
371
372
type(brick_entity), dimension(:,:), allocatable, target brick_list