CurvatureDGOperation< dim, number > Class Template Reference

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

#include <curvature_DG_operation.hpp>

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

Public Member Functions

 CurvatureDGOperation (const ScratchData< dim, dim, number > &scratch_data_in, const unsigned int curvature_dof_idx_in, const unsigned int curvature_quad_idx_in, const BlockVectorType &solution_normal_vector_in, const CurvatureData< number > &curvature_data)
 
void solve ()
 
const dealii::LinearAlgebra::distributed::Vector< number > & get_curvature () const
 
dealii::LinearAlgebra::distributed::Vector< number > & get_curvature ()
 
void reinit ()
 
void attach_vectors (std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors)
 

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 right_hand_side_domain (const dealii::MatrixFree< dim, number > &data, VectorType &dst, const BlockVectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
 
template<uint direction>
void right_hand_side_inner_face (const dealii::MatrixFree< dim, number > &data, VectorType &dst, const BlockVectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
 
template<uint direction>
void right_hand_side_boundary_face (const dealii::MatrixFree< dim, number > &data, VectorType &dst, const BlockVectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
 

Private Attributes

const ScratchData< dim, dim, number > & scratch_data
 
const BlockVectorTypesolution_normal_vector
 
const CurvatureData< number > curvature_data
 
TimeIntegration::SolutionHistory< VectorTypesolution_history
 
const unsigned int curvature_dof_idx
 
const unsigned int curvature_quad_idx
 
const HelmholtzDGOperator< dim, number > helmholtz_operator
 

Member Typedef Documentation

◆ BlockVectorType

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

◆ SparseMatrixType

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

◆ VectorType

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

Constructor & Destructor Documentation

◆ CurvatureDGOperation()

template<int dim, typename number >
MeltPoolDG::LevelSet::CurvatureDGOperation< dim, number >::CurvatureDGOperation ( const ScratchData< dim, dim, number > &  scratch_data_in,
const unsigned int  curvature_dof_idx_in,
const unsigned int  curvature_quad_idx_in,
const BlockVectorType solution_normal_vector_in,
const CurvatureData< number > &  curvature_data 
)

Member Function Documentation

◆ attach_vectors()

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

◆ get_curvature() [1/2]

template<int dim, typename number >
LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::CurvatureDGOperation< dim, number >::get_curvature ( )

◆ get_curvature() [2/2]

template<int dim, typename number >
const LinearAlgebra::distributed::Vector< number > & MeltPoolDG::LevelSet::CurvatureDGOperation< dim, number >::get_curvature ( ) const

◆ reinit()

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

◆ right_hand_side_boundary_face()

template<int dim, typename number >
template<uint direction>
void MeltPoolDG::LevelSet::CurvatureDGOperation< dim, number >::right_hand_side_boundary_face ( const dealii::MatrixFree< dim, number > &  data,
VectorType dst,
const BlockVectorType src,
const std::pair< unsigned int, unsigned int > &  face_range 
) const
inlineprivate

Applies the boundary integral of the right hand side In contrast to the normal operation, the right hand side is not rewritten in divergence form and Gauss divergence theorem is not applied. Therefore this function is empty. We found it to cause less oscillations near singularities.

Parameters
datathe matrix free object
dstdestination where the result is stored
srcsource vector
face_range

◆ right_hand_side_domain()

template<int dim, typename number >
void MeltPoolDG::LevelSet::CurvatureDGOperation< dim, number >::right_hand_side_domain ( const dealii::MatrixFree< dim, number > &  data,
VectorType dst,
const BlockVectorType src,
const std::pair< unsigned int, unsigned int > &  cell_range 
) const
private

Applies the domain integral of the right hand side in the form -(w, ∇ o n_i) Ω

Parameters
datathe matrix free object
dstdestination where the result is stored
srcsource vector
cell_range

1) Normalize normal vector

2) fill right hand side

◆ right_hand_side_inner_face()

template<int dim, typename number >
template<uint direction>
void MeltPoolDG::LevelSet::CurvatureDGOperation< dim, number >::right_hand_side_inner_face ( const dealii::MatrixFree< dim, number > &  data,
VectorType dst,
const BlockVectorType src,
const std::pair< unsigned int, unsigned int > &  face_range 
) const
inlineprivate

Applies the face integral of the right hand side In contrast to the normal operation, the right hand side is not rewritten in divergence form and Gauss divergence theorem is not applied. Therefore this function is empty. We found it to cause less oscillations near singularities.

Parameters
datathe matrix free object
dstdestination where the result is stored
srcsource vector
face_range

◆ solve()

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

Member Data Documentation

◆ curvature_data

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

◆ curvature_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::CurvatureDGOperation< dim, number >::curvature_dof_idx
private

◆ curvature_quad_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::CurvatureDGOperation< dim, number >::curvature_quad_idx
private

◆ helmholtz_operator

template<int dim, typename number >
const HelmholtzDGOperator<dim, number> MeltPoolDG::LevelSet::CurvatureDGOperation< dim, number >::helmholtz_operator
private

◆ scratch_data

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

◆ solution_history

template<int dim, typename number >
TimeIntegration::SolutionHistory<VectorType> MeltPoolDG::LevelSet::CurvatureDGOperation< dim, number >::solution_history
private

◆ solution_normal_vector

template<int dim, typename number >
const BlockVectorType& MeltPoolDG::LevelSet::CurvatureDGOperation< dim, number >::solution_normal_vector
private

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