ASPECT
Public Member Functions | Private Member Functions | Private Attributes | List of all members
aspect::MatrixFreeStokesOperators::MassMatrixOperator< dim, degree_p, number > Class Template Reference

Inherits Base< dim, ::LinearAlgebra::distributed::Vector< number > >.

Public Member Functions

 MassMatrixOperator ()
 
void clear () override
 
void reinit (const Mapping< dim > &mapping, const DoFHandler< dim > &dof_handler_v, const DoFHandler< dim > &dof_handler_p, const AffineConstraints< number > &constraints_v, const AffineConstraints< number > &constraints_p, std::shared_ptr< MatrixFree< dim, double >> mf_storage, const unsigned int level=numbers::invalid_unsigned_int)
 
void set_cell_data (const OperatorCellData< dim, number > &data)
 
void compute_diagonal () override
 

Private Member Functions

void apply_add (::LinearAlgebra::distributed::Vector< number > &dst, const ::LinearAlgebra::distributed::Vector< number > &src) const override
 
void local_apply (const ::MatrixFree< dim, number > &data, ::LinearAlgebra::distributed::Vector< number > &dst, const ::LinearAlgebra::distributed::Vector< number > &src, const std::pair< unsigned int, unsigned int > &cell_range) const
 
void inner_cell_operation (FEEvaluation< dim, degree_p, degree_p+2, 1, number > &pressure) const
 

Private Attributes

const OperatorCellData< dim, number > * cell_data
 

Detailed Description

template<int dim, int degree_p, typename number>
class aspect::MatrixFreeStokesOperators::MassMatrixOperator< dim, degree_p, number >

Operator for the pressure mass matrix used in the block preconditioner

Definition at line 345 of file matrix_free_operators.h.

Constructor & Destructor Documentation

§ MassMatrixOperator()

template<int dim, int degree_p, typename number>
aspect::MatrixFreeStokesOperators::MassMatrixOperator< dim, degree_p, number >::MassMatrixOperator ( )

Constructor

Member Function Documentation

§ clear()

template<int dim, int degree_p, typename number>
void aspect::MatrixFreeStokesOperators::MassMatrixOperator< dim, degree_p, number >::clear ( )
override

Reset the object.

§ reinit()

template<int dim, int degree_p, typename number>
void aspect::MatrixFreeStokesOperators::MassMatrixOperator< dim, degree_p, number >::reinit ( const Mapping< dim > &  mapping,
const DoFHandler< dim > &  dof_handler_v,
const DoFHandler< dim > &  dof_handler_p,
const AffineConstraints< number > &  constraints_v,
const AffineConstraints< number > &  constraints_p,
std::shared_ptr< MatrixFree< dim, double >>  mf_storage,
const unsigned int  level = numbers::invalid_unsigned_int 
)

Initialize the MatrixFree object given in mf_storage and use that to initialize this operator.

§ set_cell_data()

template<int dim, int degree_p, typename number>
void aspect::MatrixFreeStokesOperators::MassMatrixOperator< dim, degree_p, number >::set_cell_data ( const OperatorCellData< dim, number > &  data)

Pass in a reference to the problem data.

§ compute_diagonal()

template<int dim, int degree_p, typename number>
void aspect::MatrixFreeStokesOperators::MassMatrixOperator< dim, degree_p, number >::compute_diagonal ( )
override

Computes the diagonal of the matrix. Since matrix-free operators have not access to matrix elements, we must apply the matrix-free operator to the unit vectors to recover the diagonal.

§ apply_add()

template<int dim, int degree_p, typename number>
void aspect::MatrixFreeStokesOperators::MassMatrixOperator< dim, degree_p, number >::apply_add ( ::LinearAlgebra::distributed::Vector< number > &  dst,
const ::LinearAlgebra::distributed::Vector< number > &  src 
) const
overrideprivate

Performs the application of the matrix-free operator. This function is called by vmult() functions MatrixFreeOperators::Base.

§ local_apply()

template<int dim, int degree_p, typename number>
void aspect::MatrixFreeStokesOperators::MassMatrixOperator< dim, degree_p, number >::local_apply ( const ::MatrixFree< dim, number > &  data,
::LinearAlgebra::distributed::Vector< number > &  dst,
const ::LinearAlgebra::distributed::Vector< number > &  src,
const std::pair< unsigned int, unsigned int > &  cell_range 
) const
private

Defines the application of the cell matrix.

§ inner_cell_operation()

template<int dim, int degree_p, typename number>
void aspect::MatrixFreeStokesOperators::MassMatrixOperator< dim, degree_p, number >::inner_cell_operation ( FEEvaluation< dim, degree_p, degree_p+2, 1, number > &  pressure) const
private

This function contains the inner-most operation done on a single cell

Member Data Documentation

§ cell_data

template<int dim, int degree_p, typename number>
const OperatorCellData<dim,number>* aspect::MatrixFreeStokesOperators::MassMatrixOperator< dim, degree_p, number >::cell_data
private

A pointer to the current cell data that contains viscosity and other required parameters per cell.

Definition at line 413 of file matrix_free_operators.h.


The documentation for this class was generated from the following file: