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
66
69 use element_mod , only : nixs
70
71
72
73#include "implicit_f.inc"
74
75
76
77 INTEGER,INTENT(IN) :: IB,ICELL_TARGET,ICELLv,IBv,J,Jv, IXS(NIXS,*),NIN,ITASK
78
79
80
81 INTEGER :: NCELL,ICELL, NAdjv,IADJv,ID,NBCUT,ICELL_DEST,IADJ, NListNod9,NADj, IE, K
82 INTEGER :: WhichCell_Node(8),INOD, I, NumNODES_Cell, NumIntP,NumPOINT_Face(6),ListNodID(8)
84 TYPE (BRICK_ENTITY) :: CUTCELL_TMP
85 LOGICAL :: bFOUND
86
87
88
91 ncell = nbcut
92
93 if(itask==0)then
96 write (*,fmt='(A,I10,A1,I1)') "destroying cell", ixs(11,ie),".",icell_target
97 endif
98 endif
99
100 IF(ncell==0 .OR. (nbcut>1.AND.icell_target==9) )THEN
101 print *,
"**error inter22 : unexpected situation, elem id=", ixs(11,
id)
102 ENDIF
103
104 IF(icell_target==9)THEN
105
106
107
108
109
112
114
117
120
121 brick_list(nin,ib)%POLY(1)%FACE(1:6)%NumPOINT = 4
122 brick_list(nin,ib)%POLY(9)%FACE(1:6)%NumPOINT = 0
123
124 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Adjacent_Cell(1) = 0
125 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Adjacent_Cell(2) = 0
126 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Adjacent_Cell(3) = 0
127 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Adjacent_Cell(4) = 0
128 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Adjacent_Cell(5) = 0
129
130 brick_list(nin,ib)%POLY(9)%FACE(1:6)%NAdjCell = 0
131 brick_list(nin,ib)%POLY(1)%ListNodID(1:8) = (/1,2,3,4,5,6,7,8/)
134
136
137 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Surf = zero
138
145 brick_list(nin,ib)%SECTYPE(1) =
'REMOVED 0-CELL'
146
147 brick_list(nin,ib)%POLY(1)%WhereIsMain(1:2) = 0
149 brick_list(nin,ib)%POLY(1)%WhereIsMain(4) = ib
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173 ELSEIF(nbcut==1 .AND. icell_target==1)THEN
174
175
176
177
178
179
181
183
185
188
191
192 brick_list(nin,ib)%POLY(1)%FACE(1:6)%NumPOINT = 4
193 brick_list(nin,ib)%POLY(9)%FACE(1:6)%NumPOINT = 0
194
195 brick_list(nin,ib)%POLY(1)%WhereIsMain(1:2) = 0
197 brick_list(nin,ib)%POLY(1)%WhereIsMain(4) = ib
198
199 DO k=1,6
200 brick_list(nin,ib)%POLY(1)%FACE(k)%Adjacent_Cell(1) =
brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(1)
201 brick_list(nin,ib)%POLY(1)%FACE(k)%Adjacent_Cell(2) =
brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(2)
202 brick_list(nin,ib)%POLY(1)%FACE(k)%Adjacent_Cell(3) =
brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(3)
205 ENDDO
206
207 DO k=1,6
208 brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(1) = 0
209 brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(2) = 0
210 brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(3) = 0
211 brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(4) = 0
212 brick_list(nin,ib)%POLY(9)%FACE(k)%Adjacent_Cell(5) = 0
213 ENDDO
214
216 brick_list(nin,ib)%POLY(9)%FACE(1:6)%NAdjCell = 0
217
218 brick_list(nin,ib)%POLY(1)%ListNodID(1:8) = (/1,2,3,4,5,6,7,8/)
220
223
225
226 brick_list(nin,ib)%POLY(9)%FACE(1:6)%Surf = zero
227
234
236
237 brick_list(nin,ib)%SECTYPE(1) =
'REMOVED 0-CELL'
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259 ELSE
260
261
262
263
264
265
266
267
268
269
270 face_cell(1:6) =
brick_list(nin,ib)%POLY(icell_target)%FACE(1:6)%Surf
271 numnodes_cell =
brick_list(nin,ib)%POLY(icell_target)%NumNOD
272 numintp =
brick_list(nin,ib)%POLY(icell_target)%NumPOINT - numnodes_cell
273 numpoint_face(1:6) =
brick_list(nin,ib)%POLY(icell_target)%FACE(1:6)%NumPOINT
274 listnodid(1:8) =
brick_list(nin,ib)%POLY(icell_target)%ListNodID(1:8)
275
276 icell = icell_target - 1
277
278 DO WHILE (icell<=ncell)
279 icell = icell +1
280 IF (icell>=ncell)EXIT
285 DO k=1,6
286 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(1) =
brick_list(nin,ib)%POLY(icell+1)%FACE(k)%Adjacent_Cell
287 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(2) =
brick_list(nin,ib)%POLY(icell+1)%FACE(k)%Adjacent_Cell(2)
288 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(3) =
brick_list(nin,ib)%POLY(icell+1)%FACE(k)%Adjacent_Cell
289 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(4) =
brick_list(nin,ib)%POLY(icell+1)%FACE(k)%Adjacent_Cell
290 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(5) =
brick_list(nin,ib)%POLY(icell+1)%FACE(k)%Adjacent_Cell
291 ENDDO
292 brick_list(nin,ib)%POLY(icell)%FACE(1)%NAdjCell =
brick_list(nin,ib)%POLY(icell+1)%FACE(1)%NAdjCell
303 brick_list(nin,ib)%POLY(icell)%CellCENTER(1:3) =
brick_list(nin,ib)%POLY(icell+1)%CellCENTER(1:3)
304 enddo
305
306 icell = nbcut
310 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%NumPOINT = 0
311 DO k=1,6
312 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(1) = 0
313 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(2) = 0
314 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(3) = 0
315 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(4) = 0
316 brick_list(nin,ib)%POLY(icell)%FACE(k)%Adjacent_Cell(5) = 0
317 ENDDO
318 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%NAdjCell = 0
319 brick_list(nin,ib)%POLY(icell)%ListNodID(1:8) = 0
321 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Surf = zero
322 brick_list(nin,ib)%POLY(icell)%FACE0%Surf = zero
327 brick_list(nin,ib)%PCUT(icell)%P(1:3,1:6) = zero
329 brick_list(nin,ib)%SECTYPE(icell) =
'REMOVED 0-CELL'
330
332 DO inod=1,8
333 IF(
brick_list(nin,ib)%NODE(inod)%WhichCell==icell_target)
brick_list(nin,ib)%NODE(inod)%WhichCell=9
334 ENDDO
335 DO i=1,6
336
337 brick_list(nin,ib)%POLY(9)%FACE(i)%Surf =
brick_list(nin,ib)%POLY(9)%FACE(i)%Surf + face_cell(i)
338 ENDDO
342 DO i=1,6
343 brick_list(nin,ib)%POLY(9)%FACE(i)%NumPOINT =
brick_list(nin,ib)%POLY(9)%FACE(i)%NumPOINT + numpoint_face
344 ENDDO
345 brick_list(nin,ib)%POLY(9)%ListNodID(nlistnod9+1:8) = listnodid(1:numnodes_cell)
346
347
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371 ENDIF
372
373
374
type(brick_entity), dimension(:,:), allocatable, target brick_list