Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions Source/dump.f90
Original file line number Diff line number Diff line change
Expand Up @@ -2288,11 +2288,13 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
VT%BOUNDARY_TYPE==PERIODIC_BOUNDARY .OR. &
VT%TYPE_INDICATOR==2) THEN ! Render this vent invisible in Smokeview
WHERE (VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX)==0) VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX) = -1
ELSE ! Make solid color vents invisible (they will be replaced by dummy vents)
ELSE ! Tag user-specified vents
WHERE (VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX)==0) VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX) = N
VT%COLOR_INDICATOR = 8
VT%TYPE_INDICATOR = -2
VT%TRANSPARENCY = 0._EB
IF (VT%OBST_INDEX==0) THEN ! a dummy vent will be created and drawn rather than the actual vent.
VT%COLOR_INDICATOR = 8
VT%TYPE_INDICATOR = -2
VT%TRANSPARENCY = 0._EB
ENDIF
ENDIF

ENDDO VENT_LOOP
Expand All @@ -2306,9 +2308,11 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
XX = M%X(0) - 0.001_EB*M%DX(0)
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
IF (NOM>0 .AND. VENT_INDICES(J,K,1)<1) VENT_INDICES(J,K,1)=-1
IF (M%WALL(M%CELL(M%CELL_INDEX(1,J,K))%WALL_INDEX(-1))%OBST_INDEX>0) VENT_INDICES(J,K,1)=-1
XX = M%X(M%IBAR) + 0.001_EB*M%DX(M%IBAR)
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
IF (NOM>0 .AND. VENT_INDICES(J,K,2)<1) VENT_INDICES(J,K,2)=-1
IF (M%WALL(M%CELL(M%CELL_INDEX(M%IBAR,J,K))%WALL_INDEX(1))%OBST_INDEX>0) VENT_INDICES(J,K,2)=-1
ENDDO
ENDDO

Expand All @@ -2319,9 +2323,11 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
YY = M%Y(0) - 0.001_EB*M%DY(0)
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
IF (NOM>0 .AND. VENT_INDICES(I,K,3)<1) VENT_INDICES(I,K,3)=-1
IF (M%WALL(M%CELL(M%CELL_INDEX(I,1,K))%WALL_INDEX(-2))%OBST_INDEX>0) VENT_INDICES(I,K,3)=-1
YY = M%Y(M%JBAR) + 0.001_EB*M%DY(M%JBAR)
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
IF (NOM>0 .AND. VENT_INDICES(I,K,4)<1) VENT_INDICES(I,K,4)=-1
IF (M%WALL(M%CELL(M%CELL_INDEX(I,M%JBAR,K))%WALL_INDEX(2))%OBST_INDEX>0) VENT_INDICES(I,K,4)=-1
ENDDO
ENDDO

Expand All @@ -2332,9 +2338,11 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
ZZ = M%Z(0) - 0.001_EB*M%DZ(0)
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
IF (NOM>0 .AND. VENT_INDICES(I,J,5)<1) VENT_INDICES(I,J,5)=-1
IF (M%WALL(M%CELL(M%CELL_INDEX(I,J,1))%WALL_INDEX(-3))%OBST_INDEX>0) VENT_INDICES(I,J,5)=-1
ZZ = M%Z(M%KBAR) + 0.001_EB*M%DZ(M%KBAR)
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
IF (NOM>0 .AND. VENT_INDICES(I,J,6)<1) VENT_INDICES(I,J,6)=-1
IF (M%WALL(M%CELL(M%CELL_INDEX(I,J,M%KBAR))%WALL_INDEX(3))%OBST_INDEX>0) VENT_INDICES(I,J,6)=-1
ENDDO
ENDDO

Expand Down
1 change: 1 addition & 0 deletions Source/init.f90
Original file line number Diff line number Diff line change
Expand Up @@ -2956,6 +2956,7 @@ SUBROUTINE INIT_WALL_CELL(NM,I,J,K,OBST_INDEX,IW,IOR,SURF_INDEX,IERR,TT)
VENT_INDEX_FOUND = N
VENT_INDEX = N
SURF_INDEX_NEW = VT%SURF_INDEX
VT%OBST_INDEX = OBST_INDEX

ENDDO VENT_SEARCH_LOOP

Expand Down
43 changes: 41 additions & 2 deletions Source/read.f90
Original file line number Diff line number Diff line change
Expand Up @@ -11704,13 +11704,13 @@ SUBROUTINE READ_VENT
USE MISC_FUNCTIONS, ONLY: PROCESS_MESH_NEIGHBORHOOD

