47 bool write_detailed_description,
51 auto &prm = dealii::ParameterAcceptor::prm;
58 prm.enter_subsection(
"A - Scheduler");
59 prm.declare_entry(
"basename",
"test");
60 prm.leave_subsection();
62 [[maybe_unused]]
const auto objects = setup();
64 if (dealii::Utilities::MPI::this_mpi_process(MPI_COMM_SELF) == 0) {
65 if (write_detailed_description)
67 "default_parameters-" + name +
"-description.prm",
68 dealii::ParameterHandler::OutputStyle::KeepDeclarationOrder);
71 "default_parameters-" + name +
".prm",
72 dealii::ParameterHandler::OutputStyle::Short |
73 dealii::ParameterHandler::OutputStyle::KeepDeclarationOrder);
80 dealii::ParameterAcceptor::clear();
136 const auto run = [](
int dim,
137 const std::string ¶meter_file,
138 const MPI_Comm &mpi_communicator) {
141 run_simulation<1>(parameter_file, mpi_communicator);
144 run_simulation<2>(parameter_file, mpi_communicator);
147 run_simulation<3>(parameter_file, mpi_communicator);
150 AssertThrow(
false, dealii::ExcInternalError());
154 const auto create_parameter_files = [name] {
155 create_parameter_file<1>(name,
false);
156 create_parameter_file<2>(name,
true);
157 create_parameter_file<3>(name,
false);
160 const Equation equation{run, create_parameter_files};
162 const bool inserted =
equations().emplace(name, equation).second;
163 AssertThrow(inserted,
164 dealii::ExcMessage(
"The equation »" + name +
165 "« is registered more than once."));
174 static void run_simulation(
const std::string ¶meter_file,
175 const MPI_Comm &mpi_comm)
180 dealii::ParameterAcceptor::initialize(parameter_file);
182 task_composition.run();
189 static void create_parameter_file(
const std::string &name,
190 bool write_detailed_description)
192 std::string base_name = name;
193 std::ranges::replace(base_name,
' ',
'_');
194 base_name +=
"-" + std::to_string(dim) +
"d";
201 auto &prm = dealii::ParameterAcceptor::prm;
202 prm.enter_subsection(
"B - Equation");
203 prm.declare_entry(
"dimension",
205 dealii::Patterns::Integer(),
206 "The spatial dimension");
208 "equation", name, dealii::Patterns::Anything(),
"The PDE system");
209 prm.leave_subsection();
216 Simulation<HD, PD, dim, NUMBER> simulation{MPI_COMM_SELF};
217 TaskComposition<dim, NUMBER> task_composition{simulation};
219 return std::make_unique<Objects>();