ReinitializationGeometricOperation< dim, number > Class Template Reference

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

Geometric level-set reinitialization operation. More...

#include <reinitialization_geometric_operation.hpp>

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

Public Types

using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 Distributed vector type used for scalar fields.
 
using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number >
 Distributed block vector type.
 

Public Member Functions

 ReinitializationGeometricOperation (const ScratchData< dim, dim, number > &scratch_data_in, const ReinitializationData< number > &reinit_data_in, const unsigned int ls_dof_idx_in, const unsigned int ls_quad_idx_in)
 Constructor.
 
void reinit () override
 Initialize the reinitialization operation.
 
void solve () override
 Execute the geometric reinitialization procedure.
 
void set_initial_condition (const VectorType &solution_level_set_in) override
 Set the initial level-set field from a vector.
 
void set_initial_condition (const Function< dim > &initial_field_function) override
 Set the initial level-set field from an analytical function.
 
const VectorTypeget_level_set () const override
 Get a constant reference to the level-set field.
 
VectorTypeget_level_set () override
 Get a mutable reference to the level-set field.
 
void attach_vectors (std::vector< VectorType * > &vectors) override
 Attach internal vectors to an external vector list.
 
void attach_output_vectors (GenericDataOut< dim, number > &data_out) const override
 Attach output vectors for postprocessing and visualization.
 
- 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 create_solver ()
 Create and configure the signed-distance solver.
 
void transform_signed_distance_to_tanh_level_set ()
 Transform the signed-distance field into a tanh level-set field.
 

Private Attributes

std::unique_ptr< SignedDistanceSolver< dim, VectorType > > signed_distance_solver
 Geometric signed-distance solver.
 
const ScratchData< dim, dim, number > & scratch_data
 Shared scratch data and finite element infrastructure.
 
const ReinitializationData< number > & reinit_data
 Reinitialization configuration data.
 
unsigned int ls_dof_idx
 Degree-of-freedom index for the level-set field.
 
unsigned int ls_quad_idx
 Quadrature index for the level-set field.
 
VectorType level_set
 Reinitialized level-set field.
 

Detailed Description

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

Geometric level-set reinitialization operation.

This class computes a signed-distance representation of a level-set field using a geometric signed-distance solver. Optionally, the resulting signed distance field can be transformed into a smoothed hyperbolic tangent level-set representation.

The operation uses the background mesh and finite element space associated with the provided degree-of-freedom index.

Template Parameters
dimSpatial dimension.
numberScalar number type.

Member Typedef Documentation

◆ BlockVectorType

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

Distributed block vector type.

◆ VectorType

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

Distributed vector type used for scalar fields.

Constructor & Destructor Documentation

◆ ReinitializationGeometricOperation()

template<int dim, typename number >
MeltPoolDG::LevelSet::ReinitializationGeometricOperation< dim, number >::ReinitializationGeometricOperation ( const ScratchData< dim, dim, number > &  scratch_data_in,
const ReinitializationData< number > &  reinit_data_in,
const unsigned int  ls_dof_idx_in,
const unsigned int  ls_quad_idx_in 
)

Constructor.

Initializes the geometric reinitialization operation and creates the internal signed-distance solver.

Parameters
scratch_data_inShared scratch data and FE infrastructure.
reinit_data_inReinitialization configuration parameters.
ls_dof_idx_inDegree-of-freedom index of the level-set field.
ls_quad_idx_inQuadrature index associated with the level-set field.

Member Function Documentation

◆ attach_output_vectors()

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

Attach output vectors for postprocessing and visualization.

Adds the signed-distance field and level-set field to the output object.

Parameters
data_outOutput handler.

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

◆ attach_vectors()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationGeometricOperation< dim, number >::attach_vectors ( std::vector< VectorType * > &  vectors)
overridevirtual

Attach internal vectors to an external vector list.

Parameters
vectorsContainer receiving pointers to internal vectors.

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

◆ create_solver()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationGeometricOperation< dim, number >::create_solver ( )
private

Create and configure the signed-distance solver.

◆ get_level_set() [1/2]

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

Get a constant reference to the level-set field.

Returns
Constant reference to the level-set vector.

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

◆ get_level_set() [2/2]

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

Get a mutable reference to the level-set field.

Returns
Mutable reference to the level-set vector.

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

◆ reinit()

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

Initialize the reinitialization operation.

Allocates vectors and initializes the signed-distance solver degrees of freedom.

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

◆ set_initial_condition() [1/2]

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

Set the initial level-set field from an analytical function.

The function is interpolated onto the level-set finite element space.

Parameters
initial_field_functionAnalytical initial field function.

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

◆ set_initial_condition() [2/2]

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

Set the initial level-set field from a vector.

Parameters
solution_level_set_inInput level-set vector.

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

◆ solve()

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

Execute the geometric reinitialization procedure.

Computes the signed-distance field from the current level-set field and, if enabled, transforms it into a hyperbolic tangent level-set field.

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

◆ transform_signed_distance_to_tanh_level_set()

template<int dim, typename number >
void MeltPoolDG::LevelSet::ReinitializationGeometricOperation< dim, number >::transform_signed_distance_to_tanh_level_set ( )
private

Transform the signed-distance field into a tanh level-set field.

The transformation uses a cell-dependent interface thickness parameter computed from the mesh resolution and finite element subdivision data.

Member Data Documentation

◆ level_set

template<int dim, typename number >
VectorType MeltPoolDG::LevelSet::ReinitializationGeometricOperation< dim, number >::level_set
private

Reinitialized level-set field.

◆ ls_dof_idx

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

Degree-of-freedom index for the level-set field.

◆ ls_quad_idx

template<int dim, typename number >
unsigned int MeltPoolDG::LevelSet::ReinitializationGeometricOperation< dim, number >::ls_quad_idx
private

Quadrature index for the level-set field.

◆ reinit_data

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

Reinitialization configuration data.

◆ scratch_data

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

Shared scratch data and finite element infrastructure.

◆ signed_distance_solver

template<int dim, typename number >
std::unique_ptr<SignedDistanceSolver<dim, VectorType> > MeltPoolDG::LevelSet::ReinitializationGeometricOperation< dim, number >::signed_distance_solver
private

Geometric signed-distance solver.


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