Reference documentation for deal.II version 9.2.0
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Public Types | Public Member Functions | Private Member Functions | List of all members
MatrixFreeOperators::MassOperator< dim, fe_degree, n_q_points_1d, n_components, VectorType, VectorizedArrayType > Class Template Reference

#include <deal.II/matrix_free/operators.h>

Inheritance diagram for MatrixFreeOperators::MassOperator< dim, fe_degree, n_q_points_1d, n_components, VectorType, VectorizedArrayType >:
[legend]

Public Types

using value_type = typename Base< dim, VectorType, VectorizedArrayType >::value_type
 
using size_type = typename Base< dim, VectorType, VectorizedArrayType >::size_type
 
- Public Types inherited from MatrixFreeOperators::Base< dim, LinearAlgebra::distributed::Vector< double >, VectorizedArray< typename LinearAlgebra::distributed::Vector< double > ::value_type > >
using value_type = typename LinearAlgebra::distributed::Vector< double > ::value_type
 
using size_type = typename LinearAlgebra::distributed::Vector< double > ::size_type
 

Public Member Functions

 MassOperator ()
 
virtual void compute_diagonal () override
 
- Public Member Functions inherited from MatrixFreeOperators::Base< dim, LinearAlgebra::distributed::Vector< double >, VectorizedArray< typename LinearAlgebra::distributed::Vector< double > ::value_type > >
 Base ()
 
virtual ~Base () override=default
 
virtual void clear ()
 
void initialize (std::shared_ptr< const MatrixFree< dim, value_type, VectorizedArray< typename LinearAlgebra::distributed::Vector< double > ::value_type > >> data, const std::vector< unsigned int > &selected_row_blocks=std::vector< unsigned int >(), const std::vector< unsigned int > &selected_column_blocks=std::vector< unsigned int >())
 
void initialize (std::shared_ptr< const MatrixFree< dim, value_type, VectorizedArray< typename LinearAlgebra::distributed::Vector< double > ::value_type > >> data, const MGConstrainedDoFs &mg_constrained_dofs, const unsigned int level, const std::vector< unsigned int > &selected_row_blocks=std::vector< unsigned int >())
 
void initialize (std::shared_ptr< const MatrixFree< dim, value_type, VectorizedArray< typename LinearAlgebra::distributed::Vector< double > ::value_type > >> data_, const std::vector< MGConstrainedDoFs > &mg_constrained_dofs, const unsigned int level, const std::vector< unsigned int > &selected_row_blocks=std::vector< unsigned int >())
 
size_type m () const
 
size_type n () const
 
void vmult_interface_down (LinearAlgebra::distributed::Vector< double > &dst, const LinearAlgebra::distributed::Vector< double > &src) const
 
void vmult_interface_up (LinearAlgebra::distributed::Vector< double > &dst, const LinearAlgebra::distributed::Vector< double > &src) const
 
void vmult (LinearAlgebra::distributed::Vector< double > &dst, const LinearAlgebra::distributed::Vector< double > &src) const
 
void Tvmult (LinearAlgebra::distributed::Vector< double > &dst, const LinearAlgebra::distributed::Vector< double > &src) const
 
void vmult_add (LinearAlgebra::distributed::Vector< double > &dst, const LinearAlgebra::distributed::Vector< double > &src) const
 
void Tvmult_add (LinearAlgebra::distributed::Vector< double > &dst, const LinearAlgebra::distributed::Vector< double > &src) const
 
value_type el (const unsigned int row, const unsigned int col) const
 
virtual std::size_t memory_consumption () const
 
void initialize_dof_vector (LinearAlgebra::distributed::Vector< double > &vec) const
 
std::shared_ptr< const MatrixFree< dim, value_type, VectorizedArray< typename LinearAlgebra::distributed::Vector< double > ::value_type > > > get_matrix_free () const
 
const std::shared_ptr< DiagonalMatrix< LinearAlgebra::distributed::Vector< double > > > & get_matrix_diagonal_inverse () const
 
const std::shared_ptr< DiagonalMatrix< LinearAlgebra::distributed::Vector< double > > > & get_matrix_diagonal () const
 
void precondition_Jacobi (LinearAlgebra::distributed::Vector< double > &dst, const LinearAlgebra::distributed::Vector< double > &src, const value_type omega) const
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
 Subscriptor (Subscriptor &&) noexcept
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
Subscriptoroperator= (Subscriptor &&) noexcept
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
template<typename StreamType >
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Private Member Functions

virtual void apply_add (VectorType &dst, const VectorType &src) const override
 
