diff --git a/doc/ems-application-guide/src/ems-actuators/thermal-envelope.tex b/doc/ems-application-guide/src/ems-actuators/thermal-envelope.tex index a0d673d5b22..a95a428ba3c 100644 --- a/doc/ems-application-guide/src/ems-actuators/thermal-envelope.tex +++ b/doc/ems-application-guide/src/ems-actuators/thermal-envelope.tex @@ -51,7 +51,25 @@ \subsection{Surface Construction State}\label{surface-construction-state} When using surface construction state to change window properties in combination with daylighting calculations, then the Calculation Method in the ShadowCalculation object must be set to TimestepFrequency. This will cause the daylighting factor calculations to be updated every timestep. -Using the surface construction state actuator brings with it a high degree of risk when it comes to modeling thermal heat capacity and transient heat transfer in opaque surfaces.~ If this actuator is used inappropriately, for example to assign different constructions, to a single surface, that have radically different heat storage capacities, then the heat transfer modeling results may not be physically accurate.~ When a construction state is overridden using this actuator, the thermal history data that evolved while using the previous construction are reused for the new construction. When this actuator is used, the program attempts to detect if incompatible constructions are being assigned. In some cases it issues a warning and allows the assignments to proceed, in others it warns and doesn't allow the assignment to proceed.~ If the original construction assigned to a surface has internal source/sink (defined using Construction:InternalSource) then any assignments to the surface must also be internal source constructions.~ If using the heat transfer algorithm called ConductionFiniteDifference, then the constructions must have the same number of finite difference nodes or the assignment is not allowed.~ The construction state actuator cannot be used in conjunction with the heat transfer algorithms called ConductionFiniteDifferenceSimplified or CombinedHeatAndMoistureFiniteElement. +Using the surface construction state actuator brings with it a high degree of +risk when it comes to modeling thermal heat capacity and transient heat +transfer in opaque surfaces. If this actuator is used inappropriately, for +example to assign different constructions, to a single surface, that have +radically different heat storage capacities, then the heat transfer modeling +results may not be physically accurate. When a construction state is overridden +using this actuator, the thermal history data that evolved while using the +previous construction are reused for the new construction. When this actuator +is used, the program attempts to detect if incompatible constructions are being +assigned. In some cases it issues a warning and allows the assignments to +proceed, in others it warns and doesn't allow the assignment to proceed. If the +original construction assigned to a surface has internal source/sink (defined +using ConstructionProperty:InternalHeatSource) then any assignments to the +surface must also be internal source constructions. If using the heat transfer +algorithm called ConductionFiniteDifference, then the constructions must have +the same number of finite difference nodes or the assignment is not allowed. +The construction state actuator cannot be used in conjunction with the heat +transfer algorithms called ConductionFiniteDifferenceSimplified or +CombinedHeatAndMoistureFiniteElement. \subsection{Surface Boundary Conditions}\label{surface-boundary-conditions} diff --git a/doc/engineering-reference/src/loop-equipment-sizing-and-other-design-data/component-sizing.tex b/doc/engineering-reference/src/loop-equipment-sizing-and-other-design-data/component-sizing.tex index 00f0f22a3ba..85c2741721b 100644 --- a/doc/engineering-reference/src/loop-equipment-sizing-and-other-design-data/component-sizing.tex +++ b/doc/engineering-reference/src/loop-equipment-sizing-and-other-design-data/component-sizing.tex @@ -2734,7 +2734,11 @@ \subsubsection{ZoneHVAC:LowTemperatureRadiant:VariableFlow}\label{zonehvaclowtem TubeLength = \frac{{TotalSurfaceArea}}{{TubeSpacing}} \end{equation} -Note that tube spacing is determined by the Tube Spacing field of the Construction:InternalSource input used to define the radiant surface(s) of this system. If the user has entered a spacing that is less than 0.01m or more than 1.0m, the sizing calculation will assume that the spacing is equal to 0.15m. +Note that tube spacing is determined by the Tube Spacing field of the +ConstructionProperty:InternalHeatSource input used to define the radiant +surface(s) of this system. If the user has entered a spacing that is less +than 0.01m or more than 1.0m, the sizing calculation will assume that the +spacing is equal to 0.15m. \subsubsection{ZoneHVAC:LowTemperatureRadiant:ConstantFlow}\label{zonehvaclowtemperatureradiantconstantflow} diff --git a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-004/radiant-system-models.tex b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-004/radiant-system-models.tex index 5ded9c9af83..b055608ec61 100644 --- a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-004/radiant-system-models.tex +++ b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-004/radiant-system-models.tex @@ -420,19 +420,51 @@ \subsubsection{Two-Dimensional Solutions for Radiant Systems}\label{two-dimensio One distinct advantage of the State Space method presented in the previous section over the Laplace Transform method is that it can be adapted to more than one dimension. In fact, as long as one can apply a network of nodes to a problem, the State Space method can be adapted to it. For EnergyPlus, the biggest implication is that conduction through a construction can be expanded from one-dimensional in nature to two-dimensional. This is particularly important in a hydronic radiant system where the presence of water tubes is clearly more than one-dimensional. -The modeling of two-dimensional conduction in Construction:InternalSource based surfaces in EnergyPlus is thus possible by expanding the network of nodes shown in the above examples in the direction perpendicular to the main direction of heat transfer. Essentially, when a user requests the two-dimensional solution for a Construction:InternalSource surface, the network of nodes is expanded perpendicular to the direction of heat transfer. While this is not an overly complex process, here are some rules and limitations to the application of two-dimensional solutions in EnergyPlus: +The modeling of two-dimensional conduction used when +ConstructionPoperty:InternalHeatSource objects are attached to surfaces is thus +possible by expanding the network of nodes shown in the above examples in the +direction perpendicular to the main direction of heat transfer. Essentially, +when a user requests the two-dimensional solution for a +ConstructioniProperty:InternalHeatSource surface, the network of nodes is +expanded perpendicular to the direction of heat transfer. While this is not +an overly complex process, here are some rules and limitations to the +application of two-dimensional solutions in EnergyPlus: \begin{itemize} \item Even though the solution internal to the surface is two-dimensional, in order to work within the confines of the standard EnergyPlus heat balance, the boundary condition at both the inside and outside face of the surface is that the temperature across the surface is the same at all points or that the surfaces are still isothermal. The point of this is so that once the conduction transfer functions are calculated that the the surface heat balance formulations remain the same as any other surface that is using a one-dimensional assumption in EnergyPlus. \item -The domain being modeled for a two-dimensional approach goes from one face of the surface to the other face as a one-dimensional model. In the second dimension, perpendicular to the main direction of heat transfer, the domain goes from the line that goes through the tubing to the line of symmetry at the mid-point between adjacent tubing. The perpendicular distance for this domain is given by the tubing spacing user input in the Construction:InternalSource object. This tubing spacing is halved to determine the perpendicular distance for the solution domain. +The domain being modeled for a two-dimensional approach goes from one face of +the surface to the other face as a one-dimensional model. In the second +dimension, perpendicular to the main direction of heat transfer, the domain +goes from the line that goes through the tubing to the line of symmetry at the +mid-point between adjacent tubing. The perpendicular distance for this domain +is given by the tubing spacing user input in the +ConstructionProperty:InternalHeatSource object. This tubing spacing is halved +to determine the perpendicular distance for the solution domain. \item While the number of nodes used for each layer of a construction is determined by the thermo-physical properties of the material for the layer to maintain solution stability, the number of nodes in the perpendicular direction is fixed for all layers of the construction. Currently in EnergyPlus, the number of nodes in the perpendicular direction is fixed at 7. This number was chosen as a result of testing with an evaluation version of one of the precedessor programs of EnergyPlus. This number of nodes was a balance between accuracy requirements and solution speed. Because the speed of the process required to calculate conduction transfer functions increases greatly as the number of nodes used in the model increases, increasing the number of nodes in the perpendicular direction too much will result in an unacceptible increase in the time required to calculate the conduction transfer functions. \item -The heat source or sink is applied evenly over the entire node where the user defines the location of the source through the Construction:InternalSource input. For calculating the conduction transfer functions, the model ignores the presence of the tubing and fluid and simply assumes that the entire layer consists of the appropriate material as defined by the Construction:InternalSource input. The radiant model does take into account heat transfer between the material and the fluid being circulated through the system. +The heat source or sink is applied evenly over the entire node where the user +defines the location of the source through the +ConstructionProperty:InternalHeatSource input. For calculating the conduction +transfer functions, the model ignores the presence of the tubing and fluid and +simply assumes that the entire layer consists of the appropriate material as +defined by the Construction:InternalSource input. The radiant model does take +into account heat transfer between the material and the fluid being circulated +through the system. \item -The location of the heat source and the calculation of an additional point that can be used for controlling the slab (see next section) are defined by input provided in the Construction:InternalSource input. The location of the tubing where heat is added or subtracted from the slab is always defined at one side of the solution domain. The location of the additional user temperature request is controlled by both the fields for the location of the user temperature request (between two layers) and the perpendicular direction for this temperature. This temperature can then be used for controlling a radiant system. (See section on \textbf{\hyperref[low-temperature-radiant-system-controls]{Low Temperature Radiant System Controls}} for more information about controlling a radiant system. +The location of the heat source and the calculation of an additional point that +can be used for controlling the slab (see next section) are defined by input +provided in the ConstructionPropery:InternalHeatSource input. The location of +the tubing where heat is added or subtracted from the slab is always defined at +one side of the solution domain. The location of the additional user +temperature request is controlled by both the fields for the location of the +user temperature request (between two layers) and the perpendicular direction +for this temperature. This temperature can then be used for controlling a +radiant system. (See section on +\textbf{\hyperref[low-temperature-radiant-system-controls]{Low Temperature Radiant System Controls}} +for more information about controlling a radiant system. \end{itemize} These assumptions are applied to a low temperature radiant system within EnergyPlus and their impact can be seen in the next three diagrams. First, one can see the symmetry inherent in a low temperature radiant system in Figure~\ref{fig:cross-section-of-a-low-temperature-radiant-system-with-planes-of-symmetry} below. @@ -552,7 +584,24 @@ \subsubsection{Low Temperature Radiant System Controls}\label{low-temperature-ra The controlling temperature can be the mean air temperature, the mean radiant temperature, the operative temperature of the zone, the outdoor dry-bulb temperature, the outdoor wet-bulb temperature, the surface inside face temperature, or the surface interior temperature. The choice of controlling temperature is left to the user's discretion and set by input as described in the Input Output Reference. For radiant system controls, the operative temperature is calculated as the average of MAT and MRT. The surface inside face temperature is the temperature of the surface in which the radiant system is embedded at the inside face (the side facing the zone being conditioned). -When the user opts to control the radiant system on the surface interior temperature, this temperature is inside the slab itself, and its location is defined using input that describes the construction of the slab (Construction:InternalSource--see the Input Output Reference for more details). Note that this user defined temperature still must be at the interface between two layers, but this is easy to overcome by splitting any material into two separate layers. When the user elects to perform a two-dimensional solution, an additional input parameter in the Construction:InternalSource object allows the user to chose the location of the user requested temperature in the direction perpendicular to the main direction of heat transfer. This location can be in-line with the hydronic tubing, at the mid-point between two adjacent pipes, or at any node/point in between. Due to the State Space method and a fixed number of nodes in the direction (currently seven), the user's decimal input for location between one side of the solution domain and the other is converted to a specific node. However, this does allow the user quite a bit of flexibility in the solution and also defining a point on the interior of a radiant system that can be used for controlling a radiant system. +When the user opts to control the radiant system on the surface interior +temperature, this temperature is inside the slab itself, and its location is +defined using input that describes the construction of the slab +(ConstructionProperty:InternalHeatSource--see the Input Output Reference for +more details). Note that this user defined temperature still must be at the +interface between two layers, but this is easy to overcome by splitting any +material into two separate layers. When the user elects to perform a +two-dimensional solution, an additional input parameter in the +ConstructionProperty:InternalHeatSource object allows the user to chose the +location of the user requested temperature in the direction perpendicular to +the main direction of heat transfer. This location can be in-line with the +hydronic tubing, at the mid-point between two adjacent pipes, or at any +node/point in between. Due to the State Space method and a fixed number of +nodes in the direction (currently seven), the user's decimal input for location +between one side of the solution domain and the other is converted to a +specific node. However, this does allow the user quite a bit of flexibility in +the solution and also defining a point on the interior of a radiant system that +can be used for controlling a radiant system. Since flow rate is varied in a variable flow radiant system, there is no explicit control on the inlet water temperature or mixing to achieve some inlet water temperature in a hydronic system.~ However, the user does have the ability to specify on an hourly basis through a schedule the temperature of the water that would be supplied to the radiant system. Graphical descriptions of the controls for the low temperature radiant system model in EnergyPlus are shown in Figure~\ref{fig:variable-flow-low-temperature-radiant-system} for a hydronic system.~ In a system that uses electric resistance heating, the power or heat addition to the system varies in a manner similar to mass flow rate variation shown in Figure~\ref{fig:variable-flow-low-temperature-radiant-system}. diff --git a/doc/engineering-reference/src/surface-heat-balance-manager-processes/conduction-finite-difference-solution.tex b/doc/engineering-reference/src/surface-heat-balance-manager-processes/conduction-finite-difference-solution.tex index 9129a7bb805..8039711092e 100644 --- a/doc/engineering-reference/src/surface-heat-balance-manager-processes/conduction-finite-difference-solution.tex +++ b/doc/engineering-reference/src/surface-heat-balance-manager-processes/conduction-finite-difference-solution.tex @@ -323,7 +323,7 @@ \subsection{Conduction Finite Difference Source Sink Layers}% \label{conduction-finite-difference-source-sink-layers} The Conduction Finite Difference algorithm can also invoke the source/sink layer -capability by using the \textbf{Construction:InternalSource} object. +capability by using the \textbf{ConstructionProperty:InternalHeatSource} object. \subsection{Conduction Finite Difference Heat Flux Outputs}% \label{conduction-finite-difference-heat-flux-outputs} diff --git a/doc/input-output-reference/src/overview/group-radiative-convective-units.tex b/doc/input-output-reference/src/overview/group-radiative-convective-units.tex index 8508906b7f5..5cefee69d58 100644 --- a/doc/input-output-reference/src/overview/group-radiative-convective-units.tex +++ b/doc/input-output-reference/src/overview/group-radiative-convective-units.tex @@ -1182,8 +1182,21 @@ \subsubsection{ZoneHVAC:LowTemperatureRadiant:VariableFlow:Design}\label{zonehva OutdoorWetBulbTemperature - The outdoor wet-bulb temperature of the current outdoor environment. \item SurfaceFaceTemperature - This option allows the user to control the radiant system using the inside face surface temperature of the radiant system (the inside surface temperature). -\item - SurfaceInteriorTemperature - This option will allow the user to control the radiant system using a surface temperature that is calculated inside the radiant system. This point will be defined by the \hyperref[constructioninternalsource]{Construction:InternalSource} description for the system. In that input, the user has the option to calculate a temperature at a particular point in the construction. The radiant system will then use this information for controlling the slab not just producing temperatures for outputting at that point. Users should consult the input for Field: Temperature Calculation Requested After Layer Number for more information. Note that for the SurfaceFaceTemperature and SurfaceInteriorTemperature the surface being used for control is the surface listed above in the field for Surface Name. If the user enters a group of surfaces for that input, the \emph{first} surface in the radiant group is the surface for control purposes. +\item SurfaceInteriorTemperature - This option will allow the user to control + the radiant system using a surface temperature that is calculated inside + the radiant system. This point will be defined by the + \hyperref[constructioninternalsource]{ConstructionProperty:InternalHeatSource} + description for the system. In that input, the user has the option to + calculate a temperature at a particular point in the construction. The + radiant system will then use this information for controlling the slab + not just producing temperatures for outputting at that point. Users + should consult the input for Field: Temperature Calculation Requested + After Layer Number for more information. Note that for the + SurfaceFaceTemperature and SurfaceInteriorTemperature the surface being + used for control is the surface listed above in the field for Surface + Name. If the user enters a group of surfaces for that input, the + \emph{first} surface in the radiant group is the surface for control + purposes. \end{itemize} If the user does not select a control type, \textbf{MeanAirTemperature} control is assumed by EnergyPlus. See the throttling range and control temperature schedule fields below for more information on how the setpoint temperature is established for this particular radiant system. @@ -1798,8 +1811,21 @@ \subsubsection{Inputs}\label{inputs-7-019} OutdoorWetBulbTemperature - The outdoor wet-bulb temperature of the current outdoor environment. \item SurfaceFaceTemperature - This option allows the user to control the radiant system using the inside face surface temperature of the radiant system (the inside surface temperature). -\item - SurfaceInteriorTemperature - This option will allow the user to control the radiant system using a surface temperature that is calculated inside the radiant system. This point will be defined by the \hyperref[constructioninternalsource]{Construction:InternalSource} description for the system. In that input, the user has the option to calculate a temperature at a particular point in the construction. The radiant system will then use this information for controlling the slab not just producing temperatures for outputting at that point. Users should consult the input for Field: Temperature Calculation Requested After Layer Number for more information. Note that for the SurfaceFaceTemperature and SurfaceInteriorTemperature the surface being used for control is the surface listed above in the field for Surface Name. If the user enters a group of surfaces for that input, the \emph{first} surface in the radiant group is the surface for control purposes. +\item SurfaceInteriorTemperature - This option will allow the user to control + the radiant system using a surface temperature that is calculated inside + the radiant system. This point will be defined by the + \hyperref[constructioninternalsource]{ConstructionProperty:InternalHeatSource} + description for the system. In that input, the user has the option to + calculate a temperature at a particular point in the construction. The + radiant system will then use this information for controlling the slab + not just producing temperatures for outputting at that point. Users + should consult the input for Field: Temperature Calculation Requested + After Layer Number for more information. Note that for the + SurfaceFaceTemperature and SurfaceInteriorTemperature the surface being + used for control is the surface listed above in the field for Surface + Name. If the user enters a group of surfaces for that input, the + \emph{first} surface in the radiant group is the surface for control + purposes. \end{itemize} If the user does not select a control type, \textbf{MeanAirTemperature} control is assumed by EnergyPlus. See the throttling range and control temperature schedule fields below for more information on how the setpoint temperature is established for this particular radiant system. diff --git a/doc/input-output-reference/src/overview/group-surface-construction-elements.tex b/doc/input-output-reference/src/overview/group-surface-construction-elements.tex index e9dac5a4437..c6ef7e1920d 100644 --- a/doc/input-output-reference/src/overview/group-surface-construction-elements.tex +++ b/doc/input-output-reference/src/overview/group-surface-construction-elements.tex @@ -4015,9 +4015,19 @@ \subsubsection{Inputs}\label{inputs-37} 15.24,15.24,0.0; !- X,Y,Z = = > Vertex 4 \end{lstlisting} -\subsection{Construction:InternalSource}\label{constructioninternalsource} - -In some cases, such as radiant systems, a construction will actually have resistance wires or hydronic tubing embedded within the construction. Heat is then either added or removed from this building element to provide heating or cooling to the zone in question. In the case of building-integrated photovoltaics, the energy removed in the form of electricity will form a sink. It is possible to enter such constructions into EnergyPlus with the syntax described below. The definition is similar to the Construction definition with a few additions related to radiant or other systems that will lead to source/sink terms. The internal source capability is available with both the \textbf{ConductionTransferFunction} and \textbf{ConductionFiniteDifference} solution algorithms.~ The only difference is that the two dimensional pipe arrangements are not available to ConductionFiniteDifference. Those fields are ignored in that implementation. +\subsection{ConstructionProperty:InternalHeatSource}\label{constructioninternalsource} + +In some cases, such as radiant systems, a construction will actually have +resistance wires or hydronic tubing embedded within the construction. Heat is +then either added or removed from this building element to provide heating or +cooling to the zone in question. In the case of building-integrated +photovoltaics, the energy removed in the form of electricity will form a sink. +It is possible to enter such constructions into EnergyPlus with the syntax +described below. The internal source capability is available with both the +\textbf{ConductionTransferFunction} and \textbf{ConductionFiniteDifference} +solution algorithms. The only difference is that the two dimensional pipe +arrangements are not available to ConductionFiniteDifference. Those fields are +ignored in that implementation. \subsubsection{Inputs}\label{inputs-38} @@ -4049,15 +4059,22 @@ \subsubsection{Inputs}\label{inputs-38} This field only has a meaning when the user opts to have a two-dimensional solution in \textbf{\hyperref[field-dimensions-for-the-ctf-calculation]{Dimensions for the CTF Calculation}} above. It is used in conjunction with the information in \textbf{\hyperref[field-temperature-calculation-requested-after-layer-number]{Temperature Calculation Requested After Layer Number}} above to specify a location for where the simulation will calculate a temperature at the interior of a surface. The \textbf{\hyperref[field-temperature-calculation-requested-after-layer-number]{Temperature Calculation Requested After Layer Number}} field sets where the position is in the main direction of heat transfer. This field determines the position of this point in the direction \textbf{perpendicular} to the main direction of heat transfer. Note that this parameter is a dimensionless value that is allowed to range from 0.0 to 1.0. A value of 0.0 is used for a position that is in line with the tubing in the construction. A value of 1.0 is used for a position that is at the mid-point between adjacent tubes. The user is also given the flexibility to select a point in between those two extremes. -It should also be noted that for values between 0.0 and 1.0 will not allow for exact positioning of the point at which this temperature is calculated. Instead, it will be used to calculate which node in the state space representation will be used to calculate the temperature. Currently, EnergyPlus uses seven nodes in the direction perpendicular to the main direction of heat transfer. In this case, 0.0 represents the first node and 1.0 represents the seventh or last node in the perpendicular direction. So, this field will be used to determine which node in the direction pendicular to the main direction of heat transfer to use and there are five other nodes (second, third, fourth, fifth, and sixth) that are possible locations. For example, if the user enters a value of 0.167, the second node will be used. Likewise, if the user enters a value of 0.1, because this will be closest to the second node, the second node will be used to calculate the internal temperature. For more information on two-dimensional heat transfer within surfaces using Construction:InternalSource, please refer to the EnergyPlus Engineering Reference. - -\paragraph{Field: Outside Layer}\label{field-outside-layer-1} - -Each construction must have at least one layer. This field defines the material name associated with the layer on the outside of this construction---outside referring to the side that is not exposed to the zone but rather the opposite side environment, whether this is the outdoor environment or another zone. Material layers are defined based on their thermal properties elsewhere in the input file (ref: Material and Material Properties and Materials for Glass Windows and Doors). As noted above, the outside layer should NOT be a film coefficient since EnergyPlus will calculate convection and radiation heat transfer more precisely. - -\paragraph{Field(s) 2-10: Layers}\label{fields-2-10-layers-1} - -The next fields are optional and the number of them showing up in a particular Construction definition depends solely on the number of material layers present in that particular construction. The data expected is identical to the outside layer field (see previous field description). The order of the remaining layers is important and should be listed in order of occurrence from the one just inside the outside layer until the inside layer is reached. As noted above, the inside layer should NOT be a film coefficient since EnergyPlus will calculate convection and radiation heat transfer more precisely. +It should also be noted that for values between 0.0 and 1.0 will not allow for +exact positioning of the point at which this temperature is calculated. +Instead, it will be used to calculate which node in the state space +representation will be used to calculate the temperature. Currently, +EnergyPlus uses seven nodes in the direction perpendicular to the main +direction of heat transfer. In this case, 0.0 represents the first node and +1.0 represents the seventh or last node in the perpendicular direction. So, +this field will be used to determine which node in the direction pendicular to +the main direction of heat transfer to use and there are five other nodes +(second, third, fourth, fifth, and sixth) that are possible locations. For +example, if the user enters a value of 0.167, the second node will be used. +Likewise, if the user enters a value of 0.1, because this will be closest to +the second node, the second node will be used to calculate the internal +temperature. For more information on two-dimensional heat transfer within +surfaces using ConstructionProperty:InternalHeatSource, please refer to the +EnergyPlus Engineering Reference. \subsubsection{Outputs}\label{outputs-36-1} diff --git a/idd/Energy+.idd.in b/idd/Energy+.idd.in index a09c2eb8ac2..cb98f11f839 100644 --- a/idd/Energy+.idd.in +++ b/idd/Energy+.idd.in @@ -8824,42 +8824,37 @@ Construction:FfactorGroundFloor, \minimum 0.0 \note Enter exposed perimeter of the floor -Construction:InternalSource, - \memo Start with outside layer and work your way to the inside Layer - \memo Up to 10 layers total - \memo Enter the material name for each layer - \min-fields 7 - A1 , \field Name +ConstructionProperty:InternalHeatSource, + \memo Internal heat source to be attached to a construction layer + A1, \field Name \required-field \type alpha - \reference ConstructionNames - N1 , \field Source Present After Layer Number + \reference InternalHeatSourceNames + A2, \field Construction Name + \type object-list + \object-list ConstructionNames + N1, \field Thermal Source Present After Layer Number \required-field \type integer \minimum 1 - \maximum 10 \note refers to the list of materials which follows - N2 , \field Temperature Calculation Requested After Layer Number + N2, \field Temperature Calculation Requested After Layer Number \required-field \type integer - \minimum 1 - \maximum 10 \note refers to the list of materials which follows - N3 , \field Dimensions for the CTF Calculation + N3, \field Dimensions for the CTF Calculation \required-field \type integer \minimum 1 \maximum 2 \note 1 = 1-dimensional calculation, 2 = 2-dimensional calculation - N4 , \field Tube Spacing + N4, \field Tube Spacing \required-field \type real \units m - \minimum 0.0 - \maximum< 1.0 \note uniform spacing between tubes or resistance wires in direction \note perpendicular to main intended direction of heat transfer - N5 , \field Two-Dimensional Temperature Calculation Position + N5; \field Two-Dimensional Temperature Calculation Position \required-field \minimum 0.0 \maximum 1.0 @@ -8869,37 +8864,6 @@ Construction:InternalSource, \note this field is the location perpendicular to the main direction of heat transfer \note 0.0 means in line with the tubing, 1.0 means at the midpoint between two adjacent pipes \note this field is ignored for 1-D calculations - A2 , \field Outside Layer - \required-field - \type object-list - \object-list MaterialName - A3 , \field Layer 2 - \type object-list - \object-list MaterialName - A4 , \field Layer 3 - \type object-list - \object-list MaterialName - A5 , \field Layer 4 - \type object-list - \object-list MaterialName - A6 , \field Layer 5 - \type object-list - \object-list MaterialName - A7 , \field Layer 6 - \type object-list - \object-list MaterialName - A8 , \field Layer 7 - \type object-list - \object-list MaterialName - A9 , \field Layer 8 - \type object-list - \object-list MaterialName - A10, \field Layer 9 - \type object-list - \object-list MaterialName - A11; \field Layer 10 - \type object-list - \object-list MaterialName Construction:AirBoundary, \memo Indicates an open boundary between two zones. It may be used for base surfaces and fenestration surfaces. diff --git a/src/EnergyPlus/Construction.cc b/src/EnergyPlus/Construction.cc index f1967c3450b..5f717b92938 100644 --- a/src/EnergyPlus/Construction.cc +++ b/src/EnergyPlus/Construction.cc @@ -2008,11 +2008,11 @@ namespace Construction { Real64 ConstructionProps::setUserTemperatureLocationPerpendicular(EnergyPlusData &state, Real64 userValue) { if (userValue < 0.0) { - ShowWarningError(state, "Construction:InternalSource has a perpendicular temperature location parameter that is less than zero."); + ShowWarningError(state, "ConstructionProperty:InternalHeatSource has a perpendicular temperature location parameter that is less than zero."); ShowContinueError(state, "Construction=" + this->Name + " has this error. The parameter has been reset to 0."); return 0.0; } else if (userValue > 1.0) { - ShowWarningError(state, "Construction:InternalSource has a perpendicular temperature location parameter that is greater than one."); + ShowWarningError(state, "ConstructionProperty:InternalHeatSource has a perpendicular temperature location parameter that is greater than one."); ShowContinueError(state, "Construction=" + this->Name + " has this error. The parameter has been reset to 1."); return 1.0; } else { // Valid value between 0 and 1 diff --git a/src/EnergyPlus/DataHeatBalance.cc b/src/EnergyPlus/DataHeatBalance.cc index ba62756f685..cd075d56b59 100644 --- a/src/EnergyPlus/DataHeatBalance.cc +++ b/src/EnergyPlus/DataHeatBalance.cc @@ -574,7 +574,7 @@ namespace DataHeatBalance { bool StormWinChangeThisDay(false); // True if a storm window has been added or removed from any // window during the current day; can only be true for first // time step of the day. - bool AnyConstructInternalSourceInInput(false); // true if the user has entered any constructions with internal sources + bool AnyInternalHeatSourceInInput(false); // true if the user has entered any constructions with internal sources bool AdaptiveComfortRequested_CEN15251(false); // true if people objects have adaptive comfort requests. CEN15251 bool AdaptiveComfortRequested_ASH55(false); // true if people objects have adaptive comfort requests. ASH55 @@ -930,7 +930,7 @@ namespace DataHeatBalance { TotCO2Gen = 0; CalcWindowRevealReflection = false; StormWinChangeThisDay = false; - AnyConstructInternalSourceInInput = false; + AnyInternalHeatSourceInInput = false; AdaptiveComfortRequested_CEN15251 = false; AdaptiveComfortRequested_ASH55 = false; NoFfactorConstructionsUsed = true; diff --git a/src/EnergyPlus/DataHeatBalance.hh b/src/EnergyPlus/DataHeatBalance.hh index 91b71081ed1..a701b41f8fa 100644 --- a/src/EnergyPlus/DataHeatBalance.hh +++ b/src/EnergyPlus/DataHeatBalance.hh @@ -424,7 +424,7 @@ namespace DataHeatBalance { extern bool StormWinChangeThisDay; // True if a storm window has been added or removed from any // window during the current day; can only be true for first // time step of the day. - extern bool AnyConstructInternalSourceInInput; // true if the user has entered any constructions with internal sources + extern bool AnyInternalHeatSourceInInput; // true if the user has entered any constructions with internal sources extern bool AdaptiveComfortRequested_CEN15251; // true if people objects have adaptive comfort requests. CEN15251 extern bool AdaptiveComfortRequested_ASH55; // true if people objects have adaptive comfort requests. ASH55 diff --git a/src/EnergyPlus/HeatBalanceManager.cc b/src/EnergyPlus/HeatBalanceManager.cc index 68ef8bfcab6..a43ffdddca7 100644 --- a/src/EnergyPlus/HeatBalanceManager.cc +++ b/src/EnergyPlus/HeatBalanceManager.cc @@ -52,8 +52,8 @@ // ObjexxFCL Headers #include -#include #include +#include #include #include @@ -324,9 +324,9 @@ namespace HeatBalanceManager { // Surface octree setup // The surface octree holds live references to surfaces so it must be updated // if in the future surfaces are altered after this point - if (TotSurfaces >= DaylightingManager::octreeCrossover) { // Octree can be active + if (TotSurfaces >= DaylightingManager::octreeCrossover) { // Octree can be active if (inputProcessor->getNumObjectsFound(state, "Daylighting:Controls") > 0) { // Daylighting is active - surfaceOctree.init(DataSurfaces::Surface); // Set up surface octree + surfaceOctree.init(DataSurfaces::Surface); // Set up surface octree } } @@ -344,7 +344,8 @@ namespace HeatBalanceManager { // These Inits will still have to be looked at as the routines are re-engineered further InitHeatBalance(state); // Initialize all heat balance related parameters - ManageEMS(state, EMSManager::EMSCallFrom::BeginZoneTimestepAfterInitHeatBalance, anyRan, ObjexxFCL::Optional_int_const()); // EMS calling point + ManageEMS( + state, EMSManager::EMSCallFrom::BeginZoneTimestepAfterInitHeatBalance, anyRan, ObjexxFCL::Optional_int_const()); // EMS calling point // Solve the zone heat balance by first calling the Surface Heat Balance Manager // and then the Air Heat Balance Manager is called by the Surface Heat Balance @@ -355,7 +356,7 @@ namespace HeatBalanceManager { // in the Surface Heat Balance Manager). In the future, this may be improved. ManageSurfaceHeatBalance(state); ManageEMS(state, EMSManager::EMSCallFrom::EndZoneTimestepBeforeZoneReporting, anyRan, ObjexxFCL::Optional_int_const()); // EMS calling point - RecKeepHeatBalance(state); // Do any heat balance related record keeping + RecKeepHeatBalance(state); // Do any heat balance related record keeping // This call has been moved to the FanSystemModule and does effect the output file // You do get a shift in the Air Handling System Summary for the building electric loads @@ -528,8 +529,9 @@ namespace HeatBalanceManager { } } } - Unused = - TotConstructs - std::count_if(state.dataConstruction->Construct.begin(), state.dataConstruction->Construct.end(), [](Construction::ConstructionProps const &e) { return e.IsUsed; }); + Unused = TotConstructs - std::count_if(state.dataConstruction->Construct.begin(), + state.dataConstruction->Construct.end(), + [](Construction::ConstructionProps const &e) { return e.IsUsed; }); if (Unused > 0) { if (!state.dataGlobal->DisplayExtraWarnings) { ShowWarningError(state, format("CheckUsedConstructions: There are {} nominally unused constructions in input.", Unused)); @@ -636,7 +638,6 @@ namespace HeatBalanceManager { } // construction types being ignored as they are opaque: Construction:CfactorUndergroundWall, Construction:FfactorGroundFloor, - // Construction:InternalSource } void GetProjectControlData(EnergyPlusData &state, bool &ErrorsFound) // Set to true if errors detected during getting data @@ -852,15 +853,21 @@ namespace HeatBalanceManager { } static constexpr auto Format_720(" Building Information,{},{:.3R},{},{:.5R},{:.5R},{},{},{}\n"); - static constexpr auto Format_721( - "! , Building Name,North Axis {{deg}},Terrain, Loads Convergence Tolerance " - "Value,Temperature Convergence Tolerance Value, Solar Distribution,Maximum Number of Warmup Days,Minimum " - "Number of Warmup Days\n"); + static constexpr auto Format_721("! , Building Name,North Axis {{deg}},Terrain, Loads Convergence Tolerance " + "Value,Temperature Convergence Tolerance Value, Solar Distribution,Maximum Number of Warmup Days,Minimum " + "Number of Warmup Days\n"); // Write Building Information to the initialization output file print(state.files.eio, Format_721); - print(state.files.eio, Format_720, - BuildingName , BuildingAzimuth , AlphaName(2) , LoadsConvergTol - , TempConvergTol , AlphaName(3) , MaxNumberOfWarmupDays , MinNumberOfWarmupDays); + print(state.files.eio, + Format_720, + BuildingName, + BuildingAzimuth, + AlphaName(2), + LoadsConvergTol, + TempConvergTol, + AlphaName(3), + MaxNumberOfWarmupDays, + MinNumberOfWarmupDays); // Above should be validated... CurrentModuleObject = "SurfaceConvectionAlgorithm:Inside"; @@ -896,7 +903,8 @@ namespace HeatBalanceManager { } else if (SELECT_CASE_var == "TROMBEWALL") { DefaultInsideConvectionAlgo = TrombeWall; - ShowSevereError(state, "GetInsideConvectionAlgorithm: TrombeWall has been used as a global definition. This is a zone oriented value. " + ShowSevereError(state, + "GetInsideConvectionAlgorithm: TrombeWall has been used as a global definition. This is a zone oriented value. " "Will be illegal in the future."); AlphaName(1) = "TrombeWall"; @@ -909,8 +917,9 @@ namespace HeatBalanceManager { AlphaName(1) = "ASTMC1340"; } else { - ShowWarningError(state, "GetInsideConvectionAlgorithm: Invalid value for " + CurrentModuleObject + - ", defaulting to TARP, invalid value=" + AlphaName(1)); + ShowWarningError(state, + "GetInsideConvectionAlgorithm: Invalid value for " + CurrentModuleObject + + ", defaulting to TARP, invalid value=" + AlphaName(1)); DefaultInsideConvectionAlgo = ASHRAETARP; AlphaName(1) = "TARP"; } @@ -921,7 +930,7 @@ namespace HeatBalanceManager { AlphaName(1) = "TARP"; } static constexpr auto Format_722("! , Algorithm {{Simple | TARP | CeilingDiffuser | " - "AdaptiveConvectionAlgorithm}}\nInside Convection Algorithm,{}\n"); + "AdaptiveConvectionAlgorithm}}\nInside Convection Algorithm,{}\n"); print(state.files.eio, Format_722, AlphaName(1)); // Get only the first (if more were input) @@ -964,8 +973,9 @@ namespace HeatBalanceManager { AlphaName(1) = "AdaptiveConvectionAlgorithm"; } else { - ShowWarningError(state, "GetOutsideConvectionAlgorithm: Invalid value for " + CurrentModuleObject + - ", defaulting to DOE-2, invalid value=" + AlphaName(1)); + ShowWarningError(state, + "GetOutsideConvectionAlgorithm: Invalid value for " + CurrentModuleObject + + ", defaulting to DOE-2, invalid value=" + AlphaName(1)); DefaultOutsideConvectionAlgo = DOE2HcOutside; AlphaName(1) = "DOE-2"; } @@ -977,7 +987,7 @@ namespace HeatBalanceManager { } static constexpr auto Format_723("! , Algorithm {{SimpleCombined | TARP | MoWitt | DOE-2 | " - "AdaptiveConvectionAlgorithm}}\nOutside Convection Algorithm,{}\n"); + "AdaptiveConvectionAlgorithm}}\nOutside Convection Algorithm,{}\n"); print(state.files.eio, Format_723, AlphaName(1)); CurrentModuleObject = "HeatBalanceAlgorithm"; @@ -1017,7 +1027,8 @@ namespace HeatBalanceManager { CurrentModuleObject, cAlphaFieldNames(1), state.dataGlobal->NumOfTimeStepInHour)); - ShowContinueError(state, "...Suggested minimum number of time steps in hour for Conduction Finite Difference solutions is 20. " + ShowContinueError(state, + "...Suggested minimum number of time steps in hour for Conduction Finite Difference solutions is 20. " "Errors or inaccurate calculations may occur."); } @@ -1032,9 +1043,11 @@ namespace HeatBalanceManager { CurrentModuleObject, cAlphaFieldNames(1), state.dataGlobal->NumOfTimeStepInHour)); - ShowContinueError(state, "...Suggested minimum number of time steps in hour for Combined Heat and Moisture Finite Element solutions " + ShowContinueError(state, + "...Suggested minimum number of time steps in hour for Combined Heat and Moisture Finite Element solutions " "is 20. Errors or inaccurate calculations may occur."); - ShowContinueError(state, "...If the simulation crashes, look at material properties (esp porosity), use timestep=60, or less layers " + ShowContinueError(state, + "...If the simulation crashes, look at material properties (esp porosity), use timestep=60, or less layers " "in your constructions."); } @@ -1125,8 +1138,9 @@ namespace HeatBalanceManager { } else { ZoneAirSolutionAlgo = Use3rdOrder; AlphaName(1) = "ThirdOrderBackwardDifference"; - ShowWarningError(state, CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(1) + - ". The default choice is assigned = " + AlphaName(1)); + ShowWarningError(state, + CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(1) + + ". The default choice is assigned = " + AlphaName(1)); ShowContinueError(state, "Valid choices are: ThirdOrderBackwardDifference, AnalyticalSolution, or EulerMethod."); } } @@ -1140,7 +1154,6 @@ namespace HeatBalanceManager { AlphaName(1) = "EulerMethod"; } - // Write Solution Algorithm to the initialization output file for User Verification static constexpr auto Format_726( "! , Value {{ThirdOrderBackwardDifference | AnalyticalSolution | EulerMethod}}\n"); @@ -1175,7 +1188,8 @@ namespace HeatBalanceManager { } else { state.dataContaminantBalance->Contaminant.CO2Simulation = false; AlphaName(1) = "NO"; - ShowWarningError(state, CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(1) + ". The default choice is assigned = NO"); + ShowWarningError(state, + CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(1) + ". The default choice is assigned = NO"); } } } @@ -1196,13 +1210,15 @@ namespace HeatBalanceManager { auto const SELECT_CASE_var(AlphaName(3)); if (SELECT_CASE_var == "YES") { state.dataContaminantBalance->Contaminant.GenericContamSimulation = true; - if (!state.dataContaminantBalance->Contaminant.CO2Simulation) state.dataContaminantBalance->Contaminant.SimulateContaminants = true; + if (!state.dataContaminantBalance->Contaminant.CO2Simulation) + state.dataContaminantBalance->Contaminant.SimulateContaminants = true; } else if (SELECT_CASE_var == "NO") { state.dataContaminantBalance->Contaminant.GenericContamSimulation = false; } else { state.dataContaminantBalance->Contaminant.GenericContamSimulation = false; AlphaName(3) = "NO"; - ShowWarningError(state, CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(3) + ". The default choice is assigned = NO"); + ShowWarningError(state, + CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(3) + ". The default choice is assigned = NO"); } } if (NumAlpha == 3 && state.dataContaminantBalance->Contaminant.GenericContamSimulation) { @@ -1228,8 +1244,7 @@ namespace HeatBalanceManager { WindowManager::initWindowModel(state); - static constexpr auto Format_728( - "! , Simulation {{Yes/No}}, Carbon Dioxide Concentration\n"); + static constexpr auto Format_728("! , Simulation {{Yes/No}}, Carbon Dioxide Concentration\n"); print(state.files.eio, Format_728); static constexpr auto Format_730(" Zone Air Carbon Dioxide Balance Simulation, {},{}\n"); if (state.dataContaminantBalance->Contaminant.SimulateContaminants && state.dataContaminantBalance->Contaminant.CO2Simulation) { @@ -1279,7 +1294,8 @@ namespace HeatBalanceManager { } else { ZoneAirMassFlow.BalanceMixing = false; AlphaName(1) = "No"; - ShowWarningError(state, CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(1) + ". The default choice is assigned = No"); + ShowWarningError(state, + CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(1) + ". The default choice is assigned = No"); } } } @@ -1290,12 +1306,14 @@ namespace HeatBalanceManager { ZoneAirMassFlow.InfiltrationTreatment = AddInfiltrationFlow; ZoneAirMassFlow.EnforceZoneMassBalance = true; AlphaName(2) = "AddInfiltrationFlow"; - if (!state.dataContaminantBalance->Contaminant.CO2Simulation) state.dataContaminantBalance->Contaminant.SimulateContaminants = true; + if (!state.dataContaminantBalance->Contaminant.CO2Simulation) + state.dataContaminantBalance->Contaminant.SimulateContaminants = true; } else if (SELECT_CASE_var == "ADJUSTINFILTRATIONFLOW") { ZoneAirMassFlow.InfiltrationTreatment = AdjustInfiltrationFlow; ZoneAirMassFlow.EnforceZoneMassBalance = true; AlphaName(2) = "AddInfiltrationFlow"; - if (!state.dataContaminantBalance->Contaminant.CO2Simulation) state.dataContaminantBalance->Contaminant.SimulateContaminants = true; + if (!state.dataContaminantBalance->Contaminant.CO2Simulation) + state.dataContaminantBalance->Contaminant.SimulateContaminants = true; } else if (SELECT_CASE_var == "NONE") { ZoneAirMassFlow.InfiltrationTreatment = NoInfiltrationFlow; AlphaName(2) = "None"; @@ -1303,8 +1321,9 @@ namespace HeatBalanceManager { ZoneAirMassFlow.InfiltrationTreatment = AddInfiltrationFlow; ZoneAirMassFlow.EnforceZoneMassBalance = true; AlphaName(2) = "AddInfiltrationFlow"; - ShowWarningError(state, CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(2) + - ". The default choice is assigned = AddInfiltrationFlow"); + ShowWarningError(state, + CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(2) + + ". The default choice is assigned = AddInfiltrationFlow"); } } } else { @@ -1327,8 +1346,9 @@ namespace HeatBalanceManager { } else { ZoneAirMassFlow.InfiltrationZoneType = MixingSourceZonesOnly; AlphaName(3) = "MixingSourceZonesOnly"; - ShowWarningError(state, CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(3) + - ". The default choice is assigned = MixingSourceZonesOnly"); + ShowWarningError(state, + CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(3) + + ". The default choice is assigned = MixingSourceZonesOnly"); } } } else { @@ -1384,10 +1404,11 @@ namespace HeatBalanceManager { HVACSystemRootFinding.HVACSystemRootSolver = DataHVACGlobals::HVACSystemRootSolverAlgorithm::Alternation; } else { HVACSystemRootFinding.HVACSystemRootSolver = DataHVACGlobals::HVACSystemRootSolverAlgorithm::RegulaFalsi; - ShowWarningError(state, CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(1) + - ". The default choice is assigned = " + AlphaName(1)); - ShowContinueError(state, - "Valid choices are: RegulaFalsi, Bisection, BisectionThenRegulaFalsi, RegulaFalsiThenBisection, or Alternation."); + ShowWarningError(state, + CurrentModuleObject + ": Invalid input of " + cAlphaFieldNames(1) + + ". The default choice is assigned = " + AlphaName(1)); + ShowContinueError( + state, "Valid choices are: RegulaFalsi, Bisection, BisectionThenRegulaFalsi, RegulaFalsiThenBisection, or Alternation."); } } } @@ -1468,8 +1489,8 @@ namespace HeatBalanceManager { // Write to the initialization output file print(state.files.eio, - "! ,Wind Speed Profile Exponent {{}},Wind Speed Profile Boundary " - "Layer Thickness {{m}},Air Temperature Gradient Coefficient {{K/m}}\n"); + "! ,Wind Speed Profile Exponent {{}},Wind Speed Profile Boundary " + "Layer Thickness {{m}},Air Temperature Gradient Coefficient {{K/m}}\n"); print(state.files.eio, Format_720, state.dataEnvrn->SiteWindExp, state.dataEnvrn->SiteWindBLHeight, state.dataEnvrn->SiteTempGradient); } @@ -1537,12 +1558,12 @@ namespace HeatBalanceManager { Real64 ReflectivityVis; // Glass reflectivity, visible Real64 TransmittivitySol; // Glass transmittivity, solar Real64 TransmittivityVis; // Glass transmittivity, visible - Real64 DenomRGas; // Denominator for WindowGas calculations of NominalR - Real64 Openness; // insect screen openness fraction = (1-d/s)^2 - Real64 minAngValue; // minimum value of angle - Real64 maxAngValue; // maximum value of angle - Real64 minLamValue; // minimum value of wavelength - Real64 maxLamValue; // maximum value of wavelength + Real64 DenomRGas; // Denominator for WindowGas calculations of NominalR + Real64 Openness; // insect screen openness fraction = (1-d/s)^2 + Real64 minAngValue; // minimum value of angle + Real64 maxAngValue; // maximum value of angle + Real64 minLamValue; // minimum value of wavelength + Real64 maxLamValue; // maximum value of wavelength // Added TH 1/9/2009 to read the thermochromic glazings static int iTC(0); @@ -1622,8 +1643,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { continue; } // Load the material derived type from the input data. @@ -1705,8 +1726,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -1777,8 +1798,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -1812,8 +1833,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -1855,8 +1876,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -1893,7 +1914,9 @@ namespace HeatBalanceManager { state.dataMaterial->Material(MaterNum).Resistance = NominalR(MaterNum); } else { ErrorsFound = true; - ShowSevereError(state, "Window glass material " + state.dataMaterial->Material(MaterNum).Name + " has Conductivity = 0.0, must be >0.0, default = .9"); + ShowSevereError(state, + "Window glass material " + state.dataMaterial->Material(MaterNum).Name + + " has Conductivity = 0.0, must be >0.0, default = .9"); } state.dataMaterial->Material(MaterNum).GlassSpectralDataPtr = 0; @@ -1903,17 +1926,20 @@ namespace HeatBalanceManager { if (UtilityRoutines::SameString(MaterialNames(2), "SpectralAverage")) state.dataMaterial->Material(MaterNum).GlassSpectralDataPtr = 0; // No need for spectral data for BSDF either if (UtilityRoutines::SameString(MaterialNames(2), "BSDF")) state.dataMaterial->Material(MaterNum).GlassSpectralDataPtr = 0; - if (UtilityRoutines::SameString(MaterialNames(2), "SpectralAndAngle")) state.dataMaterial->Material(MaterNum).GlassSpectralAndAngle = true; + if (UtilityRoutines::SameString(MaterialNames(2), "SpectralAndAngle")) + state.dataMaterial->Material(MaterNum).GlassSpectralAndAngle = true; if (state.dataMaterial->Material(MaterNum).GlassSpectralDataPtr == 0 && UtilityRoutines::SameString(MaterialNames(2), "Spectral")) { ErrorsFound = true; - ShowSevereError(state, CurrentModuleObject + "=\"" + state.dataMaterial->Material(MaterNum).Name + "\" has " + cAlphaFieldNames(2) + - " = Spectral but has no matching MaterialProperty:GlazingSpectralData set"); + ShowSevereError(state, + CurrentModuleObject + "=\"" + state.dataMaterial->Material(MaterNum).Name + "\" has " + cAlphaFieldNames(2) + + " = Spectral but has no matching MaterialProperty:GlazingSpectralData set"); if (lAlphaFieldBlanks(3)) { ShowContinueError(state, "..." + cAlphaFieldNames(3) + " is blank."); } else { - ShowContinueError(state, "..." + cAlphaFieldNames(3) + "=\"" + MaterialNames(3) + - "\" not found as item in MaterialProperty:GlazingSpectralData objects."); + ShowContinueError(state, + "..." + cAlphaFieldNames(3) + "=\"" + MaterialNames(3) + + "\" not found as item in MaterialProperty:GlazingSpectralData objects."); } } @@ -1921,7 +1947,8 @@ namespace HeatBalanceManager { !UtilityRoutines::SameString(MaterialNames(2), "BSDF") && !UtilityRoutines::SameString(MaterialNames(2), "SpectralAndAngle")) { ErrorsFound = true; ShowSevereError(state, CurrentModuleObject + "=\"" + state.dataMaterial->Material(MaterNum).Name + "\", invalid specification."); - ShowContinueError(state, cAlphaFieldNames(2) + " must be SpectralAverage, Spectral, BSDF or SpectralAndAngle, value=" + MaterialNames(2)); + ShowContinueError(state, + cAlphaFieldNames(2) + " must be SpectralAverage, Spectral, BSDF or SpectralAndAngle, value=" + MaterialNames(2)); } // TH 8/24/2011, allow glazing properties MaterialProps(2 to 10) to equal 0 or 1: 0.0 =< Prop <= 1.0 @@ -2072,29 +2099,35 @@ namespace HeatBalanceManager { ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Invalid name."); ShowContinueError(state, cAlphaFieldNames(5) + " requires a valid table object name, entered input=" + MaterialNames(5)); } else { - ErrorsFound |= CurveManager::CheckCurveDims(state, state.dataMaterial->Material(MaterNum).GlassSpecAngTransDataPtr, // Curve index + ErrorsFound |= CurveManager::CheckCurveDims(state, + state.dataMaterial->Material(MaterNum).GlassSpecAngTransDataPtr, // Curve index {2}, // Valid dimensions RoutineName, // Routine name CurrentModuleObject, // Object Type - state.dataMaterial->Material(MaterNum).Name, // Object Name + state.dataMaterial->Material(MaterNum).Name, // Object Name cAlphaFieldNames(5)); // Field Name - GetCurveMinMaxValues(state, state.dataMaterial->Material(MaterNum).GlassSpecAngTransDataPtr, minAngValue, maxAngValue, minLamValue, maxLamValue); + GetCurveMinMaxValues(state, + state.dataMaterial->Material(MaterNum).GlassSpecAngTransDataPtr, + minAngValue, + maxAngValue, + minLamValue, + maxLamValue); if (minAngValue > 1.0e-6) { ErrorsFound = true; ShowSevereError( state, format("{}=\"{}\", Invalid minimum value of angle = {:.2R}.", CurrentModuleObject, MaterialNames(1), minAngValue)); - ShowContinueError(state, cAlphaFieldNames(5) + - " requires the minumum value = 0.0 in the entered table name=" + MaterialNames(5)); + ShowContinueError( + state, cAlphaFieldNames(5) + " requires the minumum value = 0.0 in the entered table name=" + MaterialNames(5)); } if (std::abs(maxAngValue - 90.0) > 1.0e-6) { ErrorsFound = true; ShowSevereError( state, format("{}=\"{}\", Invalid maximum value of angle = {:.2R}.", CurrentModuleObject, MaterialNames(1), maxAngValue)); - ShowContinueError(state, cAlphaFieldNames(5) + - " requires the maximum value = 90.0 in the entered table name=" + MaterialNames(5)); + ShowContinueError( + state, cAlphaFieldNames(5) + " requires the maximum value = 90.0 in the entered table name=" + MaterialNames(5)); } if (minLamValue < 0.1) { ErrorsFound = true; @@ -2102,8 +2135,9 @@ namespace HeatBalanceManager { state, format( "{}=\"{}\", Invalid minimum value of wavelength = {:.2R}.", CurrentModuleObject, MaterialNames(1), minLamValue)); - ShowContinueError(state, cAlphaFieldNames(5) + - " requires the minumum value = 0.1 micron in the entered table name=" + MaterialNames(5)); + ShowContinueError(state, + cAlphaFieldNames(5) + + " requires the minumum value = 0.1 micron in the entered table name=" + MaterialNames(5)); } if (maxLamValue > 4.0) { ErrorsFound = true; @@ -2111,8 +2145,9 @@ namespace HeatBalanceManager { state, format( "{}=\"{}\", Invalid maximum value of wavelength = {:.2R}.", CurrentModuleObject, MaterialNames(1), maxLamValue)); - ShowContinueError(state, cAlphaFieldNames(5) + - " requires the maximum value = 4.0 microns in the entered table name=" + MaterialNames(5)); + ShowContinueError(state, + cAlphaFieldNames(5) + + " requires the maximum value = 4.0 microns in the entered table name=" + MaterialNames(5)); } } } @@ -2127,29 +2162,35 @@ namespace HeatBalanceManager { ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Invalid name."); ShowContinueError(state, cAlphaFieldNames(6) + " requires a valid table object name, entered input=" + MaterialNames(6)); } else { - ErrorsFound |= CurveManager::CheckCurveDims(state, state.dataMaterial->Material(MaterNum).GlassSpecAngFRefleDataPtr, // Curve index - {2}, // Valid dimensions - RoutineName, // Routine name - CurrentModuleObject, // Object Type - state.dataMaterial->Material(MaterNum).Name, // Object Name - cAlphaFieldNames(6)); // Field Name - - GetCurveMinMaxValues(state, state.dataMaterial->Material(MaterNum).GlassSpecAngFRefleDataPtr, minAngValue, maxAngValue, minLamValue, maxLamValue); + ErrorsFound |= CurveManager::CheckCurveDims(state, + state.dataMaterial->Material(MaterNum).GlassSpecAngFRefleDataPtr, // Curve index + {2}, // Valid dimensions + RoutineName, // Routine name + CurrentModuleObject, // Object Type + state.dataMaterial->Material(MaterNum).Name, // Object Name + cAlphaFieldNames(6)); // Field Name + + GetCurveMinMaxValues(state, + state.dataMaterial->Material(MaterNum).GlassSpecAngFRefleDataPtr, + minAngValue, + maxAngValue, + minLamValue, + maxLamValue); if (minAngValue > 1.0e-6) { ErrorsFound = true; ShowSevereError( state, format("{}=\"{}\", Invalid minimum value of angle = {:.2R}.", CurrentModuleObject, MaterialNames(1), minAngValue)); - ShowContinueError(state, cAlphaFieldNames(5) + - " requires the minumum value = 0.0 in the entered table name=" + MaterialNames(5)); + ShowContinueError( + state, cAlphaFieldNames(5) + " requires the minumum value = 0.0 in the entered table name=" + MaterialNames(5)); } if (std::abs(maxAngValue - 90.0) > 1.0e-6) { ErrorsFound = true; ShowSevereError( state, format("{}=\"{}\", Invalid maximum value of angle = {:.2R}.", CurrentModuleObject, MaterialNames(1), maxAngValue)); - ShowContinueError(state, cAlphaFieldNames(5) + - " requires the maximum value = 90.0 in the entered table name=" + MaterialNames(5)); + ShowContinueError( + state, cAlphaFieldNames(5) + " requires the maximum value = 90.0 in the entered table name=" + MaterialNames(5)); } if (minLamValue < 0.1) { ErrorsFound = true; @@ -2157,8 +2198,9 @@ namespace HeatBalanceManager { state, format( "{}=\"{}\", Invalid minimum value of wavelength = {:.2R}.", CurrentModuleObject, MaterialNames(1), minLamValue)); - ShowContinueError(state, cAlphaFieldNames(5) + - " requires the minumum value = 0.1 micron in the entered table name=" + MaterialNames(5)); + ShowContinueError(state, + cAlphaFieldNames(5) + + " requires the minumum value = 0.1 micron in the entered table name=" + MaterialNames(5)); } if (maxLamValue > 4.0) { ErrorsFound = true; @@ -2166,8 +2208,9 @@ namespace HeatBalanceManager { state, format( "{}=\"{}\", Invalid maximum value of wavelength = {:.2R}.", CurrentModuleObject, MaterialNames(1), maxLamValue)); - ShowContinueError(state, cAlphaFieldNames(5) + - " requires the maximum value = 4.0 microns in the entered table name=" + MaterialNames(5)); + ShowContinueError(state, + cAlphaFieldNames(5) + + " requires the maximum value = 4.0 microns in the entered table name=" + MaterialNames(5)); } } } @@ -2182,29 +2225,35 @@ namespace HeatBalanceManager { ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Invalid name."); ShowContinueError(state, cAlphaFieldNames(7) + " requires a valid table object name, entered input=" + MaterialNames(7)); } else { - ErrorsFound |= CurveManager::CheckCurveDims(state, state.dataMaterial->Material(MaterNum).GlassSpecAngBRefleDataPtr, // Curve index - {2}, // Valid dimensions - RoutineName, // Routine name - CurrentModuleObject, // Object Type - state.dataMaterial->Material(MaterNum).Name, // Object Name - cAlphaFieldNames(7)); // Field Name - - GetCurveMinMaxValues(state, state.dataMaterial->Material(MaterNum).GlassSpecAngBRefleDataPtr, minAngValue, maxAngValue, minLamValue, maxLamValue); + ErrorsFound |= CurveManager::CheckCurveDims(state, + state.dataMaterial->Material(MaterNum).GlassSpecAngBRefleDataPtr, // Curve index + {2}, // Valid dimensions + RoutineName, // Routine name + CurrentModuleObject, // Object Type + state.dataMaterial->Material(MaterNum).Name, // Object Name + cAlphaFieldNames(7)); // Field Name + + GetCurveMinMaxValues(state, + state.dataMaterial->Material(MaterNum).GlassSpecAngBRefleDataPtr, + minAngValue, + maxAngValue, + minLamValue, + maxLamValue); if (minAngValue > 1.0e-6) { ErrorsFound = true; ShowSevereError( state, format("{}=\"{}\", Invalid minimum value of angle = {:.2R}.", CurrentModuleObject, MaterialNames(1), minAngValue)); - ShowContinueError(state, cAlphaFieldNames(5) + - " requires the minumum value = 0.0 in the entered table name=" + MaterialNames(5)); + ShowContinueError( + state, cAlphaFieldNames(5) + " requires the minumum value = 0.0 in the entered table name=" + MaterialNames(5)); } if (std::abs(maxAngValue - 90.0) > 1.0e-6) { ErrorsFound = true; ShowSevereError( state, format("{}=\"{}\", Invalid maximum value of angle = {:.2R}.", CurrentModuleObject, MaterialNames(1), maxAngValue)); - ShowContinueError(state, cAlphaFieldNames(5) + - " requires the maximum value = 90.0 in the entered table name=" + MaterialNames(5)); + ShowContinueError( + state, cAlphaFieldNames(5) + " requires the maximum value = 90.0 in the entered table name=" + MaterialNames(5)); } if (minLamValue < 0.1) { ErrorsFound = true; @@ -2212,8 +2261,9 @@ namespace HeatBalanceManager { state, format( "{}=\"{}\", Invalid minimum value of wavelength = {:.2R}.", CurrentModuleObject, MaterialNames(1), minLamValue)); - ShowContinueError(state, cAlphaFieldNames(5) + - " requires the minumum value = 0.1 micron in the entered table name=" + MaterialNames(5)); + ShowContinueError(state, + cAlphaFieldNames(5) + + " requires the minumum value = 0.1 micron in the entered table name=" + MaterialNames(5)); } if (maxLamValue > 4.0) { ErrorsFound = true; @@ -2221,8 +2271,9 @@ namespace HeatBalanceManager { state, format( "{}=\"{}\", Invalid maximum value of wavelength = {:.2R}.", CurrentModuleObject, MaterialNames(1), maxLamValue)); - ShowContinueError(state, cAlphaFieldNames(5) + - " requires the maximum value = 4.0 microns in the entered table name=" + MaterialNames(5)); + ShowContinueError(state, + cAlphaFieldNames(5) + + " requires the maximum value = 4.0 microns in the entered table name=" + MaterialNames(5)); } } } @@ -2247,8 +2298,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -2271,14 +2322,18 @@ namespace HeatBalanceManager { ReflectivityVis = pow_2((MaterialProps(4) - 1.0) / (MaterialProps(4) + 1.0)); TransmittivitySol = std::exp(-MaterialProps(3) * MaterialProps(1)); TransmittivityVis = std::exp(-MaterialProps(5) * MaterialProps(1)); - state.dataMaterial->Material(MaterNum).Trans = TransmittivitySol * pow_2(1.0 - ReflectivitySol) / (1.0 - pow_2(ReflectivitySol * TransmittivitySol)); - state.dataMaterial->Material(MaterNum).ReflectSolBeamFront = ReflectivitySol * (1.0 + pow_2(1.0 - ReflectivitySol) * pow_2(TransmittivitySol) / - (1.0 - pow_2(ReflectivitySol * TransmittivitySol))); + state.dataMaterial->Material(MaterNum).Trans = + TransmittivitySol * pow_2(1.0 - ReflectivitySol) / (1.0 - pow_2(ReflectivitySol * TransmittivitySol)); + state.dataMaterial->Material(MaterNum).ReflectSolBeamFront = + ReflectivitySol * + (1.0 + pow_2(1.0 - ReflectivitySol) * pow_2(TransmittivitySol) / (1.0 - pow_2(ReflectivitySol * TransmittivitySol))); state.dataMaterial->Material(MaterNum).ReflectSolBeamBack = state.dataMaterial->Material(MaterNum).ReflectSolBeamFront; - state.dataMaterial->Material(MaterNum).TransVis = TransmittivityVis * pow_2(1.0 - ReflectivityVis) / (1.0 - pow_2(ReflectivityVis * TransmittivityVis)); + state.dataMaterial->Material(MaterNum).TransVis = + TransmittivityVis * pow_2(1.0 - ReflectivityVis) / (1.0 - pow_2(ReflectivityVis * TransmittivityVis)); - state.dataMaterial->Material(MaterNum).ReflectVisBeamFront = ReflectivityVis * (1.0 + pow_2(1.0 - ReflectivityVis) * pow_2(TransmittivityVis) / - (1.0 - pow_2(ReflectivityVis * TransmittivityVis))); + state.dataMaterial->Material(MaterNum).ReflectVisBeamFront = + ReflectivityVis * + (1.0 + pow_2(1.0 - ReflectivityVis) * pow_2(TransmittivityVis) / (1.0 - pow_2(ReflectivityVis * TransmittivityVis))); state.dataMaterial->Material(MaterNum).ReflectVisBeamBack = state.dataMaterial->Material(MaterNum).ReflectSolBeamFront; state.dataMaterial->Material(MaterNum).TransThermal = MaterialProps(6); state.dataMaterial->Material(MaterNum).AbsorpThermalFront = MaterialProps(7); @@ -2331,8 +2386,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -2371,7 +2426,8 @@ namespace HeatBalanceManager { state.dataMaterial->Material(MaterNum).EmissThermalFront = MaterialProps(24); state.dataMaterial->Material(MaterNum).EmissThermalBack = MaterialProps(25); state.dataMaterial->Material(MaterNum).Resistance = MaterialProps(26); - if (state.dataMaterial->Material(MaterNum).Resistance <= 0.0) state.dataMaterial->Material(MaterNum).Resistance = 0.158; // equivalent to single pane of 1/4" inch standard glass + if (state.dataMaterial->Material(MaterNum).Resistance <= 0.0) + state.dataMaterial->Material(MaterNum).Resistance = 0.158; // equivalent to single pane of 1/4" inch standard glass // Assumes thermal emissivity is the same as thermal absorptance state.dataMaterial->Material(MaterNum).AbsorpThermalFront = state.dataMaterial->Material(MaterNum).EmissThermalFront; state.dataMaterial->Material(MaterNum).AbsorpThermalBack = state.dataMaterial->Material(MaterNum).EmissThermalBack; @@ -2417,8 +2473,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -2443,7 +2499,8 @@ namespace HeatBalanceManager { if (state.dataMaterial->Material(MaterNum).GasType(1) == -1) { ErrorsFound = true; ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Illegal value."); - ShowContinueError(state, cAlphaFieldNames(2) + " entered value=\"" + TypeOfGas + "\" should be Air, Argon, Krypton, Xenon or Custom."); + ShowContinueError(state, + cAlphaFieldNames(2) + " entered value=\"" + TypeOfGas + "\" should be Air, Argon, Krypton, Xenon or Custom."); } state.dataMaterial->Material(MaterNum).Roughness = MediumRough; @@ -2499,7 +2556,8 @@ namespace HeatBalanceManager { // Nominal resistance of gap at room temperature if (!ErrorsFound) { - DenomRGas = (state.dataMaterial->Material(MaterNum).GasCon(1, 1) + state.dataMaterial->Material(MaterNum).GasCon(2, 1) * 300.0 + state.dataMaterial->Material(MaterNum).GasCon(3, 1) * 90000.0); + DenomRGas = (state.dataMaterial->Material(MaterNum).GasCon(1, 1) + state.dataMaterial->Material(MaterNum).GasCon(2, 1) * 300.0 + + state.dataMaterial->Material(MaterNum).GasCon(3, 1) * 90000.0); if (DenomRGas > 0.0) { NominalR(MaterNum) = state.dataMaterial->Material(MaterNum).Thickness / DenomRGas; } else { @@ -2529,8 +2587,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -2585,8 +2643,9 @@ namespace HeatBalanceManager { state.dataMaterial->Material(MaterNum).GapVentType = 3; } else { ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Illegal gap vent type."); - ShowContinueError(state, "Gap vent type allowed are Sealed, VentedIndoor, or VentedOutdoor." + cAlphaFieldNames(3) + - " entered =" + MaterialNames(3)); + ShowContinueError(state, + "Gap vent type allowed are Sealed, VentedIndoor, or VentedOutdoor." + cAlphaFieldNames(3) + + " entered =" + MaterialNames(3)); state.dataMaterial->Material(MaterNum).GapVentType = 1; // ErrorsFound=.TRUE. } @@ -2620,7 +2679,8 @@ namespace HeatBalanceManager { // Nominal resistance of gap at room temperature if (!ErrorsFound) { - DenomRGas = (state.dataMaterial->Material(MaterNum).GasCon(1, 1) + state.dataMaterial->Material(MaterNum).GasCon(2, 1) * 300.0 + state.dataMaterial->Material(MaterNum).GasCon(3, 1) * 90000.0); + DenomRGas = (state.dataMaterial->Material(MaterNum).GasCon(1, 1) + state.dataMaterial->Material(MaterNum).GasCon(2, 1) * 300.0 + + state.dataMaterial->Material(MaterNum).GasCon(3, 1) * 90000.0); if (DenomRGas > 0.0) { NominalR(MaterNum) = state.dataMaterial->Material(MaterNum).Thickness / DenomRGas; } else { @@ -2650,7 +2710,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, UniqueMaterialNames, cAlphaArgs(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, cAlphaArgs(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -2673,7 +2734,8 @@ namespace HeatBalanceManager { if (state.dataMaterial->Material(MaterNum).GasType(NumGas) == -1) { ErrorsFound = true; ShowSevereError(state, CurrentModuleObject + "=\"" + cAlphaArgs(1) + "\", Illegal value."); - ShowContinueError(state, cAlphaFieldNames(2 + NumGas) + " entered value=\"" + TypeOfGas + "\" should be Air, Argon, Krypton, or Xenon."); + ShowContinueError(state, + cAlphaFieldNames(2 + NumGas) + " entered value=\"" + TypeOfGas + "\" should be Air, Argon, Krypton, or Xenon."); } } @@ -2701,8 +2763,9 @@ namespace HeatBalanceManager { } // Nominal resistance of gap at room temperature (based on first gas in mixture) - NominalR(MaterNum) = state.dataMaterial->Material(MaterNum).Thickness / (state.dataMaterial->Material(MaterNum).GasCon(1, 1) + state.dataMaterial->Material(MaterNum).GasCon(2, 1) * 300.0 + - state.dataMaterial->Material(MaterNum).GasCon(3, 1) * 90000.0); + NominalR(MaterNum) = state.dataMaterial->Material(MaterNum).Thickness / + (state.dataMaterial->Material(MaterNum).GasCon(1, 1) + state.dataMaterial->Material(MaterNum).GasCon(2, 1) * 300.0 + + state.dataMaterial->Material(MaterNum).GasCon(3, 1) * 90000.0); } // Window Shade Materials @@ -2723,8 +2786,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -2745,7 +2808,8 @@ namespace HeatBalanceManager { state.dataMaterial->Material(MaterNum).TransThermal = MaterialProps(6); state.dataMaterial->Material(MaterNum).Thickness = MaterialProps(7); state.dataMaterial->Material(MaterNum).Conductivity = MaterialProps(8); - state.dataMaterial->Material(MaterNum).AbsorpSolar = max(0.0, 1.0 - state.dataMaterial->Material(MaterNum).Trans - state.dataMaterial->Material(MaterNum).ReflectShade); + state.dataMaterial->Material(MaterNum).AbsorpSolar = + max(0.0, 1.0 - state.dataMaterial->Material(MaterNum).Trans - state.dataMaterial->Material(MaterNum).ReflectShade); state.dataMaterial->Material(MaterNum).AbsorpSolarInput = state.dataMaterial->Material(MaterNum).AbsorpSolar; state.dataMaterial->Material(MaterNum).WinShadeToGlassDist = MaterialProps(9); state.dataMaterial->Material(MaterNum).WinShadeTopOpeningMult = MaterialProps(10); @@ -2800,8 +2864,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -2879,8 +2943,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -2957,8 +3021,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -2974,8 +3038,8 @@ namespace HeatBalanceManager { UtilityRoutines::SameString(MaterialNames(2), "ModelAsDiffuse"))) { ErrorsFound = true; ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Illegal value."); - ShowContinueError(state, cAlphaFieldNames(2) + "=\"" + MaterialNames(2) + - "\", must be one of DoNotModel, ModelAsDirectBeam or ModelAsDiffuse."); + ShowContinueError( + state, cAlphaFieldNames(2) + "=\"" + MaterialNames(2) + "\", must be one of DoNotModel, ModelAsDirectBeam or ModelAsDiffuse."); } state.dataMaterial->Material(MaterNum).Roughness = MediumRough; state.dataMaterial->Material(MaterNum).ReflectShade = MaterialProps(1); @@ -2988,7 +3052,8 @@ namespace HeatBalanceManager { if (state.dataMaterial->Material(MaterNum).ReflectShadeVis < 0.0 || state.dataMaterial->Material(MaterNum).ReflectShadeVis > 1.0) { ErrorsFound = true; ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Illegal value."); - ShowContinueError(state, cNumericFieldNames(2) + " must be >= 0 and <= 1 for material " + state.dataMaterial->Material(MaterNum).Name + '.'); + ShowContinueError(state, + cNumericFieldNames(2) + " must be >= 0 and <= 1 for material " + state.dataMaterial->Material(MaterNum).Name + '.'); } state.dataMaterial->Material(MaterNum).AbsorpThermal = MaterialProps(3); state.dataMaterial->Material(MaterNum).AbsorpThermalInput = MaterialProps(3); @@ -3001,7 +3066,8 @@ namespace HeatBalanceManager { state.dataMaterial->Material(MaterNum).Thickness = MaterialProps(6); // thickness = diameter if (MaterialProps(5) > 0.0) { - // SurfaceScreens(ScNum)%ScreenDiameterToSpacingRatio = MaterialProps(6)/MaterialProps(5) or 1-SQRT(dataMaterial.Material(MaterNum)%Trans + // SurfaceScreens(ScNum)%ScreenDiameterToSpacingRatio = MaterialProps(6)/MaterialProps(5) or + // 1-SQRT(dataMaterial.Material(MaterNum)%Trans if (MaterialProps(6) / MaterialProps(5) >= 1.0) { ErrorsFound = true; ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Illegal value combination."); @@ -3028,31 +3094,36 @@ namespace HeatBalanceManager { state.dataMaterial->Material(MaterNum).ReflectShadeVis *= (1.0 - state.dataMaterial->Material(MaterNum).Trans); state.dataMaterial->Material(MaterNum).WinShadeToGlassDist = MaterialProps(7); - if (state.dataMaterial->Material(MaterNum).WinShadeToGlassDist < 0.001 || state.dataMaterial->Material(MaterNum).WinShadeToGlassDist > 1.0) { + if (state.dataMaterial->Material(MaterNum).WinShadeToGlassDist < 0.001 || + state.dataMaterial->Material(MaterNum).WinShadeToGlassDist > 1.0) { ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Illegal value."); ShowContinueError(state, cNumericFieldNames(7) + " must be greater than or equal to 0.001 and less than or equal to 1."); } state.dataMaterial->Material(MaterNum).WinShadeTopOpeningMult = MaterialProps(8); - if (state.dataMaterial->Material(MaterNum).WinShadeTopOpeningMult < 0.0 || state.dataMaterial->Material(MaterNum).WinShadeTopOpeningMult > 1.0) { + if (state.dataMaterial->Material(MaterNum).WinShadeTopOpeningMult < 0.0 || + state.dataMaterial->Material(MaterNum).WinShadeTopOpeningMult > 1.0) { ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Illegal value."); ShowContinueError(state, cNumericFieldNames(8) + " must be greater than or equal to 0 and less than or equal to 1."); } state.dataMaterial->Material(MaterNum).WinShadeBottomOpeningMult = MaterialProps(9); - if (state.dataMaterial->Material(MaterNum).WinShadeBottomOpeningMult < 0.0 || state.dataMaterial->Material(MaterNum).WinShadeBottomOpeningMult > 1.0) { + if (state.dataMaterial->Material(MaterNum).WinShadeBottomOpeningMult < 0.0 || + state.dataMaterial->Material(MaterNum).WinShadeBottomOpeningMult > 1.0) { ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Illegal value."); ShowContinueError(state, cNumericFieldNames(9) + " must be greater than or equal to 0 and less than or equal to 1."); } state.dataMaterial->Material(MaterNum).WinShadeLeftOpeningMult = MaterialProps(10); - if (state.dataMaterial->Material(MaterNum).WinShadeLeftOpeningMult < 0.0 || state.dataMaterial->Material(MaterNum).WinShadeLeftOpeningMult > 1.0) { + if (state.dataMaterial->Material(MaterNum).WinShadeLeftOpeningMult < 0.0 || + state.dataMaterial->Material(MaterNum).WinShadeLeftOpeningMult > 1.0) { ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Illegal value."); ShowContinueError(state, cNumericFieldNames(10) + " must be greater than or equal to 0 and less than or equal to 1."); } state.dataMaterial->Material(MaterNum).WinShadeRightOpeningMult = MaterialProps(11); - if (state.dataMaterial->Material(MaterNum).WinShadeRightOpeningMult < 0.0 || state.dataMaterial->Material(MaterNum).WinShadeRightOpeningMult > 1.0) { + if (state.dataMaterial->Material(MaterNum).WinShadeRightOpeningMult < 0.0 || + state.dataMaterial->Material(MaterNum).WinShadeRightOpeningMult > 1.0) { ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Illegal value."); ShowContinueError(state, cNumericFieldNames(11) + " must be greater than or equal to 0 and less than or equal to 1."); } @@ -3073,20 +3144,24 @@ namespace HeatBalanceManager { state.dataMaterial->Material(MaterNum).ROnly = true; // Calculate absorptance accounting for the open area in the screen assembly (used only in CreateShadedWindowConstruction) - state.dataMaterial->Material(MaterNum).AbsorpSolar = max(0.0, 1.0 - state.dataMaterial->Material(MaterNum).Trans - state.dataMaterial->Material(MaterNum).ReflectShade); + state.dataMaterial->Material(MaterNum).AbsorpSolar = + max(0.0, 1.0 - state.dataMaterial->Material(MaterNum).Trans - state.dataMaterial->Material(MaterNum).ReflectShade); state.dataMaterial->Material(MaterNum).AbsorpSolarInput = state.dataMaterial->Material(MaterNum).AbsorpSolar; - state.dataMaterial->Material(MaterNum).AbsorpVisible = max(0.0, 1.0 - state.dataMaterial->Material(MaterNum).TransVis - state.dataMaterial->Material(MaterNum).ReflectShadeVis); + state.dataMaterial->Material(MaterNum).AbsorpVisible = + max(0.0, 1.0 - state.dataMaterial->Material(MaterNum).TransVis - state.dataMaterial->Material(MaterNum).ReflectShadeVis); state.dataMaterial->Material(MaterNum).AbsorpVisibleInput = state.dataMaterial->Material(MaterNum).AbsorpVisible; state.dataMaterial->Material(MaterNum).AbsorpThermal *= (1.0 - state.dataMaterial->Material(MaterNum).Trans); state.dataMaterial->Material(MaterNum).AbsorpThermalInput = state.dataMaterial->Material(MaterNum).AbsorpThermal; if (state.dataMaterial->Material(MaterNum).Conductivity > 0.0) { - NominalR(MaterNum) = (1.0 - state.dataMaterial->Material(MaterNum).Trans) * state.dataMaterial->Material(MaterNum).Thickness / state.dataMaterial->Material(MaterNum).Conductivity; + NominalR(MaterNum) = (1.0 - state.dataMaterial->Material(MaterNum).Trans) * state.dataMaterial->Material(MaterNum).Thickness / + state.dataMaterial->Material(MaterNum).Conductivity; } else { NominalR(MaterNum) = 1.0; - ShowWarningError(state, + ShowWarningError( + state, "Conductivity for material=\"" + state.dataMaterial->Material(MaterNum).Name + - "\" must be greater than 0 for calculating Nominal R-value, Nominal R is defaulted to 1 and the simulation continues."); + "\" must be greater than 0 for calculating Nominal R-value, Nominal R is defaulted to 1 and the simulation continues."); } if (state.dataMaterial->Material(MaterNum).Trans + state.dataMaterial->Material(MaterNum).ReflectShade >= 1.0) { @@ -3128,8 +3203,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -3169,7 +3244,8 @@ namespace HeatBalanceManager { if (MaterialProps(6) < 0.0 || MaterialProps(6) > 1.0) { ErrorsFound = true; ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Illegal value."); - ShowContinueError(state, cNumericFieldNames(6) + " must be >= 0 and <= 1 for material " + state.dataMaterial->Material(MaterNum).Name + '.'); + ShowContinueError(state, + cNumericFieldNames(6) + " must be >= 0 and <= 1 for material " + state.dataMaterial->Material(MaterNum).Name + '.'); } if (!lNumericFieldBlanks(9)) { @@ -3201,7 +3277,8 @@ namespace HeatBalanceManager { ShowContinueError(state, cNumericFieldNames(10) + " must be less than " + cNumericFieldNames(9)); } else { // Calculate direct normal transmittance (open area fraction) - Openness = pow_2(1.0 - state.dataMaterial->Material(MaterNum).ScreenWireDiameter / state.dataMaterial->Material(MaterNum).ScreenWireSpacing); + Openness = pow_2(1.0 - state.dataMaterial->Material(MaterNum).ScreenWireDiameter / + state.dataMaterial->Material(MaterNum).ScreenWireSpacing); if ((state.dataMaterial->Material(MaterNum).TausFrontBeamBeam - Openness) / Openness > 0.01) { ShowSevereError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", screen openness specified."); ShowContinueError(state, cNumericFieldNames(1) + " is > 1.0% of the value calculated from input fields:"); @@ -3210,10 +3287,12 @@ namespace HeatBalanceManager { ShowContinueError(state, " ...the screen diameter is recalculated from the material openness specified "); ShowContinueError(state, " ...and wire spacing using the formula = wire spacing * (1.0 - SQRT(Opennes))"); state.dataMaterial->Material(MaterNum).ScreenWireDiameter = - state.dataMaterial->Material(MaterNum).ScreenWireSpacing * (1.0 - std::sqrt(state.dataMaterial->Material(MaterNum).TausFrontBeamBeam)); - ShowContinueError( - state, - format(" ...Recalculated {}={:.4R} m", cNumericFieldNames(10), state.dataMaterial->Material(MaterNum).ScreenWireDiameter)); + state.dataMaterial->Material(MaterNum).ScreenWireSpacing * + (1.0 - std::sqrt(state.dataMaterial->Material(MaterNum).TausFrontBeamBeam)); + ShowContinueError(state, + format(" ...Recalculated {}={:.4R} m", + cNumericFieldNames(10), + state.dataMaterial->Material(MaterNum).ScreenWireDiameter)); } } } @@ -3261,8 +3340,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -3441,7 +3520,8 @@ namespace HeatBalanceManager { // Minimum and maximum slat angles allowed by slat geometry if (Blind(Loop).SlatWidth > Blind(Loop).SlatSeparation) { - MinSlatAngGeom = std::asin(Blind(Loop).SlatThickness / (Blind(Loop).SlatThickness + Blind(Loop).SlatSeparation)) / DataGlobalConstants::DegToRadians; + MinSlatAngGeom = std::asin(Blind(Loop).SlatThickness / (Blind(Loop).SlatThickness + Blind(Loop).SlatSeparation)) / + DataGlobalConstants::DegToRadians; } else { MinSlatAngGeom = 0.0; } @@ -3528,8 +3608,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -3614,11 +3694,13 @@ namespace HeatBalanceManager { if (state.dataMaterial->Material(MaterNum).SlatSeparation < 0.001) { ShowWarningError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Slat Seperation"); ShowContinueError( - state, format("{} [{:.2R}]. Slate spacing must be > 0.0", cNumericFieldNames(2), state.dataMaterial->Material(MaterNum).SlatSeparation)); + state, + format("{} [{:.2R}]. Slate spacing must be > 0.0", cNumericFieldNames(2), state.dataMaterial->Material(MaterNum).SlatSeparation)); ShowContinueError(state, "...Setting slate spacing to default value of 0.025 m and simulation continues."); state.dataMaterial->Material(MaterNum).SlatSeparation = 0.025; } - if (state.dataMaterial->Material(MaterNum).SlatWidth < 0.001 || state.dataMaterial->Material(MaterNum).SlatWidth >= 2.0 * state.dataMaterial->Material(MaterNum).SlatSeparation) { + if (state.dataMaterial->Material(MaterNum).SlatWidth < 0.001 || + state.dataMaterial->Material(MaterNum).SlatWidth >= 2.0 * state.dataMaterial->Material(MaterNum).SlatSeparation) { ShowWarningError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Slat Width"); ShowContinueError(state, format("{} [{:.2R}]. Slat width range is 0 < Width <= 2*Spacing", @@ -3627,7 +3709,8 @@ namespace HeatBalanceManager { ShowContinueError(state, "...Setting slate width equal to slate spacing and simulation continues."); state.dataMaterial->Material(MaterNum).SlatWidth = state.dataMaterial->Material(MaterNum).SlatSeparation; } - if (state.dataMaterial->Material(MaterNum).SlatCrown < 0.0 || state.dataMaterial->Material(MaterNum).SlatCrown >= 0.5 * state.dataMaterial->Material(MaterNum).SlatWidth) { + if (state.dataMaterial->Material(MaterNum).SlatCrown < 0.0 || + state.dataMaterial->Material(MaterNum).SlatCrown >= 0.5 * state.dataMaterial->Material(MaterNum).SlatWidth) { ShowWarningError(state, CurrentModuleObject + "=\"" + MaterialNames(1) + "\", Slat Crown"); ShowContinueError(state, format("{} [{:.2R}]. Slat crwon range is 0 <= crown < 0.5*Width", @@ -3693,8 +3776,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, MaterialNames(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -3850,7 +3933,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, UniqueMaterialNames, cAlphaArgs(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, cAlphaArgs(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -3894,7 +3978,10 @@ namespace HeatBalanceManager { { auto const SELECT_CASE_var(state.dataMaterial->Material(MaterNum).Group); if (SELECT_CASE_var == Air) { - print(state.files.eio, Format_702, state.dataMaterial->Material(MaterNum).Name, state.dataMaterial->Material(MaterNum).Resistance); + print(state.files.eio, + Format_702, + state.dataMaterial->Material(MaterNum).Name, + state.dataMaterial->Material(MaterNum).Resistance); } else { print(state.files.eio, Format_701, @@ -3919,19 +4006,22 @@ namespace HeatBalanceManager { for (MaterNum = 1; MaterNum <= TotMaterials; ++MaterNum) { if (state.dataMaterial->Material(MaterNum).Group != RegularMaterial) continue; - SetupEMSActuator(state, "Material", + SetupEMSActuator(state, + "Material", state.dataMaterial->Material(MaterNum).Name, "Surface Property Solar Absorptance", "[ ]", state.dataMaterial->Material(MaterNum).AbsorpSolarEMSOverrideOn, state.dataMaterial->Material(MaterNum).AbsorpSolarEMSOverride); - SetupEMSActuator(state, "Material", + SetupEMSActuator(state, + "Material", state.dataMaterial->Material(MaterNum).Name, "Surface Property Thermal Absorptance", "[ ]", state.dataMaterial->Material(MaterNum).AbsorpThermalEMSOverrideOn, state.dataMaterial->Material(MaterNum).AbsorpThermalEMSOverride); - SetupEMSActuator(state, "Material", + SetupEMSActuator(state, + "Material", state.dataMaterial->Material(MaterNum).Name, "Surface Property Visible Absorptance", "[ ]", @@ -4196,20 +4286,20 @@ namespace HeatBalanceManager { // If UniqueConstructionNames size, then input has already been gotten if (UniqueConstructNames.size()) return; - int ConstrNum; // Counter to keep track of the construction number - int Layer; // loop index for each of the construction layers - int ConstructNumAlpha; // Number of construction alpha names being passed - int DummyNumProp; // dummy variable for properties being passed - int IOStat; // IO Status when calling get input subroutine + int ConstrNum; // Counter to keep track of the construction number + int Layer; // loop index for each of the construction layers + int ConstructNumAlpha; // Number of construction alpha names being passed + int DummyNumProp; // dummy variable for properties being passed + int IOStat; // IO Status when calling get input subroutine Array1D_string ConstructAlphas({0, Construction::MaxLayersInConstruct}); // Construction Alpha names defined - Array1D DummyProps(5); // Temporary array to transfer construction properties + Array1D DummyProps(5); // Temporary array to transfer construction properties int Loop; int TotRegConstructs; // Number of "regular" constructions (no embedded sources or sinks and int TotFfactorConstructs; // Number of slabs-on-grade or underground floor constructions defined with F factors int TotCfactorConstructs; // Number of underground wall constructions defined with C factors - int TotSourceConstructs; // Number of constructions with embedded sources or sinks + // int TotSourceConstructs; // Number of constructions with embedded sources or sinks int TotWindow5Constructs; // Number of constructions from Window5 data file bool ConstructionFound; // True if input window construction name is found in the // Window5 data file @@ -4223,7 +4313,6 @@ namespace HeatBalanceManager { // Get the Total number of Constructions from the input TotRegConstructs = inputProcessor->getNumObjectsFound(state, "Construction"); - TotSourceConstructs = inputProcessor->getNumObjectsFound(state, "Construction:InternalSource"); int totAirBoundaryConstructs = inputProcessor->getNumObjectsFound(state, "Construction:AirBoundary"); TotFfactorConstructs = inputProcessor->getNumObjectsFound(state, "Construction:FfactorGroundFloor"); @@ -4243,7 +4332,7 @@ namespace HeatBalanceManager { WConstructNames.allocate(TotWindow5Constructs); - TotConstructs = TotRegConstructs + TotFfactorConstructs + TotCfactorConstructs + TotSourceConstructs + totAirBoundaryConstructs + + TotConstructs = TotRegConstructs + TotFfactorConstructs + TotCfactorConstructs + totAirBoundaryConstructs + state.dataBSDFWindow->TotComplexFenStates + TotWinEquivLayerConstructs; NominalRforNominalUCalculation.dimension(TotConstructs, 0.0); @@ -4288,8 +4377,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueConstructNames, ConstructAlphas(0), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueConstructNames, ConstructAlphas(0), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { continue; } @@ -4309,31 +4398,39 @@ namespace HeatBalanceManager { // Find the material in the list of materials - state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) = UtilityRoutines::FindItemInList(ConstructAlphas(Layer), state.dataMaterial->Material); + state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) = + UtilityRoutines::FindItemInList(ConstructAlphas(Layer), state.dataMaterial->Material); // count number of glass layers if (state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) > 0) { - if (state.dataMaterial->Material(state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer)).Group == WindowGlass) ++iMatGlass; + if (state.dataMaterial->Material(state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer)).Group == WindowGlass) + ++iMatGlass; MaterialLayerGroup = state.dataMaterial->Material(state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer)).Group; if ((MaterialLayerGroup == GlassEquivalentLayer) || (MaterialLayerGroup == ShadeEquivalentLayer) || (MaterialLayerGroup == DrapeEquivalentLayer) || (MaterialLayerGroup == BlindEquivalentLayer) || (MaterialLayerGroup == ScreenEquivalentLayer) || (MaterialLayerGroup == GapEquivalentLayer)) { - ShowSevereError(state, "Invalid material layer type in window " + CurrentModuleObject + " = " + state.dataConstruction->Construct(ConstrNum).Name); - ShowSevereError(state, "Equivalent Layer material type = " + ConstructAlphas(Layer) + - " is allowed only in Construction:WindowEquivalentLayer window object."); + ShowSevereError(state, + "Invalid material layer type in window " + CurrentModuleObject + " = " + + state.dataConstruction->Construct(ConstrNum).Name); + ShowSevereError(state, + "Equivalent Layer material type = " + ConstructAlphas(Layer) + + " is allowed only in Construction:WindowEquivalentLayer window object."); ErrorsFound = true; } } if (state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) == 0) { // This may be a TC GlazingGroup - state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) = UtilityRoutines::FindItemInList(ConstructAlphas(Layer), TCGlazings); + state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) = + UtilityRoutines::FindItemInList(ConstructAlphas(Layer), TCGlazings); if (state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) > 0) { // reset layer pointer to the first glazing in the TC GlazingGroup - state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) = TCGlazings(state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer)).LayerPoint(1); + state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) = + TCGlazings(state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer)).LayerPoint(1); state.dataConstruction->Construct(ConstrNum).TCLayer = state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer); - if (state.dataMaterial->Material(state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer)).Group == WindowGlass) ++iMatGlass; + if (state.dataMaterial->Material(state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer)).Group == WindowGlass) + ++iMatGlass; state.dataConstruction->Construct(ConstrNum).TCFlag = 1; state.dataConstruction->Construct(ConstrNum).TCMasterConst = ConstrNum; state.dataConstruction->Construct(ConstrNum).TCGlassID = iMatGlass; // the TC glass layer ID @@ -4343,8 +4440,9 @@ namespace HeatBalanceManager { } if (state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) == 0) { - ShowSevereError(state, "Did not find matching material for " + CurrentModuleObject + ' ' + state.dataConstruction->Construct(ConstrNum).Name + - ", missing material = " + ConstructAlphas(Layer)); + ShowSevereError(state, + "Did not find matching material for " + CurrentModuleObject + ' ' + + state.dataConstruction->Construct(ConstrNum).Name + ", missing material = " + ConstructAlphas(Layer)); ErrorsFound = true; } else { NominalRforNominalUCalculation(ConstrNum) += NominalR(state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer)); @@ -4386,102 +4484,73 @@ namespace HeatBalanceManager { TotRegConstructs += state.dataBSDFWindow->TotComplexFenStates; } - ConstrNum = 0; - - CurrentModuleObject = "Construction:InternalSource"; - if (TotSourceConstructs > 0) AnyConstructInternalSourceInInput = true; - for (Loop = 1; Loop <= TotSourceConstructs; ++Loop) { // Loop through all constructs with sources in the input... - - // Get the object names for each construction from the input processor - inputProcessor->getObjectItem(state, - CurrentModuleObject, - Loop, - ConstructAlphas, - ConstructNumAlpha, - DummyProps, - DummyNumProp, - IOStat, - lNumericFieldBlanks, - lAlphaFieldBlanks, - cAlphaFieldNames, - cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueConstructNames, ConstructAlphas(0), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { - continue; - } - - ++ConstrNum; - auto &thisConstruct (state.dataConstruction->Construct(TotRegConstructs + ConstrNum)); + CurrentModuleObject = "ConstructionProperty:InternalHeatSource"; - // Assign Construction name to the Derived Type using the zeroth position of the array - thisConstruct.Name = ConstructAlphas(0); + auto instances = inputProcessor->epJSON.find(CurrentModuleObject); + if (instances != inputProcessor->epJSON.end()) { + AnyInternalHeatSourceInInput = true; + auto &instancesValue = instances.value(); + for (auto instance = instancesValue.begin(); instance != instancesValue.end(); ++instance) { + auto const &fields = instance.value(); + auto const &thisObjectName = UtilityRoutines::MakeUPPERCase(instance.key()); - // Obtain the source/sink data - if (DummyNumProp != 5) { - ShowSevereError(state, CurrentModuleObject + ": Wrong number of numerical inputs for " + state.dataConstruction->Construct(ConstrNum).Name); - ErrorsFound = true; - } - thisConstruct.SourceSinkPresent = true; - thisConstruct.SourceAfterLayer = int(DummyProps(1)); - thisConstruct.TempAfterLayer = int(DummyProps(2)); - thisConstruct.SolutionDimensions = int(DummyProps(3)); - if ((thisConstruct.SolutionDimensions < 1) || - (thisConstruct.SolutionDimensions > 2)) { - ShowWarningError(state, "Construction:InternalSource must be either 1- or 2-D. Reset to 1-D solution."); - ShowContinueError(state, "Construction=" + thisConstruct.Name + " is affected."); - thisConstruct.SolutionDimensions = 1; - } - thisConstruct.ThicknessPerpend = DummyProps(4) / 2.0; - thisConstruct.userTemperatureLocationPerpendicular = thisConstruct.setUserTemperatureLocationPerpendicular(state, DummyProps(5)); + std::string construction_name{UtilityRoutines::MakeUPPERCase(fields.at("construction_name"))}; + int source_after_layer_number{fields.at("thermal_source_present_after_layer_number")}; + int calculation_after_layer_number{fields.at("temperature_calculation_requested_after_layer_number")}; + int ctf_dimensions{fields.at("dimensions_for_the_ctf_calculation")}; + if ((ctf_dimensions < 1) || (ctf_dimensions > 2)) { + ShowWarningError(state, "ConstructionProperty:InternalHeatSource must be either 1- or 2-D. Reset to 1-D solution."); + ShowContinueError(state, "Construction=" + construction_name + " is affected."); + ctf_dimensions = 1; + } + Real64 tube_spacing{fields.at("tube_spacing")}; + Real64 calculation_position{fields.at("two_dimensional_temperature_calculation_position")}; - // Set the total number of layers for the construction - thisConstruct.TotLayers = ConstructNumAlpha - 1; - if (thisConstruct.TotLayers <= 1) { - ShowSevereError(state, "Construction " + thisConstruct.Name + - " has an internal source or sink and thus must have more than a single layer"); - ErrorsFound = true; - } - if ((thisConstruct.SourceAfterLayer >= thisConstruct.TotLayers) || - (thisConstruct.SourceAfterLayer <= 0)) { - ShowWarningError(state, "Construction " + thisConstruct.Name + " must have a source that is between two layers"); - ShowContinueError(state, "The source after layer parameter has been set to one less than the number of layers."); - thisConstruct.SourceAfterLayer = thisConstruct.TotLayers - 1; - } - if ((thisConstruct.TempAfterLayer >= thisConstruct.TotLayers) || - (thisConstruct.TempAfterLayer <= 0)) { - ShowWarningError(state, "Construction " + thisConstruct.Name + - " must have a temperature calculation that is between two layers"); - ShowContinueError(state, "The temperature calculation after layer parameter has been set to one less than the number of layers."); - thisConstruct.TempAfterLayer = thisConstruct.TotLayers - 1; - } + // Find the construction + int construction_index = UtilityRoutines::FindItemInList(construction_name, state.dataConstruction->Construct); - // Loop through all of the layers of the construct to match the material names. - // The loop index is the number minus 1 - for (Layer = 1; Layer <= ConstructNumAlpha - 1; ++Layer) { + if (construction_index == 0) { + ShowSevereError(state, + "Did not find matching construction for " + CurrentModuleObject + ' ' + thisObjectName + + ", missing construction = " + construction_name); + ErrorsFound = true; + continue; + } - // Find the material in the list of materials + inputProcessor->markObjectAsUsed(CurrentModuleObject, instance.key()); - thisConstruct.LayerPoint(Layer) = UtilityRoutines::FindItemInList(ConstructAlphas(Layer), state.dataMaterial->Material); + auto &thisConstruct(state.dataConstruction->Construct(construction_index)); - if (thisConstruct.LayerPoint(Layer) == 0) { - ShowSevereError(state, "Did not find matching material for " + CurrentModuleObject + ' ' + state.dataConstruction->Construct(ConstrNum).Name + - ", missing material = " + ConstructAlphas(Layer)); + // May need some additional validation of the construction here + if (thisConstruct.SourceSinkPresent) { + // Emulate old behavior by disallowing two sources in a single material + ShowSevereError(state, "Construction " + construction_name + " has more than one internal heat source referencing it, which is not allowed"); ErrorsFound = true; - } else { - NominalRforNominalUCalculation(TotRegConstructs + ConstrNum) += - NominalR(thisConstruct.LayerPoint(Layer)); - if (state.dataMaterial->Material(thisConstruct.LayerPoint(Layer)).Group == RegularMaterial && - !state.dataMaterial->Material(thisConstruct.LayerPoint(Layer)).ROnly) { - NoRegularMaterialsUsed = false; - } + continue; } - } // ...end of the Layer DO loop + thisConstruct.SourceSinkPresent = true; + thisConstruct.SourceAfterLayer = source_after_layer_number; + thisConstruct.TempAfterLayer = calculation_after_layer_number; + thisConstruct.SolutionDimensions = ctf_dimensions; + thisConstruct.ThicknessPerpend = tube_spacing / 2.0; + thisConstruct.userTemperatureLocationPerpendicular = + thisConstruct.setUserTemperatureLocationPerpendicular(state, calculation_position); - } // ...end of Source Construction DO loop + // Set the total number of layers for the construction + if ((thisConstruct.SourceAfterLayer >= thisConstruct.TotLayers) || (thisConstruct.SourceAfterLayer <= 0)) { + ShowWarningError(state, "Construction " + thisConstruct.Name + " must have a source that is between two layers"); + ShowContinueError(state, "The source after layer parameter has been set to one less than the number of layers."); + thisConstruct.SourceAfterLayer = thisConstruct.TotLayers - 1; + } + if ((thisConstruct.TempAfterLayer >= thisConstruct.TotLayers) || (thisConstruct.TempAfterLayer <= 0)) { + ShowWarningError(state, "Construction " + thisConstruct.Name + " must have a temperature calculation that is between two layers"); + ShowContinueError(state, "The temperature calculation after layer parameter has been set to one less than the number of layers."); + thisConstruct.TempAfterLayer = thisConstruct.TotLayers - 1; + } + } + } - TotSourceConstructs = ConstrNum; - TotRegConstructs += TotSourceConstructs; TotConstructs = TotRegConstructs; if (TotConstructs > 0 && (NoRegularMaterialsUsed && NoCfactorConstructionsUsed && NoFfactorConstructionsUsed)) { @@ -4506,8 +4575,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueConstructNames, ConstructAlphas(0), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueConstructNames, ConstructAlphas(0), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { continue; } @@ -4518,7 +4587,9 @@ namespace HeatBalanceManager { // Set the total number of layers for the construction state.dataConstruction->Construct(TotRegConstructs + ConstrNum).TotLayers = ConstructNumAlpha - 1; if (state.dataConstruction->Construct(TotRegConstructs + ConstrNum).TotLayers < 1) { - ShowSevereError(state, "Construction " + state.dataConstruction->Construct(TotRegConstructs + ConstrNum).Name + " must have at least a single layer"); + ShowSevereError(state, + "Construction " + state.dataConstruction->Construct(TotRegConstructs + ConstrNum).Name + + " must have at least a single layer"); ErrorsFound = true; } @@ -4527,21 +4598,26 @@ namespace HeatBalanceManager { for (Layer = 1; Layer <= ConstructNumAlpha - 1; ++Layer) { // Find the material in the list of materials - state.dataConstruction->Construct(TotRegConstructs + ConstrNum).LayerPoint(Layer) = UtilityRoutines::FindItemInList(ConstructAlphas(Layer), state.dataMaterial->Material); + state.dataConstruction->Construct(TotRegConstructs + ConstrNum).LayerPoint(Layer) = + UtilityRoutines::FindItemInList(ConstructAlphas(Layer), state.dataMaterial->Material); if (state.dataConstruction->Construct(TotRegConstructs + ConstrNum).LayerPoint(Layer) == 0) { - ShowSevereError(state, "Did not find matching material for " + CurrentModuleObject + ' ' + state.dataConstruction->Construct(ConstrNum).Name + - ", missing material = " + ConstructAlphas(Layer)); + ShowSevereError(state, + "Did not find matching material for " + CurrentModuleObject + ' ' + + state.dataConstruction->Construct(ConstrNum).Name + ", missing material = " + ConstructAlphas(Layer)); ErrorsFound = true; } else { - MaterialLayerGroup = state.dataMaterial->Material(state.dataConstruction->Construct(TotRegConstructs + ConstrNum).LayerPoint(Layer)).Group; + MaterialLayerGroup = + state.dataMaterial->Material(state.dataConstruction->Construct(TotRegConstructs + ConstrNum).LayerPoint(Layer)).Group; if (!((MaterialLayerGroup == GlassEquivalentLayer) || (MaterialLayerGroup == ShadeEquivalentLayer) || (MaterialLayerGroup == DrapeEquivalentLayer) || (MaterialLayerGroup == BlindEquivalentLayer) || (MaterialLayerGroup == ScreenEquivalentLayer) || (MaterialLayerGroup == GapEquivalentLayer))) { - ShowSevereError(state, "Invalid material layer type in window " + CurrentModuleObject + " = " + - state.dataConstruction->Construct(TotRegConstructs + ConstrNum).Name); - ShowContinueError(state, "...Window layer = " + ConstructAlphas(Layer) + - " is not allowed in Construction:WindowEquivalentLayer window object."); + ShowSevereError(state, + "Invalid material layer type in window " + CurrentModuleObject + " = " + + state.dataConstruction->Construct(TotRegConstructs + ConstrNum).Name); + ShowContinueError(state, + "...Window layer = " + ConstructAlphas(Layer) + + " is not allowed in Construction:WindowEquivalentLayer window object."); ShowContinueError(state, "Only materials of type Material:*:EquivalentLayer are allowed"); ErrorsFound = true; } @@ -4680,7 +4756,7 @@ namespace HeatBalanceManager { // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - GetZoneData(state,ErrorsFound); // Read Zone data from input file + GetZoneData(state, ErrorsFound); // Read Zone data from input file SetupZoneGeometry(state, ErrorsFound); } @@ -4839,16 +4915,18 @@ namespace HeatBalanceManager { ZoneList(ListNum).MaxZoneNameLength = max(ZoneList(ListNum).MaxZoneNameLength, len(ZoneName)); ZoneList(ListNum).Zone(ZoneNum) = UtilityRoutines::FindItemInList(ZoneName, Zone); if (ZoneList(ListNum).Zone(ZoneNum) == 0) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\": " + cAlphaFieldNames(ZoneNum + 1) + - ' ' + ZoneName + " not found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\": " + cAlphaFieldNames(ZoneNum + 1) + + ' ' + ZoneName + " not found."); ErrorsFound = true; } // Check for duplicate zones for (Loop = 1; Loop <= ZoneNum - 1; ++Loop) { if (ZoneList(ListNum).Zone(ZoneNum) == ZoneList(ListNum).Zone(Loop)) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\": " + cAlphaFieldNames(ZoneNum + 1) + - ' ' + ZoneName + " appears more than once in list."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\": " + cAlphaFieldNames(ZoneNum + 1) + + ' ' + ZoneName + " appears more than once in list."); ErrorsFound = true; } } // Loop @@ -4890,15 +4968,17 @@ namespace HeatBalanceManager { ZoneGroup(GroupNum).ZoneList = ListNum; if (ListNum == 0) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\": " + cAlphaFieldNames(2) + " named " + - cAlphaArgs(2) + " not found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\": " + cAlphaFieldNames(2) + " named " + + cAlphaArgs(2) + " not found."); ErrorsFound = true; } else { // Check to make sure list is not in use by another ZONE GROUP for (Loop = 1; Loop <= GroupNum - 1; ++Loop) { if (ZoneGroup(GroupNum).ZoneList == ZoneGroup(Loop).ZoneList) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\": " + cAlphaFieldNames(2) + - " already used by " + cCurrentModuleObject + " named " + ZoneGroup(Loop).Name + '.'); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\": " + cAlphaFieldNames(2) + + " already used by " + cCurrentModuleObject + " named " + ZoneGroup(Loop).Name + '.'); ErrorsFound = true; } } // Loop @@ -4913,8 +4993,9 @@ namespace HeatBalanceManager { Zone(ZoneNum).ListMultiplier = ZoneGroup(GroupNum).Multiplier; Zone(ZoneNum).ListGroup = ListNum; } else { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\": Zone " + Zone(ZoneNum).Name + - " in ZoneList already exists in ZoneList of another ZoneGroup."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\": Zone " + Zone(ZoneNum).Name + + " in ZoneList already exists in ZoneList of another ZoneGroup."); ShowContinueError(state, "Previous ZoneList=" + ZoneList(Zone(ZoneNum).ListGroup).Name); ErrorsFound = true; } @@ -5010,10 +5091,12 @@ namespace HeatBalanceManager { // Assign zone number ZoneNum = UtilityRoutines::FindItemInList(cAlphaArgs(2), Zone); if (ZoneNum == 0) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cAlphaFieldNames(2) + " has been found."); - ShowContinueError(state, cAlphaFieldNames(2) + " entered value = \"" + cAlphaArgs(2) + - "\" no corresponding zone has been found in the input file."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cAlphaFieldNames(2) + " has been found."); + ShowContinueError(state, + cAlphaFieldNames(2) + " entered value = \"" + cAlphaArgs(2) + + "\" no corresponding zone has been found in the input file."); ErrorsFound = true; } else { ZoneLocalEnvironment(Loop).ZonePtr = ZoneNum; @@ -5021,12 +5104,21 @@ namespace HeatBalanceManager { // Assign outdoor air node number; NodeNum = GetOnlySingleNode(state, - cAlphaArgs(3), ErrorsFound, cCurrentModuleObject, cAlphaArgs(1), NodeType_Air, NodeConnectionType_Inlet, 1, ObjectIsParent); + cAlphaArgs(3), + ErrorsFound, + cCurrentModuleObject, + cAlphaArgs(1), + NodeType_Air, + NodeConnectionType_Inlet, + 1, + ObjectIsParent); if (NodeNum == 0 && CheckOutAirNodeNumber(state, NodeNum)) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cAlphaFieldNames(3) + " has been found."); - ShowContinueError(state, cAlphaFieldNames(3) + " entered value = \"" + cAlphaArgs(3) + - "\" no corresponding schedule has been found in the input file."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cAlphaFieldNames(3) + " has been found."); + ShowContinueError(state, + cAlphaFieldNames(3) + " entered value = \"" + cAlphaArgs(3) + + "\" no corresponding schedule has been found in the input file."); ErrorsFound = true; } else { ZoneLocalEnvironment(Loop).OutdoorAirNodePtr = NodeNum; @@ -5187,13 +5279,23 @@ namespace HeatBalanceManager { // Zone outdoor environmental variables, used for zone infiltration/ventilation SetupOutputVariable(state, - "Zone Outdoor Air Drybulb Temperature", OutputProcessor::Unit::C, Zone(ZoneLoop).OutDryBulbTemp, "Zone", "Average", Zone(ZoneLoop).Name); + "Zone Outdoor Air Drybulb Temperature", + OutputProcessor::Unit::C, + Zone(ZoneLoop).OutDryBulbTemp, + "Zone", + "Average", + Zone(ZoneLoop).Name); SetupOutputVariable(state, - "Zone Outdoor Air Wetbulb Temperature", OutputProcessor::Unit::C, Zone(ZoneLoop).OutWetBulbTemp, "Zone", "Average", Zone(ZoneLoop).Name); - SetupOutputVariable(state, - "Zone Outdoor Air Wind Speed", OutputProcessor::Unit::m_s, Zone(ZoneLoop).WindSpeed, "Zone", "Average", Zone(ZoneLoop).Name); - SetupOutputVariable(state, - "Zone Outdoor Air Wind Direction", OutputProcessor::Unit::deg, Zone(ZoneLoop).WindDir, "Zone", "Average", Zone(ZoneLoop).Name); + "Zone Outdoor Air Wetbulb Temperature", + OutputProcessor::Unit::C, + Zone(ZoneLoop).OutWetBulbTemp, + "Zone", + "Average", + Zone(ZoneLoop).Name); + SetupOutputVariable( + state, "Zone Outdoor Air Wind Speed", OutputProcessor::Unit::m_s, Zone(ZoneLoop).WindSpeed, "Zone", "Average", Zone(ZoneLoop).Name); + SetupOutputVariable( + state, "Zone Outdoor Air Wind Direction", OutputProcessor::Unit::deg, Zone(ZoneLoop).WindDir, "Zone", "Average", Zone(ZoneLoop).Name); } // End of Get Input subroutines for the HB Module @@ -5324,15 +5426,21 @@ namespace HeatBalanceManager { PerformSolarCalculations(state); } - if (state.dataGlobal->BeginDayFlag && !state.dataGlobal->WarmupFlag && state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::RunPeriodWeather && ReportExtShadingSunlitFrac) { + if (state.dataGlobal->BeginDayFlag && !state.dataGlobal->WarmupFlag && + state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::RunPeriodWeather && ReportExtShadingSunlitFrac) { for (int iHour = 1; iHour <= 24; ++iHour) { // Do for all hours. for (int TS = 1; TS <= state.dataGlobal->NumOfTimeStepInHour; ++TS) { static constexpr auto ShdFracFmt1(" {:02}/{:02} {:02}:{:02},"); - if (TS == state.dataGlobal->NumOfTimeStepInHour) { - print(state.files.shade, ShdFracFmt1, state.dataEnvrn->Month, state.dataEnvrn->DayOfMonth, iHour, 0); - } else { - print(state.files.shade, ShdFracFmt1, state.dataEnvrn->Month, state.dataEnvrn->DayOfMonth, iHour - 1, (60 / state.dataGlobal->NumOfTimeStepInHour) * TS); - } + if (TS == state.dataGlobal->NumOfTimeStepInHour) { + print(state.files.shade, ShdFracFmt1, state.dataEnvrn->Month, state.dataEnvrn->DayOfMonth, iHour, 0); + } else { + print(state.files.shade, + ShdFracFmt1, + state.dataEnvrn->Month, + state.dataEnvrn->DayOfMonth, + iHour - 1, + (60 / state.dataGlobal->NumOfTimeStepInHour) * TS); + } for (SurfNum = 1; SurfNum <= TotSurfaces; ++SurfNum) { static constexpr auto ShdFracFmt2("{:10.8F},"); print(state.files.shade, ShdFracFmt2, SunlitFrac(TS, iHour, SurfNum)); @@ -5519,7 +5627,8 @@ namespace HeatBalanceManager { state.dataContaminantBalance->ZoneAirCO2Avg.dimension(state.dataGlobal->NumOfZones, state.dataContaminantBalance->OutdoorCO2); } if (state.dataContaminantBalance->Contaminant.GenericContamSimulation) { - state.dataContaminantBalance->OutdoorGC = GetCurrentScheduleValue(state, state.dataContaminantBalance->Contaminant.GenericContamOutdoorSchedPtr); + state.dataContaminantBalance->OutdoorGC = + GetCurrentScheduleValue(state, state.dataContaminantBalance->Contaminant.GenericContamOutdoorSchedPtr); state.dataContaminantBalance->ZoneAirGC.dimension(state.dataGlobal->NumOfZones, state.dataContaminantBalance->OutdoorGC); state.dataContaminantBalance->ZoneAirGCTemp.dimension(state.dataGlobal->NumOfZones, state.dataContaminantBalance->OutdoorGC); state.dataContaminantBalance->ZoneAirGCAvg.dimension(state.dataGlobal->NumOfZones, state.dataContaminantBalance->OutdoorGC); @@ -5631,12 +5740,19 @@ namespace HeatBalanceManager { if (ReportDetailedWarmupConvergence) { // only do this detailed thing when requested by user is on // Write Warmup Convergence Information to the initialization output file if (FirstWarmupWrite) { - static constexpr auto Format_732{"! ,Zone Name,Time Step,Hour of Day,Warmup Temperature Difference {{deltaC}},Warmup Load Difference {{W}}\n"}; + static constexpr auto Format_732{"! ,Zone Name,Time Step,Hour of Day,Warmup Temperature " + "Difference {{deltaC}},Warmup Load Difference {{W}}\n"}; print(state.files.eio, Format_732); FirstWarmupWrite = false; } static constexpr auto Format_731{" Warmup Convergence Information, {},{},{},{:.10R},{:.10R}\n"}; - print(state.files.eio, Format_731, Zone(ZoneNum).Name, state.dataGlobal->TimeStep, state.dataGlobal->HourOfDay, WarmupTempDiff(ZoneNum), WarmupLoadDiff(ZoneNum)); + print(state.files.eio, + Format_731, + Zone(ZoneNum).Name, + state.dataGlobal->TimeStep, + state.dataGlobal->HourOfDay, + WarmupTempDiff(ZoneNum), + WarmupLoadDiff(ZoneNum)); } } } @@ -5874,11 +5990,10 @@ namespace HeatBalanceManager { int Num; // loop control // Formats - static constexpr auto Format_730( - "! ,Zone Name,Environment Type/Name,Average Warmup Temperature Difference " - "{{deltaC}},Std Dev Warmup Temperature Difference {{deltaC}},Max Temperature Pass/Fail Convergence,Min " - "Temperature Pass/Fail Convergence,Average Warmup Load Difference {{W}},Std Dev Warmup Load Difference " - "{{W}},Heating Load Pass/Fail Convergence,Cooling Load Pass/Fail Convergence\n"); + static constexpr auto Format_730("! ,Zone Name,Environment Type/Name,Average Warmup Temperature Difference " + "{{deltaC}},Std Dev Warmup Temperature Difference {{deltaC}},Max Temperature Pass/Fail Convergence,Min " + "Temperature Pass/Fail Convergence,Average Warmup Load Difference {{W}},Std Dev Warmup Load Difference " + "{{W}},Heating Load Pass/Fail Convergence,Cooling Load Pass/Fail Convergence\n"); if (!state.dataGlobal->WarmupFlag) { // Report out average/std dev // Write Warmup Convervence Information to the initialization output file @@ -5988,7 +6103,8 @@ namespace HeatBalanceManager { if (!state.dataGlobal->WarmupFlag && state.dataGlobal->DoOutputReporting) { CalcMoreNodeInfo(state); UpdateDataandReport(state, OutputProcessor::TimeStepType::TimeStepZone); - if (state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::HVACSizeDesignDay || state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::HVACSizeRunPeriodDesign) { + if (state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::HVACSizeDesignDay || + state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::HVACSizeRunPeriodDesign) { if (hvacSizingSimulationManager) hvacSizingSimulationManager->UpdateSizingLogsZoneStep(state); } @@ -6031,13 +6147,15 @@ namespace HeatBalanceManager { } CalcMoreNodeInfo(state); UpdateDataandReport(state, OutputProcessor::TimeStepType::TimeStepZone); - if (state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::HVACSizeDesignDay || state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::HVACSizeRunPeriodDesign) { + if (state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::HVACSizeDesignDay || + state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::HVACSizeRunPeriodDesign) { if (hvacSizingSimulationManager) hvacSizingSimulationManager->UpdateSizingLogsZoneStep(state); } } else if (UpdateDataDuringWarmupExternalInterface) { // added for FMI UpdateDataandReport(state, OutputProcessor::TimeStepType::TimeStepZone); - if (state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::HVACSizeDesignDay || state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::HVACSizeRunPeriodDesign) { + if (state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::HVACSizeDesignDay || + state.dataGlobal->KindOfSim == DataGlobalConstants::KindOfSim::HVACSizeRunPeriodDesign) { if (hvacSizingSimulationManager) hvacSizingSimulationManager->UpdateSizingLogsZoneStep(state); } } @@ -6168,16 +6286,18 @@ namespace HeatBalanceManager { if (FrameDivider(FrameDividerNum).DividerWidth > 0.0 && (FrameDivider(FrameDividerNum).HorDividers == 0 && FrameDivider(FrameDividerNum).VertDividers == 0)) { - ShowWarningError(state, CurrentModuleObject + ": In FrameAndDivider " + FrameDivider(FrameDividerNum).Name + ' ' + cNumericFieldNames(9) + - " > 0 "); + ShowWarningError(state, + CurrentModuleObject + ": In FrameAndDivider " + FrameDivider(FrameDividerNum).Name + ' ' + cNumericFieldNames(9) + + " > 0 "); ShowContinueError(state, "...but " + cNumericFieldNames(10) + " = 0 and " + cNumericFieldNames(11) + " = 0."); ShowContinueError(state, "..." + cNumericFieldNames(9) + " set to 0."); FrameDivider(FrameDividerNum).DividerWidth = 0.0; } // Prevent InsideSillDepth < InsideReveal if (FrameDivider(FrameDividerNum).InsideSillDepth < FrameDivider(FrameDividerNum).InsideReveal) { - ShowWarningError(state, CurrentModuleObject + ": In FrameAndDivider " + FrameDivider(FrameDividerNum).Name + ' ' + cNumericFieldNames(20) + - " is less than " + cNumericFieldNames(22) + "; it will be set to " + cNumericFieldNames(22) + '.'); + ShowWarningError(state, + CurrentModuleObject + ": In FrameAndDivider " + FrameDivider(FrameDividerNum).Name + ' ' + cNumericFieldNames(20) + + " is less than " + cNumericFieldNames(22) + "; it will be set to " + cNumericFieldNames(22) + '.'); FrameDivider(FrameDividerNum).InsideSillDepth = FrameDivider(FrameDividerNum).InsideReveal; } @@ -6340,8 +6460,9 @@ namespace HeatBalanceManager { endcol = len(NextLine.data); if (endcol > 0) { if (int(NextLine.data[endcol - 1]) == iUnicode_end) { - ShowSevereError(state, "SearchWindow5DataFile: For \"" + DesiredConstructionName + "\" in " + DesiredFileName + - " fiile, appears to be a Unicode or binary file."); + ShowSevereError(state, + "SearchWindow5DataFile: For \"" + DesiredConstructionName + "\" in " + DesiredFileName + + " fiile, appears to be a Unicode or binary file."); ShowContinueError(state, "...This file cannot be read by this program. Please save as PC or Unix file and try again"); ShowFatalError(state, "Program terminates due to previous condition."); } @@ -6354,10 +6475,10 @@ namespace HeatBalanceManager { ++FileLineCount; if (!has_prefixi(NextLine.data, "WINDOW5")) { ShowSevereError(state, "HeatBalanceManager: SearchWindow5DataFile: Error in Data File=" + DesiredFileName); - ShowFatalError(state, "Error reading Window5 Data File: first word of window entry is \"" + NextLine.data.substr(0, 7) + "\", should be Window5."); + ShowFatalError( + state, "Error reading Window5 Data File: first word of window entry is \"" + NextLine.data.substr(0, 7) + "\", should be Window5."); } - Label10:; for (LineNum = 2; LineNum <= 5; ++LineNum) { NextLine = W5DataFile.readLine(); @@ -6513,24 +6634,27 @@ namespace HeatBalanceManager { } if (FrameWidth > 0.0) { if (FrameConductance <= 0.0) { - ShowSevereError(state, "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + - " from the Window5 data file cannot be used: it has Frame Conductance <= 0.0"); + ShowSevereError(state, + "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + + " from the Window5 data file cannot be used: it has Frame Conductance <= 0.0"); ErrorsFound = true; } // Relax this check for Window5 data: 1/28/2008. // IF(FrEdgeToCenterGlCondRatio < 1.0) THEN - // CALL ShowSevereError(state, 'HeatBalanceManager: SearchWindow5DataFile: Construction='//TRIM(DesiredConstructionName)// & - // ' from the Window5 data file cannot be used: it has Frame Edge-of-Glass Conduction Ratio < 1.0') + // CALL ShowSevereError(state, 'HeatBalanceManager: SearchWindow5DataFile: Construction='//TRIM(DesiredConstructionName)// + // & ' from the Window5 data file cannot be used: it has Frame Edge-of-Glass Conduction Ratio < 1.0') // ErrorsFound = .TRUE. // END IF if (FrameSolAbsorp < 0.0 || FrameSolAbsorp > 1.0) { - ShowSevereError(state, "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + - " from the Window5 data file cannot be used: it has Frame Solar Absorptance < 0.0 or > 1.0"); + ShowSevereError(state, + "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + + " from the Window5 data file cannot be used: it has Frame Solar Absorptance < 0.0 or > 1.0"); ErrorsFound = true; } if (FrameEmis <= 0.0 || FrameEmis >= 1.0) { - ShowSevereError(state, "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + - " from the Window5 data file cannot be used: it has Frame Emissivity <= 0.0 or >= 1.0"); + ShowSevereError(state, + "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + + " from the Window5 data file cannot be used: it has Frame Emissivity <= 0.0 or >= 1.0"); ErrorsFound = true; } } @@ -6572,39 +6696,45 @@ namespace HeatBalanceManager { uppercase(DividerType(IGlSys)); if (DividerWidth(IGlSys) > 0.0) { if (HorDividers(IGlSys) == 0 && VertDividers(IGlSys) == 0) { - ShowSevereError(state, "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + - " from the Window5 data file cannot be used:"); + ShowSevereError(state, + "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + + " from the Window5 data file cannot be used:"); ShowContinueError( state, format("glazing system {} has a divider but number of horizontal and vertical divider elements = 0", IGlSys)); ErrorsFound = true; } if (DividerConductance(IGlSys) <= 0.0) { - ShowSevereError(state, "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + - " from the Window5 data file cannot be used:"); + ShowSevereError(state, + "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + + " from the Window5 data file cannot be used:"); ShowContinueError(state, format("glazing system {} has Divider Conductance <= 0.0", IGlSys)); ErrorsFound = true; } if (DivEdgeToCenterGlCondRatio(IGlSys) < 1.0) { - ShowSevereError(state, "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + - " from the Window5 data file cannot be used:"); + ShowSevereError(state, + "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + + " from the Window5 data file cannot be used:"); ShowContinueError(state, format("glazing system {} has Divider Edge-Of-Glass Conduction Ratio < 1.0", IGlSys)); ErrorsFound = true; } if (DividerSolAbsorp(IGlSys) < 0.0 || DividerSolAbsorp(IGlSys) > 1.0) { - ShowSevereError(state, "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + - " from the Window5 data file cannot be used:"); + ShowSevereError(state, + "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + + " from the Window5 data file cannot be used:"); ShowContinueError(state, format("glazing system {} has Divider Solar Absorptance < 0.0 or > 1.0", IGlSys)); ErrorsFound = true; } if (DividerEmis(IGlSys) <= 0.0 || DividerEmis(IGlSys) >= 1.0) { - ShowSevereError(state, "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + - " from the Window5 data file cannot be used:"); + ShowSevereError(state, + "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + + " from the Window5 data file cannot be used:"); ShowContinueError(state, format("glazing system {} has Divider Emissivity <= 0.0 or >= 1.0", IGlSys)); ErrorsFound = true; } if (DividerType(IGlSys) != "DIVIDEDLITE" && DividerType(IGlSys) != "SUSPENDED") { - ShowSevereError(state, "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + - " from the Window5 data file cannot be used:"); + ShowSevereError(state, + "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + + " from the Window5 data file cannot be used:"); ShowContinueError( state, format("glazing system {} has Divider Type = {}; it should be DIVIDEDLITE or SUSPENDED.", IGlSys, DividerType(IGlSys))); @@ -6622,8 +6752,9 @@ namespace HeatBalanceManager { } if (ErrorsFound) - ShowFatalError(state, "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + - " from the Window5 data file cannot be used because of above errors"); + ShowFatalError(state, + "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + + " from the Window5 data file cannot be used because of above errors"); TotMaterialsPrev = TotMaterials; for (IGlSys = 1; IGlSys <= NGlSys; ++IGlSys) { @@ -6734,13 +6865,15 @@ namespace HeatBalanceManager { if (NGlSys == 1) { state.dataMaterial->Material(MaterNum).Name = "W5:" + DesiredConstructionName + ":GLASS" + NumName(IGlass); } else { - state.dataMaterial->Material(MaterNum).Name = "W5:" + DesiredConstructionName + ':' + NumName(IGlSys) + ":GLASS" + NumName(IGlass); + state.dataMaterial->Material(MaterNum).Name = + "W5:" + DesiredConstructionName + ':' + NumName(IGlSys) + ":GLASS" + NumName(IGlass); } state.dataMaterial->Material(MaterNum).Roughness = VerySmooth; state.dataMaterial->Material(MaterNum).AbsorpThermal = state.dataMaterial->Material(MaterNum).AbsorpThermalBack; if (state.dataMaterial->Material(MaterNum).Thickness <= 0.0) { - ShowSevereError(state, "SearchWindow5DataFile: Material=\"" + state.dataMaterial->Material(MaterNum).Name + - "\" has thickness of 0.0. Will be set to thickness = .001 but inaccuracies may result."); + ShowSevereError(state, + "SearchWindow5DataFile: Material=\"" + state.dataMaterial->Material(MaterNum).Name + + "\" has thickness of 0.0. Will be set to thickness = .001 but inaccuracies may result."); ShowContinueError(state, "Line being read=" + NextLine.data); ShowContinueError(state, "Thickness field starts at column 26=" + NextLine.data.substr(25)); state.dataMaterial->Material(MaterNum).Thickness = 0.001; @@ -6762,7 +6895,8 @@ namespace HeatBalanceManager { if (NGlSys == 1) { state.dataMaterial->Material(MaterNum).Name = "W5:" + DesiredConstructionName + ":GAP" + NumName(IGap); } else { - state.dataMaterial->Material(MaterNum).Name = "W5:" + DesiredConstructionName + ':' + NumName(IGlSys) + ":GAP" + NumName(IGap); + state.dataMaterial->Material(MaterNum).Name = + "W5:" + DesiredConstructionName + ':' + NumName(IGlSys) + ":GAP" + NumName(IGap); } state.dataMaterial->Material(MaterNum).Thickness *= 0.001; state.dataMaterial->Material(MaterNum).Roughness = MediumRough; // Unused @@ -6791,7 +6925,8 @@ namespace HeatBalanceManager { // Nominal resistance of gap at room temperature (based on first gas in mixture) NominalR(MaterNum) = state.dataMaterial->Material(MaterNum).Thickness / - (state.dataMaterial->Material(MaterNum).GasCon(1, 1) + state.dataMaterial->Material(MaterNum).GasCon(2, 1) * 300.0 + state.dataMaterial->Material(MaterNum).GasCon(3, 1) * 90000.0); + (state.dataMaterial->Material(MaterNum).GasCon(1, 1) + state.dataMaterial->Material(MaterNum).GasCon(2, 1) * 300.0 + + state.dataMaterial->Material(MaterNum).GasCon(3, 1) * 90000.0); } } } @@ -6885,8 +7020,10 @@ namespace HeatBalanceManager { } state.dataConstruction->Construct(ConstrNum).OutsideRoughness = VerySmooth; - state.dataConstruction->Construct(ConstrNum).InsideAbsorpThermal = state.dataMaterial->Material(TotMaterialsPrev + NGlass(IGlSys)).AbsorpThermalBack; - state.dataConstruction->Construct(ConstrNum).OutsideAbsorpThermal = state.dataMaterial->Material(TotMaterialsPrev + 1).AbsorpThermalFront; + state.dataConstruction->Construct(ConstrNum).InsideAbsorpThermal = + state.dataMaterial->Material(TotMaterialsPrev + NGlass(IGlSys)).AbsorpThermalBack; + state.dataConstruction->Construct(ConstrNum).OutsideAbsorpThermal = + state.dataMaterial->Material(TotMaterialsPrev + 1).AbsorpThermalFront; state.dataConstruction->Construct(ConstrNum).TypeIsWindow = true; state.dataConstruction->Construct(ConstrNum).FromWindow5DataFile = true; state.dataConstruction->Construct(ConstrNum).W5FileGlazingSysHeight = WinHeight(IGlSys); @@ -6994,8 +7131,9 @@ namespace HeatBalanceManager { FileLineCount += 5; if (ErrorsFound) - ShowFatalError(state, "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + - " from the Window5 data file cannot be used because of above errors"); + ShowFatalError(state, + "HeatBalanceManager: SearchWindow5DataFile: Construction=" + DesiredConstructionName + + " from the Window5 data file cannot be used because of above errors"); // Hemis state.dataConstruction->Construct(ConstrNum).TransDiff = Tsol(11); @@ -7029,12 +7167,15 @@ namespace HeatBalanceManager { for (loop = 1; loop <= NGlass(IGlSys) + NGaps(IGlSys); ++loop) { MatNum = state.dataConstruction->Construct(ConstrNum).LayerPoint(loop); if (state.dataMaterial->Material(MatNum).Group == WindowGlass) { - NominalRforNominalUCalculation(ConstrNum) += state.dataMaterial->Material(MatNum).Thickness / state.dataMaterial->Material(MatNum).Conductivity; - } else if (state.dataMaterial->Material(MatNum).Group == WindowGas || state.dataMaterial->Material(MatNum).Group == WindowGasMixture) { + NominalRforNominalUCalculation(ConstrNum) += + state.dataMaterial->Material(MatNum).Thickness / state.dataMaterial->Material(MatNum).Conductivity; + } else if (state.dataMaterial->Material(MatNum).Group == WindowGas || + state.dataMaterial->Material(MatNum).Group == WindowGasMixture) { // If mixture, use conductivity of first gas in mixture NominalRforNominalUCalculation(ConstrNum) += state.dataMaterial->Material(MatNum).Thickness / - (state.dataMaterial->Material(MatNum).GasCon(1, 1) + state.dataMaterial->Material(MatNum).GasCon(2, 1) * 300.0 + state.dataMaterial->Material(MatNum).GasCon(3, 1) * 90000.0); + (state.dataMaterial->Material(MatNum).GasCon(1, 1) + state.dataMaterial->Material(MatNum).GasCon(2, 1) * 300.0 + + state.dataMaterial->Material(MatNum).GasCon(3, 1) * 90000.0); } } @@ -7138,9 +7279,9 @@ namespace HeatBalanceManager { // REFERENCES:na // Using/Aliasing - using General::BetweenDates; using DataSurfaces::SurfWinStormWinFlag; using DataSurfaces::SurfWinStormWinFlagPrevDay; + using General::BetweenDates; // Locals // SUBROUTINE PARAMETER DEFINITIONS:na @@ -7279,8 +7420,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueConstructNames, ConstructAlphas(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueConstructNames, ConstructAlphas(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { continue; } @@ -7298,19 +7439,22 @@ namespace HeatBalanceManager { state.dataConstruction->Construct(ConstrNum).FFactor = Ffactor; if (Ffactor <= 0.0) { - ShowSevereError(state, CurrentModuleObject + "=\"" + ConstructAlphas(1) + "\" has " + cNumericFieldNames(1) + " <= 0.0, must be > 0.0."); + ShowSevereError(state, + CurrentModuleObject + "=\"" + ConstructAlphas(1) + "\" has " + cNumericFieldNames(1) + " <= 0.0, must be > 0.0."); ShowContinueError(state, format("Entered value=[{:.2R}]", Ffactor)); ErrorsFound = true; } if (Area <= 0.0) { - ShowSevereError(state, CurrentModuleObject + "=\"" + ConstructAlphas(1) + "\" has " + cNumericFieldNames(2) + " <= 0.0, must be > 0.0."); + ShowSevereError(state, + CurrentModuleObject + "=\"" + ConstructAlphas(1) + "\" has " + cNumericFieldNames(2) + " <= 0.0, must be > 0.0."); ShowContinueError(state, format("Entered value=[{:.2R}]", Area)); ErrorsFound = true; } if (PerimeterExposed < 0.0) { - ShowSevereError(state, CurrentModuleObject + "=\"" + ConstructAlphas(1) + "\" has " + cNumericFieldNames(3) + " <= 0.0, must be > 0.0."); + ShowSevereError(state, + CurrentModuleObject + "=\"" + ConstructAlphas(1) + "\" has " + cNumericFieldNames(3) + " <= 0.0, must be > 0.0."); ShowContinueError(state, format("Entered value=[{:.2R}]", PerimeterExposed)); ErrorsFound = true; } @@ -7366,8 +7510,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueConstructNames, ConstructAlphas(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueConstructNames, ConstructAlphas(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { continue; } @@ -7446,9 +7590,9 @@ namespace HeatBalanceManager { // Cannot imagine how you would have numAirBoundaryConstructs > 0 and yet the instances is empty // this would indicate a major problem in the input processor, not a problem here // I'll still catch this with errorsFound but I cannot make a unit test for it so excluding the line from coverage - ShowSevereError(state, // LCOV_EXCL_LINE - cCurrentModuleObject + ": Somehow getNumObjectsFound was > 0 but epJSON.find found 0"); // LCOV_EXCL_LINE - errorsFound = true; // LCOV_EXCL_LINE + ShowSevereError(state, // LCOV_EXCL_LINE + cCurrentModuleObject + ": Somehow getNumObjectsFound was > 0 but epJSON.find found 0"); // LCOV_EXCL_LINE + errorsFound = true; // LCOV_EXCL_LINE } auto &instancesValue = instances.value(); for (auto instance = instancesValue.begin(); instance != instancesValue.end(); ++instance) { @@ -7456,7 +7600,8 @@ namespace HeatBalanceManager { auto thisObjectName = instance.key(); inputProcessor->markObjectAsUsed(cCurrentModuleObject, thisObjectName); - if (GlobalNames::VerifyUniqueInterObjectName(state, UniqueConstructNames, thisObjectName, cCurrentModuleObject, "Name", errorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueConstructNames, thisObjectName, cCurrentModuleObject, "Name", errorsFound)) { continue; } @@ -7483,8 +7628,9 @@ namespace HeatBalanceManager { auto &schedName = fields.at("simple_mixing_schedule_name"); thisConstruct.AirBoundaryMixingSched = ScheduleManager::GetScheduleIndex(state, UtilityRoutines::MakeUPPERCase(schedName)); if (thisConstruct.AirBoundaryMixingSched == 0) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + thisConstruct.Name + "\", invalid (not found) " + - "Simple Mixing Schedule Name" + "=\"" + schedName.get() + "\"."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + thisConstruct.Name + "\", invalid (not found) " + + "Simple Mixing Schedule Name" + "=\"" + schedName.get() + "\"."); errorsFound = true; } } else { @@ -7571,8 +7717,8 @@ namespace HeatBalanceManager { cAlphaFieldNames, cNumericFieldNames); if (UtilityRoutines::IsNameEmpty(state, cAlphaArgs(1), cCurrentModuleObject, ErrorsFound)) { - ShowContinueError(state, - "...each SurfaceProperty:SolarIncidentInside name must not duplicate other SurfaceProperty:SolarIncidentInside name"); + ShowContinueError( + state, "...each SurfaceProperty:SolarIncidentInside name must not duplicate other SurfaceProperty:SolarIncidentInside name"); continue; } @@ -7581,10 +7727,12 @@ namespace HeatBalanceManager { // Assign surface number SurfNum = UtilityRoutines::FindItemInList(cAlphaArgs(2), Surface); if (SurfNum == 0) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cAlphaFieldNames(2) + " has been found."); - ShowContinueError(state, cAlphaFieldNames(2) + " entered value = \"" + cAlphaArgs(2) + - "\" no corresponding surface (ref BuildingSurface:Detailed) has been found in the input file."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cAlphaFieldNames(2) + " has been found."); + ShowContinueError(state, + cAlphaFieldNames(2) + " entered value = \"" + cAlphaArgs(2) + + "\" no corresponding surface (ref BuildingSurface:Detailed) has been found in the input file."); ErrorsFound = true; } else { SurfIncSolSSG(Loop).SurfPtr = SurfNum; @@ -7593,10 +7741,12 @@ namespace HeatBalanceManager { // Assign construction number ConstrNum = UtilityRoutines::FindItemInList(cAlphaArgs(3), state.dataConstruction->Construct); if (ConstrNum == 0) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cAlphaFieldNames(3) + " has been found."); - ShowContinueError(state, cAlphaFieldNames(3) + " entered value = \"" + cAlphaArgs(3) + - "\" no corresponding construction (ref Construction) has been found in the input file."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cAlphaFieldNames(3) + " has been found."); + ShowContinueError(state, + cAlphaFieldNames(3) + " entered value = \"" + cAlphaArgs(3) + + "\" no corresponding construction (ref Construction) has been found in the input file."); ErrorsFound = true; } else { SurfIncSolSSG(Loop).ConstrPtr = ConstrNum; @@ -7605,10 +7755,12 @@ namespace HeatBalanceManager { // Assign schedule number ScheduleNum = GetScheduleIndex(state, cAlphaArgs(4)); if (ScheduleNum == 0) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cAlphaFieldNames(4) + " has been found."); - ShowContinueError(state, cAlphaFieldNames(4) + " entered value = \"" + cAlphaArgs(4) + - "\" no corresponding schedule has been found in the input file."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cAlphaFieldNames(4) + " has been found."); + ShowContinueError(state, + cAlphaFieldNames(4) + " entered value = \"" + cAlphaArgs(4) + + "\" no corresponding schedule has been found in the input file."); ErrorsFound = true; } else { SurfIncSolSSG(Loop).SchedPtr = ScheduleNum; @@ -7641,7 +7793,8 @@ namespace HeatBalanceManager { cAlphaFieldNames, cNumericFieldNames); if (UtilityRoutines::IsNameEmpty(state, cAlphaArgs(1), cCurrentModuleObject, ErrorsFound)) { - ShowContinueError(state, "...each ComplexFenestrationProperty:SolarAbsorbedLayers name must not duplicate other " + ShowContinueError(state, + "...each ComplexFenestrationProperty:SolarAbsorbedLayers name must not duplicate other " "ComplexFenestrationProperty:SolarAbsorbedLayers name"); continue; } @@ -7651,10 +7804,12 @@ namespace HeatBalanceManager { // Assign surface number SurfNum = UtilityRoutines::FindItemInList(cAlphaArgs(2), Surface); if (SurfNum == 0) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cAlphaFieldNames(2) + " has been found."); - ShowContinueError(state, cAlphaFieldNames(2) + " entered value = \"" + cAlphaArgs(2) + - "\" no corresponding surface (ref BuildingSurface:Detailed) has been found in the input file."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cAlphaFieldNames(2) + " has been found."); + ShowContinueError(state, + cAlphaFieldNames(2) + " entered value = \"" + cAlphaArgs(2) + + "\" no corresponding surface (ref BuildingSurface:Detailed) has been found in the input file."); ErrorsFound = true; } else { FenLayAbsSSG(Loop).SurfPtr = SurfNum; @@ -7663,10 +7818,12 @@ namespace HeatBalanceManager { // Assign construction number ConstrNum = UtilityRoutines::FindItemInList(cAlphaArgs(3), state.dataConstruction->Construct); if (ConstrNum == 0) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cAlphaFieldNames(3) + " has been found."); - ShowContinueError(state, cAlphaFieldNames(3) + " entered value = \"" + cAlphaArgs(3) + - "\" no corresponding construction (ref Construction) has been found in the input file."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cAlphaFieldNames(3) + " has been found."); + ShowContinueError(state, + cAlphaFieldNames(3) + " entered value = \"" + cAlphaArgs(3) + + "\" no corresponding construction (ref Construction) has been found in the input file."); ErrorsFound = true; } else { FenLayAbsSSG(Loop).ConstrPtr = ConstrNum; @@ -7679,8 +7836,9 @@ namespace HeatBalanceManager { if (!NumOfLayersMatch) { ShowSevereError(state, - RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + - ", object. Number of scheduled surface gains for each layer does not match number of layers in referenced construction."); + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + + ", object. Number of scheduled surface gains for each layer does not match number of layers in " + "referenced construction."); ShowContinueError(state, format("{} have {} schedule layers and {} have {} layers.", cAlphaArgs(1), @@ -7699,11 +7857,13 @@ namespace HeatBalanceManager { for (i = 1; i <= NumOfScheduledLayers; ++i) { ScheduleNum = GetScheduleIndex(state, cAlphaArgs(i + 3)); if (ScheduleNum == 0) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cAlphaFieldNames(NumOfScheduledLayers + 3) + " has been found."); - ShowContinueError(state, cAlphaFieldNames(NumOfScheduledLayers + 3) + " entered value = \"" + - cAlphaArgs(NumOfScheduledLayers + 3) + - "\" no corresponding schedule has been found in the input file."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cAlphaFieldNames(NumOfScheduledLayers + 3) + " has been found."); + ShowContinueError(state, + cAlphaFieldNames(NumOfScheduledLayers + 3) + " entered value = \"" + + cAlphaArgs(NumOfScheduledLayers + 3) + + "\" no corresponding schedule has been found in the input file."); ErrorsFound = true; } else { FenLayAbsSSG(Loop).SchedPtrs(i) = ScheduleNum; @@ -7794,7 +7954,8 @@ namespace HeatBalanceManager { if ((!ZoneScheduled) && (!ZoneUnscheduled)) { // zone is nor scheduled nor unscheduled ShowWarningError(state, "Zone " + Zone(ZoneNum).Name + " does not have all surfaces scheduled with surface gains."); - ShowContinueError(state, "If at least one surface in the zone is scheduled with surface gains, then all other surfaces within the same zone " + ShowContinueError(state, + "If at least one surface in the zone is scheduled with surface gains, then all other surfaces within the same zone " "should be scheduled as well."); break; } @@ -7893,7 +8054,8 @@ namespace HeatBalanceManager { state.dataConstruction->Construct(NumNewConst).Name = format("{}_TC_{:.0R}", state.dataConstruction->Construct(Loop).Name, TCGlazings(iTCG).SpecTemp(iTC)); state.dataConstruction->Construct(NumNewConst).TCLayer = TCGlazings(iTCG).LayerPoint(iTC); - state.dataConstruction->Construct(NumNewConst).LayerPoint(state.dataConstruction->Construct(Loop).TCLayerID) = state.dataConstruction->Construct(NumNewConst).TCLayer; + state.dataConstruction->Construct(NumNewConst).LayerPoint(state.dataConstruction->Construct(Loop).TCLayerID) = + state.dataConstruction->Construct(NumNewConst).TCLayer; state.dataConstruction->Construct(NumNewConst).TCFlag = 1; state.dataConstruction->Construct(NumNewConst).TCMasterConst = Loop; state.dataConstruction->Construct(NumNewConst).TCLayerID = state.dataConstruction->Construct(Loop).TCLayerID; @@ -7976,8 +8138,9 @@ namespace HeatBalanceManager { Rlw = (1.0 / state.dataMaterial->Material(MaterNum).SimpleWindowUfactor) - Riw - Row; if (Rlw <= 0.0) { // U factor of film coefficients is better than user input. Rlw = max(Rlw, 0.001); - ShowWarningError(state, "WindowMaterial:SimpleGlazingSystem: " + state.dataMaterial->Material(MaterNum).Name + - " has U-factor higher than that provided by surface film resistances, Check value of U-factor"); + ShowWarningError(state, + "WindowMaterial:SimpleGlazingSystem: " + state.dataMaterial->Material(MaterNum).Name + + " has U-factor higher than that provided by surface film resistances, Check value of U-factor"); } // Step 2. determine layer thickness. @@ -7996,8 +8159,9 @@ namespace HeatBalanceManager { state.dataMaterial->Material(MaterNum).Resistance = Rlw; } else { ErrorsFound = true; - ShowSevereError(state, "WindowMaterial:SimpleGlazingSystem: " + state.dataMaterial->Material(MaterNum).Name + - " has Conductivity <= 0.0, must be >0.0, Check value of U-factor"); + ShowSevereError(state, + "WindowMaterial:SimpleGlazingSystem: " + state.dataMaterial->Material(MaterNum).Name + + " has Conductivity <= 0.0, must be >0.0, Check value of U-factor"); } // step 4. determine solar transmission (revised to 10-1-2009 version from LBNL.) @@ -8006,7 +8170,8 @@ namespace HeatBalanceManager { if (state.dataMaterial->Material(MaterNum).SimpleWindowSHGC < 0.7206) { - state.dataMaterial->Material(MaterNum).Trans = 0.939998 * pow_2(state.dataMaterial->Material(MaterNum).SimpleWindowSHGC) + 0.20332 * state.dataMaterial->Material(MaterNum).SimpleWindowSHGC; + state.dataMaterial->Material(MaterNum).Trans = 0.939998 * pow_2(state.dataMaterial->Material(MaterNum).SimpleWindowSHGC) + + 0.20332 * state.dataMaterial->Material(MaterNum).SimpleWindowSHGC; } else { // >= 0.7206 state.dataMaterial->Material(MaterNum).Trans = 1.30415 * state.dataMaterial->Material(MaterNum).SimpleWindowSHGC - 0.30515; @@ -8017,13 +8182,14 @@ namespace HeatBalanceManager { if (state.dataMaterial->Material(MaterNum).SimpleWindowSHGC <= 0.15) { state.dataMaterial->Material(MaterNum).Trans = 0.41040 * state.dataMaterial->Material(MaterNum).SimpleWindowSHGC; } else { // > 0.15 - state.dataMaterial->Material(MaterNum).Trans = - 0.085775 * pow_2(state.dataMaterial->Material(MaterNum).SimpleWindowSHGC) + 0.963954 * state.dataMaterial->Material(MaterNum).SimpleWindowSHGC - 0.084958; + state.dataMaterial->Material(MaterNum).Trans = 0.085775 * pow_2(state.dataMaterial->Material(MaterNum).SimpleWindowSHGC) + + 0.963954 * state.dataMaterial->Material(MaterNum).SimpleWindowSHGC - 0.084958; } } else { // interpolate. 3.4 <= Ufactor <= 4.5 if (state.dataMaterial->Material(MaterNum).SimpleWindowSHGC < 0.7206) { - TsolHiSide = 0.939998 * pow_2(state.dataMaterial->Material(MaterNum).SimpleWindowSHGC) + 0.20332 * state.dataMaterial->Material(MaterNum).SimpleWindowSHGC; + TsolHiSide = 0.939998 * pow_2(state.dataMaterial->Material(MaterNum).SimpleWindowSHGC) + + 0.20332 * state.dataMaterial->Material(MaterNum).SimpleWindowSHGC; } else { // >= 0.7206 TsolHiSide = 1.30415 * state.dataMaterial->Material(MaterNum).SimpleWindowSHGC - 0.30515; } @@ -8031,10 +8197,12 @@ namespace HeatBalanceManager { if (state.dataMaterial->Material(MaterNum).SimpleWindowSHGC <= 0.15) { TsolLowSide = 0.41040 * state.dataMaterial->Material(MaterNum).SimpleWindowSHGC; } else { // > 0.15 - TsolLowSide = 0.085775 * pow_2(state.dataMaterial->Material(MaterNum).SimpleWindowSHGC) + 0.963954 * state.dataMaterial->Material(MaterNum).SimpleWindowSHGC - 0.084958; + TsolLowSide = 0.085775 * pow_2(state.dataMaterial->Material(MaterNum).SimpleWindowSHGC) + + 0.963954 * state.dataMaterial->Material(MaterNum).SimpleWindowSHGC - 0.084958; } - state.dataMaterial->Material(MaterNum).Trans = ((state.dataMaterial->Material(MaterNum).SimpleWindowUfactor - 3.4) / (4.5 - 3.4)) * (TsolHiSide - TsolLowSide) + TsolLowSide; + state.dataMaterial->Material(MaterNum).Trans = + ((state.dataMaterial->Material(MaterNum).SimpleWindowUfactor - 3.4) / (4.5 - 3.4)) * (TsolHiSide - TsolLowSide) + TsolLowSide; } if (state.dataMaterial->Material(MaterNum).Trans < 0.0) state.dataMaterial->Material(MaterNum).Trans = 0.0; @@ -8070,14 +8238,16 @@ namespace HeatBalanceManager { // step 6. determine visible properties. if (state.dataMaterial->Material(MaterNum).SimpleWindowVTinputByUser) { state.dataMaterial->Material(MaterNum).TransVis = state.dataMaterial->Material(MaterNum).SimpleWindowVisTran; - state.dataMaterial->Material(MaterNum).ReflectVisBeamBack = -0.7409 * pow_3(state.dataMaterial->Material(MaterNum).TransVis) + 1.6531 * pow_2(state.dataMaterial->Material(MaterNum).TransVis) - - 1.2299 * state.dataMaterial->Material(MaterNum).TransVis + 0.4545; + state.dataMaterial->Material(MaterNum).ReflectVisBeamBack = -0.7409 * pow_3(state.dataMaterial->Material(MaterNum).TransVis) + + 1.6531 * pow_2(state.dataMaterial->Material(MaterNum).TransVis) - + 1.2299 * state.dataMaterial->Material(MaterNum).TransVis + 0.4545; if (state.dataMaterial->Material(MaterNum).TransVis + state.dataMaterial->Material(MaterNum).ReflectVisBeamBack >= 1.0) { state.dataMaterial->Material(MaterNum).ReflectVisBeamBack = 0.999 - state.dataMaterial->Material(MaterNum).TransVis; } - state.dataMaterial->Material(MaterNum).ReflectVisBeamFront = -0.0622 * pow_3(state.dataMaterial->Material(MaterNum).TransVis) + 0.4277 * pow_2(state.dataMaterial->Material(MaterNum).TransVis) - - 0.4169 * state.dataMaterial->Material(MaterNum).TransVis + 0.2399; + state.dataMaterial->Material(MaterNum).ReflectVisBeamFront = -0.0622 * pow_3(state.dataMaterial->Material(MaterNum).TransVis) + + 0.4277 * pow_2(state.dataMaterial->Material(MaterNum).TransVis) - + 0.4169 * state.dataMaterial->Material(MaterNum).TransVis + 0.2399; if (state.dataMaterial->Material(MaterNum).TransVis + state.dataMaterial->Material(MaterNum).ReflectVisBeamFront >= 1.0) { state.dataMaterial->Material(MaterNum).ReflectVisBeamFront = 0.999 - state.dataMaterial->Material(MaterNum).TransVis; } @@ -8150,8 +8320,9 @@ namespace HeatBalanceManager { cAlphaFieldNames, cNumericFieldNames); if (UtilityRoutines::IsNameEmpty(state, cAlphaArgs(1), CurrentModuleObject, ErrorsFound)) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cAlphaFieldNames(1) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cAlphaFieldNames(1) + + " has been found."); ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -8162,15 +8333,17 @@ namespace HeatBalanceManager { if (rNumericArgs(1) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(1) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(1) + + " has been found."); ShowContinueError(state, format("{} must be > 0, entered value = {:.2R}", cNumericFieldNames(1), rNumericArgs(1))); } if (rNumericArgs(2) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(2) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(2) + + " has been found."); ShowContinueError(state, format("{} must be > 0, entered value = {:.2R}", cNumericFieldNames(2), rNumericArgs(2))); } } @@ -8193,8 +8366,9 @@ namespace HeatBalanceManager { cAlphaFieldNames, cNumericFieldNames); if (UtilityRoutines::IsNameEmpty(state, cAlphaArgs(1), CurrentModuleObject, ErrorsFound)) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cAlphaFieldNames(1) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cAlphaFieldNames(1) + + " has been found."); ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -8203,8 +8377,9 @@ namespace HeatBalanceManager { DeflectionState(Loop).DeflectedThickness = rNumericArgs(1); if (rNumericArgs(1) < 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(1) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(1) + + " has been found."); ShowContinueError(state, format("{} must be >= 0, entered value = {:.2R}", cNumericFieldNames(1), rNumericArgs(1))); } } @@ -8227,7 +8402,8 @@ namespace HeatBalanceManager { lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, UniqueMaterialNames, cAlphaArgs(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueMaterialNames, cAlphaArgs(1), CurrentModuleObject, cAlphaFieldNames(1), ErrorsFound)) { ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -8242,24 +8418,27 @@ namespace HeatBalanceManager { state.dataMaterial->Material(MaterNum).Thickness = rNumericArgs(1); if (rNumericArgs(1) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(1) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(1) + + " has been found."); ShowContinueError(state, format("{} must be > 0, entered {:.2R}", cNumericFieldNames(1), rNumericArgs(1))); } state.dataMaterial->Material(MaterNum).Pressure = rNumericArgs(2); if (rNumericArgs(2) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(2) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(2) + + " has been found."); ShowContinueError(state, format("{} must be > 0, entered {:.2R}", cNumericFieldNames(2), rNumericArgs(2))); } if (!lAlphaFieldBlanks(2)) { state.dataMaterial->Material(MaterNum).GasPointer = UtilityRoutines::FindItemInList(cAlphaArgs(2), state.dataMaterial->Material); } else { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cAlphaFieldNames(1) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cAlphaFieldNames(1) + + " has been found."); ShowContinueError(state, cCurrentModuleObject + " does not have assigned WindowMaterial:Gas or WindowMaterial:GasMixutre."); } if (!lAlphaFieldBlanks(3)) { @@ -8292,8 +8471,9 @@ namespace HeatBalanceManager { cAlphaFieldNames, cNumericFieldNames); if (UtilityRoutines::IsNameEmpty(state, cAlphaArgs(1), CurrentModuleObject, ErrorsFound)) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cAlphaFieldNames(1) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cAlphaFieldNames(1) + + " has been found."); ShowContinueError(state, "...All Material names must be unique regardless of subtype."); continue; } @@ -8326,10 +8506,12 @@ namespace HeatBalanceManager { ComplexShade(Loop).LayerType = csBSDF; } else { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cAlphaFieldNames(2) + " has been found."); - ShowContinueError(state, cAlphaFieldNames(2) + " entered value = \"" + cAlphaArgs(2) + - "\" should be OtherShadingType, Venetian, Woven, Perforated or BSDF."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cAlphaFieldNames(2) + " has been found."); + ShowContinueError(state, + cAlphaFieldNames(2) + " entered value = \"" + cAlphaArgs(2) + + "\" should be OtherShadingType, Venetian, Woven, Perforated or BSDF."); } } @@ -8369,114 +8551,130 @@ namespace HeatBalanceManager { if (rNumericArgs(1) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(1) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(1) + + " has been found."); ShowContinueError(state, format("{} must be > 0, entered value = {:.2R}", cNumericFieldNames(1), rNumericArgs(1))); } if (rNumericArgs(2) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(2) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(2) + + " has been found."); ShowContinueError(state, format("{} must be > 0, entered value = {:.2R}", cNumericFieldNames(2), rNumericArgs(2))); } if ((rNumericArgs(3) < 0.0) || (rNumericArgs(3) > 1.0)) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(3) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(3) + + " has been found."); ShowContinueError(state, format("{} value must be >= 0 and <= 1, entered value = {:.2R}", cNumericFieldNames(3), rNumericArgs(3))); } if ((rNumericArgs(4) <= 0.0) || (rNumericArgs(4) > 1.0)) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(4) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(4) + + " has been found."); ShowContinueError(state, format("{} value must be >= 0 and <= 1, entered value = {:.2R}", cNumericFieldNames(4), rNumericArgs(4))); } if ((rNumericArgs(5) <= 0.0) || (rNumericArgs(5) > 1.0)) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(5) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(5) + + " has been found."); ShowContinueError(state, format("{} value must be >= 0 and <= 1, entered value = {:.2R}", cNumericFieldNames(5), rNumericArgs(5))); } if ((rNumericArgs(6) < 0.0) || (rNumericArgs(6) > 1.0)) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(6) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(6) + + " has been found."); ShowContinueError(state, format("{} must be >= 0 or <= 1, entered value = {:.2R}", cNumericFieldNames(6), rNumericArgs(6))); } if ((rNumericArgs(7) < 0.0) || (rNumericArgs(7) > 1.0)) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(7) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(7) + + " has been found."); ShowContinueError(state, format("{} must be >=0 or <=1, entered {:.2R}", cNumericFieldNames(7), rNumericArgs(7))); } if ((rNumericArgs(8) < 0.0) || (rNumericArgs(8) > 1.0)) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(8) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(8) + + " has been found."); ShowContinueError(state, format("{} must be >=0 or <=1, entered value = {:.2R}", cNumericFieldNames(8), rNumericArgs(8))); } if ((rNumericArgs(9) < 0.0) || (rNumericArgs(9) > 1.0)) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(9) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(9) + + " has been found."); ShowContinueError(state, format("{} must be >=0 or <=1, entered value = {:.2R}", cNumericFieldNames(9), rNumericArgs(9))); } if ((rNumericArgs(10) < 0.0) || (rNumericArgs(10) > 1.0)) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(10) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(10) + + " has been found."); ShowContinueError(state, format("{} must be >=0 or <=1, entered value = {:.2R}", cNumericFieldNames(10), rNumericArgs(10))); } if (ComplexShade(Loop).LayerType == csVenetianHorizontal || ComplexShade(Loop).LayerType == csVenetianVertical) { if (rNumericArgs(11) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cNumericFieldNames(11) + " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cNumericFieldNames(11) + " has been found."); ShowContinueError(state, format("{} must be >0, entered value = {:.2R}", cNumericFieldNames(11), rNumericArgs(11))); } if (rNumericArgs(12) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cNumericFieldNames(12) + " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cNumericFieldNames(12) + " has been found."); ShowContinueError(state, format("{} must be >0, entered value = {:.2R}", cNumericFieldNames(12), rNumericArgs(12))); } if (rNumericArgs(13) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cNumericFieldNames(13) + " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cNumericFieldNames(13) + " has been found."); ShowContinueError(state, format("{} must be >0, entered value = {:.2R}", cNumericFieldNames(13), rNumericArgs(13))); } if ((rNumericArgs(14) < -90.0) || (rNumericArgs(14) > 90.0)) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cNumericFieldNames(14) + " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cNumericFieldNames(14) + " has been found."); ShowContinueError(state, format("{} must be >=-90 and <=90, entered value = {:.2R}", cNumericFieldNames(14), rNumericArgs(14))); } if (rNumericArgs(15) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cNumericFieldNames(15) + " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cNumericFieldNames(15) + " has been found."); ShowContinueError(state, format("{} must be >0, entered value = {:.2R}", cNumericFieldNames(15), rNumericArgs(15))); } if ((rNumericArgs(16) < 0.0) || ((rNumericArgs(16) > 0.0) && (rNumericArgs(16) < (rNumericArgs(11) / 2)))) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cNumericFieldNames(16) + " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cNumericFieldNames(16) + " has been found."); ShowContinueError( state, format("{} must be =0 or greater than SlatWidth/2, entered value = {:.2R}", cNumericFieldNames(16), rNumericArgs(16))); } @@ -8569,8 +8767,9 @@ namespace HeatBalanceManager { WindowThermalModel(Loop).SDScalar = rNumericArgs(1); if ((rNumericArgs(1) < 0.0) || (rNumericArgs(1) > 1.0)) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(1) + - " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + cNumericFieldNames(1) + + " has been found."); ShowContinueError(state, format("{} should be >= 0.0 and <= 1.0, entered value = {:.2R}", cNumericFieldNames(1), rNumericArgs(1))); } @@ -8584,10 +8783,11 @@ namespace HeatBalanceManager { WindowThermalModel(Loop).CalculationStandard = csEN673Design; } else { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cAlphaFieldNames(2) + " has been found."); - ShowContinueError(state, cAlphaFieldNames(2) + " entered value = \"" + cAlphaArgs(2) + - "\" should be ISO15099, EN673Declared or EN673Design."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cAlphaFieldNames(2) + " has been found."); + ShowContinueError( + state, cAlphaFieldNames(2) + " entered value = \"" + cAlphaArgs(2) + "\" should be ISO15099, EN673Declared or EN673Design."); } } @@ -8603,11 +8803,13 @@ namespace HeatBalanceManager { WindowThermalModel(Loop).ThermalModel = tmConvectiveScalarModel_WithSDThickness; } else { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cAlphaFieldNames(3) + " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cAlphaFieldNames(3) + " has been found."); ShowContinueError(state, - cAlphaFieldNames(3) + " entered value = \"" + cAlphaArgs(3) + - "\" should be ISO15099, ScaledCavityWidth, ConvectiveScalarModel_NoSDThickness or ConvectiveScalarModel_WithSDThickness."); + cAlphaFieldNames(3) + " entered value = \"" + cAlphaArgs(3) + + "\" should be ISO15099, ScaledCavityWidth, ConvectiveScalarModel_NoSDThickness or " + "ConvectiveScalarModel_WithSDThickness."); } } @@ -8621,10 +8823,12 @@ namespace HeatBalanceManager { WindowThermalModel(Loop).DeflectionModel = dmMeasuredDeflection; } else { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cAlphaFieldNames(4) + " has been found."); - ShowContinueError(state, cAlphaFieldNames(4) + " entered value = \"" + cAlphaArgs(4) + - "\" should be NoDeflection, TemperatureAndPressureInput or MeasuredDeflection."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cAlphaFieldNames(4) + " has been found."); + ShowContinueError(state, + cAlphaFieldNames(4) + " entered value = \"" + cAlphaArgs(4) + + "\" should be NoDeflection, TemperatureAndPressureInput or MeasuredDeflection."); } } @@ -8632,24 +8836,27 @@ namespace HeatBalanceManager { WindowThermalModel(Loop).VacuumPressureLimit = rNumericArgs(2); if (rNumericArgs(2) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cNumericFieldNames(2) + " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cNumericFieldNames(2) + " has been found."); ShowContinueError(state, format("{} must be > 0, entered value = {:.2R}", cNumericFieldNames(2), rNumericArgs(2))); } WindowThermalModel(Loop).InitialTemperature = rNumericArgs(3); if (rNumericArgs(3) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cNumericFieldNames(3) + " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cNumericFieldNames(3) + " has been found."); ShowContinueError(state, format("{} must be > 0, entered value = {:.2R}", cNumericFieldNames(3), rNumericArgs(3))); } WindowThermalModel(Loop).InitialPressure = rNumericArgs(4); if (rNumericArgs(4) <= 0.0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + - cNumericFieldNames(4) + " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + ", object. Illegal value for " + + cNumericFieldNames(4) + " has been found."); ShowContinueError(state, format("{} must be > 0, entered value = {:.2R}", cNumericFieldNames(4), rNumericArgs(4))); } } @@ -8682,8 +8889,8 @@ namespace HeatBalanceManager { _, locAlphaFieldNames, locNumericFieldNames); - if (GlobalNames::VerifyUniqueInterObjectName(state, - UniqueConstructNames, locAlphaArgs(1), CurrentModuleObject, locAlphaFieldNames(1), ErrorsFound)) { + if (GlobalNames::VerifyUniqueInterObjectName( + state, UniqueConstructNames, locAlphaArgs(1), CurrentModuleObject, locAlphaFieldNames(1), ErrorsFound)) { continue; } ++ConstrNum; @@ -8712,9 +8919,11 @@ namespace HeatBalanceManager { } else { // throw error ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal value for " + - locAlphaFieldNames(2) + " has been found."); - ShowContinueError(state, locAlphaFieldNames(2) + " entered value=\"" + locAlphaArgs(2) + "\" should be LBNLWindow or UserDefined."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal value for " + + locAlphaFieldNames(2) + " has been found."); + ShowContinueError(state, + locAlphaFieldNames(2) + " entered value=\"" + locAlphaArgs(2) + "\" should be LBNLWindow or UserDefined."); } } @@ -8727,8 +8936,9 @@ namespace HeatBalanceManager { } else { // throw error ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal value for " + - locAlphaFieldNames(3) + " has been found."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal value for " + + locAlphaFieldNames(3) + " has been found."); ShowContinueError(state, locAlphaFieldNames(3) + " entered value = \"" + locAlphaArgs(3) + "\" should be Axisymmetric or None."); } } @@ -8736,10 +8946,12 @@ namespace HeatBalanceManager { // Simon: Assign thermal model number ThermalModelNum = UtilityRoutines::FindItemInList(locAlphaArgs(4), WindowThermalModel); if (ThermalModelNum == 0) { - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal value for " + - locAlphaFieldNames(4) + " has been found."); - ShowContinueError(state, locAlphaFieldNames(4) + " entered value = \"" + locAlphaArgs(4) + - "\" no corresponding thermal model (WindowThermalModel:Params) found in the input file."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal value for " + + locAlphaFieldNames(4) + " has been found."); + ShowContinueError(state, + locAlphaFieldNames(4) + " entered value = \"" + locAlphaArgs(4) + + "\" no corresponding thermal model (WindowThermalModel:Params) found in the input file."); } else { state.dataConstruction->Construct(ConstrNum).BSDFInput.ThermalModel = ThermalModelNum; } @@ -8754,15 +8966,21 @@ namespace HeatBalanceManager { if (NumCols != 2 && NumCols != 1) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal value for " + - locAlphaFieldNames(5) + " has been found."); - ShowContinueError(state, locAlphaFieldNames(5) + " entered value=\"" + locAlphaArgs(5) + - "\" invalid matrix dimensions. Basis matrix dimension can only be 2 x 1."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal value for " + + locAlphaFieldNames(5) + " has been found."); + ShowContinueError(state, + locAlphaFieldNames(5) + " entered value=\"" + locAlphaArgs(5) + + "\" invalid matrix dimensions. Basis matrix dimension can only be 2 x 1."); } state.dataConstruction->Construct(ConstrNum).BSDFInput.BasisMat.allocate(NumCols, NumRows); - Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.BasisMatIndex, state.dataConstruction->Construct(ConstrNum).BSDFInput.BasisMat); + Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.BasisMatIndex, + state.dataConstruction->Construct(ConstrNum).BSDFInput.BasisMat); if (state.dataConstruction->Construct(ConstrNum).BSDFInput.BasisType == DataBSDFWindow::BasisType_WINDOW) - CalculateBasisLength(state, state.dataConstruction->Construct(ConstrNum).BSDFInput, ConstrNum, state.dataConstruction->Construct(ConstrNum).BSDFInput.NBasis); + CalculateBasisLength(state, + state.dataConstruction->Construct(ConstrNum).BSDFInput, + ConstrNum, + state.dataConstruction->Construct(ConstrNum).BSDFInput.NBasis); // determine number of layers and optical layers NumOfTotalLayers = (NumAlphas - 9) / 3; @@ -8796,32 +9014,39 @@ namespace HeatBalanceManager { if (NumRows != NBasis) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); - ShowContinueError(state, + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); + ShowContinueError( + state, "Solar front transmittance matrix \"" + locAlphaArgs(6) + - "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + - locAlphaArgs(5) + "\"."); + "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + + locAlphaArgs(5) + "\"."); } if (NumRows != NumCols) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); - ShowContinueError(state, "Solar front transmittance matrix \"" + locAlphaArgs(6) + "\" must have the same number of rows and columns."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); + ShowContinueError(state, + "Solar front transmittance matrix \"" + locAlphaArgs(6) + "\" must have the same number of rows and columns."); } if (state.dataConstruction->Construct(ConstrNum).BSDFInput.BasisType == DataBSDFWindow::BasisType_Custom) { state.dataConstruction->Construct(ConstrNum).BSDFInput.NBasis = NumRows; // For custom basis, no rows in transmittance - // matrix defines the basis length + // matrix defines the basis length } state.dataConstruction->Construct(ConstrNum).BSDFInput.SolFrtTrans.allocate(NumCols, NumRows); if (state.dataConstruction->Construct(ConstrNum).BSDFInput.SolFrtTransIndex == 0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + - ", object. Referenced Matrix:TwoDimension is missing from the input file."); - ShowContinueError(state, "Solar front transmittance Matrix:TwoDimension = \"" + locAlphaArgs(6) + "\" is missing from the input file."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + + ", object. Referenced Matrix:TwoDimension is missing from the input file."); + ShowContinueError(state, + "Solar front transmittance Matrix:TwoDimension = \"" + locAlphaArgs(6) + "\" is missing from the input file."); } else { - Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.SolFrtTransIndex, state.dataConstruction->Construct(ConstrNum).BSDFInput.SolFrtTrans); + Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.SolFrtTransIndex, + state.dataConstruction->Construct(ConstrNum).BSDFInput.SolFrtTrans); } // ******************************************************************************* @@ -8834,27 +9059,34 @@ namespace HeatBalanceManager { if (NumRows != NBasis) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); - ShowContinueError(state, + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); + ShowContinueError( + state, "Solar back reflectance matrix \"" + locAlphaArgs(7) + - "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + - locAlphaArgs(5) + "\"."); + "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + + locAlphaArgs(5) + "\"."); } if (NumRows != NumCols) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); - ShowContinueError(state, "Solar bakc reflectance matrix \"" + locAlphaArgs(7) + "\" must have the same number of rows and columns."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); + ShowContinueError(state, + "Solar bakc reflectance matrix \"" + locAlphaArgs(7) + "\" must have the same number of rows and columns."); } state.dataConstruction->Construct(ConstrNum).BSDFInput.SolBkRefl.allocate(NumCols, NumRows); if (state.dataConstruction->Construct(ConstrNum).BSDFInput.SolBkReflIndex == 0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + - ", object. Referenced Matrix:TwoDimension is missing from the input file."); - ShowContinueError(state, "Solar back reflectance Matrix:TwoDimension = \"" + locAlphaArgs(7) + "\" is missing from the input file."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + + ", object. Referenced Matrix:TwoDimension is missing from the input file."); + ShowContinueError(state, + "Solar back reflectance Matrix:TwoDimension = \"" + locAlphaArgs(7) + "\" is missing from the input file."); } else { - Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.SolBkReflIndex, state.dataConstruction->Construct(ConstrNum).BSDFInput.SolBkRefl); + Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.SolBkReflIndex, + state.dataConstruction->Construct(ConstrNum).BSDFInput.SolBkRefl); } // ******************************************************************************* @@ -8867,29 +9099,34 @@ namespace HeatBalanceManager { if (NumRows != NBasis) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); - ShowContinueError(state, + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); + ShowContinueError( + state, "Visible front transmittance matrix \"" + locAlphaArgs(8) + - "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + - locAlphaArgs(5) + "\"."); + "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + + locAlphaArgs(5) + "\"."); } if (NumRows != NumCols) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); - ShowContinueError(state, "Visible front transmittance matrix \"" + locAlphaArgs(8) + - "\" must have the same number of rows and columns."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); + ShowContinueError( + state, "Visible front transmittance matrix \"" + locAlphaArgs(8) + "\" must have the same number of rows and columns."); } state.dataConstruction->Construct(ConstrNum).BSDFInput.VisFrtTrans.allocate(NumCols, NumRows); if (state.dataConstruction->Construct(ConstrNum).BSDFInput.VisFrtTransIndex == 0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + cCurrentModuleObject + "=\"" + locAlphaArgs(1) + - ", object. Referenced Matrix:TwoDimension is missing from the input file."); - ShowContinueError(state, "Visible front transmittance Matrix:TwoDimension = \"" + locAlphaArgs(8) + - "\" is missing from the input file."); + ShowSevereError(state, + RoutineName + cCurrentModuleObject + "=\"" + locAlphaArgs(1) + + ", object. Referenced Matrix:TwoDimension is missing from the input file."); + ShowContinueError( + state, "Visible front transmittance Matrix:TwoDimension = \"" + locAlphaArgs(8) + "\" is missing from the input file."); } else { - Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.VisFrtTransIndex, state.dataConstruction->Construct(ConstrNum).BSDFInput.VisFrtTrans); + Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.VisFrtTransIndex, + state.dataConstruction->Construct(ConstrNum).BSDFInput.VisFrtTrans); } // ******************************************************************************* @@ -8902,27 +9139,33 @@ namespace HeatBalanceManager { if (NumRows != NBasis) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); - ShowContinueError(state, + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); + ShowContinueError( + state, "Visible back reflectance matrix \"" + locAlphaArgs(9) + - "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + - locAlphaArgs(5) + "\"."); + "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + + locAlphaArgs(5) + "\"."); } if (NumRows != NumCols) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); ShowContinueError(state, "Visible back reflectance \"" + locAlphaArgs(9) + "\" must have the same number of rows and columns."); } state.dataConstruction->Construct(ConstrNum).BSDFInput.VisBkRefl.allocate(NumCols, NumRows); if (state.dataConstruction->Construct(ConstrNum).BSDFInput.VisBkReflIndex == 0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + - ", object. Referenced Matrix:TwoDimension is missing from the input file."); - ShowContinueError(state, "Visble back reflectance Matrix:TwoDimension = \"" + locAlphaArgs(9) + "\" is missing from the input file."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + + ", object. Referenced Matrix:TwoDimension is missing from the input file."); + ShowContinueError(state, + "Visble back reflectance Matrix:TwoDimension = \"" + locAlphaArgs(9) + "\" is missing from the input file."); } else { - Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.VisBkReflIndex, state.dataConstruction->Construct(ConstrNum).BSDFInput.VisBkRefl); + Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.VisBkReflIndex, + state.dataConstruction->Construct(ConstrNum).BSDFInput.VisBkRefl); } // ALLOCATE(Construct(ConstrNum)%BSDFInput%Layer(NumOfOpticalLayers)) @@ -8930,23 +9173,27 @@ namespace HeatBalanceManager { AlphaIndex = 9 + (Layer * 3) - 2; currentOpticalLayer = int(Layer / 2) + 1; // Material info is contained in the thermal construct - state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) = UtilityRoutines::FindItemInList(locAlphaArgs(AlphaIndex), state.dataMaterial->Material); + state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) = + UtilityRoutines::FindItemInList(locAlphaArgs(AlphaIndex), state.dataMaterial->Material); // Simon: Load only if optical layer if (mod(Layer, 2) != 0) { - state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).MaterialIndex = state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer); + state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).MaterialIndex = + state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer); ++AlphaIndex; // ******************************************************************************* // Front absorptance matrix // ******************************************************************************* - state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).FrtAbsIndex = MatrixIndex(state, locAlphaArgs(AlphaIndex)); - Get2DMatrixDimensions(state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).FrtAbsIndex, NumRows, NumCols); + state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).FrtAbsIndex = + MatrixIndex(state, locAlphaArgs(AlphaIndex)); + Get2DMatrixDimensions( + state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).FrtAbsIndex, NumRows, NumCols); if (NumRows != 1) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + - "\", object. Incorrect matrix dimension."); + ShowSevereError( + state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + "\", object. Incorrect matrix dimension."); ShowContinueError(state, format("Front absorbtance Matrix:TwoDimension = \"{}\" for layer {} must have only one row.", locAlphaArgs(AlphaIndex), @@ -8955,8 +9202,8 @@ namespace HeatBalanceManager { if (NumCols != NBasis) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + - "\", object. Incorrect matrix dimension."); + ShowSevereError( + state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + "\", object. Incorrect matrix dimension."); ShowContinueError(state, format("Front absorbtance Matrix:TwoDimension = \"{}\" for layer {} must have same number of columns " "as it is defined by basis matrix.", @@ -8971,8 +9218,9 @@ namespace HeatBalanceManager { state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).FrtAbs.allocate(NumCols, NumRows); if (state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).FrtAbsIndex == 0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + - ", object. Referenced Matrix:TwoDimension is missing from the input file."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + + ", object. Referenced Matrix:TwoDimension is missing from the input file."); ShowContinueError(state, format("Front absorbtance Matrix:TwoDimension = \"{}\" for layer {} is missing from the input file.", locAlphaArgs(AlphaIndex), @@ -8986,13 +9234,15 @@ namespace HeatBalanceManager { // ******************************************************************************* // Back absorptance matrix // ******************************************************************************* - state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).BkAbsIndex = MatrixIndex(state, locAlphaArgs(AlphaIndex)); - Get2DMatrixDimensions(state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).BkAbsIndex, NumRows, NumCols); + state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).BkAbsIndex = + MatrixIndex(state, locAlphaArgs(AlphaIndex)); + Get2DMatrixDimensions( + state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).BkAbsIndex, NumRows, NumCols); if (NumRows != 1) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + - "\", object. Incorrect matrix dimension."); + ShowSevereError( + state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + "\", object. Incorrect matrix dimension."); ShowContinueError(state, format("Back absorbtance Matrix:TwoDimension = \"{}\" for layer {} must have only one row.", locAlphaArgs(AlphaIndex), @@ -9001,8 +9251,8 @@ namespace HeatBalanceManager { if (NumCols != NBasis) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + - "\", object. Incorrect matrix dimension."); + ShowSevereError( + state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + "\", object. Incorrect matrix dimension."); ShowContinueError(state, format("Back absorbtance Matrix:TwoDimension = \"{}\" for layer {} must have same number of columns as " "it is defined by basis matrix.", @@ -9016,8 +9266,9 @@ namespace HeatBalanceManager { state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).BkAbs.allocate(NumCols, NumRows); if (state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).BkAbsIndex == 0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + - ", object. Referenced Matrix:TwoDimension is missing from the input file."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + + ", object. Referenced Matrix:TwoDimension is missing from the input file."); ShowContinueError(state, format("Back absorbtance Matrix:TwoDimension = \"{}\" for layer {} is missing from the input file.", locAlphaArgs(AlphaIndex), @@ -9043,25 +9294,31 @@ namespace HeatBalanceManager { if (NumRows != NBasis) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); - ShowContinueError(state, + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); + ShowContinueError( + state, "Solar front transmittance matrix \"" + locAlphaArgs(6) + - "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + - locAlphaArgs(5) + "\"."); + "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + + locAlphaArgs(5) + "\"."); } if (NumRows != NumCols) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); - ShowContinueError(state, "Solar front transmittance matrix \"" + locAlphaArgs(6) + "\" must have the same number of rows and columns."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); + ShowContinueError(state, + "Solar front transmittance matrix \"" + locAlphaArgs(6) + "\" must have the same number of rows and columns."); } state.dataConstruction->Construct(ConstrNum).BSDFInput.SolFrtTrans.allocate(NBasis, NBasis); if (state.dataConstruction->Construct(ConstrNum).BSDFInput.SolFrtTransIndex == 0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + - ", object. Referenced Matrix:TwoDimension is missing from the input file."); - ShowContinueError(state, "Solar front transmittance Matrix:TwoDimension = \"" + locAlphaArgs(6) + "\" is missing from the input file."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + + ", object. Referenced Matrix:TwoDimension is missing from the input file."); + ShowContinueError(state, + "Solar front transmittance Matrix:TwoDimension = \"" + locAlphaArgs(6) + "\" is missing from the input file."); } else { Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.SolFrtTransIndex, state.dataBSDFWindow->BSDFTempMtrx); @@ -9081,25 +9338,31 @@ namespace HeatBalanceManager { if (NumRows != NBasis) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); - ShowContinueError(state, + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); + ShowContinueError( + state, "Solar back reflectance matrix \"" + locAlphaArgs(7) + - "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + - locAlphaArgs(5) + "\"."); + "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + + locAlphaArgs(5) + "\"."); } if (NumRows != NumCols) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); - ShowContinueError(state, "Solar back reflectance matrix \"" + locAlphaArgs(7) + "\" must have the same number of rows and columns."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); + ShowContinueError(state, + "Solar back reflectance matrix \"" + locAlphaArgs(7) + "\" must have the same number of rows and columns."); } state.dataConstruction->Construct(ConstrNum).BSDFInput.SolBkRefl.allocate(NBasis, NBasis); if (state.dataConstruction->Construct(ConstrNum).BSDFInput.SolBkReflIndex == 0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + - ", object. Referenced Matrix:TwoDimension is missing from the input file."); - ShowContinueError(state, "Solar back reflectance Matrix:TwoDimension = \"" + locAlphaArgs(7) + "\" is missing from the input file."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + + ", object. Referenced Matrix:TwoDimension is missing from the input file."); + ShowContinueError(state, + "Solar back reflectance Matrix:TwoDimension = \"" + locAlphaArgs(7) + "\" is missing from the input file."); } else { Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.SolBkReflIndex, state.dataBSDFWindow->BSDFTempMtrx); state.dataConstruction->Construct(ConstrNum).BSDFInput.SolBkRefl = 0.0; @@ -9118,27 +9381,31 @@ namespace HeatBalanceManager { if (NumRows != NBasis) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); - ShowContinueError(state, + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); + ShowContinueError( + state, "Visible front transmittance matrix \"" + locAlphaArgs(8) + - "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + - locAlphaArgs(5) + "\"."); + "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + + locAlphaArgs(5) + "\"."); } if (NumRows != NumCols) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); - ShowContinueError(state, "Visible front transmittance matrix \"" + locAlphaArgs(8) + - "\" must have the same number of rows and columns."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); + ShowContinueError( + state, "Visible front transmittance matrix \"" + locAlphaArgs(8) + "\" must have the same number of rows and columns."); } state.dataConstruction->Construct(ConstrNum).BSDFInput.VisFrtTrans.allocate(NBasis, NBasis); if (state.dataConstruction->Construct(ConstrNum).BSDFInput.VisFrtTransIndex == 0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + - ", object. Referenced Matrix:TwoDimension is missing from the input file."); - ShowContinueError(state, "Visible front transmittance Matrix:TwoDimension = \"" + locAlphaArgs(8) + - "\" is missing from the input file."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + + ", object. Referenced Matrix:TwoDimension is missing from the input file."); + ShowContinueError( + state, "Visible front transmittance Matrix:TwoDimension = \"" + locAlphaArgs(8) + "\" is missing from the input file."); } else { Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.VisFrtTransIndex, state.dataBSDFWindow->BSDFTempMtrx); state.dataConstruction->Construct(ConstrNum).BSDFInput.VisFrtTrans = 0.0; @@ -9157,25 +9424,31 @@ namespace HeatBalanceManager { if (NumRows != NBasis) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); - ShowContinueError(state, + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + ", object. Illegal matrix size has been found."); + ShowContinueError( + state, "Visible back reflectance matrix \"" + locAlphaArgs(9) + - "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + - locAlphaArgs(5) + "\"."); + "\" is not the same size as it is defined by basis definition. Basis size is defined by Matrix:TwoDimension = \"" + + locAlphaArgs(5) + "\"."); } if (NumRows != NumCols) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); - ShowContinueError(state, "Visible back reflectance matrix \"" + locAlphaArgs(9) + "\" must have the same number of rows and columns."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + "\", object. Invalid BSDF matrix dimensions."); + ShowContinueError(state, + "Visible back reflectance matrix \"" + locAlphaArgs(9) + "\" must have the same number of rows and columns."); } state.dataConstruction->Construct(ConstrNum).BSDFInput.VisBkRefl.allocate(NBasis, NBasis); if (state.dataConstruction->Construct(ConstrNum).BSDFInput.VisBkReflIndex == 0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + - ", object. Referenced Matrix:TwoDimension is missing from the input file."); - ShowContinueError(state, "Visible back reflectance Matrix:TwoDimension = \"" + locAlphaArgs(9) + "\" is missing from the input file."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + + ", object. Referenced Matrix:TwoDimension is missing from the input file."); + ShowContinueError(state, + "Visible back reflectance Matrix:TwoDimension = \"" + locAlphaArgs(9) + "\" is missing from the input file."); } else { Get2DMatrix(state.dataConstruction->Construct(ConstrNum).BSDFInput.VisBkReflIndex, state.dataBSDFWindow->BSDFTempMtrx); state.dataConstruction->Construct(ConstrNum).BSDFInput.VisBkRefl = 0.0; @@ -9199,22 +9472,26 @@ namespace HeatBalanceManager { AlphaIndex = 9 + (Layer * 3) - 2; currentOpticalLayer = int(Layer / 2) + 1; - state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) = UtilityRoutines::FindItemInList(locAlphaArgs(AlphaIndex), state.dataMaterial->Material); + state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer) = + UtilityRoutines::FindItemInList(locAlphaArgs(AlphaIndex), state.dataMaterial->Material); if (mod(Layer, 2) != 0) { - state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).MaterialIndex = state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer); + state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).MaterialIndex = + state.dataConstruction->Construct(ConstrNum).LayerPoint(Layer); // ******************************************************************************* // Front absorptance matrix // ******************************************************************************* ++AlphaIndex; - state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).FrtAbsIndex = MatrixIndex(state, locAlphaArgs(AlphaIndex)); - Get2DMatrixDimensions(state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).FrtAbsIndex, NumRows, NumCols); + state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).FrtAbsIndex = + MatrixIndex(state, locAlphaArgs(AlphaIndex)); + Get2DMatrixDimensions( + state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).FrtAbsIndex, NumRows, NumCols); if (NumRows != 1) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + - "\", object. Incorrect matrix dimension."); + ShowSevereError( + state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + "\", object. Incorrect matrix dimension."); ShowContinueError(state, format("Front absorbtance Matrix:TwoDimension = \"{}\" for layer {} must have only one row.", locAlphaArgs(AlphaIndex), @@ -9223,8 +9500,8 @@ namespace HeatBalanceManager { if (NumCols != NBasis) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + - "\", object. Incorrect matrix dimension."); + ShowSevereError( + state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + "\", object. Incorrect matrix dimension."); ShowContinueError(state, format("Front absorbtance Matrix:TwoDimension = \"{}\" for layer {} must have same number of columns " "as it is defined by basis matrix.", @@ -9240,8 +9517,9 @@ namespace HeatBalanceManager { if (state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).FrtAbsIndex == 0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + - ", object. Referenced Matrix:TwoDimension is missing from the input file."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + + ", object. Referenced Matrix:TwoDimension is missing from the input file."); ShowContinueError(state, format("Front absorbtance Matrix:TwoDimension = \"{}\" for layer {} is missing from the input file.", locAlphaArgs(AlphaIndex), @@ -9255,13 +9533,15 @@ namespace HeatBalanceManager { // Back absorptance matrix // ******************************************************************************* ++AlphaIndex; - state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).BkAbsIndex = MatrixIndex(state, locAlphaArgs(AlphaIndex)); - Get2DMatrixDimensions(state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).BkAbsIndex, NumRows, NumCols); + state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).BkAbsIndex = + MatrixIndex(state, locAlphaArgs(AlphaIndex)); + Get2DMatrixDimensions( + state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).BkAbsIndex, NumRows, NumCols); if (NumRows != 1) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + - "\", object. Incorrect matrix dimension."); + ShowSevereError( + state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + "\", object. Incorrect matrix dimension."); ShowContinueError(state, format("Back absorbtance Matrix:TwoDimension = \"{}\" for layer {} must have only one row.", locAlphaArgs(AlphaIndex), @@ -9270,8 +9550,8 @@ namespace HeatBalanceManager { if (NumCols != NBasis) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + - "\", object. Incorrect matrix dimension."); + ShowSevereError( + state, RoutineName + locCurrentModuleObject + " = \"" + locAlphaArgs(1) + "\", object. Incorrect matrix dimension."); ShowContinueError(state, format("Back absorbtance Matrix:TwoDimension = \"{}\" for layer {} must have same number of columns as " "it is defined by basis matrix.", @@ -9286,8 +9566,9 @@ namespace HeatBalanceManager { if (state.dataConstruction->Construct(ConstrNum).BSDFInput.Layer(currentOpticalLayer).BkAbsIndex == 0) { ErrorsFound = true; - ShowSevereError(state, RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + - ", object. Referenced Matrix:TwoDimension is missing from the input file."); + ShowSevereError(state, + RoutineName + locCurrentModuleObject + "=\"" + locAlphaArgs(1) + + ", object. Referenced Matrix:TwoDimension is missing from the input file."); ShowContinueError(state, format("Back absorbtance Matrix:TwoDimension = \"{}\" for layer {} is missing from the input file.", locAlphaArgs(AlphaIndex), @@ -9320,7 +9601,7 @@ namespace HeatBalanceManager { { bool ErrorsFound(false); // Flag for input error condition bool DoCTFErrorReport(false); - for (auto & construction : state.dataConstruction->Construct) { + for (auto &construction : state.dataConstruction->Construct) { construction.calculateTransferFunction(state, ErrorsFound, DoCTFErrorReport); } @@ -9337,7 +9618,7 @@ namespace HeatBalanceManager { print(state.files.eio, "! ,Time,Outside,Cross,Inside,Flux (except final one)\n"); int cCounter = 0; // just used to keep construction index in output report - for (auto & construction : state.dataConstruction->Construct) { + for (auto &construction : state.dataConstruction->Construct) { cCounter++; if (!construction.IsUsedCTF) continue; construction.reportTransferFunction(state, cCounter); diff --git a/src/EnergyPlus/HeatBalanceSurfaceManager.cc b/src/EnergyPlus/HeatBalanceSurfaceManager.cc index 07f92d21170..2a1765d610a 100644 --- a/src/EnergyPlus/HeatBalanceSurfaceManager.cc +++ b/src/EnergyPlus/HeatBalanceSurfaceManager.cc @@ -726,7 +726,7 @@ namespace HeatBalanceSurfaceManager { CTFConstOutPart = 0.0; CTFConstInPart = 0.0; - if (AnyConstructInternalSourceInInput) { + if (AnyInternalHeatSourceInInput) { CTFTsrcConstPart = 0.0; CTFTuserConstPart = 0.0; } @@ -1405,7 +1405,7 @@ namespace HeatBalanceSurfaceManager { IsNotPoolSurf.dimension(TotSurfaces, 0); TempTermSurf.dimension(TotSurfaces, 0); TempDivSurf.dimension(TotSurfaces, 0); - if (AnyConstructInternalSourceInInput) { + if (AnyInternalHeatSourceInInput) { CTFTsrcConstPart.dimension(TotSurfaces, 0.0); CTFTuserConstPart.dimension(TotSurfaces, 0.0); } @@ -1508,7 +1508,7 @@ namespace HeatBalanceSurfaceManager { QH.dimension(2, Construction::MaxCTFTerms, TotSurfaces, 0.0); THM.dimension(2, Construction::MaxCTFTerms, TotSurfaces, 0.0); QHM.dimension(2, Construction::MaxCTFTerms, TotSurfaces, 0.0); - if (AnyConstructInternalSourceInInput) { + if (AnyInternalHeatSourceInInput) { TempSource.dimension(TotSurfaces, 0.0); TempUserLoc.dimension(TotSurfaces, 0.0); TsrcHist.dimension(TotSurfaces, Construction::MaxCTFTerms, 0.0); @@ -2206,7 +2206,7 @@ namespace HeatBalanceSurfaceManager { THM = 23.0; // module level array QH = 0.0; QHM = 0.0; - if (AnyConstructInternalSourceInInput) { + if (AnyInternalHeatSourceInInput) { TsrcHist = 23.0; TsrcHistM = 23.0; TuserHist = 23.0; @@ -4658,7 +4658,7 @@ namespace HeatBalanceSurfaceManager { assert(equal_dimensions(TH, THM)); assert(equal_dimensions(TH, QH)); assert(equal_dimensions(TH, QHM)); - if (AnyConstructInternalSourceInInput) { + if (AnyInternalHeatSourceInInput) { assert(equal_dimensions(TsrcHist, QsrcHist)); assert(equal_dimensions(TsrcHist, TsrcHistM)); assert(equal_dimensions(TsrcHistM, QsrcHistM)); @@ -4673,7 +4673,7 @@ namespace HeatBalanceSurfaceManager { TempInt1.dimension(TotSurfaces, 0.0); TempExt1.dimension(TotSurfaces, 0.0); SumTime.dimension(TotSurfaces, 0.0); - if (AnyConstructInternalSourceInInput) { + if (AnyInternalHeatSourceInInput) { Qsrc1.dimension(TotSurfaces, 0.0); Tsrc1.dimension(TotSurfaces, 0.0); Tuser1.dimension(TotSurfaces, 0.0); @@ -4770,7 +4770,7 @@ namespace HeatBalanceSurfaceManager { TempInt1(SurfNum) = TempSurfIn(SurfNum); QExt1(SurfNum) = QH[l11]; QInt1(SurfNum) = QH[l21]; - if (AnyConstructInternalSourceInInput) { + if (AnyInternalHeatSourceInInput) { Tsrc1(SurfNum) = TsrcHist(SurfNum, 1); Tuser1(SurfNum) = TuserHist(SurfNum, 1); Qsrc1(SurfNum) = QsrcHist(SurfNum, 1); @@ -5566,7 +5566,7 @@ namespace HeatBalanceSurfaceManager { bool MovInsulErrorFlag = false; // Movable Insulation error flag - if (AnyConstructInternalSourceInInput) { + if (AnyInternalHeatSourceInInput) { for (int SurfNum = 1; SurfNum <= TotSurfaces; ++SurfNum) { // Need to transfer any source/sink for a surface to the local array. Note that // the local array is flux (W/m2) while the QRadSysSource is heat transfer (W). @@ -7386,7 +7386,7 @@ namespace HeatBalanceSurfaceManager { (HMovInsul); } - if (AnyConstructInternalSourceInInput) { + if (AnyInternalHeatSourceInInput) { if (state.dataConstruction->Construct(Surface(surfNum).Construction).SourceSinkPresent) { // Set the appropriate parameters for the radiant system // Radiant system does not need the damping coefficient terms (hopefully) diff --git a/src/EnergyPlus/LowTempRadiantSystem.cc b/src/EnergyPlus/LowTempRadiantSystem.cc index d5046cdc502..6ccbf73c58e 100644 --- a/src/EnergyPlus/LowTempRadiantSystem.cc +++ b/src/EnergyPlus/LowTempRadiantSystem.cc @@ -1828,7 +1828,7 @@ namespace LowTempRadiantSystem { ShowSevereError(state, "Construction referenced in Radiant System Surface does not have a source/sink present"); ShowContinueError(state, "Surface name= " + Surface(this->SurfacePtr(SurfNum)).Name + " Construction name = " + state.dataConstruction->Construct(Surface(this->SurfacePtr(SurfNum)).Construction).Name); - ShowContinueError(state, "Construction needs to be defined with a \"Construction:InternalSource\" object."); + ShowContinueError(state, "Construction needs to be referenced by a \"ConstructionProperty:InternalHeatSource\" object."); errorsFound = true; } } diff --git a/src/EnergyPlus/LowTempRadiantSystem.hh b/src/EnergyPlus/LowTempRadiantSystem.hh index 2346fe05e9b..5bda4f73b60 100644 --- a/src/EnergyPlus/LowTempRadiantSystem.hh +++ b/src/EnergyPlus/LowTempRadiantSystem.hh @@ -91,7 +91,7 @@ namespace LowTempRadiantSystem { ODBControl, // Controls system using outside air dry-bulb temperature OWBControl, // Controls system using outside air wet-bulb temperature SurfFaceTempControl, // Controls system using the surface inside face temperature - SurfIntTempControl, // Controls system using a temperature inside the radiant system construction as defined by the Construction:InternalSource input + SurfIntTempControl, // Controls system using a temperature inside the radiant system construction as defined by the Construction + ConstructionProperty:InternalHeatSource inputs RunningMeanODBControl // Controls system using the running mean outdoor dry-bulb temperature }; // Setpoint Types: diff --git a/src/EnergyPlus/SurfaceGroundHeatExchanger.cc b/src/EnergyPlus/SurfaceGroundHeatExchanger.cc index bb051ac47d2..a2ac1ae1bef 100644 --- a/src/EnergyPlus/SurfaceGroundHeatExchanger.cc +++ b/src/EnergyPlus/SurfaceGroundHeatExchanger.cc @@ -231,7 +231,7 @@ namespace SurfaceGroundHeatExchanger { if (!state.dataConstruction->Construct(state.dataSurfaceGroundHeatExchangers->SurfaceGHE(Item).ConstructionNum).SourceSinkPresent) { ShowSevereError(state, "Invalid " + cAlphaFieldNames(2) + '=' + cAlphaArgs(2)); ShowContinueError(state, "Entered in " + cCurrentModuleObject + '=' + cAlphaArgs(1)); - ShowContinueError(state, "Construction must have internal source/sink and use Construction:InternalSource object"); + ShowContinueError(state, "Construction must have internal source/sink and be referenced by a ConstructionProperty:InternalHeatSource object"); ErrorsFound = true; } diff --git a/src/Transition/CreateNewIDFUsingRulesV9_5_0.f90 b/src/Transition/CreateNewIDFUsingRulesV9_5_0.f90 index d1e4eaaaf65..99c7ab193b0 100644 --- a/src/Transition/CreateNewIDFUsingRulesV9_5_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV9_5_0.f90 @@ -498,6 +498,23 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile CALL WriteOutIDFLines(DifLfn,ObjectName,14,OutArgs,NwFldNames,NwFldUnits) Written = .true. + CASE('CONSTRUCTION:INTERNALSOURCE') + ! Do not write the old object + Written=.true. + + CALL GetNewObjectDefInIDD('ConstructionProperty:InternalHeatSource',NwNumArgs,NwAorN,NwReqFld,NwObjMinFlds,NwFldNames,NwFldDefaults,NwFldUnits) + OutArgs(1) = TRIM(InArgs(1)) // ' Heat Source' + OutArgs(2) = InArgs(1) + OutArgs(3:7) = InArgs(2:6) + CALL WriteOutIDFLines(DifLfn,'ConstructionProperty:InternalHeatSource',NwNumArgs,OutArgs,NwFldNames,NwFldUnits) + + CALL GetNewObjectDefInIDD('Construction',NwNumArgs,NwAorN,NwReqFld,NwObjMinFlds,NwFldNames,NwFldDefaults,NwFldUnits) + ! Construction object has five fewer fields than the incoming Construction:InternalSource object + NwNumArgs = CurArgs - 5 + OutArgs(1) = InArgs(1) + OutArgs(2:NwNumArgs) = InArgs(7:CurArgs) + CALL WriteOutIDFLines(DifLfn,'Construction',NwNumArgs,OutArgs,NwFldNames,NwFldUnits) + ! If your original object starts with D, insert the rules here ! If your original object starts with E, insert the rules here diff --git a/src/Transition/InputRulesFiles/Rules9-4-0-to-9-5-0.md b/src/Transition/InputRulesFiles/Rules9-4-0-to-9-5-0.md index d10f557f222..06a0f05ade6 100644 --- a/src/Transition/InputRulesFiles/Rules9-4-0-to-9-5-0.md +++ b/src/Transition/InputRulesFiles/Rules9-4-0-to-9-5-0.md @@ -14,6 +14,27 @@ Fields 4-6 remain the same, shifting up to new fields 2-4. See [8370](https://github.com/NREL/EnergyPlus/pull/8370) +# Object Change: Construction:InternalSource to ConstructionProperty:InternalHeatSource and Construction + +Summary: Construction:InternalSource has been changed to ConstructionProperty:InternalHeatSource. The new object no longer contains the material list, but references a standard Construction object instead. + +Old fields are from the incoming Construction:InternalSource object. + +New Object ConstructionProperty:InternalHeatSource +New Field 1 (new A1) is modified by adding a suffix to the end "Heat Source". +Field 2 (new A2) is the old Field 1 (old A1) +Fields 3 thru 7 (new N1:N5) are the old Fields 2:6 (old N1:N5) + +*The new Construction:InternalHeatSource object has 7 fields.* + +New Object Construction +New Field 1 (new A1) is the old Field 1 (old A1) +Fields 2:m (new A2:Am) are the old Fields 7:n (old A2:An) + +*If the incoming object has n fields, then the new Construction object will have n-5 fields.* + +See [8442](https://github.com/NREL/EnergyPlus/pull/8442) + # Object Change: Coil:Heating:WaterToAirHeatPump:EquationFit Summary: The fields for *Heating Capacity Coefficient 1-5* and *Heating Power Consumption Coefficient 1-5* have been replaced by *Heating Capacity Curve Name* and *Heating Power Consumption Coefficient Curve Name*. Now two quad-linear curves are referenced using these two curve names. @@ -209,4 +230,3 @@ See [8464](https://github.com/NREL/EnergyPlus/pull/8464) - Field 5, previous Field 11 - Convergence Tolerance - Field 6, previous Field 12 - Fraction Radiant - Field 7, previous Field 13 - Fraction of Radiant Energy Incident on People - diff --git a/testfiles/GeneratorswithPV.idf b/testfiles/GeneratorswithPV.idf index e61e36ade49..3179ab41292 100644 --- a/testfiles/GeneratorswithPV.idf +++ b/testfiles/GeneratorswithPV.idf @@ -176,13 +176,17 @@ 0.9200000, !- Solar Absorptance 0.9200000; !- Visible Absorptance - Construction:InternalSource, - PVSpandrlPanel, !- Name + ConstructionProperty:InternalHeatSource, + PanelSource, !- Name + PVSpandrlPanel, !- Construction Name 1, !- Source Present After Layer Number 1, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.0, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + PVSpandrlPanel, !- Name PVModule(glass), !- Outside Layer PVModule(glass), !- Layer 2 B4 - 3 IN INSULATION, !- Layer 3 diff --git a/testfiles/RadHiTempElecTermReheat.idf b/testfiles/RadHiTempElecTermReheat.idf index 02912d7553c..0ca10589676 100644 --- a/testfiles/RadHiTempElecTermReheat.idf +++ b/testfiles/RadHiTempElecTermReheat.idf @@ -410,13 +410,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadHiTempGasCtrlOpt.idf b/testfiles/RadHiTempGasCtrlOpt.idf index 3be3d4ea8cd..99d56e24df6 100644 --- a/testfiles/RadHiTempGasCtrlOpt.idf +++ b/testfiles/RadHiTempGasCtrlOpt.idf @@ -404,13 +404,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadHiTempGasTermReheat.idf b/testfiles/RadHiTempGasTermReheat.idf index 9d494d589ce..52fde620315 100644 --- a/testfiles/RadHiTempGasTermReheat.idf +++ b/testfiles/RadHiTempGasTermReheat.idf @@ -410,13 +410,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoHydrHeatCoolAuto.idf b/testfiles/RadLoHydrHeatCoolAuto.idf index 12a7e00cf16..d3e56e7a378 100644 --- a/testfiles/RadLoHydrHeatCoolAuto.idf +++ b/testfiles/RadLoHydrHeatCoolAuto.idf @@ -435,13 +435,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 3, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoHydrHeatCoolAutoCondFD.idf b/testfiles/RadLoHydrHeatCoolAutoCondFD.idf index d1845dd95c9..490e45cf3c3 100644 --- a/testfiles/RadLoHydrHeatCoolAutoCondFD.idf +++ b/testfiles/RadLoHydrHeatCoolAutoCondFD.idf @@ -643,21 +643,25 @@ WIN-CON-LIGHT, !- Name WIN-LAY-GLASS-LIGHT; !- Outside Layer -!- =========== ALL OBJECTS IN CLASS: CONSTRUCTION:INTERNALSOURCE =========== - - Construction:InternalSource, + Construction, Slab Floor with Radiant, !- Name - 4, !- Source Present After Layer Number - 4, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 GYP2, !- Layer 4 FINISH FLOORING - TILE 1 / 16 IN; !- Layer 5 +!- =========== ALL OBJECTS IN CLASS: CONSTRUCTIONPROPERTY:INTERNALHEATSOURCE =========== + + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name + 4, !- Source Present After Layer Number + 4, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + !- =========== ALL OBJECTS IN CLASS: GLOBALGEOMETRYRULES =========== GlobalGeometryRules, diff --git a/testfiles/RadLoTempCFloChangeoverDelay.idf b/testfiles/RadLoTempCFloChangeoverDelay.idf index 658c5a6c8d3..7f26660c459 100644 --- a/testfiles/RadLoTempCFloChangeoverDelay.idf +++ b/testfiles/RadLoTempCFloChangeoverDelay.idf @@ -366,13 +366,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request + 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempCFloCtrlOpt2.idf b/testfiles/RadLoTempCFloCtrlOpt2.idf index ec49b17dd65..8b6eb6c3dea 100644 --- a/testfiles/RadLoTempCFloCtrlOpt2.idf +++ b/testfiles/RadLoTempCFloCtrlOpt2.idf @@ -436,13 +436,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 3, !- Source Present After Layer Number 3, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request + 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempCFloCtrlOpt3.idf b/testfiles/RadLoTempCFloCtrlOpt3.idf index d2af531dd6d..9d0f0647252 100644 --- a/testfiles/RadLoTempCFloCtrlOpt3.idf +++ b/testfiles/RadLoTempCFloCtrlOpt3.idf @@ -436,13 +436,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 3, !- Source Present After Layer Number 3, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request + 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempCFloHeatCool.idf b/testfiles/RadLoTempCFloHeatCool.idf index 6e73194ca68..aed6a6aa111 100644 --- a/testfiles/RadLoTempCFloHeatCool.idf +++ b/testfiles/RadLoTempCFloHeatCool.idf @@ -433,13 +433,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempCFloHeatCoolCondFD.idf b/testfiles/RadLoTempCFloHeatCoolCondFD.idf index dabd72dd683..c401ebdba9a 100644 --- a/testfiles/RadLoTempCFloHeatCoolCondFD.idf +++ b/testfiles/RadLoTempCFloHeatCoolCondFD.idf @@ -667,21 +667,25 @@ WIN-CON-LIGHT, !- Name WIN-LAY-GLASS-LIGHT; !- Outside Layer -!- =========== ALL OBJECTS IN CLASS: CONSTRUCTION:INTERNALSOURCE =========== - - Construction:InternalSource, + Construction, Slab Floor with Radiant, !- Name - 4, !- Source Present After Layer Number - 4, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 GYP2, !- Layer 4 FINISH FLOORING - TILE 1 / 16 IN; !- Layer 5 +!- =========== ALL OBJECTS IN CLASS: CONSTRUCTIONPROPERTY:INTERNALHEATSOURCE =========== + + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name + 4, !- Source Present After Layer Number + 4, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + !- =========== ALL OBJECTS IN CLASS: GLOBALGEOMETRYRULES =========== GlobalGeometryRules, diff --git a/testfiles/RadLoTempCFloHeatCoolRMT.idf b/testfiles/RadLoTempCFloHeatCoolRMT.idf index c30a22c2059..fbd306c1527 100644 --- a/testfiles/RadLoTempCFloHeatCoolRMT.idf +++ b/testfiles/RadLoTempCFloHeatCoolRMT.idf @@ -447,13 +447,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 3, !- Source Present After Layer Number 3, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request + 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempCFloHeatCool_AddedAutosizing.idf b/testfiles/RadLoTempCFloHeatCool_AddedAutosizing.idf index eb1e034e8be..11e3a5879e8 100644 --- a/testfiles/RadLoTempCFloHeatCool_AddedAutosizing.idf +++ b/testfiles/RadLoTempCFloHeatCool_AddedAutosizing.idf @@ -433,13 +433,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempCFloISOPipeHT.idf b/testfiles/RadLoTempCFloISOPipeHT.idf index 64d71b51621..9840303108b 100644 --- a/testfiles/RadLoTempCFloISOPipeHT.idf +++ b/testfiles/RadLoTempCFloISOPipeHT.idf @@ -431,13 +431,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request + 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempCFloTermReheat.idf b/testfiles/RadLoTempCFloTermReheat.idf index bc9860cb3db..aeb32cc167c 100644 --- a/testfiles/RadLoTempCFloTermReheat.idf +++ b/testfiles/RadLoTempCFloTermReheat.idf @@ -410,13 +410,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempElecCtrlOpt2.idf b/testfiles/RadLoTempElecCtrlOpt2.idf index 58bb2aa849c..55fec4ed29b 100644 --- a/testfiles/RadLoTempElecCtrlOpt2.idf +++ b/testfiles/RadLoTempElecCtrlOpt2.idf @@ -419,13 +419,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 3, !- Source Present After Layer Number 3, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request + 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempElecTermReheat.idf b/testfiles/RadLoTempElecTermReheat.idf index 52eea5dc9d5..76a5f5d8133 100644 --- a/testfiles/RadLoTempElecTermReheat.idf +++ b/testfiles/RadLoTempElecTermReheat.idf @@ -419,13 +419,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempElecTermReheatCondFD.idf b/testfiles/RadLoTempElecTermReheatCondFD.idf index 13aef2b784f..dc03d58348e 100644 --- a/testfiles/RadLoTempElecTermReheatCondFD.idf +++ b/testfiles/RadLoTempElecTermReheatCondFD.idf @@ -682,21 +682,25 @@ WIN-CON-LIGHT, !- Name WIN-LAY-GLASS-LIGHT; !- Outside Layer -!- =========== ALL OBJECTS IN CLASS: CONSTRUCTION:INTERNALSOURCE =========== - - Construction:InternalSource, + Construction, Slab Floor with Radiant, !- Name - 4, !- Source Present After Layer Number - 4, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 GYP2, !- Layer 4 FINISH FLOORING - TILE 1 / 16 IN; !- Layer 5 +!- =========== ALL OBJECTS IN CLASS: CONSTRUCTIONPROPERTY:INTERNALHEATSOURCE =========== + + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name + 4, !- Source Present After Layer Number + 4, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + !- =========== ALL OBJECTS IN CLASS: GLOBALGEOMETRYRULES =========== GlobalGeometryRules, diff --git a/testfiles/RadLoTempHydrChangeoverDelay.idf b/testfiles/RadLoTempHydrChangeoverDelay.idf index 9465d1e4b36..390236fbd29 100644 --- a/testfiles/RadLoTempHydrChangeoverDelay.idf +++ b/testfiles/RadLoTempHydrChangeoverDelay.idf @@ -378,13 +378,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request + 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempHydrCoolTower.idf b/testfiles/RadLoTempHydrCoolTower.idf index 00cd451bbec..4cdf535891e 100644 --- a/testfiles/RadLoTempHydrCoolTower.idf +++ b/testfiles/RadLoTempHydrCoolTower.idf @@ -401,13 +401,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempHydrCoolTowerCondFD.idf b/testfiles/RadLoTempHydrCoolTowerCondFD.idf index f071d15a968..38eef9a3fe2 100644 --- a/testfiles/RadLoTempHydrCoolTowerCondFD.idf +++ b/testfiles/RadLoTempHydrCoolTowerCondFD.idf @@ -606,21 +606,25 @@ WIN-CON-LIGHT, !- Name WIN-LAY-GLASS-LIGHT; !- Outside Layer -!- =========== ALL OBJECTS IN CLASS: CONSTRUCTION:INTERNALSOURCE =========== - - Construction:InternalSource, + Construction, Slab Floor with Radiant, !- Name - 4, !- Source Present After Layer Number - 4, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 GYP2, !- Layer 4 FINISH FLOORING - TILE 1 / 16 IN; !- Layer 5 +!- =========== ALL OBJECTS IN CLASS: CONSTRUCTIONPROPERTY:INTERNALHEATSOURCE =========== + + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name + 4, !- Source Present After Layer Number + 4, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + !- =========== ALL OBJECTS IN CLASS: GLOBALGEOMETRYRULES =========== GlobalGeometryRules, diff --git a/testfiles/RadLoTempHydrCtrlOpt.idf b/testfiles/RadLoTempHydrCtrlOpt.idf index df868cc9f17..113efcc4ee5 100644 --- a/testfiles/RadLoTempHydrCtrlOpt.idf +++ b/testfiles/RadLoTempHydrCtrlOpt.idf @@ -411,13 +411,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempHydrCtrlOpt2.idf b/testfiles/RadLoTempHydrCtrlOpt2.idf index c57163405db..cff9c913ae5 100644 --- a/testfiles/RadLoTempHydrCtrlOpt2.idf +++ b/testfiles/RadLoTempHydrCtrlOpt2.idf @@ -409,13 +409,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempHydrCtrlOpt3.idf b/testfiles/RadLoTempHydrCtrlOpt3.idf index 917022d8866..6f49f018077 100644 --- a/testfiles/RadLoTempHydrCtrlOpt3.idf +++ b/testfiles/RadLoTempHydrCtrlOpt3.idf @@ -412,13 +412,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 3, !- Source Present After Layer Number 3, !- Temperature Calculation Requested After Layer Number 2, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 1.0, !- Two-Dimensional Position of Interior Temperature Calculation Request + 1.0; !- Two-Dimensional Position of Interior Temperature Calculation Request + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempHydrHeatCool.idf b/testfiles/RadLoTempHydrHeatCool.idf index 5be1a185cae..ef1c458ea32 100644 --- a/testfiles/RadLoTempHydrHeatCool.idf +++ b/testfiles/RadLoTempHydrHeatCool.idf @@ -401,13 +401,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempHydrHeatCool2D.idf b/testfiles/RadLoTempHydrHeatCool2D.idf index a3ec566de8d..1d224345c33 100644 --- a/testfiles/RadLoTempHydrHeatCool2D.idf +++ b/testfiles/RadLoTempHydrHeatCool2D.idf @@ -401,13 +401,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 2, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempHydrHeatCoolDry.idf b/testfiles/RadLoTempHydrHeatCoolDry.idf index 511f332d72b..fd38833d903 100644 --- a/testfiles/RadLoTempHydrHeatCoolDry.idf +++ b/testfiles/RadLoTempHydrHeatCoolDry.idf @@ -401,13 +401,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempHydrHeatCoolDryCondFD.idf b/testfiles/RadLoTempHydrHeatCoolDryCondFD.idf index 07cc72da715..e470c97a82c 100644 --- a/testfiles/RadLoTempHydrHeatCoolDryCondFD.idf +++ b/testfiles/RadLoTempHydrHeatCoolDryCondFD.idf @@ -625,21 +625,25 @@ WIN-CON-LIGHT, !- Name WIN-LAY-GLASS-LIGHT; !- Outside Layer -!- =========== ALL OBJECTS IN CLASS: CONSTRUCTION:INTERNALSOURCE =========== - - Construction:InternalSource, + Construction, Slab Floor with Radiant, !- Name - 4, !- Source Present After Layer Number - 4, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 GYP2, !- Layer 4 FINISH FLOORING - TILE 1 / 16 IN; !- Layer 5 +!- =========== ALL OBJECTS IN CLASS: CONSTRUCTIONPROPERTY:INTERNALHEATSOURCE =========== + + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name + 4, !- Source Present After Layer Number + 4, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + !- =========== ALL OBJECTS IN CLASS: GLOBALGEOMETRYRULES =========== GlobalGeometryRules, diff --git a/testfiles/RadLoTempHydrHeatCoolMultiZone.idf b/testfiles/RadLoTempHydrHeatCoolMultiZone.idf index d86816cdb57..37c87285451 100644 --- a/testfiles/RadLoTempHydrHeatCoolMultiZone.idf +++ b/testfiles/RadLoTempHydrHeatCoolMultiZone.idf @@ -401,13 +401,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 3, !- Source Present After Layer Number 3, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request + 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempHydrISOPipeHT.idf b/testfiles/RadLoTempHydrISOPipeHT.idf index f1a26380e06..f4bc7abe975 100644 --- a/testfiles/RadLoTempHydrISOPipeHT.idf +++ b/testfiles/RadLoTempHydrISOPipeHT.idf @@ -399,13 +399,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request + 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/RadLoTempHydrInterMulti.idf b/testfiles/RadLoTempHydrInterMulti.idf index 185109abd0c..a388a77a047 100644 --- a/testfiles/RadLoTempHydrInterMulti.idf +++ b/testfiles/RadLoTempHydrInterMulti.idf @@ -412,38 +412,50 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + ConstructionProperty:InternalHeatSource, + PARTITION SOURCE, !- Name + PARTITION06, !- Construction Name + 2, !- Source Present After Layer Number + 2, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + ConstructionProperty:InternalHeatSource, + ROOF SOURCE, !- Name + ROOF34, !- Construction Name + 3, !- Source Present After Layer Number + 3, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 GYP2, !- Layer 4 FINISH FLOORING - TILE 1 / 16 IN; !- Layer 5 - Construction:InternalSource, + Construction, PARTITION06, !- Name - 2, !- Source Present After Layer Number - 2, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer 1 IN LW CONCRETE, !- Layer 2 1 IN LW CONCRETE, !- Layer 3 E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 - Construction:InternalSource, + Construction, ROOF34, !- Name - 3, !- Source Present After Layer Number - 3, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} 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 diff --git a/testfiles/RadLoTempHydrMulti10.idf b/testfiles/RadLoTempHydrMulti10.idf index 182117b89d1..80add1757c7 100644 --- a/testfiles/RadLoTempHydrMulti10.idf +++ b/testfiles/RadLoTempHydrMulti10.idf @@ -428,39 +428,51 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - SLAB FLOOR, !- Name + ConstructionProperty:InternalHeatSource, + SLAB SOURCE, !- Name + SLAB FLOOR, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + ConstructionProperty:InternalHeatSource, + EXTERIOR SOURCE, !- Name + EXTERIOR, !- Construction Name + 2, !- Source Present After Layer Number + 2, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + ConstructionProperty:InternalHeatSource, + ROOF SOURCE, !- Name + ROOF31, !- Construction Name + 3, !- Source Present After Layer Number + 3, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + SLAB FLOOR, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 GYP2, !- Layer 4 FINISH FLOORING - TILE 1 / 16 IN; !- Layer 5 - Construction:InternalSource, + Construction, EXTERIOR, !- Name - 2, !- Source Present After Layer Number - 2, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 GYP2, !- Layer 4 E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 5 - Construction:InternalSource, + Construction, ROOF31, !- Name - 3, !- Source Present After Layer Number - 3, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2 B6 - 2 IN DENSE INSULATION, !- Layer 3 diff --git a/testfiles/RadLoTempHydrTermReheat.idf b/testfiles/RadLoTempHydrTermReheat.idf index 06c1254a166..1790cff899f 100644 --- a/testfiles/RadLoTempHydrTermReheat.idf +++ b/testfiles/RadLoTempHydrTermReheat.idf @@ -410,13 +410,17 @@ 0.5000000, !- Solar Absorptance 0.5000000; !- Visible Absorptance - Construction:InternalSource, - Slab Floor with Radiant, !- Name + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Slab Floor with Radiant, !- Construction Name 4, !- Source Present After Layer Number 4, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Slab Floor with Radiant, !- Name CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2 GYP1, !- Layer 3 diff --git a/testfiles/SurfaceGroundHeatExchanger.idf b/testfiles/SurfaceGroundHeatExchanger.idf index c52c0a8136f..69c50d7b875 100644 --- a/testfiles/SurfaceGroundHeatExchanger.idf +++ b/testfiles/SurfaceGroundHeatExchanger.idf @@ -476,13 +476,17 @@ 0.6500000, !- Solar Absorptance 0.6500000; !- Visible Absorptance - Construction:InternalSource, - Outside Surface Construction, !- Name + ConstructionProperty:InternalHeatSource, + Internal Source, !- Name + Outside Surface Construction, !- Construction Name 1, !- Source Present After Layer Number 1, !- Temperature Calculation Requested After Layer Number 1, !- Dimensions for the CTF Calculation 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + Construction, + Outside Surface Construction, !- Name 4 IN HW CONCRETE, !- Outside Layer 4 IN HW CONCRETE; !- Layer 2 diff --git a/testfiles/VentilatedSlab.idf b/testfiles/VentilatedSlab.idf index 5a28072fc9e..526b3b92741 100644 --- a/testfiles/VentilatedSlab.idf +++ b/testfiles/VentilatedSlab.idf @@ -819,44 +819,56 @@ Sgl Grey 3mm, !- Name GREY 3MM; !- Outside Layer -!- =========== ALL OBJECTS IN CLASS: CONSTRUCTION:INTERNALSOURCE =========== - - Construction:InternalSource, + Construction, Ceiling with Radiant, !- Name - 2, !- Source Present After Layer Number - 2, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} CLN-INS, !- Outside Layer GYP1, !- Layer 2 GYP2, !- Layer 3 MAT-CLNG-1; !- Layer 4 - Construction:InternalSource, + Construction, reverseCeiling with Radiant, !- Name - 2, !- Source Present After Layer Number - 2, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} MAT-CLNG-1, !- Outside Layer GYP2, !- Layer 2 GYP1, !- Layer 3 CLN-INS; !- Layer 4 - Construction:InternalSource, + Construction, Floor with Radiant, !- Name - 2, !- Source Present After Layer Number - 2, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} INS - EXPANDED EXT POLYSTYRENE R12, !- Outside Layer CONC, !- Layer 2 CONC, !- Layer 3 FINISH FLOORING - TILE 1 / 16 IN; !- Layer 4 +!- =========== ALL OBJECTS IN CLASS: CONSTRUCTIONPROPERTY:INTERNALHEATSOURCE =========== + + ConstructionProperty:InternalHeatSource, + Ceiling Source, !- Name + Ceiling with Radiant, !- Construction Name + 2, !- Source Present After Layer Number + 2, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + ConstructionProperty:InternalHeatSource, + Reverse Ceiling Source, !- Name + reverseCeiling with Radiant, !- Construction Name + 2, !- Source Present After Layer Number + 2, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Floor with Radiant, !- Construction Name + 2, !- Source Present After Layer Number + 2, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + !- =========== ALL OBJECTS IN CLASS: GLOBALGEOMETRYRULES =========== GlobalGeometryRules, diff --git a/testfiles/VentilatedSlab_SeriesSlabs.idf b/testfiles/VentilatedSlab_SeriesSlabs.idf index e74172253ac..409f7b8c990 100644 --- a/testfiles/VentilatedSlab_SeriesSlabs.idf +++ b/testfiles/VentilatedSlab_SeriesSlabs.idf @@ -826,44 +826,56 @@ Sgl Grey 3mm, !- Name GREY 3MM; !- Outside Layer -!- =========== ALL OBJECTS IN CLASS: CONSTRUCTION:INTERNALSOURCE =========== - - Construction:InternalSource, + Construction, Ceiling with Radiant, !- Name - 2, !- Source Present After Layer Number - 2, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} CLN-INS, !- Outside Layer GYP1, !- Layer 2 GYP2, !- Layer 3 MAT-CLNG-1; !- Layer 4 - Construction:InternalSource, + Construction, reverseCeiling with Radiant, !- Name - 2, !- Source Present After Layer Number - 2, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} MAT-CLNG-1, !- Outside Layer GYP2, !- Layer 2 GYP1, !- Layer 3 CLN-INS; !- Layer 4 - Construction:InternalSource, + Construction, Floor with Radiant, !- Name - 2, !- Source Present After Layer Number - 2, !- Temperature Calculation Requested After Layer Number - 1, !- Dimensions for the CTF Calculation - 0.1524, !- Tube Spacing {m} - 0.0, !- Two-Dimensional Temperature Calculation Position {dimensionless} INS - EXPANDED EXT POLYSTYRENE R12, !- Outside Layer CONC, !- Layer 2 CONC, !- Layer 3 FINISH FLOORING - TILE 1 / 16 IN; !- Layer 4 +!- =========== ALL OBJECTS IN CLASS: CONSTRUCTIONPROPERTY:INTERNALHEATSOURCE =========== + + ConstructionProperty:InternalHeatSource, + Ceiling Source, !- Name + Ceiling with Radiant, !- Construction Name + 2, !- Source Present After Layer Number + 2, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + ConstructionProperty:InternalHeatSource, + Reverse Ceiling Source, !- Name + reverseCeiling with Radiant, !- Construction Name + 2, !- Source Present After Layer Number + 2, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + + ConstructionProperty:InternalHeatSource, + Floor Source, !- Name + Floor with Radiant, !- Construction Name + 2, !- Source Present After Layer Number + 2, !- Temperature Calculation Requested After Layer Number + 1, !- Dimensions for the CTF Calculation + 0.1524, !- Tube Spacing {m} + 0.0; !- Two-Dimensional Temperature Calculation Position {dimensionless} + !- =========== ALL OBJECTS IN CLASS: GLOBALGEOMETRYRULES =========== GlobalGeometryRules, diff --git a/tst/EnergyPlus/unit/ConstructionInternalSource.unit.cc b/tst/EnergyPlus/unit/ConstructionInternalSource.unit.cc index ea692910482..46d48ae3531 100644 --- a/tst/EnergyPlus/unit/ConstructionInternalSource.unit.cc +++ b/tst/EnergyPlus/unit/ConstructionInternalSource.unit.cc @@ -66,13 +66,16 @@ TEST_F(EnergyPlusFixture, ConstructionInternalSource) { std::string const idf_objects = delimited_string({ - " Construction:InternalSource, ", - " Slab Floor with Radiant, !- Name", + " ConstructionProperty:InternalHeatSource, ", + " Radiant Source, !- Name", + " Slab Floor with Radiant, !- Construction Name", " 4, !- Source Present After Layer Number", " 4, !- Temperature Calculation Requested After Layer Number", " 2, !- Dimensions for the CTF Calculation", " 0.3048, !- Tube Spacing {m}", - " 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request" + " 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request", + " Construction, ", + " Slab Floor with Radiant, !- Name", " CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer", " INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2", " GYP1, !- Layer 3", diff --git a/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc b/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc index 04b95b8b9f7..8642a7112c3 100644 --- a/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc +++ b/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc @@ -304,7 +304,7 @@ TEST_F(EnergyPlusFixture, HeatBalanceSurfaceManager_UpdateFinalThermalHistories) DataSurfaces::Surface.allocate(DataSurfaces::TotSurfaces); DataSurfaces::SurfaceWindow.allocate(DataSurfaces::TotSurfaces); state->dataConstruction->Construct.allocate(DataHeatBalance::TotConstructs); - DataHeatBalance::AnyConstructInternalSourceInInput = true; + DataHeatBalance::AnyInternalHeatSourceInInput = true; AllocateSurfaceHeatBalArrays(*state); // allocates a host of variables related to CTF calculations @@ -1946,7 +1946,7 @@ TEST_F(EnergyPlusFixture, HeatBalanceSurfaceManager_SurfaceCOnstructionIndexTest DataSurfaces::Surface.allocate(DataSurfaces::TotSurfaces); DataSurfaces::SurfaceWindow.allocate(DataSurfaces::TotSurfaces); state->dataConstruction->Construct.allocate(DataHeatBalance::TotConstructs); - DataHeatBalance::AnyConstructInternalSourceInInput = true; + DataHeatBalance::AnyInternalHeatSourceInInput = true; DataSurfaces::Surface(1).Class = DataSurfaces::SurfaceClass::Wall; DataSurfaces::Surface(1).HeatTransSurf = true; diff --git a/tst/EnergyPlus/unit/LowTempRadiantSystem.unit.cc b/tst/EnergyPlus/unit/LowTempRadiantSystem.unit.cc index 25f9d6ff819..98391ad07bb 100644 --- a/tst/EnergyPlus/unit/LowTempRadiantSystem.unit.cc +++ b/tst/EnergyPlus/unit/LowTempRadiantSystem.unit.cc @@ -545,13 +545,17 @@ TEST_F(LowTempRadiantSystemTest, AutosizeLowTempRadiantVariableFlowTest) " 6.096000,6.096000,0.0, !- X,Y,Z ==> Vertex 3 {m}", " 6.096000, 0.0, 0.0; !- X,Y,Z ==> Vertex 4 {m}", - " Construction:InternalSource,", - " Slab Floor with Radiant, !- Name", + " ConstructionProperty:InternalHeatSource,", + " Radiant Source, !- Name", + " Slab Floor with Radiant, !- Construction Name", " 4, !- Source Present After Layer Number", " 4, !- Temperature Calculation Requested After Layer Number", " 1, !- Dimensions for the CTF Calculation", " 0.1524, !- Tube Spacing {m}", - " 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request", + " 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request", + + " Construction,", + " Slab Floor with Radiant, !- Name", " CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer", " INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2", " GYP1, !- Layer 3", @@ -1410,13 +1414,17 @@ TEST_F(LowTempRadiantSystemTest, SimulateCapacityPerFloorAreaError) " 6.0, 6.0, 6.0, !- X,Y,Z ==> Vertex 3 {m}", " 0.0, 6.0, 6.0; !- X,Y,Z ==> Vertex 4 {m}", - " Construction:InternalSource,", - " Slab Floor with Radiant, !- Name", + " ConstructionProperty:InternalHeatSource,", + " Radiant Source, !- Name", + " Slab Floor with Radiant, !- Construction Name", " 3, !- Source Present After Layer Number", " 3, !- Temperature Calculation Requested After Layer Number", " 1, !- Dimensions for the CTF Calculation", " 0.1524, !- Tube Spacing {m}", - " 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request", + " 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request", + + " Construction,", + " Slab Floor with Radiant, !- Name", " CONCRETE - DRIED SAND AND GRAVEL 4 IN, !- Outside Layer", " INS - EXPANDED EXT POLYSTYRENE R12 2 IN, !- Layer 2", " GYP1, !- Layer 3", diff --git a/tst/EnergyPlus/unit/VentilatedSlab.unit.cc b/tst/EnergyPlus/unit/VentilatedSlab.unit.cc index 54ee2d14aaf..1763878c19a 100644 --- a/tst/EnergyPlus/unit/VentilatedSlab.unit.cc +++ b/tst/EnergyPlus/unit/VentilatedSlab.unit.cc @@ -750,37 +750,49 @@ TEST_F(EnergyPlusFixture, VentilatedSlab_InitVentilatedSlabTest) " AIR 6MM, !- Layer 2", " CLEAR 6MM; !- Layer 3", - " Construction:InternalSource,", - " Ceiling with Radiant, !- Name", + " ConstructionProperty:InternalHeatSource,", + " Radiant Ceiling Source, !- Name", + " Ceiling with Radiant, !- ConstructionName", " 2, !- Source Present After Layer Number", " 2, !- Temperature Calculation Requested After Layer Number", " 1, !- Dimensions for the CTF Calculation", " 0.1524, !- Tube Spacing {m}", - " 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request", + " 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request", + + " Construction,", + " Ceiling with Radiant, !- Name", " CLN-INS, !- Outside Layer", " GYP1, !- Layer 2", " GYP2, !- Layer 3", " MAT-CLNG-1; !- Layer 4", - " Construction:InternalSource,", - " reverseCeiling with Radiant, !- Name", + " ConstructionProperty:InternalHeatSource,", + " reverse ceiling source, !- Name", + " reverseCeiling with Radiant, !- Construction Name", " 2, !- Source Present After Layer Number", " 2, !- Temperature Calculation Requested After Layer Number", " 1, !- Dimensions for the CTF Calculation", " 0.1524, !- Tube Spacing {m}", - " 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request", + " 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request", + + " Construction,", + " reverseCeiling with Radiant, !- Name", " MAT-CLNG-1, !- Outside Layer", " GYP2, !- Layer 2", " GYP1, !- Layer 3", " CLN-INS; !- Layer 4", - " Construction:InternalSource,", - " Floor with Radiant, !- Name", + " ConstructionProperty:InternalHeatSource,", + " Floor Radiant Source, !- Name", + " Floor with Radiant, !- Construction Name", " 2, !- Source Present After Layer Number", " 2, !- Temperature Calculation Requested After Layer Number", " 1, !- Dimensions for the CTF Calculation", " 0.1524, !- Tube Spacing {m}", - " 0.0, !- Two-Dimensional Position of Interior Temperature Calculation Request", + " 0.0; !- Two-Dimensional Position of Interior Temperature Calculation Request", + + " Construction,", + " Floor with Radiant, !- Name", " INS - EXPANDED EXT POLYSTYRENE R12, !- Outside Layer", " CONC, !- Layer 2", " CONC, !- Layer 3",