CurvatureOperator< dim, number > Class Template Reference

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

#include <curvature_operator.hpp>

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

Public Member Functions

 CurvatureOperator (const ScratchData< dim, dim, number > &scratch_data_in, const CurvatureData< number > &curvature_data, const unsigned int curv_dof_idx_in, const unsigned int curv_quad_idx_in, const unsigned int normal_dof_idx_in, const unsigned int ls_dof_idx_in, const VectorType *solution_level_set_in=nullptr)
 
void compute_system_matrix_and_rhs (const BlockVectorType &solution_normal_vector_in, VectorType &rhs) const final
 Compute the system matrix and right-hand side vector for block vectors.
 
void vmult (VectorType &dst, const VectorType &src) const final
 
void create_rhs (VectorType &dst, const BlockVectorType &src) const final
 Compute the right-hand side vector for block vectors src.
 
void compute_system_matrix_from_matrixfree (dealii::TrilinosWrappers::SparseMatrix &system_matrix) const final
 Compute a sparse matrix using matrix-free techniques.
 
void compute_inverse_diagonal_from_matrixfree (VectorType &diagonal) const final
 Compute the inverse diagonal using matrix-free techniques.
 
void reinit () final
 Reinitialize data structures. Can be overridden by derived classes.
 
- Public Member Functions inherited from MeltPoolDG::OperatorMatrixFree< dim, number >
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 vmult (BlockVectorType &, const BlockVectorType &) const
 
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.
 
- Public Member Functions inherited from MeltPoolDG::OperatorMatrixBased< dim, number >
virtual ~OperatorMatrixBased ()=default
 
virtual void compute_system_matrix_and_rhs (const VectorType &, VectorType &) const
 Compute the system matrix and right-hand side vector.
 
virtual void compute_system_matrix_and_rhs (const VectorType &, BlockVectorType &) const
 Compute the system matrix and right-hand side block vector.
 
virtual void reinit_sparsity_pattern (const ScratchData< dim, dim, number > &scratch_data)
 Reinitialize the sparsity pattern of the system matrix.
 
const SparseMatrixTypeget_system_matrix () const
 
SparseMatrixTypeget_system_matrix ()
 

Private Types

using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 
using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number >
 
using VectorizedArrayType = dealii::VectorizedArray< number >
 
using SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix
 
using vector = dealii::Tensor< 1, dim, dealii::VectorizedArray< number > >
 
using scalar = dealii::VectorizedArray< number >
 

Private Member Functions

void tangent_local_cell_operation (FECellIntegrator< dim, 1, number > &curv_vals, FECellIntegrator< dim, 1, number > &level_set_vals, const bool do_reinit_cells) const
 

Private Attributes

const ScratchData< dim, dim, number > & scratch_data
 
const CurvatureData< number > & curvature_data
 
const unsigned int curv_dof_idx
 
const unsigned int curv_quad_idx
 
const unsigned int normal_dof_idx
 
const number tolerance_normal_vector
 
const unsigned int ls_dof_idx
 
const VectorTypesolution_level_set
 
dealii::AlignedVector< dealii::VectorizedArray< number > > damping
 

Additional Inherited Members

- Public Types inherited from MeltPoolDG::OperatorMatrixFree< dim, number >
using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 
using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number >
 
using SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix
 
- Public Types inherited from MeltPoolDG::OperatorMatrixBased< dim, number >
using SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix
 
using SparsityPatternType = dealii::TrilinosWrappers::SparsityPattern
 
using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 
using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number >
 
- 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
 
- Protected Attributes inherited from MeltPoolDG::OperatorMatrixBased< dim, number >
SparseMatrixType system_matrix
 
SparsityPatternType dsp
 

Detailed Description

template<int dim, typename number>
class MeltPoolDG::LevelSet::CurvatureOperator< dim, number >

This function calculates the curvature of the current level set function being the solution of an intermediate projection step

        (w, κ)   +   η_κ (∇w, ∇κ)  = (w,∇·n_ϕ)
              Ω                  Ω            Ω

with test function w, curvature κ, damping parameter η_κ and the normal to the level set function n_ϕ.

Member Typedef Documentation

