35class MultigridOperatorBase :
public dealii::EnableObserverPointer
38 typedef Number value_type;
39 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
41 static unsigned int const dimension = dim;
43 MultigridOperatorBase() : dealii::EnableObserverPointer()
47 virtual ~MultigridOperatorBase()
51 virtual dealii::AffineConstraints<Number>
const &
52 get_affine_constraints()
const = 0;
54 virtual dealii::MatrixFree<dim, Number>
const &
55 get_matrix_free()
const = 0;
58 get_dof_index()
const = 0;
60 virtual dealii::types::global_dof_index
63 virtual dealii::types::global_dof_index
67 el(
unsigned int const,
unsigned int const)
const = 0;
70 initialize_dof_vector(VectorType & vector)
const = 0;
73 vmult(VectorType & dst, VectorType
const & src)
const = 0;
76 vmult_add(VectorType & dst, VectorType
const & src)
const = 0;
79 vmult_interface_down(VectorType & dst, VectorType
const & src)
const = 0;
82 vmult_add_interface_up(VectorType & dst, VectorType
const & src)
const = 0;
85 calculate_inverse_diagonal(VectorType & inverse_diagonal_entries)
const = 0;
88 initialize_block_diagonal_preconditioner(
bool const initialize)
const = 0;
91 update_block_diagonal_preconditioner()
const = 0;
94 apply_inverse_block_diagonal(VectorType & dst, VectorType
const & src)
const = 0;
97 apply_inverse_additive_schwarz_matrices(VectorType & dst, VectorType
const & src)
const = 0;
100 compute_factorized_additive_schwarz_matrices()
const = 0;
102#ifdef DEAL_II_WITH_TRILINOS
104 init_system_matrix(dealii::TrilinosWrappers::SparseMatrix & system_matrix,
105 MPI_Comm
const & mpi_comm)
const = 0;
108 calculate_system_matrix(dealii::TrilinosWrappers::SparseMatrix & system_matrix)
const = 0;
111#ifdef DEAL_II_WITH_PETSC
113 init_system_matrix(dealii::PETScWrappers::MPI::SparseMatrix & system_matrix,
114 MPI_Comm
const & mpi_comm)
const = 0;
117 calculate_system_matrix(dealii::PETScWrappers::MPI::SparseMatrix & system_matrix)
const = 0;
121 get_constant_modes(std::vector<std::vector<bool>> & constant_modes,
122 std::vector<std::vector<double>> & constant_modes_values)
const = 0;