Skip to content

Commit 01ee4c9

Browse files
committed
FDS Source: Issue #13963. Fix viz problem for vents
1 parent fe2fbee commit 01ee4c9

File tree

3 files changed

+54
-6
lines changed

3 files changed

+54
-6
lines changed

Source/dump.f90

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2288,11 +2288,13 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
22882288
VT%BOUNDARY_TYPE==PERIODIC_BOUNDARY .OR. &
22892289
VT%TYPE_INDICATOR==2) THEN ! Render this vent invisible in Smokeview
22902290
WHERE (VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX)==0) VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX) = -1
2291-
ELSE ! Make solid color vents invisible (they will be replaced by dummy vents)
2291+
ELSE ! Tag user-specified vents
22922292
WHERE (VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX)==0) VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX) = N
2293-
VT%COLOR_INDICATOR = 8
2294-
VT%TYPE_INDICATOR = -2
2295-
VT%TRANSPARENCY = 0._EB
2293+
IF (VT%OBST_INDEX==0) THEN ! a dummy vent will be created and drawn rather than the actual vent.
2294+
VT%COLOR_INDICATOR = 8
2295+
VT%TYPE_INDICATOR = -2
2296+
VT%TRANSPARENCY = 0._EB
2297+
ENDIF
22962298
ENDIF
22972299

22982300
ENDDO VENT_LOOP
@@ -2306,9 +2308,11 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
23062308
XX = M%X(0) - 0.001_EB*M%DX(0)
23072309
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
23082310
IF (NOM>0 .AND. VENT_INDICES(J,K,1)<1) VENT_INDICES(J,K,1)=-1
2311+
IF (M%WALL(M%CELL(M%CELL_INDEX(1,J,K))%WALL_INDEX(-1))%OBST_INDEX>0) VENT_INDICES(J,K,1)=-1
23092312
XX = M%X(M%IBAR) + 0.001_EB*M%DX(M%IBAR)
23102313
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
23112314
IF (NOM>0 .AND. VENT_INDICES(J,K,2)<1) VENT_INDICES(J,K,2)=-1
2315+
IF (M%WALL(M%CELL(M%CELL_INDEX(M%IBAR,J,K))%WALL_INDEX(1))%OBST_INDEX>0) VENT_INDICES(J,K,2)=-1
23122316
ENDDO
23132317
ENDDO
23142318

@@ -2319,9 +2323,11 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
23192323
YY = M%Y(0) - 0.001_EB*M%DY(0)
23202324
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
23212325
IF (NOM>0 .AND. VENT_INDICES(I,K,3)<1) VENT_INDICES(I,K,3)=-1
2326+
IF (M%WALL(M%CELL(M%CELL_INDEX(I,1,K))%WALL_INDEX(-2))%OBST_INDEX>0) VENT_INDICES(I,K,3)=-1
23222327
YY = M%Y(M%JBAR) + 0.001_EB*M%DY(M%JBAR)
23232328
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
23242329
IF (NOM>0 .AND. VENT_INDICES(I,K,4)<1) VENT_INDICES(I,K,4)=-1
2330+
IF (M%WALL(M%CELL(M%CELL_INDEX(I,M%JBAR,K))%WALL_INDEX(2))%OBST_INDEX>0) VENT_INDICES(I,K,4)=-1
23252331
ENDDO
23262332
ENDDO
23272333

@@ -2332,9 +2338,11 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
23322338
ZZ = M%Z(0) - 0.001_EB*M%DZ(0)
23332339
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
23342340
IF (NOM>0 .AND. VENT_INDICES(I,J,5)<1) VENT_INDICES(I,J,5)=-1
2341+
IF (M%WALL(M%CELL(M%CELL_INDEX(I,J,1))%WALL_INDEX(-3))%OBST_INDEX>0) VENT_INDICES(I,J,5)=-1
23352342
ZZ = M%Z(M%KBAR) + 0.001_EB*M%DZ(M%KBAR)
23362343
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
23372344
IF (NOM>0 .AND. VENT_INDICES(I,J,6)<1) VENT_INDICES(I,J,6)=-1
2345+
IF (M%WALL(M%CELL(M%CELL_INDEX(I,J,M%KBAR))%WALL_INDEX(3))%OBST_INDEX>0) VENT_INDICES(I,J,6)=-1
23382346
ENDDO
23392347
ENDDO
23402348

Source/init.f90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2956,6 +2956,7 @@ SUBROUTINE INIT_WALL_CELL(NM,I,J,K,OBST_INDEX,IW,IOR,SURF_INDEX,IERR,TT)
29562956
VENT_INDEX_FOUND = N
29572957
VENT_INDEX = N
29582958
SURF_INDEX_NEW = VT%SURF_INDEX
2959+
VT%OBST_INDEX = OBST_INDEX
29592960

29602961
ENDDO VENT_SEARCH_LOOP
29612962

