#pragma once #include #include namespace fluidsim::port { enum class PipeSolver { Rusanov, Hlle, Hllc, Muscl }; inline const char* pipe_solver_name(PipeSolver solver) { switch(solver) { case PipeSolver::Rusanov: return "rusanov"; case PipeSolver::Hlle: return "hlle"; case PipeSolver::Hllc: return "hllc"; case PipeSolver::Muscl: return "muscl"; } return "unknown"; } inline PipeSolver parse_pipe_solver(std::string_view name) { if(name=="rusanov") return PipeSolver::Rusanov; if(name=="hlle") return PipeSolver::Hlle; if(name=="hllc") return PipeSolver::Hllc; if(name=="muscl") return PipeSolver::Muscl; throw std::invalid_argument("choose rusanov, hlle, hllc or muscl pipe solver"); } } // namespace fluidsim::port