◆ BlockVectorType

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

◆ scalar

template<int dim, typename number >
using MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::scalar = dealii::VectorizedArray<number>
private

◆ SparseMatrixType

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

◆ vector

template<int dim, typename number >
using MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::vector = dealii::Tensor<1, dim, dealii::VectorizedArray<number> >
private

◆ VectorizedArrayType

template<int dim, typename number >
using MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::VectorizedArrayType = dealii::VectorizedArray<number>
private

◆ VectorType

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

Constructor & Destructor Documentation

◆ CurvatureOperator()

template<int dim, typename number >
MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::CurvatureOperator ( const ScratchData< dim, dim, number > &  scratch_data_in,
const CurvatureData< number > &  curvature_data,
const unsigned int  curv_dof_idx_in,
const unsigned int  curv_quad_idx_in,
const unsigned int  normal_dof_idx_in,
const unsigned int  ls_dof_idx_in,
const VectorType solution_level_set_in = nullptr 
)

Member Function Documentation

◆ compute_inverse_diagonal_from_matrixfree()

template<int dim, typename number >
void MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::compute_inverse_diagonal_from_matrixfree ( VectorType ) const
finalvirtual

Compute the inverse diagonal using matrix-free techniques.

Parameters
diagVector representing the diagonal.

Reimplemented from MeltPoolDG::OperatorMatrixFree< dim, number >.

◆ compute_system_matrix_and_rhs()

template<int dim, typename number >
void MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::compute_system_matrix_and_rhs ( const BlockVectorType ,
VectorType  
) const
finalvirtual

Compute the system matrix and right-hand side vector for block vectors.

Parameters
srcSource block vector.
dstDestination vector.

Reimplemented from MeltPoolDG::OperatorMatrixBased< dim, number >.

◆ compute_system_matrix_from_matrixfree()

template<int dim, typename number >
void MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::compute_system_matrix_from_matrixfree ( dealii::TrilinosWrappers::SparseMatrix &  ) const
finalvirtual

Compute a sparse matrix using matrix-free techniques.

Parameters
matrixSparse matrix to compute.

Reimplemented from MeltPoolDG::OperatorMatrixFree< dim, number >.

◆ create_rhs()

template<int dim, typename number >
void MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::create_rhs ( VectorType ,
const BlockVectorType  
) const
finalvirtual

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

Reimplemented from MeltPoolDG::OperatorMatrixFree< dim, number >.

◆ reinit()

template<int dim, typename number >
void MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::reinit ( )
finalvirtual

Reinitialize data structures. Can be overridden by derived classes.

Reimplemented from MeltPoolDG::OperatorBase< number >.

◆ tangent_local_cell_operation()

template<int dim, typename number >
void MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::tangent_local_cell_operation ( FECellIntegrator< dim, 1, number > &  curv_vals,
FECellIntegrator< dim, 1, number > &  level_set_vals,
const bool  do_reinit_cells 
) const
private

◆ vmult()

template<int dim, typename number >
void MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::vmult ( VectorType ,
const VectorType  
) const
finalvirtual

Apply the matrix-free operator to a vector src and store It inside dst. This function is used in the iterative linear solver.

Parameters
srcSource vector.
dstDestination vector.

Reimplemented from MeltPoolDG::OperatorMatrixFree< dim, number >.

Member Data Documentation

◆ curv_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::curv_dof_idx
private

◆ curv_quad_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::curv_quad_idx
private

◆ curvature_data

template<int dim, typename number >
const CurvatureData<number>& MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::curvature_data
private

◆ damping

template<int dim, typename number >
dealii::AlignedVector<dealii::VectorizedArray<number> > MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::damping
private

◆ ls_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::ls_dof_idx
private

◆ normal_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::normal_dof_idx
private

◆ scratch_data

template<int dim, typename number >
const ScratchData<dim, dim, number>& MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::scratch_data
private

◆ solution_level_set

template<int dim, typename number >
const VectorType* MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::solution_level_set
private

◆ tolerance_normal_vector

template<int dim, typename number >
const number MeltPoolDG::LevelSet::CurvatureOperator< dim, number >::tolerance_normal_vector
private

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