diff --git a/.gitignore b/.gitignore index d4ebd59d419..bc3e1ed4d39 100644 --- a/.gitignore +++ b/.gitignore @@ -89,3 +89,4 @@ dist # if you generate sphinx docs, it builds a dummy version of the schema in the idd folder, just ignore it /idd/Energy+.schema.epJSON /idd/Energy+.schema.epJSON.in +design/FY2023/earth_tube_solution_space_diagram.pdf diff --git a/design/FY2023/Design-Document-EarthTube-1DEnhancement.md b/design/FY2023/Design-Document-EarthTube-1DEnhancement.md new file mode 100644 index 00000000000..509484e3ccb --- /dev/null +++ b/design/FY2023/Design-Document-EarthTube-1DEnhancement.md @@ -0,0 +1,410 @@ +Earth Tube 1-D Conduction Enhancement (Design Document) +================ + +**Rick Strand, University of Illinois at Urbana-Champaign** + + - April 2023 + - Revision Date (Version 2): May 11, 2023 + - Revision Date (Version 3): May 12, 2023 + - Revision Date (Version 4): June 7, 2023 (converted to a design document, minor grammatical edits, addition of the Code Development setion) + - Revision Date (Version 5): June 27, 2023 (switch to LU decomposition) + + +## Justification for New Feature ## + +It has long been known that the earth tube model in EnergyPlus, though an important addition to the program, has one critical assumption that potentially affects the accuracy of the earth tube results. The assumption is that the presence of the earth tube and any heat transfer from the air passing through it to the ground is negligible. While this is a common assumption for many first principle models in the literature (these models generally all use the model used in EnergyPlus to determine the temperature at a particular depth), it does not take into account any changes that the heat rejection from the outside air to the ground itself. It is not currently known how much of an impact this will have, but it would seem at least plausible that the ground around the earth tube would be impacted and that this would affect the potential outlet temperatures that can be achieved and thus the amount of cooling that is possible. The goal is to provide a more accurate assessment of these systems using EnergyPlus. +The improvement of the earth tube model will be done in stages. The first step is to handle the impact of the earth on the ground surrounding the earth in a single dimension (with the soil depth being that dimension). Future work would potentially handle heat transfer axially along the length of the tube, the impact of more than one earth tube and the impact that adjacent tubes have on each other, and any time lag due to the air passing through the earth tube. + +## E-mail, Slack, and Conference Call Conclusions ## + +Technicalities Meeting (5/3/23): team review the document briefly and stated the desire for this to get additional feedback in the next technicalities meeting. Two initial requests from the team included modifying the proposal to factor in the impact of the soil at the depth of the earth tube since this would be more realistic of the situation (as in, the earth tube in not infinite in width) and to contact John Nelson who has expertise in earth tube modeling and has requested improved earth tube simulation capabilities in EnergyPlus in the past. This update includes a modification of the finite difference scheme to address the concern regarding what is happening at the depth of the earth tube itself. In addition, GitHub was used to contact John Nelson and that conversation is contained in the comments for the GitHub issue regarding earth tubes (https://github.com/NREL/EnergyPlus/issues/6627). John suggested that the model at some point include the ability to model temperature variation axially along the earth tube (something already logged as a potential future enhancement) and also to provide some improved controls where air might bypass the earth tube and use heat recovery in certain situations to save the earth tube’s ability to cool. This is an interesting idea but may also be fairly complicated because it may deal with specific control algorithms and bridging between the zone and air loop simulations. Such a concept is different from what is currently in EnergyPlus and there doesn’t appear to be another model in E+ that bridges with air flow at the zone and air loop level. Such a concept is definitely beyond the scope of this initial enhancement. + +Slack Discussion (5/11/23): Neal Kruis brought up two issues in this NFP. First, there is the issue of the infinitely wide domain which is unrealistic. Second, there is the question of what air temperature is being used for heat transfer between the earth tube and the air passing through it. The second issue will be resolved by adding the discussion of the effectiveness-NTU heat exchanger model that is being used. This will be similar in the assumptions as the heat exchanger algorithm used in the low temperature radiant system model (solid side with a “constant” temperature and a fluid side which has a temperature which varies throughout). The first issue will be addressed by modifying the solution domain to have a user-defined width with adiabatic boundary conditions on either side. In reality, at some distance from the earth tube there will be negligible heat transfer toward/away from the earth tube. Making this a user-defined input parameter will allow the width to be studied. + +Technicalities Meeting (6/14/23): Jason DeGraw expressed specific concern about using matrix inversion as part of the solution technique due to concerns about slow execution speeds. He recommended that an LU decomposition technique be used as a much faster approach and noted that there were several already in EnergyPlus. As a result, this document was modified to remove inversion as a solution approach and replace it with LU decomposition, using the existing routines in the Window Manager. + +## Overview ## + +The earth tube model in EnergyPlus uses an established equation for determining the temperature of soil below grade. This equation is published in the literature and is documented in the EnergyPlus Engineering Reference. In EnergyPlus, this equation for temperature as a function of distance is integrated over the diameter of the earth tube to come up with an average temperature that is then used as the soil temperature with which the earth tube interacts. While this is useful and is a common assumption in much of the existing literature, it does not take into account any impact that the earth tube has on the surrounding soil in any direction. The model simply assumes that the earth tube does not impact the local soil temperature. + +Clearly, over an entire season of cooling, there would be some impact on the local soil temperature due to the presence of the earth tube. While the base equation does account for seasonal variation of the undisturbed earth temperature, it does not include any terms that would account for the heat gains in the soil due to the cooling effect on the air passing through the earth tube. This would vary the soil temperature in all directions around the coil—vertically, horizontally, and axially along the length of the tube. So, to better model an earth tube and its performance within EnergyPlus, improvements must be made to account for the transient impact of the earth tube on the local soil temperatures in all directions. In addition, there should be some sort of accounting for the potential presence of more than a single earth tube, since it is common for such systems to have more than a single pipe/tube. + +In addition, the current model also assumes that the air passing through the tube does so without any time delay. In other words, the air instantaneously passes through the earth tube and this has an immediate impact on the space. In reality, there is a time lag since air entering the tube must pass through the entire length of the tube. While the impact of this assumption has not been explored, it could potentially be another element of the existing model that could be improved. + +Given all of these areas of potential improvement to the model and the limited availability of resources, this initial phase of enhancing the existing earth tube model in EnergyPlus will be to focus on the impact of the heat transfer within the earth tube on the local soil conditions in the vertical direction only. There is actually a good reason to focus on that direction first. It is the direction in which there is an existing equation for temperature as a function of soil depth. + +Furthermore, research in this area seems to at least give the impression that the biggest impact is in the vertical direction. Research by Liu, Xu, Guo, and Zhu (2019) shows that the direction that is the most important as far as variations in temperature are the vertical direction. While temperature variation does occur horizontally and axially as well, the largest temperature changes in comparison to the undisturbed temperature happen vertically. So, it makes the most sense to make the first enhancement pass to the model to look at the vertical temperature variation caused by the heat transfer due to the earth tube. + +## Approach ## + +Overall, the approach will be to add a new 1-D heat transfer model that will run as a separate option from the existing model. The reason for this is two-fold: execution speed and comparative accuracy. First, the new model will be slower than the existing model. It may be that users do not wish to have their run times increase and at this time it is uncertain how much the run time will be impacted given the solution technique that will be used, particularly as additional dimensions of heat transfer get added later. Second, it would be helpful to know how much the solution was impacted by the new enhancement of 1-D heat conduction. This will allow test cases to be run and comparisons made to deduce when the use of the new enhancement will be necessary and how much the soil temperature is impacted. This might also give the team useful information on how important additional solution dimensions will be. + +The 1-D heat conduction model itself will be implemented using a 1-D implicit finite difference scheme. The solution dimension will be bounded by a temperature just below grade at the top of the solution space and another temperature boundary condition at a depth below the earth tube. The temperatures at these upper and lower boundaries will be set using the existing equation from the literature for undisturbed soil temperature. At the sides of the solution space, adiabatic conditions will be assumed. The user will be given the option to specify the overall thickness of the solution region, but there will only be heat transfer vertically (none horizontally since it will be adiabatic on the “sides”). + +The finite difference grid will include an upper portion from the upper temperature boundary to the node just above the earth tube and also a lower portion from the node just below the earth tube to the lower boundary condition. The node at the earth tube itself will also be modeled as an “all soil” node but also include a connection to the earth tube itself. In a one dimensional model like the one proposed for this enhancement, it is more realistic to model the level at the earth tube to be soil because in all directions there will be soil and not an entire layer of air/earth tube. Thus, this earth tube node will capture the conditions of the soil at that level, and a heat exchanger model that connects to the temperature of the earth tube node will be used, and checks will be made to insure that the heat loss of the air is equal to the total heat gain of the soil. + +The solution for this finite difference model will use an implicit scheme. Implicit schemes are known for being inherently stable. Since it is possible that the number of nodes may be small and thus the nodes large, it will be important to avoid potential stability issues in the solution. The user will be given some flexibility in the input to specify the number of nodes above and below the earth tube. While some reasonable limits will be applied to those inputs to avoid too few or too many nodes, the control of the number of nodes will also help during the testing and verification process to make sure that the model is producing results that make sense and are believable. An example of the node layout is shown in the figure below. + +![earth_tube_solution_space_diagram](earth_tube_solution_space_diagram.png) +

Figure 1. Earth Tube 1-D Model Solution Space Node Diagram.

