@@ -118,7 +118,8 @@ SUBROUTINE READ_HVAC
118118LOGICAL :: DAMPER ! < Flag indicating that a damper is present in a DUCT.
119119LOGICAL :: REVERSE ! < Flag indicating that a specfied flow or FAN in a DUCT is from the second to the first node.
120120LOGICAL :: AMBIENT ! < Flag indicating a DUCTNODE is connected to the ambient.
121- LOGICAL :: GEOM ! < Flag indicating a DUCTNODE is connected to GEOM.
121+ LOGICAL :: GEOM ! < Flag indicating a DUCTNODE or LEAKAGE VENT_ID is connected to GEOM.
122+ LOGICAL :: GEOM2 ! < Flag indicating LEAKAGE VENT2_ID is connected to GEOM.
122123LOGICAL :: LEAK_ENTHALPY ! < Flag indicating that the boundary condition for a LEAKAGE duct should preserve enthalpy.
123124LOGICAL :: INITIALIZED_HVAC_MASS_TRANSPORT ! < Flag indicating DUCTs with N_CELLS>1 have been initiazed.
124125LOGICAL :: DUCT_QUANTITY_DEFINED= .FALSE. ! < Flag indicating a DUCT_QUANTITY list has alreayd been defined
@@ -145,7 +146,7 @@ SUBROUTINE READ_HVAC
145146TYPE (HVAC_QUANTITY_TYPE), POINTER :: HQT ! < Pointer to a DUCT_ or NODE_QUANTITY_ARRAY
146147NAMELIST / HVAC/ AIRCOIL_ID,AMBIENT,AREA,CLEAN_LOSS,COOLANT_SPECIFIC_HEAT,COOLANT_MASS_FLOW,COOLANT_TEMPERATURE,CTRL_ID,&
147148 DAMPER,DEBUG,DEVC_ID,DIAMETER,DISCHARGE_COEFFICIENT,DUCT_ID,&
148- EFFICIENCY,FAN_ID,FILTER_ID,FIXED_Q,GEOM,ID,LEAK_ENTHALPY,LEAK_PRESSURE_EXPONENT,LEAK_REFERENCE_PRESSURE,&
149+ EFFICIENCY,FAN_ID,FILTER_ID,FIXED_Q,GEOM,GEOM2, ID,LEAK_ENTHALPY,LEAK_PRESSURE_EXPONENT,LEAK_REFERENCE_PRESSURE,&
149150 LENGTH,LOADING,LOADING_MULTIPLIER,LOSS,&
150151 MASS_FLOW,MAX_FLOW,MAX_PRESSURE,N_CELLS,NETWORK_ID,NODE_ID,PERIMETER,QUANTITY,QUANTITY_SPEC_ID,&
151152 RAMP_ID,RAMP_LOSS,REVERSE,ROUGHNESS,ROUND,SPEC_ID,SQUARE,TAU_AC,TAU_FAN,TAU_VF,TRANSPORT_PARTICLES,&
@@ -590,12 +591,21 @@ SUBROUTINE READ_HVAC
590591 WRITE (MESSAGE,' (A,I5)' ) ' ERROR(527): Localized leakage has no ID, HVAC line number:' ,NN
591592 CALL SHUTDOWN(MESSAGE); RETURN
592593 ENDIF
593- DN% VENT_ID = VENT_ID
594- DN% VENT= .TRUE.
594+ IF (GEOM) THEN
595+ DN% GEOM = .TRUE.
596+ IF (TRIM (DN% VENT_ID)==' AMBIENT' ) THEN
597+ WRITE (MESSAGE,' (A,A,A,I5)' ) ' ERROR(yyy): VENT_ID for leakage cannot be AMBIENT if GEOM is set. Leak ID:' ,TRIM (ID),&
598+ ' , HVAC line number:' ,NN
599+ CALL SHUTDOWN(MESSAGE); RETURN
600+ ENDIF
601+ ELSE
602+ DN% VENT_ID = VENT_ID
603+ DN% VENT= .TRUE.
604+ ENDIF
595605 DN% NETWORK_ID= ' LEAK'
596606 DN% READ_IN = .FALSE.
597607 DN% TRANSPORT_PARTICLES = TRANSPORT_PARTICLES
598- IF (TRIM (DN% VENT_ID)==' null' ) THEN
608+ IF (TRIM (DN% VENT_ID)==' null' .AND. .NOT. GEOM ) THEN
599609 WRITE (MESSAGE,' (A,A,A,I5)' ) ' ERROR(528): Leakage path must have VENT_ID defined. Leak ID:' ,TRIM (ID),&
600610 ' , HVAC line number:' ,NN
601611 CALL SHUTDOWN(MESSAGE); RETURN
@@ -614,12 +624,22 @@ SUBROUTINE READ_HVAC
614624 NODE_FILTER_A(I_DUCTNODE) = ' null'
615625 DN = > DUCTNODE(I_DUCTNODE)
616626 DN% ID = VENT2_ID
617- DN% VENT_ID = VENT2_ID
627+ IF (GEOM2) THEN
628+ DN% GEOM = .TRUE.
629+ IF (TRIM (DN% VENT_ID)==' AMBIENT' ) THEN
630+ WRITE (MESSAGE,' (A,A,A,I5)' ) ' ERROR(yyy): VENT2_ID for leakage cannot be AMBIENT if GEOM2 is set. Leak ID:' ,&
631+ TRIM (ID),' , HVAC line number:' ,NN
632+ CALL SHUTDOWN(MESSAGE); RETURN
633+ ENDIF
634+ ELSE
635+ DN% VENT_ID = VENT2_ID
636+ DN% VENT= .TRUE.
637+ ENDIF
618638 DN% VENT= .TRUE.
619639 DN% NETWORK_ID= ' LEAK'
620640 DN% READ_IN = .FALSE.
621641 DN% TRANSPORT_PARTICLES = TRANSPORT_PARTICLES
622- IF (TRIM (VENT2_ID)==' null' ) THEN
642+ IF (TRIM (VENT2_ID)==' null' .AND. .NOT. GEOM2 ) THEN
623643 WRITE (MESSAGE,' (A,A,A,I2)' ) ' ERROR(530): Leakage path must have VENT2_ID defined. Leak ID:' ,TRIM (ID),&
624644 ' , HVAC line number:' ,NN
625645 CALL SHUTDOWN(MESSAGE); RETURN
@@ -749,6 +769,7 @@ SUBROUTINE SET_HVAC_DEFAULTS
749769FIXED_Q = - 1.E10_EB
750770FILTER_ID = ' null'
751771GEOM = .FALSE.
772+ GEOM2 = .FALSE.
752773LEAK_ENTHALPY = .FALSE.
753774LEAK_PRESSURE_EXPONENT = 0.5_EB
754775LEAK_REFERENCE_PRESSURE = 4._EB
@@ -1045,6 +1066,7 @@ SUBROUTINE PROC_HVAC
10451066 CF_Z = 0._EB
10461067 NODE_GEOM_LOOP: DO NG= 1 ,N_GEOMETRY
10471068 G= >GEOMETRY(NG)
1069+ IF (.NOT. G% HAVE_NODE) CYCLE
10481070 FACES_LOOP: DO NF= 1 ,G% N_FACES
10491071 SF= >SURFACE(G% SURFS(NF))
10501072 IF (SF% NODE_INDEX== 0 ) CYCLE FACES_LOOP
0 commit comments