| 438 | } |
| 439 | |
| 440 | boost::optional<EpwDataPoint> EpwDataPoint::fromEpwStrings(const std::vector<std::string>& strings, bool pedantic) { |
| 441 | EpwDataPoint pt; |
| 442 | // Expect 35 items in the strings |
| 443 | if (strings.size() < 35) { |
| 444 | if (pedantic) { |
| 445 | LOG_FREE(Error, "openstudio.EpwFile", "Expected 35 fields in EPW data instead of the " << strings.size() << " received"); |
| 446 | return boost::none; |
| 447 | } else { |
| 448 | LOG_FREE(Warn, "openstudio.EpwFile", |
| 449 | "Expected 35 fields in EPW data instead of the " << strings.size() << " received. The remaining fields will not be available"); |
| 450 | } |
| 451 | } else if (strings.size() > 35) { |
| 452 | LOG_FREE(Warn, "openstudio.EpwFile", |
| 453 | "Expected 35 fields in EPW data instead of the " << strings.size() << " received. The additional data will be ignored"); |
| 454 | } |
| 455 | // Use the appropriate setter on each field |
| 456 | if (!pt.setYear(strings[EpwDataField::Year])) { |
| 457 | return boost::none; |
| 458 | } |
| 459 | if (!pt.setMonth(strings[EpwDataField::Month])) { |
| 460 | return boost::none; |
| 461 | } |
| 462 | if (!pt.setDay(strings[EpwDataField::Day])) { |
| 463 | return boost::none; |
| 464 | } |
| 465 | if (!pt.setHour(strings[EpwDataField::Hour])) { |
| 466 | return boost::none; |
| 467 | } |
| 468 | if (!pt.setMinute(strings[EpwDataField::Minute])) { |
| 469 | return boost::none; |
| 470 | } |
| 471 | pt.setDataSourceandUncertaintyFlags(strings[EpwDataField::DataSourceandUncertaintyFlags]); |
| 472 | pt.setDryBulbTemperature(strings[EpwDataField::DryBulbTemperature]); |
| 473 | pt.setDewPointTemperature(strings[EpwDataField::DewPointTemperature]); |
| 474 | pt.setRelativeHumidity(strings[EpwDataField::RelativeHumidity]); |
| 475 | pt.setAtmosphericStationPressure(strings[EpwDataField::AtmosphericStationPressure]); |
| 476 | pt.setExtraterrestrialHorizontalRadiation(strings[EpwDataField::ExtraterrestrialHorizontalRadiation]); |
| 477 | pt.setExtraterrestrialDirectNormalRadiation(strings[EpwDataField::ExtraterrestrialDirectNormalRadiation]); |
| 478 | pt.setHorizontalInfraredRadiationIntensity(strings[EpwDataField::HorizontalInfraredRadiationIntensity]); |
| 479 | pt.setGlobalHorizontalRadiation(strings[EpwDataField::GlobalHorizontalRadiation]); |
| 480 | pt.setDirectNormalRadiation(strings[EpwDataField::DirectNormalRadiation]); |
| 481 | pt.setDiffuseHorizontalRadiation(strings[EpwDataField::DiffuseHorizontalRadiation]); |
| 482 | pt.setGlobalHorizontalIlluminance(strings[EpwDataField::GlobalHorizontalIlluminance]); |
| 483 | pt.setDirectNormalIlluminance(strings[EpwDataField::DirectNormalIlluminance]); |
| 484 | pt.setDiffuseHorizontalIlluminance(strings[EpwDataField::DiffuseHorizontalIlluminance]); |
| 485 | pt.setZenithLuminance(strings[EpwDataField::ZenithLuminance]); |
| 486 | pt.setWindDirection(strings[EpwDataField::WindDirection]); |
| 487 | pt.setWindSpeed(strings[EpwDataField::WindSpeed]); |
| 488 | pt.setTotalSkyCover(strings[EpwDataField::TotalSkyCover]); |
| 489 | pt.setOpaqueSkyCover(strings[EpwDataField::OpaqueSkyCover]); |
| 490 | pt.setVisibility(strings[EpwDataField::Visibility]); |
| 491 | pt.setCeilingHeight(strings[EpwDataField::CeilingHeight]); |
| 492 | pt.setPresentWeatherObservation(strings[EpwDataField::PresentWeatherObservation]); |
| 493 | pt.setPresentWeatherCodes(strings[EpwDataField::PresentWeatherCodes]); |
| 494 | pt.setPrecipitableWater(strings[EpwDataField::PrecipitableWater]); |
| 495 | pt.setAerosolOpticalDepth(strings[EpwDataField::AerosolOpticalDepth]); |
| 496 | pt.setSnowDepth(strings[EpwDataField::SnowDepth]); |
| 497 | pt.setDaysSinceLastSnowfall(strings[EpwDataField::DaysSinceLastSnowfall]); |
nothing calls this directly
no test coverage detected