+ +The heat transfer between the soil and the air flowing through the earth tube will be calculated using an effectiveness-NTU heat exchanger formulation. Because the soil temperature does not vary axially along the earth tube in this model, the effectiveness for a heat exchanger equation in this situation where one side is at constant temperature and the other side (air side) varies in temperature is: + +\begin{equation} +\varepsilon = 1 - {e^{ - NTU}} +\end{equation} + +This is similar to the reasoning used in the low temperature radiant system models where similar assumptions are made for the embedding material and the fluid being circulated through the tubing. The effectiveness will then used to calculate the outlet air temperature based on an inlet air temperature, soil temperature, and other conditions of the situation (flow, thermal properties, etc.). The overall heat exchange between the soil and the air is calculated using this effectiveness, and there is no need to determine the "average" temperature of the air as it passes through the earth tube. The heat exchanger model defines the heat exchange using the effectiveness and the theoretical maximum heat transfer between the air and soil. + +Another important point regarding this model is that unlike the existing model which only calculates the performance of the earth tube when the earth tube is actually operating, the enhancement 1-D model will need to calculate the response of the soil even when the earth tube is not running, whether that is due to no cooling being needed, the earth tube is turned off, or it being not the appropriate season for the earth tube to operate. So, while the existing model simply skips the earth tube code when it is “off”, the enhanced model will have to calculate node conditions all the time. This again could add to the execution run time as the earth tube calculations will have to be made all of the time. This will naturally be impacted by the number of nodes selected by the users. At this time, it is uncertain how much time this model will add to execution time. Testing will be done with the new model to help identify some benchmarks and provide some helpful guidance to users via the Engineering Reference documentation. + +This work will also include modernization of the earth tube code based on recent standard practices implemented by the EnergyPlus development team. + +## Testing/Validation/Data Sources ## + +Explicit data sets for earth tube performance that monitors temperature in the vertical direction have not been published in the literature. More qualitative graphs have been published but it is difficult to get exact data from these diagrams. They can, however, be used to establish trends that can be checked against the results from the new EnergyPlus enhancement. The more important testing and validation that will occur will compare the results of the new model with the existing one at various depths, different number of nodes (upper and lower), and for different soil conditions. Comparisons can then be made both to the existing model as well as different depths, node arrangements, and soil conditions to establish the improvement in the temperature predictions of both the soil conditions as well as the outlet air temperatures. It is anticipated that this work will result in a publication following the completion of this work in EnergyPlus. + +## Input Output Reference Documentation ## + +The existing input output reference documentation that already exists for earth tubes will be reviewed and corrected as needed for the model that is already in the code. The most significant changes to the documentation will be the addition of two new fields in the input syntax for earth tubes and the addition of a new input object for the details of the finite difference solution. This is shown starting in the next paragraph. + +\subsection{ZoneEarthtube}\label{zoneearthtube-earth-tube} + +An earth tube is a long, underground metal or plastic pipe through which air is drawn. During cooling season, as air travels through the pipe, it gives up some of its heat to the surrounding soil and enters the room as cooler air. Similarly, during heating season, as air travels through the pipe, it receives some of its heat from the soil and enters the zone as warmer air. Simple earth tubes in EnergyPlus can be controlled by a schedule and through the specification of minimum, maximum, and delta temperatures as described below. As with infiltration and ventilation, the actual flow rate of air through the earth tube can be modified by the temperature difference between the inside and outside environment and the wind speed. The basic equation used to calculate air flow rate of earth tube in EnergyPlus is: + +\begin{equation} +EarthTubeFlowRate = \left( {{E_{design}}} \right)\left( {{F_{schedule}}} \right)\left[ {A + B\left| {{T_{zone}} - {T_{odb}}} \right| + C\left( {WindSpeed} \right) + D\left( {WindSpee{d^2}} \right)} \right] +\end{equation} + +For the simulation of the earth tube, a weather data file is required and, therefore, the earth tube cannot run without weather data file. The required input fields to simulate the earth tube include the average soil surface temperature, the amplitude of soil surface temperature, and the phase constant of soil surface temperature. These fields should be calculated in advance by using a separate stand-alone program (CalcSoilSurfTemp) and should be input into earth tube. + +\subsubsection{CalcSoilSurfTemp -- Auxiliary Programs Document}\label{calcsoilsurftemp-auxiliary-programs-document} + +The CalcSoilSurfTemp program is simple and requires only two input fields: soil condition and soil surface condition in addition to a valid weather file. For soil condition, the user should select the number corresponding to the actual condition of the soil surrounding the earth tube from the four following options: 1. HEAVY AND SATURATED, 2. HEAVY AND DAMP, 3. HEAVY AND DRY and 4. LIGHT AND DRY. This determines the thermal diffusivity and thermal conductivity of the surrounding soil. For soil surface conditions, the user should select the number corresponding to the actual condition of the ground surface above the earth tube from the eight following options: 1. BARE AND WET, 2. BARE AND MOIST, 3. BARE AND ARID, 4. BARE AND DRY, 5. COVERED AND WET, 6. COVERED AND MOIST, 7. COVERED AND ARID and 8. COVERED AND DRY. This determines the absorption coefficient and the fraction of evaporation rate of the ground surface. + + +## Input Description ## + +\subsubsection{Inputs} +From this information and an analysis of the weather for the location selected, the CalcSoilSurfTemp program (ref. Auxiliary Programs document) calculates the three parameters listed above. The user must then add these parameters as input into EnergyPlus. The full input description of an earth tube (EARTHTUBE object) in EnergyPlus is given below. + +\paragraph{Field: Zone Name}\label{field-zone-name-5} + +This field is the name of the zone (ref: Zone) and attaches a particular earth tube statement to a thermal zone in the building. + +\paragraph{Field: Schedule Name}\label{field-schedule-name-6} + +This field is the name of the schedule (ref: Schedule) that modifies the maximum design volume flow rate parameter (see next field). This fraction between 0.0 and 1.0 is noted as F\(_{schedule}\) in the above equation. + +\paragraph{Field: Design Flow Rate}\label{field-design-flow-rate-4} + +This number (noted as E\(_{design}\) in the above equation) is the maximum amount of air mass flow rate of the earth tube expected at design conditions. The flow rate is expressed in units of m\(^{3}\)/s. The design value is modified by the schedule fraction (see previous field) and user specified coefficients (see last four fields). + +\paragraph{Field: Minimum Zone Temperature when Cooling}\label{field-minimum-zone-temperature-when-cooling} + +This is the indoor temperature (in Celsius) below which the earth tube is shut off. This lower temperature limit is intended to avoid overcooling a space and thus result in a heating load. For example, if the user specifies a minimum temperature of 20$^\circ$C, earth tube is assumed to be available if the zone air temperature is above 20$^\circ$C. If the zone air temperature drops below 20$^\circ$C, then earth tube is automatically turned off. + +\paragraph{Field: Maximum Zone Temperature when Heating}\label{field-maximum-zone-temperature-when-heating} + +This is the indoor temperature (in Celsius) above which the earth tube is shut off. This higher temperature limit is intended to avoid overheating a space and thus result in a cooling load. For example, if the user specifies a maximum temperature of 20$^\circ$C, earth tube is assumed to be available if the zone air temperature is below 20$^\circ$C. If the zone air temperature rises above 20$^\circ$C, then earth tube is automatically turned off. + +\paragraph{Field: Delta Temperature}\label{field-delta-temperature-4} + +This is the temperature difference (in Celsius) between the indoor and outdoor air dry-bulb temperatures below which the earth tube is shut off. This is to allow the earth tube to be stopped either if the temperature outside is too warm and could potentially heat the space or if the temperature outside is too cold and could potentially cool the space. For example, if the user specifies a delta temperature of 2$^\circ$C, earth tube is assumed to be available if the temperature difference between indoor and outdoor temperature is at least 2$^\circ$C. If the outside air dry-bulb temperature is less than 2$^\circ$C cooler or warmer than the indoor dry-bulb temperature, then the earth tube is automatically turned off. + +\paragraph{Field: Earthtube Type}\label{field-earthtube-type} + +This alpha character string defines the type of earth tube as one of the following options: \emph{Natural}, \emph{Exhaust}, or \emph{Intake}. A \emph{Natural} earth tube is assumed to be air movement/exchange that will not consume any fan energy or is the result of natural air flow through the tube and into the building. Values for fan pressure and efficiency for a natural flow earth tube are ignored. For either \emph{Exhaust} or \emph{Intake} earth tubes, values for fan pressure and efficiency define the fan electric consumption. For \emph{Natural} and \emph{Exhaust} earth tubes, the conditions of the air entering the space are assumed to be equivalent to the air which is cooled or heated by passing along the pipe. For \emph{Intake} earth tubes, an appropriate amount of fan heat is added to the air stream. + +\paragraph{Field: Fan Pressure Rise}\label{field-fan-pressure-rise-1} + +This is the pressure rise experienced across the fan in Pascals (N/m\(^{2}\)). This is a function of the fan and plays a role in determining the amount of energy consumed by the fan. + +\paragraph{Field: Fan Total Efficiency}\label{field-fan-total-efficiency-1} + +This is the total fan efficiency (a decimal number between 0.0 and 1.0). This is a function of the fan and plays a role in determining the amount of energy consumed by the fan. + +\paragraph{Field: Pipe Radius}\label{field-pipe-radius} + +This is the radius of the earth tube/pipe (in meters). This plays a role in determining the amount of heat transferred from the surrounding soil to the air passing along the pipe. If the pipe has non-circular cross section, user can use the concept of hydraulic diameter as follows. + +\begin{equation} +D = 4 \times Area/Perimeter +\end{equation} + +However, since this field requires the pipe radius, hydraulic diameter should be divided by two. + +\paragraph{Field: Pipe Thickness}\label{field-pipe-thickness} + +This is the thickness of the pipe wall (in meters). This plays a role in determining the amount of heat transferred from the surrounding soil to the air passing along the pipe. + +\paragraph{Field: Pipe Length}\label{field-pipe-length} + +This is the total length of the pipe (in meters). This plays a role in determining the amount of heat transferred from the surrounding soil to the air passing along the pipe. As the length of the pipe becomes longer, the amount of the heat transfer becomes larger. + +\paragraph{Field: Pipe Thermal Conductivity}\label{field-pipe-thermal-conductivity} + +This is the thermal conductivity of the pipe (in W/m-C). This plays a role in determining the amount of heat transferred from the surrounding soil to the air passing along the pipe. + +\paragraph{Field: Pipe Depth Under Ground Surface}\label{field-pipe-depth-under-ground-surface} + +This is the depth of the pipe under the ground surface (in meters). This plays a role in determining the temperature of the soil surrounding the pipe. + +\paragraph{Field: Soil Condition}\label{field-soil-condition} + +This alpha character string defines the actual condition of the soil surrounding the earth tube and can be one of any of the following options: HeavyAndSaturated, HeavyAndDamp, HeavyAndDry or LightAndDry. This determines the thermal diffusivity and thermal conductivity of the surrounding soil, which play a role in determining the amount of heat transferred from the surrounding soil to the air passing along the pipe. + +\paragraph{Field: Average Soil Surface Temperature}\label{field-average-soil-surface-temperature} + +This is the annual average soil surface temperature straight above the earth tube, which plays a role in determining the temperature of the soil surrounding the pipe. This field should be calculated in advance using the separate CalcSoilSurfTemp program. + +\paragraph{Field: Amplitude of Soil Surface Temperature}\label{field-amplitude-of-soil-surface-temperature} + +This is the amplitude of soil surface temperature above the earth tube, which plays a role in determining the temperature of the soil surrounding the pipe. This is the difference between the maximum and minimum soil surface temperature for the whole year divided by two. This field should be calculated in advance using the separate CalcSoilSurfTemp program. + +\paragraph{Field: Phase Constant of Soil Surface Temperature}\label{field-phase-constant-of-soil-surface-temperature} + +This is the phase constant of the soil surface temperature straight above the earth tube, which play a role in determining the temperature of the soil surrounding the pipe at particular time. This is the time elapsed from the beginning of the year until the soil surface temperature reaches the minimum value of the year. This field should be calculated in advance using the separate CalcSoilSurfTemp program. + +\paragraph{Field: Constant Term Flow Coefficient}\label{field-constant-term-flow-coefficient} + +This number is the ``A'' parameter in the above earth tube equation. It is part of the user specified modifying parameters that are a function of environmental factors. This parameter, however, is a constant under all conditions and is not modified by any environmental effect. As a result, it is dimensionless. + +\paragraph{Field: Temperature Term Flow Coefficient}\label{field-temperature-term-flow-coefficient} + +This number is the ``B'' parameter in the above earth tube equation. It is part of the user specified modifying parameters that are a function of environmental factors. This parameter is modified by the temperature difference between the outdoor and indoor air dry-bulb temperatures. The units for this parameter are inverse Celsius. + +\paragraph{Field: Velocity Term Flow Coefficient}\label{field-velocity-term-flow-coefficient} + +This number is the ``C'' parameter in the above earth tube equation. It is part of the user specified modifying parameters that are a function of environmental factors. This parameter is modified by the speed of wind being experienced outside the building. The units for this parameter are s/m. + +\paragraph{Field: Velocity Squared Term Flow Coefficient}\label{field-velocity-squared-term-flow-coefficient} + +This number is the ``D'' parameter in the above earth tube equation. It is part of the user specified modifying parameters that are a function of environmental factors. This parameter is modified by square of the speed of wind being experienced outside the building. The units for this parameter are s\(^{2}\)/m\(^{2}\). + +\paragraph{Field: Earth Tube Model Type}\label{field-earth-tube-model-type} + +This field determines which modeling technique will be used to assess the performance of the earth tube. The options are: Simple and Vertical. In the Simple modeling approach, the temperature of the soil at the earth tube is approximated by the undisturbed ground conditions. In the Vertical modeling approach, the temperature of the soil around the earth tube is modeled using a finite difference scheme to account for the impact of the earth tube on the surrounding soil conditions in a single direction (1-D). For more information on the model type, reference the Earth Tube section of the EnergyPlus Engineering Reference. This input is optional, and the default value is Simple. + +\paragraph{Field: Earth Tube Model Parameters}\label{field-earth-tube-model-parameters} + +This field refers to separate input syntax (see below) that is used for controlling parameters for the 1-D (Vertical) solution technique. This input field is ignored for the Simple model. + +\paragraph{EarthTube:Parameters}\label{field-earth-tube-parameters} +For the 1-D (Vertical) model, some additional optional parameters are available for the user to potentially control the solution space (number of nodes, distances) for the finite difference solution. These are described below. + +\paragraph{Field: Earth Tube Parameters Name}\label{field-earth-tube-parameters-name} +This name is used as a reference in the main EarthTube input syntax. It is used to identify the parameters that the user desires to use to control what is being modeled and how detailed the model is. + +\paragraph{Field: Earth Tube Nodes Above}\label{field-earth-tube-nodes-above} +This parameter sets the number of nodes above the earth tube, between the earth tube and the ground surface. It has a minimum of three nodes and a maximum of ten nodes. These limits were chosen to avoid the extremes of excessive execution times and overly simplified results. The default value for this parameter is 5 (nodes). + +\paragraph{Field: Earth Tube Nodes Below}\label{field-earth-tube-nodes-below} +This parameter sets the number of nodes below the earth tube, between the earth tube and the deep ground boundary. It has a minimum of three nodes and a maximum of ten nodes. These limits were chosen to avoid the extremes of excessive execution times and overly simplified results. The default value for this parameter is 3 (nodes) or the minimum. + +\paragraph{Field: Earth Tube Dimensionless Boundary Above}\label{field-earth-tube-dimensionless-boundary-above} +This parameter sets the dimensionless distance above the earth tube for the solution space. The maximum value is 1.0, and the minimum value is 0.25. When this parameter is set to 1.0, the upper boundary is set to be half of the diameter below the ground surface and the solution space thickness above the earth tube is the depth of the earth tube minus the earth tube diameter. This maximum distance (earth tube depth minus diameter) is multiplied by this parameter to constrain the solution space to less than the maximum (when the parameter is less than 1.0). The default value for this parameter is 1.0 (the maximum value). + +\paragraph{Field: Earth Tube Dimensionless Boundary Below}\label{field-earth-tube-dimensionless-boundary-below} +This parameter sets the dimensionless distance below the earth tube for the solution space. The maximum value is 1.0, and the minimum value is 0.25. This parameter is interpretted in a similar fashion as the previous parameter where the depth of the solution space below the earth tube is determined by the maximum distance above the earth tube (earth tube depth minus diameter). This allows the user to have different thickness for the modeled portion of the ground above and below the earth tube. The default value for this parameter is 0.25 (the minimum value). + +\paragraph{Field: Earth Tube Dimensionless Solution Space Width}\label{field-earth-tube-dimensionless-solution-space-width} +This parameter sets the dimensionless width of the solution space horizontally as a function of the earth tube radius as defined in the main earth tube input syntax. The maximum value is 20.0, and the minimum value is 3.0. The default value for this parameter is 4.0 which means that the width of the solution space is four times the radius. In other words, this would include soil one radius length beyond the edges of the tube on either side of the earth tube. + +An IDF example: + +\begin{lstlisting} + +EARTHTUBE, + Zone 2, !- Zone Name + 1D Modeled Tube, !- Schedule Name + 3.425198, !- Design Volume Flow Rate + 10.0, !- Minimum Zone Temperature when Cooling + 30.0, !- Maximum Zone Temperature when Heating + 1.0, !- Delta Temperature + NATURAL, !- EarthTube Type + 350.0, !- Fan Pressure Rise + 0.9, !- Fan Total Efficiency + 0.25, !- Pipe Radius + 0.2, !- Pipe Thickness + 15.0, !- Pipe Length + 200.0, !- Pipe Thermal Conductivity + 3.5, !- Pipe Depth Under Ground Surface + HeavyAndDamp, !- Soil Condition + 15.0, !- Average Soil Surface Temperature + 5.6, !- Amplitude of Soil Surface Temperature + 0.0, !- Phase Constant of Soil Surface Temperature + 0.6060000 , !- Constant Term Flow Coef + 2.0199999E-02, !- Temp Term Flow Coef + 5.9800001E-04, !- Velocity Term Flow Coef + 0.0000000E+00, !- Velocity**2 Term Flow Coef + Vertical, !- Earth Tube Model Type + EarthTubeParams; !- Earth Tube Model Parameters + +EarthTube:Parameters, + EarthTubeParams, !- Earth Tube Model Parameters (Name) + 5, !- Earth Tube Nodes Above + 3, !- Earth Tube Nodes Below + 1.0, !- Earth Tube Dimensionless Boundary Above + 0.5, !- Earth Tube Dimensionless Boundary Below + 4.0; !- Earth Tube Dimensionless Solution Space Width + +\end{lstlisting} + +## Outputs Description ## + +\subsubsection{Outputs}\label{zoneearthtube-outputs} + +Current Earth Tube output variables: + +\begin{itemize} +\item + HVAC,Sum,Earth Tube Zone Sensible Cooling Energy {[}J{]} +\item + HVAC,Average,Earth Tube Zone Sensible Cooling Rate {[}W{]} +\item + HVAC,Sum,Earth Tube Zone Sensible Heating Energy {[}J{]} +\item + HVAC,Average,Earth Tube Zone Sensible Heating Rate {[}W{]} +\item + HVAC,Sum,Earth Tube Air Flow Volume {[}m3{]} +\item + HVAC,Average,Earth Tube Current Density Volume Flow Rate {[}m3/s{]} +\item + HVAC,Average,Earth Tube Standard Density Volume Flow Rate {[}m3/s{]} +\item + HVAC,Sum,Earth Tube Air Flow Mass {[}kg{]} +\item + HVAC,Average,Earth Tube Air Mass Flow Rate {[}kg/s{]} +\item + HVAC,Average,Earth Tube Water Mass Flow Rate {[}kg/s{]} +\item + HVAC,Sum,Earth Tube Fan Electricity Energy {[}J{]} +\item + HVAC,Average,Earth Tube Fan Electricity Rate {[}W{]} +\item + HVAC,Average,Earth Tube Zone Inlet Air Temperature {[}C{]} +\item + HVAC,Average,Earth Tube Ground Interface Temperature {[}C{]} +\item + HVAC,Average,Earth Tube Outdoor Air Heat Transfer Rate {[}W{]} +\item + HVAC,Average,Earth Tube Inlet Wet Bulb Temperature {[}C{]} +\item + HVAC,Average,Earth Tube Inlet Humidity Ratio {[}kgWater/kgDryAir{]} +\item + HVAC,Average,Earth Tube Node Temperatures {[}C{]} +\item + HVAC,Average,Earth Tube Undisturbed Ground Temperatures {[}C{]} +\end{itemize} + +\paragraph{Earth Tube Zone Sensible Cooling Energy {[}J{]}}\label{earth-tube-zone-sensible-cooling-energy-j} + +\paragraph{Earth Tube Zone Sensible Cooling Rate {[}W{]}}\label{earth-tube-zone-sensible-cooling-rate-w} + +These are the energy and rate associated with the zone cooling provided by the air from the earth tube.~ This occurs when the earth tube outlet air temperature is less than zone air temperature. + +\paragraph{Earth Tube Zone Sensible Heating Energy {[}J{]}}\label{earth-tube-zone-sensible-heating-energy-j} + +\paragraph{Earth Tube Zone Sensible Heating Rate {[}W{]}}\label{earth-tube-zone-sensible-heating-rate-w} + +These are the energy and rate associated with the zone heating provided by the air from the earth tube.~ This occurs when the earth tube outlet air temperature is greater than the zone air temperature. + +\paragraph{Earth Tube Air Flow Volume {[}m3{]}}\label{earth-tube-air-flow-volume-m3} + +The volume flow of air through the earth tube. + +\paragraph{Earth Tube Current Density Volume Flow Rate {[}m3/s{]}}\label{earth-tube-air-current-density-volumetric-flow-rate-m3s} + +The volume flow rate of air through the earth tube evaluating density at current zone conditions. + +\paragraph{Earth Tube Standard Density Volume Flow Rate {[}m3/s{]}}\label{earth-tube-air-standard-density-volumetric-flow-rate-m3s} + +The volume flow rate of air through the earth tube evaluating density at standard conditions. + +\paragraph{Earth Tube Air Flow Mass {[}kg{]}}\label{earth-tube-air-flow-mass-kg} + +The mass flow of air through the earth tube. + +\paragraph{Earth Tube Air Mass Flow Rate {[}kg/s{]}}\label{earth-tube-air-mass-flow-rate-kgs} + +The mass flow rate of air through the earth tube. + +\paragraph{Earth Tube Water Mass Flow Rate {[}kg/s{]}}\label{earth-tube-water-mass-flow-rate-kgs} + +The mass flow rate of water vapor at the exit of the earth tube. + +\paragraph{Earth Tube Fan Electricity Energy {[}J{]}}\label{earth-tube-fan-electric-energy-j} + +\paragraph{Earth Tube Fan Electricity Rate {[}W{]}}\label{earth-tube-fan-electric-power-w} + +These are the fan electricity consumption and power for intake or exhaust earth tube types. + +\paragraph{Earth Tube Zone Inlet Air Temperature {[}C{]}}\label{earth-tube-zone-inlet-air-temperature-c} + +This is the temperature of the air entering the zone after passing through the earth tube {[}C{]}.~ This temperature includes the cooling or heating of outdoor air as it passes along the pipe. ~When intake fan assist is used, then the additional heat due to the fan is included in the inlet air temperature. + +\paragraph{Earth Tube Ground Interface Temperature {[}C{]}}\label{earth-tube-ground-interface-temperature-c} + +This is the average temperature of the ground along the outer surface of the earth tube {[}C{]}. + +\paragraph{Earth Tube Outdoor Air Heat Transfer Rate {[}W{]}}\label{earth-tube-outdoor-air-heat-transfer-rate-w} + +This is the rate of heat transfer from the earth tube to the outdoor air {[}W{]}.~ Positive values indicate the rate at which outdoor air is preheated; negative values indicate the rate of precooling. + +\paragraph{Earth Tube Zone Inlet Wet Bulb Temperature {[}C{]}}\label{earth-tube-zone-inlet-wet-bulb-temperature-c} + +This is the wet bulb temperature of the air entering the zone after passing through the earth tube {[}C{]}. + +\paragraph{Earth Tube Zone Inlet Humidity Ratio {[}kgWater/krDryAir{]}}\label{earth-tube-zone-inlet-humidity-ratio-kgWater/kgDryAir} + +This is the humidity ratio of the air entering the zone after passing through the earth tube {[}kgWater/kgDryAir{]}. + +\paragraph{Earth Tube Node Temperatures {[}C{]}}\label{earth-tube-node-temperatures} + +This will generate the internal node temperatures {[}C{]} for the earth tube as a result of the 1-D finite difference model. This is only valid for the 1-D (Vertical) model. + +\paragraph{Earth Tube Undisturbed Ground Temperatures {[}C{]}}\label{earth-tube-node-temperatures} + +This will report the theoretical undisturbed ground temperature at the location of the internal node temperatures {[}C{]} as well as the average for the location of the earth tube for the 1-D finite difference model. This is only valid for the 1-D (Vertical) model and provides a comparison of conditions for the simple model and the 1-D (Vertical) model. + +## Engineering Reference ## + +Note: The existing engineering reference section on earth tubes will be kept with some editing to account for the fact that there will be two potential models that can be used for the earth tube. Much of the existing text and description can stay since it will apply to both models. A new sections will be added to specifically describe the 1-D (Vertical) earth tube modeling technique. This section will outline the assumptions and boundary conditions of the 1-D model and refer back to the existing description and equations to show what the two models have in common. As this documentation will be specific to how the new model solves for earth tube temperature, this new section of documentation will be written once the approach outlined above has gained the approval of the development team. + +## Example File and Transition Changes ## + +There is already an existing EarthTubeSimpleTest.idf file that is used to test the earth tube as presented in the current version of EnergyPlus. This file will be duplicated, renamed to EarthTubeVerticalTest.idf, and modified to test the 1-D (Vertical) earth tube model being added for this enhancement. + +Due to the fact that the two new fields in the EarthTube input are at the end of the current description and are both optional, no transition changes will be needed. Existing files will continue to run without problem and will default to the simple solution method. In addition, the new input syntax EarthTube:Parameters is also optional and only needed for the 1-D (Vertical) model. Thus, current user files will not need this new input to continue to run their earth tube models. + + +## Code Development ## + +The current code has one main subroutine that is tasked with the calculation of the earth tube performance. First, after some preliminary initializations, the air flow related terms are calculated for the air side of the earth tube. Then, the average earth temperature between the depth of the top of the earth tube and the bottom of the earth tube. Next, given the air flow and thermal properties of the soil, the heat transfer coefficient including the various thermal resistances are calculated. Finally, given the various conditions already calculated, an outlet air temperature is calculated for the earth tube. + +All of this methodology must be preserved since the goal of this implementation is to allow the modeing of both the existing model and the new enhancement so that the results can be compared side-by-side. Most of the auxiliary functions that will be shared between the existing and the new model (air flow terms, heat transfer coefficients, etc.) will be converted to subroutines, reducing the clutter in the main calculation routine. The existing model will also be converted into a function that will calculate the average temperature for various depths. The main calculation routine will then chose one of two options: the existing model or the "vertical" model. The existing model will continue to calculate the ground tempeature as is currently done, using the undisturbed temperature correlation using the new subroutine for average temperature between two depths. The new "vertical" model will call out to a new subroutine that will implement the implicit finite difference scheme presented above. + +The new subroutine that will actually contain new code and not simply code moved from the main routine will deal with the calculation of the new vertical model being installed for this work. The main purpose of this new subroutine will be the calculation of the node temperatures using the implicit finite difference scheme. There will likely also need to be a one-time initialization routine for the various terms in the node equations since they will be based on thermo-physical properties of the unique situation (based on user input) and thus constant (assumption). + +Another initialization that only needs to be done once per day is the calculation of the soil temperatures. In the current implementation, the soil temperature at the depth of the earth tube is calculated every zone time step. This is unnecessary because the equation for the soil temperature at a given depth is set based on the day of the year, not on the hour of the day. So, this initialization could be calculated once each day, increasing the efficiency of the routine. + +The new routine for the vertical model will have the following sequence/components: + +1. Initialize the node equation terms (once per simulation). Also calculate the depth of the various nodes for the vertical solution. Also make initial guesses for the various node temperatures based on the undisturbed ground temperature model. +2. Calculate the air flow related terms for the air side of the earth tube (impacting the air heat balance of the zone). +3. Calculate the soil temperature at the various node depths used for the model (once per day). This includes the temperature at the depth of the tube as well as at the depth of the top and the bottom of the solution space. +4. Calculate the heat transfer coefficients and thermal resistances that will be used for the heat exchanger model. This will have an impact on the earth tube node equation since there will be heat exchange between the earth tube node, surrounding nodes, and the air passing through the earth tube. +5. Calculate the node temperatures and outlet air temperature using an implicit finite difference scheme. The node equations will be set up in a matrix format that follows the general layout of Ax = b. This will be solved via the LU Decomposition strategy using existing EnergyPlus routines (see subroutine LUdecomposition and LUsolution in WindowManager.cc--will need to update so that it is no longer limited to an index of 10). This will avoid the need for iteration to obtain a solution, but it will require the decomposition and solution to be calculated each time step because one of the terms in the A matrix will include the effectiveness (based on NTU as shown above) of the heat transfer between the air passing through the earth tube and the ground. The remaining terms in the A matrix will include thermo-physical properties of the ground and the earth tube material itself which will all be assumed to be constant. Experience with the existing earth tube model and the low temperature hydronic radiant system model has shown that in many situations, the effectiveness is very close or equal to 1. So, during initializations, the decomposed matris for A when the effectiveness is 1 will be calculated and stored to hopefully reduce the time required to obtain a solution. In addition, the decomposition of the A matrix for when the earth tube is not operating (zero flow conditions). This is because the earth tube could spend considerable time being turned off (not needed during cooling season or not being run during heating season, for example). However, due to the transient nature of the model, it will need to model the ground temperature nodes even when the earth tube is not running. Storing A for zero flow and an effectiveness of one will increase data requirements but this will provide a faster solution since during those times, the A matrix will already have been LU decomposed and thus only the solution routine will need to be run. +6. Record and report output from the vertical model. Output for the vertical model will include all of the existing output for the current model. In addition, output variables will be established for the node temperatures both above the earth tube, below the earth tube, and at the location of the earth tube. + +One potential improvememt that could be considered in the future for the model is the ability to specify starting ground temperatures rather than calculate them based on the undisturbed ground temperature as the initial starting point. The point of this would be to allow the user to run multiple simulations sequentially. The last node temperatures of one annual simulation could then be plugged into the next annual simulation as a way to get a better starting point or to see what happens when the earth tube is present for multiple years. Eventually the starting conditions would be no longer be a factor, but at this point it is uncertain whether such a feature is necessary. It is possible that a single annual simulation might be long enough to establish a realistic trend, but this is not known at this time and would be studied at a later date in a future FY. + +## References ## + +Existing EnergyPlus Earth Tube Model, EnergyPlus Engineering Reference, EnergyPlus Input-Output Reference. + +Liu, X., M. Xu, J. Guo, and R. Zhu. 2019. “Conceptual Development of the Earth Tube Cooling System For a Tall Building,” Journal of Green Building (2019) 14 (2): 1–28. + + + diff --git a/design/FY2023/NFP-EarthTube-1DEnhancement.md b/design/FY2023/NFP-EarthTube-1DEnhancement.md new file mode 100644 index 00000000000..e0a422ff1ff --- /dev/null +++ b/design/FY2023/NFP-EarthTube-1DEnhancement.md @@ -0,0 +1,384 @@ +Earth Tube 1-D Conduction Enhancement +================ + +**Rick Strand, University of Illinois at Urbana-Champaign** + + - April 2023 + - Revision Date (Version 2): May 11, 2023 + - Revision Date (Version 3): May 12, 2023 + + +## Justification for New Feature ## + +It has long been known that the earth tube model in EnergyPlus, though an important addition to the program, has one critical assumption that potentially affects the accuracy of the earth tube results. The assumption is that the presence of the earth tube and any heat transfer from the air passing through it to the ground is negligible. While this is a common assumption for many first principle models in the literature (these models generally all use the model used in EnergyPlus to determine the temperature at a particular depth), it does not take into account any changes that the heat rejection from the outside air to the ground itself. It is not currently known how much of an impact this will have, but it would seem at least plausible that the ground around the earth tube would be impacted and that this would affect the potential outlet temperatures that can be achieved and thus the amount of cooling that is possible. The goal is to provide a more accurate assessment of these systems using EnergyPlus. +The improvement of the earth tube model will be done in stages. The first step is to handle the impact of the earth on the ground surrounding the earth in a single dimension (with the soil depth being that dimension). Future work would potentially handle heat transfer axially along the length of the tube, the impact of more than one earth tube and the impact that adjacent tubes have on each other, and any time lag due to the air passing through the earth tube. + +## E-mail, Slack, and Conference Call Conclusions ## + +Technicalities Meeting (5/3/23): team review the document briefly and stated the desire for this to get additional feedback in the next technicalities meeting. Two initial requests from the team included modifying the proposal to factor in the impact of the soil at the depth of the earth tube since this would be more realistic of the situation (as in, the earth tube in not infinite in width) and to contact John Nelson who has expertise in earth tube modeling and has requested improved earth tube simulation capabilities in EnergyPlus in the past. This update includes a modification of the finite difference scheme to address the concern regarding what is happening at the depth of the earth tube itself. In addition, GitHub was used to contact John Nelson and that conversation is contained in the comments for the GitHub issue regarding earth tubes (https://github.com/NREL/EnergyPlus/issues/6627). John suggested that the model at some point include the ability to model temperature variation axially along the earth tube (something already logged as a potential future enhancement) and also to provide some improved controls where air might bypass the earth tube and use heat recovery in certain situations to save the earth tube’s ability to cool. This is an interesting idea but may also be fairly complicated because it may deal with specific control algorithms and bridging between the zone and air loop simulations. Such a concept is different from what is currently in EnergyPlus and there doesn’t appear to be another model in E+ that bridges with air flow at the zone and air loop level. Such a concept is definitely beyond the scope of this initial enhancement. + +Slack Discussion (5/11/23): Neal Kris brought up two issues in this NFP. First, there is the issue of the infinitely wide domain which is unrealistic. Second, there is the question of what air temperature is being used for heat transfer between the earth tube and the air passing through it. The second issue will be resolved by adding the discussion of the effectiveness-NTU heat exchanger model that is being used. This will be similar in the assumptions as the heat exchanger algorithm used in the low temperature radiant system model (solid side with a “constant” temperature and a fluid side which has a temperature which varies throughout). The first issue will be addressed by modifying the solution domain to have a user-defined width with adiabatic boundary conditions on either side. In reality, at some distance from the earth tube there will be negligible heat transfer toward/away from the earth tube. Making this a user-defined input parameter will allow the width to be studied. + +## Overview ## + +The earth tube model in EnergyPlus uses an established equation for determining the temperature of soil below grade. This equation is published in the literature and is documented in the EnergyPlus Engineering Reference. In EnergyPlus, this equation for temperature as a function of distance is integrated over the diameter of the earth tube to come up with an average temperature that is then used as the soil temperature with which the earth tube interacts. While this is useful and is a common assumption in much of the existing literature, it does not take into account any impact that the earth tube has on the surrounding soil in any direction. The model simply assumes that the earth tube does not impact the local soil temperature. + +Clearly, over an entire season of cooling, there would be some impact on the local soil temperature due to the presence of the earth tube. While the base equation does account for seasonal variation of the undisturbed earth temperature, it does not include any terms that would account for the heat gains in the soil due to the cooling effect on the air passing through the earth tube. This would vary the soil temperature in all directions around the coil—vertically, horizontally, and axially along the length of the tube. So, to better model an earth tube and its performance within EnergyPlus, improvements must be made to account for the transient impact of the earth tube on the local soil temperatures in all directions. In addition, there should be some sort of accounting for the potential presence of more than a single earth tube, since it is common for such systems to have more than a single pipe/tube. + +In addition, the current model also assumes that the air passing through the tube does so without any time delay. In other words, the air instantaneously passes through the earth tube and this has an immediate impact on the space. In reality, there is a time lag since air entering the tube must pass through the entire length of the tube. While the impact of this assumption has not been explored, it could potentially be another element of the existing model that could be improved. + +Given all of these areas of potential improvement to the model and the limited availability of resources, this initial phase of enhancing the existing earth tube model in EnergyPlus will be to focus on the impact of the heat transfer within the earth tube on the local soil conditions in the vertical direction only. There is actually a good reason to focus on that direction first. It is the direction in which there is an existing equation for temperature as a function of soil depth. + +Furthermore, research in this area seems to at least give the impression that the biggest impact is in the vertical direction. Research by Liu, Xu, Guo, and Zhu (2019) shows that the direction that is the most important as far as variations in temperature are the vertical direction. While temperature variation does occur horizontally and axially as well, the largest temperature changes in comparison to the undisturbed temperature happen vertically. So, it makes the most sense to make the first enhancement pass to the model to look at the vertical temperature variation caused by the heat transfer due to the earth tube. + +## Approach ## + +Overall, the approach will be to add a new 1-D heat transfer model that will run as a separate option from the existing model. The reason for this is two-fold: execution speed and comparative accuracy. First, the new model will be slower than the existing model. It may be that users do not wish to have their run times increase and at this time it is uncertain how much the run time will be impacted given the solution technique that will be used, particularly as additional dimensions of heat transfer get added later. Second, it would be helpful to know how much the solution was impacted by the new enhancement of 1-D heat conduction. This will allow test cases to be run and comparisons made to deduce when the use of the new enhancement will be necessary and how much the soil temperature is impacted. This might also give the team useful information on how important additional solution dimensions will be. + +The 1-D heat conduction model itself will be implemented using a 1-D implicit finite difference scheme. The solution dimension will be bounded by a temperature just below grade at the top of the solution space and another temperature boundary condition at a depth below the earth tube. The temperatures at these upper and lower boundaries will be set using the existing equation from the literature for undisturbed soil temperature. At the sides of the solution space, adiabatic conditions will be assumed. The user will be given the option to specify the overall thickness of the solution region, but there will only be heat transfer vertically (none horizontally since it will be adiabatic on the “sides”). + +The finite difference grid will include an upper portion from the upper temperature boundary to the node just above the earth tube and also a lower portion from the node just below the earth tube to the lower boundary condition. The node at the earth tube itself will also be modeled as an “all soil” node but also include a connection to the earth tube itself. In a one dimension model like the one proposed for this enhancement, it is more realistic to model the level at the earth tube to be soil because in all directions there will be soil and not an entire layer of air/earth tube. Thus, this earth tube node will capture the conditions of the soil at that level, and a heat exchanger model that connects to the temperature of the earth tube node will be used, and checks will be made to insure that the heat loss of the air is equal to the total heat gain of the soil. + +The solution for this finite difference model will use an implicit scheme. Implicit schemes are known for being inherently stable. Since it is possible that the number of nodes may be small and thus the nodes large, it will be important to avoid potential stability issues in the solution. The user will be given some flexibility in the input to specify the number of nodes above and below the earth tube. While some reasonable limits will be applied to those inputs to avoid too few or too many nodes, the control of the number of nodes will also help during the testing and verification process to make sure that the model is producing results that make sense and are believable. An example of the node layout is shown in the figure below. + +![earth_tube_solution_space_diagram](earth_tube_solution_space_diagram.png) +

Figure 1. Earth Tube 1-D Model Solution Space Node Diagram.

