NormalVectorOperation< dim, number > Class Template Reference

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

#include <normal_vector_operation.hpp>

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

Public Member Functions

 NormalVectorOperation (const ScratchData< dim, dim, number > &scratch_data_in, const NormalVectorData< number > &normal_vector_data, const VectorType &solution_level_set, const std::array< unsigned int, dim > &normal_dof_indices_per_block_in, const unsigned int normal_no_bc_dof_idx_in, const unsigned int normal_quad_idx_in, const unsigned int ls_dof_idx_in)
 
void reinit () override
 
void solve () override
 
const BlockVectorTypeget_solution_normal_vector () const override
 
BlockVectorTypeget_solution_normal_vector () override
 
void attach_vectors (std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors) override
 
- Public Member Functions inherited from MeltPoolDG::LevelSet::NormalVectorOperationBase< dim, number >
virtual ~NormalVectorOperationBase ()=default
 

Private Types

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

Private Member Functions

void create_operator ()
 

Private Attributes

const ScratchData< dim, dim, number > & scratch_data
 
const NormalVectorData< number > normal_vector_data
 
const VectorTypesolution_level_set
 
const unsigned int normal_no_bc_dof_idx
 
const std::array< unsigned int, dim > normal_dof_indices_per_block
 
const unsigned int normal_quad_idx
 
const unsigned int ls_dof_idx
 
TimeIntegration::SolutionHistory< BlockVectorTypesolution_history
 
std::unique_ptr< Predictor< BlockVectorType, number > > predictor
 
BlockVectorType solution_normal_vector_predictor
 
BlockVectorType rhs
 
std::unique_ptr< NormalVectorOperator< dim, number > > normal_vector_operator
 
Preconditioner< dim, BlockVectorType, number > preconditioner
 

Detailed Description

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

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

        (w, n_ϕ)  + η_n (∇w, ∇n_ϕ)  = (w,∇ϕ)
                Ω                 Ω            Ω

with test function w, the normal vector n_ϕ, damping parameter η_n and the level set function ϕ.

!!!! the normal vector field is not normalized to length one, it actually represents the gradient of the level set function !!!!

Member Typedef Documentation

◆ BlockVectorType

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

◆ SparseMatrixType

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

◆ VectorType

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

Constructor & Destructor Documentation

◆ NormalVectorOperation()

template<int dim, typename number >
MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::NormalVectorOperation ( const ScratchData< dim, dim, number > &  scratch_data_in,
const NormalVectorData< number > &  normal_vector_data,
const VectorType solution_level_set,
const std::array< unsigned int, dim > &  normal_dof_indices_per_block_in,
const unsigned int  normal_no_bc_dof_idx_in,
const unsigned int  normal_quad_idx_in,
const unsigned int  ls_dof_idx_in 
)

Member Function Documentation

◆ attach_vectors()

template<int dim, typename number >
void MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::attach_vectors ( std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &  vectors)
overridevirtual

◆ create_operator()

template<int dim, typename number >
void MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::create_operator ( )
private

This function creates the normal vector operator for assembling the system operator (either matrix based or matrix free) and the right-hand side.

◆ get_solution_normal_vector() [1/2]

template<int dim, typename number >
const NormalVectorOperation< dim, number >::BlockVectorType & MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::get_solution_normal_vector ( ) const
overridevirtual

◆ get_solution_normal_vector() [2/2]

template<int dim, typename number >
NormalVectorOperation< dim, number >::BlockVectorType & MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::get_solution_normal_vector ( )
overridevirtual

◆ reinit()

template<int dim, typename number >
void MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::reinit ( )
overridevirtual

◆ solve()

template<int dim, typename number >
void MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::solve ( )
overridevirtual

Member Data Documentation

◆ ls_dof_idx

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

◆ normal_dof_indices_per_block

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

◆ normal_no_bc_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::normal_no_bc_dof_idx
private

◆ normal_quad_idx

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

◆ normal_vector_data

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

◆ normal_vector_operator

template<int dim, typename number >
std::unique_ptr<NormalVectorOperator<dim, number> > MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::normal_vector_operator
private

◆ preconditioner

template<int dim, typename number >
Preconditioner<dim, BlockVectorType, number> MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::preconditioner
private

◆ predictor

template<int dim, typename number >
std::unique_ptr<Predictor<BlockVectorType, number> > MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::predictor
private

◆ rhs

template<int dim, typename number >
BlockVectorType MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::rhs
private

◆ scratch_data

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

◆ solution_history

template<int dim, typename number >
TimeIntegration::SolutionHistory<BlockVectorType> MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::solution_history
private

◆ solution_level_set

template<int dim, typename number >
const VectorType& MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::solution_level_set
private

◆ solution_normal_vector_predictor

template<int dim, typename number >
BlockVectorType MeltPoolDG::LevelSet::NormalVectorOperation< dim, number >::solution_normal_vector_predictor
private

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