diff --git a/shared/lib_pv_io_manager.cpp b/shared/lib_pv_io_manager.cpp index 09312fa15..18c62aa3b 100644 --- a/shared/lib_pv_io_manager.cpp +++ b/shared/lib_pv_io_manager.cpp @@ -136,6 +136,7 @@ Irradiance_IO::Irradiance_IO(compute_module* cm, std::string cmName) } else if (cm->is_assigned("solar_resource_data")) { weatherDataProvider = std::unique_ptr(new weatherdata(cm->lookup("solar_resource_data"))); + if (!weatherDataProvider->ok()) throw exec_error(cmName, weatherDataProvider->message()); if (weatherDataProvider->has_message()) cm->log(weatherDataProvider->message(), SSC_WARNING); } else { diff --git a/ssc/cmod_pvwattsv5.cpp b/ssc/cmod_pvwattsv5.cpp index 6433d3e49..81a3e86f1 100644 --- a/ssc/cmod_pvwattsv5.cpp +++ b/ssc/cmod_pvwattsv5.cpp @@ -396,6 +396,8 @@ class cm_pvwattsv5 : public cm_pvwattsv5_base else if (is_assigned("solar_resource_data")) { wdprov = std::unique_ptr(new weatherdata(lookup("solar_resource_data"))); + if (!wdprov->ok()) throw exec_error("pvwattsv5", wdprov->message()); + if (wdprov->has_message()) log(wdprov->message(), SSC_WARNING); } else throw exec_error("pvwattsv5", "no weather data supplied"); diff --git a/ssc/cmod_pvwattsv7.cpp b/ssc/cmod_pvwattsv7.cpp index 71d07ce95..72ac99739 100644 --- a/ssc/cmod_pvwattsv7.cpp +++ b/ssc/cmod_pvwattsv7.cpp @@ -380,6 +380,8 @@ class cm_pvwattsv7 : public compute_module else if (is_assigned("solar_resource_data")) { wdprov = std::unique_ptr(new weatherdata(lookup("solar_resource_data"))); + if (!wdprov->ok()) throw exec_error("pvwattsv7", wdprov->message()); + if (wdprov->has_message()) log(wdprov->message(), SSC_WARNING); } else throw exec_error("pvwattsv7", "No weather data supplied."); diff --git a/ssc/cmod_pvwattsv8.cpp b/ssc/cmod_pvwattsv8.cpp index 52609ccd0..0c3301e3b 100644 --- a/ssc/cmod_pvwattsv8.cpp +++ b/ssc/cmod_pvwattsv8.cpp @@ -391,7 +391,9 @@ class cm_pvwattsv8 : public compute_module else if (is_assigned("solar_resource_data")) { wdprov = std::unique_ptr(new weatherdata(lookup("solar_resource_data"))); - if (!wdprov->ok()) throw exec_error("pvwattsv8", wdprov->message()); + if (!wdprov->ok()) { + throw exec_error("pvwattsv8", wdprov->message()); + } if (wdprov->has_message()) log(wdprov->message(), SSC_WARNING); } else diff --git a/ssc/cmod_swh.cpp b/ssc/cmod_swh.cpp index 203e24c83..071ebbdac 100644 --- a/ssc/cmod_swh.cpp +++ b/ssc/cmod_swh.cpp @@ -209,6 +209,8 @@ class cm_swh : public compute_module else if (is_assigned("solar_resource_data")) { wdprov = std::unique_ptr(new weatherdata(lookup("solar_resource_data"))); + if (!wdprov->ok()) throw exec_error("swh", wdprov->message()); + if (wdprov->has_message()) log(wdprov->message(), SSC_WARNING); } else throw exec_error("swh", "no weather data supplied"); diff --git a/ssc/common.cpp b/ssc/common.cpp index 2a87c18d9..8de6e7cf3 100644 --- a/ssc/common.cpp +++ b/ssc/common.cpp @@ -1547,12 +1547,13 @@ weatherdata::weatherdata( var_data *data_table ) m_message = "missing time zone: could not find tz"; m_ok = false; } + m_hdr.elev = get_number( data_table, "elev" ); if (std::isnan(m_hdr.elev)) { - m_message = "missing elevation: could not find elev"; - m_ok = false; + m_hdr.elev = 0; + //m_message = "missing elevation: could not find elev. Setting to 0 meters."; } - + // make sure two types of irradiance are provided size_t nrec = 0; int n_irr = 0;