@@ -390,7 +390,6 @@ PROGRAM FDS
390390! Potentially read data from a previous calculation
391391
392392IF (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
438437ENDIF
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
450441CALL GENERATE_PARTICLE_DISTRIBUTIONS
@@ -511,10 +502,6 @@ PROGRAM FDS
511502 IF (MY_RANK== 0 .AND. VERBOSE) CALL VERBOSE_PRINTOUT(' Completed DUMP_MESH_OUTPUTS' )
512503ENDIF
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
520507IF (.NOT. RESTART) THEN
@@ -527,6 +514,18 @@ PROGRAM FDS
527514
528515IF (.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
532531CALL 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
16211616SUBROUTINE 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
16421636ENDIF
16431637
16441638END SUBROUTINE GLOBAL_MATRIX_REASSIGN
@@ -1808,10 +1802,18 @@ END SUBROUTINE END_FDS
18081802
18091803SUBROUTINE INITIALIZE_DIVERGENCE_INTEGRALS
18101804
1805+ INTEGER :: IPZ
1806+
18111807USUM = 0._EB
18121808PSUM = 0._EB
18131809DSUM = 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
18161818END SUBROUTINE INITIALIZE_DIVERGENCE_INTEGRALS
18171819
@@ -1821,13 +1823,12 @@ END SUBROUTINE INITIALIZE_DIVERGENCE_INTEGRALS
18211823
18221824SUBROUTINE EXCHANGE_DIVERGENCE_INFO
18231825
1824- INTEGER :: IPZ,IOPZ,IOPZ2
1826+ INTEGER :: IPZ
18251827REAL (EB) :: TNOW
1826- LOGICAL :: NEW_CONNECTION
18271828
18281829TNOW = 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
18321833IF (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
18611848T_USED(11 )= T_USED(11 ) + CURRENT_TIME() - TNOW
18621849END SUBROUTINE EXCHANGE_DIVERGENCE_INFO
0 commit comments