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
3 changes: 1 addition & 2 deletions Source/cons.f90
Original file line number Diff line number Diff line change
Expand Up @@ -633,8 +633,7 @@ MODULE GLOBAL_CONSTANTS
! Number of initial value, pressure zone, and multiplier derived types

INTEGER :: N_INIT,N_ZONE,N_MULT,N_MOVE
LOGICAL, ALLOCATABLE, DIMENSION(:,:) :: CONNECTED_ZONES
INTEGER, ALLOCATABLE, DIMENSION(:,:) :: CONNECTED_ZONES_LOC
INTEGER, ALLOCATABLE, DIMENSION(:,:) :: CONNECTED_ZONES
REAL(EB) :: MINIMUM_ZONE_VOLUME=0._EB
REAL(EB) :: PRESSURE_RELAX_TIME=1._EB

Expand Down
14 changes: 7 additions & 7 deletions Source/divg.f90
Original file line number Diff line number Diff line change
Expand Up @@ -1114,15 +1114,15 @@ SUBROUTINE MERGE_PRESSURE_ZONES
IPZ = PRESSURE_ZONE(BC%IIG,BC%JJG,BC%KKG)
IOPZ = PRESSURE_ZONE(BC%II,BC%JJ,BC%KK)
IF (IW>N_EXTERNAL_WALL_CELLS .AND. IPZ/=IOPZ) THEN
CONNECTED_ZONES(IOPZ,IPZ) = .TRUE.
CONNECTED_ZONES(IPZ,IOPZ) = .TRUE.
CONNECTED_ZONES(IOPZ,IPZ) = 1
CONNECTED_ZONES(IPZ,IOPZ) = 1
ENDIF
IF (WC%BOUNDARY_TYPE==OPEN_BOUNDARY) THEN
CONNECTED_ZONES(0,IPZ) = .TRUE.
CONNECTED_ZONES(IPZ,0) = .TRUE.
CONNECTED_ZONES(0,IPZ) = 1
CONNECTED_ZONES(IPZ,0) = 1
ELSEIF (WC%BOUNDARY_TYPE==INTERPOLATED_BOUNDARY) THEN
CONNECTED_ZONES(IOPZ,IPZ) = .TRUE.
CONNECTED_ZONES(IPZ,IOPZ) = .TRUE.
CONNECTED_ZONES(IOPZ,IPZ) = 1
CONNECTED_ZONES(IPZ,IOPZ) = 1
ENDIF
ENDDO

Expand Down Expand Up @@ -1294,7 +1294,7 @@ SUBROUTINE DIVERGENCE_PART_2(DT,NM)
SUM_PSUM = PSUM(IPZ)
DO IOPZ=N_ZONE,0,-1
IF (IOPZ==IPZ) CYCLE
IF (CONNECTED_ZONES(IPZ,IOPZ)) THEN
IF (CONNECTED_ZONES(IPZ,IOPZ)>0) THEN
IF (IOPZ==0) THEN
OPEN_ZONE = .TRUE.
ELSE
Expand Down
6 changes: 3 additions & 3 deletions Source/hvac.f90
Original file line number Diff line number Diff line change
Expand Up @@ -1873,7 +1873,7 @@ SUBROUTINE DPSTARCALC
PSUM_TOT(IPZ) = PSUM(IPZ)
DO IOPZ = 1,N_ZONE
IF (IPZ==IOPZ) CYCLE
IF (CONNECTED_ZONES(IPZ,IOPZ)) PSUM_TOT(IPZ) = PSUM_TOT(IPZ) + PSUM(IOPZ)
IF (CONNECTED_ZONES(IPZ,IOPZ)>0) PSUM_TOT(IPZ) = PSUM_TOT(IPZ) + PSUM(IOPZ)
ENDDO
ENDDO

