3#ifdef MPDG_ENABLE_ADAFLO
5# include <deal.II/base/function.h>
6# include <deal.II/base/quadrature.h>
7# include <deal.II/base/tensor.h>
8# include <deal.II/base/timer.h>
9# include <deal.II/base/vectorization.h>
11# include <deal.II/dofs/dof_handler.h>
13# include <deal.II/grid/tria.h>
15# include <deal.II/lac/affine_constraints.h>
16# include <deal.II/lac/generic_linear_algebra.h>
17# include <deal.II/lac/la_parallel_vector.h>
30# include <adaflo/navier_stokes.h>
31# include <adaflo/parameters.h>
51 template <
int dim,
typename number>
52 class AdafloWrapper :
public IncompressibleFlowOperationBase<dim, number>
55 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
70 AdafloWrapper(ScratchData<dim, dim, number> &scratch_data,
71 const std::shared_ptr<
const SimulationCaseBase<dim, number>> simulation_case,
72 const AdafloWrapperParameters<number> &adaflo_wrapper_params,
73 const TimeIntegration::TimeIterator<number> &time_iterator,
74 const bool do_evaporative_mass_flux);
90 set_initial_condition(
const dealii::Function<dim> &initial_field_function_velocity)
override;
139 init_time_advance()
override;
182 set_face_average_density_augmented_taylor_hood(
const Material<number> &material,
183 const VectorType &ls_as_heaviside,
184 const unsigned int ls_dof_idx,
185 const VectorType *temperature =
nullptr,
186 unsigned int temp_dof_idx = -1);
191 const dealii::LinearAlgebra::distributed::Vector<number> &
192 get_velocity()
const override;
197 dealii::LinearAlgebra::distributed::Vector<number> &
198 get_velocity()
override;
203 const dealii::LinearAlgebra::distributed::Vector<number> &
204 get_velocity_old()
const override;
209 const dealii::LinearAlgebra::distributed::Vector<number> &
210 get_velocity_old_old()
const;
215 const dealii::DoFHandler<dim> &
216 get_dof_handler_velocity()
const override;
222 get_dof_handler_idx_velocity()
const override;
228 get_dof_handler_idx_hanging_nodes_velocity()
const override;
234 get_quad_idx_velocity()
const override;
240 get_quad_idx_pressure()
const override;
245 const dealii::AffineConstraints<number> &
246 get_constraints_velocity()
const override;
251 dealii::AffineConstraints<number> &
252 get_constraints_velocity()
override;
257 const dealii::AffineConstraints<number> &
258 get_hanging_node_constraints_velocity()
const override;
263 const dealii::LinearAlgebra::distributed::Vector<number> &
264 get_pressure()
const override;
269 dealii::LinearAlgebra::distributed::Vector<number> &
270 get_pressure()
override;
275 const dealii::LinearAlgebra::distributed::Vector<number> &
276 get_pressure_old()
const;
281 const dealii::LinearAlgebra::distributed::Vector<number> &
282 get_pressure_old_old()
const;
287 const dealii::DoFHandler<dim> &
288 get_dof_handler_pressure()
const override;
294 get_dof_handler_idx_pressure()
const override;
299 const dealii::AffineConstraints<number> &
300 get_constraints_pressure()
const override;
305 dealii::AffineConstraints<number> &
306 get_constraints_pressure()
override;
311 const dealii::AffineConstraints<number> &
312 get_hanging_node_constraints_pressure()
const override;
320 set_force_rhs(
const dealii::LinearAlgebra::distributed::Vector<number> &vec)
override;
328 set_mass_balance_rhs(
const dealii::LinearAlgebra::distributed::Vector<number> &vec)
override;
340 set_user_defined_material(std::function<dealii::Tensor<2, dim, dealii::VectorizedArray<number>>(
341 const dealii::Tensor<2, dim, dealii::VectorizedArray<number>> &,
344 const bool)> my_user_defined_material)
override;
354 dealii::VectorizedArray<number> &
355 get_density(
const unsigned int cell,
const unsigned int q)
override;
365 const dealii::VectorizedArray<number> &
366 get_density(
const unsigned int cell,
const unsigned int q)
const override;
376 dealii::VectorizedArray<number> &
377 get_viscosity(
const unsigned int cell,
const unsigned int q)
override;
387 const dealii::VectorizedArray<number> &
388 get_viscosity(
const unsigned int cell,
const unsigned int q)
const override;
398 dealii::VectorizedArray<number> &
399 get_damping(
const unsigned int cell,
const unsigned int q)
override;
409 const dealii::VectorizedArray<number> &
410 get_damping(
const unsigned int cell,
const unsigned int q)
const override;
423 std::vector<dealii::LinearAlgebra::distributed::Vector<number> *> &vectors)
override;
436 std::vector<dealii::LinearAlgebra::distributed::Vector<number> *> &vectors)
override;
453 distribute_constraints()
override;
472 attach_output_vectors(GenericDataOut<dim, number> &data_out)
const override;
490 attach_output_vectors_failed_step(GenericDataOut<dim, number> &data_out)
const override;
502 set_face_average_density(
const typename dealii::Triangulation<dim>::cell_iterator &cell,
503 const unsigned int face,
504 const number density);
514 const dealii::Quadrature<dim> &
515 get_face_center_quad();
525 synchronize_time_stepping();
529 ScratchData<dim, dim, number> &scratch_data;
532 dealii::TimerOutput timer;
535 std::unique_ptr<adaflo::NavierStokes<dim>> navier_stokes;
538 std::unique_ptr<dealii::Quadrature<dim>> face_center_quad;
541 const adaflo::FlowParameters &adaflo_params;
544 const bool do_evaporative_mass_flux;
547 const TimeIntegration::TimeIterator<number> &time_iterator;
550 unsigned int dof_index_u;
551 unsigned int dof_index_p;
552 unsigned int dof_index_hanging_nodes_u;
553 unsigned int dof_index_parameters;
556 unsigned int quad_index_u;
557 unsigned int quad_index_p;
560 dealii::DoFHandler<dim> dof_handler_parameters;
563 dealii::AffineConstraints<number> constraints_parameters;
566 mutable VectorType force_rhs_velocity_projected;
567 mutable VectorType mass_balance_source_term_projected;
572 bool ready_for_time_advance =
false;
587 time_stepping_synchronized();
Definition equation_of_state.hpp:17
@ density
Definition material.hpp:69
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition utilities_matrixfree.hpp:15