ReinitializationDGDiffusionOperator< dim, number > Class Template Reference

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

#include <reinitialization_DG_diffusion_operator.hpp>

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

Public Types

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

Public Member Functions

 ReinitializationDGDiffusionOperator (const MeltPoolDG::ScratchData< dim, dim, number > &scratch_datain, const ReinitializationData< number > &reinit_data_in, const unsigned int reinit_dof_idx_in, const unsigned int reinit_quad_idx_in, const VectorType &curvature_in, const BlockVectorType &normal_vector_in, const VectorType &smooth_signum_in)
 
void compute_diffusitivity_value ()
 
void compute_penalty_parameter ()
 
void set_field_functions (const number time) const
 
void apply_operator (const number time, VectorType &dst, const VectorType &src, const std::function< void(unsigned int, unsigned int)> &func={}) const
 
void apply_dirichlet_boundary_operator (const number time, VectorType &dst, const VectorType &src) const
 
number get_max_diffusitivity () const
 

Public Attributes

bool update_field_functions = false
 

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 > &cell_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 > &cell_range) const
 

Private Attributes

const MeltPoolDG::ScratchData< dim, dim, number > & scratch_data
 
const ReinitializationData< number > & reinit_data
 
const unsigned int reinit_dof_idx
 
const unsigned int reinit_quad_idx
 
VectorType diffusitivity
 
dealii::AlignedVector< dealii::VectorizedArray< number > > array_penalty_parameter
 
const VectorTypecurvature
 
const BlockVectorTypenormal_vector
 
const VectorTypesmooth_signum
 

Member Typedef Documentation

◆ BlockVectorType

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

◆ VectorType

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

Constructor & Destructor Documentation

◆ ReinitializationDGDiffusionOperator()

template<int dim, typename number >
MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::ReinitializationDGDiffusionOperator ( const MeltPoolDG::ScratchData< dim, dim, number > &  scratch_datain,
const ReinitializationData< number > &  reinit_data_in,
const unsigned int  reinit_dof_idx_in,
const unsigned int  reinit_quad_idx_in,
const VectorType curvature_in,
const BlockVectorType normal_vector_in,
const VectorType smooth_signum_in 
)

Member Function Documentation

◆ apply_dirichlet_boundary_operator()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::apply_dirichlet_boundary_operator ( const number  time,
VectorType dst,
const VectorType src 
) const
inline

Applies the dirichlet contribution of the DG diffusion operator to the src vector and stores the result in the dst vector. The dst vector is NOT zeroed out before the operation. Is not implemented since for a levelset reinitialization, dirichlet boundaries don't make much sense.

◆ apply_operator()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::apply_operator ( const number  time,
VectorType dst,
const VectorType src,
const std::function< void(unsigned int, unsigned int)> &  func = {} 
) const

Applies the DG diffusion operator to the src vector and stores the result in the dst vector. The dst vector is zeroed out before the operation.

Parameters
time
dstdestination vecor where the diffusive part is stored
srcsource vector for the operator

◆ compute_diffusitivity_value()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::compute_diffusitivity_value ( )

Computes the necessary amount of diffusion

The value for the artificial diffusitivity is determined by the smallest enabled element size.

Local diffusitivity value is determined from a local analysis of the characterisc speed

◆ compute_penalty_parameter()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::compute_penalty_parameter ( )

Computes the necessary penalty parameter

◆ get_max_diffusitivity()

template<int dim, typename number >
number MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::get_max_diffusitivity ( ) const

◆ local_apply_boundary_face()

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

Applies the boundary face integral

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

◆ local_apply_domain()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< 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::ReinitializationDGDiffusionOperator< dim, number >::local_apply_inner_face ( const dealii::MatrixFree< dim, number > &  data,
VectorType dst,
const VectorType src,
const std::pair< unsigned int, unsigned int > &  cell_range 
) const
private

Applies the inner face integral

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

◆ set_field_functions()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::set_field_functions ( const number  time) const
inline

If an analytical function for a field is provided and an analytical update is enabled, this function sets the field according to the analytical function. This function implementation is needed for a time integrator. This function is currently unused

Parameters
time

Member Data Documentation

◆ array_penalty_parameter

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

◆ curvature

template<int dim, typename number >
const VectorType& MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::curvature
private

◆ diffusitivity

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::diffusitivity
mutableprivate

◆ normal_vector

template<int dim, typename number >
const BlockVectorType& MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::normal_vector
private

◆ reinit_data

template<int dim, typename number >
const ReinitializationData<number>& MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::reinit_data
private

◆ reinit_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::reinit_dof_idx
private

◆ reinit_quad_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::reinit_quad_idx
private

◆ scratch_data

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

◆ smooth_signum

template<int dim, typename number >
const VectorType& MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::smooth_signum
private

◆ update_field_functions

template<int dim, typename number >
bool MeltPoolDG::LevelSet::ReinitializationDGDiffusionOperator< dim, number >::update_field_functions = false

Variable is needed for time integration


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