MCPcopy Create free account
hub / github.com/NatLabRockies/OpenStudio / validateMeasures

Method validateMeasures

src/utilities/filetypes/WorkflowJSON.cpp:963–1034  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

961 }
962
963 bool WorkflowJSON_Impl::validateMeasures() const {
964 // TODO: should we exit early, or return all problems found?
965
966 bool result = true;
967 MeasureType state = MeasureType::ModelMeasure;
968
969 for (size_t i = 0; const auto& step : m_steps) {
970 LOG(Debug, "Validating step " << i);
971 if (auto step_ = step.optionalCast<MeasureStep>()) {
972 // Not calling getBCLMeasure because I want to mimic workflow-gem and be as explicit as possible about what went wrong
973 const auto measureDirName = step_->measureDirName();
974 auto measurePath_ = findMeasure(measureDirName);
975 if (!measurePath_) {
976 LOG(Error, "Cannot find measure '" << measureDirName << "'");
977 result = false;
978 continue;
979 }
980 auto bclMeasure_ = BCLMeasure::load(*measurePath_);
981 if (!bclMeasure_) {
982 LOG(Error, "Cannot load measure '" << measureDirName << "' at '" << *measurePath_ << "'");
983 result = false;
984 continue;
985 }
986
987 // Ensure that measures are in order, i.e. no OS after E+, E+ or OS after Reporting
988 const auto measureType = bclMeasure_->measureType();
989
990 if (measureType == MeasureType::ModelMeasure) {
991 if (state == MeasureType::EnergyPlusMeasure) {
992 LOG(Error, "OpenStudio measure '" << measureDirName << "' called after transition to EnergyPlus.");
993 result = false;
994 }
995 if (state == MeasureType::ModelicaMeasure) {
996 LOG(Error, "OpenStudio measure '" << measureDirName << "' called after Modelica measure.");
997 result = false;
998 }
999 if (state == MeasureType::ReportingMeasure) {
1000 LOG(Error, "OpenStudio measure '" << measureDirName << "' called after Energyplus simulation.");
1001 result = false;
1002 }
1003 } else if (measureType == MeasureType::EnergyPlusMeasure) {
1004 if (state == MeasureType::ModelicaMeasure) {
1005 LOG(Error, "EnergyPlus measure '" << measureDirName << "' called after Modelica measure.");
1006 result = false;
1007 }
1008 if (state == MeasureType::ReportingMeasure) {
1009 LOG(Error, "EnergyPlus measure '" << measureDirName << "' called after Energyplus simulation.");
1010 result = false;
1011 }
1012 if (state == MeasureType::ModelMeasure) {
1013 state = MeasureType::EnergyPlusMeasure;
1014 }
1015 } else if (measureType == MeasureType::ModelicaMeasure) {
1016 if (state == MeasureType::ReportingMeasure) {
1017 LOG(Error, "Modelica measure '" << measureDirName << "' called after Energyplus simulation.");
1018 result = false;
1019 }
1020 if (state == MeasureType::EnergyPlusMeasure) {

Callers 2

TESTFunction · 0.80
runInitializationMethod · 0.80

Calls 3

measureDirNameMethod · 0.80
valueNameMethod · 0.80
measureTypeMethod · 0.45

Tested by 1

TESTFunction · 0.64