67 if constexpr (has_n_mpi_ensembles_v<HD>)
68 n_ensembles = HD::n_mpi_ensembles();
71 std::make_unique<MPIEnsemble>(mpi_comm, n_ensembles);
74 hyperbolic_system_container_ =
75 std::make_unique<MPIEnsembleContainer<HyperbolicSystem>>(
76 mpi_ensemble,
"/B - Equation");
78 hyperbolic_system_container_->get();
81 parabolic_system_container_ =
82 std::make_unique<MPIEnsembleContainer<ParabolicSystem>>(
83 mpi_ensemble,
"/B - Equation");
85 parabolic_system_container_->get();
89 mpi_ensemble,
"/C - Discretization");
91 this->
offline_data_ = std::make_unique<OfflineData<dim, Number>>(
95 initial_values_container_ = std::make_unique<
104 initial_values_container_->get();
107 auto hyperbolic_module =
108 std::make_unique<HyperbolicModule<HD, dim, Number>>(
113 "/F - HyperbolicModule");
114 const auto &initial_precomputed =
115 hyperbolic_module->initial_precomputed();
119 std::make_unique<ParabolicModule>(mpi_ensemble,
124 "/G - ParabolicModule");
132 "/H - TimeIntegrator");
135 std::make_unique<Postprocessor<HD, dim, Number>>(offline_data,
138 initial_precomputed);
140 this->
mesh_adaptor_ = std::make_unique<MeshAdaptor<dim, Number>>(
141 mpi_ensemble, offline_data, *postprocessor_,
"/I - MeshAdaptor");
144 std::make_unique<SolutionTransfer<HD, dim, Number>>(
153 std::make_unique<VTUOutput<dim, Number>>(mpi_ensemble,
160 std::make_unique<Quantities<dim, Number>>(mpi_ensemble,
171 "/L - ErrorEvaluation");