From 6355f58e3fa4944cef1a61f295f317e76907d2ad Mon Sep 17 00:00:00 2001 From: Lixing Gu Date: Wed, 19 Apr 2017 09:21:10 -0400 Subject: [PATCH 1/7] Upload an NFP --- .../FY2017/NFP-ProportionalDCVEnhancements.md | 717 ++++++++++++++++++ .../ZoneOACalculationForProportionalDCV.png | Bin 0 -> 12851 bytes 2 files changed, 717 insertions(+) create mode 100644 design/FY2017/NFP-ProportionalDCVEnhancements.md create mode 100644 design/FY2017/ZoneOACalculationForProportionalDCV.png diff --git a/design/FY2017/NFP-ProportionalDCVEnhancements.md b/design/FY2017/NFP-ProportionalDCVEnhancements.md new file mode 100644 index 00000000000..8dddfa752e2 --- /dev/null +++ b/design/FY2017/NFP-ProportionalDCVEnhancements.md @@ -0,0 +1,717 @@ + + + + + +Proportional Demand Control Ventilation (DCV) Enhancements +================ + +### Lixing Gu + +### Florida Solar Energy Center + + - The original version + - 4/3/17 + - Revision Date + + +## Justification for New Feature ## + +When the indoor CO_{2} concentration is between C_{s - min} and C_{s - design}, a controller should adjust outdoor air intake flow V_{ot} proportionally between V_{ot - min} and V_{ot - design} (eq (17.90) in the Engineering Reference): + +
$V_{ot} = V_{ot-min} + (V_{ot-design} - V_{ot-min}) \frac{(C_{s-actual} - C_{s-min})}{(C_{s-design} - C_{s-min})} $
+ +C_{s - design} = CO\(_{2}\) concentration in the space for the design conditions, ppm + +C_{s - min}= Minimum CO\(_{2}\) concentration in the space, ppm + +C_{s - actual} = Actual CO\(_{2}\) concentration in the space, ppm + +V_{ot - design} = Required intake of outdoor air flow rate at C_{s - design} , (m\(^{3}\)/s) + +V_{ot - min} = Required intake of outdoor air flow rate at C_{s - min} , (m\(^{3}\)/s) + +V_{ot}= Required intake of outdoor air flow rate at C_{s - actual} , (m\(^{3}\)/s) + +This NFP addresses 2 requests from Carrier. The first request is to use direct inputs of design zone ventilation flow rate as V_{ot - design} and zone based ventilation flow rate V_{ot - min} to calculate proportional demand controlled ventilation rate as V_{ot}. The existing approaches use design occupancy, or occupancy schedule to determine required V_{ot - design} and V_{ot - min} OA flow rate. This new feature will allow users to select direct inputs of OA rates as a new option. + +The second request is to use the setpoint schedule value as C_{s - design}, in addition to existing calculation based on Eq. (15.759) in Engineering reference. It provides a new option to use a given value as C_{s - design}. + +## E-mail and Conference Call Conclusions ## + +None + +## Overview ## + +This NFP addresses two enhancements. The first enhancement allow additional calculation of the proportional demand controlled ventilation based on design zone ventilation flow rate and zone base ventilation flow rate (m^3/s, or percentage of design zone ventilation flow rate) from input. The second enhancement enables the proportional demand controlled ventilation features to take maximum zone CO_2 concentration as input available in the “ZoneControl:ContaminantController” object as C_{s - design}. + +## Approach ## + +### New choice of design and minimum outdoor air flow rate ### + +A new key choice will be added in the System Outdoor Air Method field of the Controller:MechanicalVentilation object as ProportionalControlBasedOnDesignOARate. The following steps will be taken to calculate V_{ot - design} and V_{ot - min}: + +1. Take any input specified in the “DesignSpecification:OutdoorAir” object to calculate the design outdoor air flow rate. + +2. If a user provides a schedule in the “OutdoorAirFlowRateFractionSchedule” field, use that schedule multiply the design outdoor air flow rate as the base ventilation flow rate. + +These two parameters are highlighted as red in Figure 1. + +![](ZoneOACalculationForProportionalDCV.png) +**Figure 1 Relevant Parameters in Zone Outdoor Air Flow Calculation for Proportional DCV** + +Equation (15.757) becomes: +V_(ot-design)= (DesignOAFlowRate)/E + +Equation (15.758) becomes: +V_(ot-min)= (DesignOAFlowRate * OAFlowRateFractionScheduleValue)/E + +The DesignOAFlowRate can be calculated with whatever inputs user specified in the “DesignSpecification:OutdoorAir” object. + +Another approach to #2 is to let user specify a base ventilation flow rate in unit of m^3/s. Which requires to add an input field named “BaseVentilationAirFlowRate (m^3/s)” to object “DesignSpecification:OutdoorAir”. + +If a user does not specify “OutdoorAirFlowRateFractionSchedule” and “BaseVentilationAirFlowRate (m^3/s)” , and has zero values for fields “Outdoor Air Flow per Person” and “Outdoor Air Flow per Floor Area”, then throw an error. + +### New choice of design zone CO2 concentration + +In order to trigger a new choice, a new field in the ZoneControl:ContaminantController object as Maximum Carbon Dioxide Concentration Schedule Name. If this field is blank, existing calculation will be performed. If this field is entered, the schedule value will be used as C_{s - design}. + + +## Testing/Validation/Data Sources ## + +Compare outputs with spread sheet calculations. + +## Input Output Reference Documentation ## + +Three objects will be modified: Controller:MechanicalVentilation, DesignSpecification:OutdoorAir, and ZoneControl:ContaminantController. + +Any revisions are highlighted in red. + +### Controller:MechanicalVentilation #### + +A new choice will be added in the System Outdoor Air Method field to specify V_{ot - design} and V_{ot - min} + +\subsection{Controller:MechanicalVentilation}\label{controllermechanicalventilation} + +This object is used in conjunction with an outdoor air controller (Ref. Controller:OutdoorAir, Field: Mechanical Ventilation Controller Name) to establish the minimum outdoor air flow rate provided by a mixed air box. + +Ventilation standards provide guidance on appropriate levels of outdoor ventilation air required for acceptable indoor air quality. The Ventilation Rate Procedure (VRP) of ASHRAE Standard 62.1-2007/2010 (\href{http://www.ashrae.org}{www.ashrae.org}) requires outdoor ventilation rates to be determined based on the floor area of each occupied zone plus the number of people in each zone and considers the zone air distribution effectiveness and system ventilation efficiency. The outdoor air ventilation rate can be reset dynamically as operating conditions change (e.g., variations in occupancy). The Controller:MechanicalVentilation object implements the VRP for calculating these outdoor air ventilation requirements and resetting them based on varying occupancy levels and zone diversification. This is particularly useful for large air distribution systems that serve a number of different zone types with varying occupancy levels. This object can also be used to model the Indoor Air Quality Procedure (IAQP) as defined in Standard 62.1 + +The first five inputs for this object are the name, the availability schedule, the zone outdoor air method, the system outdoor air method, and the zone maximum outdoor air fraction. The next three input fields define the zone name (or zone list name), the design specification outdoor air object name, and the design specification zone air distribution object name to be applied to this zone (or zone list). The last three fields are extensible + +\subsubsection{Inputs}\label{inputs-2-007} + +\paragraph{Field: Name}\label{field-name-2-006} + +The unique user assigned name for an instance of mechanical ventilation. Any other object referencing this mechanical ventilation object will use this name. + +\paragraph{Field: AvailabilitySchedule Name}\label{field-availabilityschedule-name} + +The name of a schedule whose values are greater than 0 when mechanical ventilation, as calculated by this object, is desired. If the schedule s value is 0.0, then mechanical ventilation is not available and flow will not be requested. If the schedule s value is \textgreater{} 0.0 (usually 1 is used), mechanical ventilation is available. If this field is blank, the schedule has values of 1 for all time periods. This schedule is useful for purging the building of contaminants prior to occupancy (i.e., ventilation rate per unit floor area will be provided even if the occupancy is zero). + +\paragraph{Field: Demand Controlled Ventilation}\label{field-demand-controlled-ventilation} + +This field indicates whether the air loop is capable of doing demand controlled ventilation (DCV) to vary the amount of outdoor air based on actual number of occupants in spaces. Two choices: Yes and No. Default is No. + +\paragraph{Field: System Outdoor Air Method}\label{field-system-outdoor-air-method} + +The method used to calculate the system minimum outdoor air flow. Several choices are allowed: \textbf{ZoneSum}, \textbf{VentilationRateProcedure,} \textbf{IndoorAirQualityProcedure, ProportionalControlBasedonOccupancySchedule,} \textbf{ProportionalControlBasedonDesignOccupancy,} \textbf{ProportionalControlBasedOnDesignOARate,} and \textbf{IndoorAirQualityProcedureGenericContaminant}. ZoneSum sums the outdoor air flows across all zones served by the system. VentilationRateProcedure (VRP) uses the multi-zone equations defined in 62.1-2007 to calculate the system outdoor air flow. VRP considers zone air distribution effectiveness and zone diversification of outdoor air fractions. IndoorAirQualityProcedure (IAQP) is the other procedure defined in ASHRAE Standard 62.1-2007 for calculate the amount of outdoor air necessary to maintain the levels of indoor air carbon dioxide at or below the setpoint defined in the ZoneControl:ContaminantController object. Appendix A of the ASHRAE 62.1-2010 user's manual discusses another method for implementing CO\(_{2}\)-based DCV in a single zone system. This method (Proportional Control) calculates the required outdoor air flow rate which varies in proportion to the percentage of the CO\(_{2}\) signal range and has two choices to calculate occupancy-based outdoor air rate. The ProportionalControlBasedonOccupancySchedule choice uses the real occupancy at the current time step to calculate outdoor air rate, while the ProportionalControlBasedonDesignOccupancy uses the design occupancy level to calculate outdoor air rate. The former choice is a good approach to estimate outdoor air rate. However, for practical applications, the zone controller usually does not have the real time occupancy information, and the design occupancy level is assumed. The latter choice is used in the design stage. The ProportionalControlBasedOnDesignOARate uses design outdoor air flow rate to calculate demand outdoor air flow rate. The IndoorAirQualityProcedure-GenericContaminant method calculates the amount of outdoor air necessary to maintain the levels of indoor air generic contaminant at or below the setpoint defined in the ZoneControl:ContaminantController object. + +Note: When System Outdoor Air Method = IndoorAirQualityProcedure or IndoorAirQualityProcedureGenericContaminant is specified, only the Zone \textless{}x\textgreater{} Name fields are used. The other field inputs described below are not used. + +\paragraph{Field: Zone Maximum Outdoor Air Fraction}\label{field-zone-maximum-outdoor-air-fraction} + +This positive numeric input is the zone maximum outdoor air fraction. For VAV systems, when a zone requires outdoor air higher than the user specified Zone Maximum Outdoor Air Fraction, the zone supply air flow will be increased (if damper not fully open yet) to cap the outdoor air fraction at the maximum value. This allows the system level outdoor air flow to be reduced while the total supply air flow increases to meet zone outdoor air requirement. Valid values are from 0 to 1.0. Default is 1.0 which indicates zones can have 100\% outdoor air maintaining backward compatibility. This inputs work for single and dual duct VAV systems. + +\paragraph{Field Set (Zone Name, Design Specification Outdoor Air Object Name, and Design Specification Zone Air Distribution Object Name)}\label{field-set-zone-name-design-specification-outdoor-air-object-name-and-design-specification-zone-air-distribution-object-name} + +The following three fields are needed to define the parameters for the ventilation. This object is extensible by duplicating these three fields. + +\paragraph{Field:Zone \textless{}x\textgreater{} Name}\label{fieldzone-x-name} + +The zone name or zone list to apply the ventilation rates specified in the DesignSpecification:OutdoorAir object. + +\paragraph{Field: Design Specification Outdoor Air Object Name \textless{}x\textgreater{}}\label{field-design-specification-outdoor-air-object-name-x} + +The name of the DesignSpecification:OutdoorAir object, defining the amount of outdoor air, that applies to the zone or zone list. If this field is blank, the corresponding DesignSpecification:OutdoorAir object for the zone will come from the DesignSpecification:OutdoorAir object referenced by the Sizing:Zone object for the same zone. If no such zone match is found, default values from the IDD will be used for the DesignSpecification:OutdoorAir object which is 0.0094 m3/s-person. + +If an Outdoor Air Schedule Name is specified in the DesignSpecification:OutdoorAir object, the schedule will be applied to all types of outdoor air calculations for the corresponding zone, regardless of the System Outdoor Air Method selected. If the schedule value is zero, then the zone will be completely removed from the system outdoor air calcaulations. + +\paragraph{Field: Design Specification Zone Air Distribution Object Name \textless{}x\textgreater{}}\label{field-design-specification-zone-air-distribution-object-name-x} + +The name of the DesignSpecification:ZoneAirDistribution object, defining the air distribution effectiveness and secondary recirculation air fraction, that applies to the zone or zone list. If this field is blank, the corresponding DesignSpecification:ZoneAirDistribution object for the zone will come from the DesignSpecification:ZoneAirDistribution object referenced by the Sizing:Zone object for the same zone. If no such zone match is found, default values from the IDD will be used for the DesignSpecification:ZoneAirDistribution object which are effectiveness = 1.0 and recirculation = 0.0. + +As described previously, the Controller:MechanicalVentilation object works in conjunction with Controller:OutdoorAir. As such, the minimum quantity of outdoor air delivered via the mixed air box will be the greater of: + +\begin{itemize} +\item + the minimum outdoor air flow rate calculated by the fields Minimum Outdoor Air Flow Rate, Minimum Limit and Minimum Outdoor Air Schedule Name in the associated Controller:OutdoorAir object, or +\item + the outdoor air flow rate calculated by this object. +\end{itemize} + +The actual outdoor air flow rate may be higher than the minimum if free cooling is available. Regardless, the outdoor air flow rate will not exceed the Maximum Outdoor Air Flow Rate specified in the associated Controller:OutdoorAir object or the Maximum Fraction of Outdoor Air Schedule (if specified) times the current system supply air flow rate. + +An example input for this object is shown below: + +\begin{lstlisting} + +Controller:MechanicalVentilation, + VentObject, !- Name + VentSchedule, !- Availability Schedule Name + VentilationRateProcedure, !- System Outdoor Air Method + 1.0, !- Zone Maximum Outdoor Air Fraction + Resistive Zone, !- Zone 1 Name + DSOA1, !- Design Specification Outdoor Air Object Name 1 + DSZADO1, !- Design Specification Zone Air Distribution Object Name 1 + DCV Zone List, !- Zone 2 Name + DSO_ZList, !- Design Specification Outdoor Air Object Name 2 + ; !- Design Specification Zone Air Distribution Object Name 2 + + ZoneList, + DCV Zone List, !- Zone List Name + East Zone, !- Zone Name 1 + North Zone; !- Zone Name 2 + + DesignSpecification:OutdoorAir, + DSOA1, !- Name + SUM, !- Outdoor Air Method + 0.00236, !- Outdoor Air Flow per Person + 0.000305, !- Outdoor Air Flow per Zone Floor Area + 0.0, !- Outdoor Air Flow per Zone + 0.0, !- Outdoor Air Flow Air Changes per Hour + ; !- Outdoor Air Flow Rate Fraction Schedule Name + + DesignSpecification:ZoneAirDistribution, + DSZADO1, !- Name + 1.2, !- Zone Air Distribution Effectiveness in Cooling Mode + 1.0, !- Zone Air Distribution Effectiveness in Heating Mode + , !- Zone Air Distribution Effectiveness Schedule Name + 0.3; !- Zone Secondary Recirculation Fraction +\end{lstlisting} + +### DesignSpecification:OutdoorAir + +A new optional field will be added to allow users to specify the Base Ventilation Air Flow Rate to calculate required outdoor airflow rate for proportional DCV control. + +\subsection{DesignSpecification:OutdoorAir}\label{designspecificationoutdoorair} + +This object allows for the outdoor air requirements to be defined in a common location for use by other objects. This object may be referenced by name from other objects (e.g., VAV terminal units) as required to identify an outdoor air quantity for use by that object. Note that a zone name Is not included as an input to this zone outdoor air definition and the number of people in a zone, zone floor area, and zone volume can only be determined after this object has been referenced by another. A single zone outdoor air definition may be referenced by multiple objects to specify that the same outdoor air requirements are used by those objects \emph{or} multiple zone outdoor air objects may be defined and referenced by other objects as needed. If multiple zone outdoor air definitions are used, each outdoor air definition must have a unique name. + +\subsubsection{Inputs}\label{inputs-012} + +\paragraph{Field: Name}\label{field-name-011} + +Unique identifying name. Any reference to this name by other objects will denote that the following outdoor air requirements will be used. + +\paragraph{Field: Outdoor Air Method}\label{field-outdoor-air-method} + +The input must be either \emph{Flow/Person}, \emph{Flow/Area}, \emph{Flow/Zone, AirChanges/Hour}, \emph{Sum}, or \emph{Maximum}. \emph{Flow/Person} means the program will use the input from the field \emph{Outdoor Air Flow per Person} and the actual zone occupancy to calculate a zone outdoor air flow rate. \emph{Flow/Area} means that the program will use the input from the field \emph{Outdoor Air Flow per Zone Floor Area} and the actual zone floor area as the zone outdoor air flow rate. \emph{Flow/Zone} means that the program will use the input of the field \emph{Outdoor Air Flow per Zone} as the zone outdoor air flow rate. \emph{AirChanges/Hour} means that the program will use the input from the field \emph{Air Changes per Hour} and the actual zone volume (divided by 3600 seconds per hour) as the zone outdoor air flow rate. \emph{Sum} means that the flows calculated from the fields \emph{Outdoor Air Flow per Person,} \emph{Outdoor Air Flow per Area, Outdoor Air Flow per Zone}, and \emph{Air Changes per Hour} (using the associated conversions to m\(^{3}\)/s for each field) will be added to obtain the zone outdoor air flow rate. \emph{Maximum} means that the maximum flow derived from \emph{Outdoor Air Flow per Person,} \emph{Outdoor Air Flow per Area, Outdoor Air Flow per Zone,} and \emph{Air Changes per Hour} (using the associated conversions to m\(^{3}\)/s for each field) will be used as the zone outdoor air flow rate. The default is \emph{Flow/Person}. + +\paragraph{Field: Outdoor Air Flow per Person}\label{field-outdoor-air-flow-per-person} + +The design outdoor air volume flow rate per person for this zone in cubic meters per second per person. The default is 0.00944 (20 cfm per person). An outdoor air flow rate is calculated based on the total number of people for all People statements assigned to the zone. Occupancy schedule values \emph{are not} applied during sizing calculations and \emph{are} applied during the remainder of the simulation. This input is used if \emph{Outdoor Air Method} is one of \emph{Outdoor Air Flow per Person}, \emph{Sum}, or \emph{Maximum}. + +\paragraph{Field: Outdoor Air Flow per Zone Floor Area}\label{field-outdoor-air-flow-per-zone-floor-area} + +The design outdoor air volume flow rate per square meter of floor area (units are m\(^{3}\)/s-m\(^{2}\)). This input is used if \emph{Outdoor Air Method} is \emph{Flow/Area, Sum} or \emph{Maximum}. The default value for this field is 0. + +\paragraph{Field: Outdoor Air Flow per Zone}\label{field-outdoor-air-flow-per-zone} + +The design outdoor air flow rate for this zone in cubic meters per second. This input field is used if \emph{Outdoor Air Method} is \emph{Flow/Zone, Sum} or \emph{Maximum}. The default value for this field is 0. + +\paragraph{Field: Outdoor Air Flow Changes per Hour}\label{field-outdoor-air-flow-changes-per-hour} + +The design outdoor air volume flow rate in air changes per hour. This factor is used along with the Zone Volume and converted to cubic meters per second. This input field is used if \emph{Outdoor Air Method} is \emph{AirChanges/Hour, Sum} or \emph{Maximum}. The default value for this field is 0. + +\paragraph{Field: Outdoor Air Schedule Name}\label{field-outdoor-air-schedule-name} + +This field is the name of schedule that defines how outdoor air requirements change over time. The field is optional. If left blank, the schedule defaults to 1.0. If used, then the schedule values are multiplied by the outdoor air flow rate defined by the previous fields. The schedule values must be between 0 and 1, inclusive. + +If this DesignSpecification:OutdoorAir object is referenced by a Controller:MechanicalVentilation object (either directly or indirectly through Sizing:Zone), the schedule will be applied to all types of outdoor air calculations for the corresponding zone, regardless of the System Outdoor Air Method selected. If the schedule value is zero, then the zone will be completely removed from the system outdoor air calcaulations. + + N5; \field Base Ventilation Air Flow Rate +\paragraph{Field: Base Ventilation Air Flow Rate}\label{field-base-ventilation-air-flow-rate} + + This field specifies the value of the minimum outdoor air flow rate used in the proportional demand controlled ventilation (DCV) control. This input is only used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy or ProportionalControlBasedOnDesignOARate in Controller:MechanicalVentilation, and the value of above schedule is zero. + +An IDF example: + +\begin{lstlisting} + +DesignSpecification:OutdoorAir + ZoneOAData, !- Name + Sum, !- Outdoor Air Method + 0.00944, !- Outdoor Air Flow per Person {m3/s} + 0.00305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2} + , !- Outdoor Air Flow per Zone {m3/s} + , !- Outdoor Air Flow Air Changes per Hour + OARequirements Sched; !- Outdoor Air Schedule Name + + + Schedule:Compact, + OARequirements Sched, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: Weekdays SummerDesignDay WinterDesignDay, !- Field 2 + Until: 24:00, 1.0, !- Field 4 + For: AllOtherDays, !- Field 5 + Until: 24:00, 0.5; !- Field 7 +\end{lstlisting} + +### ZoneControl:ContaminantController + +A new field will be added to allow users to specify the design CO2 concentration level, in addition to existing calculation. + +\subsection{ZoneControl:ContaminantController}\label{zonecontrolcontaminantcontroller} + +The ZoneControl:ContaminantController object is used for any of the following two purposes based on the system outdoor air method specified in the Controller:MechanicalVentilation. + +\begin{enumerate} +\def\labelenumi{\arabic{enumi})} +\item + To control a zone to a specified indoor level of contaminants. When this zone is served by an AirLoopHVAC, the other zones served by the same AirLoopHVAC will have the same specified indoor level, if no objects in the other zones served by the same AirLoop are specified. Currently, the available contaminant controls are carbon dioxide and generic contaminant controls. The specified carbon dioxide setpoint is used to calculate the required outdoor airflow rate through the HVAC system to reach the setpoint. The AirLoopHVAC system outdoor flow rate is realized by the Controller:MechanicalVentilation object with System Outdoor Air Method = IndoorAirQualityProcedure.The specified generic contaminant setpoint is used to calculate the required outdoor airflow rate through the HVAC system to reach the setpoint. The AirLoopHVAC system outdoor flow rate is realized by the Controller:MechanicalVentilation object with System Outdoor Air Method = IndoorAirQualityProcedure-GenericContaminant. +\item + To specify minimum or maximum CO2 concentration schedule name for a zone. The AirLoopHVAC system outdoor flow rate is realized by the Controller:MechanicalVentilation object with System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule, or ProportionalControlBasedOnDesignOccupancy, or ProportionalControlBasedOnDesignOARate. Carbon Dioxide Control Availability Schedule Name determines the availability of ProportionalControl . +\end{enumerate} + +For the first purpose above, when multiple zones are served by an AirLoop, those zones that do not have a contaminant controller object specified in the input data file are automatically assigned a carbon dioxide setpoint. Zone objects entered in the input data file are internally assigned an index number from 1 to n (first defined Zone object = 1, next Zone object defined in the input file = 2, etc.). For zones served by an AirLoop that do not have a contaminant controller specified, the zone s carbon dioxide setpoint will be the same as the zone with the next highest zone index number that has a contaminant controller specified. If a zone with a higher index number and contaminant controller specified does not exist, then the zone with the next lowest zone index number that has a contaminant controller specified will be used. For example, assume an AirLoop serves zones 1 through 5, but one ZoneControl:ContaminantController object is specified for zone 2, a second ZoneControl:ContaminantController object is specified for zone 4, and no ZoneControl:ContaminantController objects are specified for zones 1, 3 and 5. In this case, zone 1 will be assigned the carbon dioxide setpoint schedule that was specified for zone 2, and zones 3 and 5 will be assigned the carbon dioxide setpoint schedule that was specified for zone 4. + +\subsubsection{Inputs}\label{inputs-14-017} + +\paragraph{Field: Name}\label{field-name-12-013} + +Unique identifying name for the ZoneControl:ContaminantController. + +\paragraph{Field: Zone Name}\label{field-controlled-zone-name-000} + +Name of the zone that is being controlled. + +\paragraph{Field:Carbon Dioxide Control Availability Schedule Name}\label{fieldcarbon-dioxide-control-availability-schedule-name} + +This field contains the name of a schedule that determines whether or not the ZoneControl:ContaminantController is available. When the schedule value is zero, the ZoneControl:ContaminantController is bypassed (not available to operate). When the schedule value is greater than zero, the ZoneControl:ContaminantController is available and will be used to calculate the required outdoor airflow rate to reach the carbon dioxide setpoint. If this field is left blank, the schedule has a value of 1 for all time periods. Schedule values must be between 0 and 1. + +\paragraph{Field:Carbon Dioxide Setpoint Schedule Name}\label{fieldcarbon-dioxide-setpoint-schedule-name} + +This field contains the name of a schedule that contains the zone carbon dioxide concentration setpoint as a function of time. The units for carbon dioxide setpoint are ppm. The setpoint values in the schedule must be between 0 and 2000 ppm. . This field is used when the field System Outdoor Air Method = IndoorAirQualityProcedure in the Controller:MechanicalVentilation object. + +\paragraph{Field:Minimum Carbon Dioxide Concentration Schedule Name}\label{fieldminimum-carbon-dioxide-concentration-schedule-name} + +This field contains the name of a schedule that contains the minimum zone carbon dioxide concentration setpoint as a function of time. The units for carbon dioxide setpoint are ppm. This field is used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy, or ProportionalControlBasedOnDesignOARate in the Controller:MechanicalVentilation object. + + \paragraph{Field:Maximum Carbon Dioxide Concentration Schedule Name}\label{fieldmaximum-carbon-dioxide-concentration-schedule-name} + +This field contains the name of a schedule that contains the maximum zone carbon dioxide concentration as a function of time and is used to calculate design CO2 concentration level in the proportional ventilation control. The units for carbon dioxide setpoint are ppm. This field is used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule, or ProportionalControlBasedOnDesignOccupancy, or ProportionalControlBasedOnDesignOARate in the Controller:MechanicalVentilation object. + +\paragraph{Field: Generic Contaminant Control Availability Schedule Name}\label{field-generic-contaminant-control-availability-schedule-name} + +This field contains the name of a schedule that determines whether or not the ZoneControl:ContaminantController is available. When the schedule value is zero, the generic contaminant control will not be performed. When the schedule value is greater than zero, the ZoneControl:ContaminantController is available and will be used to calculate the required outdoor airflow rate to reach the generic contaminant setpoint. If this field is left blank, the schedule has a value of 1 for all time periods. Schedule values must be between 0 and 1. + +\paragraph{Field: Generic Contaminant Setpoint Schedule Name}\label{field-generic-contaminant-setpoint-schedule-name} + +This field contains the name of a schedule that contains the zone generic contaminant concentration setpoint as a function of time. The units for generic contaminant setpoint are ppm. The setpoint values in the schedule must be\textgreater{} = 0. + + +An IDF example is provided below: + +\begin{lstlisting} + +ZoneControl:ContaminantController, + CO2 Controller1, !- Name + EAST ZONE, !- Zone Name + CO2AvailSchedule, !- Carbon Dioxide Control Availability Schedule Name + CO2SetpointSchedule, !- Carbon Dioxide Setpoint Schedule Name + , !- Minimum Carbon Dioxide Concentration Schedule Name + , !- Maximum Carbon Dioxide Concentration Schedule Name + GCAvailSchedule, !- Generic Contaminant Control Availability Schedule Name + GCSetpointSchedule; !- Generic Contaminant Setpoint Schedule Name +\end{lstlisting} + +## Input Description ## + +This section has three revised objects: ZoneControl:ContaminantController, Controller:MechanicalVentilation, and DesignSpecification:OutdoorAir. + +### ZoneControl:ContaminantController + + ZoneControl:ContaminantController, + \memo Used to control a zone to a specified indoor level of CO2 or generic contaminants, or + \memo to specify minimum CO2 concentration schedule name for a zone. + \min-fields 4 + A1 , \field Name + \required-field + A2 , \field Zone Name + \required-field + \type object-list + \object-list ZoneNames + A3 , \field Carbon Dioxide Control Availability Schedule Name + \note Availability schedule name for CO2 controller. Schedule value > 0 means the CO2 + \note controller is enabled. If this field is blank, then CO2 controller is always enabled. + \type object-list + \object-list ScheduleNames + A4 , \field Carbon Dioxide Setpoint Schedule Name + \type object-list + \object-list ScheduleNames + \note Schedule values should be carbon dioxide concentration in parts per million (ppm) + A5 , \field Minimum Carbon Dioxide Concentration Schedule Name + \type object-list + \object-list ScheduleNames + \note Schedule values should be carbon dioxide concentration in parts per + \note million (ppm) + \note This field is used when the field System Outdoor Air Method = + \note ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy + or ProportionalControlBasedOnDesignOARate + + \note in Controller:MechanicalVentilation + A6 , \field Maximum Carbon Dioxide Concentration Schedule Name + + \type object-list + \object-list ScheduleNames + \note Schedule values should be carbon dioxide concentration in parts per + \note million (ppm) + \note This field is used when the field System Outdoor Air Method = + \note ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy or ProportionalControlBasedOnDesignOARate. + + A7 , \field Generic Contaminant Control Availability Schedule Name + \note Availability schedule name for generic contaminant controller. Schedule value > 0 means + \note the generic contaminant controller is enabled. If this field is blank, then generic + \note contaminant controller is always enabled. + \type object-list + \object-list ScheduleNames + A8 ; \field Generic Contaminant Setpoint Schedule Name + \type object-list + \object-list ScheduleNames + \note Schedule values should be generic contaminant concentration in parts per + \note million (ppm) + \note This field is used when the field System Outdoor Air Method = + \note IndoorAirQualityProcedureGenericContaminant in Controller:MechanicalVentilation + +### Controller:MechanicalVentilation + + Controller:MechanicalVentilation, + \memo This object is used in conjunction with Controller:OutdoorAir to specify outdoor + \memo ventilation air based on outdoor air specified in the DesignSpecification:OutdoorAir object + \memo The Controller:OutdoorAir object is associated with a specific air loop, so the + \memo outdoor air flow rates specified in Controller:MechanicalVentilation correspond to the zones + \memo attached to that specific air loop. + \min-fields 8 + \extensible:3 - repeat last three fields, remembering to remove ; from "inner" fields. + \memo Duplicate groups of Zone name, Design Specification Outdoor Air Object Name, + \memo and Design Specification Zone Air Distribution Object Name to increase allowable number of entries + A1, \field Name + \required-field + \type alpha + \reference ControllerMechanicalVentNames + A2, \field Availability Schedule Name + \note If this field is blank, the controller uses the values from the associated Controller:OutdoorAir. + \type object-list + \object-list ScheduleNames + \note Schedule values greater than 0 indicate mechanical ventilation is enabled + A3, \field Demand Controlled Ventilation + \type choice + \key Yes + \key No + \default No + A4, \field System Outdoor Air Method + \type choice + \key ZoneSum + \key VentilationRateProcedure + \key IndoorAirQualityProcedure + \key ProportionalControlBasedOnDesignOccupancy + \key ProportionalControlBasedonOccupancySchedule + \key IndoorAirQualityProcedureGenericContaminant + \key IndoorAirQualityProcedureCombined + + \key ProportionalControlBasedOnDesignOARate + + \default VentilationRateProcedure + N1, \field Zone Maximum Outdoor Air Fraction + \type real + \default 1.0 + \minimum> 0.0 + \units dimensionless + A5, \field Zone 1 Name + \begin-extensible + \required-field + \type object-list + \object-list ZoneAndZoneListNames + \note A zone name or a zone list name may be used here + A6, \field Design Specification Outdoor Air Object Name 1 + \note If left blank, the name will be taken from the Sizing:Zone object for this zone. + \note If no specification is found for this zone, then the default of 0.00944 m3/s-person will be used. + \type object-list + \object-list DesignSpecificationOutdoorAirNames + A7, \field Design Specification Zone Air Distribution Object Name 1 + \note If left blank, the name will be taken from the Sizing:Zone object for this zone. + \note If no specification is found for this zone, then effectivness will be 1.0 and + \note and secondary recirculation will be zero. + \type object-list + \object-list DesignSpecificationZoneAirDistributionNames + A8, \field Zone 2 Name + \type object-list + \object-list ZoneAndZoneListNames + \note A zone name or a zone list name may be used here + A9, \field Design Specification Outdoor Air Object Name 2 + \type object-list + \object-list DesignSpecificationOutdoorAirNames + A10, \field Design Specification Zone Air Distribution Object Name 2 + \type object-list + \object-list DesignSpecificationZoneAirDistributionNames + A11, \field Zone 3 Name + \type object-list + \object-list ZoneAndZoneListNames + \note A zone name or a zone list name may be used here + A12, \field Design Specification Outdoor Air Object Name 3 + \type object-list + \object-list DesignSpecificationOutdoorAirNames + A13, \field Design Specification Zone Air Distribution Object Name 3 + \type object-list + \object-list DesignSpecificationZoneAirDistributionNames + A14, \field Zone 4 Name + \type object-list + \object-list ZoneAndZoneListNames + \note A zone name or a zone list name may be used here + A15, \field Design Specification Outdoor Air Object Name 4 + \type object-list + \object-list DesignSpecificationOutdoorAirNames + A16, \field Design Specification Zone Air Distribution Object Name 4 + \type object-list + \object-list DesignSpecificationZoneAirDistributionNames + A17, \field Zone 5 Name + \type object-list + \object-list ZoneAndZoneListNames + \note A zone name or a zone list name may be used here + A18, \field Design Specification Outdoor Air Object Name 5 + \type object-list + \object-list DesignSpecificationOutdoorAirNames + A19, \field Design Specification Zone Air Distribution Object Name 5 + \type object-list + \object-list DesignSpecificationZoneAirDistributionNames + A20, \field Zone 6 Name + \type object-list + \object-list ZoneAndZoneListNames + \note A zone name or a zone list name may be used here + A21, \field Design Specification Outdoor Air Object Name 6 + \type object-list + \object-list DesignSpecificationOutdoorAirNames + A22, \field Design Specification Zone Air Distribution Object Name 6 + \type object-list + \object-list DesignSpecificationZoneAirDistributionNames + A23, \field Zone 7 Name + \type object-list + \object-list ZoneAndZoneListNames + \note A zone name or a zone list name may be used here + A24, \field Design Specification Outdoor Air Object Name 7 + \type object-list + \object-list DesignSpecificationOutdoorAirNames + A25, \field Design Specification Zone Air Distribution Object Name 7 + \type object-list + \object-list DesignSpecificationZoneAirDistributionNames + .... + +### DesignSpecification:OutdoorAir + + DesignSpecification:OutdoorAir, + \min-fields 1 + \memo This object is used to describe general outdoor air requirements which + \memo are referenced by other objects. + A1, \field Name + \required-field + \type alpha + \reference DesignSpecificationOutdoorAirNames + A2, \field Outdoor Air Method + \type choice + \key Flow/Person + \key Flow/Area + \key Flow/Zone + \key AirChanges/Hour + \key Sum + \key Maximum + \default Flow/Person + \note Flow/Person => Outdoor Air Flow per Person * Occupancy = Design Flow Rate, + \note Flow/Area => Outdoor Air Flow per Zone Floor Area * Zone Floor Area = Design Flow Rate, + \note Flow/Zone => Outdoor Air Flow per Zone = Design Flow Rate, + \note AirChanges/Hour => Outdoor Air Flow Air Changes per Hour * Zone Volume adjusted for m3/s = Design Flow Rate + N1, \field Outdoor Air Flow per Person + \type real + \units m3/s-person + \default 0.00944 + \minimum 0 + \note 0.00944 m3/s is equivalent to 20 cfm per person + \note This input is only used if the field Outdoor Air Method is Flow/Person, Sum, or Maximum + \note For sizing, the design number of occupants is used. For outdoor air flow control, the use + \note of design occupants or current occupants depends on the component and DCV options. + \note AirTerminal:SingleDuct:VAV:NoReheat, AirTerminal:SingleDuct:VAV:Reheat use the DCV flag specified in Controller:MechanicalVentilation + \note AirTerminal:DualDuct:VAV:OutdoorAir and ZoneHVAC:IdealLoadsAirSystem have their own DCV control input. + \note ZoneHVAC:FourPipeFanCoil always uses current occupants. + N2, \field Outdoor Air Flow per Zone Floor Area + \units m3/s-m2 + \default 0.0 + \minimum 0 + \note This input is only used if the field Outdoor Air Method is Flow/Area, Sum, or Maximum + N3, \field Outdoor Air Flow per Zone + \type real + \units m3/s + \default 0.0 + \minimum 0 + \note This input is only used if the field Outdoor Air Method is Flow/Zone, Sum, or Maximum + N4, \field Outdoor Air Flow Air Changes per Hour + \units 1/hr + \type real + \default 0.0 + \minimum 0 + \note This input is only used if the field Outdoor Air Method is AirChanges/Hour, Sum, or Maximum + A3, \field Outdoor Air Schedule Name + \type object-list + \object-list ScheduleNames + \note Schedule values are multiplied by the Outdoor Air Flow rate calculated using + \note the previous four inputs. Schedule values are limited to 0 to 1. If left blank, the schedule defaults to 1.0. + \note This schedule is ignored during sizing. All other components which reference this design specification + \note use the current schedule value to calculate the current outdoor air requirement. This includes + \note AirTerminal:SingleDuct:VAV:NoReheat, AirTerminal:SingleDuct:VAV:Reheat, AirTerminal:DualDuct:VAV:OutdoorAir, + \note ZoneHVAC:FourPipeFanCoil, and ZoneHVAC:IdealLoadsAirSystem. + \note This schedule will also be applied by Controller:MechanicalVentilation for all System Outdoor Air Methods. + + N5; \field Base Ventilation Air Flow Rate + + \units m3/s + \type real + \default 0.0 + \minimum 0 + \note This input is only used when the field System Outdoor Air Method = + \note ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy + \note or ProportionalControlBasedOnDesignOARate in Controller:MechanicalVentilation + + + +## Outputs Description ## + +insert text + +## Engineering Reference ## + +\subsection{Proportional Control}\label{proportional-control} + +The control has three choices: ProportionalControlBasedonOccupancySchedule, ProportionalControlBasedonDesignOccupancy, and ProportionalControlBasedOnDesignOARate . The difference is occupancy level in the first two choices. The former uses real time occupancy, while the latter uses design occupancy level. The third choice is used to calculate the ourdoor airflow rate based on design outdoor air flow rate, specified in the DesignSpecification:OutdoorAir object. Like Ventilation Rate Procedure and the Indoor Air Quality Procedure, the following three objects must be included in the input data file in order to model CO\(_{2}\)-based DCV with Proportional Control: + +\begin{itemize} + \item \textbf{AirLoopHVAC:OutdoorAirSystem} to simulate the mixed air box of the air loop + \item \textbf{Controller:MechanicalVentilation} to determine the minimum outside air flow rate to be provided by the mixed air box + \item \textbf{Controller:OutdoorAir} to control the outside air flow rate introduced via the mixed air box +\end{itemize} + +For the i-th zone, the outdoor air mass flow rate provided by the air loop is calculated as below: + +1)~~~The required intake flow of outdoor air for the design zone population, \emph{P\(_{z,i}\)} + +\begin{equation} +{V_{ot - design,i}} = \frac{{\left( {{R_{p,i}}.{P_{z,i}} \times {SchedFrac_i}} \right) + ({R_{a,i}}.{A_{z,i}} \times {SchedFrac_i})}}{{{E_i}}} +\end{equation} + + if ProportionalControlBasedOnDesignOARate is specified, the required intake flow rate will be revised as: + + \begin{equation} +{V_{ot - design,i}} = \frac{Design OutDoor Air Flow Rate_i} {E_i} +\end{equation} + + +2)~~~The required intake flow of outdoor air when the zone is unoccupied i.e.~ \emph{P\(_{z,i}\)} = 0 + +\begin{equation} +{V_{ot - min,i}} = \frac{{({R_{a,i}}.{A_{z,i}} \times {SchedFrac_i})}}{{{E_i}}} +\end{equation} + + if ProportionalControlBasedOnDesignOARate is specified, the required intake flow rate will be revised as: + + \begin{equation} +{V_{ot - design,i}} = \frac{ {Design OutDoor Air Flow Rate_i} \times {SchedFrac_i} } {E_i} +\end{equation} + + + +3)~~~The target indoor CO\(_{2}\) concentration at \({V_{ot - design,i}}\) + +\begin{equation} +{C_{s - design,i}} = {C_o} + \frac{N}{{\left( {{V_{ot - design,i}}/{P_{z,i}}} \right)}} +\end{equation} + + When the field of Maximum Carbon Dioxide Concentration Schedule Name is entered, the schedule value is set to {C_{s - design,i}}. + +4)~~~The target indoor CO\(_{2}\) concentration at \({V_{ot - min}}\) ~is either a user input in the object ZoneControl:ContaminantController or equal to the outdoor CO\(_{2}\) concentration. The default is outdoor CO\(_{2}\) concentration. + +\begin{equation} +{C_{s - min,i}} = {C_o} +\end{equation} + +When the indoor CO\(_{2}\) concentration equals \({C_{s - design,i}}\) , \({V_{ot}}\) ~should equal \({V_{ot - design,i}}\) . When the indoor CO\(_{2}\) concentration equals \({C_{s - min,i}}\) , \({V_{ot}}\) ~should equal \({V_{ot - min,i}}\) . When the indoor CO\(_{2}\) concentration is between \({C_{s - min,i}}\) ~and \({C_{s - design,i}}\) , a controller should adjust outdoor air intake flow \({V_{ot}}\) ~proportionally between \({V_{ot - min,i}}\) ~and \({V_{ot - design,i}}\) : + +\begin{equation} +{V_{ot,i}} = {V_{ot - min,i}} + ({V_{ot - design,i}} - {V_{ot - min,i}})\frac{{({C_{s - actual,i}} - {C_{s - min,i}})}}{{({C_{s - design,i}} - {C_{s - min,i}})}} +\end{equation} + +Where, + +\({R_{p,i}}\) ~ = Required outdoor air flow rate per person, (m\(^{3}\)/s)/person + +\({R_{a,i}}\) ~ = Required outdoor air flow rate per unit area, (m\(^{3}\)/s)/m\(^{2}\) + +\({P_{z,i}}\) ~ = Design zone population, number of people + +\({SchedFrac_i}\) ~ = the Outdoor Air Schedule value for the zone, if specified in the corresponding DesignSpecification:OutdoorAir object (defaults to 1.0) + +When ProportionalControlBasedonDesignOccupancy is specified, number of people = design occupancy * current schedule value. When ProportionalControlBasedonDesignOccupancy is specified, number of people = design occupancy. + +\({A_{z,i}}\) ~ = Zone floor area, m\(^{2}\) + +\({E_i}\) ~ = The zone air distribution effectiveness + +\(N\) ~ = CO\(_{2}\) generation rate, (m\(^{3}\)/s)/person (Specified in the People object) + +\({C_o}\) ~ = CO\(_{2}\) concentration in the outdoor air, ppm + +\({C_{s - design,i}}\) ~ = CO\(_{2}\) concentration in the space for the design conditions, ppm + +\({C_{s - min,i}}\) ~ = Minimum CO\(_{2}\) concentration in the space, ppm + +\({C_{s - actual,i}}\) ~ = Actual CO\(_{2}\) concentration in the space, ppm + +\({V_{ot - design,i}}\) ~ = Required intake of outdoor air flow rate at \({C_{s - design}}\) , (m\(^{3}\)/s) + +\({V_{ot - min,i}}\) ~ = Required intake of outdoor air flow rate at \({C_{s - min}}\) , (m\(^{3}\)/s) + +\({V_{ot,i}}\) ~ = Required intake of outdoor air flow rate at \({C_{s - actual}}\) , (m\(^{3}\)/s) + +Except \({C_{s - min,i}}\) ~above, all other variables are already available in EnergyPlus (See Eng. Reference for ``Ventilation Rate Procedure'' above for further details). \({C_{s - min}}\) ~can be specified in the ZoneControl:ContaminantController object as a schedule. If~ \({C_{s - min}}\) ~is not specified in the ZoneControl:ContaminantController object, then outdoor air CO2 concentration will be used as the minimum. In order for ``ProportionalControl'' to be active, the following conditions must be met, otherwise default ``VentilationProcedure'' will be modeled and a warning will be issued during runtime: + +1)~~~``Carbon Dioxide Control Availability Schedule Name'' input field in the ZoneControl:ContaminantController object must be greater than zero. + +2)~~~CO2 gain from people in the zone must be greater than zero. + +3)~~~``Outdoor air flow per person'' and ``Outdoor air flow per zone floor area'' in the corresponding ``DesignSpecification:OutdoorAir'' object must be greater than zero. + + +## Example File and Transition Changes ## + +An existing example file will be modified to show this new feature. + +A transition change is needed for the ZoneControl:ContaminantController object, because a new field is proposed. + +## References ## + +Enhancement items from Carrier + +1. [4-ModifyProportionalDCVFeatures-1-Carrier.docx] (https://energyplus.uservoice.com/forums/258860-energyplus/suggestions/14747307-proportional-dcv-with-user-specified-design-zone-v) +2. [5-ModifyProportionalDCVFeatures-2-Carrier.docx] (https://energyplus.uservoice.com/forums/258860-energyplus/suggestions/14747292-proportional-dcv-with-user-specified-target-co2-co) + diff --git a/design/FY2017/ZoneOACalculationForProportionalDCV.png b/design/FY2017/ZoneOACalculationForProportionalDCV.png new file mode 100644 index 0000000000000000000000000000000000000000..21b9c447fe6bd1e1c88b7658683e42db40cfe54f GIT binary patch literal 12851 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 literal 0 HcmV?d00001 From 1f6c746da04e9a314eb20d6aba9802a03328385b Mon Sep 17 00:00:00 2001 From: Lixing Gu Date: Thu, 27 Apr 2017 16:05:58 -0400 Subject: [PATCH 2/7] Revised NFP based on comments and added design document --- .../FY2017/NFP-ProportionalDCVEnhancements.md | 264 +++++++++++++++++- 1 file changed, 257 insertions(+), 7 deletions(-) diff --git a/design/FY2017/NFP-ProportionalDCVEnhancements.md b/design/FY2017/NFP-ProportionalDCVEnhancements.md index 8dddfa752e2..0ae0c7a2451 100644 --- a/design/FY2017/NFP-ProportionalDCVEnhancements.md +++ b/design/FY2017/NFP-ProportionalDCVEnhancements.md @@ -23,9 +23,12 @@ Proportional Demand Control Ventilation (DCV) Enhancements ### Florida Solar Energy Center + - The first revision + - 4/24/17 + - Added E-mail communications and change a new field name from "Base Ventilation Flow Rate" to "Proportional Control Minimum Outdoor Air Flow Rate" in the DesignSpecification:OutdoorAir object. - The original version - 4/3/17 - - Revision Date + ## Justification for New Feature ## @@ -52,7 +55,100 @@ The second request is to use the setpoint schedule value as C_{s - design}, in a ## E-mail and Conference Call Conclusions ## -None + +-----Original Message----- +From: Michael J Witte [mailto:mjwitte@gard.com] +Sent: Friday, April 21, 2017 3:02 PM +To: Lixing Gu +Cc: 'Wu, Tiejun UTC CCS' +Subject: Re: [energyplusdevteam] NFP to enhance Proportional Demand Control Ventilation (DCV) + +I see. I'm ok then with the new schedule in the contaminant controller. + +Mike + + + +On 4/21/2017 1:58 PM, Lixing Gu wrote: +> Mike: +> +> Thanks for providing valuable comments to me. +> +> Carbon Dioxide Setpoint Schedule Name +> +> Carrier proposed to use the setpoint as C_design. The current program has its own way to calculate C_design. In order to trigger E+ to use the setpoint as C_design, I need an input to tell me. A new field is an input trigger. I talked to Tiejun before and he agreed with me. +> +> However, I may not use the new field, if the new choice of ProportionalControlBasedOnDesignOARate is used to set up 3 values: +> +> V_ot_min, V_ot_design and C_design. +> +> Since V_ot calculation and C_design are from 2 enhancement items, I assume V_ot and C_design can be independent. +> +> I am open to anyway. +> +> Thanks. +> +> Gu +> +> -----Original Message----- +> From: Michael J Witte [mailto:mjwitte@gard.com] +> Sent: Friday, April 21, 2017 12:05 PM +> To: Lixing Gu +> Cc: Wu, Tiejun UTC CCS +> Subject: Re: [energyplusdevteam] NFP to enhance Proportional Demand +> Control Ventilation (DCV) +> +> Gu: +> +> I'll review. +> +> For the first part "Proportional DCV with user specified design zone ventilation flow rate and base ventilation flow rate" we need to be careful about the use of "Outdoor Air Schedule Name". The way it is currently describe is that it multiplies the result of any OA calculation method, so the use of the "Base Ventilation Air Flow Rate" +> field should not be dependent on this schedule. +> +> Rather, the specs for "Base Ventilation Flow Rate" (actually, I'd suggest a more explicit name, see below) should be completely independent of what's input for the OA Schedule. +> +> I could see a group of fields for this, but maybe this is overkill: +> +> "Proportional Control Minimum Outdoor Air Flow Rate Input Method" +> (FractionOfDesignFlowRate, SpecifiedFlowRate) +> +> "Proportional Control Minimum Outdoor Air Fraction" (used when +> FractionOfDesignFlowRate is specified above) +> +> "Proportional Control Minimum Outdoor Air Flow Rate" (used when +> SpecifiedFlowRate is specified above) +> +> "Proportional Control Minimum Outdoor Air Flow Rate Schedule" (applied +> to the flow rate specified above) +> +> Tiejun: Comments? If this it too flexible, then we could stick with one field for "Proportional Control Minimum Outdoor Air Flow Rate" Or we could even make it more flexible and replicate all of the design OA flow rate fields (method, flow/person, flow/area, flow, and schedule). +> +> +> And back to Gu: +> +> For the second part, why did you propose adding a new schedule for Max +> CO2 rather than use the existing input for "Carbon Dioxide Setpoint Schedule Name"? +> +> Mike +> +> +> +> On 4/19/2017 8:26 AM, Lixing Gu wrote: +>> Team: +>> +>> An NFP to enhance Proportional Demand Control Ventilation (DCV) is available on github. +>> +>> https://github.com/NREL/EnergyPlus/blob/ProportionalDCVEnhancements/d +>> e sign/FY2017/NFP-ProportionalDCVEnhancements.md +>> +>> Comments are welcome via e-mail or github. Please let me know if you wish to be a reviewer for this task. +>> +>> Thanks. +>> +>> Gu +>> +>> + ## Overview ## @@ -81,9 +177,9 @@ V_(ot-min)= (DesignOAFlowRate * OAFlowRateFractionScheduleValue)/E The DesignOAFlowRate can be calculated with whatever inputs user specified in the “DesignSpecification:OutdoorAir” object. -Another approach to #2 is to let user specify a base ventilation flow rate in unit of m^3/s. Which requires to add an input field named “BaseVentilationAirFlowRate (m^3/s)” to object “DesignSpecification:OutdoorAir”. +Another approach to #2 is to let user specify a base ventilation flow rate in unit of m^3/s. Which requires to add an input field named “Proportional Control Minimum Outdoor Air Flow Rate (m^3/s)” to object “DesignSpecification:OutdoorAir”. -If a user does not specify “OutdoorAirFlowRateFractionSchedule” and “BaseVentilationAirFlowRate (m^3/s)” , and has zero values for fields “Outdoor Air Flow per Person” and “Outdoor Air Flow per Floor Area”, then throw an error. +If a user does not specify “OutdoorAirFlowRateFractionSchedule” and “Proportional Control Minimum Outdoor Air Flow Rate (m^3/s)” , and has zero values for fields “Outdoor Air Flow per Person” and “Outdoor Air Flow per Floor Area”, then throw an error. ### New choice of design zone CO2 concentration @@ -243,8 +339,8 @@ This field is the name of schedule that defines how outdoor air requirements cha If this DesignSpecification:OutdoorAir object is referenced by a Controller:MechanicalVentilation object (either directly or indirectly through Sizing:Zone), the schedule will be applied to all types of outdoor air calculations for the corresponding zone, regardless of the System Outdoor Air Method selected. If the schedule value is zero, then the zone will be completely removed from the system outdoor air calcaulations. - N5; \field Base Ventilation Air Flow Rate -\paragraph{Field: Base Ventilation Air Flow Rate}\label{field-base-ventilation-air-flow-rate} + N5; \field Proportional Control Minimum Outdoor Air Flow Rate +\paragraph{Field: Proportional Control Minimum Outdoor Air Flow Rate }\label{field-base-ventilation-air-flow-rate} This field specifies the value of the minimum outdoor air flow rate used in the proportional demand controlled ventilation (DCV) control. This input is only used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy or ProportionalControlBasedOnDesignOARate in Controller:MechanicalVentilation, and the value of above schedule is zero. @@ -584,7 +680,7 @@ This section has three revised objects: ZoneControl:ContaminantController, Contr \note ZoneHVAC:FourPipeFanCoil, and ZoneHVAC:IdealLoadsAirSystem. \note This schedule will also be applied by Controller:MechanicalVentilation for all System Outdoor Air Methods. - N5; \field Base Ventilation Air Flow Rate + N5; \field Proportional Control Minimum Outdoor Air Flow Rate \units m3/s \type real @@ -715,3 +811,157 @@ Enhancement items from Carrier 1. [4-ModifyProportionalDCVFeatures-1-Carrier.docx] (https://energyplus.uservoice.com/forums/258860-energyplus/suggestions/14747307-proportional-dcv-with-user-specified-design-zone-v) 2. [5-ModifyProportionalDCVFeatures-2-Carrier.docx] (https://energyplus.uservoice.com/forums/258860-energyplus/suggestions/14747292-proportional-dcv-with-user-specified-target-co2-co) +## Design Document + +The new feature does not create any new modules. Instead, it modifies 6 modules listed below + +MixedAir +DataSizing +SizingManager +DataContaminantBalance +DataHeatBalance +ZoneContaminantPredictorCorrector + +### DataSizng + +#### New global variable + +A new variable to define a new choice of Outdoor Air Method as ProportionalControlBasedOnDesignOARate + + extern int const SOAM_ProportionalControlDesOARate; // Calculate the system level outdoor air flow rates based on design OA rate + +#### New variables in Struct OARequirementsData + +The struct OARequirementsData represents an object of DesignSpecification:OutdoorAir. A new variable is added as OAPropCtlMinRate to represent the field input of Proportional Control Minimum Outdoor Air Flow Rate. + + struct OARequirementsData + { + // Members + std::string Name; + int OAFlowMethod; // - Method for OA flow calculation + //- (Flow/Person, Flow/Zone, Flow/Area, FlowACH, Sum, Maximum) + Real64 OAFlowPerPerson; // - OA requirement per person + Real64 OAFlowPerArea; // - OA requirement per zone area + Real64 OAFlowPerZone; // - OA requirement per zone + Real64 OAFlowACH; // - OA requirement per zone per hour + int OAFlowFracSchPtr; // - Fraction schedule applied to total OA requirement + +Real64 OAPropCtlMinRate; // - Based OA flow rate + +### SizingManager + +The ProcessInputOARequirements function in the SizingManager module reads inputs of DesignSpecification:OutdoorAir. A new section will be added to read the new field of A new field of Proportional Control Minimum Outdoor Air Flow Rate. + + if ( NumNumbers > 4 ) { + OARequirements( OAIndex ).OAPropCtlMinRate = Numbers( 5 ); + } + +### DataContaminantBalance + +Two new variables will be added in the struct ZoneContControls to represent the ZoneControl:ContaminantController object to accommodate a new input filed of Maximum Carbon Dioxide Concentration Schedule Name. + + std::string ZoneMaxCO2SchedName; // Name of the schedule which determines maximum CO2 concentration + int ZoneMaxCO2SchedIndex; // Index for this schedule + +### DataHeatBalance + +A new variable will be added as ZoneMaxCO2SchedIndex in the struct ZoneData to represent the Zone object. The variable is used to store an index of ZoneMaxCO2SchedIndex in the ZoneContControls. + + int ZoneMaxCO2SchedIndex; // Index for the schedule the schedule which determines maximum CO2 concentration + +### ZoneContaminantPredictorCorrector + +A new section of the function GetZoneContaminanSetPoints will be created to read a new field of Maximum Carbon Dioxide Concentration Schedule Name. + + if ( NumAlphas > 5 ) { + ContaminantControlledZone( ContControlledZoneNum ).ZoneMaxCO2SchedName = cAlphaArgs( 6 ); + ContaminantControlledZone( ContControlledZoneNum ).ZoneMaxCO2SchedIndex = GetScheduleIndex( cAlphaArgs( 6 ) ); + if ( ContaminantControlledZone( ContControlledZoneNum ).ZoneMaxCO2SchedIndex > 0 ) { + // Check validity of control types. + ValidScheduleType = CheckScheduleValueMinMax( ContaminantControlledZone( ContControlledZoneNum ).ZoneMaxCO2SchedIndex, ">=", 0.0, "<=", 2000.0 ); + if ( !ValidScheduleType ) { + ShowSevereError( cCurrentModuleObject + "=\"" + cAlphaArgs( 1 ) + "\" invalid range " + cAlphaFieldNames( 6 ) + "=\"" + cAlphaArgs( 6 ) + "\"" ); + ShowContinueError( "..contains values outside of range [0,2000 ppm]." ); + ErrorsFound = true; + } + else { + Zone( ContaminantControlledZone( ContControlledZoneNum ).ActualZoneNum ).ZoneMaxCO2SchedIndex = ContaminantControlledZone( ContControlledZoneNum ).ZoneMaxCO2SchedIndex; + } + } + } + +### MixedAir + +#### Add new variables in the struct VentilationMechanicalProps to represent the Controller:MechanicalVentilation object + +The first two variables are used in reccursive warnings when maximum OA rate is less than minimum OA rate. The min value will be reset to the max value. Simulation still continues. + +The last variable stores the value of the Proportional Control Minimum Outdoor Air Flow Rate field at each zone. + + int OAMaxMinLimitErrorCount; // Counter when max OA < min OA for SOAM_ProportionalControlDesOARate + int OAMaxMinLimitErrorIndex; // Index for max OA < min OA recurring error message for SOAM_ProportionalControlDesOARate + Array1D< Real64 > OAPropCtlMinRate; // Outdoor design OA flow rate from DesignSpecification:OutdoorAir + +#### Modify the GetOAControllerInputs function to + +1. Read a new choice of ProportionalControlBasedOnDesignOARate + + } else if ( SELECT_CASE_var == "PROPORTIONALCONTROLBASEDONDESIGNOARATE" ) { // Proportional Control based on design OA rate + thisVentilationMechanical.SystemOAMethod = SOAM_ProportionalControlDesOARate; + if ( !Contaminant.CO2Simulation ) { + ShowSevereError( CurrentModuleObject + "=\"" + AlphArray( 1 ) + "\" valid " + cAlphaFields( 2 ) + "=\"" + AlphArray( 2 ) + "\" requires CO2 simulation." ); + ShowContinueError( "The choice must be Yes for the field Carbon Dioxide Concentration in ZoneAirContaminantBalance" ); + ErrorsFound = true; + } + + +2. Throw an error + +If a user does not specify “OutdoorAirFlowRateFractionSchedule” and “Proportional Control Minimum Outdoor Air Flow Rate (m^3/s)” , and has zero values for fields “Outdoor Air Flow per Person” and “Outdoor Air Flow per Floor Area”, then throw an error. + + thisVentilationMechanical.OAPropCtlMinRate( ventMechZoneNum ) = curOARequirements.OAPropCtlMinRate; + if ( thisVentilationMechanical.SystemOAMethod == SOAM_ProportionalControlDesOARate ) { + if ( thisVentilationMechanical.ZoneOASchPtr( ventMechZoneNum ) == 0 ) { + if ( thisVentilationMechanical.OAPropCtlMinRate( ventMechZoneNum ) == 0.0 && thisVentilationMechanical.ZoneOAPeopleRate( ventMechZoneNum ) == 0.0 && thisVentilationMechanical.ZoneOAAreaRate( ventMechZoneNum ) == 0.0 ) { + ShowSevereError( RoutineName + CurrentModuleObject + "=\"" + thisVentilationMechanical.Name + "\", invalid input with System Outdoor Air Method = ProportionalControlBasedOnDesignOARate." ); + ShowContinueError( " When fields of Outdoor Air Schedule Name and Base Ventilation Air Flow Rate are blank in DesignSpecification:OutdoorAir = " + curOARequirements.Name + ", " ); + ShowContinueError( " the values of Outdoor Air Flow per Person and Outdoor Air Flow per Zone Floor Area in the same object can not be zero." ); + ErrorsFound = true; + } + } + } + +3. Write input choice in .eio + + } else if ( VentilationMechanical( VentMechNum ).SystemOAMethod == SOAM_ProportionalControlDesOARate ) { + { IOFlags flags; flags.ADVANCE( "NO" ); gio::write( OutputFileInits, fmtA, flags ) << "ProportionalControlBasedOnDesignOARate,"; } + +#### Modify VentilationMechanicalProps::CalcMechVentController + +Check min and max zone OA values. If min is greater than max, it min value will be reset to the max value, reccursive warnings will be provided and simulation continues. + + if ( this->SystemOAMethod == SOAM_ProportionalControlDesOARate ) { + ZoneOAMax = ZoneOABZ / ZoneEz; + if ( this->ZoneOASchPtr( ZoneIndex ) > 0.0 ) { + ZoneOAMin = ZoneOAMax * GetCurrentScheduleValue( this->ZoneOASchPtr( ZoneIndex ) ); + } else { + ZoneOAMin = this->OAPropCtlMinRate( ZoneIndex ) / ZoneEz; + } + if ( ZoneOAMax <= ZoneOAMin ) { + ZoneOAMin = ZoneOAMax; + ++this->OAMaxMinLimitErrorCount; + if ( this->OAMaxMinLimitErrorCount < 2 ) { + ShowSevereError( RoutineName + CurrentModuleObject + " = \"" + this->Name + "\"." ); + ShowContinueError( "For System Outdoor Air Method = ProportionalControlBasedOnDesignOARate, maximum zone outdoor air rate (" + RoundSigDigits( ZoneOAMax, 4 ) + "), is not greater than minimum zone outdoor air rate (" + RoundSigDigits( ZoneOAMin, 4 ) + ")." ); + ShowContinueError( " The minimum zone outdoor air rate is set to the maximum zone outdoor air rate. Simulation continues..." ); + ShowContinueErrorTimeStamp( "" ); + } + else { + ShowRecurringWarningErrorAtEnd( CurrentModuleObject + " = \"" + this->Name + "\", For System Outdoor Air Method = ProportionalControlBasedOnDesignOARate, maximum zone outdoor air rate is not greater than minimum zone outdoor air rate. Error continues...", this->OAMaxMinLimitErrorIndex ); + } + } + } + +#### Other minor modifications when this->SystemOAMethod == SOAM_ProportionalControlDesOARate + +1. Get ZoneMaxCO2 from a schedule, defined as the Maximum Carbon Dioxide Concentration Schedule Name field in the ZoneControl:ContaminantController objects From 765988f194f9e611c1cef2a8d4a0d5ba5c9c3fb3 Mon Sep 17 00:00:00 2001 From: Lixing Gu Date: Thu, 4 May 2017 15:09:13 -0400 Subject: [PATCH 3/7] Updated NFP more --- .../FY2017/NFP-ProportionalDCVEnhancements.md | 229 ++++++++++++++++-- 1 file changed, 203 insertions(+), 26 deletions(-) diff --git a/design/FY2017/NFP-ProportionalDCVEnhancements.md b/design/FY2017/NFP-ProportionalDCVEnhancements.md index 0ae0c7a2451..c9abd35a8f9 100644 --- a/design/FY2017/NFP-ProportionalDCVEnhancements.md +++ b/design/FY2017/NFP-ProportionalDCVEnhancements.md @@ -23,7 +23,10 @@ Proportional Demand Control Ventilation (DCV) Enhancements ### Florida Solar Energy Center - - The first revision + - Second revision + - 5/4/17 + - Added more E-mail communications + - First revision - 4/24/17 - Added E-mail communications and change a new field name from "Base Ventilation Flow Rate" to "Proportional Control Minimum Outdoor Air Flow Rate" in the DesignSpecification:OutdoorAir object. - The original version @@ -55,6 +58,7 @@ The second request is to use the setpoint schedule value as C_{s - design}, in a ## E-mail and Conference Call Conclusions ## +### First revision -----Original Message----- From: Michael J Witte [mailto:mjwitte@gard.com] @@ -149,6 +153,183 @@ On 4/21/2017 1:58 PM, Lixing Gu wrote: >> >> +### Second revision + +From: Lixing Gu [mailto:Gu@fsec.ucf.edu] +Sent: Thursday, May 04, 2017 1:37 PM +To: 'Michael J Witte' ; 'Lee, Edwin (NREL)' +Cc: 'Wu, Tiejun UTC CCS' +Subject: RE: [energyplusdevteam] NFP to enhance Proportional Demand Control Ventilation (DCV) + +Mike: + +I like your point. The existing Outdoor Air Schedule should not be used to calculate V_{ot-min}. I also talked to Tiejun this morning. Here is what we agreed. Although the item lists two choices to calculate V_{ot-min}, it will use a single choice to calculate V_{ot-min} only with a new field: "Proportional Control Minimum Outdoor Air Flow Rate Schedule Name" in the DesignSpecification:OutdoorAir object. + +V_{ot-min} = DesignOAFloeRate * "Proportional Control Minimum Outdoor Air Flow Rate Schedule Value" + +Here is the DesignSpecification:OutdoorAir object in idd + +DesignSpecification:OutdoorAir, + \min-fields 1 + \memo This object is used to describe general outdoor air requirements which + \memo are referenced by other objects. + A1, \field Name + \required-field + \type alpha + \reference DesignSpecificationOutdoorAirNames + A2, \field Outdoor Air Method + \type choice + \key Flow/Person + \key Flow/Area + \key Flow/Zone + \key AirChanges/Hour + \key Sum + \key Maximum + \default Flow/Person + \note Flow/Person => Outdoor Air Flow per Person * Occupancy = Design Flow Rate, + \note Flow/Area => Outdoor Air Flow per Zone Floor Area * Zone Floor Area = Design Flow Rate, + \note Flow/Zone => Outdoor Air Flow per Zone = Design Flow Rate, + \note AirChanges/Hour => Outdoor Air Flow Air Changes per Hour * Zone Volume adjusted for m3/s = Design Flow Rate + N1, \field Outdoor Air Flow per Person + \type real + \units m3/s-person + \default 0.00944 + \minimum 0 + \note 0.00944 m3/s is equivalent to 20 cfm per person + \note This input is only used if the field Outdoor Air Method is Flow/Person, Sum, or Maximum + \note For sizing, the design number of occupants is used. For outdoor air flow control, the use + \note of design occupants or current occupants depends on the component and DCV options. + \note AirTerminal:SingleDuct:VAV:NoReheat, AirTerminal:SingleDuct:VAV:Reheat use the DCV flag specified in Controller:MechanicalVentilation + \note AirTerminal:DualDuct:VAV:OutdoorAir and ZoneHVAC:IdealLoadsAirSystem have their own DCV control input. + \note ZoneHVAC:FourPipeFanCoil always uses current occupants. + N2, \field Outdoor Air Flow per Zone Floor Area + \units m3/s-m2 + \default 0.0 + \minimum 0 + \note This input is only used if the field Outdoor Air Method is Flow/Area, Sum, or Maximum + N3, \field Outdoor Air Flow per Zone + \type real + \units m3/s + \default 0.0 + \minimum 0 + \note This input is only used if the field Outdoor Air Method is Flow/Zone, Sum, or Maximum + N4, \field Outdoor Air Flow Air Changes per Hour + \units 1/hr + \type real + \default 0.0 + \minimum 0 + \note This input is only used if the field Outdoor Air Method is AirChanges/Hour, Sum, or Maximum + A3, \field Outdoor Air Schedule Name + \type object-list + \object-list ScheduleNames + \note Schedule values are multiplied by the Outdoor Air Flow rate calculated using + \note the previous four inputs. Schedule values are limited to 0 to 1. If left blank, the schedule defaults to 1.0. + \note This schedule is ignored during sizing. All other components which reference this design specification + \note use the current schedule value to calculate the current outdoor air requirement. This includes + \note AirTerminal:SingleDuct:VAV:NoReheat, AirTerminal:SingleDuct:VAV:Reheat, AirTerminal:DualDuct:VAV:OutdoorAir, + \note ZoneHVAC:FourPipeFanCoil, and ZoneHVAC:IdealLoadsAirSystem. + \note This schedule will also be applied by Controller:MechanicalVentilation for all System Outdoor Air Methods. +New One + A4; \field Proportional Control Minimum Outdoor Air Flow Rate Schedule Name + \type object-list + \object-list ScheduleNames + \note This input is only used to calculate the minimum outdoor air flow rate when the field + \note System Outdoor Air Method = ProportionalControlBasedOnDesignOARate in + \note Controller:MechanicalVentilation, +I am going to update NFP. + +Thanks. + +Gu +From: Michael J Witte [mailto:mjwitte@gard.com] +Sent: Wednesday, May 03, 2017 5:14 PM +To: Lixing Gu ; 'Lee, Edwin (NREL)' +Cc: 'Wu, Tiejun UTC CCS' +Subject: Re: [energyplusdevteam] NFP to enhance Proportional Demand Control Ventilation (DCV) + +See comments below. + +On 5/3/2017 3:38 PM, Lixing Gu wrote: +Mike: + +Thanks for more valuable comments. + +1. The description for new field "Proportional Control Minimum Outdoor Air Flow Rate" says: +I said it not clear and found a mistake. It should be + +"This field specifies the value of the minimum outdoor air flow rate used in the proportional demand controlled ventilation (DCV) control. This input is only used when the field System Outdoor Air Method = ProportionalControlBasedOnDesignOARate in Controller:MechanicalVentilation, and the schedule value of the Outdoor Air Schedule Name field is zero." +This is what Tiejun defined in an enhancement item. + +On re-reading the enhancement item, I disagree with using the existing Outdoor Air Schedule for calculating the minimum flow. The schedule value is currently multiplied times all of the design level inputs (oa/person, oa/area, oa/zone) regardless of the OA control method. +See CalcMechVentController +https://github.com/NREL/EnergyPlus/blob/cecaea1295fd603c9ae24d89a63339bd45fb454e/src/EnergyPlus/MixedAir.cc#L3780-L3802 + +So it is already modifying the design level OA flow for proportional control. It is already included in ZoneOAArea, ZoneOAPeople, ZoneOABZ, etc. + +If we want to be able to schedule the min flow for proportional control, then we need a new schedule field "Proportional Control Minimum Outdoor Air Flow Rate Schedule Name". If we follow the enhancement item, then this would be multiplied times the design OA flow, not times the new Proportional Control Minimum Outdoor Air Flow Rate - they would be either/or - so there should be a warning if both are entered and pick one to be ignored. + +Mike + + +2. This impacts the design section also. +This is a field in the DesignSpecification:OutdoorAir object and specified in Tiejun’s item. +3. Maximum Carbon Dioxide Concentration Schedule Name +Done. +I am going to incorporate the above changes in NFP. + +Thanks. + +Gu + + + + + + +From: Michael J Witte [mailto:mjwitte@gard.com] +Sent: Wednesday, May 03, 2017 1:03 PM +To: Lixing Gu ; 'Lee, Edwin (NREL)' +Cc: 'Wu, Tiejun UTC CCS' +Subject: Re: [energyplusdevteam] NFP to enhance Proportional Demand Control Ventilation (DCV) + +Gu: +1. The description for new field "Proportional Control Minimum Outdoor Air Flow Rate" says: +"This field specifies the value of the minimum outdoor air flow rate used in the proportional demand controlled ventilation (DCV) control. This input is only used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy or ProportionalControlBasedOnDesignOARate in Controller:MechanicalVentilation, and the value of above schedule is zero." +You should delete "and the value of the above schedule is zero". Correct? + +2. This impacts the design section also. The presence of the "Outdoor Air Schedule Name" should not be part of this. It should multiply whatever the final OA calculation result is regardless of OA control type. + +3. The description for new field "Maximum Carbon Dioxide Concentration Schedule Name" should say that this field is optional and say what happens when it is left blank. Same for "Proportional Control Minimum Outdoor Air Flow Rate". +Mike + + + + + +On 4/27/2017 3:10 PM, Lixing Gu wrote: +All: + +The NFP was updated based on comments. I also added design document. Please review it (https://github.com/NREL/EnergyPlus/blob/ProportionalDCVEnhancements/design/FY2017/NFP-ProportionalDCVEnhancements.md) and give me your feedback. + +Thanks. + +Gu + +-----Original Message----- +From: Lixing Gu [mailto:Gu@fsec.ucf.edu] +Sent: Friday, April 21, 2017 3:50 PM +To: 'Michael J Witte' +Cc: 'Wu, Tiejun UTC CCS' +Subject: RE: [energyplusdevteam] NFP to enhance Proportional Demand Control Ventilation (DCV) + +Mike: + +To your first comment, my vote is "Proportional Control Minimum Outdoor Air Flow Rate". I prefer that each filed has its own special meaning and don't allow too much flexibility. + +Thanks. + +Gu + ## Overview ## @@ -337,12 +518,12 @@ The design outdoor air volume flow rate in air changes per hour. This factor is This field is the name of schedule that defines how outdoor air requirements change over time. The field is optional. If left blank, the schedule defaults to 1.0. If used, then the schedule values are multiplied by the outdoor air flow rate defined by the previous fields. The schedule values must be between 0 and 1, inclusive. -If this DesignSpecification:OutdoorAir object is referenced by a Controller:MechanicalVentilation object (either directly or indirectly through Sizing:Zone), the schedule will be applied to all types of outdoor air calculations for the corresponding zone, regardless of the System Outdoor Air Method selected. If the schedule value is zero, then the zone will be completely removed from the system outdoor air calcaulations. +If this DesignSpecification:OutdoorAir object is referenced by a Controller:MechanicalVentilation object (either directly or indirectly through Sizing:Zone), the schedule will be applied to all types of outdoor air calculations for the corresponding zone, regardless of the System Outdoor Air Method selected. If the schedule value is zero, then the zone will be completely removed from the system outdoor air calculations. - N5; \field Proportional Control Minimum Outdoor Air Flow Rate -\paragraph{Field: Proportional Control Minimum Outdoor Air Flow Rate }\label{field-base-ventilation-air-flow-rate} + A4; \field Proportional Control Minimum Outdoor Air Flow Rate Schedule Name +\paragraph{Field: Proportional Control Minimum Outdoor Air Flow Rate }\label{field-base-ventilation-air-flow-rate-schedule-name} - This field specifies the value of the minimum outdoor air flow rate used in the proportional demand controlled ventilation (DCV) control. This input is only used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy or ProportionalControlBasedOnDesignOARate in Controller:MechanicalVentilation, and the value of above schedule is zero. + This field is the name of schedule that defines how minimum outdoor air requirements change over time. The field is optional. If left blank, the schedule defaults to 1.0. If used when the field System Outdoor Air Method = ProportionalControlBasedOnDesignOARate in Controller:MechanicalVentilation, then the schedule values are multiplied by the outdoor air flow rate. The schedule values must be between 0 and 1, inclusive. An IDF example: @@ -402,15 +583,15 @@ This field contains the name of a schedule that determines whether or not the Zo \paragraph{Field:Carbon Dioxide Setpoint Schedule Name}\label{fieldcarbon-dioxide-setpoint-schedule-name} -This field contains the name of a schedule that contains the zone carbon dioxide concentration setpoint as a function of time. The units for carbon dioxide setpoint are ppm. The setpoint values in the schedule must be between 0 and 2000 ppm. . This field is used when the field System Outdoor Air Method = IndoorAirQualityProcedure in the Controller:MechanicalVentilation object. +This field contains the name of a schedule that contains the zone carbon dioxide concentration setpoint as a function of time. The units for carbon dioxide setpoint are ppm. The setpoint values in the schedule must be between 0 and 2000 ppm. This field is used when the field System Outdoor Air Method = IndoorAirQualityProcedure in the Controller:MechanicalVentilation object. \paragraph{Field:Minimum Carbon Dioxide Concentration Schedule Name}\label{fieldminimum-carbon-dioxide-concentration-schedule-name} -This field contains the name of a schedule that contains the minimum zone carbon dioxide concentration setpoint as a function of time. The units for carbon dioxide setpoint are ppm. This field is used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy, or ProportionalControlBasedOnDesignOARate in the Controller:MechanicalVentilation object. +This field contains the name of a schedule that contains the minimum zone carbon dioxide concentration setpoint as a function of time. The units for carbon dioxide setpoint are ppm. The field is optional. If left blank, the default values are set to outdoor CO2 levels. This field is used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy, or ProportionalControlBasedOnDesignOARate in the Controller:MechanicalVentilation object. \paragraph{Field:Maximum Carbon Dioxide Concentration Schedule Name}\label{fieldmaximum-carbon-dioxide-concentration-schedule-name} -This field contains the name of a schedule that contains the maximum zone carbon dioxide concentration as a function of time and is used to calculate design CO2 concentration level in the proportional ventilation control. The units for carbon dioxide setpoint are ppm. This field is used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule, or ProportionalControlBasedOnDesignOccupancy, or ProportionalControlBasedOnDesignOARate in the Controller:MechanicalVentilation object. +This field contains the name of a schedule that contains the maximum zone carbon dioxide concentration as a function of time and is used to calculate design CO2 concentration level in the proportional ventilation control. The units for carbon dioxide setpoint are ppm. The field is optional. If left blank, the default values are set to outdoor CO2 levels. This field is used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule, or ProportionalControlBasedOnDesignOccupancy, or ProportionalControlBasedOnDesignOARate in the Controller:MechanicalVentilation object. \paragraph{Field: Generic Contaminant Control Availability Schedule Name}\label{field-generic-contaminant-control-availability-schedule-name} @@ -680,18 +861,14 @@ This section has three revised objects: ZoneControl:ContaminantController, Contr \note ZoneHVAC:FourPipeFanCoil, and ZoneHVAC:IdealLoadsAirSystem. \note This schedule will also be applied by Controller:MechanicalVentilation for all System Outdoor Air Methods. - N5; \field Proportional Control Minimum Outdoor Air Flow Rate - - \units m3/s - \type real - \default 0.0 - \minimum 0 - \note This input is only used when the field System Outdoor Air Method = - \note ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy - \note or ProportionalControlBasedOnDesignOARate in Controller:MechanicalVentilation - - + A4; \field Proportional Control Minimum Outdoor Air Flow Rate Schedule Name + \type object-list + \object-list ScheduleNames + \note This input is only used to calculate the minimum outdoor air flow rate when the field + \note System Outdoor Air Method = ProportionalControlBasedOnDesignOARate in + \note Controller:MechanicalVentilation, + ## Outputs Description ## insert text @@ -732,7 +909,7 @@ For the i-th zone, the outdoor air mass flow rate provided by the air loop is ca if ProportionalControlBasedOnDesignOARate is specified, the required intake flow rate will be revised as: \begin{equation} -{V_{ot - design,i}} = \frac{ {Design OutDoor Air Flow Rate_i} \times {SchedFrac_i} } {E_i} +{V_{ot - design,i}} = \frac{ {Design OutDoor Air Flow Rate_i} \times {PropCtrSchedFrac_i} } {E_i} \end{equation} @@ -769,6 +946,8 @@ Where, When ProportionalControlBasedonDesignOccupancy is specified, number of people = design occupancy * current schedule value. When ProportionalControlBasedonDesignOccupancy is specified, number of people = design occupancy. +\({PropCtrSchedFrac_i}\) ~ = the Outdoor Air Schedule value for the zone, if specified in the Proportional Control Minimum Outdoor Air Flow Rate Schedule Name field in the corresponding DesignSpecification:OutdoorAir object (defaults to 1.0) + \({A_{z,i}}\) ~ = Zone floor area, m\(^{2}\) \({E_i}\) ~ = The zone air distribution effectiveness @@ -846,14 +1025,14 @@ The struct OARequirementsData represents an object of DesignSpecification:Outdoo Real64 OAFlowACH; // - OA requirement per zone per hour int OAFlowFracSchPtr; // - Fraction schedule applied to total OA requirement -Real64 OAPropCtlMinRate; // - Based OA flow rate +int OAPropCtlMinRateSchPtr; // - Fraction schedule applied to calculation of the Proportional Control Minimum Outdoor Air Flow Rate ### SizingManager The ProcessInputOARequirements function in the SizingManager module reads inputs of DesignSpecification:OutdoorAir. A new section will be added to read the new field of A new field of Proportional Control Minimum Outdoor Air Flow Rate. - if ( NumNumbers > 4 ) { - OARequirements( OAIndex ).OAPropCtlMinRate = Numbers( 5 ); + if ( NumAlphas > 3 ) { + OARequirements( OAIndex ).OAPropCtlMinRateSchPtr = = GetScheduleIndex( Alphas( 4 ) );; } ### DataContaminantBalance @@ -943,9 +1122,7 @@ Check min and max zone OA values. If min is greater than max, it min value will if ( this->SystemOAMethod == SOAM_ProportionalControlDesOARate ) { ZoneOAMax = ZoneOABZ / ZoneEz; if ( this->ZoneOASchPtr( ZoneIndex ) > 0.0 ) { - ZoneOAMin = ZoneOAMax * GetCurrentScheduleValue( this->ZoneOASchPtr( ZoneIndex ) ); - } else { - ZoneOAMin = this->OAPropCtlMinRate( ZoneIndex ) / ZoneEz; + ZoneOAMin = ZoneOAMax * GetCurrentScheduleValue( this->OAPropCtlMinRateSchPtr( ZoneIndex ) ); } if ( ZoneOAMax <= ZoneOAMin ) { ZoneOAMin = ZoneOAMax; From 3c9e4a65aa5cc84461655c933b0b208de629d6c5 Mon Sep 17 00:00:00 2001 From: Lixing Gu Date: Mon, 22 May 2017 09:14:39 -0400 Subject: [PATCH 4/7] Uploaded code and others --- .../demand-controlled-ventilation.tex | 17 +- .../src/overview/group-controllers.tex | 2 +- .../src/overview/group-design-objects.tex | 5 + .../group-zone-controls-thermostats.tex | 9 +- idd/Energy+.idd.in | 24 +- src/EnergyPlus/DataContaminantBalance.hh | 3 + src/EnergyPlus/DataHeatBalance.hh | 2 + src/EnergyPlus/DataSizing.cc | 1 + src/EnergyPlus/DataSizing.hh | 5 +- src/EnergyPlus/MixedAir.cc | 57 +- src/EnergyPlus/MixedAir.hh | 7 +- src/EnergyPlus/SizingManager.cc | 19 + .../ZoneContaminantPredictorCorrector.cc | 37 +- .../InputRulesFiles/Rules8-7-0-to-8-8-0.md | 11 + testfiles/CMakeLists.txt | 1 + .../HeatPumpIAQP_GenericContamControl.idf | 1 + ...tPumpProportionalControl_DCVDesignRate.idf | 1733 +++++++++++++++++ tst/EnergyPlus/unit/MixedAir.unit.cc | 175 ++ 18 files changed, 2084 insertions(+), 25 deletions(-) create mode 100644 src/Transition/InputRulesFiles/Rules8-7-0-to-8-8-0.md create mode 100644 testfiles/HeatPumpProportionalControl_DCVDesignRate.idf diff --git a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-002/demand-controlled-ventilation.tex b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-002/demand-controlled-ventilation.tex index 42d48e4839b..7afe9a533e4 100644 --- a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-002/demand-controlled-ventilation.tex +++ b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-002/demand-controlled-ventilation.tex @@ -274,7 +274,7 @@ \subsection{Indoor Air Quality Procedure}\label{indoor-air-quality-procedure} \subsection{Proportional Control}\label{proportional-control} -The control has two choices: ProportionalControlBasedonOccupancySchedule and ProportionalControlBasedonDesignOccupancy. The difference is occupancy level. The former uses real time occupancy, while the latter uses design occupancy level. Like Ventilation Rate Procedure and the Indoor Air Quality Procedure, the following three objects must be included in the input data file in order to model CO\(_{2}\)-based DCV with Proportional Control: +The control has three choices: ProportionalControlBasedonOccupancySchedule, ProportionalControlBasedonDesignOccupancy, and ProportionalControlBasedOnDesignOARate. The difference is occupancy level in the first two choices. The former uses real time occupancy, while the latter uses design occupancy level. The third choice is used to calculate the outdoor airflow rate based on design outdoor air flow rate, specified in the DesignSpecification:OutdoorAir object. Like Ventilation Rate Procedure and the Indoor Air Quality Procedure, the following three objects must be included in the input data file in order to model CO\(_{2}\)-based DCV with Proportional Control: \begin{itemize} \item \textbf{AirLoopHVAC:OutdoorAirSystem} to simulate the mixed air box of the air loop @@ -290,18 +290,31 @@ \subsection{Proportional Control}\label{proportional-control} {V_{ot - design,i}} = \frac{{\left( {{R_{p,i}}.{P_{z,i}} \times {SchedFrac_i}} \right) + ({R_{a,i}}.{A_{z,i}} \times {SchedFrac_i})}}{{{E_i}}} \end{equation} +if ProportionalControlBasedOnDesignOARate is specified, the required intake flow rate will be revised as: + + \begin{equation} {V{ot - design,i}} = \frac{Design Outdoor Air Flow Rate_i} {E_i} \end{equation} + +The Design Outdoor Air Flow Rate is determined in the DesignSpecification:OutdoorAir object. + 2)~~~The required intake flow of outdoor air when the zone is unoccupied i.e.~ \emph{P\(_{z,i}\)} = 0 \begin{equation} {V_{ot - min,i}} = \frac{{({R_{a,i}}.{A_{z,i}} \times {SchedFrac_i})}}{{{E_i}}} \end{equation} +if ProportionalControlBasedOnDesignOARate is specified, the required intake flow rate will be revised as: + + \begin{equation} {V{ot - min,i}} = \frac{ {Design Outdoor Air Flow Rate_i} \times {SchedPropMin_i} } {E_i} \end{equation} + + 3)~~~The target indoor CO\(_{2}\) concentration at \({V_{ot - design,i}}\) \begin{equation} {C_{s - design,i}} = {C_o} + \frac{N}{{\left( {{V_{ot - design,i}}/{P_{z,i}}} \right)}} \end{equation} +When the field of Maximum Carbon Dioxide Concentration Schedule Name is entered, the schedule value is set to {C_{s - design,i}}. + 4)~~~The target indoor CO\(_{2}\) concentration at \({V_{ot - min}}\) ~is either a user input in the object ZoneControl:ContaminantController or equal to the outdoor CO\(_{2}\) concentration. The default is outdoor CO\(_{2}\) concentration. \begin{equation} @@ -324,6 +337,8 @@ \subsection{Proportional Control}\label{proportional-control} \({SchedFrac_i}\) ~ = the Outdoor Air Schedule value for the zone, if specified in the corresponding DesignSpecification:OutdoorAir object (defaults to 1.0) +\({SchedPropMin_i}\) ~ = the Proportional Control Minimum Outdoor Air Flow Rate Schedule value for the zone, if specified in the corresponding DesignSpecification:OutdoorAir object (defaults to 1.0) + When ProportionalControlBasedonDesignOccupancy is specified, number of people = design occupancy * current schedule value. When ProportionalControlBasedonDesignOccupancy is specified, number of people = design occupancy. \({A_{z,i}}\) ~ = Zone floor area, m\(^{2}\) diff --git a/doc/input-output-reference/src/overview/group-controllers.tex b/doc/input-output-reference/src/overview/group-controllers.tex index 6ec2456314e..99147d5e991 100644 --- a/doc/input-output-reference/src/overview/group-controllers.tex +++ b/doc/input-output-reference/src/overview/group-controllers.tex @@ -432,7 +432,7 @@ \subsubsection{Inputs}\label{inputs-2-007} \paragraph{Field: System Outdoor Air Method}\label{field-system-outdoor-air-method} -The method used to calculate the system minimum outdoor air flow. Several choices are allowed: \textbf{ZoneSum}, \textbf{VentilationRateProcedure,} \textbf{IndoorAirQualityProcedure, ProportionalControlBasedonOccupancySchedule,} \textbf{ProportionalControlBasedonDesignOccupancy,} and \textbf{IndoorAirQualityProcedureGenericContaminant}. ZoneSum sums the outdoor air flows across all zones served by the system. VentilationRateProcedure (VRP) uses the multi-zone equations defined in 62.1-2007 to calculate the system outdoor air flow. VRP considers zone air distribution effectiveness and zone diversification of outdoor air fractions. IndoorAirQualityProcedure (IAQP) is the other procedure defined in ASHRAE Standard 62.1-2007 for calculate the amount of outdoor air necessary to maintain the levels of indoor air carbon dioxide at or below the setpoint defined in the ZoneControl:ContaminantController object. Appendix A of the ASHRAE 62.1-2010 user's manual discusses another method for implementing CO\(_{2}\)-based DCV in a single zone system. This method (Proportional Control) calculates the required outdoor air flow rate which varies in proportion to the percentage of the CO\(_{2}\) signal range and has two choices to calculate occupancy-based outdoor air rate. The ProportionalControlBasedonOccupancySchedule choice uses the real occupancy at the current time step to calculate outdoor air rate, while the ProportionalControlBasedonDesignOccupancy uses the design occupancy level to calculate outdoor air rate. The former choice is a good approach to estimate outdoor air rate. However, for practical applications, the zone controller usually does not have the real time occupancy information, and the design occupancy level is assumed. The latter choice is used in the design stage. The IndoorAirQualityProcedure-GenericContaminant method calculates the amount of outdoor air necessary to maintain the levels of indoor air generic contaminant at or below the setpoint defined in the ZoneControl:ContaminantController object. +The method used to calculate the system minimum outdoor air flow. Several choices are allowed: \textbf{ZoneSum}, \textbf{VentilationRateProcedure,} \textbf{IndoorAirQualityProcedure, ProportionalControlBasedonOccupancySchedule,} \textbf{ProportionalControlBasedonDesignOccupancy,} \textbf{ProportionalControlBasedOnDesignOARate,} and \textbf{IndoorAirQualityProcedureGenericContaminant}. ZoneSum sums the outdoor air flows across all zones served by the system. VentilationRateProcedure (VRP) uses the multi-zone equations defined in 62.1-2007 to calculate the system outdoor air flow. VRP considers zone air distribution effectiveness and zone diversification of outdoor air fractions. IndoorAirQualityProcedure (IAQP) is the other procedure defined in ASHRAE Standard 62.1-2007 for calculate the amount of outdoor air necessary to maintain the levels of indoor air carbon dioxide at or below the setpoint defined in the ZoneControl:ContaminantController object. Appendix A of the ASHRAE 62.1-2010 user's manual discusses another method for implementing CO\(_{2}\)-based DCV in a single zone system. This method (Proportional Control) calculates the required outdoor air flow rate which varies in proportion to the percentage of the CO\(_{2}\) signal range and has two choices to calculate occupancy-based outdoor air rate. The ProportionalControlBasedonOccupancySchedule choice uses the real occupancy at the current time step to calculate outdoor air rate, while the ProportionalControlBasedonDesignOccupancy uses the design occupancy level to calculate outdoor air rate. The former choice is a good approach to estimate outdoor air rate. However, for practical applications, the zone controller usually does not have the real time occupancy information, and the design occupancy level is assumed. The latter choice is used in the design stage. The ProportionalControlBasedOnDesignOARate uses design outdoor air flow rate to calculate demand outdoor air flow rate. The IndoorAirQualityProcedure-GenericContaminant method calculates the amount of outdoor air necessary to maintain the levels of indoor air generic contaminant at or below the setpoint defined in the ZoneControl:ContaminantController object. Note: When System Outdoor Air Method = IndoorAirQualityProcedure or IndoorAirQualityProcedureGenericContaminant is specified, only the Zone \textless{}x\textgreater{} Name fields are used. The other field inputs described below are not used. diff --git a/doc/input-output-reference/src/overview/group-design-objects.tex b/doc/input-output-reference/src/overview/group-design-objects.tex index 9170c88b0e2..6df3084028c 100644 --- a/doc/input-output-reference/src/overview/group-design-objects.tex +++ b/doc/input-output-reference/src/overview/group-design-objects.tex @@ -893,6 +893,10 @@ \subsubsection{Inputs}\label{inputs-012} If this DesignSpecification:OutdoorAir object is referenced by a Controller:MechanicalVentilation object (either directly or indirectly through Sizing:Zone), the schedule will be applied to all types of outdoor air calculations for the corresponding zone, regardless of the System Outdoor Air Method selected. If the schedule value is zero, then the zone will be completely removed from the system outdoor air calcaulations. +\paragraph{Field: Proportional Control Minimum Outdoor Air Flow Rate Schedule Name }\label{field-proportional-control-minimum-outdoor-air-flow-rate-schedule-name} + +This field is the name of schedule that defines how minimum outdoor air requirements change over time. The field is optional. If left blank, the schedule defaults to 1.0. If used when the field System Outdoor Air Method = ProportionalControlBasedOnDesignOARate in Controller:MechanicalVentilation, then the schedule values are multiplied by the outdoor air flow rate. + An IDF example: \begin{lstlisting} @@ -915,6 +919,7 @@ \subsubsection{Inputs}\label{inputs-012} Until: 24:00, 1.0, !- Field 4 For: AllOtherDays, !- Field 5 Until: 24:00, 0.5; !- Field 7 + \end{lstlisting} \subsection{DesignSpecification:ZoneAirDistribution}\label{designspecificationzoneairdistribution} diff --git a/doc/input-output-reference/src/overview/group-zone-controls-thermostats.tex b/doc/input-output-reference/src/overview/group-zone-controls-thermostats.tex index 3d169bbb9b5..8d3f635021c 100644 --- a/doc/input-output-reference/src/overview/group-zone-controls-thermostats.tex +++ b/doc/input-output-reference/src/overview/group-zone-controls-thermostats.tex @@ -1047,7 +1047,7 @@ \subsection{ZoneControl:ContaminantController}\label{zonecontrolcontaminantcontr \item To control a zone to a specified indoor level of contaminants. When this zone is served by an AirLoopHVAC, the other zones served by the same AirLoopHVAC will have the same specified indoor level, if no objects in the other zones served by the same AirLoop are specified. Currently, the available contaminant controls are carbon dioxide and generic contaminant controls. The specified carbon dioxide setpoint is used to calculate the required outdoor airflow rate through the HVAC system to reach the setpoint. The AirLoopHVAC system outdoor flow rate is realized by the Controller:MechanicalVentilation object with System Outdoor Air Method = IndoorAirQualityProcedure.The specified generic contaminant setpoint is used to calculate the required outdoor airflow rate through the HVAC system to reach the setpoint. The AirLoopHVAC system outdoor flow rate is realized by the Controller:MechanicalVentilation object with System Outdoor Air Method = IndoorAirQualityProcedure-GenericContaminant. \item - To specify minimum CO2 concentration schedule name for a zone. The AirLoopHVAC system outdoor flow rate is realized by the Controller:MechanicalVentilation object with System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy. Carbon Dioxide Control Availability Schedule Name determines the availability of ProportionalControl . + To specify minimum or maximum CO2 concentration schedule name for a zone. The AirLoopHVAC system outdoor flow rate is realized by the Controller:MechanicalVentilation object with System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy or ProportionalControlBasedOnDesignOARate. Carbon Dioxide Control Availability Schedule Name determines the availability of ProportionalControl . \end{enumerate} For the first purpose above, when multiple zones are served by an AirLoop, those zones that do not have a contaminant controller object specified in the input data file are automatically assigned a carbon dioxide setpoint. Zone objects entered in the input data file are internally assigned an index number from 1 to n (first defined Zone object = 1, next Zone object defined in the input file = 2, etc.). For zones served by an AirLoop that do not have a contaminant controller specified, the zone s carbon dioxide setpoint will be the same as the zone with the next highest zone index number that has a contaminant controller specified. If a zone with a higher index number and contaminant controller specified does not exist, then the zone with the next lowest zone index number that has a contaminant controller specified will be used. For example, assume an AirLoop serves zones 1 through 5, but one ZoneControl:ContaminantController object is specified for zone 2, a second ZoneControl:ContaminantController object is specified for zone 4, and no ZoneControl:ContaminantController objects are specified for zones 1, 3 and 5. In this case, zone 1 will be assigned the carbon dioxide setpoint schedule that was specified for zone 2, and zones 3 and 5 will be assigned the carbon dioxide setpoint schedule that was specified for zone 4. @@ -1072,7 +1072,11 @@ \subsubsection{Inputs}\label{inputs-14-017} \paragraph{Field:Minimum Carbon Dioxide Concentration Schedule Name}\label{fieldminimum-carbon-dioxide-concentration-schedule-name} -This field contains the name of a schedule that contains the minimum zone carbon dioxide concentration setpoint as a function of time. The units for carbon dioxide setpoint are ppm. This field is used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy in the Controller:MechanicalVentilation object. +This field contains the name of a schedule that contains the minimum zone carbon dioxide concentration setpoint as a function of time. The units for carbon dioxide setpoint are ppm. This field is used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy, or ProportionalControlBasedOnDesignOARate in the Controller:MechanicalVentilation object. + +\paragraph{Field:Maximum Carbon Dioxide Concentration Schedule Name}\label{fieldmaximum-carbon-dioxide-concentration-schedule-name} + +This field contains the name of a schedule that contains the maximum zone carbon dioxide concentration as a function of time and is used to calculate design CO2 concentration level in the proportional ventilation control. The units for carbon dioxide setpoint are ppm. This field is used when the field System Outdoor Air Method = ProportionalControlBasedonOccupancySchedule, or ProportionalControlBasedOnDesignOccupancy, or ProportionalControlBasedOnDesignOARate in the Controller:MechanicalVentilation object. \paragraph{Field: Generic Contaminant Control Availability Schedule Name}\label{field-generic-contaminant-control-availability-schedule-name} @@ -1092,6 +1096,7 @@ \subsubsection{Inputs}\label{inputs-14-017} CO2AvailSchedule, !- Carbon Dioxide Control Availability Schedule Name CO2SetpointSchedule, !- Carbon Dioxide Setpoint Schedule Name , !- Minimum Carbon Dioxide Concentration Schedule Name + , !- Maximum Carbon Dioxide Concentration Schedule Name GCAvailSchedule, !- Generic Contaminant Control Availability Schedule Name GCSetpointSchedule; !- Generic Contaminant Setpoint Schedule Name \end{lstlisting} diff --git a/idd/Energy+.idd.in b/idd/Energy+.idd.in index 5655e2f76af..2bcbe7be168 100644 --- a/idd/Energy+.idd.in +++ b/idd/Energy+.idd.in @@ -31654,7 +31654,7 @@ DesignSpecification:OutdoorAir, \default 0.0 \minimum 0 \note This input is only used if the field Outdoor Air Method is AirChanges/Hour, Sum, or Maximum - A3; \field Outdoor Air Schedule Name + A3, \field Outdoor Air Schedule Name \type object-list \object-list ScheduleNames \note Schedule values are multiplied by the Outdoor Air Flow rate calculated using @@ -31664,6 +31664,11 @@ DesignSpecification:OutdoorAir, \note AirTerminal:SingleDuct:VAV:NoReheat, AirTerminal:SingleDuct:VAV:Reheat, AirTerminal:DualDuct:VAV:OutdoorAir, \note ZoneHVAC:FourPipeFanCoil, and ZoneHVAC:IdealLoadsAirSystem. \note This schedule will also be applied by Controller:MechanicalVentilation for all System Outdoor Air Methods. + A4; \field Proportional Control Minimum Outdoor Air Flow Rate Schedule Name + \type object-list + \object-list ScheduleNames + \note This input is only used to calculate the minimum outdoor air flow rate when the field + \note System Outdoor Air Method = ProportionalControlBasedOnDesignOARate in Controller:MechanicalVentilation. DesignSpecification:ZoneAirDistribution, \min-fields 1 @@ -32926,15 +32931,23 @@ ZoneControl:ContaminantController, \note Schedule values should be carbon dioxide concentration in parts per \note million (ppm) \note This field is used when the field System Outdoor Air Method = - \note ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy - \note in Controller:MechanicalVentilation - A6 , \field Generic Contaminant Control Availability Schedule Name + \note ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy, + \note or ProportionalControlBasedOnDesignOARate in Controller:MechanicalVentilation + A6 , \field Maximum Carbon Dioxide Concentration Schedule Name + \type object-list + \object-list ScheduleNames + \note Schedule values should be carbon dioxide concentration in parts per + \note million (ppm) + \note This field is used when the field System Outdoor Air Method = + \note ProportionalControlBasedonOccupancySchedule or ProportionalControlBasedOnDesignOccupancy + \note or ProportionalControlBasedOnDesignOARate. + A7 , \field Generic Contaminant Control Availability Schedule Name \note Availability schedule name for generic contaminant controller. Schedule value > 0 means \note the generic contaminant controller is enabled. If this field is blank, then generic \note contaminant controller is always enabled. \type object-list \object-list ScheduleNames - A7 ; \field Generic Contaminant Setpoint Schedule Name + A8 ; \field Generic Contaminant Setpoint Schedule Name \type object-list \object-list ScheduleNames \note Schedule values should be generic contaminant concentration in parts per @@ -57448,6 +57461,7 @@ Controller:MechanicalVentilation, \key ProportionalControlBasedonOccupancySchedule \key IndoorAirQualityProcedureGenericContaminant \key IndoorAirQualityProcedureCombined + \key ProportionalControlBasedOnDesignOARate \default VentilationRateProcedure N1, \field Zone Maximum Outdoor Air Fraction \type real diff --git a/src/EnergyPlus/DataContaminantBalance.hh b/src/EnergyPlus/DataContaminantBalance.hh index b3d19502249..9ab738f8acb 100644 --- a/src/EnergyPlus/DataContaminantBalance.hh +++ b/src/EnergyPlus/DataContaminantBalance.hh @@ -189,6 +189,8 @@ namespace DataContaminantBalance { Array1D_int ControlZoneNum; // Controlled zone number std::string ZoneMinCO2SchedName; // Name of the schedule which determines minimum CO2 concentration int ZoneMinCO2SchedIndex; // Index for this schedule + std::string ZoneMaxCO2SchedName; // Name of the schedule which determines maximum CO2 concentration + int ZoneMaxCO2SchedIndex; // Index for this schedule int ZoneContamControllerSchedIndex; // Index for this schedule std::string GCAvaiSchedule; // Availability Schedule name for generic contamiant int GCAvaiSchedPtr; // Pointer to the correct generic contaminant availability schedule @@ -206,6 +208,7 @@ namespace DataContaminantBalance { EMSOverrideCO2SetPointValue( 0.0 ), NumOfZones( 0 ), ZoneMinCO2SchedIndex( 0 ), + ZoneMaxCO2SchedIndex( 0 ), ZoneContamControllerSchedIndex( 0 ), GCAvaiSchedPtr( 0 ), GCSPSchedIndex( 0 ), diff --git a/src/EnergyPlus/DataHeatBalance.hh b/src/EnergyPlus/DataHeatBalance.hh index 35d886fb85b..f15a0f2646b 100644 --- a/src/EnergyPlus/DataHeatBalance.hh +++ b/src/EnergyPlus/DataHeatBalance.hh @@ -1342,6 +1342,7 @@ namespace DataHeatBalance { bool EnforcedReciprocity; // if zone required forced reciprocity -- // less out of bounds temperature errors allowed int ZoneMinCO2SchedIndex; // Index for the schedule the schedule which determines minimum CO2 concentration + int ZoneMaxCO2SchedIndex; // Index for the schedule the schedule which determines maximum CO2 concentration int ZoneContamControllerSchedIndex; // Index for this schedule bool FlagCustomizedZoneCap; // True if customized Zone Capacitance Multiplier is used // Hybrid Modeling @@ -1420,6 +1421,7 @@ namespace DataHeatBalance { TempOutOfBoundsReported( false ), EnforcedReciprocity( false ), ZoneMinCO2SchedIndex( 0 ), + ZoneMaxCO2SchedIndex( 0 ), ZoneContamControllerSchedIndex( 0 ), FlagCustomizedZoneCap( false ), // Hybrid Modeling diff --git a/src/EnergyPlus/DataSizing.cc b/src/EnergyPlus/DataSizing.cc index ac5c5efb912..d9d2a0f6f90 100644 --- a/src/EnergyPlus/DataSizing.cc +++ b/src/EnergyPlus/DataSizing.cc @@ -163,6 +163,7 @@ namespace DataSizing { // based on the generic contaminant setpoint int const SOAM_ProportionalControlDesOcc( 7 ); // Use ASHRAE Standard 62.1-2004 or Trane Engineer's newsletter (volume 34-5) // to calculate the system level outdoor air flow rates based on design occupancy + int const SOAM_ProportionalControlDesOARate( 8 ); // Calculate the system level outdoor air flow rates based on design OA rate // Zone HVAC Equipment Supply Air Sizing Option int const None( 1 ); diff --git a/src/EnergyPlus/DataSizing.hh b/src/EnergyPlus/DataSizing.hh index e455a5fa933..aebc5eb31cd 100644 --- a/src/EnergyPlus/DataSizing.hh +++ b/src/EnergyPlus/DataSizing.hh @@ -154,6 +154,7 @@ namespace DataSizing { // based on the generic contaminant setpoint extern int const SOAM_IAQPCOM; // Take the maximum outdoor air rate from both CO2 and generic contaminant controls // based on the generic contaminant setpoint + extern int const SOAM_ProportionalControlDesOARate; // Calculate the system level outdoor air flow rates based on design OA rate // Zone HVAC Equipment Supply Air Sizing Option extern int const None; @@ -1218,6 +1219,7 @@ namespace DataSizing { Real64 OAFlowPerZone; // - OA requirement per zone Real64 OAFlowACH; // - OA requirement per zone per hour int OAFlowFracSchPtr; // - Fraction schedule applied to total OA requirement + int OAPropCtlMinRateSchPtr; // - Fraction schedule applied to Proportional Control Minimum Outdoor Air Flow Rate // Default Constructor OARequirementsData() : @@ -1226,7 +1228,8 @@ namespace DataSizing { OAFlowPerArea( 0.0 ), OAFlowPerZone( 0.0 ), OAFlowACH( 0.0 ), - OAFlowFracSchPtr( DataGlobals::ScheduleAlwaysOn ) + OAFlowFracSchPtr( DataGlobals::ScheduleAlwaysOn ), + OAPropCtlMinRateSchPtr( DataGlobals::ScheduleAlwaysOn ) {} }; diff --git a/src/EnergyPlus/MixedAir.cc b/src/EnergyPlus/MixedAir.cc index 51546610de4..34a643e40c9 100644 --- a/src/EnergyPlus/MixedAir.cc +++ b/src/EnergyPlus/MixedAir.cc @@ -1552,6 +1552,13 @@ namespace MixedAir { ShowContinueError( "The choice must be Yes for the field Carbon Dioxide Concentration in ZoneAirContaminantBalance" ); ErrorsFound = true; } + } else if ( SELECT_CASE_var == "PROPORTIONALCONTROLBASEDONDESIGNOARATE" ) { // Proportional Control based on design OA rate + thisVentilationMechanical.SystemOAMethod = SOAM_ProportionalControlDesOARate; + if ( !Contaminant.CO2Simulation ) { + ShowSevereError( CurrentModuleObject + "=\"" + AlphArray( 1 ) + "\" valid " + cAlphaFields( 2 ) + "=\"" + AlphArray( 2 ) + "\" requires CO2 simulation." ); + ShowContinueError( "The choice must be Yes for the field Carbon Dioxide Concentration in ZoneAirContaminantBalance" ); + ErrorsFound = true; + } } else if ( SELECT_CASE_var == "INDOORAIRQUALITYPROCEDUREGENERICCONTAMINANT" ) { // Indoor Air Quality Procedure based on generic contaminant setpoint thisVentilationMechanical.SystemOAMethod = SOAM_IAQPGC; if ( ! Contaminant.GenericContamSimulation ) { @@ -1646,6 +1653,7 @@ namespace MixedAir { thisVentilationMechanical.ZoneOAACHRate.dimension( MechVentZoneCount, 0.0 ); thisVentilationMechanical.ZoneOAFlowMethod.dimension( MechVentZoneCount, 0 ); thisVentilationMechanical.ZoneOASchPtr.dimension( MechVentZoneCount, 0 ); + thisVentilationMechanical.OAPropCtlMinRateSchPtr.dimension( MechVentZoneCount, 0 ); // added for new DCV, 2/12/2009 thisVentilationMechanical.ZoneADEffCooling.dimension( MechVentZoneCount, 1.0 ); @@ -1768,6 +1776,14 @@ namespace MixedAir { thisVentilationMechanical.ZoneOAACHRate( ventMechZoneNum ) = curOARequirements.OAFlowACH; thisVentilationMechanical.ZoneOAFlowMethod( ventMechZoneNum ) = curOARequirements.OAFlowMethod; thisVentilationMechanical.ZoneOASchPtr( ventMechZoneNum ) = curOARequirements.OAFlowFracSchPtr; + thisVentilationMechanical.OAPropCtlMinRateSchPtr( ventMechZoneNum ) = curOARequirements.OAPropCtlMinRateSchPtr; + if ( thisVentilationMechanical.SystemOAMethod == SOAM_ProportionalControlDesOARate ) { + if ( thisVentilationMechanical.ZoneOAPeopleRate( ventMechZoneNum ) == 0.0 && thisVentilationMechanical.ZoneOAAreaRate( ventMechZoneNum ) == 0.0 ) { + ShowSevereError( RoutineName + CurrentModuleObject + "=\"" + thisVentilationMechanical.Name + "\", invalid input with System Outdoor Air Method = ProportionalControlBasedOnDesignOARate." ); + ShowContinueError( " The values of Outdoor Air Flow per Person and Outdoor Air Flow per Zone Floor Area in the same object can not be zero." ); + ErrorsFound = true; + } + } } else { // use defaults thisVentilationMechanical.ZoneOAAreaRate( ventMechZoneNum ) = 0.0; // since this is case with no DesSpcOA object, cannot determine the method and default would be Flow/Person which should default to this flow rate @@ -1912,6 +1928,8 @@ namespace MixedAir { { IOFlags flags; flags.ADVANCE( "NO" ); gio::write( OutputFileInits, fmtA, flags ) << "ProportionalControlBasedonOccupancySchedule,"; } } else if ( VentilationMechanical( VentMechNum ).SystemOAMethod == SOAM_ProportionalControlDesOcc ) { { IOFlags flags; flags.ADVANCE( "NO" ); gio::write( OutputFileInits, fmtA, flags ) << "ProportionalControlBasedOnDesignOccupancy,"; } + } else if ( VentilationMechanical( VentMechNum ).SystemOAMethod == SOAM_ProportionalControlDesOARate ) { + { IOFlags flags; flags.ADVANCE( "NO" ); gio::write( OutputFileInits, fmtA, flags ) << "ProportionalControlBasedOnDesignOARate,"; } } else if ( VentilationMechanical( VentMechNum ).SystemOAMethod == SOAM_IAQPGC ) { { IOFlags flags; flags.ADVANCE( "NO" ); gio::write( OutputFileInits, fmtA, flags ) << "IndoorAirQualityGenericContaminant,"; } } else if ( VentilationMechanical( VentMechNum ).SystemOAMethod == SOAM_IAQPCOM ) { @@ -3753,7 +3771,7 @@ namespace MixedAir { } // get system supply air flow rate - if ( this->SystemOAMethod == SOAM_VRP || this->SystemOAMethod == SOAM_ProportionalControlSchOcc || this->SystemOAMethod == SOAM_ProportionalControlDesOcc ) { + if ( this->SystemOAMethod == SOAM_VRP || this->SystemOAMethod == SOAM_ProportionalControlSchOcc || this->SystemOAMethod == SOAM_ProportionalControlDesOcc || this->SystemOAMethod == SOAM_ProportionalControlDesOARate ) { // System supply air flow rate is always greater than or equal the system outdoor air flow rate if ( ( SysSA > 0.0 ) && ( SysSA < ( SysOAuc * StdRhoAir ) ) ) SysSA = SysOAuc * StdRhoAir; @@ -3849,7 +3867,7 @@ namespace MixedAir { // the VRP case ZoneOA = ZoneOABZ / ZoneEz; - } else if ( this->SystemOAMethod == SOAM_ProportionalControlSchOcc || this->SystemOAMethod == SOAM_ProportionalControlDesOcc ) { + } else if ( this->SystemOAMethod == SOAM_ProportionalControlSchOcc || this->SystemOAMethod == SOAM_ProportionalControlDesOcc || this->SystemOAMethod == SOAM_ProportionalControlDesOARate ) { // Check whether "Carbon Dioxide Control Availability Schedule" for ZoneControl:ContaminantController is specified if ( curZone.ZoneContamControllerSchedIndex > 0.0 ) { // Check the availability schedule value for ZoneControl:ContaminantController @@ -3857,6 +3875,26 @@ namespace MixedAir { if ( ZoneContamControllerSched > 0.0 ) { ZoneOAMin = ZoneOAArea / ZoneEz; ZoneOAMax = ( ZoneOAArea + ZoneOAPeople ) / ZoneEz; + if ( this->SystemOAMethod == SOAM_ProportionalControlDesOARate ) { + ZoneOAMax = ZoneOABZ / ZoneEz; + if ( this->OAPropCtlMinRateSchPtr( ZoneIndex ) > 0 ) { + ZoneOAMin = ZoneOAMax * GetCurrentScheduleValue( this->OAPropCtlMinRateSchPtr( ZoneIndex ) ); + } else { + ZoneOAMin = ZoneOAMax; + } + if ( ZoneOAMax < ZoneOAMin ) { + ZoneOAMin = ZoneOAMax; + ++this->OAMaxMinLimitErrorCount; + if ( this->OAMaxMinLimitErrorCount < 2 ) { + ShowSevereError( RoutineName + CurrentModuleObject + " = \"" + this->Name + "\"." ); + ShowContinueError( "For System Outdoor Air Method = ProportionalControlBasedOnDesignOARate, maximum zone outdoor air rate (" + RoundSigDigits( ZoneOAMax, 4 ) + "), is not greater than minimum zone outdoor air rate (" + RoundSigDigits( ZoneOAMin, 4 ) + ")." ); + ShowContinueError( " The minimum zone outdoor air rate is set to the maximum zone outdoor air rate. Simulation continues..." ); + ShowContinueErrorTimeStamp( "" ); + } else { + ShowRecurringWarningErrorAtEnd( CurrentModuleObject + " = \"" + this->Name + "\", For System Outdoor Air Method = ProportionalControlBasedOnDesignOARate, maximum zone outdoor air rate is not greater than minimum zone outdoor air rate. Error continues...", this->OAMaxMinLimitErrorIndex ); + } + } + } if ( ZoneOAPeople > 0.0 ) { if ( ZoneCO2GainFromPeople( ZoneNum ) > 0.0 ) { @@ -3871,6 +3909,8 @@ namespace MixedAir { // Calculate zone maximum target CO2 concentration in PPM if ( this->SystemOAMethod == SOAM_ProportionalControlDesOcc ) { ZoneMaxCO2 = OutdoorCO2 + ( CO2PeopleGeneration * curZone.Multiplier * curZone.ListMultiplier * 1.0e6 ) / ZoneOAMax; + } else if ( curZone.ZoneMaxCO2SchedIndex > 0.0 ) { + ZoneMaxCO2 = GetCurrentScheduleValue( curZone.ZoneMaxCO2SchedIndex ); } else { ZoneMaxCO2 = OutdoorCO2 + ( ZoneCO2GainFromPeople( ZoneNum ) * curZone.Multiplier * curZone.ListMultiplier * 1.0e6 ) / ZoneOAMax; } @@ -3897,6 +3937,17 @@ namespace MixedAir { ShowRecurringWarningErrorAtEnd( CurrentModuleObject + " = \"" + this->Name + "\", For System Outdoor Air Method = ProportionalControlBasedonDesignOccupancy, maximum target CO2 concentration is not greater than minimum target CO2 concentration. Error continues...", this->CO2MaxMinLimitErrorIndex ); } } + if ( this->SystemOAMethod == SOAM_ProportionalControlDesOARate ) { + if ( this->CO2MaxMinLimitErrorCount < 2 ) { + ShowSevereError( RoutineName + CurrentModuleObject + " = \"" + this->Name + "\"." ); + ShowContinueError( "For System Outdoor Air Method = ProportionalControlBasedOnDesignOARate, maximum target CO2 concentration (" + RoundSigDigits( ZoneMaxCO2, 2 ) + "), is not greater than minimum target CO2 concentration (" + RoundSigDigits( ZoneMinCO2, 2 ) + ")." ); + ShowContinueError( "\"ProportionalControlBasedOnDesignOARate\" will not be modeled. Default \"VentilationRateProcedure\" will be modeled. Simulation continues..." ); + ShowContinueErrorTimeStamp( "" ); + } + else { + ShowRecurringWarningErrorAtEnd( CurrentModuleObject + " = \"" + this->Name + "\", For System Outdoor Air Method = ProportionalControlBasedOnDesignOARate, maximum target CO2 concentration is not greater than minimum target CO2 concentration. Error continues...", this->CO2MaxMinLimitErrorIndex ); + } + } ZoneOA = ZoneOABZ / ZoneEz; } else { @@ -4047,7 +4098,7 @@ namespace MixedAir { if ( SysEv <= 0.0 ) SysEv = 1.0; // Calc system outdoor air requirement - if ( this->SystemOAMethod == SOAM_ProportionalControlSchOcc || this->SystemOAMethod == SOAM_ProportionalControlDesOcc ) { + if ( this->SystemOAMethod == SOAM_ProportionalControlSchOcc || this->SystemOAMethod == SOAM_ProportionalControlDesOcc || this->SystemOAMethod == SOAM_ProportionalControlDesOARate ) { SysOA = SysOA / SysEv; } else { SysOA = SysOAuc / SysEv; diff --git a/src/EnergyPlus/MixedAir.hh b/src/EnergyPlus/MixedAir.hh index 7b266ee939a..c39894f57a2 100644 --- a/src/EnergyPlus/MixedAir.hh +++ b/src/EnergyPlus/MixedAir.hh @@ -398,6 +398,8 @@ namespace MixedAir { int CO2MaxMinLimitErrorIndex; // Index for max CO2 concentration < min CO2 concentration recurring error message for SOAM_ProportionalControlSchOcc int CO2GainErrorCount; // Counter when CO2 generation from people is zero for SOAM_ProportionalControlSchOcc int CO2GainErrorIndex; // Index for recurring error message when CO2 generation from people is zero for SOAM_ProportionalControlSchOcc + int OAMaxMinLimitErrorCount; // Counter when max OA < min OA for SOAM_ProportionalControlDesOARate + int OAMaxMinLimitErrorIndex; // Index for max OA < min OA recurring error message for SOAM_ProportionalControlDesOARate Array1D< Real64 > ZoneADEffCooling; // Zone air distribution effectiveness in cooling mode for each zone Array1D< Real64 > ZoneADEffHeating; // Zone air distribution effectiveness in heating mode for each zone Array1D_int ZoneADEffSchPtr; // Pointer to the zone air distribution effectiveness schedule for each zone @@ -406,6 +408,7 @@ namespace MixedAir { Array1D< Real64 > ZoneSecondaryRecirculation; // zone air secondary recirculation ratio for each zone Array1D_int ZoneOAFlowMethod; // OA flow method for each zone Array1D_int ZoneOASchPtr; // Index to the outdoor air schedule for each zone (from DesignSpecification:OutdoorAir or default) + Array1D< Real64 > OAPropCtlMinRateSchPtr; // Outdoor design OA flow rate schedule from DesignSpecification:OutdoorAir // Default Constructor VentilationMechanicalProps() : @@ -421,7 +424,9 @@ namespace MixedAir { CO2MaxMinLimitErrorCount( 0 ), CO2MaxMinLimitErrorIndex( 0 ), CO2GainErrorCount( 0 ), - CO2GainErrorIndex( 0 ) + CO2GainErrorIndex( 0 ), + OAMaxMinLimitErrorCount( 0 ), + OAMaxMinLimitErrorIndex( 0 ) {} void diff --git a/src/EnergyPlus/SizingManager.cc b/src/EnergyPlus/SizingManager.cc index fa255d35cbc..6f40609d50e 100644 --- a/src/EnergyPlus/SizingManager.cc +++ b/src/EnergyPlus/SizingManager.cc @@ -984,6 +984,25 @@ namespace SizingManager { } } + if ( NumAlphas > 3 ) { + if ( !lAlphaBlanks( 4 ) ) { + OARequirements( OAIndex ).OAPropCtlMinRateSchPtr = GetScheduleIndex( Alphas( 4 ) ); + if ( OARequirements( OAIndex ).OAPropCtlMinRateSchPtr > 0 ) { + if ( !CheckScheduleValueMinMax( OARequirements( OAIndex ).OAPropCtlMinRateSchPtr, ">=", 0.0, "<=", 1.0 ) ) { + ShowSevereError( RoutineName + CurrentModuleObject + "=\"" + OARequirements( OAIndex ).Name + "\"," ); + ShowContinueError( "Error found in " + cAlphaFields( 4 ) + " = " + Alphas( 4 ) ); + ShowContinueError( "Schedule values must be (>=0., <=1.)" ); + ErrorsFound = true; + } + } + else { + ShowSevereError( RoutineName + CurrentModuleObject + "=\"" + OARequirements( OAIndex ).Name + "\"," ); + ShowContinueError( "...Not Found " + cAlphaFields( 4 ) + "=\"" + Alphas( 4 ) + "\"." ); + ErrorsFound = true; + } + } + } + } diff --git a/src/EnergyPlus/ZoneContaminantPredictorCorrector.cc b/src/EnergyPlus/ZoneContaminantPredictorCorrector.cc index 1bc43f0481d..0ef5b088406 100644 --- a/src/EnergyPlus/ZoneContaminantPredictorCorrector.cc +++ b/src/EnergyPlus/ZoneContaminantPredictorCorrector.cc @@ -1059,33 +1059,48 @@ namespace ZoneContaminantPredictorCorrector { } } - if ( NumAlphas > 5 ) { - ContaminantControlledZone( ContControlledZoneNum ).GCAvaiSchedule = cAlphaArgs( 6 ); - if ( lAlphaFieldBlanks( 6 ) ) { + ContaminantControlledZone( ContControlledZoneNum ).ZoneMaxCO2SchedName = cAlphaArgs( 6 ); + ContaminantControlledZone( ContControlledZoneNum ).ZoneMaxCO2SchedIndex = GetScheduleIndex( cAlphaArgs( 6 ) ); + if ( ContaminantControlledZone( ContControlledZoneNum ).ZoneMaxCO2SchedIndex > 0 ) { + // Check validity of control types. + ValidScheduleType = CheckScheduleValueMinMax( ContaminantControlledZone( ContControlledZoneNum ).ZoneMaxCO2SchedIndex, ">=", 0.0, "<=", 2000.0 ); + if ( !ValidScheduleType ) { + ShowSevereError( cCurrentModuleObject + "=\"" + cAlphaArgs( 1 ) + "\" invalid range " + cAlphaFieldNames( 6 ) + "=\"" + cAlphaArgs( 6 ) + "\"" ); + ShowContinueError( "..contains values outside of range [0,2000 ppm]." ); + ErrorsFound = true; + } + else { + Zone( ContaminantControlledZone( ContControlledZoneNum ).ActualZoneNum ).ZoneMaxCO2SchedIndex = ContaminantControlledZone( ContControlledZoneNum ).ZoneMaxCO2SchedIndex; + } + } + + if ( NumAlphas > 6 ) { + ContaminantControlledZone( ContControlledZoneNum ).GCAvaiSchedule = cAlphaArgs( 7 ); + if ( lAlphaFieldBlanks( 7 ) ) { ContaminantControlledZone( ContControlledZoneNum ).GCAvaiSchedPtr = ScheduleAlwaysOn; } else { - ContaminantControlledZone( ContControlledZoneNum ).GCAvaiSchedPtr = GetScheduleIndex( cAlphaArgs( 6 ) ); + ContaminantControlledZone( ContControlledZoneNum ).GCAvaiSchedPtr = GetScheduleIndex( cAlphaArgs( 7 ) ); if ( ContaminantControlledZone( ContControlledZoneNum ).AvaiSchedPtr == 0 ) { - ShowSevereError( cCurrentModuleObject + "=\"" + cAlphaArgs( 1 ) + "\" invalid " + cAlphaFieldNames( 3 ) + "=\"" + cAlphaArgs( 6 ) + "\" not found." ); + ShowSevereError( cCurrentModuleObject + "=\"" + cAlphaArgs( 1 ) + "\" invalid " + cAlphaFieldNames( 3 ) + "=\"" + cAlphaArgs( 7 ) + "\" not found." ); ErrorsFound = true; } else { // Check validity of control types. ValidScheduleType = CheckScheduleValueMinMax( ContaminantControlledZone( ContControlledZoneNum ).GCAvaiSchedPtr, ">=", 0.0, "<=", 1.0 ); if ( ! ValidScheduleType ) { - ShowSevereError( cCurrentModuleObject + "=\"" + cAlphaArgs( 1 ) + "\" invalid range " + cAlphaFieldNames( 3 ) + "=\"" + cAlphaArgs( 6 ) + "\"" ); + ShowSevereError( cCurrentModuleObject + "=\"" + cAlphaArgs( 1 ) + "\" invalid range " + cAlphaFieldNames( 3 ) + "=\"" + cAlphaArgs( 7 ) + "\"" ); ShowContinueError( "..contains values outside of range [0,1]." ); ErrorsFound = true; } } } - if ( lAlphaFieldBlanks( 7 ) ) { - ShowSevereError( cCurrentModuleObject + " \"" + cAlphaArgs( 7 ) + "\" is required, but blank." ); + if ( lAlphaFieldBlanks( 8 ) ) { + ShowSevereError( cCurrentModuleObject + " \"" + cAlphaArgs( 8 ) + "\" is required, but blank." ); ErrorsFound = true; } else { - ContaminantControlledZone( ContControlledZoneNum ).GCSetPointSchedName = cAlphaArgs( 7 ); - ContaminantControlledZone( ContControlledZoneNum ).GCSPSchedIndex = GetScheduleIndex( cAlphaArgs( 7 ) ); + ContaminantControlledZone( ContControlledZoneNum ).GCSetPointSchedName = cAlphaArgs( 8 ); + ContaminantControlledZone( ContControlledZoneNum ).GCSPSchedIndex = GetScheduleIndex( cAlphaArgs( 8 ) ); if ( ContaminantControlledZone( ContControlledZoneNum ).GCSPSchedIndex == 0 ) { - ShowSevereError( cCurrentModuleObject + "=\"" + cAlphaArgs( 1 ) + "\" invalid " + cAlphaFieldNames( 7 ) + "=\"" + cAlphaArgs( 7 ) + "\" not found." ); + ShowSevereError( cCurrentModuleObject + "=\"" + cAlphaArgs( 1 ) + "\" invalid " + cAlphaFieldNames( 8 ) + "=\"" + cAlphaArgs( 8 ) + "\" not found." ); ErrorsFound = true; } } diff --git a/src/Transition/InputRulesFiles/Rules8-7-0-to-8-8-0.md b/src/Transition/InputRulesFiles/Rules8-7-0-to-8-8-0.md new file mode 100644 index 00000000000..cff6f8ede6d --- /dev/null +++ b/src/Transition/InputRulesFiles/Rules8-7-0-to-8-8-0.md @@ -0,0 +1,11 @@ +Input Changes +============= + +This file documents the structural changes on the input of EnergyPlus that could affect interfaces, etc. +This was previously an Excel workbook that made for very difficult version control, especially during busy times around code freezes. + +# Object Change: `ZoneControl:ContaminantController` + +Insert new blank field 6 (A6) (for Maximum Carbon Dioxide Concentration Schedule Name). +Shift all later fields down by one. + diff --git a/testfiles/CMakeLists.txt b/testfiles/CMakeLists.txt index f47daaaae32..fd690048326 100644 --- a/testfiles/CMakeLists.txt +++ b/testfiles/CMakeLists.txt @@ -280,6 +280,7 @@ ADD_SIMULATION_TEST(IDF_FILE HeatPumpCycFanWithEcono.idf EPW_FILE USA_IL_Chicago ADD_SIMULATION_TEST(IDF_FILE HeatPumpIAQP_DCV.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw) ADD_SIMULATION_TEST(IDF_FILE HeatPumpIAQP_GenericContamControl.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw) ADD_SIMULATION_TEST(IDF_FILE HeatPumpProportionalControl_DCV.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw) +ADD_SIMULATION_TEST(IDF_FILE HeatPumpProportionalControl_DCVDesignRate.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw) ADD_SIMULATION_TEST(IDF_FILE HeatPumpSecondaryCoil.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw) ADD_SIMULATION_TEST(IDF_FILE HeatPumpSimpleDCV.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw) ADD_SIMULATION_TEST(IDF_FILE HeatPumpVRP_DCV.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw) diff --git a/testfiles/HeatPumpIAQP_GenericContamControl.idf b/testfiles/HeatPumpIAQP_GenericContamControl.idf index 142bb7b63df..260781fddaa 100644 --- a/testfiles/HeatPumpIAQP_GenericContamControl.idf +++ b/testfiles/HeatPumpIAQP_GenericContamControl.idf @@ -1631,6 +1631,7 @@ CO2AvailSchedule, !- Carbon Dioxide Control Availability Schedule Name CO2SetpointSchedule, !- Carbon Dioxide Setpoint Schedule Name , !- Minimum Carbon Dioxide Concentration Schedule Name + , !- Maximum Carbon Dioxide Concentration Schedule Name GCAvailSchedule, !- Generic Contaminant Control Availability Schedule Name GCSetpointSchedule; !- Generic Contaminant Setpoint Schedule Name diff --git a/testfiles/HeatPumpProportionalControl_DCVDesignRate.idf b/testfiles/HeatPumpProportionalControl_DCVDesignRate.idf new file mode 100644 index 00000000000..6c77f5f9916 --- /dev/null +++ b/testfiles/HeatPumpProportionalControl_DCVDesignRate.idf @@ -0,0 +1,1733 @@ +!-Generator IDFEditor 1.34 +!-Option OriginalOrderTop UseSpecialFormat +!-NOTE: All comments with '!-' are ignored by the IDFEditor and are generated automatically. +!- Use '!' comments if they need to be retained when using the IDFEditor. +! HeatPumpProportionalControl_DCV.idf +! Basic file description: Heat pump with DX coil for cooling (w/ 10% outdoor air max.) +! 1 story building divided into 3 interior conditioned zones. Roof with no plenum. +! No ground contact with floor. Outdoor air is modulated based on occupancy and floor area. +! +! Highlights: Example of demand controlled ventilation (see Controller:MechanicalVentilation object). +! Enhance CO2 based DCV control by using Proportional Control Based On Design OA Rate. +! +! Simulation Location/Run: CHICAGO_IL_USA TMY2-94846, 2 design days, 1 run period +! Run Control executes 1 run period(see RUN PERIOD object) +! +! Location: Chicago, IL +! +! Design Days: CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, MaxDB= -17.3C +! CHICAGO_IL_USA Annual Cooling 1% Design Conditions, MaxDB= 31.5C MCWB= 23.0C +! +! Run Period (Weather File): Winter 1/14, Summer 7/7, CHICAGO_IL_USA TMY2-94846 +! +! Run Control: No zone or system sizing, run period using weather file. +! +! Building: Single floor rectangular L-shaped building 40 ft south wall, 40 ft west wall, zone height 10 feet. +! There is a single window in West Zone's south wall. The walls are 1 in stucco over 4 in common brick +! and gypboard. The roof is a built up roof with 1/2 in stone over 3/8 in felt over 1 in dense insulation +! supported by 2 in heavy weight concrete. The window is single pane 3mm clear. +! The window to wall ratio is approxomately 0.07. +! +! The building is oriented due north. +! +! Floor Area: 130.1 m2 (1403 ft2) +! Number of Stories: 1 +! +! Zone Description Details: +! +! (0,12.192,0) (9.144,12.192,0) +! ________________________________ +! | | +! | | +! | | +! | | +! | North | +! | | +! | | +! | (6.096,6.096,0) | +! |________________________________|____________ (12.192,6.069,0) +! | (0,6.096,0) | (9.144,6.096,0) | +! | | | +! | | | +! | | | +! | West | East | window = * +! | | | +! | | | +! | | | +! |___**************___|________________________| +! +! (0,0,0) (6.069,0,0) (12.192,0,0) +! +! Internal gains description: ZONE West - lighting is 0 watts, equip is 2928.751 watts, 3 occupants +! Internal gains description: ZONE North - lighting is 878.6252 watts, equip is 2928.751 watts, 4 occupants +! Internal gains description: ZONE East - lighting is 1464.375 watts, equip is 1464.375 watts, 3 occupants +! +! Interzone Surfaces: 3 interzone surfaces (see diagram) +! Internal Mass: None +! People: 10 +! Lights: 2343 W +! Equipment: 7323 W +! Windows: 1 +! Detached Shading: None +! Daylight: None +! Natural Ventilation: None +! Compact Schedules: Yes +! Solair Distribution: FullInteriorAndExterior +! +! HVAC: Heat pump using a single air loop serving 3 zones. Heat pump configured with a +! blow through fan, heat pump defrost is timed using a resistive heating element. +! Heating set point during winter months is 20 C during occupied hours, +! 15 C set-back otherwise. Cooling set point at 24 C during occupied hours only. +! Cooling coil off all winter. Heat Pump has a gas supplemental heater. Outdoor air +! is modulated based on occupancy and floor area according to the following +! schedule (see Controller:MechanicalVentilation object): +! +! Zone: Outdoor Air: +! West Zone 0.000381 m3/s-m2 and 0.002952 m3/s-person +! East Zone 0.000407 m3/s-m2 and 0.003149 m3/s-person +! North Zone 0.000407 m3/s-m2 and 0.003149 m3/s-person +! +! Zonal Equipment: DIRECT AIR +! Central Air Handling Equipment: Yes +! System Equipment Autosize: No +! Purchased Cooling: No +! Purchased Heating: No +! Purchased Chilled Water: No +! Purchased Hot Water: No +! Coils: Coil:Cooling:DX:SingleSpeed, COIL:DX:HeatingEmpirical, Coil:Heating:Fuel +! Pumps: None +! Boilers: None +! Chillers: None +! Towers: None +! +! Results: +! Standard Reports: None +! Timestep or Hourly Variables: Timestep +! Time bins Report: None +! HTML Report: None +! Environmental Emissions: None +! Utility Tariffs: None + + Version,8.7; + + Building, + NONE, !- Name + 0, !- North Axis {deg} + Suburbs, !- Terrain + 3.9999999E-02, !- Loads Convergence Tolerance Value + 0.4000000, !- Temperature Convergence Tolerance Value {deltaC} + FullInteriorAndExterior, !- Solar Distribution + 25, !- Maximum Number of Warmup Days + 6; !- Minimum Number of Warmup Days + + Timestep,6; + + SurfaceConvectionAlgorithm:Inside,TARP; + + SurfaceConvectionAlgorithm:Outside,DOE-2; + + HeatBalanceAlgorithm,ConductionTransferFunction; + + SimulationControl, + No, !- Do Zone Sizing Calculation + No, !- Do System Sizing Calculation + No, !- Do Plant Sizing Calculation + Yes, !- Run Simulation for Sizing Periods + No; !- Run Simulation for Weather File Run Periods + + RunPeriod, + , !- Name + 7, !- Begin Month + 1, !- Begin Day of Month + 7, !- End Month + 14, !- End Day of Month + Tuesday, !- Day of Week for Start Day + Yes, !- Use Weather File Holidays and Special Days + Yes, !- Use Weather File Daylight Saving Period + No, !- Apply Weekend Holiday Rule + Yes, !- Use Weather File Rain Indicators + Yes; !- Use Weather File Snow Indicators + + Site:Location, + CHICAGO_IL_USA TMY2-94846, !- Name + 42.00, !- Latitude {deg} + -87.88, !- Longitude {deg} + -6.00, !- Time Zone {hr} + 190.00; !- Elevation {m} + +! CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, MaxDB= -17.3C + + SizingPeriod:DesignDay, + CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name + 1, !- Month + 25, !- Day of Month + WinterDesignDay, !- Day Type + -17.3, !- Maximum Dry-Bulb Temperature {C} + 0.0, !- Daily Dry-Bulb Temperature Range {deltaC} + , !- Dry-Bulb Temperature Range Modifier Type + , !- Dry-Bulb Temperature Range Modifier Day Schedule Name + Wetbulb, !- Humidity Condition Type + -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C} + , !- Humidity Condition Day Schedule Name + , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir} + , !- Enthalpy at Maximum Dry-Bulb {J/kg} + , !- Daily Wet-Bulb Temperature Range {deltaC} + 99063., !- Barometric Pressure {Pa} + 4.9, !- Wind Speed {m/s} + 270, !- Wind Direction {deg} + No, !- Rain Indicator + No, !- Snow Indicator + No, !- Daylight Saving Time Indicator + ASHRAEClearSky, !- Solar Model Indicator + , !- Beam Solar Day Schedule Name + , !- Diffuse Solar Day Schedule Name + , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless} + , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless} + 0.0; !- Sky Clearness + +! CHICAGO_IL_USA Annual Cooling 1% Design Conditions, MaxDB= 31.5C MCWB= 23.0C + + SizingPeriod:DesignDay, + CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name + 7, !- Month + 25, !- Day of Month + SummerDesignDay, !- Day Type + 31.5, !- Maximum Dry-Bulb Temperature {C} + 10.7, !- Daily Dry-Bulb Temperature Range {deltaC} + , !- Dry-Bulb Temperature Range Modifier Type + , !- Dry-Bulb Temperature Range Modifier Day Schedule Name + Wetbulb, !- Humidity Condition Type + 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C} + , !- Humidity Condition Day Schedule Name + , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir} + , !- Enthalpy at Maximum Dry-Bulb {J/kg} + , !- Daily Wet-Bulb Temperature Range {deltaC} + 99063., !- Barometric Pressure {Pa} + 5.3, !- Wind Speed {m/s} + 230, !- Wind Direction {deg} + No, !- Rain Indicator + No, !- Snow Indicator + No, !- Daylight Saving Time Indicator + ASHRAEClearSky, !- Solar Model Indicator + , !- Beam Solar Day Schedule Name + , !- Diffuse Solar Day Schedule Name + , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless} + , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless} + 1.0; !- Sky Clearness + + Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20; + + ZoneAirContaminantBalance, + Yes, !- Carbon Dioxide Concentration + Outdoor CO2 Schedule; !- Outdoor Carbon Dioxide Schedule Name + + Material, + A1 - 1 IN STUCCO, !- Name + Smooth, !- Roughness + 2.5389841E-02, !- Thickness {m} + 0.6918309, !- Conductivity {W/m-K} + 1858.142, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.9200000, !- Solar Absorptance + 0.9200000; !- Visible Absorptance + + Material, + C4 - 4 IN COMMON BRICK, !- Name + Rough, !- Roughness + 0.1014984, !- Thickness {m} + 0.7264224, !- Conductivity {W/m-K} + 1922.216, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.7600000, !- Solar Absorptance + 0.7600000; !- Visible Absorptance + + Material, + E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name + Smooth, !- Roughness + 1.9050000E-02, !- Thickness {m} + 0.7264224, !- Conductivity {W/m-K} + 1601.846, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.9200000, !- Solar Absorptance + 0.9200000; !- Visible Absorptance + + Material, + C6 - 8 IN CLAY TILE, !- Name + Smooth, !- Roughness + 0.2033016, !- Thickness {m} + 0.5707605, !- Conductivity {W/m-K} + 1121.292, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.8200000, !- Solar Absorptance + 0.8200000; !- Visible Absorptance + + Material, + C10 - 8 IN HW CONCRETE, !- Name + MediumRough, !- Roughness + 0.2033016, !- Thickness {m} + 1.729577, !- Conductivity {W/m-K} + 2242.585, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.6500000, !- Solar Absorptance + 0.6500000; !- Visible Absorptance + + Material, + E2 - 1 / 2 IN SLAG OR STONE, !- Name + Rough, !- Roughness + 1.2710161E-02, !- Thickness {m} + 1.435549, !- Conductivity {W/m-K} + 881.0155, !- Density {kg/m3} + 1673.600, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.5500000, !- Solar Absorptance + 0.5500000; !- Visible Absorptance + + Material, + E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name + Rough, !- Roughness + 9.5402403E-03, !- Thickness {m} + 0.1902535, !- Conductivity {W/m-K} + 1121.292, !- Density {kg/m3} + 1673.600, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.7500000, !- Solar Absorptance + 0.7500000; !- Visible Absorptance + + Material, + B5 - 1 IN DENSE INSULATION, !- Name + VeryRough, !- Roughness + 2.5389841E-02, !- Thickness {m} + 4.3239430E-02, !- Conductivity {W/m-K} + 91.30524, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.5000000, !- Solar Absorptance + 0.5000000; !- Visible Absorptance + + Material, + C12 - 2 IN HW CONCRETE, !- Name + MediumRough, !- Roughness + 5.0901599E-02, !- Thickness {m} + 1.729577, !- Conductivity {W/m-K} + 2242.585, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.6500000, !- Solar Absorptance + 0.6500000; !- Visible Absorptance + + WindowMaterial:Glazing, + WIN-LAY-GLASS-LIGHT, !- Name + SpectralAverage, !- Optical Data Type + , !- Window Glass Spectral Data Set Name + 0.003, !- Thickness {m} + 0.90, !- Solar Transmittance at Normal Incidence + 0.031, !- Front Side Solar Reflectance at Normal Incidence + 0.031, !- Back Side Solar Reflectance at Normal Incidence + 0.90, !- Visible Transmittance at Normal Incidence + 0.05, !- Front Side Visible Reflectance at Normal Incidence + 0.05, !- Back Side Visible Reflectance at Normal Incidence + 0.0, !- Infrared Transmittance at Normal Incidence + 0.84, !- Front Side Infrared Hemispherical Emissivity + 0.84, !- Back Side Infrared Hemispherical Emissivity + 0.9; !- Conductivity {W/m-K} + + Construction, + EXTWALL80, !- Name + A1 - 1 IN STUCCO, !- Outside Layer + C4 - 4 IN COMMON BRICK, !- Layer 2 + E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3 + + Construction, + PARTITION06, !- Name + E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer + C6 - 8 IN CLAY TILE, !- Layer 2 + E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3 + + Construction, + FLOOR SLAB 8 IN, !- Name + C10 - 8 IN HW CONCRETE; !- Outside Layer + + Construction, + ROOF34, !- Name + E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer + E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2 + B5 - 1 IN DENSE INSULATION, !- Layer 3 + C12 - 2 IN HW CONCRETE; !- Layer 4 + + Construction, + WIN-CON-LIGHT, !- Name + WIN-LAY-GLASS-LIGHT; !- Outside Layer + + Zone, + West Zone, !- Name + 0, !- Direction of Relative North {deg} + 0, !- X Origin {m} + 0, !- Y Origin {m} + 0, !- Z Origin {m} + 1, !- Type + 1, !- Multiplier + autocalculate, !- Ceiling Height {m} + autocalculate; !- Volume {m3} + + Zone, + EAST ZONE, !- Name + 0, !- Direction of Relative North {deg} + 0, !- X Origin {m} + 0, !- Y Origin {m} + 0, !- Z Origin {m} + 1, !- Type + 1, !- Multiplier + autocalculate, !- Ceiling Height {m} + autocalculate; !- Volume {m3} + + Zone, + NORTH ZONE, !- Name + 0, !- Direction of Relative North {deg} + 0, !- X Origin {m} + 0, !- Y Origin {m} + 0, !- Z Origin {m} + 1, !- Type + 1, !- Multiplier + autocalculate, !- Ceiling Height {m} + autocalculate; !- Volume {m3} + + ZoneList, + DCV Zone List, !- Name + East Zone, !- Zone 1 Name + North Zone; !- Zone 2 Name + + GlobalGeometryRules, + UpperLeftCorner, !- Starting Vertex Position + CounterClockWise, !- Vertex Entry Direction + World; !- Coordinate System + + BuildingSurface:Detailed, + Zn001:Wall001, !- Name + Wall, !- Surface Type + EXTWALL80, !- Construction Name + West Zone, !- Zone Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 0,0,0, !- X,Y,Z ==> Vertex 2 {m} + 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m} + 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall002, !- Name + Wall, !- Surface Type + EXTWALL80, !- Construction Name + West Zone, !- Zone Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m} + 0,0,0, !- X,Y,Z ==> Vertex 3 {m} + 0,0,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall003, !- Name + Wall, !- Surface Type + PARTITION06, !- Construction Name + West Zone, !- Zone Name + Surface, !- Outside Boundary Condition + Zn003:Wall004, !- Outside Boundary Condition Object + NoSun, !- Sun Exposure + NoWind, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m} + 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m} + 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall004, !- Name + Wall, !- Surface Type + PARTITION06, !- Construction Name + West Zone, !- Zone Name + Surface, !- Outside Boundary Condition + Zn002:Wall004, !- Outside Boundary Condition Object + NoSun, !- Sun Exposure + NoWind, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m} + 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m} + 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Flr001, !- Name + Floor, !- Surface Type + FLOOR SLAB 8 IN, !- Construction Name + West Zone, !- Zone Name + Surface, !- Outside Boundary Condition + Zn001:Flr001, !- Outside Boundary Condition Object + NoSun, !- Sun Exposure + NoWind, !- Wind Exposure + 1.000000, !- View Factor to Ground + 4, !- Number of Vertices + 0,0,0, !- X,Y,Z ==> Vertex 1 {m} + 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m} + 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m} + 6.096000,0,0; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Roof001, !- Name + Roof, !- Surface Type + ROOF34, !- Construction Name + West Zone, !- Zone Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0, !- View Factor to Ground + 4, !- Number of Vertices + 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m} + 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m} + 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall001, !- Name + Wall, !- Surface Type + EXTWALL80, !- Construction Name + EAST ZONE, !- Zone Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m} + 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m} + 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall002, !- Name + Wall, !- Surface Type + EXTWALL80, !- Construction Name + EAST ZONE, !- Zone Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m} + 12.19200,0,0, !- X,Y,Z ==> Vertex 3 {m} + 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall003, !- Name + Wall, !- Surface Type + EXTWALL80, !- Construction Name + EAST ZONE, !- Zone Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 12.19200,0,0, !- X,Y,Z ==> Vertex 2 {m} + 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m} + 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall004, !- Name + Wall, !- Surface Type + PARTITION06, !- Construction Name + EAST ZONE, !- Zone Name + Surface, !- Outside Boundary Condition + Zn001:Wall004, !- Outside Boundary Condition Object + NoSun, !- Sun Exposure + NoWind, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m} + 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m} + 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall005, !- Name + Wall, !- Surface Type + PARTITION06, !- Construction Name + EAST ZONE, !- Zone Name + Surface, !- Outside Boundary Condition + Zn003:Wall005, !- Outside Boundary Condition Object + NoSun, !- Sun Exposure + NoWind, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m} + 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m} + 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Flr001, !- Name + Floor, !- Surface Type + FLOOR SLAB 8 IN, !- Construction Name + EAST ZONE, !- Zone Name + Surface, !- Outside Boundary Condition + Zn002:Flr001, !- Outside Boundary Condition Object + NoSun, !- Sun Exposure + NoWind, !- Wind Exposure + 1.000000, !- View Factor to Ground + 4, !- Number of Vertices + 6.096000,0,0, !- X,Y,Z ==> Vertex 1 {m} + 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m} + 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m} + 12.19200,0,0; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Roof001, !- Name + Roof, !- Surface Type + ROOF34, !- Construction Name + EAST ZONE, !- Zone Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0, !- View Factor to Ground + 4, !- Number of Vertices + 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m} + 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m} + 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall001, !- Name + Wall, !- Surface Type + EXTWALL80, !- Construction Name + NORTH ZONE, !- Zone Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m} + 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m} + 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall002, !- Name + Wall, !- Surface Type + EXTWALL80, !- Construction Name + NORTH ZONE, !- Zone Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 2 {m} + 0,12.19200,0, !- X,Y,Z ==> Vertex 3 {m} + 0,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall003, !- Name + Wall, !- Surface Type + EXTWALL80, !- Construction Name + NORTH ZONE, !- Zone Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m} + 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 3 {m} + 9.144000,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall004, !- Name + Wall, !- Surface Type + PARTITION06, !- Construction Name + NORTH ZONE, !- Zone Name + Surface, !- Outside Boundary Condition + Zn001:Wall003, !- Outside Boundary Condition Object + NoSun, !- Sun Exposure + NoWind, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m} + 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m} + 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall005, !- Name + Wall, !- Surface Type + PARTITION06, !- Construction Name + NORTH ZONE, !- Zone Name + Surface, !- Outside Boundary Condition + Zn002:Wall005, !- Outside Boundary Condition Object + NoSun, !- Sun Exposure + NoWind, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m} + 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m} + 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Flr001, !- Name + Floor, !- Surface Type + FLOOR SLAB 8 IN, !- Construction Name + NORTH ZONE, !- Zone Name + Surface, !- Outside Boundary Condition + Zn003:Flr001, !- Outside Boundary Condition Object + NoSun, !- Sun Exposure + NoWind, !- Wind Exposure + 1.000000, !- View Factor to Ground + 4, !- Number of Vertices + 0,6.096000,0, !- X,Y,Z ==> Vertex 1 {m} + 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m} + 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 3 {m} + 9.144000,6.096000,0; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Roof001, !- Name + Roof, !- Surface Type + ROOF34, !- Construction Name + NORTH ZONE, !- Zone Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0, !- View Factor to Ground + 4, !- Number of Vertices + 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m} + 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m} + 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m} + 9.144000,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn001:Wall001:Win001, !- Name + Window, !- Surface Type + WIN-CON-LIGHT, !- Construction Name + Zn001:Wall001, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Shading Control Name + , !- Frame and Divider Name + 1.0, !- Multiplier + 4, !- Number of Vertices + 0.548000,0,2.5000, !- X,Y,Z ==> Vertex 1 {m} + 0.548000,0,0.5000, !- X,Y,Z ==> Vertex 2 {m} + 5.548000,0,0.5000, !- X,Y,Z ==> Vertex 3 {m} + 5.548000,0,2.5000; !- X,Y,Z ==> Vertex 4 {m} + + ScheduleTypeLimits, + Any Number; !- Name + + ScheduleTypeLimits, + Fraction, !- Name + 0.0, !- Lower Limit Value + 1.0, !- Upper Limit Value + CONTINUOUS; !- Numeric Type + + ScheduleTypeLimits, + Temperature, !- Name + -60, !- Lower Limit Value + 200, !- Upper Limit Value + CONTINUOUS, !- Numeric Type + Temperature; !- Unit Type + + ScheduleTypeLimits, + Control Type, !- Name + 0, !- Lower Limit Value + 4, !- Upper Limit Value + DISCRETE; !- Numeric Type + + ScheduleTypeLimits, + On/Off, !- Name + 0, !- Lower Limit Value + 1, !- Upper Limit Value + DISCRETE; !- Numeric Type + + Schedule:Compact, + ZoneADEffSch, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: Saturday Sunday Holiday, !- Field 2 + Until: 24:00,1.0, !- Field 3 + For: AllOtherDays, !- Field 5 + Until: 5:00,1.0, !- Field 6 + Until: 18:30,1.0, !- Field 8 + Until: 24:00,1.0; !- Field 10 + + Schedule:Compact, + VentSchedule, !- Name + On/Off, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: Saturday Sunday Holiday, !- Field 2 + Until: 24:00,0, !- Field 3 + For: AllOtherDays, !- Field 5 + Until: 5:00,0, !- Field 6 + Until: 18:30,1, !- Field 8 + Until: 24:00,0; !- Field 10 + + Schedule:Compact, + Activity Sch, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,131.8; !- Field 3 + + Schedule:Compact, + Work Eff Sch, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,0.0; !- Field 3 + + Schedule:Compact, + Clothing Sch, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,1.0; !- Field 3 + + Schedule:Compact, + Air Velo Sch, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,0.137; !- Field 3 + + Schedule:Compact, + OFFICE OCCUPANCY, !- Name + Fraction, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: WeekDays SummerDesignDay, !- Field 2 + Until: 6:00,0.0, !- Field 3 + Until: 7:00,0.10, !- Field 5 + Until: 8:00,0.50, !- Field 7 + Until: 12:00,1.00, !- Field 9 + Until: 13:00,0.50, !- Field 11 + Until: 16:00,1.00, !- Field 13 + Until: 17:00,0.50, !- Field 15 + Until: 18:00,0.10, !- Field 17 + Until: 24:00,0.0, !- Field 19 + For: AllOtherDays, !- Field 21 + Until: 24:00,0.0; !- Field 22 + + Schedule:Compact, + INTERMITTENT, !- Name + Fraction, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: WeekDays SummerDesignDay, !- Field 2 + Until: 8:00,0.0, !- Field 3 + Until: 18:00,1.00, !- Field 5 + Until: 24:00,0.0, !- Field 7 + For: AllOtherDays, !- Field 9 + Until: 24:00,0.0; !- Field 10 + + Schedule:Compact, + OFFICE LIGHTING, !- Name + Fraction, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: WeekDays SummerDesignDay, !- Field 2 + Until: 6:00,0.05, !- Field 3 + Until: 7:00,0.20, !- Field 5 + Until: 17:00,1.00, !- Field 7 + Until: 18:00,0.50, !- Field 9 + Until: 24:00,0.05, !- Field 11 + For: AllOtherDays, !- Field 13 + Until: 24:00,0.05; !- Field 14 + + Schedule:Compact, + OutdoorAirAvailSched, !- Name + Fraction, !- Schedule Type Limits Name + Through: 3/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,1.0, !- Field 3 + Through: 9/30, !- Field 5 + For: WeekDays, !- Field 6 + Until: 7:00,0.0, !- Field 7 + Until: 17:00,1.0, !- Field 9 + Until: 24:00,0.0, !- Field 11 + For: SummerDesignDay WinterDesignDay, !- Field 13 + Until: 24:00,0.0, !- Field 14 + For: AllOtherDays, !- Field 16 + Until: 24:00,0.0, !- Field 17 + Through: 12/31, !- Field 19 + For: AllDays, !- Field 20 + Until: 24:00,1.0; !- Field 21 + + Schedule:Compact, + OAFractionSched, !- Name + Fraction, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 7:00,0.0, !- Field 3 + Until: 17:00,1.0, !- Field 5 + Until: 24:00,0.0; !- Field 7 + + Schedule:Compact, + FanAndCoilAvailSched, !- Name + Fraction, !- Schedule Type Limits Name + Through: 3/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,1.0, !- Field 3 + Through: 9/30, !- Field 5 + For: WeekDays, !- Field 6 + Until: 7:00,0.0, !- Field 7 + Until: 17:00,1.0, !- Field 9 + Until: 24:00,0.0, !- Field 11 + For: SummerDesignDay WinterDesignDay, !- Field 13 + Until: 24:00,1.0, !- Field 14 + For: AllOtherDays, !- Field 16 + Until: 24:00,0.0, !- Field 17 + Through: 12/31, !- Field 19 + For: AllDays, !- Field 20 + Until: 24:00,1.0; !- Field 21 + + Schedule:Compact, + Heating Setpoints, !- Name + Temperature, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 7:00,15.0, !- Field 3 + Until: 17:00,20.0, !- Field 5 + Until: 24:00,15.0; !- Field 7 + + Schedule:Compact, + Cooling Setpoints, !- Name + Temperature, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 7:00,30.0, !- Field 3 + Until: 17:00,24.0, !- Field 5 + Until: 24:00,30.0; !- Field 7 + + Schedule:Compact, + Zone Control Type Sched, !- Name + Control Type, !- Schedule Type Limits Name + Through: 3/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,1, !- Field 3 + Through: 9/30, !- Field 5 + For: AllDays, !- Field 6 + Until: 24:00,2, !- Field 7 + Through: 12/31, !- Field 9 + For: AllDays, !- Field 10 + Until: 24:00,1; !- Field 11 + + Schedule:Compact, + ContinuousFanSchedule, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,1.0; !- Field 3 + + Schedule:Compact, + Outdoor CO2 Schedule, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,400.0; !- Field 3 + + Schedule:Compact, + CO2AvailSchedule, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,1.0; !- Field 3 + + Schedule:Compact, + CO2SetpointSchedule, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,900.0; !- Field 3 + + Schedule:Compact, + CO2MinSchedule, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,300.0; !- Field 3 + + Schedule:Compact, + CO2MaxSchedule, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,900.0; !- Field 3 + + Schedule:Compact, + INF-SCHED, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,1.0; !- Field 3 + + Schedule:Compact, + CO2 Source Schedule, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,1.0; !- Field 3 + + Schedule:Compact, + Minimum Outdoor Air Flow Rate Schedule, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,0.01; !- Field 3 + + People, + WestPeople, !- Name + West Zone, !- Zone or ZoneList Name + OFFICE OCCUPANCY, !- Number of People Schedule Name + people, !- Number of People Calculation Method + 3.000000, !- Number of People + , !- People per Zone Floor Area {person/m2} + , !- Zone Floor Area per Person {m2/person} + 0.3000000, !- Fraction Radiant + , !- Sensible Heat Fraction + Activity Sch, !- Activity Level Schedule Name + 3.82E-8, !- Carbon Dioxide Generation Rate {m3/s-W} + , !- Enable ASHRAE 55 Comfort Warnings + zoneaveraged, !- Mean Radiant Temperature Calculation Type + , !- Surface Name/Angle Factor List Name + Work Eff Sch, !- Work Efficiency Schedule Name + ClothingInsulationSchedule, !- Clothing Insulation Calculation Method + , !- Clothing Insulation Calculation Method Schedule Name + Clothing Sch, !- Clothing Insulation Schedule Name + Air Velo Sch, !- Air Velocity Schedule Name + FANGER; !- Thermal Comfort Model 1 Type + + People, + EastPeople, !- Name + EAST ZONE, !- Zone or ZoneList Name + OFFICE OCCUPANCY, !- Number of People Schedule Name + people, !- Number of People Calculation Method + 3.000000, !- Number of People + , !- People per Zone Floor Area {person/m2} + , !- Zone Floor Area per Person {m2/person} + 0.3000000, !- Fraction Radiant + , !- Sensible Heat Fraction + Activity Sch, !- Activity Level Schedule Name + 3.82E-8, !- Carbon Dioxide Generation Rate {m3/s-W} + , !- Enable ASHRAE 55 Comfort Warnings + zoneaveraged, !- Mean Radiant Temperature Calculation Type + , !- Surface Name/Angle Factor List Name + Work Eff Sch, !- Work Efficiency Schedule Name + ClothingInsulationSchedule, !- Clothing Insulation Calculation Method + , !- Clothing Insulation Calculation Method Schedule Name + Clothing Sch, !- Clothing Insulation Schedule Name + Air Velo Sch, !- Air Velocity Schedule Name + FANGER; !- Thermal Comfort Model 1 Type + + People, + NorthPeople, !- Name + NORTH ZONE, !- Zone or ZoneList Name + OFFICE OCCUPANCY, !- Number of People Schedule Name + people, !- Number of People Calculation Method + 4.000000, !- Number of People + , !- People per Zone Floor Area {person/m2} + , !- Zone Floor Area per Person {m2/person} + 0.3000000, !- Fraction Radiant + , !- Sensible Heat Fraction + Activity Sch, !- Activity Level Schedule Name + 3.82E-8, !- Carbon Dioxide Generation Rate {m3/s-W} + , !- Enable ASHRAE 55 Comfort Warnings + zoneaveraged, !- Mean Radiant Temperature Calculation Type + , !- Surface Name/Angle Factor List Name + Work Eff Sch, !- Work Efficiency Schedule Name + ClothingInsulationSchedule, !- Clothing Insulation Calculation Method + , !- Clothing Insulation Calculation Method Schedule Name + Clothing Sch, !- Clothing Insulation Schedule Name + Air Velo Sch, !- Air Velocity Schedule Name + FANGER; !- Thermal Comfort Model 1 Type + + Lights, + EAST ZONE Lights 1, !- Name + EAST ZONE, !- Zone or ZoneList Name + OFFICE LIGHTING, !- Schedule Name + LightingLevel, !- Design Level Calculation Method + 1464.375, !- Lighting Level {W} + , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Person {W/person} + 0, !- Return Air Fraction + 0.2000000, !- Fraction Radiant + 0.2000000, !- Fraction Visible + 0, !- Fraction Replaceable + GeneralLights; !- End-Use Subcategory + + Lights, + NORTH ZONE Lights 1, !- Name + NORTH ZONE, !- Zone or ZoneList Name + OFFICE LIGHTING, !- Schedule Name + LightingLevel, !- Design Level Calculation Method + 878.6252, !- Lighting Level {W} + , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Person {W/person} + 0, !- Return Air Fraction + 0.2000000, !- Fraction Radiant + 0.2000000, !- Fraction Visible + 0, !- Fraction Replaceable + GeneralLights; !- End-Use Subcategory + + ElectricEquipment, + West Zone ElecEq 1, !- Name + West Zone, !- Zone or ZoneList Name + INTERMITTENT, !- Schedule Name + EquipmentLevel, !- Design Level Calculation Method + 2928.751, !- Design Level {W} + , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Person {W/person} + 0, !- Fraction Latent + 0.3000000, !- Fraction Radiant + 0; !- Fraction Lost + + ElectricEquipment, + EAST ZONE ElecEq 1, !- Name + EAST ZONE, !- Zone or ZoneList Name + INTERMITTENT, !- Schedule Name + EquipmentLevel, !- Design Level Calculation Method + 1464.375, !- Design Level {W} + , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Person {W/person} + 0, !- Fraction Latent + 0.3000000, !- Fraction Radiant + 0; !- Fraction Lost + + ElectricEquipment, + NORTH ZONE ElecEq 1, !- Name + NORTH ZONE, !- Zone or ZoneList Name + INTERMITTENT, !- Schedule Name + EquipmentLevel, !- Design Level Calculation Method + 2928.751, !- Design Level {W} + , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Person {W/person} + 0, !- Fraction Latent + 0.3000000, !- Fraction Radiant + 0; !- Fraction Lost + + ZoneInfiltration:DesignFlowRate, + WEST ZONE Infil 1, !- Name + West Zone, !- Zone or ZoneList Name + INF-SCHED, !- Schedule Name + AirChanges/Hour, !- Design Flow Rate Calculation Method + , !- Design Flow Rate {m3/s} + , !- Flow per Zone Floor Area {m3/s-m2} + , !- Flow per Exterior Surface Area {m3/s-m2} + 0.10, !- Air Changes per Hour {1/hr} + 1, !- Constant Term Coefficient + 0, !- Temperature Term Coefficient + 0, !- Velocity Term Coefficient + 0; !- Velocity Squared Term Coefficient + + ZoneInfiltration:DesignFlowRate, + EAST ZONE Infil 1, !- Name + East Zone, !- Zone or ZoneList Name + INF-SCHED, !- Schedule Name + AirChanges/Hour, !- Design Flow Rate Calculation Method + , !- Design Flow Rate {m3/s} + , !- Flow per Zone Floor Area {m3/s-m2} + , !- Flow per Exterior Surface Area {m3/s-m2} + 0.10, !- Air Changes per Hour {1/hr} + 1, !- Constant Term Coefficient + 0, !- Temperature Term Coefficient + 0, !- Velocity Term Coefficient + 0; !- Velocity Squared Term Coefficient + + ZoneInfiltration:DesignFlowRate, + NORTH ZONE Infil 1, !- Name + NORTH Zone, !- Zone or ZoneList Name + INF-SCHED, !- Schedule Name + AirChanges/Hour, !- Design Flow Rate Calculation Method + , !- Design Flow Rate {m3/s} + , !- Flow per Zone Floor Area {m3/s-m2} + , !- Flow per Exterior Surface Area {m3/s-m2} + 0.10, !- Air Changes per Hour {1/hr} + 1, !- Constant Term Coefficient + 0, !- Temperature Term Coefficient + 0, !- Velocity Term Coefficient + 0; !- Velocity Squared Term Coefficient + + ZoneContaminantSourceAndSink:CarbonDioxide, + NORTH ZONE CO2, !- Name + NORTH ZONE, !- Zone Name + 1.0E-7, !- Design Generation Rate {m3/s} + CO2 Source Schedule; !- Schedule Name + + Curve:Biquadratic, + HPACCoolCapFT, !- Name + 0.766956, !- Coefficient1 Constant + 0.0107756, !- Coefficient2 x + -0.0000414703, !- Coefficient3 x**2 + 0.00134961, !- Coefficient4 y + -0.000261144, !- Coefficient5 y**2 + 0.000457488, !- Coefficient6 x*y + 12.77778, !- Minimum Value of x + 23.88889, !- Maximum Value of x + 18.0, !- Minimum Value of y + 46.11111, !- Maximum Value of y + , !- Minimum Curve Output + , !- Maximum Curve Output + Temperature, !- Input Unit Type for X + Temperature, !- Input Unit Type for Y + Dimensionless; !- Output Unit Type + + Curve:Biquadratic, + HPACCOOLEIRFT, !- Name + 0.297145, !- Coefficient1 Constant + 0.0430933, !- Coefficient2 x + -0.000748766, !- Coefficient3 x**2 + 0.00597727, !- Coefficient4 y + 0.000482112, !- Coefficient5 y**2 + -0.000956448, !- Coefficient6 x*y + 12.77778, !- Minimum Value of x + 23.88889, !- Maximum Value of x + 18.0, !- Minimum Value of y + 46.11111, !- Maximum Value of y + , !- Minimum Curve Output + , !- Maximum Curve Output + Temperature, !- Input Unit Type for X + Temperature, !- Input Unit Type for Y + Dimensionless; !- Output Unit Type + + Curve:Cubic, + HPACHeatCapFT, !- Name + 0.758746, !- Coefficient1 Constant + 0.027626, !- Coefficient2 x + 0.000148716, !- Coefficient3 x**2 + 0.0000034992, !- Coefficient4 x**3 + -20.0, !- Minimum Value of x + 20.0, !- Maximum Value of x + , !- Minimum Curve Output + , !- Maximum Curve Output + Temperature, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Curve:Cubic, + HPACHeatCapFFF, !- Name + 0.84, !- Coefficient1 Constant + 0.16, !- Coefficient2 x + 0.0, !- Coefficient3 x**2 + 0.0, !- Coefficient4 x**3 + 0.5, !- Minimum Value of x + 1.5; !- Maximum Value of x + + Curve:Cubic, + HPACHeatEIRFT, !- Name + 1.19248, !- Coefficient1 Constant + -0.0300438, !- Coefficient2 x + 0.00103745, !- Coefficient3 x**2 + -0.000023328, !- Coefficient4 x**3 + -20.0, !- Minimum Value of x + 20.0, !- Maximum Value of x + , !- Minimum Curve Output + , !- Maximum Curve Output + Temperature, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Curve:Quadratic, + HPACCoolCapFFF, !- Name + 0.8, !- Coefficient1 Constant + 0.2, !- Coefficient2 x + 0.0, !- Coefficient3 x**2 + 0.5, !- Minimum Value of x + 1.5; !- Maximum Value of x + + Curve:Quadratic, + HPACCOOLEIRFFF, !- Name + 1.156, !- Coefficient1 Constant + -0.1816, !- Coefficient2 x + 0.0256, !- Coefficient3 x**2 + 0.5, !- Minimum Value of x + 1.5; !- Maximum Value of x + + Curve:Quadratic, + HPACCOOLPLFFPLR, !- Name + 0.85, !- Coefficient1 Constant + 0.15, !- Coefficient2 x + 0.0, !- Coefficient3 x**2 + 0.0, !- Minimum Value of x + 1.0; !- Maximum Value of x + + Curve:Quadratic, + HPACHeatEIRFFF, !- Name + 1.3824, !- Coefficient1 Constant + -0.4336, !- Coefficient2 x + 0.0512, !- Coefficient3 x**2 + 0.0, !- Minimum Value of x + 1.0; !- Maximum Value of x + + NodeList, + OutsideAirInletNodes, !- Name + Outside Air Inlet Node; !- Node 1 Name + + NodeList, + Zone1Inlets, !- Name + Zone 1 Inlet Node; !- Node 1 Name + + NodeList, + Zone2Inlets, !- Name + Zone 2 Inlet Node; !- Node 1 Name + + NodeList, + Zone3Inlets, !- Name + Zone 3 Inlet Node; !- Node 1 Name + + NodeList, + West Zone List, !- Name + Zone 1 Node; !- Node 1 Name + + NodeList, + East Zone List, !- Name + Zone 2 Node; !- Node 1 Name + + NodeList, + North Zone List, !- Name + Zone 3 Node; !- Node 1 Name + + BranchList, + Air Loop Branches, !- Name + Air Loop Main Branch; !- Branch 1 Name + + Branch, + Air Loop Main Branch, !- Name + , !- Pressure Drop Curve Name + AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type + OA Sys 1, !- Component 1 Name + Outdoor Air Mixer Inlet Node, !- Component 1 Inlet Node Name + Mixed Air Node, !- Component 1 Outlet Node Name + AirLoopHVAC:UnitaryHeatPump:AirToAir, !- Component 2 Object Type + DXAC Heat Pump 1, !- Component 2 Name + Mixed Air Node, !- Component 2 Inlet Node Name + Air Loop Outlet Node; !- Component 2 Outlet Node Name + + AirLoopHVAC, + Typical Terminal Reheat 1, !- Name + , !- Controller List Name + Heat Pump 1 Avail List, !- Availability Manager List Name + 1.7, !- Design Supply Air Flow Rate {m3/s} + Air Loop Branches, !- Branch List Name + , !- Connector List Name + Outdoor Air Mixer Inlet Node, !- Supply Side Inlet Node Name + Return Air Mixer Outlet, !- Demand Side Outlet Node Name + Zone Equipment Inlet Node, !- Demand Side Inlet Node Names + Air Loop Outlet Node; !- Supply Side Outlet Node Names + + AirLoopHVAC:ControllerList, + OA Sys 1 Controllers, !- Name + Controller:OutdoorAir, !- Controller 1 Object Type + OA Controller 1; !- Controller 1 Name + + AirLoopHVAC:OutdoorAirSystem:EquipmentList, + OA Sys 1 Equipment, !- Name + OutdoorAir:Mixer, !- Component 1 Object Type + OA Mixing Box 1; !- Component 1 Name + + AirLoopHVAC:OutdoorAirSystem, + OA Sys 1, !- Name + OA Sys 1 Controllers, !- Controller List Name + OA Sys 1 Equipment, !- Outdoor Air Equipment List Name + Outdoor Air 1 Avail List;!- Availability Manager List Name + + OutdoorAir:NodeList, + OutsideAirInletNodes; !- Node or NodeList Name 1 + + OutdoorAir:Mixer, + OA Mixing Box 1, !- Name + Mixed Air Node, !- Mixed Air Node Name + Outside Air Inlet Node, !- Outdoor Air Stream Node Name + Relief Air Outlet Node, !- Relief Air Stream Node Name + Outdoor Air Mixer Inlet Node; !- Return Air Stream Node Name + + AvailabilityManagerAssignmentList, + Heat Pump 1 Avail List, !- Name + AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type + Heat Pump 1 Avail; !- Availability Manager 1 Name + + AvailabilityManagerAssignmentList, + Outdoor Air 1 Avail List,!- Name + AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type + Outdoor Air 1 Avail; !- Availability Manager 1 Name + + AvailabilityManager:Scheduled, + Heat Pump 1 Avail, !- Name + FanAndCoilAvailSched; !- Schedule Name + + AvailabilityManager:Scheduled, + Outdoor Air 1 Avail, !- Name + OutdoorAirAvailSched; !- Schedule Name + + Controller:OutdoorAir, + OA Controller 1, !- Name + Relief Air Outlet Node, !- Relief Air Outlet Node Name + Outdoor Air Mixer Inlet Node, !- Return Air Node Name + Mixed Air Node, !- Mixed Air Node Name + Outside Air Inlet Node, !- Actuator Node Name + 0.0, !- Minimum Outdoor Air Flow Rate {m3/s} + 1.7, !- Maximum Outdoor Air Flow Rate {m3/s} + NoEconomizer, !- Economizer Control Type + ModulateFlow, !- Economizer Control Action Type + , !- Economizer Maximum Limit Dry-Bulb Temperature {C} + , !- Economizer Maximum Limit Enthalpy {J/kg} + , !- Economizer Maximum Limit Dewpoint Temperature {C} + , !- Electronic Enthalpy Limit Curve Name + , !- Economizer Minimum Limit Dry-Bulb Temperature {C} + NoLockout, !- Lockout Type + FixedMinimum, !- Minimum Limit Type + OAFractionSched, !- Minimum Outdoor Air Schedule Name + , !- Minimum Fraction of Outdoor Air Schedule Name + , !- Maximum Fraction of Outdoor Air Schedule Name + DCVObject; !- Mechanical Ventilation Controller Name + + Controller:MechanicalVentilation, + DCVObject, !- Name + VentSchedule, !- Availability Schedule Name + Yes, !- Demand Controlled Ventilation + ProportionalControlBasedOnDesignOARate, !- System Outdoor Air Method + , !- Zone Maximum Outdoor Air Fraction {dimensionless} + West Zone, !- Zone 1 Name + CM DSOA West Zone, !- Design Specification Outdoor Air Object Name 1 + CM DSZAD West Zone, !- Design Specification Zone Air Distribution Object Name 1 + DCV Zone List, !- Zone 2 Name + CM DSOA DCV Zone List, !- Design Specification Outdoor Air Object Name 2 + CM DSZAD DCV Zone List; !- Design Specification Zone Air Distribution Object Name 2 + + DesignSpecification:ZoneAirDistribution, + CM DSZAD West Zone, !- Name + , !- Zone Air Distribution Effectiveness in Cooling Mode {dimensionless} + , !- Zone Air Distribution Effectiveness in Heating Mode {dimensionless} + ZoneADEffSch; !- Zone Air Distribution Effectiveness Schedule Name + + DesignSpecification:ZoneAirDistribution, + CM DSZAD DCV Zone List, !- Name + 0.9, !- Zone Air Distribution Effectiveness in Cooling Mode {dimensionless} + 1.1, !- Zone Air Distribution Effectiveness in Heating Mode {dimensionless} + ; !- Zone Air Distribution Effectiveness Schedule Name + + DesignSpecification:OutdoorAir, + CM DSOA West Zone, !- Name + Sum, !- Outdoor Air Method + 0.002952, !- Outdoor Air Flow per Person {m3/s-person} + 0.000381, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2} + , !- Outdoor Air Flow per Zone + , !- Outdoor Air Flow Air Changes per Hour + , !- Outdoor Air Schedule Name + Minimum Outdoor Air Flow Rate Schedule; !- Proportional Control Minimum Outdoor Air Flow Rate Schedule Name + + DesignSpecification:OutdoorAir, + CM DSOA DCV Zone List, !- Name + Sum, !- Outdoor Air Method + 0.003149, !- Outdoor Air Flow per Person {m3/s-person} + 0.000407; !- Outdoor Air Flow per Zone Floor Area {m3/s-m2} + + ZoneHVAC:EquipmentConnections, + West Zone, !- Zone Name + Zone1Equipment, !- Zone Conditioning Equipment List Name + Zone1Inlets, !- Zone Air Inlet Node or NodeList Name + , !- Zone Air Exhaust Node or NodeList Name + Zone 1 Node, !- Zone Air Node Name + Zone 1 Outlet Node; !- Zone Return Air Node Name + + ZoneHVAC:EquipmentConnections, + EAST ZONE, !- Zone Name + Zone2Equipment, !- Zone Conditioning Equipment List Name + Zone2Inlets, !- Zone Air Inlet Node or NodeList Name + , !- Zone Air Exhaust Node or NodeList Name + Zone 2 Node, !- Zone Air Node Name + Zone 2 Outlet Node; !- Zone Return Air Node Name + + ZoneHVAC:EquipmentConnections, + NORTH ZONE, !- Zone Name + Zone3Equipment, !- Zone Conditioning Equipment List Name + Zone3Inlets, !- Zone Air Inlet Node or NodeList Name + , !- Zone Air Exhaust Node or NodeList Name + Zone 3 Node, !- Zone Air Node Name + Zone 3 Outlet Node; !- Zone Return Air Node Name + + ZoneHVAC:EquipmentList, + Zone1Equipment, !- Name + AirTerminal:SingleDuct:Uncontrolled, !- Zone Equipment 1 Object Type + Zone1DirectAir, !- Zone Equipment 1 Name + 1, !- Zone Equipment 1 Cooling Sequence + 1; !- Zone Equipment 1 Heating or No-Load Sequence + + ZoneHVAC:EquipmentList, + Zone2Equipment, !- Name + AirTerminal:SingleDuct:Uncontrolled, !- Zone Equipment 1 Object Type + Zone2DirectAir, !- Zone Equipment 1 Name + 1, !- Zone Equipment 1 Cooling Sequence + 1; !- Zone Equipment 1 Heating or No-Load Sequence + + ZoneHVAC:EquipmentList, + Zone3Equipment, !- Name + AirTerminal:SingleDuct:Uncontrolled, !- Zone Equipment 1 Object Type + Zone3DirectAir, !- Zone Equipment 1 Name + 1, !- Zone Equipment 1 Cooling Sequence + 1; !- Zone Equipment 1 Heating or No-Load Sequence + + AirLoopHVAC:UnitaryHeatPump:AirToAir, + DXAC Heat Pump 1, !- Name + FanAndCoilAvailSched, !- Availability Schedule Name + Mixed Air Node, !- Air Inlet Node Name + Air Loop Outlet Node, !- Air Outlet Node Name + 1.7, !- Cooling Supply Air Flow Rate {m3/s} + 1.7, !- Heating Supply Air Flow Rate {m3/s} + 1.7, !- No Load Supply Air Flow Rate {m3/s} + East Zone, !- Controlling Zone or Thermostat Location + Fan:OnOff, !- Supply Air Fan Object Type + Supply Fan 1, !- Supply Air Fan Name + Coil:Heating:DX:SingleSpeed, !- Heating Coil Object Type + Heat Pump DX Heating Coil 1, !- Heating Coil Name + Coil:Cooling:DX:SingleSpeed, !- Cooling Coil Object Type + Heat Pump ACDXCoil 1, !- Cooling Coil Name + Coil:Heating:Fuel, !- Supplemental Heating Coil Object Type + Heat Pump DX Supp Heating Coil 1, !- Supplemental Heating Coil Name + 50, !- Maximum Supply Air Temperature from Supplemental Heater {C} + 21, !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + BlowThrough, !- Fan Placement + ContinuousFanSchedule; !- Supply Air Fan Operating Mode Schedule Name + + AirTerminal:SingleDuct:Uncontrolled, + Zone1DirectAir, !- Name + FanAndCoilAvailSched, !- Availability Schedule Name + Zone 1 Inlet Node, !- Zone Supply Air Node Name + 0.612; !- Maximum Air Flow Rate {m3/s} + + AirTerminal:SingleDuct:Uncontrolled, + Zone2DirectAir, !- Name + FanAndCoilAvailSched, !- Availability Schedule Name + Zone 2 Inlet Node, !- Zone Supply Air Node Name + 0.476; !- Maximum Air Flow Rate {m3/s} + + AirTerminal:SingleDuct:Uncontrolled, + Zone3DirectAir, !- Name + FanAndCoilAvailSched, !- Availability Schedule Name + Zone 3 Inlet Node, !- Zone Supply Air Node Name + 0.612; !- Maximum Air Flow Rate {m3/s} + + ZoneControl:Thermostat, + Zone 2 Thermostat, !- Name + EAST ZONE, !- Zone or ZoneList Name + Zone Control Type Sched, !- Control Type Schedule Name + ThermostatSetpoint:SingleHeating, !- Control 1 Object Type + Heating Setpoint with SB,!- Control 1 Name + ThermostatSetpoint:SingleCooling, !- Control 2 Object Type + Cooling Setpoint with SB;!- Control 2 Name + + ThermostatSetpoint:SingleHeating, + Heating Setpoint with SB,!- Name + Heating Setpoints; !- Setpoint Temperature Schedule Name + + ThermostatSetpoint:SingleCooling, + Cooling Setpoint with SB,!- Name + Cooling Setpoints; !- Setpoint Temperature Schedule Name + + ZoneControl:ContaminantController, + CO2 Controller1, !- Name + EAST ZONE, !- Zone Name + CO2AvailSchedule, !- Carbon Dioxide Control Availability Schedule Name + CO2SetpointSchedule, !- Carbon Dioxide Setpoint Schedule Name + CO2MinSchedule, !- Minimum Carbon Dioxide Concentration Schedule Name + CO2MaxSchedule; !- Maximum Carbon Dioxide Concentration Schedule Name + + AirLoopHVAC:SupplyPath, + HeatPumpSupplyPath, !- Name + Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name + AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type + Zone Supply Air Splitter;!- Component 1 Name + + AirLoopHVAC:ReturnPath, + HeatPumpReturnPath, !- Name + Return Air Mixer Outlet, !- Return Air Path Outlet Node Name + AirLoopHVAC:ZoneMixer, !- Component 1 Object Type + Zone Return Air Mixer; !- Component 1 Name + + AirLoopHVAC:ZoneSplitter, + Zone Supply Air Splitter,!- Name + Zone Equipment Inlet Node, !- Inlet Node Name + Zone 1 Inlet Node, !- Outlet 1 Node Name + Zone 2 Inlet Node, !- Outlet 2 Node Name + Zone 3 Inlet Node; !- Outlet 3 Node Name + + AirLoopHVAC:ZoneMixer, + Zone Return Air Mixer, !- Name + Return Air Mixer Outlet, !- Outlet Node Name + Zone 1 Outlet Node, !- Inlet 1 Node Name + Zone 2 Outlet Node, !- Inlet 2 Node Name + Zone 3 Outlet Node; !- Inlet 3 Node Name + + Coil:Heating:Fuel, + Heat Pump DX Supp Heating Coil 1, !- Name + FanAndCoilAvailSched, !- Availability Schedule Name + NaturalGas, !- Fuel Type + 0.8, !- Burner Efficiency + 32000, !- Nominal Capacity {W} + SuppHeating Coil Air Inlet Node, !- Air Inlet Node Name + Air Loop Outlet Node; !- Air Outlet Node Name + + Coil:Cooling:DX:SingleSpeed, + Heat Pump ACDXCoil 1, !- Name + FanAndCoilAvailSched, !- Availability Schedule Name + 32000, !- Gross Rated Total Cooling Capacity {W} + 0.75, !- Gross Rated Sensible Heat Ratio + 3.0, !- Gross Rated Cooling COP {W/W} + 1.7, !- Rated Air Flow Rate {m3/s} + , !- Rated Evaporator Fan Power Per Volume Flow Rate {W/(m3/s)} + DX Cooling Coil Air Inlet Node, !- Air Inlet Node Name + Heating Coil Air Inlet Node, !- Air Outlet Node Name + HPACCoolCapFT, !- Total Cooling Capacity Function of Temperature Curve Name + HPACCoolCapFFF, !- Total Cooling Capacity Function of Flow Fraction Curve Name + HPACCOOLEIRFT, !- Energy Input Ratio Function of Temperature Curve Name + HPACCOOLEIRFFF, !- Energy Input Ratio Function of Flow Fraction Curve Name + HPACCOOLPLFFPLR; !- Part Load Fraction Correlation Curve Name + + Coil:Heating:DX:SingleSpeed, + Heat Pump DX Heating Coil 1, !- Name + FanAndCoilAvailSched, !- Availability Schedule Name + 35000, !- Gross Rated Heating Capacity {W} + 2.75, !- Gross Rated Heating COP {W/W} + 1.7, !- Rated Air Flow Rate {m3/s} + , !- Rated Supply Fan Power Per Volume Flow Rate {W/(m3/s)} + Heating Coil Air Inlet Node, !- Air Inlet Node Name + SuppHeating Coil Air Inlet Node, !- Air Outlet Node Name + HPACHeatCapFT, !- Heating Capacity Function of Temperature Curve Name + HPACHeatCapFFF, !- Heating Capacity Function of Flow Fraction Curve Name + HPACHeatEIRFT, !- Energy Input Ratio Function of Temperature Curve Name + HPACHeatEIRFFF, !- Energy Input Ratio Function of Flow Fraction Curve Name + HPACCOOLPLFFPLR, !- Part Load Fraction Correlation Curve Name + , !- Defrost Energy Input Ratio Function of Temperature Curve Name + -5.0, !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C} + , !- Outdoor Dry-Bulb Temperature to Turn On Compressor {C} + 5.0, !- Maximum Outdoor Dry-Bulb Temperature for Defrost Operation {C} + 200.0, !- Crankcase Heater Capacity {W} + 10.0, !- Maximum Outdoor Dry-Bulb Temperature for Crankcase Heater Operation {C} + Resistive, !- Defrost Strategy + TIMED, !- Defrost Control + 0.166667, !- Defrost Time Period Fraction + 20000; !- Resistive Defrost Heater Capacity {W} + + Fan:OnOff, + Supply Fan 1, !- Name + FanAndCoilAvailSched, !- Availability Schedule Name + 0.7, !- Fan Total Efficiency + 300.0, !- Pressure Rise {Pa} + 1.7, !- Maximum Flow Rate {m3/s} + 0.9, !- Motor Efficiency + 1.0, !- Motor In Airstream Fraction + Mixed Air Node, !- Air Inlet Node Name + DX Cooling Coil Air Inlet Node; !- Air Outlet Node Name + + Output:Variable,*,Unitary System Fan Part Load Ratio,timestep; + + Output:Variable,*,Unitary System Compressor Part Load Ratio,timestep; + + Output:Variable,*,Zone Air System Sensible Heating Energy,timestep; + + Output:Variable,*,Zone Air System Sensible Cooling Energy,timestep; + + Output:Variable,*,Zone Air Temperature,timestep; + + Output:Variable,*,Zone Air Relative Humidity,timestep; + + Output:Variable,*,Zone Air Humidity Ratio,timestep; + + Output:Variable,*,Fan Electric Power,timestep; + + Output:Variable,*,Cooling Coil Total Cooling Energy,timestep; + + Output:Variable,*,Cooling Coil Sensible Cooling Rate,timestep; + + Output:Variable,*,Cooling Coil Sensible Cooling Energy,timestep; + + Output:Variable,*,Cooling Coil Electric Power,timestep; + + Output:Variable,*,Heating Coil Total Heating Rate,timestep; + + Output:Variable,*,Heating Coil Total Heating Energy,timestep; + + Output:Variable,*,Heating Coil Electric Power,timestep; + + Output:Variable,*,Heating Coil Defrost Electric Power,timestep; + + Output:Variable,*,Heating Coil Air Heating Energy,timestep; + + Output:Variable,*,Heating Coil Air Heating Rate,timestep; + + Output:Variable,*,Heating Coil Gas Rate,timestep; + + Output:Variable,*,Heating Coil Defrost Electric Energy,timestep; + + Output:Variable,Outside Air Inlet Node,System Node Mass Flow Rate,timestep; + + Output:Variable,*,Zone People Occupant Count,timestep; + + Output:Variable,*,System Node CO2 Concentration,timestep; + + Output:Variable,*,Zone Air CO2 Concentration,timestep; + + Output:Variable,*,Zone Air CO2 Predicted Load to Setpoint Mass Flow Rate,timestep; + + Output:Variable,*,Air System Outdoor Air Mass Flow Rate,timestep; + + Output:Meter:MeterFileOnly,Electricity:Facility,monthly; + + Output:Meter:MeterFileOnly,Electricity:Building,monthly; + + Output:Meter:MeterFileOnly,InteriorLights:Electricity,monthly; + + Output:Meter:MeterFileOnly,Electricity:HVAC,monthly; + + Output:Meter:MeterFileOnly,Gas:Facility,monthly; + + Output:Meter:MeterFileOnly,Gas:HVAC,monthly; + + Output:Meter:MeterFileOnly,Electricity:Facility,runperiod; + + Output:Meter:MeterFileOnly,Electricity:Building,runperiod; + + Output:Meter:MeterFileOnly,InteriorLights:Electricity,runperiod; + + Output:Meter:MeterFileOnly,Electricity:HVAC,runperiod; + + Output:Meter:MeterFileOnly,Gas:Facility,runperiod; + + Output:Meter:MeterFileOnly,Gas:HVAC,runperiod; + + Output:VariableDictionary,Regular; + + Output:Surfaces:Drawing,dxf; + + Output:Constructions,Constructions; + + OutputControl:Table:Style, + HTML; !- Column Separator + + Output:Table:SummaryReports, + AllSummary; !- Report 1 Name + diff --git a/tst/EnergyPlus/unit/MixedAir.unit.cc b/tst/EnergyPlus/unit/MixedAir.unit.cc index b715496310f..f3362e154c1 100644 --- a/tst/EnergyPlus/unit/MixedAir.unit.cc +++ b/tst/EnergyPlus/unit/MixedAir.unit.cc @@ -5237,4 +5237,179 @@ namespace EnergyPlus { DataHeatBalance::ZoneIntGain.deallocate(); } + TEST_F( EnergyPlusFixture, CO2ControlDesignOARateTest ) + { + // Test a new feature: Proportional Demand Control Ventilation (DCV) Enhancements + Contaminant.CO2Simulation = true; + Contaminant.CO2OutdoorSchedPtr = 1; + + std::string const idf_objects = delimited_string( { + "Version,8.3;", + " OutdoorAir:Node,", + " Outside Air Inlet Node; !- Name", + " Schedule:Constant,", + " VentSchedule, !- Name", + " , !- Schedule Type Limits Name", + " 1; !- Hourly value", + " Schedule:Constant,", + " ZoneADEffSch, !- Name", + " , !- Schedule Type Limits Name", + " 1; !- Hourly value", + " Schedule:Constant,", + " OAFractionSched, !- Name", + " , !- Schedule Type Limits Name", + " 1; !- Hourly value", + " Schedule:Constant,", + " CO2AvailSchedule, !- Name", + " , !- Schedule Type Limits Name", + " 1.0; !- Hourly value", + " Schedule:Constant,", + " CO2SetpointSchedule, !- Name", + " , !- Schedule Type Limits Name", + " 900.0; !- Hourly value", + " Schedule:Constant,", + " CO2MinSchedule, !- Name", + " , !- Schedule Type Limits Name", + " 300.0; !- Hourly value", + " Schedule:Constant,", + " CO2MaxSchedule, !- Name", + " , !- Schedule Type Limits Name", + " 900.0; !- Hourly value", + " Schedule:Constant,", + " Minimum Outdoor Air Flow Rate Schedule, !- Name", + " , !- Schedule Type Limits Name", + " 0.001; !- Hourly value", + " Controller:OutdoorAir,", + " OA Controller 1, !- Name", + " Relief Air Outlet Node, !- Relief Air Outlet Node Name", + " Outdoor Air Mixer Inlet Node, !- Return Air Node Name", + " Mixed Air Node, !- Mixed Air Node Name", + " Outside Air Inlet Node, !- Actuator Node Name", + " 0.0, !- Minimum Outdoor Air Flow Rate{ m3 / s }", + " 1.7, !- Maximum Outdoor Air Flow Rate{ m3 / s }", + " NoEconomizer, !- Economizer Control Type", + " ModulateFlow, !- Economizer Control Action Type", + " , !- Economizer Maximum Limit Dry - Bulb Temperature{ C }", + " , !- Economizer Maximum Limit Enthalpy{ J / kg }", + " , !- Economizer Maximum Limit Dewpoint Temperature{ C }", + " , !- Electronic Enthalpy Limit Curve Name", + " , !- Economizer Minimum Limit Dry - Bulb Temperature{ C }", + " NoLockout, !- Lockout Type", + " FixedMinimum, !- Minimum Limit Type", + " OAFractionSched, !- Minimum Outdoor Air Schedule Name", + " , !- Minimum Fraction of Outdoor Air Schedule Name", + " , !- Maximum Fraction of Outdoor Air Schedule Name", + " DCVObject; !- Mechanical Ventilation Controller Name", + " Controller:MechanicalVentilation,", + " DCVObject, !- Name", + " VentSchedule, !- Availability Schedule Name", + " Yes, !- Demand Controlled Ventilation", + " ProportionalControlBasedOnDesignOARate, !- System Outdoor Air Method", + " , !- Zone Maximum Outdoor Air Fraction{ dimensionless }", + " West Zone, !- Zone 1 Name", + " CM DSOA West Zone, !- Design Specification Outdoor Air Object Name 1", + " CM DSZAD West Zone; !- Design Specification Zone Air Distribution Object Name 1", + } ); + + + ASSERT_FALSE( process_idf( idf_objects ) ); + + ContaminantControlledZone.allocate( 1 ); + ContaminantControlledZone( 1 ).AvaiSchedPtr = 4; + ContaminantControlledZone( 1 ).SPSchedIndex = 5; + ContaminantControlledZone( 1 ).ZoneMinCO2SchedIndex = 6; + ContaminantControlledZone( 1 ).ZoneMaxCO2SchedIndex = 7; + + AirLoopControlInfo.allocate( 1 ); + AirLoopControlInfo( 1 ).LoopFlowRateSet = true; + OARequirements.allocate( 1 ); + OARequirements( 1 ).Name = "CM DSOA WEST ZONE"; + OARequirements( 1 ).OAFlowMethod = OAFlowSum; + OARequirements( 1 ).OAFlowPerPerson = 0.003149; + OARequirements( 1 ).OAFlowPerArea = 0.000407; + OARequirements( 1 ).OAPropCtlMinRateSchPtr = 8; + + ZoneAirDistribution.allocate( 1 ); + ZoneAirDistribution( 1 ).Name = "CM DSZAD WEST ZONE"; + ZoneAirDistribution( 1 ).ZoneADEffSchPtr = 4; + + Zone.allocate( 1 ); + Zone( 1 ).Name = "WEST ZONE"; + Zone( 1 ).FloorArea = 10.0; + Zone( 1 ).ZoneContamControllerSchedIndex = 4; + + AirLoopFlow.allocate( 1 ); + AirLoopFlow( 1 ).OAFrac = 0.01; // DataAirLoop variable (AirloopHVAC) + AirLoopFlow( 1 ).OAMinFrac = 0.01; // DataAirLoop variable (AirloopHVAC) + + GetOAControllerInputs( ); + + EXPECT_EQ( 8, VentilationMechanical( 1 ).SystemOAMethod ); + EXPECT_TRUE( OutAirNodeManager::CheckOutAirNodeNumber( OAController( 1 ).OANode ) ); + EXPECT_NEAR( 0.00314899, VentilationMechanical( 1 ).ZoneOAPeopleRate( 1 ), 0.00001 ); + EXPECT_NEAR( 0.000407, VentilationMechanical( 1 ).ZoneOAAreaRate( 1 ), 0.00001 ); + + StdRhoAir = 1.2; + OAController( 1 ).MixMassFlow = 1.7 * StdRhoAir; + OAController( 1 ).MaxOAMassFlowRate = 1.7 * StdRhoAir; + AirLoopFlow( 1 ).DesSupply = 1.7; + VentilationMechanical( 1 ).SchPtr = 1; + Schedule( 1 ).CurrentValue = 1.0; + + VentilationMechanical( 1 ).ZoneADEffSchPtr( 1 ) = 2; + Schedule( 2 ).CurrentValue = 1.0; + TotPeople = 1; + People.allocate( 1 ); + People( 1 ).Name = "WestPeople"; + People( 1 ).ZonePtr = 1; + People( 1 ).NumberOfPeople = 3; + Zone( 1 ).TotOccupants = 3; + Schedule( 3 ).CurrentValue = 0.1; + Schedule( 4 ).CurrentValue = 1.0; + ZoneCO2GainFromPeople.allocate( 1 ); + ZoneCO2GainFromPeople( 1 ) = 3.82E-8; + OutdoorCO2 = 400; + ZoneAirCO2.allocate( 1 ); + ZoneAirCO2( 1 ) = 600.0; + ZoneEquipConfig.allocate( 1 ); + ZoneEquipConfig( 1 ).NumInletNodes = 1; + ZoneEquipConfig( 1 ).AirDistUnitCool.allocate( 1 ); + ZoneEquipConfig( 1 ).AirDistUnitCool( 1 ).InNode = 10; + ZoneEquipConfig( 1 ).InletNode.allocate( 1 ); + ZoneEquipConfig( 1 ).InletNode( 1 ) = 10; + Node.allocate( 10 ); + Node( 10 ).Temp = 13.00; + Node( 10 ).HumRat = 0.008; + Node( 10 ).MassFlowRate = 1.7 * StdRhoAir; + OutBaroPress = 101325; + ZoneSysEnergyDemand.allocate( 1 ); + ZoneIntGain.allocate( 1 ); + ZoneIntGain( 1 ).NOFOCC = 0.1; + Schedule( 5 ).CurrentValue = 900.0; + Schedule( 6 ).CurrentValue = 300.0; + Schedule( 7 ).CurrentValue = 900.0; + Zone( 1 ).ZoneMinCO2SchedIndex = 6; + Zone( 1 ).ZoneMaxCO2SchedIndex = 7; + Schedule( 8 ).CurrentValue = 0.01; + + OAController( 1 ).CalcOAController( 1, true ); + + EXPECT_NEAR( 0.003183055786, OAController( 1 ).OAMassFlow, 0.00001 ); + EXPECT_NEAR( 0.001560321463, OAController( 1 ).MinOAFracLimit, 0.00001 ); + + AirLoopControlInfo.deallocate( ); + OARequirements.deallocate( ); + ZoneAirDistribution.deallocate( ); + Zone.deallocate( ); + AirLoopFlow.deallocate( ); + People.deallocate( ); + ZoneAirCO2.deallocate( ); + ZoneEquipConfig.deallocate( ); + Node.deallocate( ); + ZoneSysEnergyDemand.deallocate( ); + ZoneCO2GainFromPeople.deallocate( ); + ContaminantControlledZone.deallocate( ); + ZoneIntGain.deallocate( ); + } + } From 4e850d34e800635806e05c8e4396565eab7e652c Mon Sep 17 00:00:00 2001 From: Edwin Lee Date: Mon, 31 Jul 2017 07:40:20 -0500 Subject: [PATCH 5/7] Added transition rule --- src/Transition/CreateNewIDFUsingRulesV8_8_0.f90 | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Transition/CreateNewIDFUsingRulesV8_8_0.f90 b/src/Transition/CreateNewIDFUsingRulesV8_8_0.f90 index b46fe2be156..86731c9ba10 100644 --- a/src/Transition/CreateNewIDFUsingRulesV8_8_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV8_8_0.f90 @@ -429,6 +429,18 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile OutArgs(6:CurArgs+1)=InArgs(5:CurArgs) CurArgs = CurArgs + 1 + CASE('ZONECONTROL:CONTAMINANTCONTROLLER') + CALL GetNewObjectDefInIDD(ObjectName,NwNumArgs,NwAorN,NwReqFld,NwObjMinFlds,NwFldNames,NwFldDefaults,NwFldUnits) + IF(CurArgs .GT. 4) THEN + nodiff=.false. + OutArgs(1:5)=InArgs(1:5) + OutArgs(6) = '' + OutArgs(7:CurArgs+1)=InArgs(6:CurArgs) + CurArgs = CurArgs + 1 + ELSE + nodiff=.true. + OutArgs=InArgs + END IF !!! Changes for report variables, meters, tables -- update names CASE('OUTPUT:VARIABLE') From 79d27cccbb06a51689bf51325595c1227d92fca9 Mon Sep 17 00:00:00 2001 From: Edwin Lee Date: Mon, 31 Jul 2017 07:53:16 -0500 Subject: [PATCH 6/7] Minor wording change to docs --- .../demand-controlled-ventilation.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-002/demand-controlled-ventilation.tex b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-002/demand-controlled-ventilation.tex index 7afe9a533e4..8dfe3b98bcf 100644 --- a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-002/demand-controlled-ventilation.tex +++ b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-002/demand-controlled-ventilation.tex @@ -313,7 +313,7 @@ \subsection{Proportional Control}\label{proportional-control} {C_{s - design,i}} = {C_o} + \frac{N}{{\left( {{V_{ot - design,i}}/{P_{z,i}}} \right)}} \end{equation} -When the field of Maximum Carbon Dioxide Concentration Schedule Name is entered, the schedule value is set to {C_{s - design,i}}. +When the field of Maximum Carbon Dioxide Concentration Schedule Name is entered, the schedule value is used for {C_{s - design,i}} instead of the calculated value. 4)~~~The target indoor CO\(_{2}\) concentration at \({V_{ot - min}}\) ~is either a user input in the object ZoneControl:ContaminantController or equal to the outdoor CO\(_{2}\) concentration. The default is outdoor CO\(_{2}\) concentration. From 2e6250935759a6580c1b09366be77c8335fda3ea Mon Sep 17 00:00:00 2001 From: Edwin Lee Date: Mon, 31 Jul 2017 07:53:55 -0500 Subject: [PATCH 7/7] Fix subscripting --- .../demand-controlled-ventilation.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-002/demand-controlled-ventilation.tex b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-002/demand-controlled-ventilation.tex index 8dfe3b98bcf..347443b0656 100644 --- a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-002/demand-controlled-ventilation.tex +++ b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-002/demand-controlled-ventilation.tex @@ -292,7 +292,7 @@ \subsection{Proportional Control}\label{proportional-control} if ProportionalControlBasedOnDesignOARate is specified, the required intake flow rate will be revised as: - \begin{equation} {V{ot - design,i}} = \frac{Design Outdoor Air Flow Rate_i} {E_i} \end{equation} + \begin{equation} {V_{ot - design,i}} = \frac{Design Outdoor Air Flow Rate_i} {E_i} \end{equation} The Design Outdoor Air Flow Rate is determined in the DesignSpecification:OutdoorAir object. @@ -304,7 +304,7 @@ \subsection{Proportional Control}\label{proportional-control} if ProportionalControlBasedOnDesignOARate is specified, the required intake flow rate will be revised as: - \begin{equation} {V{ot - min,i}} = \frac{ {Design Outdoor Air Flow Rate_i} \times {SchedPropMin_i} } {E_i} \end{equation} + \begin{equation} {V_{ot - min,i}} = \frac{ {Design Outdoor Air Flow Rate_i} \times {SchedPropMin_i} } {E_i} \end{equation} 3)~~~The target indoor CO\(_{2}\) concentration at \({V_{ot - design,i}}\)