ReinitializationHyperbolicDGOperation< dim, number > Class Template Reference

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

#include <reinitialization_hyperbolic_DG_operation.hpp>

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

Public Member Functions

 ReinitializationHyperbolicDGOperation (const ScratchData< dim, dim, number > &scratch_data_in, const ReinitializationData< number > &reinit_data, const TimeIntegration::TimeIterator< number > &time_iterator, const unsigned int reinit_dof_idx_in, const unsigned int reinit_quad_idx_in, const unsigned int ls_dof_idx_in, const NormalVectorData< number > &normal_vec_data, const CurvatureData< number > &curvature_data)
 
 ReinitializationHyperbolicDGOperation (const ScratchData< dim, dim, number > &scratch_data_in, const ReinitializationData< number > &reinit_data, const TimeIntegration::TimeIterator< number > &time_iterator, const unsigned int reinit_dof_idx_in, const unsigned int reinit_quad_idx_in, const unsigned int ls_dof_idx_in, const std::shared_ptr< NormalVectorOperationBase< dim, number > > &normal_vector_operation_in, const std::shared_ptr< CurvatureDGOperation< dim, number > > &curvature_operation_in, const bool is_coupled_in)
 
void reinit () override
 
void set_initial_condition (const VectorType &solution_level_set_in) override
 
void set_initial_condition (const dealii::Function< dim > &initial_field_function) override
 
void init_time_advance ()
 
void solve () override
 
number get_max_change_level_set () const final
 
const BlockVectorTypeget_normal_vector () const
 
const VectorTypeget_level_set () const override
 
VectorTypeget_level_set () override
 
BlockVectorTypeget_normal_vector ()
 
void attach_vectors (std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors) override
 
void attach_output_vectors (GenericDataOut< dim, number > &data_out) const override
 
number compute_CFL_based_timestep () const override
 
void set_artificial_diffusitivity () override
 
VectorTypeget_sign_indicator_function () override
 
- Public Member Functions inherited from MeltPoolDG::LevelSet::ReinitializationOperationBase< dim, number >
virtual ~ReinitializationOperationBase ()=default
 
virtual void set_wetting_boundary_condition_ids (std::vector< dealii::types::boundary_id > &&)
 Sets the boundary IDs where wetting boundary conditions should be applied.
 
- Public Member Functions inherited from MeltPoolDG::LevelSet::ReinitializationHyperbolicOperationCapable< dim, number >
virtual ~ReinitializationHyperbolicOperationCapable ()=default
 

Private Types

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

Private Attributes

const ScratchData< dim, dim, number > & scratch_data
 
const ReinitializationData< number > reinit_data
 
const TimeIntegration::TimeIterator< number > & time_iterator
 
unsigned int reinit_dof_idx
 
const unsigned int reinit_quad_idx
 
const unsigned int ls_dof_idx
 
TimeIntegration::SolutionHistory< VectorTypesolution_history
 
std::shared_ptr< OlssonDGOperator< dim, number > > reinit_DG_operator
 
std::shared_ptr< TimeIntegration::TimeIntegratorBase< number > > reinitialization_integration
 
number max_change_level_set = std::numeric_limits<number>::max()
 
std::shared_ptr< NormalVectorOperationBase< dim, number > > normal_vector_operation
 
std::shared_ptr< CurvatureDGOperation< dim, number > > curvature_operation
 
const bool is_coupled = false
 

Member Typedef Documentation

◆ BlockVectorType

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

◆ VectorType

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

Constructor & Destructor Documentation

◆ ReinitializationHyperbolicDGOperation() [1/2]

template<int dim, typename number >
MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::ReinitializationHyperbolicDGOperation ( const ScratchData< dim, dim, number > &  scratch_data_in,
const ReinitializationData< number > &  reinit_data,
const TimeIntegration::TimeIterator< number > &  time_iterator,
const unsigned int  reinit_dof_idx_in,
const unsigned int  reinit_quad_idx_in,
const unsigned int  ls_dof_idx_in,
const NormalVectorData< number > &  normal_vec_data,
const CurvatureData< number > &  curvature_data 
)

◆ ReinitializationHyperbolicDGOperation() [2/2]