void local_apply_cell (const MatrixFree< dim, value_type, VectorizedArrayType > &data, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
 

Additional Inherited Members

- Static Public Member Functions inherited from Subscriptor
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 
- Protected Member Functions inherited from MatrixFreeOperators::Base< dim, LinearAlgebra::distributed::Vector< double >, VectorizedArray< typename LinearAlgebra::distributed::Vector< double > ::value_type > >
void preprocess_constraints (LinearAlgebra::distributed::Vector< double > &dst, const LinearAlgebra::distributed::Vector< double > &src) const
 
void postprocess_constraints (LinearAlgebra::distributed::Vector< double > &dst, const LinearAlgebra::distributed::Vector< double > &src) const
 
void set_constrained_entries_to_one (LinearAlgebra::distributed::Vector< double > &dst) const
 
virtual void apply_add (LinearAlgebra::distributed::Vector< double > &dst, const LinearAlgebra::distributed::Vector< double > &src) const=0
 
virtual void Tapply_add (LinearAlgebra::distributed::Vector< double > &dst, const LinearAlgebra::distributed::Vector< double > &src) const
 
- Protected Attributes inherited from MatrixFreeOperators::Base< dim, LinearAlgebra::distributed::Vector< double >, VectorizedArray< typename LinearAlgebra::distributed::Vector< double > ::value_type > >
std::shared_ptr< const MatrixFree< dim, value_type, VectorizedArray< typename LinearAlgebra::distributed::Vector< double > ::value_type > > > data
 
std::shared_ptr< DiagonalMatrix< LinearAlgebra::distributed::Vector< double > > > diagonal_entries
 
std::shared_ptr< DiagonalMatrix< LinearAlgebra::distributed::Vector< double > > > inverse_diagonal_entries
 
std::vector< unsigned intselected_rows
 
std::vector< unsigned intselected_columns
 

Detailed Description

template<int dim, int fe_degree, int n_q_points_1d = fe_degree + 1, int n_components = 1, typename VectorType = LinearAlgebra::distributed::Vector<double>, typename VectorizedArrayType = VectorizedArray<typename VectorType::value_type>>
class MatrixFreeOperators::MassOperator< dim, fe_degree, n_q_points_1d, n_components, VectorType, VectorizedArrayType >

This class implements the operation of the action of a mass matrix.

Note that this class only supports the non-blocked vector variant of the Base operator because only a single FEEvaluation object is used in the apply function.

Author
Daniel Arndt, 2016

Definition at line 747 of file operators.h.

Member Typedef Documentation

◆ value_type

template<int dim, int fe_degree, int n_q_points_1d = fe_degree + 1, int n_components = 1, typename VectorType = LinearAlgebra::distributed::Vector<double>, typename VectorizedArrayType = VectorizedArray<typename VectorType::value_type>>
using MatrixFreeOperators::MassOperator< dim, fe_degree, n_q_points_1d, n_components, VectorType, VectorizedArrayType >::value_type = typename Base<dim, VectorType, VectorizedArrayType>::value_type

Number alias.

Definition at line 754 of file operators.h.

◆ size_type

template<int dim, int fe_degree, int n_q_points_1d = fe_degree + 1, int n_components = 1, typename VectorType = LinearAlgebra::distributed::Vector<double>, typename VectorizedArrayType = VectorizedArray<typename VectorType::value_type>>
using MatrixFreeOperators::MassOperator< dim, fe_degree, n_q_points_1d, n_components, VectorType, VectorizedArrayType >::size_type = typename Base<dim, VectorType, VectorizedArrayType>::size_type

size_type needed for preconditioner classes.

Definition at line 760 of file operators.h.

Constructor & Destructor Documentation

◆ MassOperator()

template<int dim, int fe_degree, int n_q_points_1d, int n_components, typename VectorType , typename VectorizedArrayType >
MatrixFreeOperators::MassOperator< dim, fe_degree, n_q_points_1d, n_components, VectorType, VectorizedArrayType >::MassOperator

Constructor.

Definition at line 1775 of file operators.h.

Member Function Documentation

◆ compute_diagonal()

template<int dim, int fe_degree, int n_q_points_1d, int n_components, typename VectorType , typename VectorizedArrayType >
void MatrixFreeOperators::MassOperator< dim, fe_degree, n_q_points_1d, n_components, VectorType, VectorizedArrayType >::compute_diagonal
overridevirtual

For preconditioning, we store a lumped mass matrix at the diagonal entries.

Implements MatrixFreeOperators::Base< dim, LinearAlgebra::distributed::Vector< double >, VectorizedArray< typename LinearAlgebra::distributed::Vector< double > ::value_type > >.

Definition at line 1793 of file operators.h.

◆ apply_add()

template<int dim, int fe_degree, int n_q_points_1d, int n_components, typename VectorType , typename VectorizedArrayType >
void MatrixFreeOperators::MassOperator< dim, fe_degree, n_q_points_1d, n_components, VectorType, VectorizedArrayType >::apply_add ( VectorType dst,
const VectorType src 
) const
overrideprivatevirtual

Applies the mass matrix operation on an input vector. It is assumed that the passed input and output vector are correctly initialized using initialize_dof_vector().

Definition at line 1837 of file operators.h.

◆ local_apply_cell()

template<int dim, int fe_degree, int n_q_points_1d = fe_degree + 1, int n_components = 1, typename VectorType = LinearAlgebra::distributed::Vector<double>, typename VectorizedArrayType = VectorizedArray<typename VectorType::value_type>>
void MatrixFreeOperators::MassOperator< dim, fe_degree, n_q_points_1d, n_components, VectorType, VectorizedArrayType >::local_apply_cell ( const MatrixFree< dim, value_type, VectorizedArrayType > &  data,
VectorType dst,
const VectorType src,
const std::pair< unsigned int, unsigned int > &  cell_range 
) const
private

For this operator, there is just a cell contribution.

Definition at line 1859 of file operators.h.


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