@@ -390,7 +390,6 @@ PROGRAM FDS
390
390
! Potentially read data from a previous calculation
391
391
392
392
IF (RESTART) THEN
393
- ICYC_RESTART= 1
394
393
DO NM= LOWER_MESH_INDEX,UPPER_MESH_INDEX
395
394
CALL READ_RESTART(T,DT,NM)
396
395
ENDDO
@@ -437,14 +436,6 @@ PROGRAM FDS
437
436
438
437
ENDIF
439
438
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
-
448
439
! Initialize particle distributions
449
440
450
441
CALL GENERATE_PARTICLE_DISTRIBUTIONS
@@ -511,10 +502,6 @@ PROGRAM FDS
511
502
IF (MY_RANK== 0 .AND. VERBOSE) CALL VERBOSE_PRINTOUT(' Completed DUMP_MESH_OUTPUTS' )
512
503
ENDIF
513
504
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
-
518
505
! Make an initial dump of global output quantities
519
506
520
507
IF (.NOT. RESTART) THEN
@@ -527,6 +514,18 @@ PROGRAM FDS
527
514
528
515
IF (.NOT. RESTART) CALL CREATE_OR_REMOVE_OBSTRUCTIONS
529
516
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
+
530
529
! Write out character strings to .smv file
531
530
532
531
CALL WRITE_STRINGS
@@ -685,10 +684,6 @@ PROGRAM FDS
685
684
686
685
IF (N_ZONE> 0 .AND. .NOT. SOLID_PHASE_ONLY) CALL EXCHANGE_DIVERGENCE_INFO
687
686
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
-
692
687
! Finish the divergence calculation
693
688
694
689
FINISH_DIVERGENCE_LOOP: DO NM= LOWER_MESH_INDEX,UPPER_MESH_INDEX
@@ -1620,7 +1615,7 @@ END SUBROUTINE CREATE_OR_REMOVE_OBSTRUCTIONS
1620
1615
1621
1616
SUBROUTINE GLOBAL_MATRIX_REASSIGN
1622
1617
1623
- IF (OBST_CREATED_OR_REMOVED .OR. ICYC_RESTART == 1 ) THEN
1618
+ IF (OBST_CREATED_OR_REMOVED .OR. ICYC == 1 ) THEN
1624
1619
SELECT CASE (PRES_FLAG)
1625
1620
CASE (ULMAT_FLAG)
1626
1621
DO NM= LOWER_MESH_INDEX,UPPER_MESH_INDEX
@@ -1638,7 +1633,6 @@ SUBROUTINE GLOBAL_MATRIX_REASSIGN
1638
1633
CALL STOP_CHECK(1 )
1639
1634
END SELECT
1640
1635
OBST_CREATED_OR_REMOVED = .FALSE.
1641
- ICYC_RESTART= 0
1642
1636
ENDIF
1643
1637
1644
1638
END SUBROUTINE GLOBAL_MATRIX_REASSIGN
@@ -1808,10 +1802,18 @@ END SUBROUTINE END_FDS
1808
1802
1809
1803
SUBROUTINE INITIALIZE_DIVERGENCE_INTEGRALS
1810
1804
1805
+ INTEGER :: IPZ
1806
+
1811
1807
USUM = 0._EB
1812
1808
PSUM = 0._EB
1813
1809
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
1815
1817
1816
1818
END SUBROUTINE INITIALIZE_DIVERGENCE_INTEGRALS
1817
1819
@@ -1821,13 +1823,12 @@ END SUBROUTINE INITIALIZE_DIVERGENCE_INTEGRALS
1821
1823
1822
1824
SUBROUTINE EXCHANGE_DIVERGENCE_INFO
1823
1825
1824
- INTEGER :: IPZ,IOPZ,IOPZ2
1826
+ INTEGER :: IPZ
1825
1827
REAL (EB) :: TNOW
1826
- LOGICAL :: NEW_CONNECTION
1827
1828
1828
1829
TNOW = CURRENT_TIME()
1829
1830
1830
- ! Sum up the divergence integrals over the MPI processes
1831
+ ! Sum up the divergence integrals and zone connection matrix over the MPI processes
1831
1832
1832
1833
IF (N_MPI_PROCESSES> 1 ) THEN
1833
1834
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
1838
1839
1839
1840
! Connect zones to others which are not directly connected
1840
1841
1841
- NEW_CONNECTION = .TRUE.
1842
- DO WHILE (NEW_CONNECTION)
1843
- NEW_CONNECTION = .FALSE.
1842
+ IF (OBST_CREATED_OR_REMOVED) THEN
1844
1843
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)
1858
1845
ENDDO
1859
- ENDDO
1846
+ ENDIF
1860
1847
1861
1848
T_USED(11 )= T_USED(11 ) + CURRENT_TIME() - TNOW
1862
1849
END SUBROUTINE EXCHANGE_DIVERGENCE_INFO
0 commit comments