ReinitializationEllipticOperation< dim, number > Class Template Reference

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

Operation that performs the elliptic reinitialization process. More...

#include <reinitialization_elliptic_operation.hpp>

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

Public Types

using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 
using MappingInfoType = CutUtil::MappingInfoType< dim, number >
 

Public Member Functions

 ReinitializationEllipticOperation (const ScratchData< dim, dim, number > &scratch_data_in, const ReinitializationData< number > &reinit_data, const unsigned int reinit_dof_idx_in, const unsigned int reinit_quad_idx_in, const unsigned int ls_dof_idx_in)
 Constructor.
 
void solve () override
 Solve the elliptic reinitialization problem using fix point iteration.
 
void solve_one_iter ()
 Solve one step of the fix point iteration for the elliptic reinitialization problem.
 
void reinit () override
 Resizes the vectors to the right size of the underlying DoF handler and initializes further internal data structures.
 
void set_initial_condition (const VectorType &solution_level_set_in) override
 Copies a solution field to solution_level_set.
 
void set_initial_condition (const dealii::Function< dim > &initial_field_function) override
 Sets the initial conditions of the level set field based on the analytical function.
 
const VectorTypeget_level_set () const override
 Access the level-set field (const version).
 
VectorTypeget_level_set () override
 Access the level-set field (mutable version).
 
void attach_vectors (std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors) override
 Attach internal vectors to an external container.
 
void attach_output_vectors (GenericDataOut< dim, number > &data_out) const override
 Attach the level-set solution, and normal vector components for output.
 
number get_relative_change_level_set () const
 Get the relative change of the level set L2 norm between the current and previous fix point iteration.
 
- 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.
 
virtual number compute_CFL_based_timestep () const
 
virtual void set_artificial_diffusitivity ()
 
virtual dealii::LinearAlgebra::distributed::Vector< number > * get_sign_indicator_function ()
 

Private Member Functions

void compute_intersected_quadrature ()
 Compute the quadrature rules for the immersed phase boundaries.
 
void create_operator ()
 Create the elliptic reinitialization operator.
 

Private Attributes

MappingInfoType mapping_info_surface
 Mapping information for integration over immersed boundaries.
 
std::shared_ptr< dealii::NonMatching::MeshClassifier< dim > > mesh_classifier
 
const ScratchData< dim, dim, number > & scratch_data
 Scratch data object.
 
const ReinitializationData< number > reinit_data
 Container for reinitialization-related data.
 
unsigned int reinit_dof_idx
 
const unsigned int reinit_quad_idx
 
const unsigned int ls_dof_idx
 
VectorType solution_level_set
 This is the primary solution vector of this class.
 
VectorType rhs
 Vector for the right-hand side.
 
VectorType level_set_old
 
std::unique_ptr< ReinitializationEllipticOperator< dim, number > > reinit_operator
 Pointer to the elliptic reinitialization operator object.
 
Preconditioner< dim, VectorType, number > preconditioner
 Preconditioner for the linear solver.
 
number relative_change_level_set = std::numeric_limits<number>::max()
 Relative change of the level L2 norm between the current and previous fix point iteration.
 
VectorType level_set_old_locally_owned
 Locally relevant DoF vector. It is required by the mesh classifier.
 

Detailed Description

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

Operation that performs the elliptic reinitialization process.

Template Parameters
dimDimension of the considered simulation case.
numberFloating point format type.

Member Typedef Documentation

◆ MappingInfoType

template<int dim, typename number >
using MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::MappingInfoType = CutUtil::MappingInfoType<dim, number>

◆ VectorType

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

Constructor & Destructor Documentation

◆ ReinitializationEllipticOperation()

template<int dim, typename number >
MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::ReinitializationEllipticOperation ( const ScratchData< dim, dim, number > &  scratch_data_in,
const ReinitializationData< number > &  reinit_data,
const unsigned int  reinit_dof_idx_in,
const unsigned int  reinit_quad_idx_in,
const unsigned int  ls_dof_idx_in 
)

Constructor.

Initializes all internal data structures required for the elliptic reinitialization process.

