Skip to content

Commit

Permalink
watercoils
Browse files Browse the repository at this point in the history
  • Loading branch information
brianlball committed Aug 27, 2020
1 parent 1e3870f commit 97b56db
Show file tree
Hide file tree
Showing 27 changed files with 2,615 additions and 2,757 deletions.
1 change: 1 addition & 0 deletions src/EnergyPlus/Data/CommonIncludes.hh
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
#include <EnergyPlus/AirLoopHVACDOAS.hh>
#include <EnergyPlus/BaseboardElectric.hh>
#include <EnergyPlus/BaseboardRadiator.hh>
#include <EnergyPlus/WaterCoils.hh>
#include <EnergyPlus/WaterManager.hh>
#include <EnergyPlus/WaterThermalTanks.hh>
#include <EnergyPlus/WaterToAirHeatPump.hh>
Expand Down
2 changes: 2 additions & 0 deletions src/EnergyPlus/Data/EnergyPlusData.cc
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ namespace EnergyPlus {
this->dataBaseboardRadiator = std::unique_ptr<BaseboardRadiatorData>(new BaseboardRadiatorData);
this->dataBaseboardElectric = std::unique_ptr<BaseboardElectricData>(new BaseboardElectricData);

this->dataWaterCoils = std::unique_ptr<WaterCoilsData>(new WaterCoilsData);
this->dataWaterManager = std::unique_ptr<WaterManagerData>(new WaterManagerData);
this->dataWaterThermalTanks = std::unique_ptr<WaterThermalTanksData>(new WaterThermalTanksData);
this->dataWaterToAirHeatPump = std::unique_ptr<WaterToAirHeatPumpData>(new WaterToAirHeatPumpData);
Expand Down Expand Up @@ -105,6 +106,7 @@ namespace EnergyPlus {
pipes.clear_state();
dataPlantChillers.clear_state();

dataWaterCoils->clear_state();
dataWaterManager->clear_state();
dataWaterThermalTanks->clear_state();
dataWaterToAirHeatPump->clear_state();
Expand Down
2 changes: 2 additions & 0 deletions src/EnergyPlus/Data/EnergyPlusData.hh
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ namespace EnergyPlus {
struct BaseboardRadiatorData;
struct BaseboardElectricData;

struct WaterCoilsData;
struct WaterManagerData;
struct WaterThermalTanksData;
struct WaterToAirHeatPumpData;
Expand Down Expand Up @@ -141,6 +142,7 @@ namespace EnergyPlus {

IOFiles files;

std::unique_ptr<WaterCoilsData> dataWaterCoils;
std::unique_ptr<WaterManagerData> dataWaterManager;
std::unique_ptr<WaterThermalTanksData> dataWaterThermalTanks;
std::unique_ptr<WaterToAirHeatPumpData> dataWaterToAirHeatPump;
Expand Down
33 changes: 14 additions & 19 deletions src/EnergyPlus/FanCoilUnits.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1388,11 +1388,6 @@ namespace FanCoilUnits {
using Psychrometrics::PsyHFnTdbW;
using ReportSizingManager::ReportSizingOutput;
using ReportSizingManager::RequestSizing;
using WaterCoils::GetCoilWaterInletNode;
using WaterCoils::GetCoilWaterOutletNode;
using WaterCoils::GetWaterCoilIndex;
using WaterCoils::SetCoilDesFlow;
using WaterCoils::WaterCoil;

// SUBROUTINE PARAMETER DEFINITIONS:
static std::string const RoutineName("SizeFanCoilUnit: "); // include trailing blank space
Expand Down Expand Up @@ -1755,14 +1750,14 @@ namespace FanCoilUnits {
FanCoil(FanCoilNum).MaxHotWaterVolFlow);
}
} else {
CoilWaterInletNode = GetCoilWaterInletNode(state, "Coil:Heating:Water", FanCoil(FanCoilNum).HCoilName, ErrorsFound);
CoilWaterOutletNode = GetCoilWaterOutletNode(state, "Coil:Heating:Water", FanCoil(FanCoilNum).HCoilName, ErrorsFound);
CoilWaterInletNode = WaterCoils::GetCoilWaterInletNode(state, "Coil:Heating:Water", FanCoil(FanCoilNum).HCoilName, ErrorsFound);
CoilWaterOutletNode = WaterCoils::GetCoilWaterOutletNode(state, "Coil:Heating:Water", FanCoil(FanCoilNum).HCoilName, ErrorsFound);
if (IsAutoSize) {
PltSizHeatNum = MyPlantSizingIndex(
"Coil:Heating:Water", FanCoil(FanCoilNum).HCoilName, CoilWaterInletNode, CoilWaterOutletNode, ErrorsFound);
CoilNum = GetWaterCoilIndex(state, "COIL:HEATING:WATER", FanCoil(FanCoilNum).HCoilName, ErrorsFound);
if (WaterCoil(CoilNum).UseDesignWaterDeltaTemp) {
WaterCoilSizDeltaT = WaterCoil(CoilNum).DesignWaterDeltaTemp;
CoilNum = WaterCoils::GetWaterCoilIndex(state, "COIL:HEATING:WATER", FanCoil(FanCoilNum).HCoilName, ErrorsFound);
if (state.dataWaterCoils->WaterCoil(CoilNum).UseDesignWaterDeltaTemp) {
WaterCoilSizDeltaT = state.dataWaterCoils->WaterCoil(CoilNum).DesignWaterDeltaTemp;
DoWaterCoilSizing = true;
} else {
if (PltSizHeatNum > 0) {
Expand Down Expand Up @@ -1914,13 +1909,13 @@ namespace FanCoilUnits {
CoolingCoilName = FanCoil(FanCoilNum).CCoilName;
CoolingCoilType = FanCoil(FanCoilNum).CCoilType;
}
CoilWaterInletNode = GetCoilWaterInletNode(state, CoolingCoilType, CoolingCoilName, ErrorsFound);
CoilWaterOutletNode = GetCoilWaterOutletNode(state, CoolingCoilType, CoolingCoilName, ErrorsFound);
CoilWaterInletNode = WaterCoils::GetCoilWaterInletNode(state, CoolingCoilType, CoolingCoilName, ErrorsFound);
CoilWaterOutletNode = WaterCoils::GetCoilWaterOutletNode(state, CoolingCoilType, CoolingCoilName, ErrorsFound);
if (IsAutoSize) {
PltSizCoolNum = MyPlantSizingIndex(CoolingCoilType, CoolingCoilName, CoilWaterInletNode, CoilWaterOutletNode, ErrorsFound);
CoilNum = GetWaterCoilIndex(state, CoolingCoilType, CoolingCoilName, ErrorsFound);
if (WaterCoil(CoilNum).UseDesignWaterDeltaTemp) {
WaterCoilSizDeltaT = WaterCoil(CoilNum).DesignWaterDeltaTemp;
CoilNum = WaterCoils::GetWaterCoilIndex(state, CoolingCoilType, CoolingCoilName, ErrorsFound);
if (state.dataWaterCoils->WaterCoil(CoilNum).UseDesignWaterDeltaTemp) {
WaterCoilSizDeltaT = state.dataWaterCoils->WaterCoil(CoilNum).DesignWaterDeltaTemp;
DoWaterCoilSizing = true;
} else {
if (PltSizCoolNum > 0) {
Expand Down Expand Up @@ -2116,11 +2111,11 @@ namespace FanCoilUnits {
CoolingCoilType = FanCoil(FanCoilNum).CCoilType;
}
if (ZoneSizingRunDone) {
SetCoilDesFlow(state, CoolingCoilType, CoolingCoilName, FinalZoneSizing(CurZoneEqNum).DesCoolVolFlow, ErrorsFound);
SetCoilDesFlow(state, FanCoil(FanCoilNum).HCoilType, FanCoil(FanCoilNum).HCoilName, FinalZoneSizing(CurZoneEqNum).DesHeatVolFlow, ErrorsFound);
WaterCoils::SetCoilDesFlow(state, CoolingCoilType, CoolingCoilName, FinalZoneSizing(CurZoneEqNum).DesCoolVolFlow, ErrorsFound);
WaterCoils::SetCoilDesFlow(state, FanCoil(FanCoilNum).HCoilType, FanCoil(FanCoilNum).HCoilName, FinalZoneSizing(CurZoneEqNum).DesHeatVolFlow, ErrorsFound);
} else {
SetCoilDesFlow(state, CoolingCoilType, CoolingCoilName, FanCoil(FanCoilNum).MaxAirVolFlow, ErrorsFound);
SetCoilDesFlow(state, FanCoil(FanCoilNum).HCoilType, FanCoil(FanCoilNum).HCoilName, FanCoil(FanCoilNum).MaxAirVolFlow, ErrorsFound);
WaterCoils::SetCoilDesFlow(state, CoolingCoilType, CoolingCoilName, FanCoil(FanCoilNum).MaxAirVolFlow, ErrorsFound);
WaterCoils::SetCoilDesFlow(state, FanCoil(FanCoilNum).HCoilType, FanCoil(FanCoilNum).HCoilName, FanCoil(FanCoilNum).MaxAirVolFlow, ErrorsFound);
}
if (CurZoneEqNum > 0) {
ZoneEqSizing(CurZoneEqNum).MaxHWVolFlow = FanCoil(FanCoilNum).MaxHotWaterVolFlow;
Expand Down
58 changes: 29 additions & 29 deletions src/EnergyPlus/FaultsManager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -908,12 +908,12 @@ namespace FaultsManager {
UtilityRoutines::SameString(SELECT_CASE_VAR, "Coil:Cooling:Water") ||
UtilityRoutines::SameString(SELECT_CASE_VAR, "Coil:Cooling:Water:Detailedgeometry")) {
// Read in coil input if not done yet
if (WaterCoils::GetWaterCoilsInputFlag) {
if (state.dataWaterCoils->GetWaterCoilsInputFlag) {
WaterCoils::GetWaterCoilInput(state);
WaterCoils::GetWaterCoilsInputFlag = false;
state.dataWaterCoils->GetWaterCoilsInputFlag = false;
}
// Check the coil name and coil type
int CoilNum = UtilityRoutines::FindItemInList(FaultsCoilSATSensor(jFault_CoilSAT).CoilName, WaterCoils::WaterCoil);
int CoilNum = UtilityRoutines::FindItemInList(FaultsCoilSATSensor(jFault_CoilSAT).CoilName, state.dataWaterCoils->WaterCoil);
if (CoilNum <= 0) {
ShowSevereError(cFaultCurrentObject + " = \"" + cAlphaArgs(1) + "\" invalid " + cAlphaFieldNames(5) + " = \"" +
cAlphaArgs(5) + "\" not found.");
Expand Down Expand Up @@ -946,7 +946,7 @@ namespace FaultsManager {
HVACControllers::ControllerProps(ControlNum).FaultyCoilSATIndex = jFault_CoilSAT;

// Check whether the controller match the coil
if (HVACControllers::ControllerProps(ControlNum).SensedNode != WaterCoils::WaterCoil(CoilNum).AirOutletNodeNum) {
if (HVACControllers::ControllerProps(ControlNum).SensedNode != state.dataWaterCoils->WaterCoil(CoilNum).AirOutletNodeNum) {
ShowSevereError(cFaultCurrentObject + " = \"" + cAlphaArgs(1) + "\" invalid " + cAlphaFieldNames(6) + " = \"" +
cAlphaArgs(6) + "\" does not match " + cAlphaFieldNames(5) + " = \"" + cAlphaArgs(5));
ErrorsFound = true;
Expand Down Expand Up @@ -1707,88 +1707,88 @@ namespace FaultsManager {
// Coil check and link
{
// Obtains and Allocates WaterCoil related parameters from input file
if (WaterCoils::GetWaterCoilsInputFlag) {
if (state.dataWaterCoils->GetWaterCoilsInputFlag) {
WaterCoils::GetWaterCoilInput(state);
WaterCoils::GetWaterCoilsInputFlag = false;
state.dataWaterCoils->GetWaterCoilsInputFlag = false;
}

// Check the coil name and type
int CoilNum = UtilityRoutines::FindItemInList(FouledCoils(jFault_FoulingCoil).FouledCoilName, WaterCoils::WaterCoil);
int CoilNum = UtilityRoutines::FindItemInList(FouledCoils(jFault_FoulingCoil).FouledCoilName, state.dataWaterCoils->WaterCoil);
if (CoilNum <= 0) {
ShowSevereError(cFaultCurrentObject + " = \"" + cAlphaArgs(1) + "\". Referenced Coil named \"" +
FouledCoils(jFault_FoulingCoil).FouledCoilName + "\" was not found.");
ErrorsFound = true;
} else {
// Coil is found: check if the right type
if ( (WaterCoils::WaterCoil(CoilNum).WaterCoilType_Num == WaterCoils::WaterCoil_SimpleHeating) ||
(WaterCoils::WaterCoil(CoilNum).WaterCoilType_Num == WaterCoils::WaterCoil_Cooling) )
if ( (state.dataWaterCoils->WaterCoil(CoilNum).WaterCoilType_Num == state.dataWaterCoils->WaterCoil_SimpleHeating) ||
(state.dataWaterCoils->WaterCoil(CoilNum).WaterCoilType_Num == state.dataWaterCoils->WaterCoil_Cooling) )
{
// Link the Coil with the fault model
WaterCoils::WaterCoil(CoilNum).FaultyCoilFoulingFlag = true;
WaterCoils::WaterCoil(CoilNum).FaultyCoilFoulingIndex = jFault_FoulingCoil;
state.dataWaterCoils->WaterCoil(CoilNum).FaultyCoilFoulingFlag = true;
state.dataWaterCoils->WaterCoil(CoilNum).FaultyCoilFoulingIndex = jFault_FoulingCoil;

FouledCoils(jFault_FoulingCoil).FouledCoiledType = WaterCoils::WaterCoil(CoilNum).WaterCoilType_Num;
FouledCoils(jFault_FoulingCoil).FouledCoiledType = state.dataWaterCoils->WaterCoil(CoilNum).WaterCoilType_Num;
FouledCoils(jFault_FoulingCoil).FouledCoilNum = CoilNum;

SetupOutputVariable("Coil Fouling Factor",
OutputProcessor::Unit::K_W,
WaterCoils::WaterCoil(CoilNum).FaultyCoilFoulingFactor,
state.dataWaterCoils->WaterCoil(CoilNum).FaultyCoilFoulingFactor,
"System",
"Average",
WaterCoils::WaterCoil(CoilNum).Name);
state.dataWaterCoils->WaterCoil(CoilNum).Name);

// Coil:Cooling:Water doesn't report UA because it's not variable,
// but here, it's useful since we do change it via fouling, so report it
if (WaterCoils::WaterCoil(CoilNum).WaterCoilType_Num == WaterCoils::WaterCoil_Cooling) {
if (state.dataWaterCoils->WaterCoil(CoilNum).WaterCoilType_Num == state.dataWaterCoils->WaterCoil_Cooling) {
SetupOutputVariable("Cooling Coil Total U Factor Times Area Value",
OutputProcessor::Unit::W_K,
WaterCoils::WaterCoil(CoilNum).UACoilTotal,
state.dataWaterCoils->WaterCoil(CoilNum).UACoilTotal,
"System",
"Average",
WaterCoils::WaterCoil(CoilNum).Name);
state.dataWaterCoils->WaterCoil(CoilNum).Name);

SetupOutputVariable("Cooling Coil External U Factor Times Area Value",
OutputProcessor::Unit::W_K,
WaterCoils::WaterCoil(CoilNum).UACoilExternal,
state.dataWaterCoils->WaterCoil(CoilNum).UACoilExternal,
"System",
"Average",
WaterCoils::WaterCoil(CoilNum).Name);
state.dataWaterCoils->WaterCoil(CoilNum).Name);

SetupOutputVariable("Cooling Coil Internal U Factor Times Area Value",
OutputProcessor::Unit::W_K,
WaterCoils::WaterCoil(CoilNum).UACoilInternal,
state.dataWaterCoils->WaterCoil(CoilNum).UACoilInternal,
"System",
"Average",
WaterCoils::WaterCoil(CoilNum).Name);
state.dataWaterCoils->WaterCoil(CoilNum).Name);

SetupOutputVariable("Cooling Coil Total U Factor Times Area Value Before Fouling",
OutputProcessor::Unit::W_K,
WaterCoils::WaterCoil(CoilNum).OriginalUACoilVariable,
state.dataWaterCoils->WaterCoil(CoilNum).OriginalUACoilVariable,
"System",
"Average",
WaterCoils::WaterCoil(CoilNum).Name);
state.dataWaterCoils->WaterCoil(CoilNum).Name);

SetupOutputVariable("Cooling Coil External U Factor Times Area Value Before Fouling",
OutputProcessor::Unit::W_K,
WaterCoils::WaterCoil(CoilNum).OriginalUACoilExternal,
state.dataWaterCoils->WaterCoil(CoilNum).OriginalUACoilExternal,
"System",
"Average",
WaterCoils::WaterCoil(CoilNum).Name);
state.dataWaterCoils->WaterCoil(CoilNum).Name);

SetupOutputVariable("Cooling Coil Internal U Factor Times Area Value Before Fouling",
OutputProcessor::Unit::W_K,
WaterCoils::WaterCoil(CoilNum).OriginalUACoilInternal,
state.dataWaterCoils->WaterCoil(CoilNum).OriginalUACoilInternal,
"System",
"Average",
WaterCoils::WaterCoil(CoilNum).Name);
state.dataWaterCoils->WaterCoil(CoilNum).Name);

} else {
SetupOutputVariable("Heating Coil U Factor Times Area Value Before Fouling",
OutputProcessor::Unit::W_K,
WaterCoils::WaterCoil(CoilNum).OriginalUACoilVariable,
state.dataWaterCoils->WaterCoil(CoilNum).OriginalUACoilVariable,
"System",
"Average",
WaterCoils::WaterCoil(CoilNum).Name);
state.dataWaterCoils->WaterCoil(CoilNum).Name);
}
} else {
ShowSevereError(cFaultCurrentObject + " = \"" + cAlphaArgs(1) + "\" invalid "
Expand Down
Loading

6 comments on commit 97b56db

@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.

global_water_to_air (brianlball) - x86_64-MacOS-10.15-clang-11.0.0: OK (2921 of 2921 tests passed, 0 test warnings)

Build Badge Test Badge

@nrel-bot-2
Copy link

Choose a reason for hiding this comment

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

global_water_to_air (brianlball) - x86_64-Linux-Ubuntu-18.04-gcc-7.5: OK (2960 of 2961 tests passed, 0 test warnings)

Messages:\n

  • 1 test had: EIO diffs.
  • 1 test had: ESO small diffs.
  • 1 test had: MTR small diffs.
  • 1 test had: Table big diffs.

Failures:\n

regression Test Summary

  • Passed: 735
  • Failed: 1

Build Badge Test Badge

@nrel-bot-2
Copy link

Choose a reason for hiding this comment

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

global_water_to_air (brianlball) - x86_64-Linux-Ubuntu-18.04-cppcheck: OK (0 of 0 tests passed, 0 test warnings)

Build Badge

@nrel-bot-2
Copy link

Choose a reason for hiding this comment

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

global_water_to_air (brianlball) - x86_64-Linux-Ubuntu-18.04-custom_check: OK (13 of 13 tests passed, 0 test warnings)

Build Badge

@nrel-bot-2
Copy link

Choose a reason for hiding this comment

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

global_water_to_air (brianlball) - x86_64-Linux-Ubuntu-18.04-gcc-7.5-UnitTestsCoverage-Debug: OK (1487 of 1487 tests passed, 0 test warnings)

Build Badge Test Badge Coverage Badge

@nrel-bot-2
Copy link

Choose a reason for hiding this comment

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

global_water_to_air (brianlball) - x86_64-Linux-Ubuntu-18.04-gcc-7.5-IntegrationCoverage-Debug: OK (721 of 721 tests passed, 0 test warnings)

Build Badge Test Badge Coverage Badge

Please sign in to comment.