+ +The heat transfer between the soil and the air flowing through the earth tube will be calculated using an effectiveness-NTU heat exchanger formulation. Because the soil temperature does not vary axially along the earth tube in this model, the effectiveness for a heat exchanger equation in this situation where one side is at constant temperature and the other side (air side) varies in temperature is: + +\begin{equation} +\varepsilon = 1 - {e^{ - NTU}} +\end{equation} + +This is similar to the reasoning used in the low temperature radiant system models where similar assumptions are made for the embedding material and the fluid being circulated through the tubing. The effectiveness will then used to calculate the outlet air temperature based on an inlet air temperature, soil temperature, and other conditions of the situation (flow, thermal properties, etc.). The overall heat exchange between the soil and the air is calculated using this effectiveness, and there is no need to determine the "average" temperature of the air as it passes through the earth tube. The heat exchanger model defines the heat exchange using the effectiveness and the theoretical maximum heat transfer between the air and soil. + +Another important point regarding this model is that unlike the existing model which only calculates the performance of the earth tube when the earth tube is actually operating, the enhancement 1-D model will need to calculate the response of the soil even when the earth tube is not running, whether that is due to no cooling being needed, the earth tube is turned off, or it being not the appropriate season for the earth tube to operate. So, while the existing model simply skips the earth tube code when it is “off”, the enhanced model will have to calculate node conditions all the time. This again could add to the execution run time as the earth tube calculations will have to be made all of the time. This will naturally be impacted by the number of nodes selected by the users. At this time, it is uncertain how much time this model will add to execution time. Testing will be done with the new model to help identify some benchmarks and provide some helpful guidance to users via the Engineering Reference documentation. + +This work will also include modernization of the earth tube code based on recent standard practices implemented by the EnergyPlus development team. + +## Testing/Validation/Data Sources ## + +Explicit data sets for earth tube performance that monitors temperature in the vertical direction have not been published in the literature. More qualitative graphs have been published but it is difficult to get exact data from these diagrams. They can, however, be used to establish trends that can be checked against the results from the new EnergyPlus enhancement. The more important testing and validation that will occur will compare the results of the new model with the existing one at various depths, different number of nodes (upper and lower), and for different soil conditions. Comparisons can then be made both to the existing model as well as different depths, node arrangements, and soil conditions to establish the improvement in the temperature predictions of both the soil conditions as well as the outlet air temperatures. It is anticipated that this work will result in a publication following the completion of this work in EnergyPlus. + +## Input Output Reference Documentation ## + +The existing input output reference documentation that already exists for earth tubes will be reviewed and corrected as needed for the model that is already in the code. The most significant changes to the documentation will be the addition of two new fields in the input syntax for earth tubes and the addition of a new input object for the details of the finite difference solution. This is shown starting in the next paragraph. + +\subsection{ZoneEarthtube}\label{zoneearthtube-earth-tube} + +An earth tube is a long, underground metal or plastic pipe through which air is drawn. During cooling season, as air travels through the pipe, it gives up some of its heat to the surrounding soil and enters the room as cooler air. Similarly, during heating season, as air travels through the pipe, it receives some of its heat from the soil and enters the zone as warmer air. Simple earth tubes in EnergyPlus can be controlled by a schedule and through the specification of minimum, maximum, and delta temperatures as described below. As with infiltration and ventilation, the actual flow rate of air through the earth tube can be modified by the temperature difference between the inside and outside environment and the wind speed. The basic equation used to calculate air flow rate of earth tube in EnergyPlus is: + +\begin{equation} +EarthTubeFlowRate = \left( {{E_{design}}} \right)\left( {{F_{schedule}}} \right)\left[ {A + B\left| {{T_{zone}} - {T_{odb}}} \right| + C\left( {WindSpeed} \right) + D\left( {WindSpee{d^2}} \right)} \right] +\end{equation} + +For the simulation of the earth tube, a weather data file is required and, therefore, the earth tube cannot run without weather data file. The required input fields to simulate the earth tube include the average soil surface temperature, the amplitude of soil surface temperature, and the phase constant of soil surface temperature. These fields should be calculated in advance by using a separate stand-alone program (CalcSoilSurfTemp) and should be input into earth tube. + +\subsubsection{CalcSoilSurfTemp -- Auxiliary Programs Document}\label{calcsoilsurftemp-auxiliary-programs-document} + +The CalcSoilSurfTemp program is simple and requires only two input fields: soil condition and soil surface condition in addition to a valid weather file. For soil condition, the user should select the number corresponding to the actual condition of the soil surrounding the earth tube from the four following options: 1. HEAVY AND SATURATED, 2. HEAVY AND DAMP, 3. HEAVY AND DRY and 4. LIGHT AND DRY. This determines the thermal diffusivity and thermal conductivity of the surrounding soil. For soil surface conditions, the user should select the number corresponding to the actual condition of the ground surface above the earth tube from the eight following options: 1. BARE AND WET, 2. BARE AND MOIST, 3. BARE AND ARID, 4. BARE AND DRY, 5. COVERED AND WET, 6. COVERED AND MOIST, 7. COVERED AND ARID and 8. COVERED AND DRY. This determines the absorption coefficient and the fraction of evaporation rate of the ground surface. + + +## Input Description ## + +\subsubsection{Inputs} +From this information and an analysis of the weather for the location selected, the CalcSoilSurfTemp program (ref. Auxiliary Programs document) calculates the three parameters listed above. The user must then add these parameters as input into EnergyPlus. The full input description of an earth tube (EARTHTUBE object) in EnergyPlus is given below. + +\paragraph{Field: Zone Name}\label{field-zone-name-5} + +This field is the name of the zone (ref: Zone) and attaches a particular earth tube statement to a thermal zone in the building. + +\paragraph{Field: Schedule Name}\label{field-schedule-name-6} + +This field is the name of the schedule (ref: Schedule) that modifies the maximum design volume flow rate parameter (see next field). This fraction between 0.0 and 1.0 is noted as F\(_{schedule}\) in the above equation. + +\paragraph{Field: Design Flow Rate}\label{field-design-flow-rate-4} + +This number (noted as E\(_{design}\) in the above equation) is the maximum amount of air mass flow rate of the earth tube expected at design conditions. The flow rate is expressed in units of m\(^{3}\)/s. The design value is modified by the schedule fraction (see previous field) and user specified coefficients (see last four fields). + +\paragraph{Field: Minimum Zone Temperature when Cooling}\label{field-minimum-zone-temperature-when-cooling} + +This is the indoor temperature (in Celsius) below which the earth tube is shut off. This lower temperature limit is intended to avoid overcooling a space and thus result in a heating load. For example, if the user specifies a minimum temperature of 20$^\circ$C, earth tube is assumed to be available if the zone air temperature is above 20$^\circ$C. If the zone air temperature drops below 20$^\circ$C, then earth tube is automatically turned off. + +\paragraph{Field: Maximum Zone Temperature when Heating}\label{field-maximum-zone-temperature-when-heating} + +This is the indoor temperature (in Celsius) above which the earth tube is shut off. This higher temperature limit is intended to avoid overheating a space and thus result in a cooling load. For example, if the user specifies a maximum temperature of 20$^\circ$C, earth tube is assumed to be available if the zone air temperature is below 20$^\circ$C. If the zone air temperature rises above 20$^\circ$C, then earth tube is automatically turned off. + +\paragraph{Field: Delta Temperature}\label{field-delta-temperature-4} + +This is the temperature difference (in Celsius) between the indoor and outdoor air dry-bulb temperatures below which the earth tube is shut off. This is to allow the earth tube to be stopped either if the temperature outside is too warm and could potentially heat the space or if the temperature outside is too cold and could potentially cool the space. For example, if the user specifies a delta temperature of 2$^\circ$C, earth tube is assumed to be available if the temperature difference between indoor and outdoor temperature is at least 2$^\circ$C. If the outside air dry-bulb temperature is less than 2$^\circ$C cooler or warmer than the indoor dry-bulb temperature, then the earth tube is automatically turned off. + +\paragraph{Field: Earthtube Type}\label{field-earthtube-type} + +This alpha character string defines the type of earth tube as one of the following options: \emph{Natural}, \emph{Exhaust}, or \emph{Intake}. A \emph{Natural} earth tube is assumed to be air movement/exchange that will not consume any fan energy or is the result of natural air flow through the tube and into the building. Values for fan pressure and efficiency for a natural flow earth tube are ignored. For either \emph{Exhaust} or \emph{Intake} earth tubes, values for fan pressure and efficiency define the fan electric consumption. For \emph{Natural} and \emph{Exhaust} earth tubes, the conditions of the air entering the space are assumed to be equivalent to the air which is cooled or heated by passing along the pipe. For \emph{Intake} earth tubes, an appropriate amount of fan heat is added to the air stream. + +\paragraph{Field: Fan Pressure Rise}\label{field-fan-pressure-rise-1} + +This is the pressure rise experienced across the fan in Pascals (N/m\(^{2}\)). This is a function of the fan and plays a role in determining the amount of energy consumed by the fan. + +\paragraph{Field: Fan Total Efficiency}\label{field-fan-total-efficiency-1} + +This is the total fan efficiency (a decimal number between 0.0 and 1.0). This is a function of the fan and plays a role in determining the amount of energy consumed by the fan. + +\paragraph{Field: Pipe Radius}\label{field-pipe-radius} + +This is the radius of the earth tube/pipe (in meters). This plays a role in determining the amount of heat transferred from the surrounding soil to the air passing along the pipe. If the pipe has non-circular cross section, user can use the concept of hydraulic diameter as follows. + +\begin{equation} +D = 4 \times Area/Perimeter +\end{equation} + +However, since this field requires the pipe radius, hydraulic diameter should be divided by two. + +\paragraph{Field: Pipe Thickness}\label{field-pipe-thickness} + +This is the thickness of the pipe wall (in meters). This plays a role in determining the amount of heat transferred from the surrounding soil to the air passing along the pipe. + +\paragraph{Field: Pipe Length}\label{field-pipe-length} + +This is the total length of the pipe (in meters). This plays a role in determining the amount of heat transferred from the surrounding soil to the air passing along the pipe. As the length of the pipe becomes longer, the amount of the heat transfer becomes larger. + +\paragraph{Field: Pipe Thermal Conductivity}\label{field-pipe-thermal-conductivity} + +This is the thermal conductivity of the pipe (in W/m-C). This plays a role in determining the amount of heat transferred from the surrounding soil to the air passing along the pipe. + +\paragraph{Field: Pipe Depth Under Ground Surface}\label{field-pipe-depth-under-ground-surface} + +This is the depth of the pipe under the ground surface (in meters). This plays a role in determining the temperature of the soil surrounding the pipe. + +\paragraph{Field: Soil Condition}\label{field-soil-condition} + +This alpha character string defines the actual condition of the soil surrounding the earth tube and can be one of any of the following options: HeavyAndSaturated, HeavyAndDamp, HeavyAndDry or LightAndDry. This determines the thermal diffusivity and thermal conductivity of the surrounding soil, which play a role in determining the amount of heat transferred from the surrounding soil to the air passing along the pipe. + +\paragraph{Field: Average Soil Surface Temperature}\label{field-average-soil-surface-temperature} + +This is the annual average soil surface temperature straight above the earth tube, which plays a role in determining the temperature of the soil surrounding the pipe. This field should be calculated in advance using the separate CalcSoilSurfTemp program. + +\paragraph{Field: Amplitude of Soil Surface Temperature}\label{field-amplitude-of-soil-surface-temperature} + +This is the amplitude of soil surface temperature above the earth tube, which plays a role in determining the temperature of the soil surrounding the pipe. This is the difference between the maximum and minimum soil surface temperature for the whole year divided by two. This field should be calculated in advance using the separate CalcSoilSurfTemp program. + +\paragraph{Field: Phase Constant of Soil Surface Temperature}\label{field-phase-constant-of-soil-surface-temperature} + +This is the phase constant of the soil surface temperature straight above the earth tube, which play a role in determining the temperature of the soil surrounding the pipe at particular time. This is the time elapsed from the beginning of the year until the soil surface temperature reaches the minimum value of the year. This field should be calculated in advance using the separate CalcSoilSurfTemp program. + +\paragraph{Field: Constant Term Flow Coefficient}\label{field-constant-term-flow-coefficient} + +This number is the ``A'' parameter in the above earth tube equation. It is part of the user specified modifying parameters that are a function of environmental factors. This parameter, however, is a constant under all conditions and is not modified by any environmental effect. As a result, it is dimensionless. + +\paragraph{Field: Temperature Term Flow Coefficient}\label{field-temperature-term-flow-coefficient} + +This number is the ``B'' parameter in the above earth tube equation. It is part of the user specified modifying parameters that are a function of environmental factors. This parameter is modified by the temperature difference between the outdoor and indoor air dry-bulb temperatures. The units for this parameter are inverse Celsius. + +\paragraph{Field: Velocity Term Flow Coefficient}\label{field-velocity-term-flow-coefficient} + +This number is the ``C'' parameter in the above earth tube equation. It is part of the user specified modifying parameters that are a function of environmental factors. This parameter is modified by the speed of wind being experienced outside the building. The units for this parameter are s/m. + +\paragraph{Field: Velocity Squared Term Flow Coefficient}\label{field-velocity-squared-term-flow-coefficient} + +This number is the ``D'' parameter in the above earth tube equation. It is part of the user specified modifying parameters that are a function of environmental factors. This parameter is modified by square of the speed of wind being experienced outside the building. The units for this parameter are s\(^{2}\)/m\(^{2}\). + +\paragraph{Field: Earth Tube Model Type}\label{field-earth-tube-model-type} + +This field determines which modeling technique will be used to assess the performance of the earth tube. The options are: Simple and Vertical. In the Simple modeling approach, the temperature of the soil at the earth tube is approximated by the undisturbed ground conditions. In the Vertical modeling approach, the temperature of the soil around the earth tube is modeled using a finite difference scheme to account for the impact of the earth tube on the surrounding soil conditions in a single direction (1-D). For more information on the model type, reference the Earth Tube section of the EnergyPlus Engineering Reference. This input is optional, and the default value is Simple. + +\paragraph{Field: Earth Tube Model Parameters}\label{field-earth-tube-model-parameters} + +This field refers to separate input syntax (see below) that is used for controlling parameters for the 1-D (Vertical) solution technique. This input field is ignored for the Simple model. + +\paragraph{EarthTube:Parameters}\label{field-earth-tube-parameters} +For the 1-D (Vertical) model, some additional optional parameters are available for the user to potentially control the solution space (number of nodes, distances) for the finite difference solution. These are described below. + +\paragraph{Field: Earth Tube Parameters Name}\label{field-earth-tube-parameters-name} +This name is used as a reference in the main EarthTube input syntax. It is used to identify the parameters that the user desires to use to control what is being modeled and how detailed the model is. + +\paragraph{Field: Earth Tube Nodes Above}\label{field-earth-tube-nodes-above} +This parameter sets the number of nodes above the earth tube, between the earth tube and the ground surface. It has a minimum of three nodes and a maximum of ten nodes. These limits were chosen to avoid the extremes of excessive execution times and overly simplified results. The default value for this parameter is 5 (nodes). + +\paragraph{Field: Earth Tube Nodes Below}\label{field-earth-tube-nodes-below} +This parameter sets the number of nodes below the earth tube, between the earth tube and the deep ground boundary. It has a minimum of three nodes and a maximum of ten nodes. These limits were chosen to avoid the extremes of excessive execution times and overly simplified results. The default value for this parameter is 3 (nodes) or the minimum. + +\paragraph{Field: Earth Tube Dimensionless Boundary Above}\label{field-earth-tube-dimensionless-boundary-above} +This parameter sets the dimensionless distance above the earth tube for the solution space. The maximum value is 1.0, and the minimum value is 0.25. When this parameter is set to 1.0, the upper boundary is set to be half of the diameter below the ground surface and the solution space thickness above the earth tube is the depth of the earth tube minus the earth tube diameter. This maximum distance (earth tube depth minus diameter) is multiplied by this parameter to constrain the solution space to less than the maximum (when the parameter is less than 1.0). The default value for this parameter is 1.0 (the maximum value). + +\paragraph{Field: Earth Tube Dimensionless Boundary Below}\label{field-earth-tube-dimensionless-boundary-below} +This parameter sets the dimensionless distance below the earth tube for the solution space. The maximum value is 1.0, and the minimum value is 0.25. This parameter is interpretted in a similar fashion as the previous parameter where the depth of the solution space below the earth tube is determined by the maximum distance above the earth tube (earth tube depth minus diameter). This allows the user to have different thickness for the modeled portion of the ground above and below the earth tube. The default value for this parameter is 0.25 (the minimum value). + +\paragraph{Field: Earth Tube Dimensionless Solution Space Width}\label{field-earth-tube-dimensionless-solution-space-width} +This parameter sets the dimensionless width of the solution space horizontally as a function of the earth tube radius as defined in the main earth tube input syntax. The maximum value is 20.0, and the minimum value is 3.0. The default value for this parameter is 4.0 which means that the width of the solution space is four times the radius. In other words, this would include soil one radius length beyond the edges of the tube on either side of the earth tube. + +An IDF example: + +\begin{lstlisting} + +EARTHTUBE, + Zone 2, !- Zone Name + 1D Modeled Tube, !- Schedule Name + 3.425198, !- Design Volume Flow Rate + 10.0, !- Minimum Zone Temperature when Cooling + 30.0, !- Maximum Zone Temperature when Heating + 1.0, !- Delta Temperature + NATURAL, !- EarthTube Type + 350.0, !- Fan Pressure Rise + 0.9, !- Fan Total Efficiency + 0.25, !- Pipe Radius + 0.2, !- Pipe Thickness + 15.0, !- Pipe Length + 200.0, !- Pipe Thermal Conductivity + 3.5, !- Pipe Depth Under Ground Surface + HeavyAndDamp, !- Soil Condition + 15.0, !- Average Soil Surface Temperature + 5.6, !- Amplitude of Soil Surface Temperature + 0.0, !- Phase Constant of Soil Surface Temperature + 0.6060000 , !- Constant Term Flow Coef + 2.0199999E-02, !- Temp Term Flow Coef + 5.9800001E-04, !- Velocity Term Flow Coef + 0.0000000E+00, !- Velocity**2 Term Flow Coef + Vertical, !- Earth Tube Model Type + EarthTubeParams; !- Earth Tube Model Parameters + +EarthTube:Parameters, + EarthTubeParams, !- Earth Tube Model Parameters (Name) + 5, !- Earth Tube Nodes Above + 3, !- Earth Tube Nodes Below + 1.0, !- Earth Tube Dimensionless Boundary Above + 0.5, !- Earth Tube Dimensionless Boundary Below + 4.0; !- Earth Tube Dimensionless Solution Space Width + +\end{lstlisting} + +## Outputs Description ## + +\subsubsection{Outputs}\label{zoneearthtube-outputs} + +Current Earth Tube output variables: + +\begin{itemize} +\item + HVAC,Sum,Earth Tube Zone Sensible Cooling Energy {[}J{]} +\item + HVAC,Average,Earth Tube Zone Sensible Cooling Rate {[}W{]} +\item + HVAC,Sum,Earth Tube Zone Sensible Heating Energy {[}J{]} +\item + HVAC,Average,Earth Tube Zone Sensible Heating Rate {[}W{]} +\item + HVAC,Sum,Earth Tube Air Flow Volume {[}m3{]} +\item + HVAC,Average,Earth Tube Current Density Volume Flow Rate {[}m3/s{]} +\item + HVAC,Average,Earth Tube Standard Density Volume Flow Rate {[}m3/s{]} +\item + HVAC,Sum,Earth Tube Air Flow Mass {[}kg{]} +\item + HVAC,Average,Earth Tube Air Mass Flow Rate {[}kg/s{]} +\item + HVAC,Average,Earth Tube Water Mass Flow Rate {[}kg/s{]} +\item + HVAC,Sum,Earth Tube Fan Electricity Energy {[}J{]} +\item + HVAC,Average,Earth Tube Fan Electricity Rate {[}W{]} +\item + HVAC,Average,Earth Tube Zone Inlet Air Temperature {[}C{]} +\item + HVAC,Average,Earth Tube Ground Interface Temperature {[}C{]} +\item + HVAC,Average,Earth Tube Outdoor Air Heat Transfer Rate {[}W{]} +\item + HVAC,Average,Earth Tube Inlet Wet Bulb Temperature {[}C{]} +\item + HVAC,Average,Earth Tube Inlet Humidity Ratio {[}kgWater/kgDryAir{]} +\item + HVAC,Average,Earth Tube Node Temperatures {[}C{]} +\item + HVAC,Average,Earth Tube Undisturbed Ground Temperatures {[}C{]} +\end{itemize} + +\paragraph{Earth Tube Zone Sensible Cooling Energy {[}J{]}}\label{earth-tube-zone-sensible-cooling-energy-j} + +\paragraph{Earth Tube Zone Sensible Cooling Rate {[}W{]}}\label{earth-tube-zone-sensible-cooling-rate-w} + +These are the energy and rate associated with the zone cooling provided by the air from the earth tube.~ This occurs when the earth tube outlet air temperature is less than zone air temperature. + +\paragraph{Earth Tube Zone Sensible Heating Energy {[}J{]}}\label{earth-tube-zone-sensible-heating-energy-j} + +\paragraph{Earth Tube Zone Sensible Heating Rate {[}W{]}}\label{earth-tube-zone-sensible-heating-rate-w} + +These are the energy and rate associated with the zone heating provided by the air from the earth tube.~ This occurs when the earth tube outlet air temperature is greater than the zone air temperature. + +\paragraph{Earth Tube Air Flow Volume {[}m3{]}}\label{earth-tube-air-flow-volume-m3} + +The volume flow of air through the earth tube. + +\paragraph{Earth Tube Current Density Volume Flow Rate {[}m3/s{]}}\label{earth-tube-air-current-density-volumetric-flow-rate-m3s} + +The volume flow rate of air through the earth tube evaluating density at current zone conditions. + +\paragraph{Earth Tube Standard Density Volume Flow Rate {[}m3/s{]}}\label{earth-tube-air-standard-density-volumetric-flow-rate-m3s} + +The volume flow rate of air through the earth tube evaluating density at standard conditions. + +\paragraph{Earth Tube Air Flow Mass {[}kg{]}}\label{earth-tube-air-flow-mass-kg} + +The mass flow of air through the earth tube. + +\paragraph{Earth Tube Air Mass Flow Rate {[}kg/s{]}}\label{earth-tube-air-mass-flow-rate-kgs} + +The mass flow rate of air through the earth tube. + +\paragraph{Earth Tube Water Mass Flow Rate {[}kg/s{]}}\label{earth-tube-water-mass-flow-rate-kgs} + +The mass flow rate of water vapor at the exit of the earth tube. + +\paragraph{Earth Tube Fan Electricity Energy {[}J{]}}\label{earth-tube-fan-electric-energy-j} + +\paragraph{Earth Tube Fan Electricity Rate {[}W{]}}\label{earth-tube-fan-electric-power-w} + +These are the fan electricity consumption and power for intake or exhaust earth tube types. + +\paragraph{Earth Tube Zone Inlet Air Temperature {[}C{]}}\label{earth-tube-zone-inlet-air-temperature-c} + +This is the temperature of the air entering the zone after passing through the earth tube {[}C{]}.~ This temperature includes the cooling or heating of outdoor air as it passes along the pipe. ~When intake fan assist is used, then the additional heat due to the fan is included in the inlet air temperature. + +\paragraph{Earth Tube Ground Interface Temperature {[}C{]}}\label{earth-tube-ground-interface-temperature-c} + +This is the average temperature of the ground along the outer surface of the earth tube {[}C{]}. + +\paragraph{Earth Tube Outdoor Air Heat Transfer Rate {[}W{]}}\label{earth-tube-outdoor-air-heat-transfer-rate-w} + +This is the rate of heat transfer from the earth tube to the outdoor air {[}W{]}.~ Positive values indicate the rate at which outdoor air is preheated; negative values indicate the rate of precooling. + +\paragraph{Earth Tube Zone Inlet Wet Bulb Temperature {[}C{]}}\label{earth-tube-zone-inlet-wet-bulb-temperature-c} + +This is the wet bulb temperature of the air entering the zone after passing through the earth tube {[}C{]}. + +\paragraph{Earth Tube Zone Inlet Humidity Ratio {[}kgWater/krDryAir{]}}\label{earth-tube-zone-inlet-humidity-ratio-kgWater/kgDryAir} + +This is the humidity ratio of the air entering the zone after passing through the earth tube {[}kgWater/kgDryAir{]}. + +\paragraph{Earth Tube Node Temperatures {[}C{]}}\label{earth-tube-node-temperatures} + +This will generate the internal node temperatures {[}C{]} for the earth tube as a result of the 1-D finite difference model. This is only valid for the 1-D (Vertical) model. + +\paragraph{Earth Tube Undisturbed Ground Temperatures {[}C{]}}\label{earth-tube-node-temperatures} + +This will report the theoretical undisturbed ground temperature at the location of the internal node temperatures {[}C{]} as well as the average for the location of the earth tube for the 1-D finite difference model. This is only valid for the 1-D (Vertical) model and provides a comparison of conditions for the simple model and the 1-D (Vertical) model. + +## Engineering Reference ## + +Note: The existing engineering reference section on earth tubes will be kept with some editing to account for the fact that there will be two potential models that can be used for the earth tube. Much of the existing text and description can stay since it will apply to both models. A new sections will be added to specifically describe the 1-D (Vertical) earth tube modeling technique. This section will outline the assumptions and boundary conditions of the 1-D model and refer back to the existing description and equations to show what the two models have in common. As this documentation will be specific to how the new model solves for earth tube temperature, this new section of documentation will be written once the approach outlined above has gained the approval of the development team. + +## Example File and Transition Changes ## + +There is already an existing EarthTubeSimpleTest.idf file that is used to test the earth tube as presented in the current version of EnergyPlus. This file will be duplicated, renamed to EarthTubeVerticalTest.idf, and modified to test the 1-D (Vertical) earth tube model being added for this enhancement. + +Due to the fact that the two new fields in the EarthTube input are at the end of the current description and are both optional, no transition changes will be needed. Existing files will continue to run without problem and will default to the simple solution method. In addition, the new input syntax EarthTube:Parameters is also optional and only needed for the 1-D (Vertical) model. Thus, current user files will not need this new input to continue to run their earth tube models. + +## References ## + +Existing EnergyPlus Earth Tube Model, EnergyPlus Engineering Reference, EnergyPlus Input-Output Reference. + +Liu, X., M. Xu, J. Guo, and R. Zhu. 2019. “Conceptual Development of the Earth Tube Cooling System For a Tall Building,” Journal of Green Building (2019) 14 (2): 1–28. + + + diff --git a/design/FY2023/earth_tube_solution_space_diagram.png b/design/FY2023/earth_tube_solution_space_diagram.png new file mode 100644 index 00000000000..bc8e26b5093 Binary files /dev/null and b/design/FY2023/earth_tube_solution_space_diagram.png differ diff --git a/doc/engineering-reference/media/earth_tube_solution_space_diagram.png b/doc/engineering-reference/media/earth_tube_solution_space_diagram.png new file mode 100644 index 00000000000..bc8e26b5093 Binary files /dev/null and b/doc/engineering-reference/media/earth_tube_solution_space_diagram.png differ diff --git a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/zone-equipment-and-zone-forced-air-units.tex b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/zone-equipment-and-zone-forced-air-units.tex index bd33aa362e4..b5d29a796a3 100644 --- a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/zone-equipment-and-zone-forced-air-units.tex +++ b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/zone-equipment-and-zone-forced-air-units.tex @@ -2003,18 +2003,19 @@ \subsubsection{Simulation and Control}\label{simulation-and-control-5-000} \subsection{Earthtube}\label{earthtube} -The earth tube model (input object ZoneEarthtube) provides a simple earth tube model that uses a complex ground heat transfer model to establish the temperature of the soil at the depth of the earth tube.~ The following information defines the basis for the model including the assumptions and mathematical equations.~ It supplements the information for the ZoneEarthtube input object given in the Input/Output Reference for EnergyPlus. +The earth tube model (input object ZoneEarthtube) provides the choice of either a simple earth tube model (Basic model) that uses a complex ground heat transfer model to establish the temperature of the soil at the depth of the earth tube and an enhanced model which applies a finite difference scheme to simulate vertical temperature variations (Vertical model). The following information defines the basis for the model including the assumptions and mathematical equations. It supplements the information for the ZoneEarthtube input object given in the Input/Output Reference for EnergyPlus. \emph{\textbf{Input Requirements}} \begin{itemize} \tightlist -\item Pipe : Pipe radius(m), Pipe thickness(m), Pipe length(m) +\item Pipe : Pipe radius (m), Pipe thickness (m), Pipe length (m) \item Distance between the pipe outer surface and undisturbed soil (m), \item Pipe thermal conductivity (W/m-\(^{\circ}\)C), \item Air velocity inside pipe(m/s), Depth of the radial center of pipe below ground (m) -\item Soil : Soil density(kg/m\(^{3}\)), Soil specific heat(J/kg-\(^{\circ}\)C), -\item Soil thermal Conductivity(W/m-\(^{\circ}\)C), Absorption coefficient, Fraction of evaporation rate +\item Soil : Soil density (kg/m\(^{3}\)), Soil specific heat (J/kg-\(^{\circ}\)C), +\item Soil thermal Conductivity (W/m-\(^{\circ}\)C), Absorption coefficient, Fraction of evaporation rate +\item Width of soil domain in the horizontal direction (m), only applies to the Vertical model \end{itemize} \emph{\textbf{Assumption(s)}} @@ -2023,15 +2024,17 @@ \subsection{Earthtube}\label{earthtube} \item Convection flow inside the pipe is hydrodynamically and thermally developed. \item - Soil temperature in the pipe vicinity is uniform after the particular distance from the center of the pipe(thickness of the annulus), so that pipe surface temperature is uniform after the distance `r' from the center of the pipe, where `r'is the pipe radius. + For the Basic model, the soil temperature in the pipe vicinity is uniform after the particular distance from the center of the pipe(thickness of the annulus), so that pipe surface temperature is uniform after the distance `r' from the center of the pipe, where `r'is the pipe radius. In addition, the temperature profile in the pipe vicinity is not affected by the presence of the pipe, so that pipe surface temperature is uniform at axial direction. \item - The temperature profile in the pipe vicinity is not affected by the presence of the pipe, so that pipe surface temperature is uniform at axial direction. + For the Vertical model, the soil temperature varies in the vertical direction only (not horizontally or axially). The solution domain is bounded at the top and bottom by temperature boundary conditions for soil at those depths for undisturbed conditions. A finite difference modeling technique is used to track horizontal temperature variation as a result of both the boundary conditions at the top and bottom of the solution space as well as the impact of air flowing through the earth tube at the depth of the earth tube. No heat transfer is modeled either horizontally or axially (adiabatic in those directions). More information about the Vertical model is provided below. \item The soil surrounding the pipe has homogeneous thermal conductivity. \item - Pipe has uniform cross section area at axial direction. + Pipe has a uniform cross section area in the axial direction. \end{itemize} +\emph{\textbf{Ground Temperature Modeling and Generation of EnergyPlus Ground Inputs}} + Wind velocity (m/s), u, is the annual average value. This is calculated from EnergyPlus weather data by averaging individual wind velocity values of the whole year. The convective heat transfer coefficient at the soil surface (W/m\(^{2}\)-\(^{\circ}\)C), \(h_{s}\), is function of wind speed u. According to McAdams(1954), \(h_{s}\) can be approximated by the following correlation (Krarti, 1995): \begin{equation} @@ -2160,6 +2163,8 @@ \subsection{Earthtube}\label{earthtube} \end{array} \end{equation} +\emph{\textbf{Basic Model--Direct Use of Undisturbed Ground Temperature}} + Assuming a homogeneous soil of constant thermal diffusivity, the temperature at any depth z and time t can be estimated by the following expression: \begin{equation} @@ -2168,24 +2173,9 @@ \subsection{Earthtube}\label{earthtube} In this expression, the unit of time, \emph{t}, and phase constant of the soil surface, \(t_{0}\), should be converted into days. Similarly, the unit of soil thermal diffusivity, \({\alpha_{s}}\), should also be converted into m\(^{2}\)/days. -By integrating the expression with respect to depth, the average temperature of a vertical soil profile ranging between depth \(z_{1}\) and \(z_{2}\) (\(^{\circ}\)C) can be determined as follows: - -{\scriptsize -\begin{equation} -{T_{{z_1},{z_2},t}} = {T_m} + \frac{{{A_s}}}{{\left( {{z_2} - {z_1}} \right)\gamma \sqrt 2 }}\left\{ {{e^{ - \gamma {z_1}}}\cos \left[ {\frac{{2\pi }}{{{\rm{365}}}}\left( {t - {t_0} - {z_1}L - 45.6} \right)} \right] - {e^{ - \gamma {z_2}}}\cos \left[ {\frac{{2\pi }}{{{\rm{365}}}}\left( {t - {t_0} - {z_2}L - 45.6} \right)} \right]} \right\} -\end{equation}} +In the Basic model for earth tubes, the above equation is used to calculate the temperature of the ground at the depth of the earth tube and this value is used to evaluate the heat transfer between the soil around the earth tube and the air passing through the earth tube. This heat exchange involves determining convective heat transfer coefficient between the air passing through the earth tube and the surface of the tube itself, converting this to a thermal resistance value, and then adding on the thermal resistance for the earth tube pipe itself and the surrounding soil to the user defined distance to the "undisturbed" region. The equations used to model the thermal resistances are shown in the following paragraphes. -where: - -\begin{equation} -\gamma = {\left( {\pi /{\rm{365}}{\alpha_s}} \right)^{1/2}} -\end{equation} - -\begin{equation} -L = \frac{1}{2}{\left( {{\rm{365}}/\pi {\alpha_s}} \right)^{1/2}} -\end{equation} - -As the final step with regard to the heat transfer between soil and earth tube system, thermal conductivity of air (W/m-\(^{\circ}\)C), \(k_{air}\), and kinetic viscosity of air (m\(^{2}\)/s), \({\upsilon}\), should calculated first: +With regard to the heat transfer between soil and earth tube system, thermal conductivity of air (W/m-\(^{\circ}\)C), \(k_{air}\), and kinetic viscosity of air (m\(^{2}\)/s), \({\upsilon}\), should calculated first: \begin{equation} {k_{air}} = 0.02442 + ({10^{ - 4}}(0.6992{T_a})) @@ -2255,6 +2245,256 @@ \subsection{Earthtube}\label{earthtube} Initial condition of inlet air temperature is equal to the ambient air temperature. Outlet air temperature is finally evaluated by solving the heat transfer equation above. +\emph{\textbf{Vertical Model--1-D Solution of Temperature Variation in the Vertical Direction}} +In EnergyPlus, the Basic model simply calculates the ground temperature at the depth of the earth tube and assumes that the impact of the earth tube is minimal. The Vertical model acknowledges that the soil temperature will be impacted by the presence of the heat transfer associated with the earth tube and looks to evaluate the impact that the earth tube air flow has on soil temperature in the vertical direction. While there is also an impact on the soil temperatures horizontally and axially along the earth tube, the vertical model focuses on the potential temperature variation in the vertical direction as a result of heat exchange between the ground around the earth tube and the air passing through it. + +The mathematical approach used to model vertical temperature variation due to the presence and heat transfer impact of the earth tube is a finite difference scheme. This finite difference modeling technique looks at various nodes in the vertical direction and uses the following assumptions: + +\begin{itemize} +\item +The finite difference grid of nodes contains a single row of nodes in the vertical direction only. +\item +The finite difference grid is bound at the top and the bottom with a temperature boundary condition. The temperature at the top and the bottom is variable and based on the undisturbed ground temperature equation used in the Basic model for the depth at the top and bottom of the domain. +\item +There is no heat transfer horizontally or axially for the nodes (adiabatic in all directions except vertically). +\item +Heat transfer via conduction is modeled between adjacent nodes in the vertical direction. +\item +The impact of the air passing through the earth tube is felt at a single node, the earth tube node. +\item +The width of the solution horizontally is set by user input. +\item +The number of nodes above and below the earth tube node as well as how tall the solution space is above and below the earth tube is controlled by user input. These parameters will set the thickness of nodes above and below the earth tube node. The total height of the earth tube node will be set to twice the diameter of the earth tube itself. +\item +An implicit finite difference solution scheme is used to promote solution stability. Nodal equations are based on this implicit scheme. +\item +The nodal equations will be arranged as a matrix-based system of equations that will be solved using the description given below. +\end{itemize} + +The solution of the finite difference scheme used for the Vertical model starts with the development of nodal equations throughout the solution space. The figure below shows a representative nodal diagram for the Vertical earth tube model. Note that the number of nodes above and below the earth tube are determined by the user and set in the input file. The minimum number of nodes allowed either above or below the earth tube is 3 while the maximum is 10. The example shown below has five nodes above the earth tube and four below. + +\begin{figure}[hbtp] +\centering +\includegraphics[width=0.9\textwidth, height=0.9\textheight, keepaspectratio=true]{media/earth_tube_solution_space_diagram.png} +\caption{Earth Tube Vertical Model Solution Space \protect \label{fig:earth-tube-solution-space-diagram}} +\end{figure} + +As can be seen in the node diagram, there are seven types of nodes. One is a node at the top of the solution space that is in contact with the upper temperature boundary and the next node down. Similarly, there is another node that is at the bottom of the solution space that is contact with the lower temperature boundary and the next node up. Two of the node types are simply generic "interior" nodes in the upper and lower areas of the solution space. The equations for these generic nodes are very similar with the only difference being the height of the node (which is based on user input). Two other nodes types are those adjacent to the earth tube node (one above the earth tube and one below). Again, these equations will be very similar since they only differ in the size of the node height and the nodes to which they are connected in the grid. Finally, the earth tube itself is an additional node type that is different than the other nodes due to the fact that it also has a connection with conduction and convection to the air in the earth tube. The equation for each node type is shown below. Each node equation will be rearranged so as to fit with the matrix form: Ax = b where x is a vector of node temperatures. + +\emph{\textit{Node Type 1: First Node (Below Upper Temperature Boundary)}} + +The first node includes conduction between the upper boundary and the node as well as the second node and the first node. The equation for this node is: + +\begin{equation} +\rho x_t w L c_p \frac{T_{1,new} - T_{1,old}}{\Delta t} = k w L \frac{T_{u,t}-T_{1,new}}{x_t / 2} + k w L \frac{T_{2,new}-T_{1,new}}{x_t} +\end{equation} + +This can be rearranged to: + +\begin{equation} +(1 + \frac{3 k \Delta t}{\rho c_p {x_t}^2}) T_{1,new} + (\frac{-k \Delta t}{\rho c_p {x_t}^2}) T_{2,new} = \frac{2 k \Delta t}{\rho c_p {x_t}^2} T_{u,t} + T_{1,old} +\end{equation} + +or: + +\begin{equation} +(1 + \frac{3 \alpha_s \Delta t}{{x_t}^2}) T_{1,new} + (\frac{-\alpha_s \Delta t}{{x_t}^2}) T_{2,new} = \frac{2 \alpha_s \Delta t}{{x_t}^2} T_{u,t} + T_{1,old} +\end{equation} + + +\emph{\textit{Node Type 2: Generic Node Upper Region}} + +The second through fourth nodes in the above diagram are all "generic" nodes in the upper region. They all have the same basic equation. Using "i" as the number for such a generic node, the equation for these nodes can be written as: + +\begin{equation} +\rho x_t w L c_p \frac{T_{i,new} - T_{i,old}}{\Delta t} = k w L \frac{T_{i+1,new}-T_{i,new}}{x_t} + k w L \frac{T_{i-1,new}-T_{i,new}}{x_t} +\end{equation} + +This can be rearranged to: + +\begin{equation} +(\frac{-k \Delta t}{\rho c_p {x_t}^2}) T_{i+1,new} + (1 + \frac{2 k \Delta t}{\rho c_p {x_t}^2}) T_{i,new} + (\frac{-k \Delta t}{\rho c_p {x_t}^2}) T_{i+1,new} = T_{i,old} +\end{equation} + +or: + +\begin{equation} +(\frac{-\alpha_s \Delta t}{{x_t}^2}) T_{i+1,new} + (1 + \frac{2 \alpha_s \Delta t}{{x_t}^2}) T_{i,new} + (\frac{-\alpha_s \Delta t}{{x_t}^2}) T_{i+1,new} = T_{i,old} +\end{equation} + + +\emph{\textit{Node Type 3: Last Node in Upper Region}} +The last node in the upper region connects to both the node above this one as well as the node at the earth tube ("et"). Since the thickness of the earth tube node and the nodes in the upper region are not the same, this requires a slight adjustment in the equations for a different thickness in the vertical direction. Here is the equation for this node: + +\begin{equation} +\rho x_t w L c_p \frac{T_{et-1,new} - T_{et-1,old}}{\Delta t} = k w L \frac{T_{et,new}-T_{et-1,new}}{(x_t + x_{et})/2} + k w L \frac{T_{et-2,new}-T_{et-1,new}}{x_t} +\end{equation} + +This can be rearranged to: + +\begin{equation} +(\frac{-k \Delta t}{\rho c_p {x_t}^2}) T_{et-2,new} + [1 + \frac{k \Delta t}{\rho c_p {x_t}^2} + \frac{k \Delta t}{\rho c_p x_t (x_t+x_{et})/2}] T_{et-1,new} + [\frac{-k \Delta t}{\rho c_p x_t (x_t+x_{et})/2}] T_{et,new} = T_{et-1,old} +\end{equation} + +or: + +\begin{equation} +(\frac{-\alpha_s \Delta t}{{x_t}^2}) T_{et-2,new} + [1 + \frac{\alpha_s \Delta t}{{x_t}^2} + \frac{\alpha_s \Delta t}{x_t (x_t+x_{et})/2}] T_{et-1,new} + [\frac{-\alpha_s \Delta t}{x_t (x_t+x_{et})/2}] T_{et,new} = T_{et-1,old} +\end{equation} + + +\emph{\textit{Node Type 4: Earth Tube Node}} + +The earth tube node is connected to nodes above and below it via conduction and also accounts for the convection between the air flowing through the tube and the conduction through the earth tube pipe material. The equation for this node, assuming an effectiveness-NTU model for heat exchange between the air and ground (see below), is: + +\begin{equation} +\rho x_{et} w L c_p \frac{T_{et,new} - T_{et,old}}{\Delta t} = k w L \frac{T_{et+1,new}-T_{et,new}}{(x_b + x_{et})/2} + k w L \frac{T_{et-1,new}-T_{et,new}}{(x_t + x_{et})/2} + {\dot m_a}{C_a} \eta (T_{air} - T_{et,new}) +\end{equation} + +This can be rearranged to: + +\begin{equation} +\begin{split} +[ \frac{-2k \Delta t}{\rho c_p x_{et} (x_t + x_{et})} ] T_{et-1,new} \\ + + [ 1 + \frac{2 k \Delta t}{\rho c_p x_{et} (x_t + x_{et})} + \frac{2 k \Delta t}{\rho c_p x_{et} (x_b+x_{et})} + \frac{\dot m_a {C_a} \eta \Delta t}{\rho c_p x_{et} w L} ] T_{et,new} \\ + + [ \frac{-2k \Delta t}{\rho c_p x_{et} (x_b + x_{et})} ] T_{et+1,new} \\ + = T_{et,old} + \frac{\dot m_a {C_a} \eta \Delta t}{\rho c_p x_{et} w L} T_{air,in} +\end{split} +\end{equation} + +or: + +\begin{equation} +\begin{split} +[ \frac{-2 \alpha_s \Delta t}{x_{et} (x_t + x_{et})} ] T_{et-1,new} \\ + + [ 1 + \frac{2 \alpha_s \Delta t}{x_{et} (x_t + x_{et})} + \frac{2 \alpha_s \Delta t}{x_{et} (x_b+x_{et})} + \frac{\dot m_a {C_a} \eta \Delta t}{\rho c_p x_{et} w L} ] T_{et,new} \\ + + [ \frac{-2 \alpha_s \Delta t}{x_{et} (x_b + x_{et})} ] T_{et+1,new} \\ + = T_{et,old} + \frac{\dot m_a {C_a} \eta \Delta t}{\rho c_p x_{et} w L} T_{air,in} +\end{split} +\end{equation} + +\emph{\textit{Node Type 5: First Node in Lower Region}} + +The region below the earth tube node is physically very similar to the region above the earth tube (reflected in a sense at the earth tube itself). The main difference is the number of nodes and the overall thickness of the region can lead to a node height that is different than for the upper region. Above this first node in the lower region, there is the earth tube node. Below it is one or more generic lower region nodes (Type 6 below). The equation for this node is: + +\begin{equation} +\rho x_b w L c_p \frac{T_{et+1,new} - T_{et+1,old}}{\Delta t} = k w L \frac{T_{et,new}-T_{et+1,new}}{(x_b + x_{et})/2} + k w L \frac{T_{et+2,new}-T_{et+1,new}}{x_b} +\end{equation} + +This can be rearranged to: + +\begin{equation} +[\frac{-k \Delta t}{\rho c_p x_b (x_b + x_{et})/2}] T_{et,new} + [1 + \frac{k \Delta t}{\rho c_p {x_b}^2} + \frac{k \Delta t}{\rho c_p x_b (x_b+x_{et})/2}] T_{et+1,new} + [\frac{-k \Delta t}{\rho c_p {x_b}^2}] T_{et+2,new} = T_{et+1,old} +\end{equation} + +or: + +\begin{equation} +[\frac{-\alpha_s \Delta t}{x_b (x_b + x_{et})/2}] T_{et,new} + [1 + \frac{\alpha_s \Delta t}{{x_b}^2} + \frac{\alpha_s \Delta t}{x_b (x_b+x_{et})/2}] T_{et+1,new} + [\frac{-\alpha_s \Delta t}{{x_b}^2}] T_{et+2,new} = T_{et+1,old} +\end{equation} + +\emph{\textit{Node Type 6: Generic Node in Lower Region}} + +The generic node equation in the lower region is nearly identical to generic node equation for the upper region except that the lower region node height replaces the upper region node height. The equation is therefore: + +\begin{equation} +\rho x_b w L c_p \frac{T_{i,new} - T_{i,old}}{\Delta t} = k w L \frac{T_{i+1,new}-T_{i,new}}{x_b} + k w L \frac{T_{i-1,new}-T_{i,new}}{x_b} +\end{equation} + +This can be rearranged to: + +\begin{equation} +(\frac{-k \Delta t}{\rho c_p {x_b}^2}) T_{i+1,new} + (1 + \frac{2 k \Delta t}{\rho c_p {x_b}^2}) T_{i,new} + (\frac{-k \Delta t}{\rho c_p {x_b}^2}) T_{i+1,new} = T_{i,old} +\end{equation} + +or: + +\begin{equation} +(\frac{-\alpha_s \Delta t}{{x_b}^2}) T_{i+1,new} + (1 + \frac{2 \alpha_s \Delta t}{{x_b}^2}) T_{i,new} + (\frac{-\alpha_s \Delta t}{{x_b}^2}) T_{i+1,new} = T_{i,old} +\end{equation} + +\emph{\textit{Node Type 7: Last Node (Above Lower Temperature Boundary)}} + +Finally, the last node temperature is in contact with the node above it as well as the temperature at the lower boundary condition. The actual temperature of the lower boundary condition is set by the undisturbed ground temperature equation used in the basic model for the depth of the lower boundary condition. The equation is similar to the first node: + +\begin{equation} +\rho x_b w L c_p \frac{T_{n,new} - T_{n,old}}{\Delta t} = k w L \frac{T_{l,t} - T_{n,new}}{x_b / 2} + k w L \frac{T_{n-1,new} - T_{n,new}}{x_t} +\end{equation} + +This can be rearranged to: + +\begin{equation} +(\frac{-k \Delta t}{\rho c_p {x_b}^2}) T_{n-1,new} + (1 + \frac{3 k \Delta t}{\rho c_p {x_b}^2}) T_{n,new} = \frac{2 k \Delta t}{\rho c_p {x_b}^2} T_{l,t} + T_{n,old} +\end{equation} + +or: + +\begin{equation} +(\frac{-\alpha_s \Delta t}{{x_b}^2}) T_{n-1,new} + (1 + \frac{3 \alpha_s \Delta t}{{x_b}^2}) T_{n,new} = \frac{2 \alpha_s \Delta t}{{x_b}^2} T_{l,t} + T_{n,old} +\end{equation} + +\emph{\textit{Calculation of Effectiveness for Heat Transfer Between the Air and Ground}} + +Similar to the low temperature radiant system where a fluid of variable temperature is passing through a solid that is assumed to be at a single temperature, the relationship between effectiveness and heat transfer between the air and the ground can be summarized using the following relationship: + +\begin{equation} +q = \dot m_a * C_{p,a} * (T_{air,in} - T_{air,out}) +\end{equation} + +where \(T_{air,in}\) is the outside air temperatre and \(T_{air,out}\) is the temperature of the air leaving the earth tube and entering the zone. + +\begin{equation} +q_{max} = \dot m_a * C_{p,a} * (T_{air,in} - T_{et}) +\end{equation} + +where \(T_{et}\) is the temperature of the ground at the depth of the earth tube (i.e., at the earth tube node). + +The effectiveness (\(\eta\)) is the ratio of these two terms or: + +\begin{equation} +\eta = \frac{q}{q_{max}} +\end{equation} + +For the situation where a fluid of varying temperature flows through a solid of constant temperature, the effectiveness can be related to the number of transfer units (NTU) by: + +\begin{equation} +\eta = 1 - e^{-NTU} +\end{equation} + +NTU is calculated using the following equation: + +\begin{equation} +NTU = U A / (\dot m C_p)_{min} +\end{equation} + +Since the solid is not moving, \((\dot m C_p)_{min}\) is evaluated for the air side. The U-value for this situation includes the heat conduction through the pipe wall and the convection between the inside surface of the earth tube and the air passing through it. The relations for both the conduction and convection terms rely on the relationships developed for the Basic model. With the effectiveness determined for a particular flow rate, the overall matrix equation is set and can be solved for the new node temperatures. + +\emph{\textit{Solution Strtegy}} + +The node equations above result in a system of equations that can be arranged as a matrix in the form of [A][x] = [b], where the number of node (n) is the index of the matrices. The A matrix (n by n square matrix) consists primarily of constant terms that relate to the thermo-physical properties of the solution space. The vector x consists of the new temperatures of the nodes (again, using the implicit formulation for stability) and the algorithm needs to solve for these. The vector b includes terms such as the old temperatures at the nodes, the impact of boundary conditions at the top and bottom of the solution space, and the impact of the earth tube on the earth tube node. The values of the vector b will vary with every time step since the temperatures of the nodes, ground, and air will vary with time. The seven equation types that were rearranged above were done so to fit with the [A][x] = [b] format. + +Upon inspection of the terms that make up the A matrix, it is clear that A will be a tridiagonal matrix. Tridiagonal matrices can be solved more efficiently using what is known as the Thomas algorithm which require operations on the order of the index (n) whereas solution strategies such as matrix inversion require operations on the order of the index (n) cubed. In addition, there is only one term in the A matrix that might potentially vary--the term associated with the air flow rate and efficiency of heat exchange between the earth tube and the air flow through it at the earth tube node. Since it is not known ahead of time what this flow rate or efficiency will be, the matrix system will have to go through a full solution at any time step. The only exception to this when there is no air flow through the earth tube. Since there will be significant time when the earth tube is dormant (no flow through it), the first step of the Thomas algorithm will be done for the zero flow situation and the values stored to reduce the number of calculations required by the solution. Note that while in many cases when the earth tube is running that the effectiveness (\(\eta\)) will be unity, the flow rate may still vary based on the user input flow coefficients. As a result, it does not make sense to store an intermediate step in the solution for when effectiveness is unity. + +In general, many of the related calculations (such as air flow rate, thermal properties of air, etc.) are identical to the Basic earth tube model. The main difference is the calculation of the temperature at the earth tube location--the Basic model uses the undisturbed ground temperature relationship while the Vertical solution uses the implicit finite difference scheme and the Thomas algorithm. + +Once the node (ground) temperatures have been determined, the calculation of the air temperature leaving the earth tube can be calculated using the effectiveness-NTU formulation above. Cancelling out the common flow rate and air specific heat, the equation for effectiveness simplifies to: + +\begin{equation} +\eta = \frac{T_{air,in} - T_{air,out}}{T_{air,in} - T_{et}} +\end{equation} + +Rearranging this equation to find the temperature of the air leaving the earth tube (inlet to the zone): + +\begin{equation} +T_{air,in} - T_{air,out} = \eta * (T_{air,in} - T_{et}) +\end{equation} + +or: + +\begin{equation} +T_{air,out} = T_{air,in} - \eta * (T_{air,in} - T_{et}) +\end{equation} + % table 87 \begin{longtable}[c]{p{1.5in}p{3.0in}p{1.5in}} \caption{Nomenclature for Earthtube Model \label{table:nomenclature-for-earthtube-model}} \tabularnewline @@ -2271,13 +2511,14 @@ \subsection{Earthtube}\label{earthtube} A\(_{s}\) & amplitude of the soil surface temperature variation & \(^{\circ}\)C \tabularnewline C\(_{a}\) & specific heat of air & J/kg-\(^{\circ}\)C \tabularnewline +c\(_{p}\) & specific heat of soil & J/kg-\(^{\circ}\)C \tabularnewline h\(_{c}\) & convective heat transfer coefficient at the inner pipe surface & W/m\(^{2}\)-\(^{\circ}\)C \tabularnewline h\(_{s}\) & convective heat transfer coefficient at the soil surface & W/m\(^{2}\)-\(^{\circ}\)C \tabularnewline k\(_{air}\) & thermal conductivity of the air & W/m-\(^{\circ}\)C \tabularnewline k\(_{p}\) & pipe thermal conductivity & W/m-\(^{\circ}\)C \tabularnewline -k\(_{s}\) & soil thermal conductivity & W/m-\(^{\circ}\)C \tabularnewline +k\(_{s}\) or k & soil thermal conductivity & W/m-\(^{\circ}\)C \tabularnewline L & pipe length & m \tabularnewline -m\(_{a}\) & mass flow rate of ambient air through pipe & kg/s \tabularnewline +\(\dot m_a\) & mass flow rate of ambient air through pipe & kg/s \tabularnewline r\(_{a}\) & relative humidity & ~ \tabularnewline R\(_{c}\) & thermal resistance due to convection heat transfer between the air in the pipe and the pipe inner surface & m-\(^{\circ}\)C/W \tabularnewline R\(_{p}\) & thermal resistance due to conduction heat transfer between the pipe inner and outer surface & m-\(^{\circ}\)C/W \tabularnewline @@ -2291,6 +2532,10 @@ \subsection{Earthtube}\label{earthtube} S\(_{v}\) & amplitude of the solar radiation & W/m\(^{2}\) \tabularnewline t & time elapsed from beginning of calendar year & days \tabularnewline T\(_{a}\)(y) & air temperature of the pipe at the distance y from the pipe inlet & \(^{\circ}\)C \tabularnewline +T\(_{et,new}\)(y) & earth tube node temperature (current) & \(^{\circ}\)C \tabularnewline +T\(_{et,old}\)(y) & earth tube node temperature (previous) & \(^{\circ}\)C \tabularnewline +T\(_{i,new}\)(y) & node temperature for node "i" (current) & \(^{\circ}\)C \tabularnewline +T\(_{i,old}\)(y) & node temperature for node "i" (previous) & \(^{\circ}\)C \tabularnewline T\(_{m}\) & average soil surface temperature & \(^{\circ}\)C \tabularnewline T\(_{ma}\) & average air temperature & \(^{\circ}\)C \tabularnewline t\(_{o}\) & phase constant of the soil surface & sec, days \tabularnewline @@ -2301,14 +2546,20 @@ \subsection{Earthtube}\label{earthtube} u & ~wind velocity above the ground surface & m/s \tabularnewline U\(_{t}\) & overall heat transfer coefficient of the whole earth tube system & W/m-\(^{\circ}\)C \tabularnewline V\(_{a}\) & average pipe air velocity & m/s \tabularnewline +w & node width (user input) in the vertical solution & m \tabularnewline +x\(_{t}\) & node thickness in the upper (top) region in the vertical solution & m \tabularnewline +x\(_{et}\) & node thickness for the earth tube node in the vertical solution & m \tabularnewline +x\(_{b}\) & node thickness in the lower (bottom) region in the vertical solution & m \tabularnewline z & depth of the radial center of pipe below soil surface & m \tabularnewline z\(_{1}\) & upper bounds of some vertical profile in soil & m \tabularnewline z\(_{2}\) & lower bounds of some vertical profile in soil & m \tabularnewline -$\alpha$\(_{s}\) & soil thermal diffusivity & m\(^{2}\)/s; m\(^{2}\)/days \tabularnewline +$\alpha$\(_{s}\) & soil thermal diffusivity & m\(^{2}\)/s; m\(^{2}\)/days; m\(^{2}\)/hr \tabularnewline $\beta$ & soil absorption coefficient ( = 1 – soil albedo) & ~ \tabularnewline +$\Delta$t & time step & hr \tabularnewline $\varepsilon$ & hemispherical emittance of the ground surface & ~ \tabularnewline $\varphi$\(_{I}\) & phase angle between the insolation and the air temperature & rad \tabularnewline $\phi$\(_{s}\) & phase angle difference between the air and soil surface temperature & rad \tabularnewline +$\rho$ & soil density & kg/m\(^3\) \tabularnewline $\upsilon$ & kinetic viscosity of air & m\(^{2}\)/s \tabularnewline w & annual angular frequency ( = 1.992 x 10\(^{-7}\)rad/s) & rad/s \tabularnewline \bottomrule diff --git a/doc/input-output-reference/src/overview/group-airflow.tex b/doc/input-output-reference/src/overview/group-airflow.tex index c369fac0153..92640cd765b 100644 --- a/doc/input-output-reference/src/overview/group-airflow.tex +++ b/doc/input-output-reference/src/overview/group-airflow.tex @@ -1752,11 +1752,40 @@ \subsubsection{Inputs} This number is the ``D'' parameter in the above earth tube equation. It is part of the user specified modifying parameters that are a function of environmental factors. This parameter is modified by square of the speed of wind being experienced outside the building. The units for this parameter are s\(^{2}\)/m\(^{2}\). +\paragraph{Field: Earth Tube Model Type}\label{field-earth-tube-model-type} + +This field determines which modeling technique will be used to assess the performance of the earth tube. The options are: Simple and Vertical. In the Simple modeling approach, the temperature of the soil at the earth tube is approximated by the undisturbed ground conditions. In the Vertical modeling approach, the temperature of the soil around the earth tube is modeled using a finite difference scheme to account for the impact of the earth tube on the surrounding soil conditions in a single direction (1-D). For more information on the model type, reference the Earth Tube section of the EnergyPlus Engineering Reference. This input is optional, and the default value is Simple. + +\paragraph{Field: Earth Tube Model Parameters}\label{field-earth-tube-model-parameters} + +This field refers to separate input syntax (see below) that is used for controlling parameters for the 1-D (Vertical) solution technique. This input field is ignored for the Simple model. If the user selects the Vertical solution and leaves this field blank, the default values for all of the parameters will be assumed. + +\paragraph{ZoneEarthtube:Parameters}\label{field-earth-tube-parameters} +For the 1-D (Vertical) model, some additional optional parameters are available for the user to potentially control the solution space (number of nodes, distances) for the finite difference solution. These are described below. + +\paragraph{Field: Earth Tube Parameters Name}\label{field-earth-tube-parameters-name} +This name is used as a reference in the main EarthTube input syntax. It is used to identify the parameters that the user desires to use to control what is being modeled and how detailed the model is. + +\paragraph{Field: Earth Tube Nodes Above}\label{field-earth-tube-nodes-above} +This parameter sets the number of nodes above the earth tube, between the earth tube and the ground surface. It has a minimum of three nodes and a maximum of ten nodes. These limits were chosen to avoid the extremes of excessive execution times and overly simplified results. The default value for this parameter is 5 (nodes). + +\paragraph{Field: Earth Tube Nodes Below}\label{field-earth-tube-nodes-below} +This parameter sets the number of nodes below the earth tube, between the earth tube and the deep ground boundary. It has a minimum of three nodes and a maximum of ten nodes. These limits were chosen to avoid the extremes of excessive execution times and overly simplified results. The default value for this parameter is 3 (nodes) or the minimum. + +\paragraph{Field: Earth Tube Dimensionless Boundary Above}\label{field-earth-tube-dimensionless-boundary-above} +This parameter sets the dimensionless distance above the earth tube for the solution space. The maximum value is 1.0, and the minimum value is 0.25. When this parameter is set to 1.0, the upper boundary is set to be half of the diameter below the ground surface and the solution space thickness above the earth tube is the depth of the earth tube minus the earth tube diameter. This maximum distance (earth tube depth minus diameter) is multiplied by this parameter to constrain the solution space to less than the maximum (when the parameter is less than 1.0). The default value for this parameter is 1.0 (the maximum value). + +\paragraph{Field: Earth Tube Dimensionless Boundary Below}\label{field-earth-tube-dimensionless-boundary-below} +This parameter sets the dimensionless distance below the earth tube for the solution space. The maximum value is 1.0, and the minimum value is 0.25. This parameter is interpretted in a similar fashion as the previous parameter where the depth of the solution space below the earth tube is determined by the maximum distance above the earth tube (earth tube depth minus radius). This allows the user to have different thickness for the modeled portion of the ground above and below the earth tube. The default value for this parameter is 0.25 (the minimum value). + +\paragraph{Field: Earth Tube Dimensionless Solution Space Width}\label{field-earth-tube-dimensionless-solution-space-width} +This parameter sets the dimensionless width of the solution space horizontally as a function of the earth tube radius as defined in the main earth tube input syntax. The maximum value is 20.0, and the minimum value is 3.0. The default value for this parameter is 4.0 which means that the width of the solution space is four times the radius. In other words, this would include soil one radius length beyond the edges of the tube on either side of the earth tube. + An IDF example: \begin{lstlisting} -EARTHTUBE, +ZoneEarthtube, Zone 2, !- Zone Name Simple EarthTube, !- Schedule Name 3.425198, !- Design Volume Flow Rate @@ -1775,10 +1804,20 @@ \subsubsection{Inputs} 15.0, !- Average Soil Surface Temperature 5.6, !- Amplitude of Soil Surface Temperature 0.0, !- Phase Constant of Soil Surface Temperature - 0.6060000 , !- Constant Term Flow Coef + 0.6060000, !- Constant Term Flow Coef 2.0199999E-02, !- Temp Term Flow Coef 5.9800001E-04, !- Velocity Term Flow Coef - 0.0000000E+00; !- Velocity**2 Term Flow Coef + 0.0000000E+00, !- Velocity**2 Term Flow Coef + Vertical, !- Earth Tube Model Type + EarthTubeParams; !- Earth Tube Model Parameters + +ZoneEarthtube:Parameters, + EarthTubeParams, !- Earth Tube Model Parameters (Name) + 5, !- Nodes Above Earth Tube + 3, !- Nodes Below Earth Tube + 1.0, !- Earth Tube Dimensionless Boundary Above + 0.5, !- Earth Tube Dimensionless Boundary Below + 4.0; !- Earth Tube Dimensionless Solution Space Width \end{lstlisting} \subsubsection{Outputs}\label{zoneearthtube-outputs} @@ -1820,6 +1859,14 @@ \subsubsection{Outputs}\label{zoneearthtube-outputs} HVAC,Average,Earth Tube Inlet Wet Bulb Temperature {[}C{]} \item HVAC,Average,Earth Tube Inlet Humidity Ratio {[}kgWater/kgDryAir{]} +\item + Zone,Average,Earth Tube Node Temperature {[}C{]} +\item + Zone,Average,Earth Tube Undisturbed Ground Temperature {[}C{]} +\item + Zone,Average,Earth Tube Upper Boundary Ground Temperature {[}C{]} +\item + Zone,Average,Earth Tube Lower Boundary Ground Temperature {[}C{]} \end{itemize} \paragraph{Earth Tube Zone Sensible Cooling Energy {[}J{]}}\label{earth-tube-zone-sensible-cooling-energy-j} @@ -1884,6 +1931,22 @@ \subsubsection{Outputs}\label{zoneearthtube-outputs} This is the humidity ratio of the air entering the zone after passing through the earth tube {[}kgWater/kgDryAir{]}. +\paragraph{Earth Tube Node Temperature {[}C{]}}\label{earth-tube-node-temperatures-c} + +This will generate the internal node temperatures {[}C{]} for the earth tube as a result of the 1-D finite difference model. This is only valid for the 1-D (Vertical) model. + +\paragraph{Earth Tube Undisturbed Ground Temperature {[}C{]}}\label{earth-tube-undisturbed-node-temperatures-c} + +This will report the theoretical undisturbed ground temperature at the location of the internal node temperatures {[}C{]} as well as the average for the location of the earth tube for the 1-D finite difference model. This is only valid for the 1-D (Vertical) model and provides a comparison of conditions for the simple model and the 1-D (Vertical) model. + +\paragraph{Earth Tube Upper Boundary Ground Temperature {[}C{]}}\label{earth-tube-upper-boundary-temperature-c} + +This will report the theoretical undisturbed ground temperature at the upper boundary for the 1-D finite difference model. This is only valid for the 1-D (Vertical) model. + +\paragraph{Earth Tube Lower Boundary Ground Temperature {[}C{]}}\label{earth-tube-lower-boundary-temperature-c} + +This will report the theoretical undisturbed ground temperature at the lower boundary for the 1-D finite difference model. This is only valid for the 1-D (Vertical) model. + \subsection{ZoneCoolTower:Shower}\label{zonecooltowershower} A cooltower (which is sometimes referred to as a wind tower or a shower cooling tower) is a component that is intended to model a passive downdraught evaporative cooling (PDEC) that is designed to capture the wind at the top of a tower and cool the outside air using water evaporation before delivering it to a space.~ The air flow in these systems is natural as the evaporation process increases the density of the air causing it to fall through the tower and into the space without the aid of a fan. ~A cooltower typically consists of a water spray or an evaporative pad, a shaft, and a water tank or reservoir. ~Wind catchers to improve the wind-driven performance at the top of the tower are optional. ~Water is pumped over an evaporative device by water pump which is the only component consumed power for this system.~ This water cools and humidifies incoming air and then the cool, dense air naturally falls down through shaft and leaves through large openings at the bottom of cooltowers. diff --git a/idd/Energy+.idd.in b/idd/Energy+.idd.in index 5d91c7adb7e..d82721b8961 100644 --- a/idd/Energy+.idd.in +++ b/idd/Energy+.idd.in @@ -24527,10 +24527,58 @@ ZoneEarthtube, \note "C" in Equation \type real \default 0 - N18; \field Velocity Squared Term Flow Coefficient + N18, \field Velocity Squared Term Flow Coefficient \note "D" in Equation \type real \default 0 + A5, \field Earth Tube Model Type + \type choice + \key Basic + \key Vertical + \default Basic + A6; \field Earth Tube Model Parameters + \type object-list + \object-list EarthTubeParameterNames + +ZoneEarthtube:Parameters, + \memo Parameters that apply to the vertical model for an earth tube + \min-fields 6 + A1, \field Earth Tube Model Parameters Name + \required-field + \reference EarthTubeParameterNames + N1, \field Nodes Above Earth Tube + \type integer + \units dimensionless + \minimum 3 + \maximum 10 + \default 5 + N2, \field Nodes Below Earth Tube + \type integer + \units dimensionless + \minimum 3 + \maximum 10 + \default 3 + N3, \field Earth Tube Dimensionless Boundary Above + \note When set to 1.0, the upper boundary is one earth tube radius below ground. + \type real + \units dimensionless + \minimum 0.25 + \maximum 1.0 + \default 1.0 + N4, \field Earth Tube Dimensionless Boundary Above + \note When set to 1.0, the upper boundary is one earth tube radius below ground. + \type real + \units dimensionless + \minimum 0.25 + \maximum 1.0 + \default 0.25 + N5; \field Earth Tube Solution Space Width + \note Width of the nodes in the direction parallel to the ground, multiplied by earth tube radius + \type real + \units dimensionless + \minimum 3.0 + \maximum 20.0 + \default 4.0 ZoneCoolTower:Shower, \memo A cooltower (sometimes referred to as a wind tower or a shower cooling tower) diff --git a/src/EnergyPlus/EarthTube.cc b/src/EnergyPlus/EarthTube.cc index e7d3ef62e98..bc000b42e08 100644 --- a/src/EnergyPlus/EarthTube.cc +++ b/src/EnergyPlus/EarthTube.cc @@ -96,9 +96,12 @@ enum class SoilType Num }; +int totEarthTube = 0; + constexpr std::array(Ventilation::Num)> ventilationNamesUC = {"NATURAL", "INTAKE", "EXHAUST"}; constexpr std::array(SoilType::Num)> soilTypeNamesUC = { "HEAVYANDSATURATED", "HEAVYANDDAMP", "HEAVYANDDRY", "LIGHTANDDRY"}; +constexpr std::array(EarthTubeModelType::Num)> solutionTypeNamesUC = {"BASIC", "VERTICAL"}; void ManageEarthTube(EnergyPlusData &state) { @@ -121,6 +124,8 @@ void ManageEarthTube(EnergyPlusData &state) if (state.dataEarthTube->EarthTubeSys.empty()) return; + initEarthTubeVertical(state); + CalcEarthTube(state); ReportEarthTube(state); @@ -152,12 +157,53 @@ void GetEarthTube(EnergyPlusData &state, bool &ErrorsFound) // If errors found i // Following used for reporting state.dataEarthTube->ZnRptET.allocate(state.dataGlobal->NumOfZones); - constexpr std::string_view cCurrentModuleObject = "ZoneEarthtube"; - int TotEarthTube = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, cCurrentModuleObject); + std::string_view cCurrentModuleObject = "ZoneEarthtube:Parameters"; + int totEarthTubePars = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, cCurrentModuleObject); + + state.dataEarthTube->EarthTubePars.allocate(totEarthTubePars); + + for (Loop = 1; Loop <= totEarthTubePars; ++Loop) { + auto &thisEarthTubePars = state.dataEarthTube->EarthTubePars(Loop); + state.dataInputProcessing->inputProcessor->getObjectItem(state, + cCurrentModuleObject, + Loop, + state.dataIPShortCut->cAlphaArgs, + NumAlpha, + state.dataIPShortCut->rNumericArgs, + NumNumber, + IOStat, + state.dataIPShortCut->lNumericFieldBlanks, + state.dataIPShortCut->lAlphaFieldBlanks, + state.dataIPShortCut->cAlphaFieldNames, + state.dataIPShortCut->cNumericFieldNames); + + thisEarthTubePars.nameParameters = state.dataIPShortCut->cAlphaArgs(1); + // Check to make sure name is unique + for (int otherParams = 1; otherParams < Loop; ++otherParams) { + if (UtilityRoutines::SameString(thisEarthTubePars.nameParameters, state.dataEarthTube->EarthTubePars(otherParams).nameParameters)) { + ShowSevereError(state, + format("{}: {} = {} is not a unique name.", + cCurrentModuleObject, + state.dataIPShortCut->cAlphaFieldNames(1), + state.dataIPShortCut->cAlphaArgs(1))); + ShowContinueError(state, format("Check the other {} names for a duplicate.", cCurrentModuleObject)); + ErrorsFound = true; + } + } + + thisEarthTubePars.numNodesAbove = state.dataIPShortCut->rNumericArgs(1); + thisEarthTubePars.numNodesBelow = state.dataIPShortCut->rNumericArgs(2); + thisEarthTubePars.dimBoundAbove = state.dataIPShortCut->rNumericArgs(3); + thisEarthTubePars.dimBoundBelow = state.dataIPShortCut->rNumericArgs(4); + thisEarthTubePars.width = state.dataIPShortCut->rNumericArgs(5); + } + + cCurrentModuleObject = "ZoneEarthtube"; + totEarthTube = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, cCurrentModuleObject); - state.dataEarthTube->EarthTubeSys.allocate(TotEarthTube); + state.dataEarthTube->EarthTubeSys.allocate(totEarthTube); - for (Loop = 1; Loop <= TotEarthTube; ++Loop) { + for (Loop = 1; Loop <= totEarthTube; ++Loop) { auto &thisEarthTube = state.dataEarthTube->EarthTubeSys(Loop); state.dataInputProcessing->inputProcessor->getObjectItem(state, cCurrentModuleObject, @@ -337,6 +383,8 @@ void GetEarthTube(EnergyPlusData &state, bool &ErrorsFound) // If errors found i ErrorsFound = true; } if (thisEarthTube.z <= (thisEarthTube.r1 + thisEarthTube.r2 + thisEarthTube.r3)) { + // Note that code in initEarthTubeVertical assumes that this check remains in place--if this ever gets changed, + // code in initEarthTubeVertical must be modified ShowSevereError(state, format("{}: {}={}, {} must be greater than 3*{} + {} entered value={:.2R} ref sum={:.2R}", cCurrentModuleObject, @@ -382,6 +430,46 @@ void GetEarthTube(EnergyPlusData &state, bool &ErrorsFound) // If errors found i thisEarthTube.VelocityTermCoef = state.dataIPShortCut->rNumericArgs(17); thisEarthTube.VelocitySQTermCoef = state.dataIPShortCut->rNumericArgs(18); + // cAlphaArgs(5)--Model type: basic or vertical + // only process cAlphaArgs(6) if cAlphaArgs(5) is "Vertical" + if (state.dataIPShortCut->cAlphaArgs(5).empty()) { + thisEarthTube.ModelType = EarthTubeModelType::Basic; + } else { + thisEarthTube.ModelType = static_cast(getEnumValue(solutionTypeNamesUC, state.dataIPShortCut->cAlphaArgs(5))); + if (thisEarthTube.ModelType == EarthTubeModelType::Invalid) { + ShowSevereError(state, + format("{}: {}={}, {} invalid={}", + cCurrentModuleObject, + state.dataIPShortCut->cAlphaFieldNames(1), + state.dataIPShortCut->cAlphaArgs(1), + state.dataIPShortCut->cAlphaFieldNames(5), + state.dataIPShortCut->cAlphaArgs(5))); + ErrorsFound = true; + } + } + + if (thisEarthTube.ModelType == EarthTubeModelType::Vertical) { + thisEarthTube.r3 = 0.0; // Vertical model does not use this parameter--reset to zero (keep because r3=0 necessary so Rs=0 in calc routine) + // Process the parameters based on the name (link via index) + thisEarthTube.vertParametersPtr = 0; + for (int parIndex = 1; parIndex <= totEarthTubePars; ++parIndex) { + if (UtilityRoutines::SameString(state.dataIPShortCut->cAlphaArgs(6), state.dataEarthTube->EarthTubePars(parIndex).nameParameters)) { + thisEarthTube.vertParametersPtr = parIndex; + break; + } + } + if (thisEarthTube.vertParametersPtr == 0) { // didn't find a match + ShowSevereError(state, + format("{}: {}={}, Parameter Object {} was not found in the input file.", + cCurrentModuleObject, + state.dataIPShortCut->cAlphaFieldNames(1), + state.dataIPShortCut->cAlphaArgs(1), + state.dataIPShortCut->cAlphaArgs(6))); + ShowContinueError(state, "Check this name and make sure one of the earth tube parameters objects matches it."); + ErrorsFound = true; + } + } + if (thisEarthTube.ZonePtr > 0) { if (RepVarSet(thisEarthTube.ZonePtr)) { RepVarSet(thisEarthTube.ZonePtr) = false; @@ -487,7 +575,7 @@ void GetEarthTube(EnergyPlusData &state, bool &ErrorsFound) // If errors found i SetupOutputVariable(state, "Earth Tube Ground Interface Temperature", OutputProcessor::Unit::C, - thisEarthTube.GroundTempz1z2t, + thisEarthTube.GroundTempt, OutputProcessor::SOVTimeStepType::System, OutputProcessor::SOVStoreType::State, zone.Name); @@ -543,6 +631,195 @@ void CheckEarthTubesInZones(EnergyPlusData &state, } } +void initEarthTubeVertical(EnergyPlusData &state) +{ + if (state.dataEarthTube->initFirstTime) { + state.dataEarthTube->initFirstTime = false; + for (int etNum = 1; etNum <= totEarthTube; ++etNum) { + auto &thisEarthTube = state.dataEarthTube->EarthTubeSys(etNum); + if (thisEarthTube.ModelType != EarthTubeModelType::Vertical) continue; // Skip earth tubes that do not use vertical solution + auto &thisEarthTubeParams = state.dataEarthTube->EarthTubePars(thisEarthTube.vertParametersPtr); + thisEarthTube.totNodes = thisEarthTubeParams.numNodesAbove + thisEarthTubeParams.numNodesBelow + 1; + thisEarthTube.aCoeff.resize(thisEarthTube.totNodes); + thisEarthTube.bCoeff.resize(thisEarthTube.totNodes); + thisEarthTube.cCoeff.resize(thisEarthTube.totNodes); + thisEarthTube.cCoeff0.resize(thisEarthTube.totNodes); + thisEarthTube.dCoeff.resize(thisEarthTube.totNodes); + thisEarthTube.cPrime.resize(thisEarthTube.totNodes); + thisEarthTube.dPrime.resize(thisEarthTube.totNodes); + thisEarthTube.cPrime0.resize(thisEarthTube.totNodes); + thisEarthTube.tCurrent.resize(thisEarthTube.totNodes); + thisEarthTube.tLast.resize(thisEarthTube.totNodes); + thisEarthTube.depthNode.resize(thisEarthTube.totNodes); + thisEarthTube.tUndist.resize(thisEarthTube.totNodes); + Real64 thickBase = (thisEarthTube.z - 3.0 * thisEarthTube.r1); + Real64 thickTop = thickBase * thisEarthTubeParams.dimBoundAbove / float(thisEarthTubeParams.numNodesAbove); + Real64 thickBottom = thickBase * thisEarthTubeParams.dimBoundBelow / float(thisEarthTubeParams.numNodesBelow); + Real64 thickEarthTube = 4.0 * thisEarthTube.r1; + Real64 deltat = state.dataGlobal->TimeStepZone; + Real64 thermDiff = thisEarthTube.SoilThermDiff / Constant::HoursInDay; // convert to "per hour" from "per day" + + // Node equations determine the _Coeff terms--see Engineering Referenve for details on these equation types + // Note that node numbers are shifted for c++ arrays that go from 0 to numNodes-1. + // Node Type 1 (Top Node) + Real64 commonTerm = thermDiff * deltat / (thickTop * thickTop); + thisEarthTube.aCoeff[0] = 0.0; // no a0 value + thisEarthTube.bCoeff[0] = 1.0 + 3.0 * commonTerm; + thisEarthTube.cCoeff[0] = -1.0 * commonTerm; + thisEarthTube.dMult0 = 2.0 * commonTerm; // does not include temperatures (upper boundary or previous time step)--added later + // Node Type 2 (Generic Top Section Node) + for (int nodeNum = 1; nodeNum <= thisEarthTubeParams.numNodesAbove - 2; ++nodeNum) { + thisEarthTube.aCoeff[nodeNum] = -1.0 * commonTerm; + thisEarthTube.bCoeff[nodeNum] = 1.0 + 2.0 * commonTerm; + thisEarthTube.cCoeff[nodeNum] = -1.0 * commonTerm; + } + // Node Type 3 (Last Top Section Node) + int thisNode = thisEarthTubeParams.numNodesAbove - 1; + Real64 commonTerm2 = 2.0 * thermDiff * deltat / (thickTop + thickEarthTube) / thickTop; + thisEarthTube.aCoeff[thisNode] = -1.0 * commonTerm; + thisEarthTube.bCoeff[thisNode] = 1.0 + commonTerm + commonTerm2; + thisEarthTube.cCoeff[thisNode] = -1.0 * commonTerm2; + // Node Type 4 (Earth Tube Node) + thisNode = thisEarthTubeParams.numNodesAbove; + commonTerm = 2.0 * thermDiff * deltat / (thickTop + thickEarthTube) / thickEarthTube; + commonTerm2 = 2.0 * thermDiff * deltat / (thickBottom + thickEarthTube) / thickEarthTube; + thisEarthTube.aCoeff[thisNode] = -1.0 * commonTerm; + thisEarthTube.bCoeff[thisNode] = 1.0 + commonTerm + commonTerm2; // does not include earth tube air flow term--added later + thisEarthTube.cCoeff[thisNode] = -1.0 * commonTerm2; + // Node Type 5 (First Bottom Section Node) + thisNode = thisEarthTubeParams.numNodesAbove + 1; + commonTerm = thermDiff * deltat / (thickBottom * thickBottom); + commonTerm2 = 2.0 * thermDiff * deltat / (thickBottom + thickEarthTube) / thickBottom; + thisEarthTube.aCoeff[thisNode] = -1.0 * commonTerm2; + thisEarthTube.bCoeff[thisNode] = 1.0 + commonTerm + commonTerm2; + thisEarthTube.cCoeff[thisNode] = -1.0 * commonTerm; + // Node Type 6 (Generic Bottom Section Node) + for (int nodeNum = thisNode + 1; nodeNum <= thisEarthTube.totNodes - 2; ++nodeNum) { + thisEarthTube.aCoeff[nodeNum] = -1.0 * commonTerm; + thisEarthTube.bCoeff[nodeNum] = 1.0 + 2.0 * commonTerm; + thisEarthTube.cCoeff[nodeNum] = -1.0 * commonTerm; + } + // Node Type 7 (Last Bottom Section Node, i.e. Last Node) + thisNode = thisEarthTube.totNodes - 1; // shifted due to c++ arrays that go from 0 to numNodes-1 + thisEarthTube.aCoeff[thisNode] = -1.0 * commonTerm; + thisEarthTube.bCoeff[thisNode] = 1.0 + 3.0 * commonTerm; + thisEarthTube.cCoeff[thisNode] = 0.0; // no cN value + thisEarthTube.dMultN = 2.0 * commonTerm; // does not include previous temperature and earth tube air flow terms--added later + + // Initialize node temperatures using undisturbed temperature equation and node depths + // First, nodes above the earth tube + thisEarthTube.depthNode[thisEarthTubeParams.numNodesAbove - 1] = thisEarthTube.z - 0.5 * (thickEarthTube + thickTop); + for (int nodeNum = thisEarthTubeParams.numNodesAbove - 2; nodeNum >= 0; --nodeNum) { + thisEarthTube.depthNode[nodeNum] = thisEarthTube.depthNode[nodeNum + 1] - thickTop; + } + // Now, the earth tube node + thisEarthTube.depthNode[thisEarthTubeParams.numNodesAbove] = thisEarthTube.z; + // Finally the nodes below the earth tube + thisEarthTube.depthNode[thisEarthTubeParams.numNodesAbove + 1] = thisEarthTube.z + 0.5 * (thickEarthTube + thickBottom); + for (int nodeNumBelow = 2; nodeNumBelow <= thisEarthTubeParams.numNodesBelow; ++nodeNumBelow) { + int nodeNum = thisEarthTubeParams.numNodesAbove + nodeNumBelow; + thisEarthTube.depthNode[nodeNum] = thisEarthTube.depthNode[nodeNum - 1] + thickBottom; + } + thisEarthTube.depthUpperBound = thisEarthTube.depthNode[0] - 0.5 * thickTop; + thisEarthTube.depthLowerBound = thisEarthTube.depthNode[thisEarthTube.totNodes - 1] + 0.5 * thickBottom; + + // Calculate constant part of air flow term at earth tube node. Note that diffusiity/conductivity = 1/(density*specific_heat) + thisEarthTube.airFlowCoeff = state.dataGlobal->TimeStepZone * thermDiff / thisEarthTube.SoilThermCond / thickEarthTube / + thisEarthTubeParams.width / thisEarthTube.PipeLength; + + // Calculate some initial values in the Thomas algorithm. This includes c' when effectiveness is zero (entire c'). + // For any other effectiveness, c' will be the same as c' when effectiveness for is zero for the nodes above the earth + // tube. So, the c' for effectiveness of zero (cPrime0) can be reused as needed. + for (int nodeNum = 0; nodeNum <= thisEarthTube.totNodes - 1; ++nodeNum) { + thisEarthTube.cCoeff0[nodeNum] = thisEarthTube.cCoeff[nodeNum]; + } + thisEarthTube.initCPrime0(); + + auto &zone = state.dataHeatBal->Zone(thisEarthTube.ZonePtr); + for (int nodeNum = 1; nodeNum <= thisEarthTube.totNodes; ++nodeNum) { + SetupOutputVariable(state, + format("Earth Tube Node Temperature {}", nodeNum), + OutputProcessor::Unit::C, + thisEarthTube.tCurrent[nodeNum - 1], + OutputProcessor::SOVTimeStepType::Zone, + OutputProcessor::SOVStoreType::State, + zone.Name); + SetupOutputVariable(state, + format("Earth Tube Undisturbed Ground Temperature {}", nodeNum), + OutputProcessor::Unit::C, + thisEarthTube.tUndist[nodeNum - 1], + OutputProcessor::SOVTimeStepType::Zone, + OutputProcessor::SOVStoreType::State, + zone.Name); + } + SetupOutputVariable(state, + "Earth Tube Upper Boundary Ground Temperature", + OutputProcessor::Unit::C, + thisEarthTube.tUpperBound, + OutputProcessor::SOVTimeStepType::Zone, + OutputProcessor::SOVStoreType::State, + zone.Name); + SetupOutputVariable(state, + "Earth Tube Lower Boundary Ground Temperature", + OutputProcessor::Unit::C, + thisEarthTube.tLowerBound, + OutputProcessor::SOVTimeStepType::Zone, + OutputProcessor::SOVStoreType::State, + zone.Name); + } + } // ...end of firstTimeInits block + + Real64 timeElapsedLoc = + state.dataGlobal->HourOfDay + state.dataGlobal->TimeStep * state.dataGlobal->TimeStepZone + state.dataHVACGlobal->SysTimeElapsed; + if (state.dataEarthTube->timeElapsed != + timeElapsedLoc) { // time changed, update last with "current", avoids duplicate initializations and improper updates + if (state.dataGlobal->BeginDayFlag || state.dataGlobal->BeginEnvrnFlag) { + // update all of the undisturbed temperatures (only need to do this once per day because the equation only changes as the day changes + for (int etNum = 1; etNum <= totEarthTube; ++etNum) { + auto &thisEarthTube = state.dataEarthTube->EarthTubeSys(etNum); + if (thisEarthTube.ModelType != EarthTubeModelType::Vertical) continue; // Skip earth tubes that do not use vertical solution + thisEarthTube.tUpperBound = thisEarthTube.calcUndisturbedGroundTemperature(state, thisEarthTube.depthUpperBound); + thisEarthTube.tLowerBound = thisEarthTube.calcUndisturbedGroundTemperature(state, thisEarthTube.depthLowerBound); + for (int nodeNum = 0; nodeNum <= thisEarthTube.totNodes - 1; ++nodeNum) { + thisEarthTube.tUndist[nodeNum] = thisEarthTube.calcUndisturbedGroundTemperature(state, thisEarthTube.depthNode[nodeNum]); + } + } + } // ...end of BeginDayFlag block + + if (state.dataGlobal->BeginEnvrnFlag || + (!state.dataGlobal->WarmupFlag && state.dataGlobal->BeginDayFlag && state.dataGlobal->DayOfSim == 1)) { + for (int etNum = 1; etNum <= totEarthTube; ++etNum) { + auto &thisEarthTube = state.dataEarthTube->EarthTubeSys(etNum); + if (thisEarthTube.ModelType != EarthTubeModelType::Vertical) continue; // Skip earth tubes that do not use vertical solution + for (int nodeNum = 0; nodeNum <= thisEarthTube.totNodes - 1; ++nodeNum) { + thisEarthTube.tLast[nodeNum] = thisEarthTube.tUndist[nodeNum]; + thisEarthTube.tCurrent[nodeNum] = thisEarthTube.tLast[nodeNum]; + } + } + } + + for (int etNum = 1; etNum <= totEarthTube; ++etNum) { + auto &thisEarthTube = state.dataEarthTube->EarthTubeSys(etNum); + if (thisEarthTube.ModelType != EarthTubeModelType::Vertical) continue; // Skip earth tubes that do not use vertical solution + for (int nodeNum = 0; nodeNum <= thisEarthTube.totNodes - 1; ++nodeNum) { + thisEarthTube.tLast[nodeNum] = thisEarthTube.tCurrent[nodeNum]; + } + } + } + state.dataEarthTube->timeElapsed = timeElapsedLoc; +} + +void EarthTubeData::initCPrime0() +{ + // Calculate c' for when effectiveness is zero. Will use these values when there is no air flow through the earth tube + // and also use the values in the top portion of the solution (before the earth tube node) since these will not change. + this->cPrime0[0] = this->cCoeff0[0] / this->bCoeff[0]; + for (int i = 1; i <= this->totNodes - 2; ++i) { + this->cPrime0[i] = this->cCoeff0[i] / (this->bCoeff[i] - this->aCoeff[i] * this->cPrime0[i - 1]); + } + cPrime0[this->totNodes - 1] = 0.0; +} + void CalcEarthTube(EnergyPlusData &state) { @@ -554,8 +831,8 @@ void CalcEarthTube(EnergyPlusData &state) // This subroutine simulates the components making up the EarthTube unit. // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - Real64 Process1; // Variable Used in the Middle of the Calculation - Real64 GroundTempz1z2t; // Average Ground Temperature between Depth z1 and z2 at time t + Real64 Process1; // Variable Used in the Middle of the Calculation + Real64 GroundTempt; // Ground Temperature between Depth z at time t Real64 AirThermCond; // Thermal Conductivity of Air (W/mC) Real64 AirKinemVisco; // Kinematic Viscosity of Air (m2/s) @@ -577,6 +854,7 @@ void CalcEarthTube(EnergyPlusData &state) Real64 EVF; int numEarthTubes = (int)state.dataEarthTube->EarthTubeSys.size(); + Real64 outTdb = state.dataEnvrn->OutDryBulbTemp; for (int Loop = 1; Loop <= numEarthTubes; ++Loop) { auto &thisEarthTube = state.dataEarthTube->EarthTubeSys(Loop); int NZ = thisEarthTube.ZonePtr; @@ -587,23 +865,24 @@ void CalcEarthTube(EnergyPlusData &state) thisZoneHB.EAMFLxHumRat = 0.0; thisEarthTube.FanPower = 0.0; - // Skip this if the zone is below the minimum temperature limit - if (state.dataZoneTempPredictorCorrector->zoneHeatBalance(NZ).MAT < thisEarthTube.MinTemperature) continue; - // Skip this if the zone is above the maximum temperature limit - if (state.dataZoneTempPredictorCorrector->zoneHeatBalance(NZ).MAT > thisEarthTube.MaxTemperature) continue; - // Skip if below the temperature difference limit - if (std::abs(state.dataZoneTempPredictorCorrector->zoneHeatBalance(NZ).MAT - state.dataEnvrn->OutDryBulbTemp) < thisEarthTube.DelTemperature) - continue; + // Don't simulate for Basic Solution if the zone is below the minimum temperature limit, above the maximum temperature limit + // or below the temperature difference limit + bool tempShutDown = thisZoneHB.MAT < thisEarthTube.MinTemperature || thisZoneHB.MAT > thisEarthTube.MaxTemperature || + std::abs(thisZoneHB.MAT - outTdb) < thisEarthTube.DelTemperature; + // check for Basic model and some temperature limit preventing the earth tube from running + if ((thisEarthTube.ModelType == EarthTubeModelType::Basic) && (tempShutDown)) continue; - AirDensity = - Psychrometrics::PsyRhoAirFnPbTdbW(state, state.dataEnvrn->OutBaroPress, state.dataEnvrn->OutDryBulbTemp, state.dataEnvrn->OutHumRat); + AirDensity = Psychrometrics::PsyRhoAirFnPbTdbW(state, state.dataEnvrn->OutBaroPress, outTdb, state.dataEnvrn->OutHumRat); AirSpecHeat = Psychrometrics::PsyCpAirFnW(state.dataEnvrn->OutHumRat); - EVF = thisEarthTube.DesignLevel * ScheduleManager::GetCurrentScheduleValue(state, thisEarthTube.SchedPtr); + if (tempShutDown) { + EVF = 0.0; + } else { + EVF = thisEarthTube.DesignLevel * ScheduleManager::GetCurrentScheduleValue(state, thisEarthTube.SchedPtr); + } thisZoneHB.MCPE = EVF * AirDensity * AirSpecHeat * (thisEarthTube.ConstantTermCoef + - std::abs(state.dataEnvrn->OutDryBulbTemp - state.dataZoneTempPredictorCorrector->zoneHeatBalance(NZ).MAT) * - thisEarthTube.TemperatureTermCoef + + std::abs(outTdb - state.dataZoneTempPredictorCorrector->zoneHeatBalance(NZ).MAT) * thisEarthTube.TemperatureTermCoef + state.dataEnvrn->WindSpeed * (thisEarthTube.VelocityTermCoef + state.dataEnvrn->WindSpeed * thisEarthTube.VelocitySQTermCoef)); thisZoneHB.EAMFL = thisZoneHB.MCPE / AirSpecHeat; @@ -614,18 +893,16 @@ void CalcEarthTube(EnergyPlusData &state) AverPipeAirVel = EVF / Constant::Pi / pow_2(thisEarthTube.r1); AirMassFlowRate = EVF * AirDensity; - // Calculation of Average Ground Temperature between Depth z1 and z2 at time t - GroundTempz1z2t = thisEarthTube.AverSoilSurTemp - - thisEarthTube.ApmlSoilSurTemp * std::exp(-thisEarthTube.z * std::sqrt(Constant::Pi / 365.0 / thisEarthTube.SoilThermDiff)) * - std::cos(2.0 * Constant::Pi / 365.0 * - (state.dataEnvrn->DayOfYear - thisEarthTube.SoilSurPhaseConst - - thisEarthTube.z / 2.0 * std::sqrt(365.0 / Constant::Pi / thisEarthTube.SoilThermDiff))); - thisEarthTube.GroundTempz1z2t = GroundTempz1z2t; + if (thisEarthTube.ModelType == EarthTubeModelType::Basic) { + // Calculation of Ground Temperature at Depth z at time t for Basic model + GroundTempt = thisEarthTube.calcUndisturbedGroundTemperature(state, thisEarthTube.z); + thisEarthTube.GroundTempt = GroundTempt; + } // Calculation of Convective Heat Transfer Coefficient at Inner Pipe Surface - AirThermCond = 0.02442 + 0.6992 * state.dataEnvrn->OutDryBulbTemp / 10000.0; - AirKinemVisco = (0.1335 + 0.000925 * state.dataEnvrn->OutDryBulbTemp) / 10000.0; - AirThermDiffus = (0.0014 * state.dataEnvrn->OutDryBulbTemp + 0.1872) / 10000.0; + AirThermCond = 0.02442 + 0.6992 * outTdb / 10000.0; + AirKinemVisco = (0.1335 + 0.000925 * outTdb) / 10000.0; + AirThermDiffus = (0.0014 * outTdb + 0.1872) / 10000.0; Re = 2.0 * thisEarthTube.r1 * AverPipeAirVel / AirKinemVisco; Pr = AirKinemVisco / AirThermDiffus; if (Re <= 2300.0) { @@ -643,36 +920,142 @@ void CalcEarthTube(EnergyPlusData &state) // Calculation of Thermal Resistance and Overall Heat Transfer Coefficient Rc = 1.0 / 2.0 / Constant::Pi / thisEarthTube.r1 / PipeHeatTransCoef; Rp = std::log((thisEarthTube.r1 + thisEarthTube.r2) / thisEarthTube.r1) / 2.0 / Constant::Pi / thisEarthTube.PipeThermCond; - Rs = std::log((thisEarthTube.r1 + thisEarthTube.r2 + thisEarthTube.r3) / (thisEarthTube.r1 + thisEarthTube.r2)) / 2.0 / Constant::Pi / - thisEarthTube.SoilThermCond; + if (thisEarthTube.r3 > 0.0) { + Rs = std::log((thisEarthTube.r1 + thisEarthTube.r2 + thisEarthTube.r3) / (thisEarthTube.r1 + thisEarthTube.r2)) / 2.0 / Constant::Pi / + thisEarthTube.SoilThermCond; + } else { // for the Vertical solution .r3 was reset to zero for this + Rs = 0.0; + } Rt = Rc + Rp + Rs; OverallHeatTransCoef = 1.0 / Rt; - if (AirMassFlowRate * AirSpecHeat == 0.0) { - thisEarthTube.InsideAirTemp = GroundTempz1z2t; + switch (thisEarthTube.ModelType) { + case EarthTubeModelType::Vertical: { + // First calculate term that will need to be added at the diagonal for flow and then solve the matrix for new temperatures + Real64 eff; // effectiveness + if (AirMassFlowRate > 0.0) { + // Calculate the NTU parameter: NTU = UA/[(Mdot*Cp)min] where Mdot*Cp is for the air side + // where: U = OverallHeatTransCoef + // A = 2*Pi*r1*TubeLength + Real64 NTU = + OverallHeatTransCoef * 2.0 * Constant::Pi * thisEarthTube.r1 * thisEarthTube.PipeLength / (AirMassFlowRate * AirSpecHeat); + + // Effectiveness is 1 - e(-NTU) + Real64 constexpr maxExpPower(50.0); // Maximum power after which EXP argument would be zero for DP variables + if (NTU > maxExpPower) { + eff = 1.0; + } else { + eff = 1.0 - std::exp(-NTU); + } + } else { // if no flow, then eff is zero + eff = 0.0; + } - } else { + Real64 airFlowTerm = AirMassFlowRate * AirSpecHeat * eff * thisEarthTube.airFlowCoeff; + thisEarthTube.calcVerticalEarthTube(state, airFlowTerm); + + int nodeET = state.dataEarthTube->EarthTubePars(thisEarthTube.vertParametersPtr).numNodesAbove; + if (eff <= 0.0) { // no flow--air temperature leaving earth tube is the same as what went in + thisEarthTube.InsideAirTemp = outTdb; + } else if (eff >= 1.0) { // effectiveness is one so leaving temperature is the same as the ground node temperatre + thisEarthTube.InsideAirTemp = thisEarthTube.tCurrent[nodeET]; + } else { // the temperature is between the inlet and ground temperatures + thisEarthTube.InsideAirTemp = outTdb - eff * (outTdb - thisEarthTube.tCurrent[nodeET]); + } + + } break; + case EarthTubeModelType::Basic: { // Basic model + if (AirMassFlowRate * AirSpecHeat == 0.0) { + thisEarthTube.InsideAirTemp = GroundTempt; - // Calculation of Pipe Outlet Air Temperature - if (state.dataEnvrn->OutDryBulbTemp > GroundTempz1z2t) { - Process1 = (std::log(std::abs(state.dataEnvrn->OutDryBulbTemp - GroundTempz1z2t)) * AirMassFlowRate * AirSpecHeat - - OverallHeatTransCoef * thisEarthTube.PipeLength) / - (AirMassFlowRate * AirSpecHeat); - thisEarthTube.InsideAirTemp = std::exp(Process1) + GroundTempz1z2t; - } else if (state.dataEnvrn->OutDryBulbTemp == GroundTempz1z2t) { - thisEarthTube.InsideAirTemp = GroundTempz1z2t; } else { - Process1 = (std::log(std::abs(state.dataEnvrn->OutDryBulbTemp - GroundTempz1z2t)) * AirMassFlowRate * AirSpecHeat - - OverallHeatTransCoef * thisEarthTube.PipeLength) / - (AirMassFlowRate * AirSpecHeat); - thisEarthTube.InsideAirTemp = GroundTempz1z2t - std::exp(Process1); + + // Calculation of Pipe Outlet Air Temperature + if (outTdb > GroundTempt) { + Process1 = + (std::log(std::abs(outTdb - GroundTempt)) * AirMassFlowRate * AirSpecHeat - OverallHeatTransCoef * thisEarthTube.PipeLength) / + (AirMassFlowRate * AirSpecHeat); + thisEarthTube.InsideAirTemp = std::exp(Process1) + GroundTempt; + } else if (outTdb == GroundTempt) { + thisEarthTube.InsideAirTemp = GroundTempt; + } else { + Process1 = + (std::log(std::abs(outTdb - GroundTempt)) * AirMassFlowRate * AirSpecHeat - OverallHeatTransCoef * thisEarthTube.PipeLength) / + (AirMassFlowRate * AirSpecHeat); + thisEarthTube.InsideAirTemp = GroundTempt - std::exp(Process1); + } } + } break; + default: { // should never get here + assert(false); + } break; } thisEarthTube.CalcEarthTubeHumRat(state, NZ); } } +Real64 EarthTubeData::calcUndisturbedGroundTemperature(EnergyPlusData &state, Real64 depth) +{ + return this->AverSoilSurTemp - + this->ApmlSoilSurTemp * std::exp(-depth * std::sqrt(Constant::Pi / 365.0 / this->SoilThermDiff)) * + std::cos(2.0 * Constant::Pi / 365.0 * + (state.dataEnvrn->DayOfYear - this->SoilSurPhaseConst - depth / 2.0 * std::sqrt(365.0 / Constant::Pi / this->SoilThermDiff))); +} + +void EarthTubeData::calcVerticalEarthTube(EnergyPlusData &state, Real64 airFlowTerm) +{ + // Perform matrix calculations to model the earth tube using the vertical solution. + // At this point, temperatures have already been shifted so tLast is correct and + // undisturbed ground temperature have also been calculated. We need to assign/update + // vectors of coefficients and then perform the Thomas algorithm. + // Note that airFlowTerm is mdot_a*cp_a*eff*deltat/rho_soil/cp_soil/nodethickness_et/width/length + + int nodeET = state.dataEarthTube->EarthTubePars(this->vertParametersPtr).numNodesAbove; + int nodeLast = this->totNodes - 1; // minus one because c++ arrays start at 0 + + // First, calculate cPrime in the forward sweep. + // If airFlowTerm is zero, there is no flow so we can use can use cPrime0 for cPrime. + if (airFlowTerm <= 0.0) { + for (int nodeNum = 0; nodeNum <= nodeLast; ++nodeNum) { + this->cPrime[nodeNum] = this->cPrime0[nodeNum]; + } + } else { // there is positive flow so calculate cPrime + this->cPrime[0] = this->cCoeff[0] / this->bCoeff[0]; + for (int nodeNum = 1; nodeNum <= nodeLast; ++nodeNum) { + Real64 addTerm = 0.0; + if (nodeNum == nodeET) addTerm = airFlowTerm; + this->cPrime[nodeNum] = this->cCoeff[nodeNum] / (this->bCoeff[nodeNum] + addTerm - this->aCoeff[nodeNum] * this->cPrime[nodeNum - 1]); + } + } + + // Second, set-up dCoeff + this->dCoeff[0] = this->tLast[0] + this->dMult0 * this->tUpperBound; + for (int nodeNum = 1; nodeNum <= nodeLast - 1; ++nodeNum) { + if (nodeNum != nodeET) { + this->dCoeff[nodeNum] = this->tLast[nodeNum]; + } else { + this->dCoeff[nodeNum] = this->tLast[nodeNum] + airFlowTerm * state.dataEnvrn->OutDryBulbTemp; + } + } + this->dCoeff[nodeLast] = this->tLast[nodeLast] + this->dMultN * this->tLowerBound; + + // Third, calculate dPrime in the forward sweep. + this->dPrime[0] = this->dCoeff[0] / this->bCoeff[0]; + for (int nodeNum = 1; nodeNum <= nodeLast; ++nodeNum) { + Real64 addTerm = 0.0; + if (nodeNum == nodeET) addTerm = airFlowTerm; + this->dPrime[nodeNum] = (this->dCoeff[nodeNum] - this->aCoeff[nodeNum] * this->dPrime[nodeNum - 1]) / + (this->bCoeff[nodeNum] + addTerm - this->aCoeff[nodeNum] * this->cPrime[nodeNum - 1]); + } + + // Finally, obtain the solution (tCurrent) by back substitution. + this->tCurrent[nodeLast] = this->dPrime[nodeLast]; + for (int nodeNum = nodeLast - 1; nodeNum >= 0; --nodeNum) { + this->tCurrent[nodeNum] = this->dPrime[nodeNum] - this->cPrime[nodeNum] * this->tCurrent[nodeNum + 1]; + } +} + void EarthTubeData::CalcEarthTubeHumRat(EnergyPlusData &state, int const NZ) { // Zone number (index) diff --git a/src/EnergyPlus/EarthTube.hh b/src/EnergyPlus/EarthTube.hh index b81de87fef6..80a28b9a1c4 100644 --- a/src/EnergyPlus/EarthTube.hh +++ b/src/EnergyPlus/EarthTube.hh @@ -73,6 +73,14 @@ namespace EarthTube { Num }; + enum class EarthTubeModelType + { + Invalid = -1, + Basic, + Vertical, + Num + }; + struct EarthTubeData { int ZonePtr = 0; @@ -85,7 +93,7 @@ namespace EarthTube { Real64 FanPressure = 0.0; Real64 FanEfficiency = 0.0; Real64 FanPower = 0.0; - Real64 GroundTempz1z2t = 0.0; // ground temp between z1 and z2 at time t + Real64 GroundTempt = 0.0; // ground temp at the depth of the earth tube midpoint at time t Real64 InsideAirTemp = 0.0; Real64 AirTemp = 0.0; Real64 HumRat = 0.0; // Humidity ratio of air leaving EarthTube and entering zone @@ -105,6 +113,37 @@ namespace EarthTube { Real64 TemperatureTermCoef = 0.0; Real64 VelocityTermCoef = 0.0; Real64 VelocitySQTermCoef = 0.0; + EarthTubeModelType ModelType = EarthTubeModelType::Basic; // Type of modeling technique: Basic or Vertical + int vertParametersPtr = 0; // Pointer to EarthTubeParameters structure + int totNodes = 0; // Total number of nodes in Vertical solution (nodes above + nodes below + 1 for earth tube itself) + std::vector aCoeff; // Verticel solution: original a-coefficients of the main A matrix (tridiagonal--coefficient before the diagonal) + std::vector bCoeff; // Verticel solution: original b-coefficients of the main A matrix (tridiagonal--coefficient on the diagonal) + std::vector cCoeff; // Verticel solution: original c-coefficients of the main A matrix (tridiagonal--coefficient after the diagonal) + std::vector cCoeff0; // Verticel solution: original c-coefficients of the main A matrix (tridiagonal--coefficient after the diagonal) + // when effectiveness is zero + std::vector dCoeff; // Vertical solution: original coefficients of the b matrix (in Ax = b) + std::vector cPrime; // c' of the forward sweep in the Thomas Algorithm for solving a triagonal matrix + std::vector dPrime; // d' of the forward sweep in the Thomas Algorithm for solving a triagonal matrix + std::vector + cPrime0; // c' of the forward sweep in the Thomas Algorithm for solving a triagonal matrix when effectiveness is zero (no flow) + std::vector tCurrent; // Current time step nodal temperatures + std::vector tLast; // Last time step nodal temperatures + std::vector depthNode; // depth of the node + Real64 dMult0 = 0.0; // multiplier for term in equation to determine dCoeff at top node + Real64 dMultN = 0.0; // multiplier for term in equation to determine dCoeff at bottom node + Real64 depthUpperBound = 0.0; // depth at the upper boundary of the solution space for the vertical solution + Real64 depthLowerBound = 0.0; // depth at the lower boundary of the solution space for the vertical solution + std::vector tUndist; // temperature of undisturbed soil at the depths of the modes + Real64 tUpperBound = 0.0; // temperature of undisturbed soil at the upper boundary + Real64 tLowerBound = 0.0; // temperature of undisturbed soil at the lower boundary + Real64 airFlowCoeff = 0.0; // constant portion of the air flow term that gets added to the bCoeff and dCoeff vectors at the earth tube node + + void initCPrime0(); // initialize c' for when effectiveness is zero + + Real64 calcUndisturbedGroundTemperature(EnergyPlusData &state, Real64 depth); // depth at which temperature is to be calculated + + void calcVerticalEarthTube(EnergyPlusData &state, Real64 airFlowTerm); // constant portion of term that accounts for air flow in earth tube + void CalcEarthTubeHumRat(EnergyPlusData &state, int NZ); // Zone number (index) }; @@ -129,6 +168,16 @@ namespace EarthTube { Real64 EarthTubeHumRat = 0.0; // Humidity Ratio {kg/kg} of EarthTube, air leaving tube and entering zone }; + struct EarthTubeParameters + { + std::string nameParameters; // Name of the parameters (referenced by earth tube object) + int numNodesAbove; // Number of nodes above the earth tube (converted from integer in input) + int numNodesBelow; // Number of nodes below the earth tube (converted from integer in input) + Real64 dimBoundAbove; // Dimensionless location of upper boundary of solution space (multiplied by earth tube depth - radius) + Real64 dimBoundBelow; // Dimensionless location of lower boundary of solution space (multiplied by earth tube depth - radius) + Real64 width; // Dimensionless width of solution space (multiplied by earth tube radius) + }; + void ManageEarthTube(EnergyPlusData &state); void GetEarthTube(EnergyPlusData &state, bool &ErrorsFound); // If errors found in input @@ -139,6 +188,8 @@ namespace EarthTube { bool &ErrorsFound // Found a problem ); + void initEarthTubeVertical(EnergyPlusData &state); + void CalcEarthTube(EnergyPlusData &state); void ReportEarthTube(EnergyPlusData &state); @@ -148,8 +199,12 @@ namespace EarthTube { struct EarthTubeData : BaseGlobalStruct { bool GetInputFlag = true; + bool initFirstTime = true; + Real64 timeElapsed = + 0.0; // keeps track so that certain initializations only happen once even if earth tubes are called multiple times per time step EPVector EarthTubeSys; EPVector ZnRptET; + EPVector EarthTubePars; void clear_state() override { diff --git a/testfiles/CMakeLists.txt b/testfiles/CMakeLists.txt index 2c561e017a2..4dd5d89264f 100644 --- a/testfiles/CMakeLists.txt +++ b/testfiles/CMakeLists.txt @@ -282,6 +282,7 @@ add_simulation_test(IDF_FILE EMSUserDefined5ZoneAirCooled.idf EPW_FILE USA_IL_Ch add_simulation_test(IDF_FILE EMSUserDefinedWindACAuto.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw) add_simulation_test(IDF_FILE EMSWindowShadeControl.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw) add_simulation_test(IDF_FILE EarthTubeSimpleTest.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw) +add_simulation_test(IDF_FILE EarthTubeVerticalTest.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw) add_simulation_test(IDF_FILE EcoroofOrlando.idf EPW_FILE USA_FL_Orlando.Intl.AP.722050_TMY3.epw) add_simulation_test(IDF_FILE EcoroofOrlando_NoSitePrec.idf EPW_FILE USA_FL_Orlando.Intl.AP.722050_TMY3.epw) add_simulation_test(IDF_FILE ElectricChiller.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw) diff --git a/testfiles/EarthTubeVerticalTest.idf b/testfiles/EarthTubeVerticalTest.idf new file mode 100644 index 00000000000..ee73a76400d --- /dev/null +++ b/testfiles/EarthTubeVerticalTest.idf @@ -0,0 +1,2364 @@ +! VentilationVerticalTest.idf +! Basic file description: Illustration of using ZoneEarthtube statement. +! Run: 3 design days for Hilo, Hawaii (two are the ASHRAE HoF 2005 design days and one is +! made up of the average of the two to mimic a spring day approximately), annual run. +! Building: Three zones/buildings which are all identical. To avoid any shading between the zones +! each is separated by a distance of 100m (in the x-direction). The shape of each zone +! is basically rectangular with the long side parallel to the east-west axis. The south +! wall is articulated, just for kicks. Windows are present on all south walls and the +! north wall. The zones are "uncontrolled" in that the only method of cooling the spaces +! is the ventilation statements. The intent is to see the effect of different ventilation +! types on the zone temperatures. Three zones are served by earth tubes, two use the +! Vertical model while one uses the Basic model. +! Internal: People, lights, and equipment at reasonable levels for each zone. The levels of these +! parameters is the same for all zones. VENTILATION (sort of an internal gain/loss) is +! also present in each zone. The only difference in the ventilation between the zones is +! the type of ventilation. In the first zone, ventilation is due to natural air movement. +! In the second zone, the ventilation is due to an intake fan. In the third zone, the +! ventilation is due to an exhaust fan. Though there are slight fan efficiency differences +! between the zones, the flow rate and modifying schedule/coefficients are identical from +! zone to zone. +! System: None. +! Plant: None. +! SolDis=FullExterior, Aniso, Simple Interior and Exterior Convection + + Version,23.2; + + Timestep,4; + + Building, + BUILDING #1, !- Name + 0.0000000E+00, !- North Axis {deg} + Suburbs, !- Terrain + 3.9999999E-02, !- Loads Convergence Tolerance Value {W} + 0.4000000, !- Temperature Convergence Tolerance Value {deltaC} + FullExterior, !- Solar Distribution + 25, !- Maximum Number of Warmup Days + 6; !- Minimum Number of Warmup Days + + SurfaceConvectionAlgorithm:Inside,Simple; + + SurfaceConvectionAlgorithm:Outside,SimpleCombined; + + SimulationControl, + No, !- Do Zone Sizing Calculation + No, !- Do System Sizing Calculation + No, !- Do Plant Sizing Calculation + Yes, !- Run Simulation for Sizing Periods + Yes, !- Run Simulation for Weather File Run Periods + No, !- Do HVAC Sizing Simulation for Sizing Periods + 1; !- Maximum Number of HVAC Sizing Simulation Passes + + RunPeriod, + Run Period 1, !- Name + 1, !- Begin Month + 1, !- Begin Day of Month + , !- Begin Year + 12, !- End Month + 31, !- End Day of Month + , !- End Year + Tuesday, !- Day of Week for Start Day + Yes, !- Use Weather File Holidays and Special Days + Yes, !- Use Weather File Daylight Saving Period + No, !- Apply Weekend Holiday Rule + Yes, !- Use Weather File Rain Indicators + Yes; !- Use Weather File Snow Indicators + + Site:Location, + HILO_HI_USA TMY2-21504, !- Name + 19.72, !- Latitude {deg} + -155.07, !- Longitude {deg} + -10.00, !- Time Zone {hr} + 11.00; !- Elevation {m} + + ! HILO_HI_USA Heating 99%, MaxDB= 17.10°C + + SizingPeriod:DesignDay, + HILO_HI_USA Heating 99% Conditions, !- Name + 1, !- Month + 21, !- Day of Month + WinterDesignDay, !- Day Type + 17.10, !- Maximum Dry-Bulb Temperature {C} + 0.00, !- Daily Dry-Bulb Temperature Range {deltaC} + , !- Dry-Bulb Temperature Range Modifier Type + , !- Dry-Bulb Temperature Range Modifier Day Schedule Name + Wetbulb, !- Humidity Condition Type + 17.10, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C} + , !- Humidity Condition Day Schedule Name + , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir} + , !- Enthalpy at Maximum Dry-Bulb {J/kg} + , !- Daily Wet-Bulb Temperature Range {deltaC} + 101193., !- Barometric Pressure {Pa} + 3.20, !- Wind Speed {m/s} + 230.00, !- Wind Direction {deg} + No, !- Rain Indicator + No, !- Snow Indicator + No, !- Daylight Saving Time Indicator + ASHRAEClearSky, !- Solar Model Indicator + , !- Beam Solar Day Schedule Name + , !- Diffuse Solar Day Schedule Name + , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless} + , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless} + 0.00; !- Sky Clearness + + ! HILO_HI_USA Cooling (DB=>MWB) 1%, MaxDB= 29.10°C MWB= 23.10°C + + SizingPeriod:DesignDay, + HILO_HI_USA Cooling 1% Conditions DB=>MWB, !- Name + 7, !- Month + 21, !- Day of Month + SummerDesignDay, !- Day Type + 29.10, !- Maximum Dry-Bulb Temperature {C} + 7.40, !- Daily Dry-Bulb Temperature Range {deltaC} + , !- Dry-Bulb Temperature Range Modifier Type + , !- Dry-Bulb Temperature Range Modifier Day Schedule Name + Wetbulb, !- Humidity Condition Type + 23.10, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C} + , !- Humidity Condition Day Schedule Name + , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir} + , !- Enthalpy at Maximum Dry-Bulb {J/kg} + , !- Daily Wet-Bulb Temperature Range {deltaC} + 101193., !- Barometric Pressure {Pa} + 5.40, !- Wind Speed {m/s} + 110.00, !- Wind Direction {deg} + No, !- Rain Indicator + No, !- Snow Indicator + No, !- Daylight Saving Time Indicator + ASHRAEClearSky, !- Solar Model Indicator + , !- Beam Solar Day Schedule Name + , !- Diffuse Solar Day Schedule Name + , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless} + , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless} + 1.00; !- Sky Clearness + + ! HILO Hawaii Fictional Spring Day (average of WDD and SDD) + + SizingPeriod:DesignDay, + HILO Hawaii Spring Day, !- Name + 4, !- Month + 1, !- Day of Month + SummerDesignDay, !- Day Type + 23.10, !- Maximum Dry-Bulb Temperature {C} + 3.70, !- Daily Dry-Bulb Temperature Range {deltaC} + , !- Dry-Bulb Temperature Range Modifier Type + , !- Dry-Bulb Temperature Range Modifier Day Schedule Name + Wetbulb, !- Humidity Condition Type + 20.10, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C} + , !- Humidity Condition Day Schedule Name + , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir} + , !- Enthalpy at Maximum Dry-Bulb {J/kg} + , !- Daily Wet-Bulb Temperature Range {deltaC} + 101193., !- Barometric Pressure {Pa} + 4.30, !- Wind Speed {m/s} + 170.00, !- Wind Direction {deg} + No, !- Rain Indicator + No, !- Snow Indicator + No, !- Daylight Saving Time Indicator + ASHRAEClearSky, !- Solar Model Indicator + , !- Beam Solar Day Schedule Name + , !- Diffuse Solar Day Schedule Name + , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless} + , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless} + 1.00; !- Sky Clearness + + Material, + A2 - 4 IN DENSE FACE BRICK, !- Name + Rough, !- Roughness + 0.1014984, !- Thickness {m} + 1.245296, !- Conductivity {W/m-K} + 2082.400, !- Density {kg/m3} + 920.4800, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.9300000, !- Solar Absorptance + 0.9300000; !- Visible Absorptance + + Material, + B3 - 2 IN INSULATION, !- Name + VeryRough, !- Roughness + 5.0901599E-02, !- Thickness {m} + 4.3239430E-02, !- Conductivity {W/m-K} + 32.03693, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.5000000, !- Solar Absorptance + 0.5000000; !- Visible Absorptance + + Material, + C2 - 4 IN LW CONCRETE BLOCK, !- Name + MediumRough, !- Roughness + 0.1014984, !- Thickness {m} + 0.3805070, !- Conductivity {W/m-K} + 608.7016, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.6500000, !- Solar Absorptance + 0.6500000; !- Visible Absorptance + + Material, + E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name + Smooth, !- Roughness + 1.9050000E-02, !- Thickness {m} + 0.7264224, !- Conductivity {W/m-K} + 1601.846, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.9200000, !- Solar Absorptance + 0.9200000; !- Visible Absorptance + + WindowMaterial:Glazing, + GLASS - CLEAR PLATE 1 / 4 IN, !- Name + SpectralAverage, !- Optical Data Type + , !- Window Glass Spectral Data Set Name + 6.0000001E-03, !- Thickness {m} + 0.7750000, !- Solar Transmittance at Normal Incidence + 7.1000002E-02, !- Front Side Solar Reflectance at Normal Incidence + 7.1000002E-02, !- Back Side Solar Reflectance at Normal Incidence + 0.8810000, !- Visible Transmittance at Normal Incidence + 7.9999998E-02, !- Front Side Visible Reflectance at Normal Incidence + 7.9999998E-02, !- Back Side Visible Reflectance at Normal Incidence + 0.0000000E+00, !- Infrared Transmittance at Normal Incidence + 0.8400000, !- Front Side Infrared Hemispherical Emissivity + 0.8400000, !- Back Side Infrared Hemispherical Emissivity + 0.9000000; !- Conductivity {W/m-K} + + Material, + DIRT 12 IN, !- Name + Rough, !- Roughness + 0.3048000, !- Thickness {m} + 0.1729577, !- Conductivity {W/m-K} + 1041.200, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.7000000, !- Solar Absorptance + 0.7000000; !- Visible Absorptance + + Material, + CONCRETE - SAND AND GRAVEL 4 IN, !- Name + MediumRough, !- Roughness + 0.1014984, !- Thickness {m} + 1.729577, !- Conductivity {W/m-K} + 2242.585, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.6000000, !- Solar Absorptance + 0.6000000; !- Visible Absorptance + + Material, + E2 - 1 / 2 IN SLAG OR STONE, !- Name + Rough, !- Roughness + 1.2710161E-02, !- Thickness {m} + 1.435549, !- Conductivity {W/m-K} + 881.0155, !- Density {kg/m3} + 1673.600, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.5500000, !- Solar Absorptance + 0.5500000; !- Visible Absorptance + + Material, + E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name + Rough, !- Roughness + 9.5402403E-03, !- Thickness {m} + 0.1902535, !- Conductivity {W/m-K} + 1121.292, !- Density {kg/m3} + 1673.600, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.7500000, !- Solar Absorptance + 0.7500000; !- Visible Absorptance + + Material, + B6 - 2 IN DENSE INSULATION, !- Name + VeryRough, !- Roughness + 5.0901599E-02, !- Thickness {m} + 4.3239430E-02, !- Conductivity {W/m-K} + 91.30524, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.5000000, !- Solar Absorptance + 0.5000000; !- Visible Absorptance + + Material, + C12 - 2 IN HW CONCRETE, !- Name + MediumRough, !- Roughness + 5.0901599E-02, !- Thickness {m} + 1.729577, !- Conductivity {W/m-K} + 2242.585, !- Density {kg/m3} + 836.8000, !- Specific Heat {J/kg-K} + 0.9000000, !- Thermal Absorptance + 0.6500000, !- Solar Absorptance + 0.6500000; !- Visible Absorptance + + Construction, + EXTERIOR, !- Name + A2 - 4 IN DENSE FACE BRICK, !- Outside Layer + B3 - 2 IN INSULATION, !- Layer 2 + C2 - 4 IN LW CONCRETE BLOCK, !- Layer 3 + E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 + + Construction, + SINGLE PANE HW WINDOW, !- Name + GLASS - CLEAR PLATE 1 / 4 IN; !- Outside Layer + + Construction, + SLAB FLOOR, !- Name + DIRT 12 IN, !- Outside Layer + CONCRETE - SAND AND GRAVEL 4 IN; !- Layer 2 + + Construction, + ROOF31, !- Name + 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 + C12 - 2 IN HW CONCRETE; !- Layer 4 + + ScheduleTypeLimits, + Any Number; !- Name + + ScheduleTypeLimits, + Fraction, !- Name + 0.0, !- Lower Limit Value + 1.0, !- Upper Limit Value + CONTINUOUS; !- Numeric Type + + Schedule:Compact, + BLDG Sch 1, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: Weekdays SummerDesignDay WinterDesignDay, !- Field 2 + Until: 7:00,1.0, !- Field 3 + Until: 8:00,0.5, !- Field 5 + Until: 15:00,0.3, !- Field 7 + Until: 16:00,0.4, !- Field 9 + Until: 17:00,0.7, !- Field 11 + Until: 24:00,1.0, !- Field 13 + For: AllOtherDays, !- Field 15 + Until: 9:00,1.0, !- Field 16 + Until: 16:00,0.3, !- Field 18 + Until: 19:00,0.7, !- Field 20 + Until: 22:00,0.3, !- Field 22 + Until: 23:00,0.7, !- Field 24 + Until: 24:00,1.0; !- Field 26 + + Schedule:Compact, + BLDG Sch 2, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: Weekdays SummerDesignDay WinterDesignDay, !- Field 2 + Until: 6:00,0.1, !- Field 3 + Until: 8:00,0.2, !- Field 5 + Until: 16:00,0.1, !- Field 7 + Until: 17:00,0.2, !- Field 9 + Until: 19:00,0.5, !- Field 11 + Until: 22:00,1.0, !- Field 13 + Until: 23:00,0.5, !- Field 15 + Until: 24:00,0.3, !- Field 17 + For: AllOtherDays, !- Field 19 + Until: 16:00,0.1, !- Field 20 + Until: 18:00,0.5, !- Field 22 + Until: 22:00,1.0, !- Field 24 + Until: 23:00,0.5, !- Field 26 + Until: 24:00,0.3; !- Field 28 + + Schedule:Compact, + BLDG Sch 3, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,1.0; !- Field 3 + + Schedule:Compact, + Activity Lvl 1, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,130.0; !- Field 3 + + Schedule:Compact, + ShadingTransmittance:0001, !- Name + Fraction, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 24:00,0.0; !- Field 3 + + Site:GroundTemperature:BuildingSurface,1.90000000E+01,1.90000000E+01,1.90000000E+01,2.00000000E+01,2.20000000E+01,2.30000000E+01,2.40000000E+01,2.30000000E+01,2.20000000E+01,2.10000000E+01,2.00000000E+01,1.90000000E+01; + + Zone, + ZONE 1, !- Name + 0.0000000E+00, !- Direction of Relative North {deg} + 1.980000, !- X Origin {m} + 4.580000, !- Y Origin {m} + 0.0000000E+00, !- Z Origin {m} + 1, !- Type + 1, !- Multiplier + autocalculate, !- Ceiling Height {m} + autocalculate; !- Volume {m3} + + People, + ZONE 1 People 1, !- Name + ZONE 1, !- Zone or ZoneList or Space or SpaceList Name + BLDG Sch 1, !- Number of People Schedule Name + people, !- Number of People Calculation Method + 4.000000, !- Number of People + , !- People per Floor Area {person/m2} + , !- Floor Area per Person {m2/person} + 0.6000000, !- Fraction Radiant + , !- Sensible Heat Fraction + Activity Lvl 1; !- Activity Level Schedule Name + + Lights, + ZONE 1 Lights 1, !- Name + ZONE 1, !- Zone or ZoneList or Space or SpaceList Name + BLDG Sch 2, !- Schedule Name + LightingLevel, !- Design Level Calculation Method + 950.0000, !- Lighting Level {W} + , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Person {W/person} + 0.0000000E+00, !- Return Air Fraction + 0.4000000, !- Fraction Radiant + 0.2000000, !- Fraction Visible + 0.0000000E+00, !- Fraction Replaceable + GeneralLights; !- End-Use Subcategory + + ElectricEquipment, + ZONE 1 ElecEq 1, !- Name + ZONE 1, !- Zone or ZoneList or Space or SpaceList Name + BLDG Sch 2, !- Schedule Name + EquipmentLevel, !- Design Level Calculation Method + 480.0000, !- Design Level {W} + , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Person {W/person} + 0.0000000E+00, !- Fraction Latent + 0.3000000, !- Fraction Radiant + 0.0000000E+00; !- Fraction Lost + + ZoneEarthtube, + ZONE 1, !- Zone Name + BLDG Sch 3, !- Schedule Name + 1.0, !- Design Flow Rate {m3/s} + -10.0, !- Minimum Zone Temperature when Cooling {C} + 30.0, !- Maximum Zone Temperature when Heating {C} + 0.1, !- Delta Temperature {deltaC} + NATURAL, !- Earthtube Type + 0.0, !- Fan Pressure Rise {Pa} + 1.0, !- Fan Total Efficiency + 0.25, !- Pipe Radius {m} + 0.01, !- Pipe Thickness {m} + 100.0, !- Pipe Length {m} + 50.0, !- Pipe Thermal Conductivity {W/m-K} + 3, !- Pipe Depth Under Ground Surface {m} + HeavyAndSaturated, !- Soil Condition + 12.68846, !- Average Soil Surface Temperature {C} + 5.893740, !- Amplitude of Soil Surface Temperature {deltaC} + 2, !- Phase Constant of Soil Surface Temperature {days} + 0.6060000, !- Constant Term Flow Coefficient + 2.0199999E-02, !- Temperature Term Flow Coefficient + 5.9800001E-04, !- Velocity Term Flow Coefficient + 0.0000000E+00, !- Velocity Squared Term Flow Coefficient + Vertical, !- Earth Tube Model Type + MyETparameters; !- Earth Tube Model Parameters + + ZoneEarthtube:Parameters, + MyETparameters, !- Earth Tube Model Parameters (Name) + 5, !- Earth Tube Nodes Above + 3, !- Earth Tube Nodes Below + 1.0, !- Earth Tube Dimensionless Boundary Above + 0.25, !- Earth Tube Dimensionless Boundary Below + 4.0; !- Earth Tube Dimensionless Solution Space Width + + Zone, + ZONE 2, !- Name + 0.0000000E+00, !- Direction of Relative North {deg} + 101.980000, !- X Origin {m} + 4.580000, !- Y Origin {m} + 0.0000000E+00, !- Z Origin {m} + 1, !- Type + 1, !- Multiplier + autocalculate, !- Ceiling Height {m} + autocalculate; !- Volume {m3} + + People, + ZONE 2 People 1, !- Name + ZONE 2, !- Zone or ZoneList or Space or SpaceList Name + BLDG Sch 1, !- Number of People Schedule Name + people, !- Number of People Calculation Method + 4.000000, !- Number of People + , !- People per Floor Area {person/m2} + , !- Floor Area per Person {m2/person} + 0.6000000, !- Fraction Radiant + , !- Sensible Heat Fraction + Activity Lvl 1; !- Activity Level Schedule Name + + Lights, + ZONE 2 Lights 1, !- Name + ZONE 2, !- Zone or ZoneList or Space or SpaceList Name + BLDG Sch 2, !- Schedule Name + LightingLevel, !- Design Level Calculation Method + 950.0000, !- Lighting Level {W} + , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Person {W/person} + 0.0000000E+00, !- Return Air Fraction + 0.4000000, !- Fraction Radiant + 0.2000000, !- Fraction Visible + 0.0000000E+00, !- Fraction Replaceable + GeneralLights; !- End-Use Subcategory + + ElectricEquipment, + ZONE 2 ElecEq 1, !- Name + ZONE 2, !- Zone or ZoneList or Space or SpaceList Name + BLDG Sch 2, !- Schedule Name + EquipmentLevel, !- Design Level Calculation Method + 480.0000, !- Design Level {W} + , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Person {W/person} + 0.0000000E+00, !- Fraction Latent + 0.3000000, !- Fraction Radiant + 0.0000000E+00; !- Fraction Lost + + ZoneEarthtube, + ZONE 2, !- Zone Name + BLDG Sch 3, !- Schedule Name + 1.0, !- Design Flow Rate {m3/s} + -10.0, !- Minimum Zone Temperature when Cooling {C} + 30.0, !- Maximum Zone Temperature when Heating {C} + 0.1, !- Delta Temperature {deltaC} + INTAKE, !- Earthtube Type + 400.0, !- Fan Pressure Rise {Pa} + 0.9, !- Fan Total Efficiency + 0.25, !- Pipe Radius {m} + 0.01, !- Pipe Thickness {m} + 100.0, !- Pipe Length {m} + 50.0, !- Pipe Thermal Conductivity {W/m-K} + 3, !- Pipe Depth Under Ground Surface {m} + HeavyAndSaturated, !- Soil Condition + 12.68846, !- Average Soil Surface Temperature {C} + 5.893740, !- Amplitude of Soil Surface Temperature {deltaC} + 2, !- Phase Constant of Soil Surface Temperature {days} + 0.6060000, !- Constant Term Flow Coefficient + 2.0199999E-02, !- Temperature Term Flow Coefficient + 5.9800001E-04, !- Velocity Term Flow Coefficient + 0.0000000E+00, !- Velocity Squared Term Flow Coefficient + Vertical, !- Earth Tube Model Type + MyETparameters2; !- Earth Tube Model Parameters + + ZoneEarthtube:Parameters, + MyETparameters2, !- Earth Tube Model Parameters (Name) + 10, !- Earth Tube Nodes Above + 10, !- Earth Tube Nodes Below + 1.0, !- Earth Tube Dimensionless Boundary Above + 1.0, !- Earth Tube Dimensionless Boundary Below + 20.0; !- Earth Tube Dimensionless Solution Space Width + + + Zone, + ZONE 3, !- Name + 0.0000000E+00, !- Direction of Relative North {deg} + 201.980000, !- X Origin {m} + 4.580000, !- Y Origin {m} + 0.0000000E+00, !- Z Origin {m} + 1, !- Type + 1, !- Multiplier + autocalculate, !- Ceiling Height {m} + autocalculate; !- Volume {m3} + + People, + ZONE 3 People 1, !- Name + ZONE 3, !- Zone or ZoneList or Space or SpaceList Name + BLDG Sch 1, !- Number of People Schedule Name + people, !- Number of People Calculation Method + 4.000000, !- Number of People + , !- People per Floor Area {person/m2} + , !- Floor Area per Person {m2/person} + 0.6000000, !- Fraction Radiant + , !- Sensible Heat Fraction + Activity Lvl 1; !- Activity Level Schedule Name + + Lights, + ZONE 3 Lights 1, !- Name + ZONE 3, !- Zone or ZoneList or Space or SpaceList Name + BLDG Sch 2, !- Schedule Name + LightingLevel, !- Design Level Calculation Method + 950.0000, !- Lighting Level {W} + , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Person {W/person} + 0.0000000E+00, !- Return Air Fraction + 0.4000000, !- Fraction Radiant + 0.2000000, !- Fraction Visible + 0.0000000E+00, !- Fraction Replaceable + GeneralLights; !- End-Use Subcategory + + ElectricEquipment, + ZONE 3 ElecEq 1, !- Name + ZONE 3, !- Zone or ZoneList or Space or SpaceList Name + BLDG Sch 2, !- Schedule Name + EquipmentLevel, !- Design Level Calculation Method + 480.0000, !- Design Level {W} + , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Person {W/person} + 0.0000000E+00, !- Fraction Latent + 0.3000000, !- Fraction Radiant + 0.0000000E+00; !- Fraction Lost + + ZoneEarthtube, + ZONE 3, !- Zone Name + BLDG Sch 3, !- Schedule Name + 1.0, !- Design Flow Rate {m3/s} + -10.0, !- Minimum Zone Temperature when Cooling {C} + 30.0, !- Maximum Zone Temperature when Heating {C} + 0.1, !- Delta Temperature {deltaC} + EXHAUST, !- Earthtube Type + 400.0, !- Fan Pressure Rise {Pa} + 0.8, !- Fan Total Efficiency + 0.25, !- Pipe Radius {m} + 0.01, !- Pipe Thickness {m} + 100.0, !- Pipe Length {m} + 50.0, !- Pipe Thermal Conductivity {W/m-K} + 3.0, !- Pipe Depth Under Ground Surface {m} + HeavyAndSaturated, !- Soil Condition + 12.68846, !- Average Soil Surface Temperature {C} + 5.893740, !- Amplitude of Soil Surface Temperature {deltaC} + 2, !- Phase Constant of Soil Surface Temperature {days} + 0.6060000, !- Constant Term Flow Coefficient + 2.0199999E-02, !- Temperature Term Flow Coefficient + 5.9800001E-04, !- Velocity Term Flow Coefficient + 0.0000000E+00; !- Velocity Squared Term Flow Coefficient + + GlobalGeometryRules, + UpperLeftCorner, !- Starting Vertex Position + CounterClockWise, !- Vertex Entry Direction + World, !- Coordinate System + , !- Daylighting Reference Point Coordinate System + World; !- Rectangular Surface Coordinate System + + BuildingSurface:Detailed, + Zn001:Wall001, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 1.980000,5.980000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 1.980000,5.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 7.280000,5.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 7.280000,5.980000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn001:Wall001:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn001:Wall001, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 3.080000,5.980000,7.600000, !- X,Y,Z ==> Vertex 1 {m} + 3.080000,5.980000,2.600000, !- X,Y,Z ==> Vertex 2 {m} + 6.080000,5.980000,2.600000, !- X,Y,Z ==> Vertex 3 {m} + 6.080000,5.980000,7.600000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn001:Wall001:Shade001, !- Name + Zn001:Wall001, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 3.080000,2.980000,8.000000, !- X,Y,Z ==> Vertex 1 {m} + 3.080000,5.980000,8.000000, !- X,Y,Z ==> Vertex 2 {m} + 6.080000,5.980000,8.000000, !- X,Y,Z ==> Vertex 3 {m} + 6.080000,2.980000,8.000000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall002, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 7.280000,5.980000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 7.280000,5.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 7.280000,8.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 7.280000,8.980000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall003, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 7.280000,8.980000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 7.280000,8.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 12.88000,8.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 12.88000,8.980000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn001:Wall003:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn001:Wall003, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 8.580000,8.980000,7.500000, !- X,Y,Z ==> Vertex 1 {m} + 8.580000,8.980000,2.500000, !- X,Y,Z ==> Vertex 2 {m} + 11.58000,8.980000,2.500000, !- X,Y,Z ==> Vertex 3 {m} + 11.58000,8.980000,7.500000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn001:Wall003:Shade001, !- Name + Zn001:Wall003, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 8.580000,5.980000,7.900000, !- X,Y,Z ==> Vertex 1 {m} + 8.580000,8.980000,7.900000, !- X,Y,Z ==> Vertex 2 {m} + 11.58000,8.980000,7.900000, !- X,Y,Z ==> Vertex 3 {m} + 11.58000,5.980000,7.900000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall004, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 12.88000,8.980000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 12.88000,8.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 12.88000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 12.88000,4.580000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall005, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 12.88000,4.580000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 12.88000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 18.18000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 18.18000,4.580000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn001:Wall005:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn001:Wall005, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 14.08000,4.580000,7.100000, !- X,Y,Z ==> Vertex 1 {m} + 14.08000,4.580000,2.100000, !- X,Y,Z ==> Vertex 2 {m} + 17.08000,4.580000,2.100000, !- X,Y,Z ==> Vertex 3 {m} + 17.08000,4.580000,7.100000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn001:Wall005:Shade001, !- Name + Zn001:Wall005, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 14.08000,1.580000,7.500000, !- X,Y,Z ==> Vertex 1 {m} + 14.08000,4.580000,7.500000, !- X,Y,Z ==> Vertex 2 {m} + 17.08000,4.580000,7.500000, !- X,Y,Z ==> Vertex 3 {m} + 17.08000,1.580000,7.500000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall006, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 18.18000,4.580000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 18.18000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 18.18000,8.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 18.18000,8.080000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall007, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 18.18000,8.080000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 18.18000,8.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 24.08000,8.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 24.08000,8.080000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn001:Wall007:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn001:Wall007, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 19.58000,8.080000,7.200000, !- X,Y,Z ==> Vertex 1 {m} + 19.58000,8.080000,2.200000, !- X,Y,Z ==> Vertex 2 {m} + 22.58000,8.080000,2.200000, !- X,Y,Z ==> Vertex 3 {m} + 22.58000,8.080000,7.200000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn001:Wall007:Shade001, !- Name + Zn001:Wall007, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 19.58000,5.080000,7.600000, !- X,Y,Z ==> Vertex 1 {m} + 19.58000,8.080000,7.600000, !- X,Y,Z ==> Vertex 2 {m} + 22.58000,8.080000,7.600000, !- X,Y,Z ==> Vertex 3 {m} + 22.58000,5.080000,7.600000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall008, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 24.08000,8.080000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 24.08000,8.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 24.08000,5.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 24.08000,5.080000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall009, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 24.08000,5.080000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 24.08000,5.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 30.08000,5.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 30.08000,5.080000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn001:Wall009:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn001:Wall009, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 25.58000,5.080000,7.200000, !- X,Y,Z ==> Vertex 1 {m} + 25.58000,5.080000,2.200000, !- X,Y,Z ==> Vertex 2 {m} + 28.58000,5.080000,2.200000, !- X,Y,Z ==> Vertex 3 {m} + 28.58000,5.080000,7.200000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn001:Wall009:Shade001, !- Name + Zn001:Wall009, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 25.58000,2.080000,7.700000, !- X,Y,Z ==> Vertex 1 {m} + 25.58000,5.080000,7.700000, !- X,Y,Z ==> Vertex 2 {m} + 28.58000,5.080000,7.700000, !- X,Y,Z ==> Vertex 3 {m} + 28.58000,2.080000,7.700000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall010, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 30.08000,5.080000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 30.08000,5.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 30.08000,10.28000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 30.08000,10.28000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall011, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 30.08000,10.28000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 30.08000,10.28000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 35.38000,10.28000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 35.38000,10.28000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn001:Wall011:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn001:Wall011, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 30.98000,10.28000,7.200000, !- X,Y,Z ==> Vertex 1 {m} + 30.98000,10.28000,2.200000, !- X,Y,Z ==> Vertex 2 {m} + 33.98000,10.28000,2.200000, !- X,Y,Z ==> Vertex 3 {m} + 33.98000,10.28000,7.200000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn001:Wall011:Shade001, !- Name + Zn001:Wall011, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 30.98000,7.280000,7.600000, !- X,Y,Z ==> Vertex 1 {m} + 30.98000,10.28000,7.600000, !- X,Y,Z ==> Vertex 2 {m} + 33.98000,10.28000,7.600000, !- X,Y,Z ==> Vertex 3 {m} + 33.98000,7.280000,7.600000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall012, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 35.38000,10.28000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 35.38000,10.28000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 35.38000,7.480000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 35.38000,7.480000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall013, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 35.38000,7.480000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 35.38000,7.480000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 41.48000,7.480000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 41.48000,7.480000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn001:Wall013:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn001:Wall013, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 36.88000,7.480000,7.200000, !- X,Y,Z ==> Vertex 1 {m} + 36.88000,7.480000,2.200000, !- X,Y,Z ==> Vertex 2 {m} + 39.88000,7.480000,2.200000, !- X,Y,Z ==> Vertex 3 {m} + 39.88000,7.480000,7.200000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn001:Wall013:Shade001, !- Name + Zn001:Wall013, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 36.88000,4.480000,7.600000, !- X,Y,Z ==> Vertex 1 {m} + 36.88000,7.480000,7.600000, !- X,Y,Z ==> Vertex 2 {m} + 39.88000,7.480000,7.600000, !- X,Y,Z ==> Vertex 3 {m} + 39.88000,4.480000,7.600000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall014, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 41.48000,7.480000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 41.48000,7.480000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 41.48000,18.38000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 41.48000,18.38000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall015, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 41.48000,18.38000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 41.48000,18.38000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 1.980000,18.38000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 1.980000,18.38000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn001:Wall015:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn001:Wall015, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 40.88000,18.38000,7.500000, !- X,Y,Z ==> Vertex 1 {m} + 40.88000,18.38000,4.500000, !- X,Y,Z ==> Vertex 2 {m} + 4.880000,18.38000,4.500000, !- X,Y,Z ==> Vertex 3 {m} + 4.880000,18.38000,7.500000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn001:Wall016, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 1.980000,18.38000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 1.980000,18.38000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 1.980000,5.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 1.980000,5.980000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + +! equivalent area: +! 22.98000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 1 +! 1.980000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 +! 1.980000,25.58000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 +! 22.98000,25.58000,0.0000000E+00; !- X,Y,Z ==> Vertex 4 + + BuildingSurface:Detailed, + Zn001:Flr001, !- Name + Floor, !- Surface Type + SLAB FLOOR, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Ground, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + NoSun, !- Sun Exposure + NoWind, !- Wind Exposure + 1.000000, !- View Factor to Ground + autocalculate, !- Number of Vertices + 1.980000,5.980000,0.0, !- X,Y,Z ==> Vertex 1 {m} + 1.980000,18.38000,0.0, !- X,Y,Z ==> Vertex 2 {m} + 41.48000,18.38000,0.0, !- X,Y,Z ==> Vertex 3 {m} + 41.48000,7.480000,0.0, !- X,Y,Z ==> Vertex 4 {m} + 35.38000,7.480000,0.0, !- X,Y,Z ==> Vertex 5 {m} + 35.38000,10.28000,0.0, !- X,Y,Z ==> Vertex 6 {m} + 30.08000,10.28000,0.0, !- X,Y,Z ==> Vertex 7 {m} + 30.08000,5.080000,0.0, !- X,Y,Z ==> Vertex 8 {m} + 24.08000,5.080000,0.0, !- X,Y,Z ==> Vertex 9 {m} + 24.08000,8.080000,0.0, !- X,Y,Z ==> Vertex 10 {m} + 18.18000,8.080000,0.0, !- X,Y,Z ==> Vertex 11 {m} + 18.18000,4.580000,0.0, !- X,Y,Z ==> Vertex 12 {m} + 12.88000,4.580000,0.0, !- X,Y,Z ==> Vertex 13 {m} + 12.88000,8.980000,0.0, !- X,Y,Z ==> Vertex 14 {m} + 7.280000,8.980000,0.0, !- X,Y,Z ==> Vertex 15 {m} + 7.280000,5.980000,0.0; !- X,Y,Z ==> Vertex 16 {m} + +! equivalent area: +! 1.980000,25.58000,10.00000, !- X,Y,Z ==> Vertex 1 +! 1.980000,4.580000,10.00000, !- X,Y,Z ==> Vertex 2 +! 22.98000,4.580000,10.00000, !- X,Y,Z ==> Vertex 3 +! 22.98000,25.58000,10.00000; !- X,Y,Z ==> Vertex 4 + + BuildingSurface:Detailed, + Zn001:Roof001, !- Name + Roof, !- Surface Type + ROOF31, !- Construction Name + ZONE 1, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.0000000E+00, !- View Factor to Ground + autocalculate, !- Number of Vertices + 1.980000,5.980000,10.0, !- X,Y,Z ==> Vertex 1 {m} + 7.280000,5.980000,10.0, !- X,Y,Z ==> Vertex 2 {m} + 7.280000,8.980000,10.0, !- X,Y,Z ==> Vertex 3 {m} + 12.88000,8.980000,10.0, !- X,Y,Z ==> Vertex 4 {m} + 12.88000,4.580000,10.0, !- X,Y,Z ==> Vertex 5 {m} + 18.18000,4.580000,10.0, !- X,Y,Z ==> Vertex 6 {m} + 18.18000,8.080000,10.0, !- X,Y,Z ==> Vertex 7 {m} + 24.08000,8.080000,10.0, !- X,Y,Z ==> Vertex 8 {m} + 24.08000,5.080000,10.0, !- X,Y,Z ==> Vertex 9 {m} + 30.08000,5.080000,10.0, !- X,Y,Z ==> Vertex 10 {m} + 30.08000,10.28000,10.0, !- X,Y,Z ==> Vertex 11 {m} + 35.38000,10.28000,10.0, !- X,Y,Z ==> Vertex 12 {m} + 35.38000,7.480000,10.0, !- X,Y,Z ==> Vertex 13 {m} + 41.48000,7.480000,10.0, !- X,Y,Z ==> Vertex 14 {m} + 41.48000,18.38000,10.0, !- X,Y,Z ==> Vertex 15 {m} + 1.980000,18.38000,10.0; !- X,Y,Z ==> Vertex 16 {m} + + BuildingSurface:Detailed, + Zn002:Wall001, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 101.980000,5.980000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 101.980000,5.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 107.280000,5.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 107.280000,5.980000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn002:Wall001:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn002:Wall001, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 103.080000,5.980000,7.600000, !- X,Y,Z ==> Vertex 1 {m} + 103.080000,5.980000,2.600000, !- X,Y,Z ==> Vertex 2 {m} + 106.080000,5.980000,2.600000, !- X,Y,Z ==> Vertex 3 {m} + 106.080000,5.980000,7.600000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn002:Wall001:Shade001, !- Name + Zn002:Wall001, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 103.080000,2.980000,8.000000, !- X,Y,Z ==> Vertex 1 {m} + 103.080000,5.980000,8.000000, !- X,Y,Z ==> Vertex 2 {m} + 106.080000,5.980000,8.000000, !- X,Y,Z ==> Vertex 3 {m} + 106.080000,2.980000,8.000000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall002, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 107.280000,5.980000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 107.280000,5.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 107.280000,8.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 107.280000,8.980000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall003, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 107.280000,8.980000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 107.280000,8.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 112.88000,8.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 112.88000,8.980000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn002:Wall003:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn002:Wall003, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 108.580000,8.980000,7.500000, !- X,Y,Z ==> Vertex 1 {m} + 108.580000,8.980000,2.500000, !- X,Y,Z ==> Vertex 2 {m} + 111.58000,8.980000,2.500000, !- X,Y,Z ==> Vertex 3 {m} + 111.58000,8.980000,7.500000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn002:Wall003:Shade001, !- Name + Zn002:Wall003, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 108.580000,5.980000,7.900000, !- X,Y,Z ==> Vertex 1 {m} + 108.580000,8.980000,7.900000, !- X,Y,Z ==> Vertex 2 {m} + 111.58000,8.980000,7.900000, !- X,Y,Z ==> Vertex 3 {m} + 111.58000,5.980000,7.900000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall004, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 112.88000,8.980000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 112.88000,8.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 112.88000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 112.88000,4.580000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall005, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 112.88000,4.580000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 112.88000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 118.18000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 118.18000,4.580000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn002:Wall005:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn002:Wall005, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 114.08000,4.580000,7.100000, !- X,Y,Z ==> Vertex 1 {m} + 114.08000,4.580000,2.100000, !- X,Y,Z ==> Vertex 2 {m} + 117.08000,4.580000,2.100000, !- X,Y,Z ==> Vertex 3 {m} + 117.08000,4.580000,7.100000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn002:Wall005:Shade001, !- Name + Zn002:Wall005, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 114.08000,1.580000,7.500000, !- X,Y,Z ==> Vertex 1 {m} + 114.08000,4.580000,7.500000, !- X,Y,Z ==> Vertex 2 {m} + 117.08000,4.580000,7.500000, !- X,Y,Z ==> Vertex 3 {m} + 117.08000,1.580000,7.500000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall006, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 118.18000,4.580000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 118.18000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 118.18000,8.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 118.18000,8.080000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall007, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 118.18000,8.080000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 118.18000,8.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 124.08000,8.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 124.08000,8.080000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn002:Wall007:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn002:Wall007, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 119.58000,8.080000,7.200000, !- X,Y,Z ==> Vertex 1 {m} + 119.58000,8.080000,2.200000, !- X,Y,Z ==> Vertex 2 {m} + 122.58000,8.080000,2.200000, !- X,Y,Z ==> Vertex 3 {m} + 122.58000,8.080000,7.200000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn002:Wall007:Shade001, !- Name + Zn002:Wall007, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 119.58000,5.080000,7.600000, !- X,Y,Z ==> Vertex 1 {m} + 119.58000,8.080000,7.600000, !- X,Y,Z ==> Vertex 2 {m} + 122.58000,8.080000,7.600000, !- X,Y,Z ==> Vertex 3 {m} + 122.58000,5.080000,7.600000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall008, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 124.08000,8.080000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 124.08000,8.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 124.08000,5.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 124.08000,5.080000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall009, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 124.08000,5.080000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 124.08000,5.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 130.08000,5.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 130.08000,5.080000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn002:Wall009:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn002:Wall009, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 125.58000,5.080000,7.200000, !- X,Y,Z ==> Vertex 1 {m} + 125.58000,5.080000,2.200000, !- X,Y,Z ==> Vertex 2 {m} + 128.58000,5.080000,2.200000, !- X,Y,Z ==> Vertex 3 {m} + 128.58000,5.080000,7.200000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn002:Wall009:Shade001, !- Name + Zn002:Wall009, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 125.58000,2.080000,7.700000, !- X,Y,Z ==> Vertex 1 {m} + 125.58000,5.080000,7.700000, !- X,Y,Z ==> Vertex 2 {m} + 128.58000,5.080000,7.700000, !- X,Y,Z ==> Vertex 3 {m} + 128.58000,2.080000,7.700000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall010, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 130.08000,5.080000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 130.08000,5.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 130.08000,10.28000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 130.08000,10.28000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall011, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 130.08000,10.28000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 130.08000,10.28000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 135.38000,10.28000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 135.38000,10.28000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn002:Wall011:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn002:Wall011, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 130.98000,10.28000,7.200000, !- X,Y,Z ==> Vertex 1 {m} + 130.98000,10.28000,2.200000, !- X,Y,Z ==> Vertex 2 {m} + 133.98000,10.28000,2.200000, !- X,Y,Z ==> Vertex 3 {m} + 133.98000,10.28000,7.200000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn002:Wall011:Shade001, !- Name + Zn002:Wall011, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 130.98000,7.280000,7.600000, !- X,Y,Z ==> Vertex 1 {m} + 130.98000,10.28000,7.600000, !- X,Y,Z ==> Vertex 2 {m} + 133.98000,10.28000,7.600000, !- X,Y,Z ==> Vertex 3 {m} + 133.98000,7.280000,7.600000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall012, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 135.38000,10.28000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 135.38000,10.28000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 135.38000,7.480000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 135.38000,7.480000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall013, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 135.38000,7.480000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 135.38000,7.480000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 141.48000,7.480000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 141.48000,7.480000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn002:Wall013:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn002:Wall013, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 136.88000,7.480000,7.200000, !- X,Y,Z ==> Vertex 1 {m} + 136.88000,7.480000,2.200000, !- X,Y,Z ==> Vertex 2 {m} + 139.88000,7.480000,2.200000, !- X,Y,Z ==> Vertex 3 {m} + 139.88000,7.480000,7.200000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn002:Wall013:Shade001, !- Name + Zn002:Wall013, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 136.88000,4.480000,7.600000, !- X,Y,Z ==> Vertex 1 {m} + 136.88000,7.480000,7.600000, !- X,Y,Z ==> Vertex 2 {m} + 139.88000,7.480000,7.600000, !- X,Y,Z ==> Vertex 3 {m} + 139.88000,4.480000,7.600000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall014, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 141.48000,7.480000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 141.48000,7.480000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 141.48000,18.38000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 141.48000,18.38000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall015, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 141.48000,18.38000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 141.48000,18.38000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 101.980000,18.38000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 101.980000,18.38000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn002:Wall015:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn002:Wall015, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 140.88000,18.38000,7.500000, !- X,Y,Z ==> Vertex 1 {m} + 140.88000,18.38000,4.500000, !- X,Y,Z ==> Vertex 2 {m} + 104.880000,18.38000,4.500000, !- X,Y,Z ==> Vertex 3 {m} + 104.880000,18.38000,7.500000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn002:Wall016, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 101.980000,18.38000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 101.980000,18.38000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 101.980000,5.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 101.980000,5.980000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + +! equivalent area: +! 122.98000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 1 +! 101.980000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 +! 101.980000,25.58000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 +! 122.98000,25.58000,0.0000000E+00; !- X,Y,Z ==> Vertex 4 + + BuildingSurface:Detailed, + Zn002:Flr001, !- Name + Floor, !- Surface Type + SLAB FLOOR, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Ground, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + NoSun, !- Sun Exposure + NoWind, !- Wind Exposure + 1.000000, !- View Factor to Ground + autocalculate, !- Number of Vertices + 101.980000,5.980000,0.0, !- X,Y,Z ==> Vertex 1 {m} + 101.980000,18.38000,0.0, !- X,Y,Z ==> Vertex 2 {m} + 141.48000,18.38000,0.0, !- X,Y,Z ==> Vertex 3 {m} + 141.48000,7.480000,0.0, !- X,Y,Z ==> Vertex 4 {m} + 135.38000,7.480000,0.0, !- X,Y,Z ==> Vertex 5 {m} + 135.38000,10.28000,0.0, !- X,Y,Z ==> Vertex 6 {m} + 130.08000,10.28000,0.0, !- X,Y,Z ==> Vertex 7 {m} + 130.08000,5.080000,0.0, !- X,Y,Z ==> Vertex 8 {m} + 124.08000,5.080000,0.0, !- X,Y,Z ==> Vertex 9 {m} + 124.08000,8.080000,0.0, !- X,Y,Z ==> Vertex 10 {m} + 118.18000,8.080000,0.0, !- X,Y,Z ==> Vertex 11 {m} + 118.18000,4.580000,0.0, !- X,Y,Z ==> Vertex 12 {m} + 112.88000,4.580000,0.0, !- X,Y,Z ==> Vertex 13 {m} + 112.88000,8.980000,0.0, !- X,Y,Z ==> Vertex 14 {m} + 107.280000,8.980000,0.0, !- X,Y,Z ==> Vertex 15 {m} + 107.280000,5.980000,0.0; !- X,Y,Z ==> Vertex 16 {m} + +! equivalent area: +! 101.980000,25.58000,10.00000, !- X,Y,Z ==> Vertex 1 +! 101.980000,4.580000,10.00000, !- X,Y,Z ==> Vertex 2 +! 122.98000,4.580000,10.00000, !- X,Y,Z ==> Vertex 3 +! 122.98000,25.58000,10.00000; !- X,Y,Z ==> Vertex 4 + + BuildingSurface:Detailed, + Zn002:Roof001, !- Name + Roof, !- Surface Type + ROOF31, !- Construction Name + ZONE 2, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.0000000E+00, !- View Factor to Ground + autocalculate, !- Number of Vertices + 101.980000,5.980000,10.0, !- X,Y,Z ==> Vertex 1 {m} + 107.280000,5.980000,10.0, !- X,Y,Z ==> Vertex 2 {m} + 107.280000,8.980000,10.0, !- X,Y,Z ==> Vertex 3 {m} + 112.88000,8.980000,10.0, !- X,Y,Z ==> Vertex 4 {m} + 112.88000,4.580000,10.0, !- X,Y,Z ==> Vertex 5 {m} + 118.18000,4.580000,10.0, !- X,Y,Z ==> Vertex 6 {m} + 118.18000,8.080000,10.0, !- X,Y,Z ==> Vertex 7 {m} + 124.08000,8.080000,10.0, !- X,Y,Z ==> Vertex 8 {m} + 124.08000,5.080000,10.0, !- X,Y,Z ==> Vertex 9 {m} + 130.08000,5.080000,10.0, !- X,Y,Z ==> Vertex 10 {m} + 130.08000,10.28000,10.0, !- X,Y,Z ==> Vertex 11 {m} + 135.38000,10.28000,10.0, !- X,Y,Z ==> Vertex 12 {m} + 135.38000,7.480000,10.0, !- X,Y,Z ==> Vertex 13 {m} + 141.48000,7.480000,10.0, !- X,Y,Z ==> Vertex 14 {m} + 141.48000,18.38000,10.0, !- X,Y,Z ==> Vertex 15 {m} + 101.980000,18.38000,10.0; !- X,Y,Z ==> Vertex 16 {m} + + BuildingSurface:Detailed, + Zn003:Wall001, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 201.980000,5.980000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 201.980000,5.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 207.280000,5.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 207.280000,5.980000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn003:Wall001:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn003:Wall001, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 203.080000,5.980000,7.600000, !- X,Y,Z ==> Vertex 1 {m} + 203.080000,5.980000,2.600000, !- X,Y,Z ==> Vertex 2 {m} + 206.080000,5.980000,2.600000, !- X,Y,Z ==> Vertex 3 {m} + 206.080000,5.980000,7.600000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn003:Wall001:Shade001, !- Name + Zn003:Wall001, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 203.080000,2.980000,8.000000, !- X,Y,Z ==> Vertex 1 {m} + 203.080000,5.980000,8.000000, !- X,Y,Z ==> Vertex 2 {m} + 206.080000,5.980000,8.000000, !- X,Y,Z ==> Vertex 3 {m} + 206.080000,2.980000,8.000000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall002, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 207.280000,5.980000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 207.280000,5.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 207.280000,8.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 207.280000,8.980000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall003, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 207.280000,8.980000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 207.280000,8.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 212.88000,8.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 212.88000,8.980000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn003:Wall003:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn003:Wall003, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 208.580000,8.980000,7.500000, !- X,Y,Z ==> Vertex 1 {m} + 208.580000,8.980000,2.500000, !- X,Y,Z ==> Vertex 2 {m} + 211.58000,8.980000,2.500000, !- X,Y,Z ==> Vertex 3 {m} + 211.58000,8.980000,7.500000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn003:Wall003:Shade001, !- Name + Zn003:Wall003, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 208.580000,5.980000,7.900000, !- X,Y,Z ==> Vertex 1 {m} + 208.580000,8.980000,7.900000, !- X,Y,Z ==> Vertex 2 {m} + 211.58000,8.980000,7.900000, !- X,Y,Z ==> Vertex 3 {m} + 211.58000,5.980000,7.900000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall004, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 212.88000,8.980000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 212.88000,8.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 212.88000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 212.88000,4.580000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall005, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 212.88000,4.580000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 212.88000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 218.18000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 218.18000,4.580000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn003:Wall005:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn003:Wall005, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 214.08000,4.580000,7.100000, !- X,Y,Z ==> Vertex 1 {m} + 214.08000,4.580000,2.100000, !- X,Y,Z ==> Vertex 2 {m} + 217.08000,4.580000,2.100000, !- X,Y,Z ==> Vertex 3 {m} + 217.08000,4.580000,7.100000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn003:Wall005:Shade001, !- Name + Zn003:Wall005, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 214.08000,1.580000,7.500000, !- X,Y,Z ==> Vertex 1 {m} + 214.08000,4.580000,7.500000, !- X,Y,Z ==> Vertex 2 {m} + 217.08000,4.580000,7.500000, !- X,Y,Z ==> Vertex 3 {m} + 217.08000,1.580000,7.500000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall006, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 218.18000,4.580000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 218.18000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 218.18000,8.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 218.18000,8.080000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall007, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 218.18000,8.080000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 218.18000,8.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 224.08000,8.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 224.08000,8.080000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn003:Wall007:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn003:Wall007, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 219.58000,8.080000,7.200000, !- X,Y,Z ==> Vertex 1 {m} + 219.58000,8.080000,2.200000, !- X,Y,Z ==> Vertex 2 {m} + 222.58000,8.080000,2.200000, !- X,Y,Z ==> Vertex 3 {m} + 222.58000,8.080000,7.200000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn003:Wall007:Shade001, !- Name + Zn003:Wall007, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 219.58000,5.080000,7.600000, !- X,Y,Z ==> Vertex 1 {m} + 219.58000,8.080000,7.600000, !- X,Y,Z ==> Vertex 2 {m} + 222.58000,8.080000,7.600000, !- X,Y,Z ==> Vertex 3 {m} + 222.58000,5.080000,7.600000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall008, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 224.08000,8.080000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 224.08000,8.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 224.08000,5.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 224.08000,5.080000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall009, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 224.08000,5.080000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 224.08000,5.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 230.08000,5.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 230.08000,5.080000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn003:Wall009:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn003:Wall009, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 225.58000,5.080000,7.200000, !- X,Y,Z ==> Vertex 1 {m} + 225.58000,5.080000,2.200000, !- X,Y,Z ==> Vertex 2 {m} + 228.58000,5.080000,2.200000, !- X,Y,Z ==> Vertex 3 {m} + 228.58000,5.080000,7.200000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn003:Wall009:Shade001, !- Name + Zn003:Wall009, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 225.58000,2.080000,7.700000, !- X,Y,Z ==> Vertex 1 {m} + 225.58000,5.080000,7.700000, !- X,Y,Z ==> Vertex 2 {m} + 228.58000,5.080000,7.700000, !- X,Y,Z ==> Vertex 3 {m} + 228.58000,2.080000,7.700000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall010, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 230.08000,5.080000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 230.08000,5.080000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 230.08000,10.28000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 230.08000,10.28000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall011, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 230.08000,10.28000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 230.08000,10.28000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 235.38000,10.28000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 235.38000,10.28000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn003:Wall011:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn003:Wall011, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 230.98000,10.28000,7.200000, !- X,Y,Z ==> Vertex 1 {m} + 230.98000,10.28000,2.200000, !- X,Y,Z ==> Vertex 2 {m} + 233.98000,10.28000,2.200000, !- X,Y,Z ==> Vertex 3 {m} + 233.98000,10.28000,7.200000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn003:Wall011:Shade001, !- Name + Zn003:Wall011, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 230.98000,7.280000,7.600000, !- X,Y,Z ==> Vertex 1 {m} + 230.98000,10.28000,7.600000, !- X,Y,Z ==> Vertex 2 {m} + 233.98000,10.28000,7.600000, !- X,Y,Z ==> Vertex 3 {m} + 233.98000,7.280000,7.600000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall012, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 235.38000,10.28000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 235.38000,10.28000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 235.38000,7.480000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 235.38000,7.480000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall013, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 235.38000,7.480000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 235.38000,7.480000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 241.48000,7.480000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 241.48000,7.480000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn003:Wall013:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn003:Wall013, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 236.88000,7.480000,7.200000, !- X,Y,Z ==> Vertex 1 {m} + 236.88000,7.480000,2.200000, !- X,Y,Z ==> Vertex 2 {m} + 239.88000,7.480000,2.200000, !- X,Y,Z ==> Vertex 3 {m} + 239.88000,7.480000,7.200000; !- X,Y,Z ==> Vertex 4 {m} + + Shading:Zone:Detailed, + Zn003:Wall013:Shade001, !- Name + Zn003:Wall013, !- Base Surface Name + ShadingTransmittance:0001, !- Transmittance Schedule Name + 4, !- Number of Vertices + 236.88000,4.480000,7.600000, !- X,Y,Z ==> Vertex 1 {m} + 236.88000,7.480000,7.600000, !- X,Y,Z ==> Vertex 2 {m} + 239.88000,7.480000,7.600000, !- X,Y,Z ==> Vertex 3 {m} + 239.88000,4.480000,7.600000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall014, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 241.48000,7.480000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 241.48000,7.480000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 241.48000,18.38000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 241.48000,18.38000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall015, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 241.48000,18.38000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 241.48000,18.38000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 201.980000,18.38000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 201.980000,18.38000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + + FenestrationSurface:Detailed, + Zn003:Wall015:Win001, !- Name + Window, !- Surface Type + SINGLE PANE HW WINDOW, !- Construction Name + Zn003:Wall015, !- Building Surface Name + , !- Outside Boundary Condition Object + 0.5000000, !- View Factor to Ground + , !- Frame and Divider Name + 1.000000, !- Multiplier + 4, !- Number of Vertices + 240.88000,18.38000,7.500000, !- X,Y,Z ==> Vertex 1 {m} + 240.88000,18.38000,4.500000, !- X,Y,Z ==> Vertex 2 {m} + 204.880000,18.38000,4.500000, !- X,Y,Z ==> Vertex 3 {m} + 204.880000,18.38000,7.500000; !- X,Y,Z ==> Vertex 4 {m} + + BuildingSurface:Detailed, + Zn003:Wall016, !- Name + Wall, !- Surface Type + EXTERIOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.5000000, !- View Factor to Ground + 4, !- Number of Vertices + 201.980000,18.38000,10.00000, !- X,Y,Z ==> Vertex 1 {m} + 201.980000,18.38000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m} + 201.980000,5.980000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m} + 201.980000,5.980000,10.00000; !- X,Y,Z ==> Vertex 4 {m} + +! equivalent area: +! 222.98000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 1 +! 201.980000,4.580000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 +! 201.980000,25.58000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 +! 222.98000,25.58000,0.0000000E+00; !- X,Y,Z ==> Vertex 4 + + BuildingSurface:Detailed, + Zn003:Flr001, !- Name + Floor, !- Surface Type + SLAB FLOOR, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Ground, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + NoSun, !- Sun Exposure + NoWind, !- Wind Exposure + 1.000000, !- View Factor to Ground + autocalculate, !- Number of Vertices + 201.980000,5.980000,0.0, !- X,Y,Z ==> Vertex 1 {m} + 201.980000,18.38000,0.0, !- X,Y,Z ==> Vertex 2 {m} + 241.48000,18.38000,0.0, !- X,Y,Z ==> Vertex 3 {m} + 241.48000,7.480000,0.0, !- X,Y,Z ==> Vertex 4 {m} + 235.38000,7.480000,0.0, !- X,Y,Z ==> Vertex 5 {m} + 235.38000,10.28000,0.0, !- X,Y,Z ==> Vertex 6 {m} + 230.08000,10.28000,0.0, !- X,Y,Z ==> Vertex 7 {m} + 230.08000,5.080000,0.0, !- X,Y,Z ==> Vertex 8 {m} + 224.08000,5.080000,0.0, !- X,Y,Z ==> Vertex 9 {m} + 224.08000,8.080000,0.0, !- X,Y,Z ==> Vertex 10 {m} + 218.18000,8.080000,0.0, !- X,Y,Z ==> Vertex 11 {m} + 218.18000,4.580000,0.0, !- X,Y,Z ==> Vertex 12 {m} + 212.88000,4.580000,0.0, !- X,Y,Z ==> Vertex 13 {m} + 212.88000,8.980000,0.0, !- X,Y,Z ==> Vertex 14 {m} + 207.280000,8.980000,0.0, !- X,Y,Z ==> Vertex 15 {m} + 207.280000,5.980000,0.0; !- X,Y,Z ==> Vertex 16 {m} + +! equivalent area: +! 201.980000,25.58000,10.00000, !- X,Y,Z ==> Vertex 1 +! 201.980000,4.580000,10.00000, !- X,Y,Z ==> Vertex 2 +! 222.98000,4.580000,10.00000, !- X,Y,Z ==> Vertex 3 +! 222.98000,25.58000,10.00000; !- X,Y,Z ==> Vertex 4 + + BuildingSurface:Detailed, + Zn003:Roof001, !- Name + Roof, !- Surface Type + ROOF31, !- Construction Name + ZONE 3, !- Zone Name + , !- Space Name + Outdoors, !- Outside Boundary Condition + , !- Outside Boundary Condition Object + SunExposed, !- Sun Exposure + WindExposed, !- Wind Exposure + 0.0000000E+00, !- View Factor to Ground + autocalculate, !- Number of Vertices + 201.980000,5.980000,10.0, !- X,Y,Z ==> Vertex 1 {m} + 207.280000,5.980000,10.0, !- X,Y,Z ==> Vertex 2 {m} + 207.280000,8.980000,10.0, !- X,Y,Z ==> Vertex 3 {m} + 212.88000,8.980000,10.0, !- X,Y,Z ==> Vertex 4 {m} + 212.88000,4.580000,10.0, !- X,Y,Z ==> Vertex 5 {m} + 218.18000,4.580000,10.0, !- X,Y,Z ==> Vertex 6 {m} + 218.18000,8.080000,10.0, !- X,Y,Z ==> Vertex 7 {m} + 224.08000,8.080000,10.0, !- X,Y,Z ==> Vertex 8 {m} + 224.08000,5.080000,10.0, !- X,Y,Z ==> Vertex 9 {m} + 230.08000,5.080000,10.0, !- X,Y,Z ==> Vertex 10 {m} + 230.08000,10.28000,10.0, !- X,Y,Z ==> Vertex 11 {m} + 235.38000,10.28000,10.0, !- X,Y,Z ==> Vertex 12 {m} + 235.38000,7.480000,10.0, !- X,Y,Z ==> Vertex 13 {m} + 241.48000,7.480000,10.0, !- X,Y,Z ==> Vertex 14 {m} + 241.48000,18.38000,10.0, !- X,Y,Z ==> Vertex 15 {m} + 201.980000,18.38000,10.0; !- X,Y,Z ==> Vertex 16 {m} + + Output:VariableDictionary,Regular; + + Output:Surfaces:Drawing,DXF,ThickPolyline; + + Output:Variable,*,Site Outdoor Air Drybulb Temperature, timestep; + + Output:Variable,*,Zone Air Temperature, timestep; + + Output:Variable,*,Zone Air Humidity Ratio, timestep; + + Output:Variable,*,Zone Air System Sensible Cooling Energy, timestep; + + Output:Variable,*,Zone Air System Sensible Cooling Rate, timestep; + + Output:Variable,*,Earth Tube Zone Sensible Cooling Energy, timestep; + + Output:Variable,*,Earth Tube Zone Sensible Heating Energy, timestep; + + Output:Variable,*,Earth Tube Air Flow Volume, timestep; + + Output:Variable,*,Earth Tube Current Density Air Volume Flow Rate, timestep; + + Output:Variable,*,Earth Tube Air Flow Mass, timestep; + + Output:Variable,*,Earth Tube Air Mass Flow Rate, timestep; + + Output:Variable,*,Earth Tube Water Mass Flow Rate, timestep; + + Output:Variable,*,Earth Tube Fan Electricity Energy, timestep; + + Output:Variable,*,Earth Tube Zone Inlet Air Temperature, timestep; + + Output:Variable,*,Earth Tube Zone Inlet Wet Bulb Temperature, timestep; + + Output:Variable,*,Earth Tube Zone Inlet Humidity Ratio, timestep; + + Output:Variable,*,Earth Tube Node Temperature 1,timestep; + + Output:Variable,*,Earth Tube Node Temperature 2,timestep; + + Output:Variable,*,Earth Tube Node Temperature 3,timestep; + + Output:Variable,*,Earth Tube Node Temperature 4,timestep; + + Output:Variable,*,Earth Tube Node Temperature 5,timestep; + + Output:Variable,*,Earth Tube Node Temperature 6,timestep; + + Output:Variable,*,Earth Tube Node Temperature 7,timestep; + + Output:Variable,*,Earth Tube Node Temperature 8,timestep; + + Output:Variable,*,Earth Tube Node Temperature 9,timestep; + + Output:Variable,*,Earth Tube Node Temperature 10,timestep; + + Output:Variable,*,Earth Tube Node Temperature 11,timestep; + + Output:Variable,*,Earth Tube Node Temperature 12,timestep; + + Output:Variable,*,Earth Tube Node Temperature 13,timestep; + + Output:Variable,*,Earth Tube Node Temperature 14,timestep; + + Output:Variable,*,Earth Tube Node Temperature 15,timestep; + + Output:Variable,*,Earth Tube Node Temperature 16,timestep; + + Output:Variable,*,Earth Tube Node Temperature 17,timestep; + + Output:Variable,*,Earth Tube Node Temperature 18,timestep; + + Output:Variable,*,Earth Tube Node Temperature 19,timestep; + + Output:Variable,*,Earth Tube Node Temperature 20,timestep; + + Output:Variable,*,Earth Tube Node Temperature 21,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 1,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 2,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 3,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 4,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 5,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 6,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 7,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 8,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 9,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 10,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 11,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 12,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 13,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 14,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 15,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 16,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 17,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 18,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 19,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 20,timestep; + + Output:Variable,*,Earth Tube Undisturbed Ground Temperature 21,timestep; + + Output:Variable,*,Earth Tube Upper Boundary Ground Temperature,timestep; + + Output:Variable,*,Earth Tube Lower Boundary Ground Temperature,timestep; + + Output:Meter,Electricity:Facility,hourly; + + Output:Meter:MeterFileOnly,Electricity:Facility,monthly; + + Output:Meter:MeterFileOnly,Electricity:Building,monthly; + + Output:Meter:MeterFileOnly,InteriorLights:Electricity,monthly; + + Output:Meter:MeterFileOnly,Electricity:Facility,runperiod; + + Output:Meter:MeterFileOnly,Electricity:Building,runperiod; + + Output:Meter:MeterFileOnly,InteriorLights:Electricity,runperiod; + diff --git a/tst/EnergyPlus/unit/EarthTube.unit.cc b/tst/EnergyPlus/unit/EarthTube.unit.cc index 9f41f3bc8fa..830684766ba 100644 --- a/tst/EnergyPlus/unit/EarthTube.unit.cc +++ b/tst/EnergyPlus/unit/EarthTube.unit.cc @@ -129,4 +129,90 @@ TEST_F(EnergyPlusFixture, EarthTube_CheckEarthTubesInZonesTest) EXPECT_EQ(ErrorsFound, true); } +TEST_F(EnergyPlusFixture, EarthTube_initCPrime0Test) +{ + // Test of initCPrime0 subroutine used by the Earth Tube Vertical model + int TotEarthTube = 1; + state->dataEarthTube->EarthTubeSys.allocate(TotEarthTube); + auto &thisEarthTube = state->dataEarthTube->EarthTubeSys(1); + thisEarthTube.totNodes = 3; + thisEarthTube.aCoeff.resize(thisEarthTube.totNodes); + thisEarthTube.bCoeff.resize(thisEarthTube.totNodes); + thisEarthTube.cCoeff0.resize(thisEarthTube.totNodes); + thisEarthTube.cPrime0.resize(thisEarthTube.totNodes); + + // Test 1 + thisEarthTube.aCoeff[0] = 0.0; + thisEarthTube.bCoeff[0] = 2.0; + thisEarthTube.cCoeff0[0] = -1.0; + thisEarthTube.aCoeff[1] = -1.0; + thisEarthTube.bCoeff[1] = 2.0; + thisEarthTube.cCoeff0[1] = -1.0; + thisEarthTube.aCoeff[2] = -1.0; + thisEarthTube.bCoeff[2] = 2.0; + thisEarthTube.cCoeff0[2] = 0.0; + Real64 expectedResult0 = -0.5; + Real64 expectedResult1 = -0.6666667; + Real64 expectedResult2 = 0.0; + Real64 diffTol = 0.0001; + + // Run the test and check the results + thisEarthTube.initCPrime0(); + EXPECT_NEAR(expectedResult0, thisEarthTube.cPrime0[0], diffTol); + EXPECT_NEAR(expectedResult1, thisEarthTube.cPrime0[1], diffTol); + EXPECT_NEAR(expectedResult2, thisEarthTube.cPrime0[2], diffTol); + + // Test 2 + thisEarthTube.aCoeff[0] = 0.0; + thisEarthTube.bCoeff[0] = 1.0; + thisEarthTube.cCoeff0[0] = -2.0; + thisEarthTube.aCoeff[1] = -1.5; + thisEarthTube.bCoeff[1] = 4.0; + thisEarthTube.cCoeff0[1] = -1.5; + thisEarthTube.aCoeff[2] = -1.5; + thisEarthTube.bCoeff[2] = 3.0; + thisEarthTube.cCoeff0[2] = 0.0; + expectedResult0 = -2.0; + expectedResult1 = -1.5; + expectedResult2 = 0.0; + + // Run the test and check the results + thisEarthTube.initCPrime0(); + EXPECT_NEAR(expectedResult0, thisEarthTube.cPrime0[0], diffTol); + EXPECT_NEAR(expectedResult1, thisEarthTube.cPrime0[1], diffTol); + EXPECT_NEAR(expectedResult2, thisEarthTube.cPrime0[2], diffTol); +} + +TEST_F(EnergyPlusFixture, EarthTube_calcUndisturbedGroundTemperatureTest) +{ + int TotEarthTube = 1; + state->dataEarthTube->EarthTubeSys.allocate(TotEarthTube); + auto &thisEarthTube = state->dataEarthTube->EarthTubeSys(1); + + // Test 1 + thisEarthTube.AverSoilSurTemp = 12.0; + thisEarthTube.ApmlSoilSurTemp = 6.0; + thisEarthTube.SoilThermDiff = 0.05; + state->dataEnvrn->DayOfYear = 23; + thisEarthTube.SoilSurPhaseConst = 2.0; + Real64 depth = 3.0; + Real64 expectedResult = 10.9032; + Real64 diffTol = 0.0001; + + Real64 calculatedResult = thisEarthTube.calcUndisturbedGroundTemperature(*state, depth); + EXPECT_NEAR(calculatedResult, expectedResult, diffTol); + + // Test 2 + thisEarthTube.AverSoilSurTemp = 10.0; + thisEarthTube.ApmlSoilSurTemp = 5.0; + thisEarthTube.SoilThermDiff = 0.08; + state->dataEnvrn->DayOfYear = 234; + thisEarthTube.SoilSurPhaseConst = 3.0; + depth = 2.0; + expectedResult = 12.5532; + + calculatedResult = thisEarthTube.calcUndisturbedGroundTemperature(*state, depth); + EXPECT_NEAR(calculatedResult, expectedResult, diffTol); +} + } // namespace EnergyPlus