@@ -4121,11 +4121,13 @@ SUBROUTINE GET_EXT_INB_CUTFACES_TO_CFACE
41214121
41224122! Local Variables:
41234123INTEGER :: ICF, CFACE_INDEX_LOCAL, SURF_INDEX
4124+ INTEGER :: IVENT
41244125REAL(EB):: ADDMAT(IAXIS:KAXIS,LOW_IND:HIGH_IND)
41254126
41264127! GET_CUTCELLS_VERBOSE variables:
41274128INTEGER, ALLOCATABLE, DIMENSION(:) :: NCFACE_BY_MESH
41284129
4130+ TYPE(VENTS_TYPE), POINTER :: VT
41294131TYPE(CFACE_TYPE), POINTER :: CFA
41304132
41314133IF(GET_CUTCELLS_VERBOSE) CALL CPU_TIME(CPUTIME_START)
@@ -4308,10 +4310,50 @@ SUBROUTINE GET_EXT_INB_CUTFACES_TO_CFACE
43084310 MESHES(NM)%N_INTERNAL_CFACE_CELLS = CFACE_INDEX_LOCAL - MESHES(NM)%INTERNAL_CFACE_CELLS_LB
43094311ENDDO MESH_LOOP_1
43104312
4313+ ! Second loop, apply VENTS to change SURF_ID associated with CFACEs:
4314+ MESH_LOOP_2 : DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
4315+ CALL POINT_TO_MESH(NM)
4316+
4317+ ! ! Currently : Modify CFACE SURF_INDEX with VENT information: This needs more development.
4318+
4319+ VENT_LOOP : DO IVENT=1,MESHES(NM)%N_VENT
4320+ VT => VENTS(IVENT)
4321+ IF(.NOT.VT%GEOM) CYCLE VENT_LOOP ! Do not apply vent to Geometries.
4322+
4323+ ! This test is a simplified test for VENTS changing the CFACE SURF_ID to VENT SURF_ID for all CFACEs whose
4324+ ! centroid locations lay within the frame of the IOR grid aligned VENT:
4325+ ADDMAT = 0._EB;
4326+ SELECT CASE(ABS(VT%IOR))
4327+ CASE(IAXIS)
4328+ ADDMAT(IAXIS,LOW_IND) = -(XF_MAX-XS_MIN) ! -DX(VT%I1) Set normal size to 2 times domain size.
4329+ ADDMAT(IAXIS,HIGH_IND) = (XF_MAX-XS_MIN) ! DX(VT%I2) XF_MAX, etc. defined in cons.f90.
4330+ CASE(JAXIS)
4331+ ADDMAT(JAXIS,LOW_IND) = -(YF_MAX-YS_MIN) ! -DY(VT%J1)
4332+ ADDMAT(JAXIS,HIGH_IND) = (YF_MAX-YS_MIN) ! DY(VT%J2)
4333+ CASE(KAXIS)
4334+ ADDMAT(KAXIS,LOW_IND) = -(ZF_MAX-ZS_MIN) ! -DZ(VT%K1)
4335+ ADDMAT(KAXIS,HIGH_IND) = (ZF_MAX-ZS_MIN) ! DZ(VT%K2)
4336+ END SELECT
4337+ ! CFACE Loop to modify SURF_INDEX in INTERNAL_CFACE_CELLS:
4338+ CFACE_LOOP_2 : DO CFACE_INDEX_LOCAL=INTERNAL_CFACE_CELLS_LB+1,INTERNAL_CFACE_CELLS_LB+N_INTERNAL_CFACE_CELLS
4339+ CFA => CFACE(CFACE_INDEX_LOCAL)
4340+ BC => BOUNDARY_COORD(CFA%BC_INDEX)
4341+ IF (BC%X < X(VT%I1)+ADDMAT(IAXIS,LOW_IND )) CYCLE CFACE_LOOP_2
4342+ IF (BC%X > X(VT%I2)+ADDMAT(IAXIS,HIGH_IND)) CYCLE CFACE_LOOP_2
4343+ IF (BC%Y < Y(VT%J1)+ADDMAT(JAXIS,LOW_IND )) CYCLE CFACE_LOOP_2
4344+ IF (BC%Y > Y(VT%J2)+ADDMAT(JAXIS,HIGH_IND)) CYCLE CFACE_LOOP_2
4345+ IF (BC%Z < Z(VT%K1)+ADDMAT(KAXIS,LOW_IND )) CYCLE CFACE_LOOP_2
4346+ IF (BC%Z > Z(VT%K2)+ADDMAT(KAXIS,HIGH_IND)) CYCLE CFACE_LOOP_2
4347+ CFA%VENT_INDEX = IVENT
4348+ CFA%SURF_INDEX = VT%SURF_INDEX
4349+ ENDDO CFACE_LOOP_2
4350+ ENDDO VENT_LOOP
4351+ ENDDO MESH_LOOP_2
43114352! - At this pont all final values of SURF_INDEX have been given to CFACEs.
43124353
43134354! Third loop, 1. Compute final FDS area integrals by SURF_ID and GEOM.
4314- ! 2. Compute input areas by SURF_ID and GEOM. First sum over GEOM FACES SURF_IDs.
4355+ ! 2. Compute input areas by SURF_ID and GEOM. First sum over GEOM FACES SURF_IDs,
4356+ ! then VENTS input surfaces are assigned to corresponding GEOMs and SURF_IDs if present (VENTs take precedence).
43154357IF(N_GEOMETRY>0) THEN
43164358 ALLOCATE(FDS_AREA_GEOM(0:N_SURF,N_GEOMETRY)); FDS_AREA_GEOM = 0._EB
43174359ENDIF
@@ -8835,16 +8877,15 @@ SUBROUTINE INIT_CFACE_CELL(NM,ICF,IFACE,CFACE_INDEX,SURF_INDEX,STAGE_FLG,IS_INB,
88358877 INS_INB_COND_1 : IF (IS_INB) THEN
88368878 B1%VEL_ERR_NEW=CF%VEL(IFACE) - 0._EB ! Assumes zero velocity of solid.
88378879
8838- IBOD = CF%BODTRI(1,IFACE)
8839- IWSEL = CF%BODTRI(2,IFACE)
8840-
88418880 ! Normal to cut-face:
88428881 V2(IAXIS:KAXIS) = CF%XYZVERT(IAXIS:KAXIS,CF%CFELEM(2,IFACE))-CF%XYZCEN(IAXIS:KAXIS,IFACE)
88438882 V3(IAXIS:KAXIS) = CF%XYZVERT(IAXIS:KAXIS,CF%CFELEM(3,IFACE))-CF%XYZCEN(IAXIS:KAXIS,IFACE)
88448883 CALL CROSS_PRODUCT(BC%NVEC(IAXIS:KAXIS),V2,V3)
88458884 IF(NORM2(BC%NVEC)>TWO_EPSILON_EB .AND. CF%CFACE_ORIGIN(IFACE)==BLOCKED_SPLIT_CELL) THEN
88468885 BC%NVEC(IAXIS:KAXIS) = BC%NVEC(IAXIS:KAXIS)/NORM2(BC%NVEC)
88478886 ELSE
8887+ IBOD =CF%BODTRI(1,IFACE)
8888+ IWSEL=CF%BODTRI(2,IFACE)
88488889 BC%NVEC(IAXIS:KAXIS) = GEOMETRY(IBOD)%FACES_NORMAL(IAXIS:KAXIS,IWSEL)
88498890 ENDIF
88508891 X1AXIS = MAXLOC(ABS(BC%NVEC(IAXIS:KAXIS)),DIM=1)
@@ -8878,6 +8919,7 @@ SUBROUTINE INIT_CFACE_CELL(NM,ICF,IFACE,CFACE_INDEX,SURF_INDEX,STAGE_FLG,IS_INB,
88788919 ! External mesh boundary CFACES inherit the underlaying WALL type.
88798920 CFA%BOUNDARY_TYPE = WC%BOUNDARY_TYPE
88808921 CFA%NODE_INDEX = SURFACE(WC%SURF_INDEX)%NODE_INDEX
8922+ CFA%VENT_INDEX = WC%VENT_INDEX
88818923
88828924 BC%II = WC_BC%II
88838925 BC%JJ = WC_BC%JJ
@@ -23714,10 +23756,10 @@ SUBROUTINE READ_GEOM
2371423756
2371523757DEALLOCATE(GEOM_LINE)
2371623758
23717- CC_IBM = .TRUE.
23718-
2371923759IF( (T_END-T_BEGIN) < TWO_EPSILON_EB) RETURN
2372023760
23761+ CC_IBM = .TRUE.
23762+
2372123763! If unstructured projection defined set Pressure solver on unstructured grid.
2372223764IF (PRES_FLAG/=UGLMAT_FLAG) THEN
2372323765 PRES_METHOD = 'ULMAT'
0 commit comments