34 using Tscal = shambase::VecComponent<Tvec>;
40 Tscal sigma_mhd = 0.1;
45 Tscal sigma_mhd = 0.1;
53 using Variant = std::variant<None, IdealMHD_constrained_hyper_para, NonIdealMHD>;
55 Variant config =
None{};
57 void set(Variant v) { config = v; }
59 inline bool has_B_field() {
60 bool is_B = bool(std::get_if<IdealMHD_constrained_hyper_para>(&config))
61 || bool(std::get_if<NonIdealMHD>(&config));
65 inline bool has_psi_field() {
66 bool is_psi = bool(std::get_if<IdealMHD_constrained_hyper_para>(&config))
67 || bool(std::get_if<NonIdealMHD>(&config));
71 inline bool has_divB_field() {
72 bool is_divB = bool(std::get_if<IdealMHD_constrained_hyper_para>(&config));
76 inline bool has_curlB_field() {
77 bool is_curlB = bool(std::get_if<NonIdealMHD>(&config));
81 inline bool has_dtdivB_field() {
82 bool is_dtdivB = bool(std::get_if<NonIdealMHD>(&config));
86 inline void print_status() {
87 logger::raw_ln(
"--- MHD config");
89 if (None *v = std::get_if<None>(&config)) {
90 logger::raw_ln(
" Config MHD Type : None (No MHD)");
92 IdealMHD_constrained_hyper_para *v
93 = std::get_if<IdealMHD_constrained_hyper_para>(&config)) {
94 logger::raw_ln(
" Config MHD : Ideal MHD, constrained hyperbolic/parabolic treatment");
95 logger::raw_ln(
" sigma_mhd =", v->sigma_mhd);
96 }
else if (NonIdealMHD *v = std::get_if<NonIdealMHD>(&config)) {
97 logger::raw_ln(
" Config MHD Type : Non Ideal MHD");
98 logger::raw_ln(
" sigma_mhd =", v->sigma_mhd);
103 logger::raw_ln(
"--- MHD config (deduced)");
105 logger::raw_ln(
"-------------");