12#include <deal.II/base/parameter_acceptor.h>
13#include <deal.II/base/utilities.h>
21 template <
typename HyperbolicDescription,
22 typename ParabolicDescription,
26 const std::string ¶meter_file,
27 const MPI_Comm &mpi_comm)
const
29 if (dealii::Utilities::MPI::this_mpi_process(mpi_comm) == 0) {
30 std::cout <<
"[INFO] dispatching to driver »" << this->name()
31 <<
"« with dim=" << dim << std::endl;
36 run_simulation<1>(parameter_file, mpi_comm);
39 run_simulation<2>(parameter_file, mpi_comm);
42 run_simulation<3>(parameter_file, mpi_comm);
46 dealii::ExcMessage(
"The dimension needs to be either 1, 2, "
47 "or 3, but we encountered »" +
48 std::to_string(dim) +
"«"));
53 template <
typename HyperbolicDescription,
54 typename ParabolicDescription,
59 create_parameter_file<1>(
false);
60 create_parameter_file<2>(
true);
61 create_parameter_file<3>(
false);
65 template <
typename HyperbolicDescription,
66 typename ParabolicDescription,
71 const std::string ¶meter_file,
const MPI_Comm &mpi_comm)
76 dealii::ParameterAcceptor::initialize(parameter_file);
81 template <
typename HyperbolicDescription,
82 typename ParabolicDescription,
85 void Equation<HyperbolicDescription, ParabolicDescription, Number>::
86 create_parameter_file(
bool write_detailed_description)
const
89 auto &prm = dealii::ParameterAcceptor::prm;
95 prm.enter_subsection(
"A - TimeLoop");
96 prm.declare_entry(
"basename",
"test");
97 prm.leave_subsection();
103 prm.enter_subsection(
"B - Equation");
104 prm.declare_entry(
"dimension",
106 dealii::Patterns::Integer(),
107 "The spatial dimension");
108 prm.declare_entry(
"equation",
110 dealii::Patterns::Anything(),
112 prm.leave_subsection();
118 Simulation<HyperbolicDescription, ParabolicDescription, dim, Number>
119 simulation(MPI_COMM_SELF);
120 TimeLoop<dim, Number> time_loop(simulation);
122 std::string base_name = this->name();
123 std::ranges::replace(base_name,
' ',
'_');
124 base_name +=
"-" + std::to_string(dim) +
"d";
126 if (dealii::Utilities::MPI::this_mpi_process(MPI_COMM_SELF) == 0) {
127 const auto full_name =
128 "default_parameters-" + base_name +
"-description.prm";
129 if (write_detailed_description)
130 prm.print_parameters(
132 dealii::ParameterHandler::OutputStyle::KeepDeclarationOrder);
134 const auto short_name =
"default_parameters-" + base_name +
".prm";
135 prm.print_parameters(
137 dealii::ParameterHandler::OutputStyle::Short |
138 dealii::ParameterHandler::OutputStyle::KeepDeclarationOrder);
144 dealii::ParameterAcceptor::clear();
void run(int dim, const std::string ¶meter_file, const MPI_Comm &mpi_comm) const override
void create_parameter_files() const override