HelmholtzDGOperator< dim, number > Class Template Reference

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

#include <helmholtz_DG_operator.hpp>

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

Public Member Functions

 HelmholtzDGOperator (const ScratchData< dim, dim, number > &scratch_data_in, const unsigned int dof_idx_in, const unsigned int quad_idx_in, const number filter_parameter_in, const number interior_penalty_parameter_in, const PreconditionerType preconditioner_type_in)
 
void vmult (dealii::LinearAlgebra::distributed::Vector< number > &dst, const dealii::LinearAlgebra::distributed::Vector< number > &src) const
 
void reinit () const
 
const SparseMatrixTypeget_system_matrix () const
 
const Preconditioner< dim, VectorType, number > & get_preconditioner () const
 

Private Types

using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 
using SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix
 
using SparsityPatternType = dealii::TrilinosWrappers::SparsityPattern
 

Private Member Functions

void local_apply_domain (const dealii::MatrixFree< dim, number > &data, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
 
void local_apply_inner_face (const dealii::MatrixFree< dim, number > &data, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
 
void local_apply_boundary_face (const dealii::MatrixFree< dim, number > &data, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
 
void do_cell_integral_local (FECellIntegrator< dim, 1, number > &cell_integrator) const
 
void do_face_integral_local (FEFaceIntegrator< dim, 1, number > &face_integrator_minus, FEFaceIntegrator< dim, 1, number > &face_integrator_plus) const
 
void do_bounary_integral_local (FEFaceIntegrator< dim, 1, number > &face_integrator_minus) const
 
void build_matrix () const
 

Private Attributes

const ScratchData< dim, dim, number > & scratch_data
 
const unsigned int dof_idx
 
const unsigned int quad_idx
 
dealii::AlignedVector< dealii::VectorizedArray< number > > damping
 
dealii::AlignedVector< dealii::VectorizedArray< number > > array_penalty_parameter
 
const number filter_parameter
 
const number interior_penalty_parameter
 
SparseMatrixType system_matrix
 
Preconditioner< dim, VectorType, number > preconditioner
 
const PreconditionerType preconditioner_type
 

Detailed Description

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

This function applies the weak DG form of the Helmholtz operator n_ϕ - η_n*Δn_ϕ on a source vector. It is used for both the normal vector calculation and the calculation of the interface curvature.

Member Typedef Documentation

◆ SparseMatrixType

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

◆ SparsityPatternType

template<int dim, typename number >
using MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::SparsityPatternType = dealii::TrilinosWrappers::SparsityPattern
private

◆ VectorType

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

Constructor & Destructor Documentation

◆ HelmholtzDGOperator()

template<int dim, typename number >
MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::HelmholtzDGOperator ( const ScratchData< dim, dim, number > &  scratch_data_in,
const unsigned int  dof_idx_in,
const unsigned int  quad_idx_in,
const number  filter_parameter_in,
const number  interior_penalty_parameter_in,
const PreconditionerType  preconditioner_type_in 
)

Member Function Documentation

◆ build_matrix()

template<int dim, typename number >
void MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::build_matrix ( ) const
private

Builds the matrix of the operator

◆ do_bounary_integral_local()

template<int dim, typename number >
void MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::do_bounary_integral_local ( FEFaceIntegrator< dim, 1, number > &  face_integrator_minus) const
private
Parameters
face_integrator_minus

◆ do_cell_integral_local()

template<int dim, typename number >
void MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::do_cell_integral_local ( FECellIntegrator< dim, 1, number > &  cell_integrator) const
private

The following functions are similar to the ones above, but are need to obtain the matrix from a matrix free implementation

Parameters
cell_integrator

◆ do_face_integral_local()

template<int dim, typename number >
void MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::do_face_integral_local ( FEFaceIntegrator< dim, 1, number > &  face_integrator_minus,
FEFaceIntegrator< dim, 1, number > &  face_integrator_plus 
) const
private
Parameters
face_integrator_minus
face_integrator_plus

◆ get_preconditioner()

template<int dim, typename number >
const Preconditioner< dim, VectorType, number > & MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::get_preconditioner ( ) const
inline

◆ get_system_matrix()

template<int dim, typename number >
const SparseMatrixType & MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::get_system_matrix ( ) const
inline

◆ local_apply_boundary_face()

template<int dim, typename number >
void MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::local_apply_boundary_face ( const dealii::MatrixFree< dim, number > &  data,
VectorType dst,
const VectorType src,
const std::pair< unsigned int, unsigned int > &  face_range 
) const
private

Applies the boundary face integral

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

◆ local_apply_domain()

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

Applies the domain integral

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

◆ local_apply_inner_face()

template<int dim, typename number >
void MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::local_apply_inner_face ( const dealii::MatrixFree< dim, number > &  data,
VectorType dst,
const VectorType src,
const std::pair< unsigned int, unsigned int > &  face_range 
) const
private

Applies the inner face integral

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

◆ reinit()

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

The matrix can be extremly bad condtioned and cause problems for the linear solver. Therefore a preconditioner is needed.

◆ vmult()

template<int dim, typename number >
void MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::vmult ( dealii::LinearAlgebra::distributed::Vector< number > &  dst,
const dealii::LinearAlgebra::distributed::Vector< number > &  src 
) const

Applies the operator to src and safes the result in dst

Parameters
dstdestination vector
srcsource vector

Member Data Documentation

◆ array_penalty_parameter

template<int dim, typename number >
dealii::AlignedVector<dealii::VectorizedArray<number> > MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::array_penalty_parameter
mutableprivate

◆ damping

template<int dim, typename number >
dealii::AlignedVector<dealii::VectorizedArray<number> > MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::damping
mutableprivate

◆ dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::dof_idx
private

◆ filter_parameter

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

◆ interior_penalty_parameter

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

◆ preconditioner

template<int dim, typename number >
Preconditioner<dim, VectorType, number> MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::preconditioner
mutableprivate

◆ preconditioner_type

template<int dim, typename number >
const PreconditionerType MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::preconditioner_type
private

◆ quad_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::quad_idx
private

◆ scratch_data

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

◆ system_matrix

template<int dim, typename number >
SparseMatrixType MeltPoolDG::LevelSet::HelmholtzDGOperator< dim, number >::system_matrix
mutableprivate

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