OlssonDGOperator< dim, number > Class Template Reference

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

#include <reinitialization_olsson_DG_operator.hpp>

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

Public Types

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

Public Member Functions

 OlssonDGOperator (const MeltPoolDG::ScratchData< dim, dim, number > &scratch_data_in, 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)
 
void prepare_operator (const VectorType &solution)
 
void apply_operator (number const time, VectorType &dst, VectorType const &src, const std::function< void(unsigned int, unsigned int)> &func) const
 
void apply_dirichlet_boundary_operator (number const time, VectorType &dst, VectorType const &src) const
 
void reinit ()
 
void apply_diffusion_implicit (number const time, number const time_step, TimeIntegration::SolutionHistory< VectorType > &solution_history) const
 
void set_field_functions (number const time) const
 
number get_max_diffusitivity () const
 
VectorTypeget_signum_smoothed () const
 
VectorTypeget_sign_indicator_function ()
 
void set_artificial_diffusitivity ()
 

Public Attributes

bool update_field_functions = true
 

Private Member Functions

void compute_godunov_hamiltonian (const VectorType &solution) const
 
void compute_godunov_gradient (const VectorType &solution) const
 
void compute_smoothed_signum (const VectorType &solution, const number min_vertex_distance) const
 
void interface_movement_penalty (const dealii::MatrixFree< dim, number > &data, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
 
void local_apply_domain_num_Hamiltonian (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 unsigned int reinit_dof_idx
 
const unsigned int reinit_quad_idx
 
const ReinitializationData< number > & reinit_data
 
VectorType num_Hamiltonian
 
VectorType signum_smoothed
 
VectorType God_grad
 
VectorType sign_indicator_function
 
VectorType grad_x_l
 
VectorType grad_x_r
 
VectorType grad_y_l
 
VectorType grad_y_r
 
VectorType grad_z_l
 
VectorType grad_z_r
 
ReinitializationDGDiffusionOperator< dim, number > RI_DG_diffusion_operator
 
RIGradOperator< dim, number > RI_grad_operator
 
std::shared_ptr< TimeIntegration::TimeIntegratorBase< number > > IMEX_integration
 

Member Typedef Documentation

◆ BlockVectorType

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

◆ VectorType

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

Constructor & Destructor Documentation

◆ OlssonDGOperator()

template<int dim, typename number >
MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::OlssonDGOperator ( const MeltPoolDG::ScratchData< dim, dim, number > &  scratch_data_in,
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 
)

Member Function Documentation

◆ apply_diffusion_implicit()

template<int dim, typename number >
void MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::apply_diffusion_implicit ( number const  time,
number const  time_step,
TimeIntegration::SolutionHistory< VectorType > &  solution_history 
) const

Applies the diffusion term with an implicit time integration in order to keep the time step size of the integration scheme not limited by the diffusion term.

Parameters
timecurrent time
time_stepsize of the time
solution_historykeeps different time instances of the level set field

◆ apply_dirichlet_boundary_operator()

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

Function is needed for a conistent time integration interface. In this case the function is empty.

Parameters
timecurrent time
dstresult of the operator applied to
src
srcsource vector for the operator

◆ apply_operator()

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

Applies the DG reinilization operator to the src vector and stores the result in the dst vector. The time needs to be passed for a consistent interface of the time integration scheme

Parameters
timecurrent time
dstresult of the operator applied to
src
srcsource vector for the operator

◆ compute_godunov_gradient()

template<int dim, typename number >
void MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::compute_godunov_gradient ( const VectorType solution) const
private

Calculates the Godunov gradient

Parameters
solutionlevel set field

◆ compute_godunov_hamiltonian()

template<int dim, typename number >
void MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::compute_godunov_hamiltonian ( const VectorType solution) const
private

Calculates the numerical Hamiltonian of the Hamilton-Jacobi equation

Parameters
solutionlevel set field

◆ compute_smoothed_signum()

template<int dim, typename number >
void MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::compute_smoothed_signum ( const VectorType solution,
const number  min_vertex_distance 
) const
private

Calculates the smoothed signum function and stores the result in the member signum_smoothed

Parameters
solutionthe distorted level set field before reinitialization
min_vertex_distancesmallest vertex distance of the mesh

◆ get_max_diffusitivity()

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

◆ get_sign_indicator_function()

template<int dim, typename number >
VectorType & MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::get_sign_indicator_function ( )
inline

◆ get_signum_smoothed()

template<int dim, typename number >
VectorType & MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::get_signum_smoothed ( ) const
inline

◆ interface_movement_penalty()

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

Adds a penalty term to reinit equation when the interface moves a lot

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

◆ local_apply_domain_num_Hamiltonian()

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

Computes the weak form of the Hamiltonian

◆ prepare_operator()

template<int dim, typename number >
void MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::prepare_operator ( const VectorType solution)

Sets the smoothed signum field and the Godunov gradient

Parameters
solutionis the distorted level set field before the reinilization.

◆ reinit()

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

Resizes member vectors to the right size of the underlying DOF handler

◆ set_artificial_diffusitivity()

template<int dim, typename number >
void MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::set_artificial_diffusitivity ( )

◆ set_field_functions()

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

Sets field functions. Is empty in this case.

Parameters
timecurrent time

Member Data Documentation

◆ God_grad

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::God_grad
mutableprivate

◆ grad_x_l

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::grad_x_l
mutableprivate

◆ grad_x_r

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::grad_x_r
mutableprivate

◆ grad_y_l

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::grad_y_l
mutableprivate

◆ grad_y_r

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::grad_y_r
mutableprivate

◆ grad_z_l

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::grad_z_l
mutableprivate

◆ grad_z_r

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::grad_z_r
mutableprivate

◆ IMEX_integration

template<int dim, typename number >
std::shared_ptr<TimeIntegration::TimeIntegratorBase<number> > MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::IMEX_integration
private

Time integration scheme for the IMEX integration of the diffusive term.

◆ num_Hamiltonian

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::num_Hamiltonian
mutableprivate

◆ reinit_data

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

◆ reinit_dof_idx

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

◆ reinit_quad_idx

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

◆ RI_DG_diffusion_operator

template<int dim, typename number >
ReinitializationDGDiffusionOperator<dim, number> MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::RI_DG_diffusion_operator
private

operators

◆ RI_grad_operator

template<int dim, typename number >
RIGradOperator<dim, number> MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::RI_grad_operator
mutableprivate

◆ scratch_data

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

◆ sign_indicator_function

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::sign_indicator_function
mutableprivate

◆ signum_smoothed

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::signum_smoothed
mutableprivate

◆ update_field_functions

template<int dim, typename number >
bool MeltPoolDG::LevelSet::OlssonDGOperator< dim, number >::update_field_functions = true

flag for the time integration scheme if field functions should be updated in every step.


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