Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Source/cons.f90
Original file line number Diff line number Diff line change
Expand Up @@ -759,7 +759,7 @@ MODULE GLOBAL_CONSTANTS
LOGICAL, ALLOCATABLE, DIMENSION(:) :: EXTERNAL_CTRL

! VENT array
REAL(EB), ALLOCATABLE, DIMENSION(:,:) :: VENT_TOTAL_AREA
REAL(EB), ALLOCATABLE, DIMENSION(:) :: VENT_TOTAL_AREA !< Array holding grid-snapped areas for all vents

END MODULE GLOBAL_CONSTANTS

Expand Down
26 changes: 8 additions & 18 deletions Source/main.f90
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ PROGRAM FDS
CHARACTER(MPI_MAX_PROCESSOR_NAME) :: PNAME
LOGICAL, ALLOCATABLE, DIMENSION(:) :: LOGICAL_BUFFER_EXTERNAL
REAL(EB), ALLOCATABLE, DIMENSION(:) :: REAL_BUFFER_DUCT,REAL_BUFFER_EXTERNAL
REAL(EB), ALLOCATABLE, DIMENSION(:,:) :: REAL_BUFFER_10,REAL_BUFFER_20,REAL_BUFFER_VENT
REAL(EB), ALLOCATABLE, DIMENSION(:,:) :: REAL_BUFFER_10,REAL_BUFFER_20

! Initialize OpenMP

Expand Down Expand Up @@ -1053,7 +1053,6 @@ SUBROUTINE MPI_INITIALIZATION_CHORES(TASK_NUMBER)
ALLOCATE(REAL_BUFFER_DUCT((2+N_TRACKED_SPECIES)*N_DUCTNODES+N_DUCTS))
ALLOCATE(REAL_BUFFER_10(10,NMESHES))
ALLOCATE(REAL_BUFFER_20(20,NMESHES))
ALLOCATE(REAL_BUFFER_VENT(N_VENT_TOTAL,NMESHES))

IF (READ_EXTERNAL) THEN
ALLOCATE(REAL_BUFFER_EXTERNAL(N_RAMP))
Expand All @@ -1064,13 +1063,11 @@ SUBROUTINE MPI_INITIALIZATION_CHORES(TASK_NUMBER)
ALLOCATE(COUNTS_10(0:N_MPI_PROCESSES-1))
ALLOCATE(COUNTS_20(0:N_MPI_PROCESSES-1))
ALLOCATE(COUNTS_TP(0:N_MPI_PROCESSES-1))
ALLOCATE(COUNTS_VENT(0:N_MPI_PROCESSES-1))

ALLOCATE(DISPLS(0:N_MPI_PROCESSES-1))
ALLOCATE(DISPLS_10(0:N_MPI_PROCESSES-1))
ALLOCATE(DISPLS_20(0:N_MPI_PROCESSES-1))
ALLOCATE(DISPLS_TP(0:N_MPI_PROCESSES-1))
ALLOCATE(DISPLS_VENT(0:N_MPI_PROCESSES-1))
ALLOCATE(I_OFFSET(NMESHES))

COUNTS = 0
Expand All @@ -1095,8 +1092,6 @@ SUBROUTINE MPI_INITIALIZATION_CHORES(TASK_NUMBER)
DISPLS(N) = COUNTS(N-1) + DISPLS(N-1)
DISPLS_TP(N) = COUNTS_TP(N-1) + DISPLS_TP(N-1)
ENDDO
COUNTS_VENT = COUNTS*N_VENT_TOTAL
DISPLS_VENT = DISPLS*N_VENT_TOTAL
COUNTS_10 = COUNTS*10
DISPLS_10 = DISPLS*10
COUNTS_20 = COUNTS*20
Expand Down Expand Up @@ -4275,22 +4270,17 @@ SUBROUTINE CHECK_FREEZE_VELOCITY_STATUS
END SUBROUTINE CHECK_FREEZE_VELOCITY_STATUS


