3#ifdef MPDG_ENABLE_ADAFLO
5# include <deal.II/base/aligned_vector.h>
6# include <deal.II/base/vectorization.h>
8# include <deal.II/lac/la_parallel_block_vector.h>
9# include <deal.II/lac/la_parallel_vector.h>
10# include <deal.II/lac/trilinos_sparse_matrix.h>
16# include <adaflo/block_matrix_extension.h>
17# include <adaflo/diagonal_preconditioner.h>
18# include <adaflo/level_set_okz_compute_normal.h>
26 template <
int dim,
typename number>
27 class NormalVectorOperationAdaflo :
public NormalVectorOperationBase<dim, number>
30 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
31 using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>;
32 using SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix;
38 NormalVectorOperationAdaflo(
const ScratchData<dim, dim, number> &scratch_data,
39 const NormalVectorData<number> &normal_vec_data_in,
40 const int advec_diff_dof_idx,
41 const int normal_vec_dof_idx,
42 const int normal_vec_quad_idx,
43 const VectorType &advected_field_in,
44 const number reinit_scale_factor_epsilon);
58 const dealii::LinearAlgebra::distributed::BlockVector<number> &
59 get_solution_normal_vector()
const override;
61 dealii::LinearAlgebra::distributed::BlockVector<number> &
62 get_solution_normal_vector()
override;
64 adaflo::LevelSetOKZSolverComputeNormal<dim> &
69 std::vector<dealii::LinearAlgebra::distributed::Vector<number> *> &vectors)
override;
73 set_adaflo_parameters(
const number epsilon,
74 const int advec_diff_dof_idx,
75 const int normal_vec_dof_idx,
76 const int normal_vec_quad_idx);
85 const ScratchData<dim, dim, number> &scratch_data;
97 adaflo::LevelSetOKZSolverComputeNormalParameter normal_vec_adaflo_params;
101 std::shared_ptr<adaflo::LevelSetOKZSolverComputeNormal<dim>> normal_vec_operation;
106 adaflo::DiagonalPreconditioner<number> preconditioner;
107 std::shared_ptr<adaflo::BlockMatrixExtension> projection_matrix;
108 std::shared_ptr<adaflo::BlockILUExtension> ilu_projection_matrix;
109 dealii::AlignedVector<dealii::VectorizedArray<number>> cell_diameters;
110 number cell_diameter_min;
111 number cell_diameter_max;
114 const NormalVectorData<number> &normal_vec_data;
This operation solves the reinitialization problem for a CG- or DG-FEM-based discrete level-set field...
Definition advection_DG_operation.hpp:20
dealii::LinearAlgebra::distributed::BlockVector< number > BlockVectorType
Definition utilities_matrixfree.hpp:17
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition utilities_matrixfree.hpp:15