@@ -44,22 +44,25 @@ MODULE HVAC_ROUTINES
4444REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:):: NODE_TMP_EX
4545! < Contains sum of area weighted temperature over all MESHES for all VENTs assigned to each NODE
4646REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:):: DUCT_MF ! <Contains mass flow for each duct. Exchanged during MPI exchanges
47- REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:,:):: NODE_AREA ! <Area of each NODE per MESH
48- REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:,:):: NODE_H ! <Area weighted enthalpy of each NODE per MESH
49- REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:,:):: NODE_P ! <Area weighed pressure of each NODE per MESH
50- REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:,:):: NODE_RHO ! <Area weighted desnity of each NODE per MESH
51- REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:,:):: NODE_X ! <Area weighted x position of each NODE per MESH
52- REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:,:):: NODE_Y ! <Area weighted y position of each NODE per MESH
53- REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:,:):: NODE_Z ! <Area weighted z position of each NODE per MESH
54- REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:,:):: NODE_TMP ! <Area weighted temperature of each NODE per MESH
47+
48+ REAL (EB), PUBLIC , TARGET , ALLOCATABLE , DIMENSION (:,:) :: NODE_PROPERTIES ! < Holding array that is used to do MPI exchanges
49+ REAL (EB), POINTER , DIMENSION (:) :: NODE_AREA ! < Area of each NODE per MESH
50+ REAL (EB), POINTER , DIMENSION (:) :: NODE_H ! < Area-weighted enthalpy of each NODE
51+ REAL (EB), POINTER , DIMENSION (:) :: NODE_P ! < Area-weighed pressure of each NODE
52+ REAL (EB), POINTER , DIMENSION (:) :: NODE_RHO ! < Area-weighted desnity of each NODE
53+ REAL (EB), POINTER , DIMENSION (:) :: NODE_X ! < Area-weighted x position of each NODE
54+ REAL (EB), POINTER , DIMENSION (:) :: NODE_Y ! < Area-weighted y position of each NODE
55+ REAL (EB), POINTER , DIMENSION (:) :: NODE_Z ! < Area-weighted z position of each NODE
56+ REAL (EB), POINTER , DIMENSION (:) :: NODE_TMP ! < Area-weighted temperature of each NODE
57+ REAL (EB), POINTER , DIMENSION (:,:) :: NODE_ZZ ! < Area-weighted tracked species mass fractions of each NODE
58+
59+ REAL (EB), PUBLIC , ALLOCATABLE , DIMENSION (:) :: NODE_ZONE ! < Array of NODEs belonging to each ZONE
60+
5561REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:,:):: NODE_ZZ_EX ! <Area weighted tracked species mass fractions of each NODE per MESH
5662! < Contains sum of area weighted tracked species mass fractions over all MPI processes for all VENTs assigned to each NODE
57- REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:,:,:):: NODE_ZZ
58- ! < Contains sum of area weighted tracked species mass fractions over all MPI processes for all VENTs assigned to each NODE
5963REAL (EB),PUBLIC , ALLOCATABLE , DIMENSION (:):: PSUM_TOT ! < Contains sum of PSUM for merged pressure zones
6064INTEGER , PUBLIC :: N_DUCT_QUANTITY= 0 ! < Number of DUCT output QUANTITY
6165INTEGER , PUBLIC :: N_NODE_QUANTITY= 0 ! < Number of NODE output QUANTITY
62- INTEGER , PUBLIC , ALLOCATABLE , DIMENSION (:,:) :: NODE_ZONE ! < Array of NODEs belonging to each ZONE
6366
6467TYPE (HVAC_QUANTITY_TYPE), PUBLIC , TARGET , ALLOCATABLE , DIMENSION (:) :: DUCT_QUANTITY_ARRAY ! < DUCT outputs for .hvac file
6568TYPE (HVAC_QUANTITY_TYPE), PUBLIC , TARGET , ALLOCATABLE , DIMENSION (:) :: NODE_QUANTITY_ARRAY ! < NODE outputs for .hvac file
@@ -1097,33 +1100,22 @@ SUBROUTINE PROC_HVAC
10971100IF (ALLOCATED (NODE_FILTER_A)) DEALLOCATE (NODE_FILTER_A)
10981101IF (ALLOCATED (DUCT_FAN_A)) DEALLOCATE (DUCT_FAN_A)
10991102
1100- ALLOCATE (NODE_P(1 :N_DUCTNODES,1 :NMESHES))
1101- ALLOCATE (NODE_TMP(1 :N_DUCTNODES,1 :NMESHES))
1102- ALLOCATE (NODE_TMP_EX(1 :N_DUCTNODES))
1103- NODE_TMP_EX= 0._EB
1104- ALLOCATE (NODE_RHO(1 :N_DUCTNODES,1 :NMESHES))
1105- ALLOCATE (NODE_H(1 :N_DUCTNODES,1 :NMESHES))
1106- ALLOCATE (NODE_X(1 :N_DUCTNODES,1 :NMESHES))
1107- ALLOCATE (NODE_Y(1 :N_DUCTNODES,1 :NMESHES))
1108- ALLOCATE (NODE_Z(1 :N_DUCTNODES,1 :NMESHES))
1109- ALLOCATE (NODE_ZONE(1 :N_DUCTNODES,1 :NMESHES))
1110- ALLOCATE (NODE_AREA(1 :N_DUCTNODES,1 :NMESHES))
1111- ALLOCATE (NODE_AREA_EX(1 :N_DUCTNODES))
1112- ALLOCATE (NODE_ZZ(1 :N_DUCTNODES,1 :N_TRACKED_SPECIES,1 :NMESHES))
1113- ALLOCATE (NODE_ZZ_EX(1 :N_DUCTNODES,1 :N_TRACKED_SPECIES))
1114-
1115- NODE_X = 0._EB
1116- NODE_Y = 0._EB
1117- NODE_Z = 0._EB
1118- NODE_ZONE = 0
1119- NODE_H = 0._EB
1120- NODE_P = 0._EB
1121- NODE_TMP= 0._EB
1122- NODE_RHO = 0._EB
1123- NODE_AREA = 0._EB
1124- NODE_AREA_EX = 0._EB
1125- NODE_ZZ = 0._EB
1126- NODE_ZZ_EX = 0._EB
1103+ ALLOCATE (NODE_PROPERTIES(N_DUCTNODES,8 + N_TRACKED_SPECIES)) ; NODE_PROPERTIES = 0._EB
1104+ NODE_P = > NODE_PROPERTIES(1 :N_DUCTNODES,1 )
1105+ NODE_TMP = > NODE_PROPERTIES(1 :N_DUCTNODES,2 )
1106+ NODE_RHO = > NODE_PROPERTIES(1 :N_DUCTNODES,3 )
1107+ NODE_H = > NODE_PROPERTIES(1 :N_DUCTNODES,4 )
1108+ NODE_X = > NODE_PROPERTIES(1 :N_DUCTNODES,5 )
1109+ NODE_Y = > NODE_PROPERTIES(1 :N_DUCTNODES,6 )
1110+ NODE_Z = > NODE_PROPERTIES(1 :N_DUCTNODES,7 )
1111+ NODE_AREA = > NODE_PROPERTIES(1 :N_DUCTNODES,8 )
1112+ NODE_ZZ = > NODE_PROPERTIES(1 :N_DUCTNODES,9 :8 + N_TRACKED_SPECIES)
1113+
1114+ ALLOCATE (NODE_ZONE(1 :N_DUCTNODES)) ; NODE_ZONE = 0
1115+
1116+ ALLOCATE (NODE_TMP_EX(1 :N_DUCTNODES)) ; NODE_TMP_EX= 0._EB
1117+ ALLOCATE (NODE_AREA_EX(1 :N_DUCTNODES)) ; NODE_AREA_EX = 0._EB
1118+ ALLOCATE (NODE_ZZ_EX(1 :N_DUCTNODES,1 :N_TRACKED_SPECIES)) ; NODE_ZZ_EX = 0._EB
11271119
11281120CALL EXAMINE_LOSSES
11291121CALL DETERMINE_FIXED_ELEMENTS(0._EB ,DUMMY)
@@ -2196,16 +2188,6 @@ SUBROUTINE HVAC_BC_IN(NM)
21962188
21972189CALL POINT_TO_MESH(NM)
21982190ERROR_FLAG = .FALSE.
2199- NODE_X(:,NM) = 0._EB
2200- NODE_Y(:,NM) = 0._EB
2201- NODE_Z(:,NM) = 0._EB
2202- NODE_ZONE(:,NM) = 0
2203- NODE_H(:,NM) = 0._EB
2204- NODE_P(:,NM) = 0._EB
2205- NODE_TMP(:,NM)= 0._EB
2206- NODE_RHO(:,NM) = 0._EB
2207- NODE_AREA(:,NM) = 0._EB
2208- NODE_ZZ(:,:,NM) = 0._EB
22092191ZZ_GET = 0._EB
22102192
22112193IF (PREDICTOR) THEN
@@ -2285,50 +2267,49 @@ SUBROUTINE INITIALIZE_HVAC
22852267 JJ = BC% JJG
22862268 KK = BC% KKG
22872269 AREA = B1% AREA
2288- IF (B1% PRESSURE_ZONE /= NODE_ZONE(NODE_INDEX,NM )) THEN
2289- IF (NODE_ZONE(NODE_INDEX,NM ) == 0 ) THEN
2290- NODE_ZONE(NODE_INDEX,NM ) = B1% PRESSURE_ZONE
2270+ IF (B1% PRESSURE_ZONE /= NODE_ZONE(NODE_INDEX)) THEN
2271+ IF (NODE_ZONE(NODE_INDEX) == 0 ) THEN
2272+ NODE_ZONE(NODE_INDEX) = B1% PRESSURE_ZONE
22912273 ELSE
22922274 ERROR_FLAG = .TRUE.
22932275 WRITE (MESSAGE,' (A,A)' ) ' ERROR(552): Ductnode must lie with a single pressure zone. Node: ' ,TRIM (DUCTNODE(NODE_INDEX)% ID)
22942276 CALL SHUTDOWN(MESSAGE,PROCESS_0_ONLY= .FALSE. ); RETURN
22952277 ENDIF
22962278 ENDIF
22972279
2298- NODE_AREA(NODE_INDEX,NM ) = NODE_AREA(NODE_INDEX,NM ) + AREA
2299- NODE_RHO(NODE_INDEX,NM ) = NODE_RHO(NODE_INDEX,NM ) + AREA/ RHOP(II,JJ,KK)
2280+ NODE_AREA(NODE_INDEX) = NODE_AREA(NODE_INDEX) + AREA
2281+ NODE_RHO(NODE_INDEX) = NODE_RHO(NODE_INDEX) + AREA/ RHOP(II,JJ,KK)
23002282 ZZ_GET(1 :N_TRACKED_SPECIES) = ZZ(II,JJ,KK,1 :N_TRACKED_SPECIES)
2301- NODE_ZZ(NODE_INDEX,1 :N_TRACKED_SPECIES,NM) = NODE_ZZ(NODE_INDEX,1 :N_TRACKED_SPECIES,NM) + &
2302- ZZ_GET(1 :N_TRACKED_SPECIES)* AREA
2283+ NODE_ZZ(NODE_INDEX,1 :N_TRACKED_SPECIES) = NODE_ZZ(NODE_INDEX,1 :N_TRACKED_SPECIES) + ZZ_GET(1 :N_TRACKED_SPECIES)* AREA
23032284 CALL GET_ENTHALPY(ZZ_GET,HGAS,TMP(II,JJ,KK))
2304- NODE_TMP(NODE_INDEX,NM ) = NODE_TMP(NODE_INDEX,NM ) + TMP(II,JJ,KK)* AREA
2305- NODE_H(NODE_INDEX,NM ) = NODE_H(NODE_INDEX,NM ) + HGAS * AREA
2285+ NODE_TMP(NODE_INDEX) = NODE_TMP(NODE_INDEX) + TMP(II,JJ,KK)* AREA
2286+ NODE_H(NODE_INDEX) = NODE_H(NODE_INDEX) + HGAS * AREA
23062287
23072288 SELECT CASE (IOR)
23082289 CASE (1 )
2309- NODE_X(NODE_INDEX,NM ) = NODE_X(NODE_INDEX,NM ) + X(II-1 )* AREA
2310- NODE_Y(NODE_INDEX,NM ) = NODE_Y(NODE_INDEX,NM ) + YC(JJ)* AREA
2311- NODE_Z(NODE_INDEX,NM ) = NODE_Z(NODE_INDEX,NM ) + ZC(KK)* AREA
2290+ NODE_X(NODE_INDEX) = NODE_X(NODE_INDEX) + X(II-1 )* AREA
2291+ NODE_Y(NODE_INDEX) = NODE_Y(NODE_INDEX) + YC(JJ)* AREA
2292+ NODE_Z(NODE_INDEX) = NODE_Z(NODE_INDEX) + ZC(KK)* AREA
23122293 CASE (- 1 )
2313- NODE_X(NODE_INDEX,NM ) = NODE_X(NODE_INDEX,NM ) + X(II)* AREA
2314- NODE_Y(NODE_INDEX,NM ) = NODE_Y(NODE_INDEX,NM ) + YC(JJ)* AREA
2315- NODE_Z(NODE_INDEX,NM ) = NODE_Z(NODE_INDEX,NM ) + ZC(KK)* AREA
2294+ NODE_X(NODE_INDEX) = NODE_X(NODE_INDEX) + X(II)* AREA
2295+ NODE_Y(NODE_INDEX) = NODE_Y(NODE_INDEX) + YC(JJ)* AREA
2296+ NODE_Z(NODE_INDEX) = NODE_Z(NODE_INDEX) + ZC(KK)* AREA
23162297 CASE (2 )
2317- NODE_X(NODE_INDEX,NM ) = NODE_X(NODE_INDEX,NM ) + XC(II)* AREA
2318- NODE_Y(NODE_INDEX,NM ) = NODE_Y(NODE_INDEX,NM ) + Y(JJ-1 )* AREA
2319- NODE_Z(NODE_INDEX,NM ) = NODE_Z(NODE_INDEX,NM ) + ZC(KK)* AREA
2298+ NODE_X(NODE_INDEX) = NODE_X(NODE_INDEX) + XC(II)* AREA
2299+ NODE_Y(NODE_INDEX) = NODE_Y(NODE_INDEX) + Y(JJ-1 )* AREA
2300+ NODE_Z(NODE_INDEX) = NODE_Z(NODE_INDEX) + ZC(KK)* AREA
23202301 CASE (- 2 )
2321- NODE_X(NODE_INDEX,NM ) = NODE_X(NODE_INDEX,NM ) + XC(II)* AREA
2322- NODE_Y(NODE_INDEX,NM ) = NODE_Y(NODE_INDEX,NM ) + Y(JJ)* AREA
2323- NODE_Z(NODE_INDEX,NM ) = NODE_Z(NODE_INDEX,NM ) + ZC(KK)* AREA
2302+ NODE_X(NODE_INDEX) = NODE_X(NODE_INDEX) + XC(II)* AREA
2303+ NODE_Y(NODE_INDEX) = NODE_Y(NODE_INDEX) + Y(JJ)* AREA
2304+ NODE_Z(NODE_INDEX) = NODE_Z(NODE_INDEX) + ZC(KK)* AREA
23242305 CASE (3 )
2325- NODE_X(NODE_INDEX,NM ) = NODE_X(NODE_INDEX,NM ) + XC(II)* AREA
2326- NODE_Y(NODE_INDEX,NM ) = NODE_Y(NODE_INDEX,NM ) + YC(JJ)* AREA
2327- NODE_Z(NODE_INDEX,NM ) = NODE_Z(NODE_INDEX,NM ) + Z(KK-1 )* AREA
2306+ NODE_X(NODE_INDEX) = NODE_X(NODE_INDEX) + XC(II)* AREA
2307+ NODE_Y(NODE_INDEX) = NODE_Y(NODE_INDEX) + YC(JJ)* AREA
2308+ NODE_Z(NODE_INDEX) = NODE_Z(NODE_INDEX) + Z(KK-1 )* AREA
23282309 CASE (- 3 )
2329- NODE_X(NODE_INDEX,NM ) = NODE_X(NODE_INDEX,NM ) + XC(II)* AREA
2330- NODE_Y(NODE_INDEX,NM ) = NODE_Y(NODE_INDEX,NM ) + YC(JJ)* AREA
2331- NODE_Z(NODE_INDEX,NM ) = NODE_Z(NODE_INDEX,NM ) + Z(KK)* AREA
2310+ NODE_X(NODE_INDEX) = NODE_X(NODE_INDEX) + XC(II)* AREA
2311+ NODE_Y(NODE_INDEX) = NODE_Y(NODE_INDEX) + YC(JJ)* AREA
2312+ NODE_Z(NODE_INDEX) = NODE_Z(NODE_INDEX) + Z(KK)* AREA
23322313 END SELECT
23332314 IF (HVAC_LOCAL_PRESSURE) THEN
23342315 SELECT CASE (IOR)
@@ -2339,36 +2320,36 @@ SUBROUTINE INITIALIZE_HVAC
23392320 CASE (- 3 )
23402321 P_AVE = 0.5_EB * (PBARP(KK,B1% PRESSURE_ZONE)+ PBARP(KK+1 ,B1% PRESSURE_ZONE))
23412322 END SELECT
2342- NODE_P(NODE_INDEX,NM ) = NODE_P(NODE_INDEX,NM ) + (P_AVE+ RHO(II,JJ,KK)* (HP(II,JJ,KK)- KRES(II,JJ,KK)))* AREA
2323+ NODE_P(NODE_INDEX) = NODE_P(NODE_INDEX) + (P_AVE+ RHO(II,JJ,KK)* (HP(II,JJ,KK)- KRES(II,JJ,KK)))* AREA
23432324 ELSE
23442325 SELECT CASE (IOR)
23452326 CASE (1 )
2346- NODE_P(NODE_INDEX,NM ) = NODE_P(NODE_INDEX,NM ) + &
2327+ NODE_P(NODE_INDEX) = NODE_P(NODE_INDEX) + &
23472328 (PBARP(KK,B1% PRESSURE_ZONE)- RHO(II,JJ,KK) * &
23482329 0.5_EB * (UP(II-1 ,JJ,KK)+ B1% U_NORMAL)** 2 * &
23492330 SIGN (1._EB ,UP(II-1 ,JJ,KK)+ B1% U_NORMAL))* AREA
23502331 CASE (- 1 )
2351- NODE_P(NODE_INDEX,NM ) = NODE_P(NODE_INDEX,NM ) + &
2332+ NODE_P(NODE_INDEX) = NODE_P(NODE_INDEX) + &
23522333 (PBARP(KK,B1% PRESSURE_ZONE)+ RHO(II,JJ,KK) * &
23532334 0.5_EB * (UP(II,JJ,KK)- B1% U_NORMAL)** 2 * &
23542335 SIGN (1._EB ,UP(II,JJ,KK)- B1% U_NORMAL))* AREA
23552336 CASE (2 )
2356- NODE_P(NODE_INDEX,NM ) = NODE_P(NODE_INDEX,NM ) + &
2337+ NODE_P(NODE_INDEX) = NODE_P(NODE_INDEX) + &
23572338 (PBARP(KK,B1% PRESSURE_ZONE)- RHO(II,JJ,KK) * &
23582339 0.5_EB * (VP(II,JJ-1 ,KK)+ B1% U_NORMAL)** 2 * &
23592340 SIGN (1._EB ,VP(II,JJ-1 ,KK)+ B1% U_NORMAL))* AREA
23602341 CASE (- 2 )
2361- NODE_P(NODE_INDEX,NM ) = NODE_P(NODE_INDEX,NM ) + &
2342+ NODE_P(NODE_INDEX) = NODE_P(NODE_INDEX) + &
23622343 (PBARP(KK,B1% PRESSURE_ZONE)+ RHO(II,JJ,KK) * &
23632344 0.5_EB * (VP(II,JJ,KK)- B1% U_NORMAL)** 2 * &
23642345 SIGN (1._EB ,VP(II,JJ,KK)- B1% U_NORMAL))* AREA
23652346 CASE (3 )
2366- NODE_P(NODE_INDEX,NM ) = NODE_P(NODE_INDEX,NM ) + &
2347+ NODE_P(NODE_INDEX) = NODE_P(NODE_INDEX) + &
23672348 (PBARP(KK,B1% PRESSURE_ZONE)- RHO(II,JJ,KK) * &
23682349 0.5_EB * (WP(II,JJ,KK-1 )+ B1% U_NORMAL)** 2 * &
23692350 SIGN (1._EB ,WP(II,JJ,KK-1 )+ B1% U_NORMAL))* AREA
23702351 CASE (- 3 )
2371- NODE_P(NODE_INDEX,NM ) = NODE_P(NODE_INDEX,NM ) + &
2352+ NODE_P(NODE_INDEX) = NODE_P(NODE_INDEX) + &
23722353 (PBARP(KK,B1% PRESSURE_ZONE)+ RHO(II,JJ,KK) * &
23732354 0.5_EB * (WP(II,JJ,KK)- B1% U_NORMAL)** 2 * &
23742355 SIGN (1._EB ,WP(II,JJ,KK)- B1% U_NORMAL))* AREA
@@ -2387,35 +2368,34 @@ SUBROUTINE INITIALIZE_HVAC
23872368 IZ2 = SF% LEAK_PATH(1 )
23882369 NODE_INDEX = DUCT(LEAK_PATH(MIN (IZ1,IZ2),MAX (IZ1,IZ2)))% NODE_INDEX(2 )
23892370 ENDIF
2390- IF (NODE_ZONE(NODE_INDEX,NM ) == 0 ) NODE_ZONE(NODE_INDEX,NM ) = B1% PRESSURE_ZONE
2371+ IF (NODE_ZONE(NODE_INDEX) == 0 ) NODE_ZONE(NODE_INDEX) = B1% PRESSURE_ZONE
23912372 IOR = BC% IOR
23922373 II = BC% IIG
23932374 JJ = BC% JJG
23942375 KK = BC% KKG
23952376 AREA = B1% AREA
23962377
2397- NODE_AREA(NODE_INDEX,NM ) = NODE_AREA(NODE_INDEX,NM ) + AREA
2398- NODE_RHO(NODE_INDEX,NM ) = NODE_RHO(NODE_INDEX,NM ) + AREA/ RHOP(II,JJ,KK)
2378+ NODE_AREA(NODE_INDEX) = NODE_AREA(NODE_INDEX) + AREA
2379+ NODE_RHO(NODE_INDEX) = NODE_RHO(NODE_INDEX) + AREA/ RHOP(II,JJ,KK)
23992380
24002381 ZZ_GET(1 :N_TRACKED_SPECIES) = ZZ(II,JJ,KK,1 :N_TRACKED_SPECIES)
2401- NODE_ZZ(NODE_INDEX,1 :N_TRACKED_SPECIES,NM) = NODE_ZZ(NODE_INDEX,1 :N_TRACKED_SPECIES,NM) + &
2402- ZZ_GET(1 :N_TRACKED_SPECIES)* AREA
2382+ NODE_ZZ(NODE_INDEX,1 :N_TRACKED_SPECIES) = NODE_ZZ(NODE_INDEX,1 :N_TRACKED_SPECIES) + ZZ_GET(1 :N_TRACKED_SPECIES)* AREA
24032383 CALL GET_ENTHALPY(ZZ_GET,HGAS,TMP(II,JJ,KK))
2404- NODE_TMP(NODE_INDEX,NM ) = NODE_TMP(NODE_INDEX,NM ) + TMP(II,JJ,KK)* AREA
2405- NODE_H(NODE_INDEX,NM ) = NODE_H(NODE_INDEX,NM ) + HGAS * AREA
2384+ NODE_TMP(NODE_INDEX) = NODE_TMP(NODE_INDEX) + TMP(II,JJ,KK)* AREA
2385+ NODE_H(NODE_INDEX) = NODE_H(NODE_INDEX) + HGAS * AREA
24062386
24072387 SELECT CASE (IOR)
24082388 CASE (3 )
24092389 P_AVE = 0.5_EB * (PBARP(KK-1 ,B1% PRESSURE_ZONE)+ PBARP(KK,B1% PRESSURE_ZONE))
2410- NODE_Z(NODE_INDEX,NM ) = NODE_Z(NODE_INDEX,NM ) + Z(KK-1 )* AREA
2390+ NODE_Z(NODE_INDEX) = NODE_Z(NODE_INDEX) + Z(KK-1 )* AREA
24112391 CASE (- 3 )
24122392 P_AVE = 0.5_EB * (PBARP(KK,B1% PRESSURE_ZONE)+ PBARP(KK+1 ,B1% PRESSURE_ZONE))
2413- NODE_Z(NODE_INDEX,NM ) = NODE_Z(NODE_INDEX,NM ) + Z(KK)* AREA
2393+ NODE_Z(NODE_INDEX) = NODE_Z(NODE_INDEX) + Z(KK)* AREA
24142394 CASE DEFAULT
24152395 P_AVE = PBARP(KK,B1% PRESSURE_ZONE)
2416- NODE_Z(NODE_INDEX,NM ) = NODE_Z(NODE_INDEX,NM ) + ZC(KK)* AREA
2396+ NODE_Z(NODE_INDEX) = NODE_Z(NODE_INDEX) + ZC(KK)* AREA
24172397 END SELECT
2418- NODE_P(NODE_INDEX,NM ) = NODE_P(NODE_INDEX,NM ) + P_AVE* AREA
2398+ NODE_P(NODE_INDEX) = NODE_P(NODE_INDEX) + P_AVE* AREA
24192399
24202400ENDIF ZONE_LEAK_IF
24212401
@@ -3033,7 +3013,7 @@ SUBROUTINE COLLAPSE_HVAC_BC(T)
30333013USE MATH_FUNCTIONS, ONLY : EVALUATE_RAMP
30343014REAL (EB), INTENT (IN ) :: T
30353015REAL (EB) :: TNOW ! < Current CPU time (s) used in computing length of time spent in HVAC routines.
3036- INTEGER :: NN,NS,ZONE_TEST(NMESHES)
3016+ INTEGER :: NN,NS
30373017REAL (EB) :: AREA,RHO_SUM,ZZ_GET(1 :N_TRACKED_SPECIES),HGAS
30383018TYPE (DUCTNODE_TYPE), POINTER :: DN= >NULL (),DN2= >NULL ()
30393019
@@ -3042,20 +3022,14 @@ SUBROUTINE COLLAPSE_HVAC_BC(T)
30423022VENT_CUSTOM_AMBIENT: DO NN= 1 ,N_DUCTNODES
30433023 DN = > DUCTNODE(NN)
30443024 IF (.NOT. DN% LEAKAGE) THEN
3045- DN% ZONE_INDEX = MAXVAL (NODE_ZONE(NN,:))
3046- ZONE_TEST = 0
3047- WHERE (NODE_ZONE(NN,:) /= 0 ) ZONE_TEST = NODE_ZONE(NN,:) - DN% ZONE_INDEX
3048- IF (ANY (ZONE_TEST /= 0 )) THEN
3049- WRITE (MESSAGE,' (A,A)' ) ' ERROR(552): Ductnode must lie with a single pressure zone. Node: ' ,TRIM (DUCTNODE(NN)% ID)
3050- CALL SHUTDOWN(MESSAGE); RETURN
3051- ENDIF
3025+ DN% ZONE_INDEX = NODE_ZONE(NN)
30523026 IF (CONNECTED_ZONES(0 ,DN% ZONE_INDEX)>0 ) DN% ZONE_INDEX = 0
30533027 ENDIF
30543028
30553029 INTERNAL_NODE_IF: IF (((DN% VENT .OR. DN% LEAKAGE) .AND. .NOT. DN% AMBIENT) .OR. &
3056- (DN% AMBIENT .AND. SUM ( NODE_AREA(NN,:) ) > 0._EB )) THEN
3030+ (DN% AMBIENT .AND. NODE_AREA(NN) > 0._EB )) THEN
30573031 ZZ_GET = 0._EB
3058- AREA = SUM ( NODE_AREA(NN,:) )
3032+ AREA = NODE_AREA(NN)
30593033 IF (AREA<= TWO_EPSILON_EB) THEN
30603034 DUCT(DN% DUCT_INDEX(1 ))% AREA = 0._EB
30613035 DUCT(DN% DUCT_INDEX(1 ))% VEL = 0._EB
@@ -3064,13 +3038,13 @@ SUBROUTINE COLLAPSE_HVAC_BC(T)
30643038 DUCT(DN% DUCT_INDEX(1 ))% AREA = DUCT(DN% DUCT_INDEX(1 ))% AREA_INITIAL
30653039 ENDIF
30663040 NODE_AREA_EX(NN) = AREA
3067- DN% XYZ(1 ) = SUM ( NODE_X(NN,:) )/ AREA
3068- DN% XYZ(2 ) = SUM ( NODE_Y(NN,:) )/ AREA
3069- DN% XYZ(3 ) = SUM ( NODE_Z(NN,:) )/ AREA
3070- RHO_SUM = SUM ( NODE_RHO(NN,:) )
3041+ DN% XYZ(1 ) = NODE_X(NN)/ AREA
3042+ DN% XYZ(2 ) = NODE_Y(NN)/ AREA
3043+ DN% XYZ(3 ) = NODE_Z(NN)/ AREA
3044+ RHO_SUM = NODE_RHO(NN)
30713045
30723046 DO NS= 1 ,N_TRACKED_SPECIES
3073- DN% ZZ_V(NS) = SUM ( NODE_ZZ(NN,NS,:) )/ AREA
3047+ DN% ZZ_V(NS) = NODE_ZZ(NN,NS)/ AREA
30743048 ENDDO
30753049
30763050
@@ -3095,12 +3069,12 @@ SUBROUTINE COLLAPSE_HVAC_BC(T)
30953069 ENDIF
30963070
30973071 IF (DN% LEAKAGE) THEN
3098- IF (ABS (T- T_BEGIN) < TWO_EPSILON_EB) DN% P_OLD = SUM ( NODE_P(NN,:) )/ AREA
3072+ IF (ABS (T- T_BEGIN) < TWO_EPSILON_EB) DN% P_OLD = NODE_P(NN)/ AREA
30993073 ENDIF
31003074
3101- DN% P = HVAC_PRES_RELAX* (SUM ( NODE_P(NN,:) )/ AREA)+ (1._EB - HVAC_PRES_RELAX)* DN% P_OLD
3102- DN% TMP_V = SUM ( NODE_TMP(NN,:) )/ AREA
3103- HGAS = SUM ( NODE_H(NN,:) )/ AREA
3075+ DN% P = HVAC_PRES_RELAX* (NODE_P(NN)/ AREA)+ (1._EB - HVAC_PRES_RELAX)* DN% P_OLD
3076+ DN% TMP_V = NODE_TMP(NN)/ AREA
3077+ HGAS = NODE_H(NN)/ AREA
31043078 CALL GET_TEMPERATURE(DN% TMP_V,HGAS,ZZ_GET)
31053079 CALL GET_ENTHALPY(ZZ_GET,HGAS,DN% TMP_V)
31063080 DN% CP_V = HGAS/ DN% TMP_V
@@ -3109,7 +3083,7 @@ SUBROUTINE COLLAPSE_HVAC_BC(T)
31093083
31103084AMBIENT_LEAK: DO NN= 1 ,N_DUCTNODES
31113085 DN = > DUCTNODE(NN)
3112- IF (DN% AMBIENT .AND. SUM ( NODE_AREA(NN,:) )<= TWO_EPSILON_EB) THEN
3086+ IF (DN% AMBIENT .AND. NODE_AREA(NN)<= TWO_EPSILON_EB) THEN
31133087 ! Initialize ambient nodes outside domain
31143088 IF (DUCT(DN% DUCT_INDEX(1 ))% NODE_INDEX(1 )==NN) THEN
31153089 DN2 = > DUCTNODE(DUCT(DN% DUCT_INDEX(1 ))% NODE_INDEX(2 ))
0 commit comments