!> \brief Exchange FDS VENT areas so each process knows the total FDS area
!> \brief Sum up local grid-snapped or "FDS" VENT areas so that each process knows the total vent area spanning multiple meshes

SUBROUTINE EXCHANGE_VENT_AREA
INTEGER:: NM,NV
INTEGER :: NM,NV

IF (N_MPI_PROCESSES>1) THEN
REAL_BUFFER_VENT = VENT_TOTAL_AREA
CALL MPI_ALLGATHERV(MPI_IN_PLACE,0,MPI_DATATYPE_NULL,REAL_BUFFER_VENT,&
COUNTS_VENT,DISPLS_VENT,MPI_DOUBLE_PRECISION,MPI_COMM_WORLD,IERR)
VENT_TOTAL_AREA = REAL_BUFFER_VENT
ENDIF
CALL MPI_ALLREDUCE(MPI_IN_PLACE,VENT_TOTAL_AREA,N_VENT_TOTAL,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,IERR)

DO NM=1,NMESHES
IF (PROCESS(NM)/=MY_RANK) CYCLE
DO NV=1,MESHES(NM)%N_VENT
MESHES(NM)%VENTS(NV)%TOTAL_FDS_AREA=SUM(VENT_TOTAL_AREA(MESHES(NM)%VENTS(NV)%TOTAL_INDEX,:))
DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
M => MESHES(NM)
DO NV=1,M%N_VENT
M%VENTS(NV)%TOTAL_FDS_AREA = VENT_TOTAL_AREA(M%VENTS(NV)%TOTAL_INDEX)
ENDDO
ENDDO

Expand Down
6 changes: 3 additions & 3 deletions Source/read.f90
Original file line number Diff line number Diff line change
Expand Up @@ -11777,7 +11777,7 @@ SUBROUTINE READ_VENT

IF (I_MODE==2) THEN
ALLOCATE(MESHES(NM)%VENTS(N_VENT),STAT=IZERO) ; CALL ChkMemErr('READ','VENTS',IZERO) ; VENTS=>MESHES(NM)%VENTS
IF (.NOT. ALLOCATED(VENT_TOTAL_AREA)) ALLOCATE(VENT_TOTAL_AREA(N_VENT_TOTAL,NMESHES),STAT=IZERO) ! Only once per MPI process
IF (.NOT. ALLOCATED(VENT_TOTAL_AREA)) ALLOCATE(VENT_TOTAL_AREA(N_VENT_TOTAL),STAT=IZERO) ! Only once per MPI process
CALL ChkMemErr('READ','VENT_TOTAL_AREA',IZERO); VENT_TOTAL_AREA = 0._EB
IF (MY_RANK==0 .AND. .NOT.ALLOCATED(ORIGINAL_VENTS)) ALLOCATE(ORIGINAL_VENTS(N_ORIGINAL_VENTS))
ENDIF
Expand All @@ -11787,7 +11787,7 @@ SUBROUTINE READ_VENT
N_VENT = 0 ! Number of VENTs stored by each mesh
N_TOTAL = 0 ! Counter of all VENTs, both explicit and implicit
N_EXPLICIT = 0 ! Counter of explicitly declared VENTs
N_VENT_TOTAL = 0 ! Purely for Smokeview drawing of VENTs
N_VENT_TOTAL = 0 ! Total number of all vents throughout the whole domain
N_ORIGINAL_VENTS = 0 ! Number of specified vents for use with Smokeview and HVAC drawing

REWIND(LU_INPUT) ; INPUT_FILE_LINE_NUMBER = 0
Expand Down Expand Up @@ -12443,7 +12443,7 @@ SUBROUTINE READ_VENT
ENDDO
ENDDO
END SELECT
VENT_TOTAL_AREA(VT%TOTAL_INDEX,NM) = VT%FDS_AREA
VENT_TOTAL_AREA(VT%TOTAL_INDEX) = VENT_TOTAL_AREA(VT%TOTAL_INDEX) + VT%FDS_AREA
ENDDO VENT_LOOP_3

ENDDO MESH_LOOP_2
Expand Down