Skip to content

Commit

Permalink
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into Glo…
Browse files Browse the repository at this point in the history
…balHVACManager
  • Loading branch information
dareumnam committed Mar 17, 2021
2 parents 4aba421 + 4e638d7 commit 6b764f5
Show file tree
Hide file tree
Showing 2 changed files with 113 additions and 2 deletions.
7 changes: 6 additions & 1 deletion src/EnergyPlus/HeatBalFiniteDiffManager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -630,8 +630,11 @@ namespace HeatBalFiniteDiffManager {
}

for (ConstrNum = 1; ConstrNum <= state.dataHeatBal->TotConstructs; ++ConstrNum) {
// Need to skip window constructions and eventually window materials
// Need to skip window constructions, IRT, air wall and construction not in use.
if (state.dataConstruction->Construct(ConstrNum).TypeIsWindow) continue;
if (state.dataConstruction->Construct(ConstrNum).TypeIsIRT) continue;
if (state.dataConstruction->Construct(ConstrNum).TypeIsAirBoundary) continue;
if (!state.dataConstruction->Construct(ConstrNum).IsUsed) continue;

ConstructFD(ConstrNum).Name.allocate(state.dataConstruction->Construct(ConstrNum).TotLayers);
ConstructFD(ConstrNum).Thickness.allocate(state.dataConstruction->Construct(ConstrNum).TotLayers);
Expand Down Expand Up @@ -1274,6 +1277,8 @@ namespace HeatBalFiniteDiffManager {

if (state.dataConstruction->Construct(ThisNum).TypeIsWindow) continue;
if (state.dataConstruction->Construct(ThisNum).TypeIsIRT) continue;
if (state.dataConstruction->Construct(ThisNum).TypeIsAirBoundary) continue;
if (!state.dataConstruction->Construct(ThisNum).IsUsed) continue;

static constexpr auto Format_700(" Construction CondFD,{},{},{},{},{:.6R}\n");
print(state.files.eio,
Expand Down
108 changes: 107 additions & 1 deletion tst/EnergyPlus/unit/HeatBalFiniteDiffManager.unit.cc
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,19 @@
#include <gtest/gtest.h>

// EnergyPlus Headers
#include <EnergyPlus/Construction.hh>
#include <EnergyPlus/Data/EnergyPlusData.hh>
#include <EnergyPlus/DataHeatBalSurface.hh>
#include <EnergyPlus/HeatBalFiniteDiffManager.hh>
#include <EnergyPlus/HeatBalanceManager.hh>
#include <EnergyPlus/Material.hh>
#include <EnergyPlus/PhaseChangeModeling/HysteresisModel.hh>

#include "Fixtures/EnergyPlusFixture.hh"

using namespace EnergyPlus::HeatBalFiniteDiffManager;
using namespace EnergyPlus::HeatBalanceManager;


namespace EnergyPlus {

Expand Down Expand Up @@ -188,7 +192,7 @@ TEST_F(EnergyPlusFixture, HeatBalFiniteDiffManager_CalcNodeHeatFluxTest)
}

TEST_F(EnergyPlusFixture, HeatBalFiniteDiffManager_adjustPropertiesForPhaseChange)
{
{
// create a single PCM object in the input and process it
std::string const idf_objects = delimited_string(
{" MaterialProperty:PhaseChangeHysteresis,", " PCMNAME, !- Name",
Expand Down Expand Up @@ -233,4 +237,106 @@ TEST_F(EnergyPlusFixture, HeatBalFiniteDiffManager_adjustPropertiesForPhaseChang
SurfaceFD.deallocate();
}



TEST_F(EnergyPlusFixture, HeatBalFiniteDiffManager_skipNotUsedConstructionAndAirLayer)
{
bool ErrorsFound(false);
int thisConstructNum;
int thisTotalLayers;
// create three construction objects with one object not in use and another object assigned to surfaces, and one object as air wall.
std::string const idf_objects = delimited_string(
{
"Material,",
" MAT - CC05 4 HW CONCRETE, !- Name",
" Rough, !- Roughness",
" 0.1016, !- Thickness{ m }",
" 1.311, !- Conductivity{ W / m - K }",
" 2240, !- Density{ kg / m3 }",
" 836.800000000001, !- Specific Heat{ J / kg - K }",
" 0.9, !- Thermal Absorptance",
" 0.85, !- Solar Absorptance",
" 0.85; !- Visible Absorptance",
"Material:AirGap,",
" F05 Ceiling air space resistance, !- Name",
" 0.18; !- Thermal Resistance{ m2 - K / W }",
"Material:NoMass,",
" CP02 CARPET PAD, !- Name",
" Smooth, !- Roughness",
" 0.1, !- Thermal Resistance{ m2 - K / W }",
" 0.9, !- Thermal Absorptance",
" 0.8, !- Solar Absorptance",
" 0.8; !- Visible Absorptance",

"Material,",
" F16 Acoustic tile, !- Name",
" MediumSmooth, !- Roughness",
" 0.0191, !- Thickness{ m }",
" 0.06, !- Conductivity{ W / m - K }",
" 368, !- Density{ kg / m3 }",
" 590.000000000002, !- Specific Heat{ J / kg - K }",
" 0.9, !- Thermal Absorptance",
" 0.3, !- Solar Absorptance",
" 0.3; !- Visible Absorptance",

"Material,",
" M11 100mm lightweight concrete, !- Name",
" MediumRough, !- Roughness",
" 0.1016, !- Thickness{ m }",
" 0.53, !- Conductivity{ W / m - K }",
" 1280, !- Density{ kg / m3 }",
" 840.000000000002, !- Specific Heat{ J / kg - K }",
" 0.9, !- Thermal Absorptance",
" 0.5, !- Solar Absorptance",
" 0.5; !- Visible Absorptance",

"Construction,",
" ExtSlabCarpet 4in ClimateZone 1 - 8, !- Name",
" MAT - CC05 4 HW CONCRETE, !- Outside Layer",
" CP02 CARPET PAD; !- Layer 2",
"Construction,",
" Interior Floor, !- Name",
" F16 Acoustic tile, !- Outside Layer",
" F05 Ceiling air space resistance, !- Layer 2",
" M11 100mm lightweight concrete; !- Layer 3",
"Construction:AirBoundary,",
" Air Wall_ConstructionAirBoundary, !- Name",
" None, !- Air Exchange Method",
" 0; !- Simple Mixing Air Changes per Hour {1 / hr}",
"Output:Constructions,",
"Constructions;",
"Output:Constructions,",
"Materials;", });

ASSERT_TRUE(process_idf(idf_objects));

ErrorsFound = false;
GetMaterialData(*state, ErrorsFound); // read material data
EXPECT_FALSE(ErrorsFound); // expect no errors

ErrorsFound = false;
GetConstructData(*state, ErrorsFound); // read construction data
EXPECT_FALSE(ErrorsFound); // expect no errors

// allocate properties for construction objects when it is used or not for building surfaces in the model

state->dataConstruction->Construct(1).IsUsed=false;
state->dataConstruction->Construct(2).IsUsed = true;
state->dataConstruction->Construct(3).IsUsed = true;

//call the function for initialization of finite difference calculation
InitialInitHeatBalFiniteDiff(*state);

// check the values are correct
EXPECT_EQ(0, ConstructFD(1).Name.size());
EXPECT_EQ(3, ConstructFD(2).Name.size());
EXPECT_EQ(0, ConstructFD(3).Name.size());
EXPECT_EQ("F16 ACOUSTIC TILE", ConstructFD(2).Name(1));
EXPECT_EQ("F05 CEILING AIR SPACE RESISTANCE", ConstructFD(2).Name(2));
EXPECT_EQ("M11 100MM LIGHTWEIGHT CONCRETE", ConstructFD(2).Name(3));

// deallocate
ConstructFD.deallocate();
}

} // namespace EnergyPlus

1 comment on commit 6b764f5

@nrel-bot-3
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GlobalHVACManager (dareumnam) - x86_64-MacOS-10.15-clang-11.0.0: OK (3064 of 3065 tests passed, 0 test warnings)

Messages:\n

  • 1 test had: EIO diffs.
  • 1 test had: ESO big diffs.
  • 1 test had: SSZ big diffs.
  • 1 test had: ZSZ big diffs.
  • 1 test had: Table big diffs.

Failures:\n

regression Test Summary

  • Passed: 721
  • Failed: 1

Build Badge Test Badge

Please sign in to comment.