-
Mark Meredith authoredMark Meredith authored
time.cpp 1.46 KiB
#include "solver_impl.hpp"
namespace solver {
solver::TimeSettings make_time(solver::InputInfo ii,
std::vector<InputsMessage> &messages) {
solver::TimeSettings time;
auto dt_max = std::get<solver::NumberArray>(ii[DT_MAX]);
if (dt_max.size() != 1) {
require(DT_MAX, messages, 1);
} else {
time.dt_max = dt_max[0];
}
auto dt_min = std::get<solver::NumberArray>(ii[DT_MIN]);
if (dt_min.size() != 1) {
require(DT_MIN, messages, 1);
} else {
time.dt_min = dt_min[0];
}
auto maxstep = std::get<solver::NumberArray>(ii[MAXSTEP]);
if (maxstep.size() != 1) {
require(MAXSTEP, messages, 1);
} else {
time.max_step = maxstep[0];
}
if (!ii.count(TSTOP)) {
require(TSTOP, messages, 0);
}
auto tstop = std::get<solver::NumberArray>(ii[TSTOP]);
if (tstop.size() != 1) {
require(TSTOP, messages, 1);
} else {
time.tstop = tstop[0];
}
auto fixed_dt = std::get<solver::NumberArray>(ii[FIXED_DT]);
if (fixed_dt.size() != 1) {
require(FIXED_DT, messages, 1);
} else {
time.fixed_dt = (fixed_dt[0] != 0);
}
auto cfl = std::get<solver::NumberArray>(ii[CFL]);
if (cfl.size() != 1) {
require(CFL, messages, 1);
} else {
time.cfl = cfl[0];
}
auto tcoll_ratio = std::get<solver::NumberArray>(ii[TCOLL_RATIO]);
if (tcoll_ratio.size() != 1) {
require(TCOLL_RATIO, messages, 1);
} else {
time.tcoll_ratio = tcoll_ratio[0];
}
return time;
}
} // namespace solver