Expand All @@ -1888,7 +1888,7 @@ SUBROUTINE DPSTARCALC
DO IOPZ = 1, N_ZONE
IF (IPZ==IOPZ) CYCLE
IF (P_ZONE(IOPZ)%N_DUCTNODES==0) CYCLE
IF (CONNECTED_ZONES(IPZ,IOPZ)) THEN
IF (CONNECTED_ZONES(IPZ,IOPZ)>0) THEN
IF (P_ZONE(IOPZ)%N_DUCTNODES==0) CYCLE
DPSTAR(IOPZ) = DPSTAR(IOPZ) - DN%DIR(1) * DU%AREA * DU%VEL(OLD) * DT_HV/PSUM_TOT(IPZ)
IF (DU%FIXED) DPSTAR(IOPZ) = DPSTAR(IOPZ) + DN%DIR(1) * DU%AREA * DU%VEL(NEW) * DT_HV/PSUM_TOT(IPZ)
Expand Down Expand Up @@ -3049,7 +3049,7 @@ SUBROUTINE COLLAPSE_HVAC_BC(T)
WRITE(MESSAGE,'(A,A)') 'ERROR(552): Ductnode must lie with a single pressure zone. Node: ',TRIM(DUCTNODE(NN)%ID)
CALL SHUTDOWN(MESSAGE); RETURN
ENDIF
IF (CONNECTED_ZONES(0,DN%ZONE_INDEX)) DN%ZONE_INDEX = 0
IF (CONNECTED_ZONES(0,DN%ZONE_INDEX)>0) DN%ZONE_INDEX = 0
ENDIF

