Skip to content

Commit 9bdd58d

Browse files
authored
Merge pull request #13745 from mcgratta/master
FDS Source: Streamline CONNECTED_ZONES and PSUM, USUM, DSUM
2 parents 9625908 + 3064b74 commit 9bdd58d

File tree

6 files changed

+84
-114
lines changed

6 files changed

+84
-114
lines changed

Source/cons.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ MODULE GLOBAL_CONSTANTS
583583

584584
! Divergence Arrays
585585

586-
REAL(EB), ALLOCATABLE, DIMENSION(:,:) :: DSUM,USUM,PSUM
586+
REAL(EB), ALLOCATABLE, DIMENSION(:) :: DSUM,USUM,PSUM
587587

588588
! Level Set vegetation fire spread
589589

@@ -633,7 +633,7 @@ MODULE GLOBAL_CONSTANTS
633633
! Number of initial value, pressure zone, and multiplier derived types
634634

635635
INTEGER :: N_INIT,N_ZONE,N_MULT,N_MOVE
636-
LOGICAL, ALLOCATABLE, DIMENSION(:,:,:) :: CONNECTED_ZONES
636+
LOGICAL, ALLOCATABLE, DIMENSION(:,:) :: CONNECTED_ZONES
637637
INTEGER, ALLOCATABLE, DIMENSION(:,:) :: CONNECTED_ZONES_LOC
638638
REAL(EB) :: MINIMUM_ZONE_VOLUME=0._EB
639639
REAL(EB) :: PRESSURE_RELAX_TIME=1._EB

Source/divg.f90

Lines changed: 30 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ SUBROUTINE DIVERGENCE_PART_1(T,DT,NM)
8585

8686
! Determine if pressure ZONEs have merged
8787

88-
IF (N_ZONE>0) CALL MERGE_PRESSURE_ZONES(NM)
88+
IF (N_ZONE>0) CALL MERGE_PRESSURE_ZONES
8989

9090
! Compute normal component of velocity at boundaries, U_NORMAL_S in the PREDICTOR step, U_NORMAL in the CORRECTOR.
9191

@@ -712,10 +712,6 @@ SUBROUTINE DIVERGENCE_PART_1(T,DT,NM)
712712

713713
IF_PRESSURE_ZONES: IF (N_ZONE>0) THEN
714714

715-
USUM(1:N_ZONE,NM) = 0._EB
716-
DSUM(1:N_ZONE,NM) = 0._EB
717-
PSUM(1:N_ZONE,NM) = 0._EB
718-
719715
R_PFCT = 1._EB
720716
DO K=1,KBAR
721717
DO J=1,JBAR
@@ -726,18 +722,18 @@ SUBROUTINE DIVERGENCE_PART_1(T,DT,NM)
726722
IF (IPZ<1) CYCLE
727723
IF (CELL(CELL_INDEX(I,J,K))%SOLID) CYCLE
728724
VC = DX(I)*RC(I)*VC1
729-
DSUM(IPZ,NM) = DSUM(IPZ,NM) + VC*DP(I,J,K)
725+
DSUM(IPZ) = DSUM(IPZ) + VC*DP(I,J,K)
730726
IF (CC_IBM) THEN
731727
R_PFCT = 1._EB
732728
IF (CCVAR(I,J,K,CC_CGSC) == CC_SOLID) THEN
733729
CYCLE
734730
ELSEIF(CCVAR(I,J,K,CC_CGSC) == CC_CUTCFE) THEN
735-
CALL ADD_CUTCELL_PSUM(I,J,K,PBAR_P(K,IPZ),PSUM(IPZ,NM)); CYCLE
731+
CALL ADD_CUTCELL_PSUM(I,J,K,PBAR_P(K,IPZ),PSUM(IPZ)); CYCLE
736732
ELSEIF(CCVAR(I,J,K,CC_UNKZ) > 0) THEN
737-
CALL ADD_LINKEDCELL_PSUM(I,J,K,VC,PBAR_P(K,IPZ),RTRM(I,J,K),PSUM(IPZ,NM)); CYCLE
733+
CALL ADD_LINKEDCELL_PSUM(I,J,K,VC,PBAR_P(K,IPZ),RTRM(I,J,K),PSUM(IPZ)); CYCLE
738734
ENDIF
739735
ENDIF
740-
PSUM(IPZ,NM) = PSUM(IPZ,NM) + VC*(R_PBAR(K,IPZ)*R_PFCT-RTRM(I,J,K))
736+
PSUM(IPZ) = PSUM(IPZ) + VC*(R_PBAR(K,IPZ)*R_PFCT-RTRM(I,J,K))
741737
ENDDO
742738
ENDDO
743739
ENDDO
@@ -752,8 +748,8 @@ SUBROUTINE DIVERGENCE_PART_1(T,DT,NM)
752748
IPZ = B1%PRESSURE_ZONE
753749
IF (IPZ<1) CYCLE WALL_LOOP4
754750
IF (WC%BOUNDARY_TYPE/=SOLID_BOUNDARY) CYCLE WALL_LOOP4
755-
IF (PREDICTOR) USUM(IPZ,NM) = USUM(IPZ,NM) + B1%U_NORMAL_S*B1%AREA
756-
IF (CORRECTOR) USUM(IPZ,NM) = USUM(IPZ,NM) + B1%U_NORMAL *B1%AREA
751+
IF (PREDICTOR) USUM(IPZ) = USUM(IPZ) + B1%U_NORMAL_S*B1%AREA
752+
IF (CORRECTOR) USUM(IPZ) = USUM(IPZ) + B1%U_NORMAL *B1%AREA
757753
ENDDO WALL_LOOP4
758754

