LCOV - code coverage report
Current view: top level - EnergyPlus - ConvectionCoefficients.hh (source / functions) Coverage Total Hit
Test: lcov.output.filtered Lines: 100.0 % 13 13
Test Date: 2025-05-22 16:09:37 Functions: 100.0 % 6 6

            Line data    Source code
       1              : // EnergyPlus, Copyright (c) 1996-2025, 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 ConvectionCoefficients_hh_INCLUDED
      49              : #define ConvectionCoefficients_hh_INCLUDED
      50              : 
      51              : // ObjexxFCL Headers
      52              : #include <ObjexxFCL/Array1D.hh>
      53              : #include <ObjexxFCL/Array1S.hh>
      54              : #include <ObjexxFCL/Optional.hh>
      55              : 
      56              : // EnergyPlus Headers
      57              : #include <EnergyPlus/ConvectionConstants.hh>
      58              : #include <EnergyPlus/Data/BaseData.hh>
      59              : #include <EnergyPlus/DataGlobals.hh>
      60              : #include <EnergyPlus/DataSurfaces.hh>
      61              : #include <EnergyPlus/EnergyPlus.hh>
      62              : #include <EnergyPlus/UtilityRoutines.hh>
      63              : 
      64              : namespace EnergyPlus {
      65              : 
      66              : // Forward declarations
      67              : struct EnergyPlusData;
      68              : 
      69              : namespace Convect {
      70              : 
      71              :     struct HcIntUserCurve
      72              :     {
      73              :         // Members
      74              :         std::string Name; // user's name for object
      75              :         RefTemp refTempType = RefTemp::Invalid;
      76              :         int hcFnTempDiffCurveNum = 0;
      77              :         int hcFnTempDiffDivHeightCurveNum = 0;
      78              :         int hcFnACHCurveNum = 0;
      79              :         int hcFnACHDivPerimLengthCurveNum = 0;
      80              :     };
      81              : 
      82              :     struct HcExtUserCurve
      83              :     {
      84              :         // Members
      85              :         std::string Name;
      86              :         RefTemp refTempType = RefTemp::Invalid;
      87              :         bool suppressRainChange = false;
      88              :         RefWind windSpeedType = RefWind::Invalid;
      89              :         int hfFnWindSpeedCurveNum = 0;
      90              :         int hnFnTempDiffCurveNum = 0;
      91              :         int hnFnTempDiffDivHeightCurveNum = 0;
      92              :     };
      93              : 
      94              :     struct IntAdaptiveConvAlgo
      95              :     {
      96              :         // Members
      97              :         std::string Name;
      98              : 
      99              :         std::array<HcInt, static_cast<int>(IntConvClass::Num)> intConvClassEqNums = {
     100              :             HcInt::FohannoPolidoriVerticalWall,             // A3_SimpleBuoy_VertWalls
     101              :             HcInt::AlamdariHammondStableHorizontal,         // A3_SimpleBuoy_StableHoriz
     102              :             HcInt::AlamdariHammondUnstableHorizontal,       // A3_SimpleBuoy_UnstableHoriz
     103              :             HcInt::WaltonStableHorizontalOrTilt,            // A3_SimpleBuoy_StableTilted
     104              :             HcInt::WaltonUnstableHorizontalOrTilt,          // A3_SimpleBuoy_UnstableTilted
     105              :             HcInt::ISO15099Windows,                         // A3_SimpleBuoy_Windows
     106              :             HcInt::KhalifaEq3WallAwayFromHeat,              // A1_FloorHeatCeilingCool_VertWalls
     107              :             HcInt::AlamdariHammondStableHorizontal,         // A1_FloorHeatCeilingCool_StableHoriz
     108              :             HcInt::KhalifaEq4CeilingAwayFromHeat,           // A1_FloorHeatCeilingCool_UnstableHoriz
     109              :             HcInt::AwbiHattonHeatedFloor,                   // A1_FloorHeatCeilingCool_HeatedFloor
     110              :             HcInt::KaradagChilledCeiling,                   // A1_FloorHeatCeilingCool_ChilledCeil
     111              :             HcInt::WaltonStableHorizontalOrTilt,            // A1_FloorHeatCeilingCool_StableTilted
     112              :             HcInt::WaltonUnstableHorizontalOrTilt,          // A1_FloorHeatCeilingCool_UnstableTilted
     113              :             HcInt::ISO15099Windows,                         // A1_FloorHeatCeilingCool_Windows
     114              :             HcInt::KhalifaEq6NonHeatedWalls,                // A2_WallPanelHeat_VertWallsNonHeated
     115              :             HcInt::AwbiHattonHeatedWall,                    // A2_WallPanelHeat_HeatedVerticalWall
     116              :             HcInt::AlamdariHammondStableHorizontal,         // A2_WallPanelHeat_StableHoriz
     117              :             HcInt::KhalifaEq7Ceiling,                       // A2_WallPanelHeat_UnstableHoriz
     118              :             HcInt::WaltonStableHorizontalOrTilt,            // A2_WallPanelHeat_StableTilted
     119              :             HcInt::WaltonUnstableHorizontalOrTilt,          // A2_WallPanelHeat_UnstableTilted
     120              :             HcInt::ISO15099Windows,                         // A2_WallPanelHeat_Windows
     121              :             HcInt::FohannoPolidoriVerticalWall,             // B_ConvectiveHeat_VertWall
     122              :             HcInt::KhalifaEq5WallNearHeat,                  // B_ConvectiveHeat_VertWallNearHeater
     123              :             HcInt::AlamdariHammondStableHorizontal,         // B_ConvectiveHeat_StableHoriz
     124              :             HcInt::KhalifaEq7Ceiling,                       // B_ConvectiveHeat_UnstableHoriz
     125              :             HcInt::WaltonStableHorizontalOrTilt,            // B_ConvectiveHeat_StableTilted
     126              :             HcInt::WaltonUnstableHorizontalOrTilt,          // B_ConvectiveHeat_UnstableTilted
     127              :             HcInt::ISO15099Windows,                         // B_ConvectiveHeat_Windows
     128              :             HcInt::GoldsteinNovoselacCeilingDiffuserWalls,  // C_CentralAir_Walls
     129              :             HcInt::FisherPedersenCeilDiffuserCeiling,       // C_CentralAir_Ceiling
     130              :             HcInt::GoldsteinNovoselacCeilingDiffuserFloor,  // C_CentralAir_Floor
     131              :             HcInt::GoldsteinNovoselacCeilingDiffuserWindow, // C_CentralAir_Windows
     132              :             HcInt::KhalifaEq3WallAwayFromHeat,              // D_ZoneFanCirc_VertWall
     133              :             HcInt::AlamdariHammondStableHorizontal,         // D_ZoneFanCirc_StableHoriz
     134              :             HcInt::KhalifaEq4CeilingAwayFromHeat,           // D_ZoneFanCirc_UnstableHoriz
     135              :             HcInt::WaltonStableHorizontalOrTilt,            // D_ZoneFanCirc_StableTilted
     136              :             HcInt::WaltonUnstableHorizontalOrTilt,          // D_ZoneFanCirc_UnstableTilted
     137              :             HcInt::ISO15099Windows,                         // D_ZoneFanCirc_Windows
     138              :             HcInt::BeausoleilMorrisonMixedAssistingWall,    // E_MixedBuoy_AssistFlowWall
     139              :             HcInt::BeausoleilMorrisonMixedOppossingWall,    // E_MixedBuoy_OppositeFlowWall
     140              :             HcInt::BeausoleilMorrisonMixedStableFloor,      // E_MixedBuoy_StableFloor
     141              :             HcInt::BeausoleilMorrisonMixedUnstableFloor,    // E_MixedBuoy_UnstableFloor
     142              :             HcInt::BeausoleilMorrisonMixedStableCeiling,    // E_MixedBuoy_StableCeiling
     143              :             HcInt::BeausoleilMorrisonMixedUnstableCeiling,  // E_MixedBuoy_UnstableCeiling
     144              :             HcInt::GoldsteinNovoselacCeilingDiffuserWindow  // E_MixedBuoy_Windows
     145              :         };
     146              : 
     147              :         std::array<int, static_cast<int>(IntConvClass::Num)> intConvClassUserCurveNums = {
     148              :             0, // A3_SimpleBuoy_VertWalls
     149              :             0, // A3_SimpleBuoy_StableHoriz
     150              :             0, // A3_SimpleBuoy_UnstableHoriz
     151              :             0, // A3_SimpleBuoy_StableTilted
     152              :             0, // A3_SimpleBuoy_UnstableTilted
     153              :             0, // A3_SimpleBuoy_Windows
     154              :             0, // A1_FloorHeatCeilingCool_VertWalls
     155              :             0, // A1_FloorHeatCeilingCool_StableHoriz
     156              :             0, // A1_FloorHeatCeilingCool_UnstableHoriz
     157              :             0, // A1_FloorHeatCeilingCool_HeatedFloor
     158              :             0, // A1_FloorHeatCeilingCool_ChilledCeil
     159              :             0, // A1_FloorHeatCeilingCool_StableTilted
     160              :             0, // A1_FloorHeatCeilingCool_UnstableTilted
     161              :             0, // A1_FloorHeatCeilingCool_Windows
     162              :             0, // A2_WallPanelHeat_VertWallsNonHeated
     163              :             0, // A2_WallPanelHeat_HeatedVerticalWall
     164              :             0, // A2_WallPanelHeat_StableHoriz
     165              :             0, // A2_WallPanelHeat_UnstableHoriz
     166              :             0, // A2_WallPanelHeat_StableTilted
     167              :             0, // A2_WallPanelHeat_UnstableTilted
     168              :             0, // A2_WallPanelHeat_Windows
     169              :             0, // B_ConvectiveHeat_VertWall
     170              :             0, // B_ConvectiveHeat_VertWallNearHeater
     171              :             0, // B_ConvectiveHeat_StableHoriz
     172              :             0, // B_ConvectiveHeat_UnstableHoriz
     173              :             0, // B_ConvectiveHeat_StableTilted
     174              :             0, // B_ConvectiveHeat_UnstableTilted
     175              :             0, // B_ConvectiveHeat_Windows
     176              :             0, // C_CentralAir_Walls
     177              :             0, // C_CentralAir_Ceiling
     178              :             0, // C_CentralAir_Floor
     179              :             0, // C_CentralAir_Windows
     180              :             0, // D_ZoneFanCirc_VertWall
     181              :             0, // D_ZoneFanCirc_StableHoriz
     182              :             0, // D_ZoneFanCirc_UnstableHoriz
     183              :             0, // D_ZoneFanCirc_StableTilted
     184              :             0, // D_ZoneFanCirc_UnstableTilted
     185              :             0, // D_ZoneFanCirc_Windows
     186              :             0, // E_MixedBuoy_AssistFlowWall
     187              :             0, // E_MixedBuoy_OppositeFlowWall
     188              :             0, // E_MixedBuoy_StableFloor
     189              :             0, // E_MixedBuoy_UnstableFloor
     190              :             0, // E_MixedBuoy_StableCeiling
     191              :             0, // E_MixedBuoy_UnstableCeiling
     192              :             0  // E_MixedBuoy_Windows
     193              :         };
     194              :     };
     195              : 
     196              :     struct ExtAdaptiveConvAlgo
     197              :     {
     198              :         // Members
     199              :         std::string Name;
     200              :         bool suppressRainChange = false;
     201              : 
     202              :         std::array<HcExt, static_cast<int>(ExtConvClass2::Num)> extConvClass2EqNums = {
     203              :             HcExt::SparrowWindward,                      // WindConvection_WindwardWall
     204              :             HcExt::SparrowLeeward,                       // WindConvection_LeewardWall
     205              :             HcExt::ClearRoof,                            // WindConvection_HorizRoof
     206              :             HcExt::NaturalASHRAEVerticalWall,            // NaturalConvection_VertWall
     207              :             HcExt::NaturalWaltonStableHorizontalOrTilt,  // NaturalConvection_StableHorizOrTilt
     208              :             HcExt::NaturalWaltonUnstableHorizontalOrTilt // NaturalConvection_StableHorizOrTilt
     209              :         };
     210              : 
     211              :         std::array<int, static_cast<int>(ExtConvClass2::Num)> extConvClass2UserCurveNums = {
     212              :             0, // WindConvection_WindwardWall
     213              :             0, // WindConvection_LeewardWall
     214              :             0, // WindConvection_HorizRoof
     215              :             0, // NaturalConvection_VertWall
     216              :             0, // NaturalConvection_StableHorizOrTilt
     217              :             0  // NaturalConvection_StableHorizOrTilt
     218              :         };
     219              :     };
     220              : 
     221              :     // Functions
     222              : 
     223              :     void InitIntConvCoeff(EnergyPlusData &state,
     224              :                           const Array1D<Real64> &SurfaceTemperatures,        // Temperature of surfaces for evaluation of HcIn
     225              :                           ObjexxFCL::Optional_int_const ZoneToResimulate = _ // if passed in, then only calculate surfaces that have this zone
     226              :     );
     227              : 
     228              :     void InitExtConvCoeff(EnergyPlusData &state,
     229              :                           int SurfNum,                          // Surface number (in Surface derived type)
     230              :                           Real64 HMovInsul,                     // Equivalent convection coefficient of movable insulation
     231              :                           Material::SurfaceRoughness Roughness, // Roughness index (1-6), see DataHeatBalance parameters
     232              :                           Real64 AbsExt,                        // Exterior thermal absorptance
     233              :                           Real64 TempExt,                       // Exterior surface temperature (C)
     234              :                           Real64 &HExt,                         // Convection coefficient to exterior air
     235              :                           Real64 &HSky,                         // "Convection" coefficient to sky temperature
     236              :                           Real64 &HGround,                      // "Convection" coefficient to ground temperature
     237              :                           Real64 &HAir,                         // Radiation to Air Component
     238              :                           Real64 &HSrdSurf                      // Radiation to surrounding surfaces
     239              :     );
     240              : 
     241              :     Real64 SurroundingSurfacesRadCoeffAverage(EnergyPlusData &state,
     242              :                                               int const SurfNum,     // Surface number (in Surface derived type)
     243              :                                               Real64 const TempExtK, // Exterior surface temperature (K)
     244              :                                               Real64 const AbsExt    // Exterior thermal absorptance
     245              :     );
     246              : 
     247              :     Real64 CalcHfExteriorSparrow(Real64 SurfWindSpeed,                 // Local wind speed at height of the heat transfer surface (m/s)
     248              :                                  Real64 GrossArea,                     // Gross surface area {m2}
     249              :                                  Real64 Perimeter,                     // Surface perimeter length {m}
     250              :                                  Real64 CosTilt,                       // Cosine of the Surface Tilt Angle
     251              :                                  Real64 Azimuth,                       // Facing angle (degrees) of the surface outward normal
     252              :                                  Material::SurfaceRoughness Roughness, // Surface roughness index
     253              :                                  Real64 WindDirection                  // Wind (compass) direction (degrees)
     254              :     );
     255              : 
     256              :     bool Windward(Real64 CosTilt,      // Cosine of the surface tilt angle
     257              :                   Real64 Azimuth,      // or Facing, Direction the surface outward normal faces (degrees)
     258              :                   Real64 WindDirection // Wind direction measured clockwise from geographhic North
     259              :     );
     260              : 
     261              :     void GetUserConvCoeffs(EnergyPlusData &state);
     262              : 
     263              :     void ApplyIntConvValue(EnergyPlusData &state, int surfNum, HcInt model, int userNum);
     264              :     void ApplyExtConvValue(EnergyPlusData &state, int surfNum, HcExt model, int userNum);
     265              :     void ApplyIntConvValueMulti(EnergyPlusData &state, DataSurfaces::SurfaceFilter surfaceFilter, HcInt model, int userNum);
     266              :     void ApplyExtConvValueMulti(EnergyPlusData &state, DataSurfaces::SurfaceFilter surfaceFilter, HcExt model, int userNum);
     267              : 
     268              :     Real64 CalcASHRAESimpExtConvCoeff(Material::SurfaceRoughness Roughness, // Integer index for roughness, relates to parameter array indices
     269              :                                       Real64 SurfWindSpeed                  // Current wind speed, m/s
     270              :     );
     271              : 
     272              :     Real64 CalcASHRAESimpleIntConvCoeff(Real64 Tsurf, Real64 Tamb, Real64 cosTilt);
     273              : 
     274              :     void CalcASHRAESimpleIntConvCoeff(EnergyPlusData &state,
     275              :                                       int SurfNum,                  // surface number for which coefficients are being calculated
     276              :                                       Real64 SurfaceTemperature,    // Temperature of surface for evaluation of HcIn
     277              :                                       Real64 ZoneMeanAirTemperature // Mean Air Temperature of Zone
     278              :     );
     279              : 
     280              :     Real64 CalcASHRAETARPNatural(Real64 Tsurf, Real64 Tamb, Real64 cosTilt);
     281              : 
     282              :     void CalcASHRAEDetailedIntConvCoeff(EnergyPlusData &state,
     283              :                                         int SurfNum,                  // surface number for which coefficients are being calculated
     284              :                                         Real64 SurfaceTemperature,    // Temperature of surface for evaluation of HcIn
     285              :                                         Real64 ZoneMeanAirTemperature // Mean Air Temperature of Zone
     286              :     );
     287              : 
     288              :     void CalcDetailedHcInForDVModel(EnergyPlusData &state,
     289              :                                     int SurfNum,                                       // surface number for which coefficients are being calculated
     290              :                                     const Array1D<Real64> &SurfaceTemperatures,        // Temperature of surfaces for evaluation of HcIn
     291              :                                     Array1D<Real64> &HcIn,                             // Interior Convection Coeff Array
     292              :                                     ObjexxFCL::Optional<Array1S<Real64> const> Vhc = _ // Velocity array for forced convection coeff calculation
     293              :     );
     294              : 
     295              :     Real64 CalcZoneSupplyAirTemp(EnergyPlusData &state, int ZoneNum);
     296              : 
     297              :     Real64 CalcZoneSystemVolFlowRate(EnergyPlusData &state, int ZoneNum);
     298              : 
     299              :     Real64 CalcZoneSystemACH(EnergyPlusData &state, int ZoneNum);
     300              : 
     301              :     Real64 CalcCeilingDiffuserACH(EnergyPlusData &state, int ZoneNum);
     302              : 
     303              :     Real64 CalcCeilingDiffuserIntConvCoeff(EnergyPlusData &state,
     304              :                                            Real64 ACH, // [1/hr] air system air change rate
     305              :                                            Real64 Tsurf,
     306              :                                            Real64 Tair,
     307              :                                            Real64 cosTilt,
     308              :                                            Real64 humRat,
     309              :                                            Real64 height,
     310              :                                            bool isWindow = false);
     311              : 
     312              :     void CalcCeilingDiffuserIntConvCoeff(EnergyPlusData &state,
     313              :                                          int ZoneNum,
     314              :                                          const Array1D<Real64> &SurfaceTemperatures); // zone number for which coefficients are being calculated
     315              : 
     316              :     // CalcCeilingDiffuserInletCorr should replace CalcCeilingDiffuser (above), if ZoneTempPredictorCorrector can
     317              :     // ever be made to work correctly with the inlet air temperature.
     318              : 
     319              :     void CalcCeilingDiffuserInletCorr(EnergyPlusData &state,
     320              :                                       int ZoneNum,                         // Zone number
     321              :                                       Array1D<Real64> &SurfaceTemperatures // For CalcASHRAEDetailed, if called
     322              :     );
     323              : 
     324              :     void CalcTrombeWallIntConvCoeff(EnergyPlusData &state,
     325              :                                     int ZoneNum,                               // Zone number for which coefficients are being calculated
     326              :                                     const Array1D<Real64> &SurfaceTemperatures // Temperature of surfaces for evaluation of HcIn
     327              :     );
     328              : 
     329              :     Real64 CalcNusselt(EnergyPlusData &state,
     330              :                        int SurfNum, // Surface number
     331              :                        Real64 asp,  // Aspect ratio: window height to gap width
     332              :                        Real64 tso,  // Temperature of gap surface closest to outside (K)
     333              :                        Real64 tsi,  // Temperature of gap surface closest to zone (K)
     334              :                        Real64 gr,   // Gap gas Grashof number
     335              :                        Real64 pr    // Gap gas Prandtl number
     336              :     );
     337              : 
     338              :     Real64 SetExtConvCoeff(EnergyPlusData &state, int SurfNum); // Surface Number
     339              : 
     340              :     Real64 SetIntConvCoeff(EnergyPlusData &state, int SurfNum); // Surface Number
     341              : 
     342              :     Real64 CalcISO15099WindowIntConvCoeff(EnergyPlusData &state,
     343              :                                           Real64 SurfaceTemperature, // Temperature of surface for evaluation of HcIn
     344              :                                           Real64 AirTemperature,     // Mean Air Temperature of Zone (or adjacent air temperature)
     345              :                                           Real64 AirHumRat,          // air humidity ratio
     346              :                                           Real64 Height,             // window cavity height [m]
     347              :                                           Real64 TiltDeg,            // glazing tilt in degrees
     348              :                                           Real64 sineTilt            // sine of glazing tilt
     349              :     );
     350              : 
     351              :     void CalcISO15099WindowIntConvCoeff(EnergyPlusData &state,
     352              :                                         int SurfNum,               // surface number for which coefficients are being calculated
     353              :                                         Real64 SurfaceTemperature, // Temperature of surface for evaluation of HcIn
     354              :                                         Real64 AirTemperature      // Mean Air Temperature of Zone (or adjacent air temperature)
     355              :     );
     356              : 
     357              :     void SetupAdaptiveConvStaticMetaData(EnergyPlusData &state);
     358              : 
     359              :     void SetupAdaptiveConvRadiantSurfaceData(EnergyPlusData &state);
     360              : 
     361              :     void ManageIntAdaptiveConvAlgo(EnergyPlusData &state, int SurfNum); // surface number for which coefficients are being calculated
     362              : 
     363              :     Real64 ManageExtAdaptiveConvAlgo(EnergyPlusData &state,
     364              :                                      int SurfNum); // surface number for which coefficients are being calculated
     365              : 
     366              :     Real64 EvaluateIntHcModels(EnergyPlusData &state, int SurfNum, HcInt ConvModelEquationNum);
     367              : 
     368              :     Real64 EvaluateExtHcModels(EnergyPlusData &state, int SurfNum, HcExt NaturalConvModelEqNum, HcExt ForcedConvModelEqNum);
     369              : 
     370              :     void DynamicExtConvSurfaceClassification(EnergyPlusData &state, int SurfNum); // surface number
     371              : 
     372              :     void MapExtConvClassToHcModels(EnergyPlusData &state, int SurfNum); // surface number
     373              : 
     374              :     void DynamicIntConvSurfaceClassification(EnergyPlusData &state, int SurfNum); // surface number
     375              : 
     376              :     void MapIntConvClassToHcModels(EnergyPlusData &state, int SurfNum); // surface pointer index
     377              : 
     378              :     Real64 CalcUserDefinedIntHcModel(EnergyPlusData &state, int SurfNum, int UserCurveNum);
     379              : 
     380              :     Real64 CalcUserDefinedExtHcModel(EnergyPlusData &state, int SurfNum, int UserCurveNum);
     381              : 
     382              :     void ShowWarningHydraulicDiameterZero(EnergyPlusData &state, int &errorIdx, ErrorObjectHeader const &eoh);
     383              : 
     384              :     void ShowWarningDeltaTempZero(EnergyPlusData &state, int &errorIdx, ErrorObjectHeader const &eoh);
     385              : 
     386              :     void ShowWarningWindowLocation(EnergyPlusData &state, int &errorIdx, ErrorObjectHeader const &eoh, IntConvWinLoc winLoc);
     387              : 
     388              :     void ShowWarningPerimeterLengthZero(EnergyPlusData &state, int &errorIdx, ErrorObjectHeader const &eoh);
     389              : 
     390              :     void ShowWarningFaceAreaZero(EnergyPlusData &state, int &errorIdx, ErrorObjectHeader const &eoh);
     391              : 
     392              :     //** Begin catalog of Hc equation functions. **** !*************************************************
     393              : 
     394        20975 :     inline Real64 CalcASHRAEVerticalWall(Real64 const DeltaTemp) // [C] temperature difference between surface and air
     395              :     {
     396              : 
     397              :         // FUNCTION INFORMATION:
     398              :         //       AUTHOR         Brent Griffith
     399              :         //       DATE WRITTEN   Aug 2010
     400              :         //       MODIFIED       na
     401              :         //       RE-ENGINEERED  na
     402              : 
     403              :         // PURPOSE OF THIS FUNCTION:
     404              :         // Calculate the model equation attributed to ASHRAE for vertical walls for natural convection
     405              : 
     406              :         // REFERENCES:
     407              :         // 2.  ASHRAE Handbook of Fundamentals 2001, p. 3.12, Table 5.
     408              : 
     409        20975 :         return 1.31 * std::pow(std::abs(DeltaTemp), 1.0 / 3.0);
     410              :     }
     411              : 
     412      2056129 :     inline Real64 CalcWaltonUnstableHorizontalOrTilt(Real64 const DeltaTemp, // [C] temperature difference between surface and air
     413              :                                                      Real64 const CosineTilt // Cosine of tilt angle
     414              :     )
     415              :     {
     416              : 
     417              :         // FUNCTION INFORMATION:
     418              :         //       AUTHOR         Brent Griffith
     419              :         //       DATE WRITTEN   Aug 2010
     420              :         //       MODIFIED       na
     421              :         //       RE-ENGINEERED  na
     422              : 
     423              :         // PURPOSE OF THIS FUNCTION:
     424              :         // Calculate the model equation attributed to Walton's TARP program for horizontal
     425              :         // and tilted surfaces with enhanced, thermally unstable natural convection
     426              : 
     427              :         // METHODOLOGY EMPLOYED:
     428              : 
     429              :         // REFERENCES:
     430              :         // 1.  Walton, G. N. 1983. Thermal Analysis Research Program (TARP) Reference Manual,
     431              :         //     NBSSIR 83-2655, National Bureau of Standards, "Surface Inside Heat Balances", pp 79-80.
     432              : 
     433      2056129 :         return 9.482 * std::pow(std::abs(DeltaTemp), 1.0 / 3.0) / (7.238 - std::abs(CosineTilt));
     434              :     }
     435              : 
     436      2435929 :     inline Real64 CalcWaltonStableHorizontalOrTilt(Real64 const DeltaTemp, // [C] temperature difference between surface and air
     437              :                                                    Real64 const CosineTilt // Cosine of tilt angle
     438              :     )
     439              :     {
     440              : 
     441              :         // FUNCTION INFORMATION:
     442              :         //       AUTHOR         Brent Griffith
     443              :         //       DATE WRITTEN   Aug 2010
     444              :         //       MODIFIED       na
     445              :         //       RE-ENGINEERED  na
     446              : 
     447              :         // PURPOSE OF THIS FUNCTION:
     448              :         // Calculate the model equation attributed to Walton's TARP program for horizontal
     449              :         // and tilted surfaces with reduced, thermally stable natural convection
     450              : 
     451              :         // REFERENCES:
     452              :         // 1.  Walton, G. N. 1983. Thermal Analysis Research Program (TARP) Reference Manual,
     453              :         //     NBSSIR 83-2655, National Bureau of Standards, "Surface Inside Heat Balances", pp 79-80.
     454              : 
     455      2435929 :         return 1.810 * std::pow(std::abs(DeltaTemp), 1.0 / 3.0) / (1.382 + std::abs(CosineTilt));
     456              :     }
     457              : 
     458              :     Real64 CalcFisherPedersenCeilDiffuserFloor(EnergyPlusData &state,
     459              :                                                Real64 ACH, // [1/hr] air system air change rate
     460              :                                                Real64 Tsurf,
     461              :                                                Real64 Tair,
     462              :                                                Real64 cosTilt,
     463              :                                                Real64 humRat,
     464              :                                                Real64 height,
     465              :                                                bool isWindow = false);
     466              : 
     467              :     Real64 CalcFisherPedersenCeilDiffuserCeiling(EnergyPlusData &state,
     468              :                                                  Real64 ACH, // [1/hr] air system air change rate
     469              :                                                  Real64 Tsurf,
     470              :                                                  Real64 Tair,
     471              :                                                  Real64 cosTilt,
     472              :                                                  Real64 humRat,
     473              :                                                  Real64 height,
     474              :                                                  bool isWindow = false);
     475              : 
     476              :     Real64 CalcFisherPedersenCeilDiffuserWalls(EnergyPlusData &state,
     477              :                                                Real64 ACH, // [1/hr] air system air change rate
     478              :                                                Real64 Tsurf,
     479              :                                                Real64 Tair,
     480              :                                                Real64 cosTilt,
     481              :                                                Real64 humRat,
     482              :                                                Real64 height,
     483              :                                                bool isWindow = false);
     484              : 
     485              :     Real64 CalcFisherPedersenCeilDiffuserNatConv(
     486              :         EnergyPlusData &state, Real64 Hforced, Real64 ACH, Real64 Tsurf, Real64 Tair, Real64 cosTilt, Real64 humRat, Real64 height, bool isWindow);
     487              : 
     488              :     Real64 CalcAlamdariHammondUnstableHorizontal(Real64 DeltaTemp,        // [C] temperature difference between surface and air
     489              :                                                  Real64 HydraulicDiameter // [m] characteristic size, = (4 * area) / perimeter
     490              :     );
     491              : 
     492              :     Real64 CalcAlamdariHammondUnstableHorizontal(EnergyPlusData &state,
     493              :                                                  Real64 DeltaTemp,         // [C] temperature difference between surface and air
     494              :                                                  Real64 HydraulicDiameter, // [m] characteristic size, = (4 * area) / perimeter
     495              :                                                  int SurfNum               // for messages
     496              :     );
     497              : 
     498              :     Real64 CalcAlamdariHammondStableHorizontal(Real64 DeltaTemp,        // [C] temperature difference between surface and air
     499              :                                                Real64 HydraulicDiameter // [m] characteristic size, = (4 * area) / perimeter
     500              :     );
     501              : 
     502              :     Real64 CalcAlamdariHammondStableHorizontal(EnergyPlusData &state,
     503              :                                                Real64 DeltaTemp,         // [C] temperature difference between surface and air
     504              :                                                Real64 HydraulicDiameter, // [m] characteristic size, = (4 * area) / perimeter
     505              :                                                int SurfNum               // for messages
     506              :     );
     507              : 
     508              :     Real64 CalcAlamdariHammondVerticalWall(Real64 DeltaTemp, // [C] temperature difference between surface and air
     509              :                                            Real64 Height     // [m] characteristic size, = zone height
     510              :     );
     511              : 
     512              :     Real64 CalcAlamdariHammondVerticalWall(EnergyPlusData &state,
     513              :                                            Real64 DeltaTemp, // [C] temperature difference between surface and air
     514              :                                            Real64 Height,    // [m] characteristic size, = zone height
     515              :                                            int SurfNum       // for messages
     516              :     );
     517              : 
     518              :     Real64 CalcKhalifaEq3WallAwayFromHeat(Real64 DeltaTemp); // [C] temperature difference between surface and air
     519              : 
     520              :     Real64 CalcKhalifaEq4CeilingAwayFromHeat(Real64 DeltaTemp); // [C] temperature difference between surface and air
     521              : 
     522              :     Real64 CalcKhalifaEq5WallsNearHeat(Real64 DeltaTemp); // [C] temperature difference between surface and air
     523              : 
     524              :     Real64 CalcKhalifaEq6NonHeatedWalls(Real64 DeltaTemp); // [C] temperature difference between surface and air
     525              : 
     526              :     Real64 CalcKhalifaEq7Ceiling(Real64 DeltaTemp); // [C] temperature difference between surface and air
     527              : 
     528              :     Real64 CalcAwbiHattonHeatedFloor(Real64 DeltaTemp,        // [C] temperature difference between surface and air
     529              :                                      Real64 HydraulicDiameter // [m] characteristic size, = (4 * area) / perimeter
     530              :     );
     531              : 
     532              :     Real64 CalcAwbiHattonHeatedWall(Real64 DeltaTemp,        // [C] temperature difference between surface and air
     533              :                                     Real64 HydraulicDiameter // [m] characteristic size, = (4 * area) / perimeter
     534              :     );
     535              : 
     536              :     Real64 CalcBeausoleilMorrisonMixedAssistedWall(Real64 DeltaTemp,     // [C] temperature difference between surface and air
     537              :                                                    Real64 Height,        // [m] characteristic size
     538              :                                                    Real64 SurfTemp,      // [C] surface temperature
     539              :                                                    Real64 SupplyAirTemp, // [C] temperature of supply air into zone
     540              :                                                    Real64 AirChangeRate  // [ACH] [1/hour] supply air ACH for zone
     541              :     );
     542              : 
     543              :     Real64 CalcBeausoleilMorrisonMixedAssistedWall(EnergyPlusData &state,
     544              :                                                    Real64 DeltaTemp, // [C] temperature difference between surface and air
     545              :                                                    Real64 Height,    // [m] characteristic size
     546              :                                                    Real64 SurfTemp,  // [C] surface temperature
     547              :                                                    int ZoneNum       // index of zone for messaging
     548              :     );
     549              : 
     550              :     Real64 CalcBeausoleilMorrisonMixedOpposingWall(Real64 DeltaTemp,     // [C] temperature difference between surface and air
     551              :                                                    Real64 Height,        // [m] characteristic size
     552              :                                                    Real64 SurfTemp,      // [C] surface temperature
     553              :                                                    Real64 SupplyAirTemp, // [C] temperature of supply air into zone
     554              :                                                    Real64 AirChangeRate  // [ACH] [1/hour] supply air ACH for zone
     555              :     );
     556              : 
     557              :     Real64 CalcBeausoleilMorrisonMixedOpposingWall(EnergyPlusData &state,
     558              :                                                    Real64 DeltaTemp, // [C] temperature difference between surface and air
     559              :                                                    Real64 Height,    // [m] characteristic size
     560              :                                                    Real64 SurfTemp,  // [C] surface temperature
     561              :                                                    int ZoneNum       // index of zone for messaging
     562              :     );
     563              : 
     564              :     Real64 CalcBeausoleilMorrisonMixedStableFloor(Real64 DeltaTemp,         // [C] temperature difference between surface and air
     565              :                                                   Real64 HydraulicDiameter, // [m] characteristic size, = (4 * area) / perimeter
     566              :                                                   Real64 SurfTemp,          // [C] surface temperature
     567              :                                                   Real64 SupplyAirTemp,     // [C] temperature of supply air into zone
     568              :                                                   Real64 AirChangeRate      // [ACH] [1/hour] supply air ACH for zone
     569              :     );
     570              : 
     571              :     Real64 CalcBeausoleilMorrisonMixedStableFloor(EnergyPlusData &state,
     572              :                                                   Real64 DeltaTemp,         // [C] temperature difference between surface and air
     573              :                                                   Real64 HydraulicDiameter, // [m] characteristic size, = (4 * area) / perimeter
     574              :                                                   Real64 SurfTemp,          // [C] surface temperature
     575              :                                                   int ZoneNum               // index of zone for messaging
     576              :     );
     577              : 
     578              :     Real64 CalcBeausoleilMorrisonMixedUnstableFloor(Real64 DeltaTemp,         // [C] temperature difference between surface and air
     579              :                                                     Real64 HydraulicDiameter, // [m] characteristic size, = (4 * area) / perimeter
     580              :                                                     Real64 SurfTemp,          // [C] surface temperature
     581              :                                                     Real64 SupplyAirTemp,     // [C] temperature of supply air into zone
     582              :                                                     Real64 AirChangeRate      // [ACH] [1/hour] supply air ACH for zone
     583              :     );
     584              : 
     585              :     Real64 CalcBeausoleilMorrisonMixedUnstableFloor(EnergyPlusData &state,
     586              :                                                     Real64 DeltaTemp,         // [C] temperature difference between surface and air
     587              :                                                     Real64 HydraulicDiameter, // [m] characteristic size, = (4 * area) / perimeter
     588              :                                                     Real64 SurfTemp,          // [C] surface temperature
     589              :                                                     int ZoneNum               // index of zone for messaging
     590              :     );
     591              : 
     592              :     Real64 CalcBeausoleilMorrisonMixedStableCeiling(Real64 DeltaTemp,         // [C] temperature difference between surface and air
     593              :                                                     Real64 HydraulicDiameter, // [m] characteristic size, = (4 * area) / perimeter
     594              :                                                     Real64 SurfTemp,          // [C] surface temperature
     595              :                                                     Real64 SupplyAirTemp,     // [C] temperature of supply air into zone
     596              :                                                     Real64 AirChangeRate      // [ACH] [1/hour] supply air ACH for zone
     597              :     );
     598              : 
     599              :     Real64 CalcBeausoleilMorrisonMixedStableCeiling(EnergyPlusData &state,
     600              :                                                     Real64 DeltaTemp,         // [C] temperature difference between surface and air
     601              :                                                     Real64 HydraulicDiameter, // [m] characteristic size, = (4 * area) / perimeter
     602              :                                                     Real64 SurfTemp,          // [C] surface temperature
     603              :                                                     int ZoneNum               // index of zone for messaging
     604              :     );
     605              : 
     606              :     Real64 CalcBeausoleilMorrisonMixedUnstableCeiling(Real64 DeltaTemp,         // [C] temperature difference between surface and air
     607              :                                                       Real64 HydraulicDiameter, // [m] characteristic size, = (4 * area) / perimeter
     608              :                                                       Real64 SurfTemp,          // [C] surface temperature
     609              :                                                       Real64 SupplyAirTemp,     // [C] temperature of supply air into zone
     610              :                                                       Real64 AirChangeRate      // [ACH] [1/hour] supply air ACH for zone
     611              :     );
     612              : 
     613              :     Real64 CalcBeausoleilMorrisonMixedUnstableCeiling(EnergyPlusData &state,
     614              :                                                       Real64 DeltaTemp,         // [C] temperature difference between surface and air
     615              :                                                       Real64 HydraulicDiameter, // [m] characteristic size, = (4 * area) / perimeter
     616              :                                                       Real64 SurfTemp,          // [C] surface temperature
     617              :                                                       int ZoneNum               // index of zone for messaging
     618              :     );
     619              : 
     620              :     Real64 CalcFohannoPolidoriVerticalWall(Real64 DeltaTemp, // [C] temperature difference between surface and air
     621              :                                            Real64 Height,    // [m] characteristic size, height of zone
     622              :                                            Real64 SurfTemp,  // [C] surface temperature
     623              :                                            Real64 QdotConv   // [W/m2] heat flux rate for rayleigh #
     624              :     );
     625              : 
     626              :     Real64 CallCalcFohannoPolidoriVerticalWall(EnergyPlusData &state,
     627              :                                                Real64 DeltaTemp, // [C] temperature difference between surface and air
     628              :                                                Real64 Height,    // [m] characteristic size, height of zone
     629              :                                                Real64 SurfTemp,  // [C] surface temperature
     630              :                                                Real64 QdotConv,  // [W/m2] heat flux rate for rayleigh #
     631              :                                                int SurfNum       // for messages
     632              :     );
     633              : 
     634              :     Real64 CalcKaradagChilledCeiling(Real64 DeltaTemp); // [C] temperature difference between surface and air
     635              : 
     636              :     Real64 CalcGoldsteinNovoselacCeilingDiffuserWindow(Real64 AirSystemFlowRate,        // [m3/s] air system flow rate
     637              :                                                        Real64 ZoneExtPerimLength,       // [m] length of zone perimeter with exterior walls
     638              :                                                        Real64 WindWallRatio,            // [ ] fraction of window area to wall area for zone
     639              :                                                        IntConvWinLoc WindowLocationType // index for location types
     640              :     );
     641              : 
     642              :     Real64 CalcGoldsteinNovoselacCeilingDiffuserWindow(EnergyPlusData &state,
     643              :                                                        Real64 ZoneExtPerimLength,        // [m] length of zone perimeter with exterior walls
     644              :                                                        Real64 WindWallRatio,             // [ ] fraction of window area to wall area for zone
     645              :                                                        IntConvWinLoc WindowLocationType, // index for location types
     646              :                                                        int ZoneNum                       // for messages
     647              :     );
     648              : 
     649              :     Real64 CalcGoldsteinNovoselacCeilingDiffuserWall(Real64 AirSystemFlowRate,        // [m3/s] air system flow rate
     650              :                                                      Real64 ZoneExtPerimLength,       // [m] length of zone perimeter with exterior walls
     651              :                                                      IntConvWinLoc WindowLocationType // index for location types
     652              :     );
     653              : 
     654              :     Real64 CalcGoldsteinNovoselacCeilingDiffuserWall(EnergyPlusData &state,
     655              :                                                      Real64 ZoneExtPerimLength,        // [m] length of zone perimeter with exterior walls
     656              :                                                      IntConvWinLoc WindowLocationType, // index for location types
     657              :                                                      int ZoneNum                       // for messages
     658              :     );
     659              : 
     660              :     Real64 CalcGoldsteinNovoselacCeilingDiffuserFloor(Real64 AirSystemFlowRate, // [m3/s] air system flow rate
     661              :                                                       Real64 ZoneExtPerimLength // [m] length of zone perimeter with exterior walls
     662              :     );
     663              : 
     664              :     Real64 CalcGoldsteinNovoselacCeilingDiffuserFloor(EnergyPlusData &state,
     665              :                                                       Real64 ZoneExtPerimLength, // [m] length of zone perimeter with exterior walls
     666              :                                                       int ZoneNum                // for messages
     667              :     );
     668              : 
     669              :     Real64 CalcSparrowWindward(Material::SurfaceRoughness roughness, Real64 FacePerimeter, Real64 FaceArea, Real64 WindAtZ);
     670              : 
     671              :     Real64 CalcSparrowWindward(
     672              :         EnergyPlusData &state, Material::SurfaceRoughness roughness, Real64 FacePerimeter, Real64 FaceArea, Real64 WindAtZ, int SurfNum);
     673              : 
     674              :     Real64 CalcSparrowLeeward(Material::SurfaceRoughness roughness, Real64 FacePerimeter, Real64 FaceArea, Real64 WindAtZ);
     675              : 
     676              :     Real64 CalcSparrowLeeward(
     677              :         EnergyPlusData &state, Material::SurfaceRoughness roughness, Real64 FacePerimeter, Real64 FaceArea, Real64 WindAtZ, int SurfNum);
     678              : 
     679              :     Real64 CalcMoWITTNatural(Real64 DeltaTemp);
     680              : 
     681              :     Real64 CalcMoWITTForcedWindward(Real64 WindAtZ);
     682              : 
     683              :     Real64 CalcMoWITTForcedLeeward(Real64 WindAtZ);
     684              : 
     685              :     Real64 CalcMoWITTWindward(Real64 DeltaTemp, Real64 WindAtZ);
     686              : 
     687              :     Real64 CalcMoWITTLeeward(Real64 DeltaTemp, Real64 WindAtZ);
     688              : 
     689              :     Real64 CalcDOE2Forced(Real64 SurfaceTemp, Real64 AirTemp, Real64 CosineTilt, Real64 HfSmooth, Material::SurfaceRoughness roughness);
     690              : 
     691              :     Real64 CalcDOE2Windward(Real64 SurfaceTemp, Real64 AirTemp, Real64 CosineTilt, Real64 WindAtZ, Material::SurfaceRoughness roughness);
     692              : 
     693              :     Real64 CalcDOE2Leeward(Real64 SurfaceTemp, Real64 AirTemp, Real64 CosineTilt, Real64 WindAtZ, Material::SurfaceRoughness roughness);
     694              : 
     695              :     Real64 CalcNusseltJurges(Real64 WindAtZ);
     696              : 
     697              :     Real64 CalcMcAdams(Real64 WindAtZ);
     698              : 
     699              :     Real64 CalcMitchell(Real64 WindAtZ, Real64 LengthScale);
     700              : 
     701              :     Real64 CalcMitchell(EnergyPlusData &state, Real64 WindAtZ, Real64 LengthScale, int SurfNum);
     702              : 
     703              :     Real64 CalcBlockenWindward(EnergyPlusData &state,
     704              :                                Real64 WindAt10m,
     705              :                                Real64 WindDir,     // Wind direction measured clockwise from geographic North
     706              :                                Real64 SurfAzimuth, // or Facing, Direction the surface outward normal faces (degrees)
     707              :                                int SurfNum);
     708              : 
     709              :     Real64 CalcWindSurfaceTheta(Real64 const WindDir, Real64 const SurfAzimuth);
     710              : 
     711              :     Real64 CalcEmmelVertical(Real64 WindAt10m,
     712              :                              Real64 WindDir,      // Wind direction measured clockwise from geographic North
     713              :                              Real64 SurfAzimuth); // or Facing, Direction the surface outward normal faces (degrees)
     714              : 
     715              :     Real64 CalcEmmelRoof(Real64 WindAt10m,
     716              :                          Real64 WindDir,                 // Wind direction measured clockwise from geographic North
     717              :                          Real64 LongAxisOutwardAzimuth); // or Facing, Direction the surface outward normal faces (degrees)
     718              : 
     719              :     Real64 CalcClearRoof(EnergyPlusData &state,
     720              :                          Real64 AirTemp,
     721              :                          Real64 WindAtZ,
     722              :                          Real64 WindDirect, // Wind direction measured clockwise from geographic North
     723              :                          Real64 RoofArea,
     724              :                          Real64 RoofPerimeter,
     725              :                          Material::SurfaceRoughness roughness);
     726              : 
     727              :     Real64 CalcClearRoof(EnergyPlusData &state,
     728              :                          int SurfNum,
     729              :                          Real64 SurfTemp,
     730              :                          Real64 AirTemp,
     731              :                          Real64 WindAtZ,
     732              :                          Real64 WindDirect, // Wind direction measured clockwise from geographic North
     733              :                          Real64 RoofArea,
     734              :                          Real64 RoofPerimeter);
     735              : 
     736              :     void CalcASTMC1340ConvCoeff(EnergyPlusData &state,
     737              :                                 int const SurfNum,                  // surface number for which coefficients are being calculated
     738              :                                 Real64 const SurfaceTemperature,    // Temperature of surface for evaluation of HcIn
     739              :                                 Real64 const ZoneMeanAirTemperature // Mean Air Temperature of Zone
     740              :     );
     741              : 
     742              :     Real64
     743              :     CalcASTMC1340ConvCoeff(EnergyPlusData &state, int const SurfNum, Real64 const Tsurf, Real64 const Tair, Real64 const Vair, Real64 const Tilt);
     744              : 
     745              :     SurfOrientation GetSurfConvOrientation(Real64 const Tilt);
     746              : } // namespace Convect
     747              : 
     748              : struct ConvectionCoefficientsData : BaseGlobalStruct
     749              : {
     750              : 
     751              :     bool GetUserSuppliedConvectionCoeffs = true;  // Get user input first call for Init
     752              :     Real64 CubeRootOfOverallBuildingVolume = 0.0; // building meta data. cube root of the volume of all the zones
     753              :     Real64 RoofLongAxisOutwardAzimuth = 0.0;      // roof surfaces meta data. outward normal azimuth for longest roof edge
     754              : 
     755              :     int BMMixedAssistedWallErrorIDX1 = 0;
     756              :     int BMMixedAssistedWallErrorIDX2 = 0;
     757              :     int BMMixedOpposingWallErrorIDX1 = 0;
     758              :     int BMMixedOpposingWallErrorIDX2 = 0;
     759              :     int BMMixedStableFloorErrorIDX1 = 0;
     760              :     int BMMixedStableFloorErrorIDX2 = 0;
     761              :     int BMMixedUnstableFloorErrorIDX1 = 0;
     762              :     int BMMixedUnstableFloorErrorIDX2 = 0;
     763              :     int BMMixedStableCeilingErrorIDX1 = 0;
     764              :     int BMMixedStableCeilingErrorIDX2 = 0;
     765              :     int BMMixedUnstableCeilingErrorIDX1 = 0;
     766              :     int BMMixedUnstableCeilingErrorIDX2 = 0;
     767              :     int AHUnstableHorizontalErrorIDX = 0;
     768              :     int AHStableHorizontalErrorIDX = 0;
     769              :     int AHVerticalWallErrorIDX = 0;
     770              :     int CalcFohannoPolidoriVerticalWallErrorIDX = 0;
     771              :     int CalcGoldsteinNovoselacCeilingDiffuserWindowErrorIDX1 = 0;
     772              :     int CalcGoldsteinNovoselacCeilingDiffuserWindowErrorIDX2 = 0;
     773              :     int CalcGoldsteinNovoselacCeilingDiffuserWallErrorIDX1 = 0;
     774              :     int CalcGoldsteinNovoselacCeilingDiffuserWallErrorIDX2 = 0;
     775              :     int CalcGoldsteinNovoselacCeilingDiffuserFloorErrorIDX = 0;
     776              :     int CalcSparrowWindwardErrorIDX = 0;
     777              :     int CalcSparrowLeewardErrorIDX = 0;
     778              :     int CalcBlockenWindwardErrorIDX = 0;
     779              :     int CalcClearRoofErrorIDX = 0;
     780              :     int CalcMitchellErrorIDX = 0;
     781              : 
     782              :     // move random statics so they can be reset for unit tests
     783              :     bool NodeCheck = true;
     784              :     bool ActiveSurfaceCheck = true;
     785              :     bool MyEnvirnFlag = true;
     786              :     bool FirstRoofSurf = true;
     787              : 
     788              :     // Object Data
     789              :     Convect::IntAdaptiveConvAlgo intAdaptiveConvAlgo; // stores rules for Hc model equations
     790              :     Convect::ExtAdaptiveConvAlgo extAdaptiveConvAlgo;
     791              :     Array1D<Convect::HcIntUserCurve> hcIntUserCurve;
     792              :     Array1D<Convect::HcExtUserCurve> hcExtUserCurve;
     793              : 
     794         2126 :     void init_constant_state([[maybe_unused]] EnergyPlusData &state) override
     795              :     {
     796         2126 :     }
     797              : 
     798         1152 :     void init_state([[maybe_unused]] EnergyPlusData &state) override
     799              :     {
     800         1152 :     }
     801              : 
     802         2100 :     void clear_state() override
     803              :     {
     804         2100 :         new (this) ConvectionCoefficientsData();
     805         2100 :     }
     806              : };
     807              : 
     808              : } // namespace EnergyPlus
     809              : 
     810              : #endif
        

Generated by: LCOV version 2.0-1