INTERNAL_NODE_IF: IF (((DN%VENT .OR. DN%LEAKAGE) .AND. .NOT. DN%AMBIENT) .OR. &
Expand Down
15 changes: 5 additions & 10 deletions Source/main.f90
Original file line number Diff line number Diff line change
Expand Up @@ -1361,13 +1361,7 @@ SUBROUTINE MPI_INITIALIZATION_CHORES(TASK_NUMBER)

! Allocate a few arrays needed to exchange divergence and pressure info among meshes

ALLOCATE(CONNECTED_ZONES(0:N_ZONE,0:N_ZONE),STAT=IZERO)
CALL ChkMemErr('INIT','CONNECTED_ZONES',IZERO)
CONNECTED_ZONES = .FALSE.

ALLOCATE(CONNECTED_ZONES_LOC(0:N_ZONE,0:N_ZONE),STAT=IZERO)
CALL ChkMemErr('INIT','CONNECTED_ZONES_LOC',IZERO)
CONNECTED_ZONES_LOC = 0
ALLOCATE(CONNECTED_ZONES(0:N_ZONE,0:N_ZONE),STAT=IZERO) ; CALL ChkMemErr('INIT','CONNECTED_ZONES',IZERO) ; CONNECTED_ZONES=0

ALLOCATE(DSUM(N_ZONE),STAT=IZERO) ; CALL ChkMemErr('MAIN','DSUM',IZERO) ; DSUM = 0._EB
ALLOCATE(PSUM(N_ZONE),STAT=IZERO) ; CALL ChkMemErr('MAIN','PSUM',IZERO) ; PSUM = 0._EB
Expand Down Expand Up @@ -1792,9 +1786,9 @@ SUBROUTINE INITIALIZE_DIVERGENCE_INTEGRALS
DSUM = 0._EB

IF (OBST_CREATED_OR_REMOVED) THEN
CONNECTED_ZONES = .FALSE.
CONNECTED_ZONES = 0
DO IPZ=0,N_ZONE
CONNECTED_ZONES(IPZ,IPZ) = .TRUE.
CONNECTED_ZONES(IPZ,IPZ) = 1
ENDDO
ENDIF

Expand All @@ -1817,15 +1811,16 @@ SUBROUTINE EXCHANGE_DIVERGENCE_INFO
CALL MPI_ALLREDUCE(MPI_IN_PLACE,DSUM,N_ZONE,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,IERR)
CALL MPI_ALLREDUCE(MPI_IN_PLACE,PSUM,N_ZONE,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,IERR)
CALL MPI_ALLREDUCE(MPI_IN_PLACE,USUM,N_ZONE,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,IERR)
CALL MPI_ALLREDUCE(MPI_IN_PLACE,CONNECTED_ZONES,(N_ZONE+1)**2,MPI_LOGICAL,MPI_LOR,MPI_COMM_WORLD,IERR)
ENDIF

! Connect zones to others which are not directly connected

IF (OBST_CREATED_OR_REMOVED) THEN
IF (N_MPI_PROCESSES>1) CALL MPI_ALLREDUCE(MPI_IN_PLACE,CONNECTED_ZONES,(N_ZONE+1)**2,MPI_INTEGER,MPI_SUM,MPI_COMM_WORLD,IERR)
DO IPZ=1,N_ZONE
CONNECTED_ZONES = MATMUL(CONNECTED_ZONES,CONNECTED_ZONES)
ENDDO
CONNECTED_ZONES = MIN(1,CONNECTED_ZONES)
ENDIF

T_USED(11)=T_USED(11) + CURRENT_TIME() - TNOW
Expand Down
38 changes: 5 additions & 33 deletions Source/pres.f90
Original file line number Diff line number Diff line change
Expand Up @@ -1180,26 +1180,11 @@ SUBROUTINE ULMAT_SOLVER_SETUP(NM)
CALL ChkMemErr('INIT','ZONE_MESH',IZERO)
ENDIF

! Identify connected ZONEs
! Select the parent zone as the first in the row

! translate logical array to local and fill diagonal
CONNECTED_ZONES_LOC = 0
DO IOPZ=0,N_ZONE
DO IPZ=0,N_ZONE
IF (IPZ==IOPZ .OR. CONNECTED_ZONES(IPZ,IOPZ)) CONNECTED_ZONES_LOC(IPZ,IOPZ) = 1
ENDDO
ENDDO

! establish sets of connected zones
DO IPZ=1,N_ZONE
CONNECTED_ZONES_LOC = MATMUL(CONNECTED_ZONES_LOC,CONNECTED_ZONES_LOC)
ENDDO
CONNECTED_ZONES_LOC = MIN(1,CONNECTED_ZONES_LOC)

! select the parent zone as the first in the row
DO IPZ=0,N_ZONE
ZM=>MESHES(NM)%ZONE_MESH(IPZ)
ZM%CONNECTED_ZONE_PARENT = MINLOC(CONNECTED_ZONES_LOC(IPZ,:), DIM=1, MASK = CONNECTED_ZONES_LOC(IPZ,:)/=0) - 1
ZM%CONNECTED_ZONE_PARENT = MINLOC(CONNECTED_ZONES(IPZ,:), DIM=1, MASK=CONNECTED_ZONES(IPZ,:)/=0) - 1
ENDDO

! Test if FFT solver can be used for this MESH
Expand All @@ -1212,7 +1197,7 @@ SUBROUTINE ULMAT_SOLVER_SETUP(NM)
IF (ZM%CONNECTED_ZONE_PARENT/=IPZ) CYCLE ZONE_MESH_LOOP

! Test for multiple zones in MESH
NZIM=SUM(CONNECTED_ZONES_LOC(IPZ,:))
NZIM=SUM(CONNECTED_ZONES(IPZ,:))
IF (NZIM>1) ZM%USE_FFT=.FALSE.
IPZIM=IPZ

Expand Down Expand Up @@ -4827,24 +4812,11 @@ SUBROUTINE GET_MATRIX_INDEXES_H
DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
! Initialize unknown numbers for H:
MESHES(NM)%CCVAR(:,:,:,UNKH) = IS_UNDEFINED
! Identify connected ZONEs
! translate logical array to local and fill diagonal
CONNECTED_ZONES_LOC = 0
DO IOPZ=0,N_ZONE
DO IPZ=0,N_ZONE
IF (IPZ==IOPZ .OR. CONNECTED_ZONES(IPZ,IOPZ)) CONNECTED_ZONES_LOC(IPZ,IOPZ) = 1
ENDDO
ENDDO
! establish sets of connected zones
DO IPZ=1,N_ZONE
CONNECTED_ZONES_LOC = MATMUL(CONNECTED_ZONES_LOC,CONNECTED_ZONES_LOC)
ENDDO
CONNECTED_ZONES_LOC = MIN(1,CONNECTED_ZONES_LOC)
! select the parent zone as the first in the row
! Select the parent zone as the first in the row
DO IPZ=0,N_ZONE
ZSL => ZONE_SOLVE(IPZ)
IF(.NOT.PRES_ON_WHOLE_DOMAIN) &
ZSL%CONNECTED_ZONE_PARENT = MINLOC(CONNECTED_ZONES_LOC(IPZ,:), DIM=1, MASK = CONNECTED_ZONES_LOC(IPZ,:)/=0) - 1
ZSL%CONNECTED_ZONE_PARENT = MINLOC(CONNECTED_ZONES(IPZ,:), DIM=1, MASK=CONNECTED_ZONES(IPZ,:)/=0) - 1
ENDDO
ENDDO

Expand Down
Loading