56 ApplicationBase(std::string parameter_file, MPI_Comm
const & comm)
58 pcout(std::cout, dealii::Utilities::MPI::this_mpi_process(mpi_comm) == 0),
59 parameter_file(parameter_file)
63 virtual ~ApplicationBase() =
default;
66 add_parameters(dealii::ParameterHandler & prm)
68 resolution.add_parameters(prm,
"SpatialResolutionAcoustics");
69 output_parameters.add_parameters(prm,
"Output");
75 dealii::ParameterHandler prm;
76 this->add_parameters(prm);
77 prm.parse_input(parameter_file,
"",
true,
true);
81 setup(std::shared_ptr<
Grid<dim>> & grid, std::shared_ptr<dealii::Mapping<dim>> & mapping)
85 set_resolution_parameters();
92 AssertThrow(param.adaptive_time_stepping ==
true,
93 dealii::ExcMessage(
"Adaptive timestepping has to be enabled for aero-acoustics."));
95 AssertThrow(param.aero_acoustic_source_term,
97 "aero_acoustic_source_term has to be set true for aero-acoustic computations."));
99 param.print(pcout,
"List of parameters for acoustic conservation equations:");
102 grid = std::make_shared<Grid<dim>>();
103 create_grid(*grid, mapping);
104 print_grid_info(pcout, *grid);
107 boundary_descriptor = std::make_shared<Acoustics::BoundaryDescriptor<dim>>();
108 set_boundary_descriptor();
109 ExaDG::verify_boundary_conditions(*boundary_descriptor, *grid);
112 field_functions = std::make_shared<Acoustics::FieldFunctions<dim>>();
113 set_field_functions();
117 get_parameters()
const
122 std::shared_ptr<Acoustics::BoundaryDescriptor<dim>
const>
123 get_boundary_descriptor()
const
125 return boundary_descriptor;
128 std::shared_ptr<Acoustics::FieldFunctions<dim>
const>
129 get_field_functions()
const
131 return field_functions;
134 virtual std::shared_ptr<Acoustics::PostProcessorBase<dim, Number>>
135 create_postprocessor() = 0;
138 MPI_Comm
const mpi_comm;
140 dealii::ConditionalOStream pcout;
144 std::shared_ptr<Acoustics::FieldFunctions<dim>> field_functions;
145 std::shared_ptr<Acoustics::BoundaryDescriptor<dim>> boundary_descriptor;
147 std::string parameter_file;
153 set_resolution_parameters()
155 param.degree_u = resolution.degree;
156 param.grid.n_refine_global = resolution.refine_space;
160 set_parameters() = 0;
163 create_grid(
Grid<dim> & grid, std::shared_ptr<dealii::Mapping<dim>> & mapping) = 0;
166 set_boundary_descriptor() = 0;
169 set_field_functions() = 0;
182 ApplicationBase(std::string parameter_file, MPI_Comm
const & comm)
184 pcout(std::cout, dealii::Utilities::MPI::this_mpi_process(mpi_comm) == 0),
185 parameter_file(parameter_file)
189 virtual ~ApplicationBase() =
default;
192 add_parameters(dealii::ParameterHandler & prm)
194 resolution.add_parameters(prm,
"SpatialResolutionFluid");
195 output_parameters.add_parameters(prm,
"Output");
201 dealii::ParameterHandler prm;
202 this->add_parameters(prm);
203 prm.parse_input(parameter_file,
"",
true,
true);
208 std::shared_ptr<dealii::Mapping<dim>> & mapping,
213 set_resolution_parameters();
218 param.print(pcout,
"List of parameters for incompressible flow solver:");
221 AssertThrow(param.problem_type == IncNS::ProblemType::Unsteady,
222 dealii::ExcMessage(
"Invalid parameter in context of aero-acoustic."));
223 AssertThrow(param.ale_formulation ==
false,
224 dealii::ExcMessage(
"ALE not yet implemented for aero-acoustic."));
227 grid = std::make_shared<Grid<dim>>();
228 create_grid(*grid, mapping, multigrid_mappings);
229 print_grid_info(pcout, *grid);
232 boundary_descriptor = std::make_shared<IncNS::BoundaryDescriptor<dim>>();
233 set_boundary_descriptor();
234 IncNS::verify_boundary_conditions<dim>(*boundary_descriptor, *grid);
237 field_functions = std::make_shared<IncNS::FieldFunctions<dim>>();
238 set_field_functions();
242 get_parameters()
const
247 std::shared_ptr<IncNS::BoundaryDescriptor<dim>
const>
248 get_boundary_descriptor()
const
250 return boundary_descriptor;
253 std::shared_ptr<IncNS::FieldFunctions<dim>
const>
254 get_field_functions()
const
256 return field_functions;
259 virtual std::shared_ptr<IncNS::PostProcessorBase<dim, Number>>
260 create_postprocessor() = 0;
263 MPI_Comm
const mpi_comm;
265 dealii::ConditionalOStream pcout;
269 std::shared_ptr<IncNS::FieldFunctions<dim>> field_functions;
270 std::shared_ptr<IncNS::BoundaryDescriptor<dim>> boundary_descriptor;
272 std::string parameter_file;
278 set_resolution_parameters()
280 param.degree_u = resolution.degree;
281 param.grid.n_refine_global = resolution.refine_space;
286 set_parameters() = 0;
290 std::shared_ptr<dealii::Mapping<dim>> & mapping,
294 set_boundary_descriptor() = 0;
297 set_field_functions() = 0;
309 ApplicationBase(std::string
const & input_file, MPI_Comm
const & comm)
310 : parameter_file(input_file),
312 pcout(std::cout, dealii::Utilities::MPI::this_mpi_process(mpi_comm) == 0)
316 virtual ~ApplicationBase() =
default;
323 parameters.print(pcout,
"List of parameters for aero-acoustic solver");
326 field_functions = std::make_shared<FieldFunctions<dim>>();
327 set_field_functions();
331 add_parameters(dealii::ParameterHandler & prm)
333 parameters.add_parameters(prm,
"AeroAcoustic");
335 acoustic->add_parameters(prm);
336 fluid->add_parameters(prm);
341 std::shared_ptr<AcousticsAeroAcoustic::ApplicationBase<dim, Number>> acoustic;
342 std::shared_ptr<FluidAeroAcoustic::ApplicationBase<dim, Number>> fluid;
344 std::shared_ptr<FieldFunctions<dim>> field_functions;
348 set_field_functions() = 0;
353 dealii::ParameterHandler prm;
355 prm.parse_input(parameter_file,
"",
true,
true);
358 std::string
const parameter_file;
359 MPI_Comm
const mpi_comm;
360 dealii::ConditionalOStream pcout;