759755

@@ -763,8 +759,8 @@ SUBROUTINE DIVERGENCE_PART_1(T,DT,NM)
763759
B1 => BOUNDARY_PROP1(CFA%B1_INDEX)
764760
IPZ = B1%PRESSURE_ZONE
765761
IF (IPZ<1) CYCLE CFACE_LOOP
766-
IF (PREDICTOR) USUM(IPZ,NM) = USUM(IPZ,NM) + B1%U_NORMAL_S*B1%AREA
767-
IF (CORRECTOR) USUM(IPZ,NM) = USUM(IPZ,NM) + B1%U_NORMAL *B1%AREA
762+
IF (PREDICTOR) USUM(IPZ) = USUM(IPZ) + B1%U_NORMAL_S*B1%AREA
763+
IF (CORRECTOR) USUM(IPZ) = USUM(IPZ) + B1%U_NORMAL *B1%AREA
768764
ENDDO CFACE_LOOP
769765

770766

@@ -1104,15 +1100,12 @@ SUBROUTINE SPECIES_ADVECTION(N,U_DOT_DEL_RHO_Z)
11041100
END SUBROUTINE SPECIES_ADVECTION
11051101

11061102

1107-
SUBROUTINE MERGE_PRESSURE_ZONES(NM)
1103+
SUBROUTINE MERGE_PRESSURE_ZONES
11081104

1109-
INTEGER, INTENT(IN) :: NM
11101105
INTEGER :: IW,IPZ,IOPZ
11111106
TYPE(WALL_TYPE), POINTER :: WC
11121107
TYPE(BOUNDARY_COORD_TYPE), POINTER :: BC
11131108

1114-
CONNECTED_ZONES(:,:,NM) = .FALSE.
1115-
11161109
DO IW=1,N_EXTERNAL_WALL_CELLS+N_INTERNAL_WALL_CELLS
11171110
WC=>WALL(IW)
11181111
IF (WC%BOUNDARY_TYPE/=NULL_BOUNDARY .AND. WC%BOUNDARY_TYPE/=OPEN_BOUNDARY .AND. WC%BOUNDARY_TYPE/=INTERPOLATED_BOUNDARY) CYCLE
@@ -1121,15 +1114,15 @@ SUBROUTINE MERGE_PRESSURE_ZONES(NM)
11211114
IPZ = PRESSURE_ZONE(BC%IIG,BC%JJG,BC%KKG)
11221115
IOPZ = PRESSURE_ZONE(BC%II,BC%JJ,BC%KK)
11231116
IF (IW>N_EXTERNAL_WALL_CELLS .AND. IPZ/=IOPZ) THEN
1124-
CONNECTED_ZONES(IOPZ,IPZ,NM) = .TRUE.
1125-
CONNECTED_ZONES(IPZ,IOPZ,NM) = .TRUE.
1117+
CONNECTED_ZONES(IOPZ,IPZ) = .TRUE.
1118+
CONNECTED_ZONES(IPZ,IOPZ) = .TRUE.
11261119
ENDIF
11271120
IF (WC%BOUNDARY_TYPE==OPEN_BOUNDARY) THEN
1128-
CONNECTED_ZONES(0,IPZ,NM) = .TRUE.
1129-
CONNECTED_ZONES(IPZ,0,NM) = .TRUE.
1121+
CONNECTED_ZONES(0,IPZ) = .TRUE.
1122+
CONNECTED_ZONES(IPZ,0) = .TRUE.
11301123
ELSEIF (WC%BOUNDARY_TYPE==INTERPOLATED_BOUNDARY) THEN
1131-
CONNECTED_ZONES(IOPZ,IPZ,NM) = .TRUE.
1132-
CONNECTED_ZONES(IPZ,IOPZ,NM) = .TRUE.
1124+
CONNECTED_ZONES(IOPZ,IPZ) = .TRUE.
1125+
CONNECTED_ZONES(IPZ,IOPZ) = .TRUE.
11331126
ENDIF
11341127
ENDDO
11351128

