NormalVectorOperator< dim, number > Class Template Reference

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

#include <normal_vector_operator.hpp>

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

Public 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
 
- 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 >
 

Public Member Functions

 NormalVectorOperator (const ScratchData< dim, dim, number > &scratch_data_in, const NormalVectorData< number > &normal_vector_data_in, const std::array< unsigned int, dim > &normal_dof_indices_per_block_in, const unsigned int normal_quad_idx_in, const unsigned int ls_dof_idx_in, const VectorType *solution_level_set_in=nullptr)
 
void compute_system_matrix_and_rhs (const VectorType &level_set_in, BlockVectorType &rhs) const final
 Compute the system matrix and right-hand side block vector.
 
void vmult (BlockVectorType &dst, const BlockVectorType &src) const final
 
void create_rhs (BlockVectorType &dst, const VectorType &src) const final
 Compute the right-hand side vector for block vectors dst.
 
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 (BlockVectorType &diagonal) const final
 Compute the inverse diagonal using matrix-free techniques for block vectors.
 
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 (VectorType &, const BlockVectorType &) const
 Compute the right-hand side vector for block vectors src.
 
virtual void vmult (VectorType &, const VectorType &) const
 
virtual void compute_inverse_diagonal_from_matrixfree (VectorType &) const
 Compute the inverse diagonal using matrix-free techniques.
 
- 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 BlockVectorType &, VectorType &) const
 Compute the system matrix and right-hand side vector for block vectors.
 
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 ()
 

Static Public Member Functions

static void get_unit_normals_at_quadrature (const dealii::FEValues< dim > &fe_values, const BlockVectorType &normal_vector_field_in, std::vector< dealii::Tensor< 1, dim, number > > &unit_normal_at_quadrature, const number zero=1e-16)
 

Private Member Functions

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

Private Attributes

const ScratchData< dim, dim, number > & scratch_data
 
const NormalVectorData< number > & normal_vector_data
 
const std::array< unsigned int, dim > normal_dof_indices_per_block
 
const unsigned int normal_quad_idx
 
const unsigned int ls_dof_idx
 
const VectorTypesolution_level_set
 
dealii::AlignedVector< dealii::VectorizedArray< number > > damping
 

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
 
- Protected Attributes inherited from MeltPoolDG::OperatorMatrixBased< dim, number >
SparseMatrixType system_matrix
 
SparsityPatternType dsp
 

Member Typedef Documentation

◆ BlockVectorType

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

◆ SparseMatrixType

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

◆ VectorizedArrayType

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

◆ VectorType

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

Constructor & Destructor Documentation

◆ NormalVectorOperator()

template<int dim, typename number >
MeltPoolDG::LevelSet::NormalVectorOperator< dim, number >::NormalVectorOperator ( const ScratchData< dim, dim, number > &  scratch_data_in,
const NormalVectorData< number > &  normal_vector_data_in,
const std::array< unsigned int, dim > &  normal_dof_indices_per_block_in,
const unsigned int  normal_quad_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::NormalVectorOperator< dim, number >::compute_inverse_diagonal_from_matrixfree ( BlockVectorType ) const
finalvirtual

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

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

◆ compute_system_matrix_and_rhs()

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

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

Parameters
srcSource vector.
dstDestination block vector.

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

◆ compute_system_matrix_from_matrixfree()

template<int dim, typename number >
void MeltPoolDG::LevelSet::NormalVectorOperator< 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::NormalVectorOperator< dim, number >::create_rhs ( BlockVectorType ,
const VectorType  
) const
finalvirtual

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

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

◆ get_unit_normals_at_quadrature()

template<int dim, typename number >
void MeltPoolDG::LevelSet::NormalVectorOperator< dim, number >::get_unit_normals_at_quadrature ( const dealii::FEValues< dim > &  fe_values,
const BlockVectorType normal_vector_field_in,
std::vector< dealii::Tensor< 1, dim, number > > &  unit_normal_at_quadrature,
const number  zero = 1e-16 
)
static

◆ reinit()

template<int dim, typename number >
void MeltPoolDG::LevelSet::NormalVectorOperator< 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::NormalVectorOperator< dim, number >::tangent_local_cell_operation ( FECellIntegrator< dim, 1, number > &  normal_vals,
FECellIntegrator< dim, 1, number > &  level_set_vals,
const bool  do_reinit_cells 
) const
private

◆ vmult()

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

Apply the matrix-free operator for block vectors.

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

Member Data Documentation

◆ damping

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

◆ ls_dof_idx

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

◆ normal_dof_indices_per_block

template<int dim, typename number >
const std::array<unsigned int, dim> MeltPoolDG::LevelSet::NormalVectorOperator< dim, number >::normal_dof_indices_per_block
private

◆ normal_quad_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::NormalVectorOperator< dim, number >::normal_quad_idx
private

◆ normal_vector_data

template<int dim, typename number >
const NormalVectorData<number>& MeltPoolDG::LevelSet::NormalVectorOperator< dim, number >::normal_vector_data
private

◆ scratch_data

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

◆ solution_level_set

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

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