Parameters
scratch_data_inReference to the used ScratchData object.
reinit_dataReference to the object for reinitialization-specific data.
reinit_dof_idx_inIndex of the used dof-handler object in scratch_data_in.
reinit_quad_idx_inIndex of the used quadrature object in scratch_data_in.
ls_dof_idx_inIndex of the used dof-handler object in scratch_data_in for the level-set.

Member Function Documentation

◆ attach_output_vectors()

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

Attach the level-set solution, and normal vector components for output.

Parameters
data_outData output object.

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

◆ attach_vectors()

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

Attach internal vectors to an external container.

Adds the solution_level_set vector to the provided list and forwards the call to the normal vector operation.

Parameters
vectorsVector of pointers to distributed vectors to be extended.

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

◆ compute_intersected_quadrature()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::compute_intersected_quadrature ( )
private

Compute the quadrature rules for the immersed phase boundaries.

◆ create_operator()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::create_operator ( )
private

Create the elliptic reinitialization operator.

◆ get_level_set() [1/2]

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

Access the level-set field (const version).

Returns
Constant reference to the level-set vector.

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

◆ get_level_set() [2/2]

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

Access the level-set field (mutable version).

Returns
Reference to the level-set vector.

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

◆ get_relative_change_level_set()

template<int dim, typename number >
number MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::get_relative_change_level_set ( ) const

Get the relative change of the level set L2 norm between the current and previous fix point iteration.

Returns
Relative change of the level set norm.

◆ reinit()

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

Resizes the vectors to the right size of the underlying DoF handler and initializes further internal data structures.

After a call to this function the solve() function of the class can be utilized.

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

◆ set_initial_condition() [1/2]

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationEllipticOperation< 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_functionGiven analytical function which is used for the projection to the discrete space.
Note
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::ReinitializationEllipticOperation< dim, number >::set_initial_condition ( const VectorType solution_level_set_in)
overridevirtual

Copies a solution field to solution_level_set.

Parameters
solution_level_set_inGiven DoF vector for the discrete level-set field.

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

◆ solve()

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

Solve the elliptic reinitialization problem using fix point iteration.

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

◆ solve_one_iter()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::solve_one_iter ( )

Solve one step of the fix point iteration for the elliptic reinitialization problem.

Member Data Documentation

◆ level_set_old

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::level_set_old
private

◆ level_set_old_locally_owned

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::level_set_old_locally_owned
private

Locally relevant DoF vector. It is required by the mesh classifier.

◆ ls_dof_idx

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

◆ mapping_info_surface

template<int dim, typename number >
MappingInfoType MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::mapping_info_surface
private

Mapping information for integration over immersed boundaries.

◆ mesh_classifier

template<int dim, typename number >
std::shared_ptr<dealii::NonMatching::MeshClassifier<dim> > MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::mesh_classifier
private

Mesh classifier, which contains information if a cell is inside or outside the physically relevant region, or cut by the immersed boundary. It corresponds to the current level set position.

◆ preconditioner

template<int dim, typename number >
Preconditioner<dim, VectorType, number> MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::preconditioner
private

Preconditioner for the linear solver.

◆ reinit_data

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

Container for reinitialization-related data.

◆ reinit_dof_idx

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

Based on the following indices the correct DoFHandler or quadrature rule from ScratchData<dim,dim,number> object is selected. This is important when ScratchData<dim,dim,number> holds multiple DoFHandlers, quadrature rules, etc.

◆ reinit_operator

template<int dim, typename number >
std::unique_ptr<ReinitializationEllipticOperator<dim, number> > MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::reinit_operator
private

Pointer to the elliptic reinitialization operator object.

◆ reinit_quad_idx

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

◆ relative_change_level_set

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

Relative change of the level L2 norm between the current and previous fix point iteration.

◆ rhs

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::rhs
private

Vector for the right-hand side.

◆ scratch_data

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

Scratch data object.

◆ solution_level_set

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::ReinitializationEllipticOperation< dim, number >::solution_level_set
private

This is the primary solution vector of this class.


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