INTEGER :: N,N_TOTAL,NM,NNN,IOR,I1,I2,J1,J2,K1,K2,RGB(3),N_EDDY,II,JJ,KK,OBST_INDEX,N_EXPLICIT,N_IMPLICIT_VENTS,I_MODE,&
N_ORIGINAL_VENTS,IC0,IC1
N_ORIGINAL_VENTS,IC0,IC1,IC
REAL(EB) :: SPREAD_RATE,TRANSPARENCY,XYZ(3),TMP_EXTERIOR,DYNAMIC_PRESSURE,XB_USER(6),XB_MESH(6), &
REYNOLDS_STRESS(3,3),L_EDDY,VEL,VEL_RMS,L_EDDY_IJ(3,3),UVW(3),RADIUS
CHARACTER(LABEL_LENGTH) :: ID,DEVC_ID,CTRL_ID,SURF_ID,PRESSURE_RAMP,TMP_EXTERIOR_RAMP,MULT_ID,OBST_ID
CHARACTER(25) :: COLOR
TYPE(MULTIPLIER_TYPE), POINTER :: MR
LOGICAL :: REJECT_VENT,OUTLINE,GEOM,SOLID_FOUND,AREA_ADJUST
LOGICAL :: REJECT_VENT,OUTLINE,GEOM,SOLID_FOUND,AREA_ADJUST,BLOCKED
TYPE IMPLICIT_VENT_TYPE
REAL(EB) :: XB(6)
INTEGER, DIMENSION(3) :: RGB=-1
Expand Down Expand Up @@ -11961,6 +11961,45 @@ SUBROUTINE READ_VENT
IF (K1>KBAR .OR. K2<0) REJECT_VENT=.TRUE.
ENDIF

! Look for vents that are completely blocked by non-removable obstructions

IF (I1==I2 .AND. (I1==0 .OR. I2==IBAR)) THEN
BLOCKED = .TRUE.
DO K=K1+1,K2
DO J=J1+1,J2
IC = CELL_INDEX(I1+1,J,K)
IF (I1==0 .AND. (.NOT.CELL(IC)%SOLID.OR.OBSTRUCTION(CELL(IC)%OBST_INDEX)%REMOVABLE)) BLOCKED = .FALSE.
IC = CELL_INDEX(I2,J,K)
IF (I2==IBAR .AND. (.NOT.CELL(IC)%SOLID.OR.OBSTRUCTION(CELL(IC)%OBST_INDEX)%REMOVABLE)) BLOCKED = .FALSE.
ENDDO
ENDDO
IF (BLOCKED) REJECT_VENT = .TRUE.
ENDIF
IF (J1==J2 .AND. (J1==0 .OR. J2==JBAR)) THEN
BLOCKED = .TRUE.
DO K=K1+1,K2
DO I=I1+1,I2
IC = CELL_INDEX(I,J1+1,K)
IF (J1==0 .AND. (.NOT.CELL(IC)%SOLID.OR.OBSTRUCTION(CELL(IC)%OBST_INDEX)%REMOVABLE)) BLOCKED = .FALSE.
IC = CELL_INDEX(I,J2,K)
IF (J2==JBAR .AND. (.NOT.CELL(IC)%SOLID.OR.OBSTRUCTION(CELL(IC)%OBST_INDEX)%REMOVABLE)) BLOCKED = .FALSE.
ENDDO
ENDDO
IF (BLOCKED) REJECT_VENT = .TRUE.
ENDIF
IF (K1==K2 .AND. (K1==0 .OR. K2==KBAR)) THEN
BLOCKED = .TRUE.
DO J=J1+1,J2
DO I=I1+1,I2
IC = CELL_INDEX(I,J,K1+1)
IF (K1==0 .AND. (.NOT.CELL(IC)%SOLID.OR.OBSTRUCTION(CELL(IC)%OBST_INDEX)%REMOVABLE)) BLOCKED = .FALSE.
IC = CELL_INDEX(I,J,K2)
IF (K2==KBAR .AND. (.NOT.CELL(IC)%SOLID.OR.OBSTRUCTION(CELL(IC)%OBST_INDEX)%REMOVABLE)) BLOCKED = .FALSE.
ENDDO
ENDDO
IF (BLOCKED) REJECT_VENT = .TRUE.
ENDIF

! If the VENT is rejected, cycle

IF (REJECT_VENT) THEN
Expand Down
Loading