3#ifdef MPDG_ENABLE_ADAFLO
6# include <deal.II/lac/generic_linear_algebra.h>
14# include <adaflo/level_set_okz_compute_curvature.h>
20 template <
int dim,
typename number>
21 class CurvatureOperationAdaflo :
public CurvatureOperationBase<dim, number>
24 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
25 using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>;
26 using SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix;
32 CurvatureOperationAdaflo(
const ScratchData<dim, dim, number> &scratch_data,
33 const int advec_diff_dof_idx,
34 const int normal_vec_dof_idx,
35 const int curv_dof_idx,
36 const int curv_quad_idx,
37 const VectorType &advected_field,
38 const LevelSetData<number> &data_in);
50 update_normal_vector()
override;
52 const dealii::LinearAlgebra::distributed::Vector<number> &
53 get_curvature()
const override;
55 dealii::LinearAlgebra::distributed::Vector<number> &
56 get_curvature()
override;
58 const dealii::LinearAlgebra::distributed::BlockVector<number> &
59 get_normal_vector()
const override;
61 dealii::LinearAlgebra::distributed::BlockVector<number> &
62 get_normal_vector()
override;
66 std::vector<dealii::LinearAlgebra::distributed::Vector<number> *> &vectors)
override;
73 create_normal_vector_operator();
76 set_adaflo_parameters(
const LevelSetData<number> ¶meters,
77 int advec_diff_dof_idx,
84 const ScratchData<dim, dim, number> &scratch_data;
95 adaflo::LevelSetOKZSolverComputeCurvatureParameter curv_adaflo_params;
99 std::shared_ptr<adaflo::LevelSetOKZSolverComputeCurvature<dim>> curvature_operation;
100 std::shared_ptr<LevelSet::NormalVectorOperationAdaflo<dim, number>>
101 normal_vector_operation_adaflo;
106 adaflo::DiagonalPreconditioner<number> preconditioner;
110 std::shared_ptr<adaflo::BlockMatrixExtension> projection_matrix;
111 std::shared_ptr<adaflo::BlockILUExtension> ilu_projection_matrix;
115 dealii::AlignedVector<dealii::VectorizedArray<number>> cell_diameters;
116 number cell_diameter_min;
117 number cell_diameter_max;
119 unsigned int verbosity_level;
121 const NormalVectorData<number> &normal_vector_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