Skip to content

Commit

Permalink
Add support for new AirSys:ClgCtrl options
Browse files Browse the repository at this point in the history
These new options take into account the availability of
SetpointManagerWarmestTemperatureFlow.

WarmestResetFlowFirst -> Existing enum
Was mapped to SPM:Warmest. Update translator to map to
SPM:WarmestTemperatureFlow
Strategy = FlowFirst
Minimum Setpoint Temperature = AirSys:ClRstSupLow
Maximum Setpoint Temperature = AirSys:ClRstSupHi
Minimum Turndown Ratio = AirSys:DsgnAirFlowMin

WarmestResetTemperatureFirst -> New enum
Map to SPM:WarmestTemperatureFlow
Strategy = TemperatureFirst
Minimum Setpoint Temperature = AirSys:ClRstSupLow
Maximum Setpoint Temperature = AirSys:ClRstSupHi
Minimum Turndown Ratio = AirSys:DsgnAirFlowMin

Warmest -> New enum
Map to SPM:Warmest
Minimum Setpoint Temperature = AirSys:ClRstSupLow
Maximum Setpoint Temperature = AirSys:ClRstSupHi

[#79969370]
  • Loading branch information
kbenne committed Oct 31, 2014
1 parent 735188a commit 46ea06b
Showing 1 changed file with 55 additions and 10 deletions.
65 changes: 55 additions & 10 deletions openstudiocore/src/sdd/MapHVAC.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@
#include "../model/SetpointManagerSingleZoneReheat_Impl.hpp"
#include "../model/SetpointManagerScheduled.hpp"
#include "../model/SetpointManagerWarmest.hpp"
#include "../model/SetpointManagerWarmestTemperatureFlow.hpp"
#include "../model/SetpointManagerOutdoorAirReset.hpp"
#include "../model/ThermalZone.hpp"
#include "../model/ThermalZone_Impl.hpp"
Expand Down Expand Up @@ -1171,32 +1172,76 @@ boost::optional<openstudio::model::ModelObject> ReverseTranslator::translateAirS
spm.setMinimumSupplyAirTemperature(clgDsgnSupAirTemp);
}
}
else if( istringEqual(clgCtrlElement.text().toStdString(),"WarmestResetFlowFirst") ||
istringEqual(clgCtrlElement.text().toStdString(),"WarmestReset") )
else if( istringEqual(clgCtrlElement.text().toStdString(),"WarmestResetFlowFirst") )
{
if( istringEqual(clgCtrlElement.text().toStdString(),"WarmestReset") )
{
LOG(Warn,nameElement.text().toStdString() << " defines WarmestReset control option, but this option is not yet supported");
model::SetpointManagerWarmestTemperatureFlow spm(model);
spm.setStrategy("FlowFirst");
deckSPM = spm;
spm.addToNode(supplyOutletNode);

QDomElement clRstSupHiElement = airSystemElement.firstChildElement("ClRstSupHi");
value = clRstSupHiElement.text().toDouble(&ok);
if( ok ) {
value = unitToUnit(value,"F","C").get();
spm.setMaximumSetpointTemperature(value);
}

model::SetpointManagerWarmest spm(model);
QDomElement clRstSupLowElement = airSystemElement.firstChildElement("ClRstSupLow");
value = clRstSupLowElement.text().toDouble(&ok);
if( ok ) {
value = unitToUnit(value,"F","C").get();
spm.setMinimumSetpointTemperature(value);
}

auto dsgnAirFlowMinElement = airSystemElement.firstChildElement("DsgnAirFlowMin");
value = dsgnAirFlowMinElement.text().toDouble(&ok);
if( ok ) {
spm.setMinimumTurndownRatio(value);
}
}
else if( istringEqual(clgCtrlElement.text().toStdString(),"WarmestResetTemperatureFirst") )
{
model::SetpointManagerWarmestTemperatureFlow spm(model);
spm.setStrategy("TemperatureFirst");
deckSPM = spm;
spm.addToNode(supplyOutletNode);

QDomElement clRstSupHiElement = airSystemElement.firstChildElement("ClRstSupHi");
value = clRstSupHiElement.text().toDouble(&ok);
if( ok ) {
value = unitToUnit(value,"F","C").get();
spm.setMaximumSetpointTemperature(value);
}

QDomElement clRstSupLowElement = airSystemElement.firstChildElement("ClRstSupLow");
value = clRstSupLowElement.text().toDouble(&ok);
if( ok ) {
value = unitToUnit(value,"F","C").get();
spm.setMinimumSetpointTemperature(value);
}

auto dsgnAirFlowMinElement = airSystemElement.firstChildElement("DsgnAirFlowMin");
value = dsgnAirFlowMinElement.text().toDouble(&ok);
if( ok ) {
spm.setMinimumTurndownRatio(value);
}
}
else if( istringEqual(clgCtrlElement.text().toStdString(),"Warmest") )
{
model::SetpointManagerWarmest spm(model);
deckSPM = spm;
spm.addToNode(supplyOutletNode);

QDomElement clRstSupHiElement = airSystemElement.firstChildElement("ClRstSupHi");
value = clRstSupHiElement.text().toDouble(&ok);
if( ok )
{
if( ok ) {
value = unitToUnit(value,"F","C").get();
spm.setMaximumSetpointTemperature(value);
}

QDomElement clRstSupLowElement = airSystemElement.firstChildElement("ClRstSupLow");
value = clRstSupLowElement.text().toDouble(&ok);
if( ok )
{
if( ok ) {
value = unitToUnit(value,"F","C").get();
spm.setMinimumSetpointTemperature(value);
}
Expand Down

2 comments on commit 46ea06b

@nrel-bot
Copy link

Choose a reason for hiding this comment

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

81583558-SetpointManagerWarmestTemperatureFlow (kbenne) - x86_64-Linux-Ubuntu-14.04-clang-3.5: OK (2127 of 2146 tests passed)

Build Badge Test Badge

@nrel-bot
Copy link

Choose a reason for hiding this comment

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

81583558-SetpointManagerWarmestTemperatureFlow (kbenne) - x86_64-Linux-Ubuntu-14.04-cppcheck-1.61: OK (0 of 0 tests passed)

Build Badge

Please sign in to comment.