Skip to content

Commit fe235f8

Browse files
authored
Merge pull request #13751 from mcgratta/master
FDS Source: Streamline CONNECTED_ZONES calcs
2 parents 262c20c + a810127 commit fe235f8

File tree

3 files changed

+30
-43
lines changed

3 files changed

+30
-43
lines changed

Source/cons.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ MODULE GLOBAL_CONSTANTS
235235
LOGICAL :: SPEC_RESTART=.FALSE. !< Initialize tracked species field with values from a file
236236
LOGICAL :: PARTICLE_CFL=.FALSE. !< Include particle velocity as a constraint on time step
237237
LOGICAL :: RTE_SOURCE_CORRECTION=.TRUE. !< Apply a correction to the radiation source term to achieve desired rad fraction
238-
LOGICAL :: OBST_CREATED_OR_REMOVED=.FALSE. !< An obstruction has just been created or removed and wall cells must be reassigned
238+
LOGICAL :: OBST_CREATED_OR_REMOVED=.TRUE. !< An obstruction has just been created or removed and wall cells must be reassigned
239239
LOGICAL :: CHECK_REALIZABILITY=.FALSE.
240240
LOGICAL :: MIN_DEVICES_EXIST=.FALSE.
241241
LOGICAL :: MAX_DEVICES_EXIST=.FALSE.
@@ -536,7 +536,7 @@ MODULE GLOBAL_CONSTANTS
536536

537537
! Miscellaneous integer constants
538538

539-
INTEGER :: ICYC,ICYC_RESTART=0,NFRAMES,PERIODIC_TEST=0,SIM_MODE=3,TURB_MODEL=0,FISHPAK_BC(3)=-1,&
539+
INTEGER :: ICYC,NFRAMES,PERIODIC_TEST=0,SIM_MODE=3,TURB_MODEL=0,FISHPAK_BC(3)=-1,&
540540
STOP_AT_ITER=0,WALL_INCREMENT=2,WALL_COUNTER=0,&
541541
CLIP_DT_RESTRICTIONS_MAX=5,BNDF_TIME_INTEGRALS=0
542542

Source/divg.f90

Lines changed: 1 addition & 1 deletion
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
88+
IF (N_ZONE>0 .AND. OBST_CREATED_OR_REMOVED) 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

Source/main.f90

Lines changed: 27 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,6 @@ PROGRAM FDS
390390
! Potentially read data from a previous calculation
391391

392392
IF (RESTART) THEN
393-
ICYC_RESTART=1
394393
DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
395394
CALL READ_RESTART(T,DT,NM)
396395
ENDDO
@@ -437,14 +436,6 @@ PROGRAM FDS
437436

438437
ENDIF
439438

440-
! Compute divergence just in case the flow field is not initialized to ambient
441-
442-
CALL INITIALIZE_DIVERGENCE_INTEGRALS
443-
444-
DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
445-
CALL DIVERGENCE_PART_1(T_BEGIN,DT,NM)
446-
ENDDO
447-
448439
! Initialize particle distributions
449440

450441
CALL GENERATE_PARTICLE_DISTRIBUTIONS
@@ -511,10 +502,6 @@ PROGRAM FDS
511502
IF (MY_RANK==0 .AND. VERBOSE) CALL VERBOSE_PRINTOUT('Completed DUMP_MESH_OUTPUTS')
512503
ENDIF
513504

514-
! If there are zones and HVAC pass PSUM
515-
516-
IF (HVAC_SOLVE .AND. N_ZONE>0 .AND. .NOT.SOLID_PHASE_ONLY) CALL EXCHANGE_DIVERGENCE_INFO
517-
518505
! Make an initial dump of global output quantities
519506

520507
IF (.NOT.RESTART) THEN
@@ -527,6 +514,18 @@ PROGRAM FDS
527514

528515
IF (.NOT.RESTART) CALL CREATE_OR_REMOVE_OBSTRUCTIONS
529516

517+
! Compute divergence just in case the flow field is not initialized to ambient
518+
519+
CALL INITIALIZE_DIVERGENCE_INTEGRALS
520+
521+
DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
522+
CALL DIVERGENCE_PART_1(T_BEGIN,DT,NM)
523+
ENDDO
524+
525+
IF (HVAC_SOLVE .AND. N_ZONE>0 .AND. .NOT.SOLID_PHASE_ONLY) CALL EXCHANGE_DIVERGENCE_INFO
526+
527+
CALL GLOBAL_MATRIX_REASSIGN
528+
530529
! Write out character strings to .smv file
531530

532531
CALL WRITE_STRINGS
@@ -685,10 +684,6 @@ PROGRAM FDS
685684

686685
IF (N_ZONE>0 .AND. .NOT.SOLID_PHASE_ONLY) CALL EXCHANGE_DIVERGENCE_INFO
687686

