62 ApplicationBase(std::string parameter_file, MPI_Comm
const & comm)
64 pcout(std::cout, dealii::Utilities::MPI::this_mpi_process(mpi_comm) == 0),
65 parameter_file(parameter_file)
69 virtual ~ApplicationBase() =
default;
72 add_parameters(dealii::ParameterHandler & prm)
74 resolution.add_parameters(prm,
"SpatialResolutionAcoustics");
75 output_parameters.add_parameters(prm,
"Output");
81 dealii::ParameterHandler prm;
82 this->add_parameters(prm);
83 prm.parse_input(parameter_file,
"",
true,
true);
87 setup(std::shared_ptr<
Grid<dim>> & grid, std::shared_ptr<dealii::Mapping<dim>> & mapping)
91 set_resolution_parameters();
98 AssertThrow(param.adaptive_time_stepping ==
true,
99 dealii::ExcMessage(
"Adaptive timestepping has to be enabled for aero-acoustics."));
101 AssertThrow(param.aero_acoustic_source_term,
103 "aero_acoustic_source_term has to be set true for aero-acoustic computations."));
105 param.print(pcout,
"List of parameters for acoustic conservation equations:");
108 grid = std::make_shared<Grid<dim>>();
109 create_grid(*grid, mapping);
110 print_grid_info(pcout, *grid);
113 boundary_descriptor = std::make_shared<Acoustics::BoundaryDescriptor<dim>>();
114 set_boundary_descriptor();
115 ExaDG::verify_boundary_conditions(*boundary_descriptor, *grid);
118 field_functions = std::make_shared<Acoustics::FieldFunctions<dim>>();
119 set_field_functions();
123 get_parameters()
const
128 std::shared_ptr<Acoustics::BoundaryDescriptor<dim>
const>
129 get_boundary_descriptor()
const
131 return boundary_descriptor;
134 std::shared_ptr<Acoustics::FieldFunctions<dim>
const>
135 get_field_functions()
const
137 return field_functions;
140 virtual std::shared_ptr<Acoustics::PostProcessorBase<dim, Number>>
141 create_postprocessor() = 0;
144 MPI_Comm
const mpi_comm;
146 dealii::ConditionalOStream pcout;
150 std::shared_ptr<Acoustics::FieldFunctions<dim>> field_functions;
151 std::shared_ptr<Acoustics::BoundaryDescriptor<dim>> boundary_descriptor;
153 std::string parameter_file;
159 set_resolution_parameters()
161 param.degree_u = resolution.degree;
162 param.grid.n_refine_global = resolution.refine_space;
166 set_parameters() = 0;
169 create_grid(
Grid<dim> & grid, std::shared_ptr<dealii::Mapping<dim>> & mapping) = 0;
172 set_boundary_descriptor() = 0;
175 set_field_functions() = 0;
188 ApplicationBase(std::string parameter_file, MPI_Comm
const & comm)
190 pcout(std::cout, dealii::Utilities::MPI::this_mpi_process(mpi_comm) == 0),
191 parameter_file(parameter_file)
195 virtual ~ApplicationBase() =
default;
198 add_parameters(dealii::ParameterHandler & prm)
200 resolution.add_parameters(prm,
"SpatialResolutionFluid");
201 output_parameters.add_parameters(prm,
"Output");
207 dealii::ParameterHandler prm;
208 this->add_parameters(prm);
209 prm.parse_input(parameter_file,
"",
true,
true);
214 std::shared_ptr<dealii::Mapping<dim>> & mapping,
219 set_resolution_parameters();
224 param.print(pcout,
"List of parameters for incompressible flow solver:");
227 AssertThrow(param.problem_type == IncNS::ProblemType::Unsteady,
228 dealii::ExcMessage(
"Invalid parameter in context of aero-acoustic."));
229 AssertThrow(param.ale_formulation ==
false,
230 dealii::ExcMessage(
"ALE not yet implemented for aero-acoustic."));
233 grid = std::make_shared<Grid<dim>>();
234 create_grid(*grid, mapping, multigrid_mappings);
235 print_grid_info(pcout, *grid);
238 boundary_descriptor = std::make_shared<IncNS::BoundaryDescriptor<dim>>();
239 set_boundary_descriptor();
240 IncNS::verify_boundary_conditions<dim>(*boundary_descriptor, *grid);
243 field_functions = std::make_shared<IncNS::FieldFunctions<dim>>();
244 set_field_functions();
248 get_parameters()
const
253 std::shared_ptr<IncNS::BoundaryDescriptor<dim>
const>
254 get_boundary_descriptor()
const
256 return boundary_descriptor;
259 std::shared_ptr<IncNS::FieldFunctions<dim>
const>
260 get_field_functions()
const
262 return field_functions;
265 virtual std::shared_ptr<IncNS::PostProcessorBase<dim, Number>>
266 create_postprocessor() = 0;
269 MPI_Comm
const mpi_comm;
271 dealii::ConditionalOStream pcout;
275 std::shared_ptr<IncNS::FieldFunctions<dim>> field_functions;
276 std::shared_ptr<IncNS::BoundaryDescriptor<dim>> boundary_descriptor;
278 std::string parameter_file;
284 set_resolution_parameters()
286 param.degree_u = resolution.degree;
287 param.grid.n_refine_global = resolution.refine_space;
292 set_parameters() = 0;
296 std::shared_ptr<dealii::Mapping<dim>> & mapping,
300 set_boundary_descriptor() = 0;
303 set_field_functions() = 0;
315 ApplicationBase(std::string
const & input_file, MPI_Comm
const & comm)
316 : parameter_file(input_file),
318 pcout(std::cout, dealii::Utilities::MPI::this_mpi_process(mpi_comm) == 0)
322 virtual ~ApplicationBase() =
default;
329 parameters.print(pcout,
"List of parameters for aero-acoustic solver");
332 field_functions = std::make_shared<FieldFunctions<dim>>();
333 set_field_functions();
337 add_parameters(dealii::ParameterHandler & prm)
339 parameters.add_parameters(prm,
"AeroAcoustic");
341 acoustic->add_parameters(prm);
342 fluid->add_parameters(prm);
347 std::shared_ptr<AcousticsAeroAcoustic::ApplicationBase<dim, Number>> acoustic;
348 std::shared_ptr<FluidAeroAcoustic::ApplicationBase<dim, Number>> fluid;
350 std::shared_ptr<FieldFunctions<dim>> field_functions;
354 set_field_functions() = 0;
359 dealii::ParameterHandler prm;
361 prm.parse_input(parameter_file,
"",
true,
true);
364 std::string
const parameter_file;
365 MPI_Comm
const mpi_comm;
366 dealii::ConditionalOStream pcout;