template<int dim, typename number >
MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::ReinitializationHyperbolicDGOperation ( const ScratchData< dim, dim, number > &  scratch_data_in,
const ReinitializationData< number > &  reinit_data,
const TimeIntegration::TimeIterator< number > &  time_iterator,
const unsigned int  reinit_dof_idx_in,
const unsigned int  reinit_quad_idx_in,
const unsigned int  ls_dof_idx_in,
const std::shared_ptr< NormalVectorOperationBase< dim, number > > &  normal_vector_operation_in,
const std::shared_ptr< CurvatureDGOperation< dim, number > > &  curvature_operation_in,
const bool  is_coupled_in 
)

For advection reinit coupled problems the normal vector and curvature are computed a level higher on the level set operation level. This is because the computation of the normal vector and curvature is very expensive and should only be done once when needed.

Member Function Documentation

◆ attach_output_vectors()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::attach_output_vectors ( GenericDataOut< dim, number > &  data_out) const
overridevirtual

◆ attach_vectors()

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

When the mesh is refined the smoothed signum and the sign indicator function also need to be refined.

Implements MeltPoolDG::LevelSet::ReinitializationOperationBase< dim, number >.

◆ compute_CFL_based_timestep()

template<int dim, typename number >
number MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::compute_CFL_based_timestep ( ) const
overridevirtual

Computes the timestep size fullfilling the CFL condition

Reimplemented from MeltPoolDG::LevelSet::ReinitializationOperationBase< dim, number >.

◆ get_level_set() [1/2]

template<int dim, typename number >
const ReinitializationHyperbolicDGOperation< dim, number >::VectorType & MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::get_level_set ( ) const
overridevirtual

◆ get_level_set() [2/2]

template<int dim, typename number >
ReinitializationHyperbolicDGOperation< dim, number >::VectorType & MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::get_level_set ( )
overridevirtual

◆ get_max_change_level_set()

template<int dim, typename number >
number MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::get_max_change_level_set ( ) const
finalvirtual

◆ get_normal_vector() [1/2]

template<int dim, typename number >
ReinitializationHyperbolicDGOperation< dim, number >::BlockVectorType & MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::get_normal_vector ( )

◆ get_normal_vector() [2/2]

template<int dim, typename number >
const ReinitializationHyperbolicDGOperation< dim, number >::BlockVectorType & MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::get_normal_vector ( ) const

◆ get_sign_indicator_function()

template<int dim, typename number >
VectorType * MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::get_sign_indicator_function ( )
inlineoverridevirtual

◆ init_time_advance()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::init_time_advance ( )

◆ reinit()

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

Resizes the vectors to the right size of the underlying DoF handler

Implements MeltPoolDG::LevelSet::ReinitializationOperationBase< dim, number >.

◆ set_artificial_diffusitivity()

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

◆ set_initial_condition() [1/2]

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::set_initial_condition ( const dealii::Function< dim > &  initial_field_function)
overridevirtual

Sets the initial conditions of the level set field based on the analytical function

Parameters
initial_field_function.The initial conditions are applied using a L_2 projection for each element. This reduces oscillations for higher order elements.

Implements MeltPoolDG::LevelSet::ReinitializationOperationBase< dim, number >.

◆ set_initial_condition() [2/2]

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::set_initial_condition ( const VectorType solution_level_set_in)
overridevirtual

◆ solve()

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

Performs one time step of the reinitialization process

Implements MeltPoolDG::LevelSet::ReinitializationOperationBase< dim, number >.

Member Data Documentation

◆ curvature_operation

template<int dim, typename number >
std::shared_ptr<CurvatureDGOperation<dim, number> > MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::curvature_operation
private

◆ is_coupled

template<int dim, typename number >
const bool MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::is_coupled = false
private

◆ ls_dof_idx

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

◆ max_change_level_set

template<int dim, typename number >
number MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::max_change_level_set = std::numeric_limits<number>::max()
private

◆ normal_vector_operation

template<int dim, typename number >
std::shared_ptr<NormalVectorOperationBase<dim, number> > MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::normal_vector_operation
private

◆ reinit_data

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

◆ reinit_DG_operator

template<int dim, typename number >
std::shared_ptr<OlssonDGOperator<dim, number> > MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::reinit_DG_operator
private

◆ reinit_dof_idx

template<int dim, typename number >
unsigned int MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::reinit_dof_idx
mutableprivate

◆ reinit_quad_idx

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

◆ reinitialization_integration

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

◆ scratch_data

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

◆ solution_history

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

◆ time_iterator

template<int dim, typename number >
const TimeIntegration::TimeIterator<number>& MeltPoolDG::LevelSet::ReinitializationHyperbolicDGOperation< dim, number >::time_iterator
private

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