54 add_parameters(dealii::ParameterHandler & prm, std::vector<std::string>
const & subsection_names)
56 for(
auto & name : subsection_names)
58 prm.enter_subsection(name);
61 resolution_parameters.add_parameters(prm);
62 output_parameters.add_parameters(prm);
64 for(
auto & name : subsection_names)
67 prm.leave_subsection();
71 Domain(std::string parameter_file, MPI_Comm
const & comm)
73 pcout(std::cout, dealii::Utilities::MPI::this_mpi_process(mpi_comm) == 0),
74 parameter_file(parameter_file)
84 std::shared_ptr<dealii::Mapping<dim>> & mapping,
86 std::vector<std::string>
const & subsection_names)
88 parse_parameters(subsection_names);
91 this->param.degree_u = this->resolution_parameters.degree;
92 this->param.grid.n_refine_global = this->resolution_parameters.refine_space;
96 param.print(pcout,
"List of parameters:");
99 grid = std::make_shared<Grid<dim>>();
100 create_grid(*grid, mapping, multigrid_mappings);
101 print_grid_info(pcout, *grid);
104 boundary_descriptor = std::make_shared<BoundaryDescriptor<dim>>();
105 set_boundary_descriptor();
106 verify_boundary_conditions<dim>(*boundary_descriptor, *grid);
109 field_functions = std::make_shared<FieldFunctions<dim>>();
110 set_field_functions();
113 virtual std::shared_ptr<PostProcessorBase<dim, Number>>
114 create_postprocessor() = 0;
117 get_parameters()
const
122 std::shared_ptr<BoundaryDescriptor<dim>
const>
123 get_boundary_descriptor()
const
125 return boundary_descriptor;
128 std::shared_ptr<FieldFunctions<dim>
const>
129 get_field_functions()
const
131 return field_functions;
136 parse_parameters(std::vector<std::string>
const & subsection_names)
138 dealii::ParameterHandler prm;
139 this->add_parameters(prm, subsection_names);
140 prm.parse_input(parameter_file,
"",
true,
true);
143 MPI_Comm
const mpi_comm;
145 dealii::ConditionalOStream pcout;
147 std::string parameter_file;
151 std::shared_ptr<FieldFunctions<dim>> field_functions;
152 std::shared_ptr<BoundaryDescriptor<dim>> boundary_descriptor;
159 set_parameters() = 0;
163 std::shared_ptr<dealii::Mapping<dim>> & mapping,
167 set_boundary_descriptor() = 0;
170 set_field_functions() = 0;
177 ApplicationBase(std::string parameter_file, MPI_Comm
const & comm)
179 pcout(std::cout, dealii::Utilities::MPI::this_mpi_process(mpi_comm) == 0),
180 parameter_file(parameter_file),
181 switch_off_precursor(
false)
185 virtual ~ApplicationBase()
190 add_parameters(dealii::ParameterHandler & prm)
192 AssertThrow(main.get(), dealii::ExcMessage(
"Domain main is uninitialized."));
193 AssertThrow(
precursor.get(), dealii::ExcMessage(
"Domain precursor is uninitialized."));
195 main->add_parameters(prm, {
"Main"});
197 if(precursor_is_active())
198 precursor->add_parameters(prm, {
"Precursor"});
202 precursor_is_active()
const
204 return not switch_off_precursor;
215 MPI_Comm
const mpi_comm;
217 dealii::ConditionalOStream pcout;
219 std::string parameter_file;
225 bool switch_off_precursor;