688-
! Update global pressure matrices after zone connections
689-
690-
IF ((ICYC==1 .OR. ICYC_RESTART==1) .AND. FIRST_PASS) CALL GLOBAL_MATRIX_REASSIGN
691-
692687
! Finish the divergence calculation
693688

694689
FINISH_DIVERGENCE_LOOP: DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
@@ -1620,7 +1615,7 @@ END SUBROUTINE CREATE_OR_REMOVE_OBSTRUCTIONS
16201615

16211616
SUBROUTINE GLOBAL_MATRIX_REASSIGN
16221617

1623-
IF (OBST_CREATED_OR_REMOVED .OR. ICYC_RESTART==1) THEN
1618+
IF (OBST_CREATED_OR_REMOVED .OR. ICYC==1) THEN
16241619
SELECT CASE (PRES_FLAG)
16251620
CASE (ULMAT_FLAG)
16261621
DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
@@ -1638,7 +1633,6 @@ SUBROUTINE GLOBAL_MATRIX_REASSIGN
16381633
CALL STOP_CHECK(1)
16391634
END SELECT
16401635
OBST_CREATED_OR_REMOVED = .FALSE.
1641-
ICYC_RESTART=0
16421636
ENDIF
16431637

16441638
END SUBROUTINE GLOBAL_MATRIX_REASSIGN
@@ -1808,10 +1802,18 @@ END SUBROUTINE END_FDS
18081802

18091803
SUBROUTINE INITIALIZE_DIVERGENCE_INTEGRALS
18101804

1805+
INTEGER :: IPZ
1806+
18111807
USUM = 0._EB
18121808
PSUM = 0._EB
18131809
DSUM = 0._EB
1814-
CONNECTED_ZONES = .FALSE.
1810+
1811+
IF (OBST_CREATED_OR_REMOVED) THEN
1812+
CONNECTED_ZONES = .FALSE.
1813+
DO IPZ=0,N_ZONE
1814+
CONNECTED_ZONES(IPZ,IPZ) = .TRUE.
1815+
ENDDO
1816+
ENDIF
18151817

18161818
END SUBROUTINE INITIALIZE_DIVERGENCE_INTEGRALS
18171819

@@ -1821,13 +1823,12 @@ END SUBROUTINE INITIALIZE_DIVERGENCE_INTEGRALS
18211823

18221824
SUBROUTINE EXCHANGE_DIVERGENCE_INFO
18231825

1824-
INTEGER :: IPZ,IOPZ,IOPZ2
1826+
INTEGER :: IPZ
18251827
REAL(EB) :: TNOW
1826-
LOGICAL :: NEW_CONNECTION
18271828

18281829
TNOW = CURRENT_TIME()
18291830

1830-
! Sum up the divergence integrals over the MPI processes
1831+
! Sum up the divergence integrals and zone connection matrix over the MPI processes
18311832

18321833
IF (N_MPI_PROCESSES>1) THEN
18331834
CALL MPI_ALLREDUCE(MPI_IN_PLACE,DSUM,N_ZONE,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,IERR)
@@ -1838,25 +1839,11 @@ SUBROUTINE EXCHANGE_DIVERGENCE_INFO
18381839

18391840
! Connect zones to others which are not directly connected
18401841

1841-
NEW_CONNECTION = .TRUE.
1842-
DO WHILE (NEW_CONNECTION)
1843-
NEW_CONNECTION = .FALSE.
1842+
IF (OBST_CREATED_OR_REMOVED) THEN
18441843
DO IPZ=1,N_ZONE
1845-
DO IOPZ=1,N_ZONE
1846-
IF (IOPZ==IPZ) CYCLE
1847-
IF (CONNECTED_ZONES(IPZ,IOPZ)) THEN
1848-
DO IOPZ2=0,N_ZONE
1849-
IF (IOPZ==IOPZ2) CYCLE
1850-
IF (CONNECTED_ZONES(IOPZ,IOPZ2)) THEN
1851-
IF (.NOT.CONNECTED_ZONES(IPZ,IOPZ2)) NEW_CONNECTION = .TRUE.
1852-
CONNECTED_ZONES(IPZ,IOPZ2) = .TRUE.
1853-
CONNECTED_ZONES(IOPZ2,IPZ) = .TRUE.
1854-
ENDIF
1855-
ENDDO
1856-
ENDIF
1857-
ENDDO
1844+
CONNECTED_ZONES = MATMUL(CONNECTED_ZONES,CONNECTED_ZONES)
18581845
ENDDO
1859-
ENDDO
1846+
ENDIF
18601847

18611848
T_USED(11)=T_USED(11) + CURRENT_TIME() - TNOW
18621849
END SUBROUTINE EXCHANGE_DIVERGENCE_INFO

0 commit comments

Comments
 (0)