Line data Source code
1 : // EnergyPlus, Copyright (c) 1996-2024, The Board of Trustees of the University of Illinois,
2 : // The Regents of the University of California, through Lawrence Berkeley National Laboratory
3 : // (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge
4 : // National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other
5 : // contributors. All rights reserved.
6 : //
7 : // NOTICE: This Software was developed under funding from the U.S. Department of Energy and the
8 : // U.S. Government consequently retains certain rights. As such, the U.S. Government has been
9 : // granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable,
10 : // worldwide license in the Software to reproduce, distribute copies to the public, prepare
11 : // derivative works, and perform publicly and display publicly, and to permit others to do so.
12 : //
13 : // Redistribution and use in source and binary forms, with or without modification, are permitted
14 : // provided that the following conditions are met:
15 : //
16 : // (1) Redistributions of source code must retain the above copyright notice, this list of
17 : // conditions and the following disclaimer.
18 : //
19 : // (2) Redistributions in binary form must reproduce the above copyright notice, this list of
20 : // conditions and the following disclaimer in the documentation and/or other materials
21 : // provided with the distribution.
22 : //
23 : // (3) Neither the name of the University of California, Lawrence Berkeley National Laboratory,
24 : // the University of Illinois, U.S. Dept. of Energy nor the names of its contributors may be
25 : // used to endorse or promote products derived from this software without specific prior
26 : // written permission.
27 : //
28 : // (4) Use of EnergyPlus(TM) Name. If Licensee (i) distributes the software in stand-alone form
29 : // without changes from the version obtained under this License, or (ii) Licensee makes a
30 : // reference solely to the software portion of its product, Licensee must refer to the
31 : // software as "EnergyPlus version X" software, where "X" is the version number Licensee
32 : // obtained under this License and may not use a different name for the software. Except as
33 : // specifically required in this Section (4), Licensee shall not use in a company name, a
34 : // product name, in advertising, publicity, or other promotional activities any name, trade
35 : // name, trademark, logo, or other designation of "EnergyPlus", "E+", "e+" or confusingly
36 : // similar designation, without the U.S. Department of Energy's prior written consent.
37 : //
38 : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
39 : // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
40 : // AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
41 : // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
42 : // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
43 : // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
44 : // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
45 : // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
46 : // POSSIBILITY OF SUCH DAMAGE.
47 :
48 : #ifndef Construction_hh_INCLUDED
49 : #define Construction_hh_INCLUDED
50 :
51 : // EnergyPlus Headers
52 : #include <EnergyPlus/Data/BaseData.hh>
53 : #include <EnergyPlus/DataBSDFWindow.hh>
54 : #include <EnergyPlus/DataHeatBalance.hh>
55 : #include <EnergyPlus/DataWindowEquivalentLayer.hh>
56 : #include <EnergyPlus/EnergyPlus.hh>
57 : #include <EnergyPlus/Material.hh>
58 :
59 : namespace EnergyPlus {
60 :
61 : // Forward declarations
62 : struct EnergyPlusData;
63 :
64 : namespace Construction {
65 :
66 : int constexpr MaxLayersInConstruct(11); // Maximum number of layers allowed in a single construction
67 : int constexpr MaxCTFTerms(19); // Maximum number of CTF terms allowed to still allow stability
68 : // Note Sync with SurfaceGroundHeatExchanger::local::MaxCTFTerms
69 : // ** has to be big enough to hold no matter what window model
70 : // each window model should validate layers individually
71 : int constexpr MaxSpectralDataElements(800); // Maximum number in Spectral Data arrays.
72 :
73 : struct ConstructionProps
74 : {
75 : // Members
76 : std::string Name; // Name of construction
77 : int TotLayers = 0; // Total number of layers for the construction; for windows
78 : // this is the total of the glass, gas and shade layers
79 : int TotSolidLayers = 0; // Total number of solid (glass or shade) layers (windows only)
80 : int TotGlassLayers = 0; // Total number of glass layers (windows only)
81 : Array1D_int LayerPoint; // Pointer array which refers back to
82 : // the Material structure; LayerPoint(i)=j->Material(j)%Name,etc
83 : bool IsUsed = false; // Marked true when the construction is used
84 : bool IsUsedCTF = false; // Mark true when the construction is used for a surface with CTF calculations
85 : Real64 InsideAbsorpVis = 0.0; // Inside Layer visible absorptance of an opaque surface; not used for windows.
86 : Real64 OutsideAbsorpVis = 0.0; // Outside Layer visible absorptance of an opaque surface; not used for windows.
87 : Real64 InsideAbsorpSolar = 0.0; // Inside Layer solar absorptance of an opaque surface; not used for windows.
88 : Real64 OutsideAbsorpSolar = 0.0; // Outside Layer solar absorptance of an opaque surface; not used for windows.
89 : Real64 InsideAbsorpThermal = 0.0; // Inside Layer Thermal absorptance for opaque surfaces or windows;
90 : // for windows, applies to innermost glass layer
91 : Real64 OutsideAbsorpThermal = 0.0; // Outside Layer Thermal absorptance
92 : Material::SurfaceRoughness OutsideRoughness = Material::SurfaceRoughness::Invalid; // Outside Surface roughness index
93 : int DayltPropPtr = 0; // Pointer to Daylight Construction Properties
94 : int W5FrameDivider = 0; // FrameDivider number for window construction from Window5 data file;
95 : // zero is construction not from Window5 file or Window5 construction has no frame.
96 : // Conductive properties for the construction
97 : std::array<Real64, MaxCTFTerms> CTFCross{}; // Cross or Y terms of the CTF equation
98 : std::array<Real64, MaxCTFTerms> CTFFlux{}; // Flux history terms of the CTF equation
99 : std::array<Real64, MaxCTFTerms> CTFInside{}; // Inside or Z terms of the CTF equation
100 : std::array<Real64, MaxCTFTerms> CTFOutside{}; // Outside or X terms of the CTF equation
101 : std::array<Real64, MaxCTFTerms> CTFSourceIn{}; // Heat source/sink inside terms of CTF equation
102 : std::array<Real64, MaxCTFTerms> CTFSourceOut{}; // Heat source/sink outside terms of CTF equation
103 : Real64 CTFTimeStep = 0.0; // Time increment for stable simulation of construct (could be greater than TimeStep)
104 : // The next three series of terms are used to calculate the temperature at the location of a source/sink
105 : // in the QTF formulation. This calculation is necessary to allow the proper simulation of a
106 : // radiant system.
107 : std::array<Real64, MaxCTFTerms> CTFTSourceOut{}; // Outside terms of the CTF equation for interior temp
108 : // calc@source location
109 : std::array<Real64, MaxCTFTerms> CTFTSourceIn{}; // Inside terms of the CTF equation for interior temp
110 : // calc@source location
111 : std::array<Real64, MaxCTFTerms> CTFTSourceQ{}; // Source/sink terms of the CTF equation for interior temp
112 : // calc@source location
113 : // The next three series of terms are used to calculate the temperature at a location specified by the user.
114 : // This location must be between two layers and is intended to allow the user to evaluate whether or not
115 : // condensation is a possibility between material layers.
116 : std::array<Real64, MaxCTFTerms> CTFTUserOut{}; // Outside terms of the CTF equation for interior temp
117 : // calc@user location
118 : std::array<Real64, MaxCTFTerms> CTFTUserIn{}; // Inside terms of the CTF equation for interior temp
119 : // calc@user location
120 : std::array<Real64, MaxCTFTerms> CTFTUserSource{}; // Source/sink terms of the CTF equation for interior temp
121 : // calc@user location
122 : int NumHistories = 0; // CTFTimeStep/TimeStepZone or the number of temp/flux history series
123 : // for the construction
124 : int NumCTFTerms = 0; // Number of CTF terms for this construction (not including terms at current time)
125 : Real64 UValue = 0.0; // Overall heat transfer coefficient for the construction
126 : int SolutionDimensions = 0; // Number of dimensions in the solution (1 for normal constructions,
127 : // 1 or 2 for constructions with sources or sinks)-->may allow 3-D later?
128 : int SourceAfterLayer = 0; // Source/sink is present after this layer in the construction
129 : int TempAfterLayer = 0; // User is requesting a temperature calculation after this layer in the construction
130 : // This location is also the position of a temperature on the interior of a slab
131 : // that could be used to control a low temperature radiant system
132 : Real64 ThicknessPerpend = 0.0; // Thickness between planes of symmetry in the direction
133 : // perpendicular to the main direction of heat transfer
134 : // (same as half the distance between tubes)
135 : Real64 userTemperatureLocationPerpendicular = 0.0; // Location of the source perpendicular to the main direction
136 : // of heat transfer. Used in conjunction with the TempAfterLayer
137 : // term to provide specific location of user defined temperature.
138 : // This value is only used when SolutionDimension = 2.
139 : // Moisture Transfer Functions term belong here as well
140 : // BLAST detailed solar model parameters
141 : Real64 AbsDiffIn = 0.0; // Inner absorptance coefficient for diffuse radiation
142 : Real64 AbsDiffOut = 0.0; // Outer absorptance coefficient for diffuse radiation
143 : // Variables for window constructions
144 : Array1D<Real64> AbsDiff; // Diffuse solar absorptance for each glass layer,
145 : // bare glass or shade on
146 : Array2D<Real64> BlAbsDiff; // Diffuse solar absorptance for each glass layer vs.
147 : // slat angle, blind on
148 : Array2D<Real64> BlAbsDiffGnd; // Diffuse ground solar absorptance for each glass layer
149 : // vs. slat angle, blind on
150 : Array2D<Real64> BlAbsDiffSky; // Diffuse sky solar absorptance for each glass layer
151 : // vs. slat angle, blind on
152 : Array1D<Real64> AbsDiffBack; // Diffuse back solar absorptance for each glass layer
153 : Array2D<Real64> BlAbsDiffBack; // Diffuse back solar absorptance for each glass layer,
154 : // vs. slat angle, blind on
155 : Real64 AbsDiffShade = 0.0; // Diffuse solar absorptance for shade
156 : Array1D<Real64> AbsDiffBlind; // Diffuse solar absorptance for blind, vs. slat angle
157 : Array1D<Real64> AbsDiffBlindGnd; // Diffuse ground solar absorptance for blind, vs. slat angle
158 : Array1D<Real64> AbsDiffBlindSky; // Diffuse sky solar absorptance for blind, vs. slat angle
159 : Real64 AbsDiffBackShade = 0.0; // Diffuse back solar absorptance for shade
160 : Array1D<Real64> AbsDiffBackBlind; // Diffuse back solar absorptance for blind, vs. slat angle
161 : Real64 ShadeAbsorpThermal = 0.0; // Diffuse back thermal absorptance of shade
162 : Array1D<Array1D<Real64>> AbsBeamCoef; // Coefficients of incidence-angle polynomial for solar
163 : // absorptance for each solid glazing layer
164 : Array1D<Array1D<Real64>> AbsBeamBackCoef; // As for AbsBeamCoef but for back-incident solar
165 : Array1D<Real64> AbsBeamShadeCoef; // Coefficients of incidence-angle polynomial for solar
166 : // absorptance of shade
167 : Real64 TransDiff = 0.0; // Diffuse solar transmittance, bare glass or shade on
168 : Array1D<Real64> BlTransDiff; // Diffuse solar transmittance, blind present, vs. slat angle
169 : Array1D<Real64> BlTransDiffGnd; // Ground diffuse solar transmittance, blind present, vs. slat angle
170 : Array1D<Real64> BlTransDiffSky; // Sky diffuse solar transmittance, blind present, vs. slat angle
171 : Real64 TransDiffVis; // Diffuse visible transmittance, bare glass or shade on
172 : Array1D<Real64> BlTransDiffVis; // Diffuse visible transmittance, blind present, vs. slat angle
173 : Real64 ReflectSolDiffBack = 0.0; // Diffuse back solar reflectance, bare glass or shade on
174 : Array1D<Real64> BlReflectSolDiffBack; // Diffuse back solar reflectance, blind present, vs. slat angle
175 : Real64 ReflectSolDiffFront = 0.0; // Diffuse front solar reflectance, bare glass or shade on
176 : Array1D<Real64> BlReflectSolDiffFront; // Diffuse front solar reflectance, blind present, vs. slat angle
177 : Real64 ReflectVisDiffBack = 0.0; // Diffuse back visible reflectance, bare glass or shade on
178 : Array1D<Real64> BlReflectVisDiffBack; // Diffuse back visible reflectance, blind present, vs. slat angle
179 : Real64 ReflectVisDiffFront = 0.0; // Diffuse front visible reflectance, bare glass or shade on
180 : Array1D<Real64> BlReflectVisDiffFront; // Diffuse front visible reflectance, blind present, vs. slat angle
181 : Array1D<Real64> TransSolBeamCoef; // Coeffs of incidence-angle polynomial for beam sol trans,
182 : // bare glass or shade on
183 : Array1D<Real64> TransVisBeamCoef; // Coeffs of incidence-angle polynomial for beam vis trans,
184 : // bare glass or shade on
185 : Array1D<Real64> ReflSolBeamFrontCoef; // Coeffs of incidence-angle polynomial for beam sol front refl,
186 : // bare glass or shade on
187 : Array1D<Real64> ReflSolBeamBackCoef; // Like ReflSolBeamFrontCoef, but for back-incident beam solar
188 : Array1D<Array1D<Real64>> tBareSolCoef; // Isolated glass solar transmittance coeffs of inc. angle polynomial
189 : Array1D<Array1D<Real64>> tBareVisCoef; // Isolated glass visible transmittance coeffs of inc. angle polynomial
190 : Array1D<Array1D<Real64>> rfBareSolCoef; // Isolated glass front solar reflectance coeffs of inc. angle polynomial
191 : Array1D<Array1D<Real64>> rfBareVisCoef; // Isolated glass front visible reflectance coeffs of inc. angle polynomial
192 : Array1D<Array1D<Real64>> rbBareSolCoef; // Isolated glass back solar reflectance coeffs of inc. angle polynomial
193 : Array1D<Array1D<Real64>> rbBareVisCoef; // Isolated glass back visible reflectance coeffs of inc. angle polynomial
194 : Array1D<Array1D<Real64>> afBareSolCoef; // Isolated glass front solar absorptance coeffs of inc. angle polynomial
195 : Array1D<Array1D<Real64>> abBareSolCoef; // Isolated glass back solar absorptance coeffs of inc. angle polynomial
196 : Array1D<Real64> tBareSolDiff; // Isolated glass diffuse solar transmittance
197 : Array1D<Real64> tBareVisDiff; // Isolated glass diffuse visible transmittance
198 : Array1D<Real64> rfBareSolDiff; // Isolated glass diffuse solar front reflectance
199 : Array1D<Real64> rfBareVisDiff; // Isolated glass diffuse visible front reflectance
200 : Array1D<Real64> rbBareSolDiff; // Isolated glass diffuse solar back reflectance
201 : Array1D<Real64> rbBareVisDiff; // Isolated glass diffuse visible back reflectance
202 : Array1D<Real64> afBareSolDiff; // Isolated glass diffuse solar front absorptance
203 : Array1D<Real64> abBareSolDiff; // Isolated glass diffuse solar back absorptance
204 : bool FromWindow5DataFile = false; // True if this is a window construction extracted from the Window5 data file
205 : Real64 W5FileMullionWidth = 0.0; // Width of mullion for construction from Window5 data file (m)
206 : DataWindowEquivalentLayer::Orientation W5FileMullionOrientation =
207 : DataWindowEquivalentLayer::Orientation::Invalid; // Orientation of mullion, if present, for Window5 data file construction,
208 : Real64 W5FileGlazingSysWidth = 0.0; // Glass width for construction from Window5 data file (m)
209 : Real64 W5FileGlazingSysHeight = 0.0; // Glass height for construction form Window5 data file (m)
210 : Real64 SummerSHGC = 0.0; // Calculated ASHRAE SHGC for summer conditions
211 : Real64 VisTransNorm = 0.0; // The normal visible transmittance
212 : Real64 SolTransNorm = 0.0; // the normal solar transmittance
213 : bool SourceSinkPresent = false; // .TRUE. if there is a source/sink within this construction
214 : bool TypeIsWindow = false; // True if a window construction, false otherwise
215 : bool WindowTypeBSDF = false; // True for complex window, false otherwise
216 : bool TypeIsEcoRoof = false; // -- true for construction with ecoRoof outside, the flag
217 : //-- is turned on when the outside layer is of type EcoRoof
218 : bool TypeIsIRT = false; // -- true for construction with IRT material
219 : bool TypeIsCfactorWall = false; // -- true for construction with Construction:CfactorUndergroundWall
220 : bool TypeIsFfactorFloor = false; // -- true for construction with Construction:FfactorGroundFloor
221 : // Added TH 12/22/2008 for thermochromic windows
222 : int TCFlag = 0; // 0: this construction is not a thermochromic window construction
223 : // 1: it is a TC window construction
224 : int TCLayer = 0; // Reference to the TC glazing material layer in the Material array
225 : int TCMasterConst = 0; // The master TC construction referenced by its slave constructions
226 : int TCLayerID = 0; // Which material layer is the TC glazing, counting all material layers.
227 : int TCGlassID = 0; // Which glass layer is the TC glazing, counting from glass layers only.
228 : // For CFactor underground walls
229 : Real64 CFactor = 0.0;
230 : Real64 Height = 0.0;
231 : // For FFactor slabs-on-grade or underground floors
232 : Real64 FFactor = 0.0;
233 : Real64 Area = 0.0;
234 : Real64 PerimeterExposed = 0.0;
235 : bool ReverseConstructionNumLayersWarning = false;
236 : bool ReverseConstructionLayersOrderWarning = false;
237 : // Complex Fenestration
238 : DataBSDFWindow::BSDFWindowInputStruct BSDFInput; // nest structure with user input for complex fenestration
239 : // EquivalentLayer Window
240 : bool WindowTypeEQL = false; // True for equivalent layer window, false otherwise
241 : int EQLConsPtr = 0; // Pointer to equivalent Layer window construction
242 : Array1D<Real64> AbsDiffFrontEQL; // Diffuse layer system front absorptance for EQL window
243 : Array1D<Real64> AbsDiffBackEQL; // Diffuse layer system back absorptance for EQL window
244 : Real64 TransDiffFrontEQL = 0.0; // Diffuse system front transmittance for EQL window
245 : Real64 TransDiffBackEQL = 0.0; // Diffuse system back transmittance for EQL window
246 : // Air boundary
247 : bool TypeIsAirBoundary = false; // true for Construction:AirBoundary
248 : bool TypeIsAirBoundaryMixing = false; // true for Construction:AirBoundary with SimpleMixing for air exchange
249 : Real64 AirBoundaryACH = 0.0; // Air boundary simple mixing air changes per hour [1/hr]
250 : int AirBoundaryMixingSched = 0; // Air boundary simple mixing schedule index
251 :
252 : int rcmax = 0; // Total number of nodes in the construct (<= MaxTotNodes)
253 : Array2D<Real64> AExp; // Exponential of AMat
254 : Array2D<Real64> AInv; // Inverse of AMat
255 : Array2D<Real64> AMat; // "A" matrix from Seem's dissertation (constant coefficients of linear system)
256 : Array1D<Real64> BMat; // "B" matrix of state space method (non-zero elements)
257 : Array1D<Real64> CMat; // "C" matrix of state space method (non-zero elements)
258 : Array1D<Real64> DMat; // "D" matrix of state space method (non-zero elements)
259 : Array1D<Real64> e; // Coefficients for the surface flux history term
260 : Array2D<Real64> Gamma1; // Intermediate calculation array corresponding to a term in Seem's dissertation
261 : Array2D<Real64> Gamma2; // Intermediate calculation array corresponding to a term in Seem's dissertation
262 : Array3D<Real64> s; // Coefficients for the surface temperature history terms
263 : Array2D<Real64> s0; // Coefficients for the current surface temperature terms
264 : Array2D<Real64> IdenMatrix; // Identity Matrix
265 : int NumOfPerpendNodes = 7; // Number of nodes in the direction
266 : // perpendicular to the main direction of heat transfer. This is only used
267 : // when a two-dimensional solution has been requested for a construction
268 : // with a heat source/sink.
269 : int NodeSource = 0; // Node at which a source or sink is present
270 : int NodeUserTemp = 0; // Node where user wishes to calculate a temperature (for constructions with sources/sinks only)
271 :
272 : // Default Constructor
273 826 : ConstructionProps()
274 1652 : : LayerPoint(MaxLayersInConstruct, 0), AbsDiffBlind(Material::MaxSlatAngs, 0.0), AbsDiffBlindGnd(Material::MaxSlatAngs, 0.0),
275 2478 : AbsDiffBlindSky(Material::MaxSlatAngs, 0.0), AbsDiffBackBlind(Material::MaxSlatAngs, 0.0), AbsBeamShadeCoef(6, 0.0),
276 826 : BlTransDiff(Material::MaxSlatAngs, 0.0), BlTransDiffGnd(Material::MaxSlatAngs, 0.0), BlTransDiffSky(Material::MaxSlatAngs, 0.0),
277 1652 : TransDiffVis(0.0), BlTransDiffVis(Material::MaxSlatAngs, 0.0), BlReflectSolDiffBack(Material::MaxSlatAngs, 0.0),
278 1652 : BlReflectSolDiffFront(Material::MaxSlatAngs, 0.0), BlReflectVisDiffBack(Material::MaxSlatAngs, 0.0),
279 826 : BlReflectVisDiffFront(Material::MaxSlatAngs, 0.0), TransSolBeamCoef(6, 0.0), TransVisBeamCoef(6, 0.0), ReflSolBeamFrontCoef(6, 0.0),
280 1652 : ReflSolBeamBackCoef(6, 0.0), tBareSolDiff(5, 0.0), tBareVisDiff(5, 0.0), rfBareSolDiff(5, 0.0), rfBareVisDiff(5, 0.0),
281 826 : rbBareSolDiff(5, 0.0), rbBareVisDiff(5, 0.0), afBareSolDiff(5, 0.0), abBareSolDiff(5, 0.0),
282 9086 : AbsDiffFrontEQL(DataWindowEquivalentLayer::CFSMAXNL, 0.0), AbsDiffBackEQL(DataWindowEquivalentLayer::CFSMAXNL, 0.0)
283 : {
284 826 : BMat.allocate(3);
285 826 : CMat.allocate(2);
286 826 : DMat.allocate(2);
287 826 : s0.allocate(3, 4);
288 826 : }
289 :
290 : void calculateTransferFunction(EnergyPlusData &state, bool &ErrorsFound, bool &DoCTFErrorReport);
291 :
292 : void calculateExponentialMatrix(); // Time step of the resulting CTFs
293 :
294 : void calculateInverseMatrix();
295 :
296 : void calculateGammas();
297 :
298 : void calculateFinalCoefficients();
299 :
300 : void reportTransferFunction(EnergyPlusData &state, int cCounter);
301 :
302 : void reportLayers(EnergyPlusData &state);
303 :
304 : bool isGlazingConstruction(EnergyPlusData &state) const;
305 :
306 : Real64 setThicknessPerpendicular(EnergyPlusData &state, Real64 userValue);
307 :
308 : Real64 setUserTemperatureLocationPerpendicular(EnergyPlusData &state, Real64 userValue);
309 :
310 : void setNodeSourceAndUserTemp(Array1D_int &Nodes);
311 :
312 : void setArraysBasedOnMaxSolidWinLayers(EnergyPlusData &state);
313 : };
314 : } // namespace Construction
315 :
316 : struct ConstructionData : BaseGlobalStruct
317 : {
318 : Array1D<Construction::ConstructionProps> Construct;
319 : Array1D_int LayerPoint = Array1D<int>(Construction::MaxLayersInConstruct, 0);
320 :
321 796 : void init_state([[maybe_unused]] EnergyPlusData &state) override
322 : {
323 796 : }
324 :
325 0 : void clear_state() override
326 : {
327 0 : new (this) ConstructionData();
328 0 : }
329 : };
330 :
331 : } // namespace EnergyPlus
332 :
333 : #endif
|