Skip to content

Commit 4186cbc

Browse files
committed
Add warnings for no more than 6 periods in manual dispatch schedule
1 parent 2d0968c commit 4186cbc

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

ssc/cmod_fuelcell.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,21 @@ void cm_fuelcell::exec()
166166
percent_complete = as_float("percent_complete");
167167
}
168168
*/
169+
if (as_integer("fuelcell_dispatch_choice") == FuelCellDispatch::MANUAL) {
170+
171+
size_t max_period = 6;
172+
util::matrix_t<size_t> m_scheduleWeekday = as_matrix_unsigned_long("dispatch_manual_fuelcell_sched");
173+
util::matrix_t<size_t> m_scheduleWeekend = as_matrix_unsigned_long("dispatch_manual_fuelcell_sched_weekend");
174+
size_t* discharge_schedule_vec = m_scheduleWeekday.data();
175+
size_t* period_num = std::find_if(discharge_schedule_vec, discharge_schedule_vec + m_scheduleWeekday.ncells() - 1, [max_period](size_t element) { return (max_period < element); });
176+
if (*period_num > max_period)
177+
throw exec_error("fuelcell", "Invalid manual dispatch period in weekday schedule. Period numbers must be less than or equal to 6.");
178+
179+
discharge_schedule_vec = m_scheduleWeekend.data();
180+
period_num = std::find_if(discharge_schedule_vec, discharge_schedule_vec + m_scheduleWeekend.ncells() - 1, [max_period](size_t element) { return (max_period < element); });
181+
if (*period_num > max_period)
182+
throw exec_error("fuelcell", "Invalid manual dispatch period in weekend schedule. Period numbers must be less than or equal to 6.");
183+
}
169184

170185
construct();
171186
size_t idx = 0;

0 commit comments

Comments
 (0)