Skip to content

Commit 1f4e380

Browse files
Merge pull request #16238 from marcosvanella/master
FDS Source : Block special cut-cells in mesh corner edges.
2 parents 6898da0 + 3831e63 commit 1f4e380

1 file changed

Lines changed: 46 additions & 2 deletions

File tree

Source/geom.f90

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -731,7 +731,7 @@ SUBROUTINE SET_CUTCELLS_3D
731731
REAL(EB), DIMENSION(MAX_DIM) :: PLNORMAL
732732
INTEGER, DIMENSION(MAX_DIM) :: INDX1
733733
REAL(EB) :: X1PLN, X3RAY
734-
LOGICAL :: TRI_ONPLANE_ONLY, RAYTRACE_X2_ONLY
734+
LOGICAL :: TRI_ONPLANE_ONLY, RAYTRACE_X2_ONLY, MESH_BOUNDARY_FACE
735735
LOGICAL, SAVE :: FIRST_CALL = .TRUE.
736736
INTEGER :: NCUTFACE_IAXIS, NCUTFACE_JAXIS, NCUTFACE_KAXIS, ICE1, ICF1, NFACE, IERR, &
737737
NCUTEDGE_IBCC, NCUTEDGE_IBCF
@@ -1401,7 +1401,6 @@ SUBROUTINE SET_CUTCELLS_3D
14011401
ENDIF
14021402
ENDDO
14031403

1404-
14051404
IF (ONE_CC_PER_CARTESIAN_CELL) THEN
14061405
! Here Block all cells that have volume less (or equal) than the first largest cell found.
14071406
DO ICC1=1,MESHES(NM)%N_CUTCELL_MESH+MESHES(NM)%N_GCCUTCELL_MESH
@@ -1540,6 +1539,51 @@ SUBROUTINE SET_CUTCELLS_3D
15401539
K=K+1
15411540
ENDDO
15421541
ENDDO
1542+
1543+
! Block cells trapped against a mesh boundary whose only same-mesh gas opening is a small cut-face.
1544+
DO ICC1=1,MESHES(NM)%N_CUTCELL_MESH+MESHES(NM)%N_GCCUTCELL_MESH
1545+
CC=>MESHES(NM)%CUT_CELL(ICC1)
1546+
DO J=1,CC%NCELL
1547+
IF(CC%NOADVANCE(J)/=NOT_BLOCKED) CYCLE
1548+
SUM_FACE=0; SUM_CCELL=0; ICF1=0
1549+
DO I=1,CC%CCELEM(1,J)
1550+
IFACE = CC%CCELEM(I+1,J)
1551+
SELECT CASE(CC%FACE_LIST(1,IFACE))
1552+
CASE(CC_FTYPE_CFGAS,CC_FTYPE_RCGAS)
1553+
SIDE = CC%FACE_LIST(2,IFACE)
1554+
X1AXIS = CC%FACE_LIST(3,IFACE)
1555+
IIF = CC%IJK(IAXIS) + ADDI(SIDE,X1AXIS)
1556+
JJF = CC%IJK(JAXIS) + ADDJ(SIDE,X1AXIS)
1557+
KKF = CC%IJK(KAXIS) + ADDK(SIDE,X1AXIS)
1558+
MESH_BOUNDARY_FACE = .FALSE.
1559+
SELECT CASE(X1AXIS)
1560+
CASE(IAXIS); MESH_BOUNDARY_FACE = IIF==0 .OR. IIF==M%IBAR
1561+
CASE(JAXIS); MESH_BOUNDARY_FACE = JJF==0 .OR. JJF==M%JBAR
1562+
CASE(KAXIS); MESH_BOUNDARY_FACE = KKF==0 .OR. KKF==M%KBAR
1563+
END SELECT
1564+
IF(MESH_BOUNDARY_FACE) CYCLE
1565+
SELECT CASE(CC%FACE_LIST(1,IFACE))
1566+
CASE(CC_FTYPE_CFGAS)
1567+
SUM_FACE = SUM_FACE+1
1568+
ICF1 = CC%FACE_LIST(4,IFACE)
1569+
CASE(CC_FTYPE_RCGAS)
1570+
SUM_CCELL = SUM_CCELL+1
1571+
END SELECT
1572+
END SELECT
1573+
ENDDO
1574+
IF(SUM_FACE/=1 .OR. SUM_CCELL>0) CYCLE
1575+
CF => M%CUT_FACE(ICF1)
1576+
IIF=CF%IJK(IAXIS); JJF=CF%IJK(JAXIS); KKF=CF%IJK(KAXIS)
1577+
SELECT CASE(CF%IJK(KAXIS+1))
1578+
CASE(IAXIS); ACRT = DY(JJF)*DZ(KKF)
1579+
CASE(JAXIS); ACRT = DZ(KKF)*DX(IIF)
1580+
CASE(KAXIS); ACRT = DX(IIF)*DY(JJF)
1581+
END SELECT
1582+
IF(SUM(CF%AREA(1:CF%NFACE))/ACRT>=CCVOL_LINK) CYCLE
1583+
CC%NOADVANCE(J)=BLOCKED_CAVITY_CELL
1584+
K=K+1
1585+
ENDDO
1586+
ENDDO
15431587
IF (K>0) THEN
15441588
CALL BLOCK_SMALL_UNLINKED_CUTCELLS(NM,SUM_CCELL)
15451589
IF(SUM_CCELL>0) THEN ! Rebuild incidences and cell linking information:

0 commit comments

Comments
 (0)