Source/read.f90

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11704,13 +11704,13 @@ SUBROUTINE READ_VENT
1170411704
USE MISC_FUNCTIONS, ONLY: PROCESS_MESH_NEIGHBORHOOD
1170511705

1170611706
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,&
11707-
N_ORIGINAL_VENTS,IC0,IC1
11707+
N_ORIGINAL_VENTS,IC0,IC1,IC
1170811708
REAL(EB) :: SPREAD_RATE,TRANSPARENCY,XYZ(3),TMP_EXTERIOR,DYNAMIC_PRESSURE,XB_USER(6),XB_MESH(6), &
1170911709
REYNOLDS_STRESS(3,3),L_EDDY,VEL,VEL_RMS,L_EDDY_IJ(3,3),UVW(3),RADIUS
1171011710
CHARACTER(LABEL_LENGTH) :: ID,DEVC_ID,CTRL_ID,SURF_ID,PRESSURE_RAMP,TMP_EXTERIOR_RAMP,MULT_ID,OBST_ID
1171111711
CHARACTER(25) :: COLOR
1171211712
TYPE(MULTIPLIER_TYPE), POINTER :: MR
11713-
LOGICAL :: REJECT_VENT,OUTLINE,GEOM,SOLID_FOUND,AREA_ADJUST
11713+
LOGICAL :: REJECT_VENT,OUTLINE,GEOM,SOLID_FOUND,AREA_ADJUST,BLOCKED
1171411714
TYPE IMPLICIT_VENT_TYPE
1171511715
REAL(EB) :: XB(6)
1171611716
INTEGER, DIMENSION(3) :: RGB=-1
@@ -11961,6 +11961,45 @@ SUBROUTINE READ_VENT
1196111961
IF (K1>KBAR .OR. K2<0) REJECT_VENT=.TRUE.
1196211962
ENDIF
1196311963

11964+
! Look for vents that are completely blocked by non-removable obstructions
11965+
11966+
IF (I1==I2 .AND. (I1==0 .OR. I2==IBAR)) THEN
11967+
BLOCKED = .TRUE.
11968+
DO K=K1+1,K2
11969+
DO J=J1+1,J2
11970+
IC = CELL_INDEX(I1+1,J,K)
11971+
IF (I1==0 .AND. (.NOT.CELL(IC)%SOLID.OR.OBSTRUCTION(CELL(IC)%OBST_INDEX)%REMOVABLE)) BLOCKED = .FALSE.
11972+
IC = CELL_INDEX(I2,J,K)
11973+
IF (I2==IBAR .AND. (.NOT.CELL(IC)%SOLID.OR.OBSTRUCTION(CELL(IC)%OBST_INDEX)%REMOVABLE)) BLOCKED = .FALSE.
11974+
ENDDO
11975+
ENDDO
11976+
IF (BLOCKED) REJECT_VENT = .TRUE.
11977+
ENDIF
11978+
IF (J1==J2 .AND. (J1==0 .OR. J2==JBAR)) THEN
11979+
BLOCKED = .TRUE.
11980+
DO K=K1+1,K2
11981+
DO I=I1+1,I2
11982+
IC = CELL_INDEX(I,J1+1,K)
11983+
IF (J1==0 .AND. (.NOT.CELL(IC)%SOLID.OR.OBSTRUCTION(CELL(IC)%OBST_INDEX)%REMOVABLE)) BLOCKED = .FALSE.
11984+
IC = CELL_INDEX(I,J2,K)
11985+
IF (J2==JBAR .AND. (.NOT.CELL(IC)%SOLID.OR.OBSTRUCTION(CELL(IC)%OBST_INDEX)%REMOVABLE)) BLOCKED = .FALSE.
11986+
ENDDO
11987+
ENDDO
11988+
IF (BLOCKED) REJECT_VENT = .TRUE.
11989+
ENDIF
11990+
IF (K1==K2 .AND. (K1==0 .OR. K2==KBAR)) THEN
11991+
BLOCKED = .TRUE.
11992+
DO J=J1+1,J2
11993+
DO I=I1+1,I2
11994+
IC = CELL_INDEX(I,J,K1+1)
11995+
IF (K1==0 .AND. (.NOT.CELL(IC)%SOLID.OR.OBSTRUCTION(CELL(IC)%OBST_INDEX)%REMOVABLE)) BLOCKED = .FALSE.
11996+
IC = CELL_INDEX(I,J,K2)
11997+
IF (K2==KBAR .AND. (.NOT.CELL(IC)%SOLID.OR.OBSTRUCTION(CELL(IC)%OBST_INDEX)%REMOVABLE)) BLOCKED = .FALSE.
11998+
ENDDO
11999+
ENDDO
12000+
IF (BLOCKED) REJECT_VENT = .TRUE.
12001+
ENDIF
12002+
1196412003
! If the VENT is rejected, cycle
1196512004

1196612005
IF (REJECT_VENT) THEN

0 commit comments

Comments
 (0)