@@ -1294,36 +1287,36 @@ SUBROUTINE DIVERGENCE_PART_2(DT,NM)
12941287
USUM_ADD = 0._EB
12951288

12961289
DO IPZ=1,N_ZONE
1297-
SUM_P_PSUM = PBAR_P(1,IPZ)*PSUM(IPZ,NM)
1290+
SUM_P_PSUM = PBAR_P(1,IPZ)*PSUM(IPZ)
12981291
OPEN_ZONE = .FALSE.
1299-
SUM_USUM = USUM(IPZ,NM)
1300-
SUM_DSUM = DSUM(IPZ,NM)
1301-
SUM_PSUM = PSUM(IPZ,NM)
1292+
SUM_USUM = USUM(IPZ)
1293+
SUM_DSUM = DSUM(IPZ)
1294+
SUM_PSUM = PSUM(IPZ)
13021295
DO IOPZ=N_ZONE,0,-1
13031296
IF (IOPZ==IPZ) CYCLE
1304-
IF (CONNECTED_ZONES(IPZ,IOPZ,NM)) THEN
1297+
IF (CONNECTED_ZONES(IPZ,IOPZ)) THEN
13051298
IF (IOPZ==0) THEN
13061299
OPEN_ZONE = .TRUE.
13071300
ELSE
1308-
SUM_P_PSUM = SUM_P_PSUM + PBAR_P(1,IOPZ)*PSUM(IOPZ,NM)
1309-
SUM_USUM = SUM_USUM + USUM(IOPZ,NM)
1310-
SUM_DSUM = SUM_DSUM + DSUM(IOPZ,NM)
1311-
SUM_PSUM = SUM_PSUM + PSUM(IOPZ,NM)
1301+
SUM_P_PSUM = SUM_P_PSUM + PBAR_P(1,IOPZ)*PSUM(IOPZ)
1302+
SUM_USUM = SUM_USUM + USUM(IOPZ)
1303+
SUM_DSUM = SUM_DSUM + DSUM(IOPZ)
1304+
SUM_PSUM = SUM_PSUM + PSUM(IOPZ)
13121305
ENDIF
13131306
ENDIF
13141307
ENDDO
13151308
IF (OPEN_ZONE) THEN
13161309
P_EQ = P_0(1)
1317-
USUM_ADD(IPZ) = PSUM(IPZ,NM)*(PBAR_P(1,IPZ)-P_EQ)/PRESSURE_RELAX_TIME + DSUM(IPZ,NM) - USUM(IPZ,NM)
1310+
USUM_ADD(IPZ) = PSUM(IPZ)*(PBAR_P(1,IPZ)-P_EQ)/PRESSURE_RELAX_TIME + DSUM(IPZ) - USUM(IPZ)
13181311
ELSE
13191312
P_EQ = SUM_P_PSUM/SUM_PSUM
1320-
USUM_ADD(IPZ) = PSUM(IPZ,NM)*(PBAR_P(1,IPZ)-P_EQ)/PRESSURE_RELAX_TIME + DSUM(IPZ,NM) - USUM(IPZ,NM) - &
1321-
PSUM(IPZ,NM)*(SUM_DSUM-SUM_USUM)/SUM_PSUM
1313+
USUM_ADD(IPZ) = PSUM(IPZ)*(PBAR_P(1,IPZ)-P_EQ)/PRESSURE_RELAX_TIME + DSUM(IPZ) - USUM(IPZ) - &
1314+
PSUM(IPZ)*(SUM_DSUM-SUM_USUM)/SUM_PSUM
13221315
ENDIF
13231316
ENDDO
13241317

13251318
DO IPZ=1,N_ZONE
1326-
USUM(IPZ,NM) = USUM(IPZ,NM) + USUM_ADD(IPZ)
1319+
USUM(IPZ) = USUM(IPZ) + USUM_ADD(IPZ)
13271320
ENDDO
13281321

13291322
! Compute dP/dt for each pressure ZONE
@@ -1336,7 +1329,7 @@ SUBROUTINE DIVERGENCE_PART_2(DT,NM)
13361329
! Compute change in background pressure
13371330

13381331
DO IPZ=1,N_ZONE
1339-
IF (ABS(PSUM(IPZ,NM)) > TWO_EPSILON_EB) D_PBAR_DT_P(IPZ) = (DSUM(IPZ,NM) - USUM(IPZ,NM))/PSUM(IPZ,NM)
1332+
IF (ABS(PSUM(IPZ)) > TWO_EPSILON_EB) D_PBAR_DT_P(IPZ) = (DSUM(IPZ) - USUM(IPZ))/PSUM(IPZ)
13401333
IF (CORRECTOR) P_ZONE(IPZ)%DPSTAR = D_PBAR_DT_P(IPZ)
13411334
ENDDO
13421335

