OperatorMatrixFree< dim, number > Class Template Reference

Developer Documentation: MeltPoolDG::OperatorMatrixFree< dim, number > Class Template Reference
Developer Documentation
MeltPoolDG::OperatorMatrixFree< dim, number > Class Template Reference

Operator handling matrix-free computations. More...

#include <operator_base.hpp>

Inheritance diagram for MeltPoolDG::OperatorMatrixFree< dim, number >:
[legend]
Collaboration diagram for MeltPoolDG::OperatorMatrixFree< dim, number >:
[legend]

Public Types

using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 
using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number >
 
using SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix
 

Public Member Functions

virtual ~OperatorMatrixFree ()=default
 
virtual void create_rhs (VectorType &, const VectorType &) const
 Compute the right-hand side vector.
 
virtual void create_rhs (BlockVectorType &, const VectorType &) const
 Compute the right-hand side vector for block vectors dst.
 
virtual void create_rhs (VectorType &, const BlockVectorType &) const
 Compute the right-hand side vector for block vectors src.
 
virtual void vmult (VectorType &, const VectorType &) const
 
virtual void vmult (BlockVectorType &, const BlockVectorType &) const
 
virtual void compute_system_matrix_from_matrixfree (dealii::TrilinosWrappers::SparseMatrix &) const
 Compute a sparse matrix using matrix-free techniques.
 
virtual void compute_inverse_diagonal_from_matrixfree (VectorType &) const
 Compute the inverse diagonal using matrix-free techniques.
 
virtual void compute_inverse_diagonal_from_matrixfree (BlockVectorType &) const
 Compute the inverse diagonal using matrix-free techniques for block vectors.
 
- Public Member Functions inherited from MeltPoolDG::OperatorBase< number >
virtual ~OperatorBase ()=default
 
void reset_dof_index (const unsigned int dof_idx_in)
 Set the index for the current degrees of freedom (DoF).
 
void reset_time_increment (const number dt)
 Set the time increment for the operator.
 
virtual void pre ()
 Prepare for computations (e.g. update ghost values). Can be overridden by derived classes.
 
virtual void post ()
 Finalize for computations (e.g. zero out ghost values). Can be overridden by derived classes.
 
virtual void reinit ()
 Reinitialize data structures. Can be overridden by derived classes.
 

Additional Inherited Members

- Protected Attributes inherited from MeltPoolDG::OperatorBase< number >
unsigned int dof_idx = dealii::numbers::invalid_unsigned_int
 
number time_increment = numbers::invalid_double
 
number time_increment_inv = numbers::invalid_double
 

Detailed Description

template<int dim, typename number>
class MeltPoolDG::OperatorMatrixFree< dim, number >

Operator handling matrix-free computations.

This class implements methods for performing operations without explicit assembly of matrices.

Member Typedef Documentation

◆ BlockVectorType

template<int dim, typename number >
using MeltPoolDG::OperatorMatrixFree< dim, number >::BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>

◆ SparseMatrixType

template<int dim, typename number >
using MeltPoolDG::OperatorMatrixFree< dim, number >::SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix

◆ VectorType

template<int dim, typename number >
using MeltPoolDG::OperatorMatrixFree< dim, number >::VectorType = dealii::LinearAlgebra::distributed::Vector<number>

Constructor & Destructor Documentation

◆ ~OperatorMatrixFree()

template<int dim, typename number >
virtual MeltPoolDG::OperatorMatrixFree< dim, number >::~OperatorMatrixFree ( )
virtualdefault

Member Function Documentation

◆ compute_inverse_diagonal_from_matrixfree() [1/2]

template<int dim, typename number >
virtual void MeltPoolDG::OperatorMatrixFree< dim, number >::compute_inverse_diagonal_from_matrixfree ( BlockVectorType ) const
inlinevirtual

Compute the inverse diagonal using matrix-free techniques for block vectors.

Reimplemented in MeltPoolDG::LevelSet::NormalVectorOperator< dim, number >.

◆ compute_inverse_diagonal_from_matrixfree() [2/2]

◆ compute_system_matrix_from_matrixfree()

◆ create_rhs() [1/3]

template<int dim, typename number >
virtual void MeltPoolDG::OperatorMatrixFree< dim, number >::create_rhs ( BlockVectorType ,
const VectorType  
) const
inlinevirtual

Compute the right-hand side vector for block vectors dst.

Reimplemented in MeltPoolDG::LevelSet::NormalVectorOperator< dim, number >.

◆ create_rhs() [2/3]

template<int dim, typename number >
virtual void MeltPoolDG::OperatorMatrixFree< dim, number >::create_rhs ( VectorType ,
const BlockVectorType  
) const
inlinevirtual

Compute the right-hand side vector for block vectors src.

Reimplemented in MeltPoolDG::LevelSet::CurvatureOperator< dim, number >.

◆ create_rhs() [3/3]

template<int dim, typename number >
virtual void MeltPoolDG::OperatorMatrixFree< dim, number >::create_rhs ( VectorType ,
const VectorType  
) const
inlinevirtual

◆ vmult() [1/2]

template<int dim, typename number >
virtual void MeltPoolDG::OperatorMatrixFree< dim, number >::vmult ( BlockVectorType ,
const BlockVectorType  
) const
inlinevirtual

Apply the matrix-free operator for block vectors.

Reimplemented in MeltPoolDG::LevelSet::NormalVectorOperator< dim, number >.

◆ vmult() [2/2]


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