Skip to content

Commit ec84e98

Browse files
committed
FDS Source : Avoid unnecessary Poisson solver setups at startup.
1 parent e9f7ccd commit ec84e98

File tree

2 files changed

+13
-30
lines changed

2 files changed

+13
-30
lines changed

Source/dump.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8206,7 +8206,7 @@ REAL(EB) RECURSIVE FUNCTION GAS_PHASE_OUTPUT(T,DT,NM,II,JJ,KK,IND,IND2,Y_INDEX,Z
82068206

82078207
CASE(253) ! ZONE PRESSURE SOLVER TYPE
82088208
GAS_PHASE_OUTPUT_RES = REAL(PRES_FLAG,EB)
8209-
IF (PRES_FLAG==ULMAT_FLAG) THEN
8209+
IF (PRES_FLAG==ULMAT_FLAG .AND. ALLOCATED(MESHES(NM)%ZONE_MESH)) THEN
82108210
IF (ZONE_MESH(ZONE_MESH(PRESSURE_ZONE(II,JJ,KK))%CONNECTED_ZONE_PARENT)%USE_FFT) THEN
82118211
GAS_PHASE_OUTPUT_RES = REAL(FFT_FLAG,EB)
82128212
ELSE
@@ -8217,7 +8217,7 @@ REAL(EB) RECURSIVE FUNCTION GAS_PHASE_OUTPUT(T,DT,NM,II,JJ,KK,IND,IND2,Y_INDEX,Z
82178217

82188218
CASE(254) ! PRESSURE ZONE PARENT
82198219
GAS_PHASE_OUTPUT_RES = 0._EB
8220-
IF (PRES_FLAG==ULMAT_FLAG) THEN
8220+
IF (PRES_FLAG==ULMAT_FLAG .AND. ALLOCATED(MESHES(NM)%ZONE_MESH)) THEN
82218221
GAS_PHASE_OUTPUT_RES = REAL(ZONE_MESH(PRESSURE_ZONE(II,JJ,KK))%CONNECTED_ZONE_PARENT,EB)
82228222
ENDIF
82238223

Source/main.f90

Lines changed: 11 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -282,28 +282,6 @@ PROGRAM FDS
282282
CALL STOP_CHECK(1)
283283
ENDIF
284284

285-
! Poisson solver initialization
286-
287-
SELECT CASE(PRES_FLAG)
288-
CASE(FFT_FLAG)
289-
! All solvers require INITIALIZE_POISSON_SOLVER in INITIALIZE_MESH_VARIABLES_2
290-
CASE(GLMAT_FLAG,UGLMAT_FLAG)
291-
CALL GLMAT_SOLVER_SETUP(1)
292-
CALL STOP_CHECK(1)
293-
CALL MESH_EXCHANGE(3) ! Exchange guard cell info for CCVAR(I,J,K,CGSC) -> HS.
294-
CALL GLMAT_SOLVER_SETUP(2)
295-
CALL MESH_EXCHANGE(3) ! Exchange guard cell info for CCVAR(I,J,K,UNKH) -> HS.
296-
CALL GLMAT_SOLVER_SETUP(3)
297-
CALL STOP_CHECK(1)
298-
CASE(ULMAT_FLAG)
299-
DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
300-
CALL ULMAT_SOLVER_SETUP(NM)
301-
ENDDO
302-
CALL STOP_CHECK(1)
303-
END SELECT
304-
305-
IF (MY_RANK==0 .AND. VERBOSE) CALL VERBOSE_PRINTOUT('Completed Poisson initialization')
306-
307285
! Initialize the flow field with random noise to eliminate false symmetries
308286

309287
DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
@@ -524,7 +502,9 @@ PROGRAM FDS
524502

525503
IF (HVAC_SOLVE .AND. N_ZONE>0 .AND. .NOT.SOLID_PHASE_ONLY) CALL EXCHANGE_DIVERGENCE_INFO
526504

527-
CALL GLOBAL_MATRIX_REASSIGN
505+
CALL GLOBAL_MATRIX_REASSIGN(FORCE_REASSIGN=.TRUE.)
506+
507+
IF (MY_RANK==0 .AND. VERBOSE) CALL VERBOSE_PRINTOUT('Completed Poisson initialization')
528508

529509
! Write out character strings to .smv file
530510

@@ -889,7 +869,7 @@ PROGRAM FDS
889869

890870
! Update global pressure matrices after zone connections
891871

892-
CALL GLOBAL_MATRIX_REASSIGN
872+
CALL GLOBAL_MATRIX_REASSIGN(FORCE_REASSIGN=.FALSE.)
893873

894874
! Exchange mass loss information for OBSTs abutting interpolated boundaries
895875

@@ -1613,17 +1593,20 @@ END SUBROUTINE CREATE_OR_REMOVE_OBSTRUCTIONS
16131593
!> CREATE_OR_REMOVE_OBSTRUCTIONS or CONNECTED_ZONES has been updated. Zone connections are established
16141594
!> in DIVERGENCE_PART_1, so global reassignment must follow.
16151595

1616-
SUBROUTINE GLOBAL_MATRIX_REASSIGN
1596+
SUBROUTINE GLOBAL_MATRIX_REASSIGN(FORCE_REASSIGN)
1597+
1598+
LOGICAL, INTENT(IN) :: FORCE_REASSIGN
16171599

1618-
IF (OBST_CREATED_OR_REMOVED .OR. ICYC==1) THEN
1600+
IF (OBST_CREATED_OR_REMOVED .OR. FORCE_REASSIGN) THEN
16191601
SELECT CASE (PRES_FLAG)
16201602
CASE (ULMAT_FLAG)
16211603
DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
1622-
CALL FINISH_ULMAT_SOLVER(NM)
1604+
IF(ALLOCATED(MESHES(NM)%ZONE_MESH)) CALL FINISH_ULMAT_SOLVER(NM)
16231605
CALL ULMAT_SOLVER_SETUP(NM)
16241606
ENDDO
1607+
CALL STOP_CHECK(1)
16251608
CASE (UGLMAT_FLAG,GLMAT_FLAG)
1626-
CALL FINISH_GLMAT_SOLVER
1609+
IF(ALLOCATED(ZONE_SOLVE)) CALL FINISH_GLMAT_SOLVER
16271610
CALL GLMAT_SOLVER_SETUP(1)
16281611
CALL STOP_CHECK(1)
16291612
CALL MESH_EXCHANGE(3) ! Exchange guard cell info for CCVAR(I,J,K,CGSC) -> HS.

0 commit comments

Comments
 (0)