diff --git a/Source/hvac.f90 b/Source/hvac.f90 index 0546ab6a9c..6a2901287e 100644 --- a/Source/hvac.f90 +++ b/Source/hvac.f90 @@ -1378,6 +1378,11 @@ SUBROUTINE HVAC_CALC(T,DT,FIRST_PASS) TNOW = CURRENT_TIME() +IF (N_ZONE > 0) THEN + IF (.NOT. ALLOCATED(DPSTAR)) ALLOCATE(DPSTAR(0:N_ZONE)) + DPSTAR = 0._EB +ENDIF + IF (.NOT. ALLOCATED(LHS)) ALLOCATE(LHS(N_DUCTS+N_DUCTNODES,N_DUCTS+N_DUCTNODES)) IF (.NOT. ALLOCATED(RHS)) ALLOCATE(RHS(N_DUCTS+N_DUCTNODES)) @@ -1451,11 +1456,7 @@ SUBROUTINE HVAC_CALC(T,DT,FIRST_PASS) ITER = 0 -IF (N_ZONE>0) THEN - ALLOCATE(DPSTAR(1:N_ZONE)) - DPSTAR = 0._EB - CALL DPSTARCALC -ENDIF +IF (N_ZONE>0) CALL DPSTARCALC DUCTNODE%P = DUCTNODE%P - P_INF @@ -1517,10 +1518,6 @@ SUBROUTINE HVAC_CALC(T,DT,FIRST_PASS) DUCTNODE%P = DUCTNODE%P + P_INF -!CALL UPDATE_NODE_BC - -IF (ALLOCATED(DPSTAR)) DEALLOCATE(DPSTAR) - T_USED(13)=T_USED(13)+CURRENT_TIME()-TNOW END SUBROUTINE HVAC_CALC @@ -2638,8 +2635,7 @@ END SUBROUTINE DETERMINE_FIXED_ELEMENTS SUBROUTINE FIND_NETWORKS(CHANGE,T) INTEGER:: NZ,NN,ND,DUCT_COUNTER(N_DUCTS),NODE_COUNTER(N_DUCTNODES),COUNTER,COUNTER2,ZONE_COUNTER(N_ZONE),& - CONNECTED_ZONES2(0:N_ZONE,0:N_ZONE) -INTEGER, DIMENSION(:), ALLOCATABLE :: NETWORK_DCOUNTER,NETWORK_NCOUNTER,RENUMBER + CONNECTED_ZONES2(0:N_ZONE,0:N_ZONE),NETWORK_DCOUNTER(N_DUCTS),NETWORK_NCOUNTER(N_DUCTS),RENUMBER(N_DUCTNODES) LOGICAL, INTENT(OUT) :: CHANGE LOGICAL :: CHANGE2 REAL(EB), INTENT(IN):: T @@ -2723,7 +2719,6 @@ SUBROUTINE FIND_NETWORKS(CHANGE,T) ENDIF END DO -ALLOCATE(RENUMBER(MAXVAL(NODE_COUNTER))) RENUMBER = 0 N_NETWORKS = 0 DO NN = 1,N_DUCTNODES @@ -2738,14 +2733,11 @@ SUBROUTINE FIND_NETWORKS(CHANGE,T) DO ND = 1,N_DUCTS DUCT_COUNTER(ND) = RENUMBER(DUCT_COUNTER(ND)) ENDDO -DEALLOCATE(RENUMBER) ALLOCATE(NETWORK(N_NETWORKS)) NETWORK%N_DUCTS=0 NETWORK%N_DUCTNODES=0 -ALLOCATE(NETWORK_DCOUNTER(N_NETWORKS)) NETWORK_DCOUNTER=0 -ALLOCATE(NETWORK_NCOUNTER(N_NETWORKS)) NETWORK_NCOUNTER=0 COUNTER = 0 DO ND = 1, N_DUCTS @@ -2771,8 +2763,6 @@ SUBROUTINE FIND_NETWORKS(CHANGE,T) DUCTNODE_NE(NN) = NETWORK_NCOUNTER(NODE_COUNTER(NN)) ENDDO -DEALLOCATE(NETWORK_DCOUNTER) -DEALLOCATE(NETWORK_NCOUNTER) CALL SETUP_SOLUTION_POINTERS END SUBROUTINE FIND_NETWORKS @@ -3626,12 +3616,20 @@ SUBROUTINE UPDATE_HVAC_MASS_TRANSPORT(DT,NR) USE PHYSICAL_FUNCTIONS,ONLY: GET_TEMPERATURE, GET_ENTHALPY REAL(EB), INTENT(IN) :: DT INTEGER, INTENT(IN) :: NR -INTEGER :: N_SUBSTEPS,ND,NS,NC +INTEGER :: N_SUBSTEPS,ND,NS,NC,MAX_CELLS TYPE(DUCT_TYPE),POINTER :: DU REAL(EB) :: DT_CFL,DT_DUCT,MASS_FLUX,ZZ_GET(N_TRACKED_SPECIES),HGAS REAL(EB), ALLOCATABLE, DIMENSION(:) :: CPT_C,CPT_F,RHOCPT_C REAL(EB), ALLOCATABLE, DIMENSION(:,:) :: RHOZZ_C,ZZ_F +MAX_CELLS = MAXVAL(DUCT(:)%N_CELLS) + +ALLOCATE(ZZ_F(0:MAX_CELLS,N_TRACKED_SPECIES)) +ALLOCATE(CPT_F(0:MAX_CELLS)) +ALLOCATE(CPT_C(MAX_CELLS)) +ALLOCATE(RHOCPT_C(MAX_CELLS)) +ALLOCATE(RHOZZ_C(MAX_CELLS,N_TRACKED_SPECIES)) + DUCT_LOOP: DO ND = 1,DUCTRUN(NR)%N_DUCTS DU => DUCT(DUCTRUN(NR)%DUCT_INDEX(ND)) IF (DU%N_CELLS == 0 ) CYCLE DUCT_LOOP @@ -3646,11 +3644,6 @@ SUBROUTINE UPDATE_HVAC_MASS_TRANSPORT(DT,NR) DT_DUCT = DT/REAL(N_SUBSTEPS,EB) ! Set upwind face indices and allocate flux arrays - ALLOCATE(ZZ_F(0:DU%N_CELLS,N_TRACKED_SPECIES)) - ALLOCATE(CPT_F(0:DU%N_CELLS)) - ALLOCATE(CPT_C(DU%N_CELLS)) - ALLOCATE(RHOCPT_C(DU%N_CELLS)) - ALLOCATE(RHOZZ_C(DU%N_CELLS,N_TRACKED_SPECIES)) SUBSTEP_LOOP: DO NS = 1,N_SUBSTEPS @@ -3690,14 +3683,13 @@ SUBROUTINE UPDATE_HVAC_MASS_TRANSPORT(DT,NR) ENDDO SUBSTEP_LOOP - DEALLOCATE(RHOZZ_C) - DEALLOCATE(ZZ_F) - DEALLOCATE(CPT_F) - DEALLOCATE(CPT_C) - DEALLOCATE(RHOCPT_C) - ENDDO DUCT_LOOP +DEALLOCATE(RHOZZ_C) +DEALLOCATE(ZZ_F) +DEALLOCATE(CPT_F) +DEALLOCATE(CPT_C) +DEALLOCATE(RHOCPT_C) END SUBROUTINE UPDATE_HVAC_MASS_TRANSPORT