Source/hvac.f90

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1870,10 +1870,10 @@ SUBROUTINE DPSTARCALC
18701870
PZ => P_ZONE(IPZ)
18711871
IF (PZ%N_DUCTNODES==0) CYCLE
18721872
DPSTAR(IPZ) = P_ZONE(IPZ)%DPSTAR * DT_HV
1873-
PSUM_TOT(IPZ) = PSUM(IPZ,1)
1873+
PSUM_TOT(IPZ) = PSUM(IPZ)
18741874
DO IOPZ = 1,N_ZONE
18751875
IF (IPZ==IOPZ) CYCLE
1876-
IF (CONNECTED_ZONES(IPZ,IOPZ,1)) PSUM_TOT(IPZ) = PSUM_TOT(IPZ) + PSUM(IOPZ,1)
1876+
IF (CONNECTED_ZONES(IPZ,IOPZ)) PSUM_TOT(IPZ) = PSUM_TOT(IPZ) + PSUM(IOPZ)
18771877
ENDDO
18781878
ENDDO
18791879

@@ -1888,7 +1888,7 @@ SUBROUTINE DPSTARCALC
18881888
DO IOPZ = 1, N_ZONE
18891889
IF (IPZ==IOPZ) CYCLE
18901890
IF (P_ZONE(IOPZ)%N_DUCTNODES==0) CYCLE
1891-
IF (CONNECTED_ZONES(IPZ,IOPZ,1)) THEN
1891+
IF (CONNECTED_ZONES(IPZ,IOPZ)) THEN
18921892
IF (P_ZONE(IOPZ)%N_DUCTNODES==0) CYCLE
18931893
DPSTAR(IOPZ) = DPSTAR(IOPZ) - DN%DIR(1) * DU%AREA * DU%VEL(OLD) * DT_HV/PSUM_TOT(IPZ)
18941894
IF (DU%FIXED) DPSTAR(IOPZ) = DPSTAR(IOPZ) + DN%DIR(1) * DU%AREA * DU%VEL(NEW) * DT_HV/PSUM_TOT(IPZ)
@@ -3049,7 +3049,7 @@ SUBROUTINE COLLAPSE_HVAC_BC(T)
30493049
WRITE(MESSAGE,'(A,A)') 'ERROR(552): Ductnode must lie with a single pressure zone. Node: ',TRIM(DUCTNODE(NN)%ID)
30503050
CALL SHUTDOWN(MESSAGE); RETURN
30513051
ENDIF
3052-
IF (ANY(CONNECTED_ZONES(0,DN%ZONE_INDEX,:))) DN%ZONE_INDEX = 0
3052+
IF (CONNECTED_ZONES(0,DN%ZONE_INDEX)) DN%ZONE_INDEX = 0
30533053
ENDIF
30543054

30553055
INTERNAL_NODE_IF: IF (((DN%VENT .OR. DN%LEAKAGE) .AND. .NOT. DN%AMBIENT) .OR. &

Source/init.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1108,7 +1108,7 @@ SUBROUTINE INITIALIZE_MESH_VARIABLES_2(NM)
11081108

11091109
IF (N_ZONE > 0) THEN
11101110
ZONE_LOOP: DO IPZ = 1,N_ZONE
1111-
PSUM(IPZ,NM) = 0._EB
1111+
PSUM(IPZ) = 0._EB
11121112
DO K=1,M%KBAR
11131113
DO J=1,M%JBAR
11141114
DO I=1,M%IBAR
@@ -1118,7 +1118,7 @@ SUBROUTINE INITIALIZE_MESH_VARIABLES_2(NM)
11181118
ZZ_GET(1:N_TRACKED_SPECIES) = M%ZZ(I,J,K,1:N_TRACKED_SPECIES)
11191119
CALL GET_SPECIFIC_HEAT(ZZ_GET,CP,M%TMP(I,J,K))
11201120
RTRM = M%RSUM(I,J,K)/(CP*M%PBAR(K,IPZ))
1121-
PSUM(IPZ,NM) = PSUM(IPZ,NM) + VC*(1._EB/M%PBAR(K,IPZ)-RTRM)
1121+
PSUM(IPZ) = PSUM(IPZ) + VC*(1._EB/M%PBAR(K,IPZ)-RTRM)
11221122
ENDDO
11231123
ENDDO
11241124
ENDDO

0 commit comments

Comments
 (0)