From 0215062e09d1f54d05d4c15c7e991d5bf49569a4 Mon Sep 17 00:00:00 2001 From: Kyle Benne Date: Mon, 5 Dec 2016 15:07:00 -0600 Subject: [PATCH] Fix regression in VAV terminal setting close #2372 --- openstudiocore/resources/model/OpenStudio.idd | 1 + .../src/osversion/VersionTranslator.cpp | 40 ++++++++++++++++++- .../src/osversion/VersionTranslator.hpp | 1 + 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/openstudiocore/resources/model/OpenStudio.idd b/openstudiocore/resources/model/OpenStudio.idd index c618f7b7f2e..921817b4567 100644 --- a/openstudiocore/resources/model/OpenStudio.idd +++ b/openstudiocore/resources/model/OpenStudio.idd @@ -10163,6 +10163,7 @@ OS:AirTerminal:SingleDuct:VAV:Reheat, \default Normal \key Normal \key Reverse + \key ReverseWithLimits N7, \field Maximum Flow per Zone Floor Area During Reheat \note Used only when Reheat Coil Object Type = Coil:Heating:Water and Damper Heating Action = Reverse \note When autocalculating, the maximum flow per zone is set to 0.002032 m3/s-m2 (0.4 cfm/sqft) diff --git a/openstudiocore/src/osversion/VersionTranslator.cpp b/openstudiocore/src/osversion/VersionTranslator.cpp index 3da2ec7433b..b7814b9fc40 100644 --- a/openstudiocore/src/osversion/VersionTranslator.cpp +++ b/openstudiocore/src/osversion/VersionTranslator.cpp @@ -116,7 +116,7 @@ VersionTranslator::VersionTranslator() m_updateMethods[VersionString("1.11.4")] = &VersionTranslator::update_1_11_3_to_1_11_4; m_updateMethods[VersionString("1.11.5")] = &VersionTranslator::update_1_11_4_to_1_11_5; m_updateMethods[VersionString("1.12.1")] = &VersionTranslator::update_1_12_0_to_1_12_1; - m_updateMethods[VersionString("1.13.4")] = &VersionTranslator::defaultUpdate; + m_updateMethods[VersionString("1.13.4")] = &VersionTranslator::update_1_12_3_to_1_12_4; // List of previous versions that may be updated to this one. @@ -3337,6 +3337,44 @@ std::string VersionTranslator::update_1_12_0_to_1_12_1(const IdfFile& idf_1_12_0 return ss.str(); } +std::string VersionTranslator::update_1_12_3_to_1_12_4(const IdfFile& idf_1_12_3, const IddFileAndFactoryWrapper& idd_1_12_4) { + std::stringstream ss; + + ss << idf_1_12_3.header() << std::endl << std::endl; + IdfFile targetIdf(idd_1_12_4.iddFile()); + ss << targetIdf.versionObject().get(); + + for (const IdfObject& object : idf_1_12_3.objects()) { + auto iddname = object.iddObject().name(); + + if (iddname == "OS:AirTerminal:SingleDuct:VAV:Reheat") { + auto iddObject = idd_1_12_4.getObject("OS:AirTerminal:SingleDuct:VAV:Reheat"); + IdfObject newObject(iddObject.get()); + + for( size_t i = 0; i < object.numNonextensibleFields(); ++i ) { + if ( auto s = object.getString(i) ) { + if( i == 14u ) { + if ( istringEqual("Reverse",s.get()) ) { + newObject.setString(i,"ReverseWithLimits"); + } else { + newObject.setString(i,s.get()); + } + } else { + newObject.setString(i,s.get()); + } + } + } + + m_refactored.push_back( std::pair(object,newObject) ); + ss << newObject; + } else { + ss << object; + } + } + + return ss.str(); +} + } // osversion } // openstudio diff --git a/openstudiocore/src/osversion/VersionTranslator.hpp b/openstudiocore/src/osversion/VersionTranslator.hpp index f3961dd42ae..272aeb33abf 100644 --- a/openstudiocore/src/osversion/VersionTranslator.hpp +++ b/openstudiocore/src/osversion/VersionTranslator.hpp @@ -212,6 +212,7 @@ class OSVERSION_API VersionTranslator { std::string update_1_11_3_to_1_11_4(const IdfFile& idf_1_11_3, const IddFileAndFactoryWrapper& idd_1_11_4); std::string update_1_11_4_to_1_11_5(const IdfFile& idf_1_11_4, const IddFileAndFactoryWrapper& idd_1_11_5); std::string update_1_12_0_to_1_12_1(const IdfFile& idf_1_12_0, const IddFileAndFactoryWrapper& idd_1_12_1); + std::string update_1_12_3_to_1_12_4(const IdfFile& idf_1_12_3, const IddFileAndFactoryWrapper& idd_1_12_4); IdfObject updateUrlField_0_7_1_to_0_7_2(const IdfObject& object, unsigned index);