LevelSet Namespace Reference

Developer Documentation: MeltPoolDG::LevelSet Namespace Reference
Developer Documentation
MeltPoolDG::LevelSet Namespace Reference

This operation solves the reinitialization problem for a CG- or DG-FEM-based discrete level-set field by solving an elliptic problem. More...

Namespaces

namespace  Tools
 

Classes

class  AdvectionDGOperation
 
class  AdvectionDGOperator
 
class  AdvectionDiffusionApplication
 
class  AdvectionDiffusionCase
 
struct  AdvectionDiffusionCaseParameters
 
class  AdvectionDiffusionOperation
 
class  AdvectionDiffusionOperationBase
 
class  AdvectionDiffusionOperator
 
class  CellWiseFunction
 Scalar function defined by the DoF values of a single cell. More...
 
struct  CurvatureData
 
class  CurvatureDGOperation
 
class  CurvatureOperation
 
class  CurvatureOperationBase
 
class  CurvatureOperator
 
class  DeltaApproximationBase
 
class  DeltaApproximationHeavisidePhaseWeighted
 
class  DeltaApproximationHeavisideTimesHeavisidePhaseWeighted
 
class  DeltaApproximationHeavyPhaseOnly
 
struct  DeltaApproximationPhaseWeightedData
 
class  DeltaApproximationReciprocalPhaseWeighted
 
class  DeltaApproximationReciprocalTimesHeavisidePhaseWeighted
 
class  HelmholtzDGOperator
 
class  InterfaceReconstructionDataOut
 Interface to build patches of the interface reconstruction vertices for visualization. More...
 
class  LevelSetApplication
 
class  LevelSetCase
 
struct  LevelSetCaseParameters
 
struct  LevelSetData
 
class  LevelSetDGOperation
 
class  LevelSetOperation
 
class  LevelSetOperationBase
 
struct  MarchingCubeData
 
struct  NormalVectorData
 
class  NormalVectorDGOperation
 
class  NormalVectorOperation
 
class  NormalVectorOperationBase
 
class  NormalVectorOperator
 
class  OlssonDGOperator
 
class  OlssonOperator
 Operator for the Olsson reinitialization method used in level set methods. More...
 
class  ReinitializationApplication
 
class  ReinitializationCase
 
struct  ReinitializationCaseParameters
 
struct  ReinitializationData
 
class  ReinitializationDGDiffusionOperator
 
class  ReinitializationEllipticOperation
 Operation that performs the elliptic reinitialization process. More...
 
class  ReinitializationEllipticOperator
 Operator for the matrix-free evaluation of diffusive reinitialization of the level set function. More...
 
struct  ReinitializationGeometricData
 
class  ReinitializationGeometricOperation
 Geometric level-set reinitialization operation. More...
 
class  ReinitializationHyperbolicCGOperation
 
struct  ReinitializationHyperbolicData
 
class  ReinitializationHyperbolicDGOperation
 
class  ReinitializationHyperbolicOperationCapable
 
class  ReinitializationOperationBase
 
class  RIGradOperator
 
class  SignedDistanceSolver
 Solver to compute the signed distance from a given level of a level-set field. More...
 

Enumerations

enum class  Verbosity { quiet , verbose }
 Verbosity levels used to control console output. More...
 

Functions

 BETTER_ENUM (ConvectionStabilizationType, char, none, SUPG) template< typename number > struct AdvectionDiffusionData
 
template<typename number >
std::unique_ptr< DeltaApproximationBase< number > > create_phase_weighted_delta_approximation (const DeltaApproximationPhaseWeightedData< number > &data)
 
 BETTER_ENUM (DiracDeltaFunctionApproximationType, char, norm_of_indicator_gradient, heaviside_phase_weighted, heaviside_times_heaviside_phase_weighted, reciprocal_phase_weighted, reciprocal_times_heaviside_phase_weighted, heavy_phase_only) BETTER_ENUM(ParameterScaledInterpolationType
 
 BETTER_ENUM (NearestPointType, char, closest_point_normal, closest_point_normal_collinear, closest_point_normal_collinear_coquerelle, nearest_point, nearest_point_fast) template< typename number > struct NearestPointData
 
template<int dim, typename number >
dealii::VectorizedArray< number > compute_cell_size_dependent_filter_parameter_mf (const ScratchData< dim, dim, number > &scratch_data, const unsigned int dof_idx, const unsigned int cell_idx, const number scale_factor)
 
template<int dim, typename number , typename cell_type >
number compute_cell_size_dependent_filter_parameter (const ScratchData< dim, dim, number > &scratch_data, const unsigned int dof_idx, const cell_type cell, const number scale_factor)
 
 BETTER_ENUM (InterfaceThicknessParameterType, char, proportional_to_cell_size, absolute_value, number_of_cells_across_interface) template< typename number > struct ReinitializationEllipticData
 
template<typename T >
constexpr int sgn (const T val) noexcept
 Return the sign of a value.
 
void announce_string (const dealii::ConditionalOStream &pcout, const std::string &expression, const char delimiter='-')
 Print a string surrounded by delimiter lines.
 
template<int dim>
double compute_cell_diameter (const double cell_measure, const unsigned int fe_degree)
 Compute an equivalent cell diameter from a cell measure.
 
template<int dim>
void vertices_cell_mapping (const dealii::DoFHandler< dim > &dof_handler, std::map< unsigned int, std::set< typename dealii::DoFHandler< dim >::active_cell_iterator > > &vertices_cell_map)
 Build a map from mesh vertex indices to the active cells that contain them.
 
template<int dim>
std::vector< typename dealii::DoFHandler< dim >::active_cell_iterator > find_cells_around_cell (std::map< unsigned int, std::set< typename dealii::DoFHandler< dim >::active_cell_iterator > > &vertices_cell_map, const typename dealii::DoFHandler< dim >::active_cell_iterator &cell)
 Find all active cells sharing at least one vertex with a given cell.
 
template<int dim>
double find_point_triangle_distance (const std::vector< dealii::Point< dim > > &triangle, const dealii::Point< dim > &point)
 Compute the shortest distance between a point and an interface segment or triangle.
 
template<int dim>
double compute_cell_wise_volume (dealii::FEPointEvaluation< 1, dim > &fe_point_evaluation, const typename dealii::DoFHandler< dim >::active_cell_iterator &cell, dealii::Vector< double > cell_dof_level_set_values, const double corr, const unsigned int n_quad_points)
 Compute the volume enclosed by the zero level of a level-set field inside a cell.
 
template<int dim, typename VectorType >
std::pair< double, double > integrate_volume_and_surface (const dealii::DoFHandler< dim > &dof_handler, const dealii::FiniteElement< dim > &fe, const VectorType &level_set_vector_relevant_copy)
 Integrate the surface area of the zero level of a level-set field and the volume enclosed by it.
 
template<int dim, typename VectorType >
std::pair< double, double > integrate_volume_and_surface (const dealii::DoFHandler< dim > &dof_handler, const dealii::FiniteElement< dim > &fe, const VectorType &level_set_vector, const double iso_level)
 Integrate the surface area of a given level of a level-set field and the volume enclosed by it.
 
template<int dim, typename VectorType >
void reconstruct_interface (const dealii::Mapping< dim > &mapping, const dealii::DoFHandler< dim > &dof_handler, const dealii::FiniteElement< dim > &fe, const VectorType &level_set_vector, const double iso_level, const int mca_n_subdivisions, std::map< dealii::types::global_cell_index, std::vector< dealii::Point< dim > > > &interface_reconstruction_vertices, std::map< dealii::types::global_cell_index, std::vector< dealii::CellData< dim==1 ? 1 :dim - 1 > > > &interface_reconstruction_cells, std::set< dealii::types::global_dof_index > &intersected_dofs)
 Reconstruct the interface defined by a given level of a level-set field in the domain.
 
template<typename number >
number smooth_heaviside_from_distance_value (const number x)
 
template<typename number >
number compressive_flux (const number psi)
 Computes the compressive flux term in the reinitialization equation for a level set formulation.
 
template<int dim>
double compute_cell_wise_volume (FEPointEvaluation< 1, dim > &fe_point_evaluation, const typename DoFHandler< dim >::active_cell_iterator &cell, Vector< double > cell_dof_level_set_values, const double corr, const unsigned int n_quad_points)
 
template<int dim, typename VectorType >
std::pair< double, double > integrate_volume_and_surface (const DoFHandler< dim > &dof_handler, const FiniteElement< dim > &fe, const VectorType &level_set_vector_relevant_copy)
 
template<int dim, typename VectorType >
std::pair< double, double > integrate_volume_and_surface (const DoFHandler< dim > &dof_handler, const FiniteElement< dim > &fe, const VectorType &level_set_vector, const double iso_level)
 
template<int dim, typename VectorType >
void reconstruct_interface (const Mapping< dim > &mapping, const DoFHandler< dim > &dof_handler, const FiniteElement< dim > &fe, const VectorType &level_set_vector, const double iso_level, const int mca_n_subdivisions, std::map< types::global_cell_index, std::vector< Point< dim > > > &interface_reconstruction_vertices, std::map< types::global_cell_index, std::vector< CellData< dim==1 ? 1 :dim - 1 > > > &interface_reconstruction_cells, std::set< types::global_dof_index > &intersected_dofs)
 
template std::pair< double, double > integrate_volume_and_surface (const DoFHandler< 2 > &, const FiniteElement< 2 > &, const LinearAlgebra::distributed::Vector< double > &)
 
template std::pair< double, double > integrate_volume_and_surface (const DoFHandler< 3 > &, const FiniteElement< 3 > &, const LinearAlgebra::distributed::Vector< double > &)
 
template std::pair< double, double > integrate_volume_and_surface (const DoFHandler< 2 > &, const FiniteElement< 2 > &, const LinearAlgebra::distributed::Vector< double > &, const double)
 
template std::pair< double, double > integrate_volume_and_surface (const DoFHandler< 3 > &, const FiniteElement< 3 > &, const LinearAlgebra::distributed::Vector< double > &, const double)
 
template void reconstruct_interface (const Mapping< 2 > &, const DoFHandler< 2 > &, const FiniteElement< 2 > &, const LinearAlgebra::distributed::Vector< double > &, const double, const int, std::map< types::global_cell_index, std::vector< Point< 2 > > > &, std::map< types::global_cell_index, std::vector< CellData< 1 > > > &, std::set< types::global_dof_index > &)
 
template void reconstruct_interface (const Mapping< 3 > &, const DoFHandler< 3 > &, const FiniteElement< 3 > &, const LinearAlgebra::distributed::Vector< double > &, const double, const int, std::map< types::global_cell_index, std::vector< Point< 3 > > > &, std::map< types::global_cell_index, std::vector< CellData< 2 > > > &, std::set< types::global_dof_index > &)
 
template double compute_cell_wise_volume< 2 > (FEPointEvaluation< 1, 2 > &, const DoFHandler< 2 >::active_cell_iterator &, Vector< double >, const double, const unsigned int)
 
template double compute_cell_wise_volume< 3 > (FEPointEvaluation< 1, 3 > &, const DoFHandler< 3 >::active_cell_iterator &, Vector< double >, const double, const unsigned int)
 

Variables

static std::map< std::string, double > get_generalized_theta
 
 char
 
 volume_specific_heat_capacity
 
 specific_heat_capacity_times_density
 
static constexpr bool is_debug_mode = false
 

Detailed Description

This operation solves the reinitialization problem for a CG- or DG-FEM-based discrete level-set field by solving an elliptic problem.

Class for the diffusive stabilization of the level set reinitialization

Compute the gradient of the level set function using Godunov's scheme

It is based on the following publication:

Adams, T., Giani, S., & Coombs, W. M. (2019). A high-order elliptic PDE based level set reinitialisation method using a discontinuous Galerkin discretisation. Journal of Computational Physics, 379, 373-391.

Warning
This operation is under development and not ready for use!

For implementation details see

A. Karakus, N. Chalmers, and T. Warburton. A local discontinuous galerkin level set reinitialization with subcell stabilization on unstructured meshes. Com- puters & Mathematics with Applications, 123:160–170, 2022.

and

A. Ritthaler. “High-Performance Matrix-Free High-Order Discontinuous Galerkin Level-Set Ad- vection and Reinitialization”. Technical University of Munich, 2023.

Enumeration Type Documentation

◆ Verbosity

Verbosity levels used to control console output.

Enumerator
quiet 
verbose 

Function Documentation

◆ announce_string()

void MeltPoolDG::LevelSet::announce_string ( const dealii::ConditionalOStream &  pcout,
const std::string &  expression,
const char  delimiter = '-' 
)
inline

Print a string surrounded by delimiter lines.

Parameters
[in]pcoutParallel conditional output stream.
[in]expressionString to print.
[in]delimiterCharacter used to build the delimiter lines.

◆ BETTER_ENUM() [1/4]

MeltPoolDG::LevelSet::BETTER_ENUM ( ConvectionStabilizationType  ,
char  ,
none  ,
SUPG   
)

◆ BETTER_ENUM() [2/4]

MeltPoolDG::LevelSet::BETTER_ENUM ( DiracDeltaFunctionApproximationType  ,
char  ,
norm_of_indicator_gradient  ,
heaviside_phase_weighted  ,
heaviside_times_heaviside_phase_weighted  ,
reciprocal_phase_weighted  ,
reciprocal_times_heaviside_phase_weighted  ,
heavy_phase_only   
)

◆ BETTER_ENUM() [3/4]

MeltPoolDG::LevelSet::BETTER_ENUM ( InterfaceThicknessParameterType  ,
char  ,
proportional_to_cell_size  ,
absolute_value  ,
number_of_cells_across_interface   
)

◆ BETTER_ENUM() [4/4]

MeltPoolDG::LevelSet::BETTER_ENUM ( NearestPointType  ,
char  ,
closest_point_normal  ,
closest_point_normal_collinear  ,
closest_point_normal_collinear_coquerelle  ,
nearest_point  ,
nearest_point_fast   
)

◆ compressive_flux()

template<typename number >
number MeltPoolDG::LevelSet::compressive_flux ( const number  psi)

Computes the compressive flux term in the reinitialization equation for a level set formulation.

Template Parameters
numberA scalar numeric type (e.g., float, double).
Parameters
[in]psiThe level set value at a point.
Returns
The value of the compressive flux evaluated at the given psi.

◆ compute_cell_diameter()

template<int dim>
double MeltPoolDG::LevelSet::compute_cell_diameter ( const double  cell_measure,
const unsigned int  fe_degree 
)
inline

Compute an equivalent cell diameter from a cell measure.

The diameter is obtained from the diameter of a disk (2D) or sphere (3D) with the same measure and is scaled by the finite element degree.

Template Parameters
dimAn integer that denotes the dimension of the space in which the problem is solved.
Parameters
[in]cell_measureMeasure of the cell, i.e., area in 2D or volume in 3D.
[in]fe_degreeFinite element degree used to scale the diameter.
Returns
Equivalent cell diameter.

◆ compute_cell_size_dependent_filter_parameter()

template<int dim, typename number , typename cell_type >
number MeltPoolDG::LevelSet::compute_cell_size_dependent_filter_parameter ( const ScratchData< dim, dim, number > &  scratch_data,
const unsigned int  dof_idx,
const cell_type  cell,
const number  scale_factor 
)

For a given

Parameters
cell,computethe cell_size dependent filter parameter

scale_factor * h^2

using a given

Parameters
scale_factor.
Todo:
: move to normal_vector_utils.hpp

◆ compute_cell_size_dependent_filter_parameter_mf()

template<int dim, typename number >
dealii::VectorizedArray< number > MeltPoolDG::LevelSet::compute_cell_size_dependent_filter_parameter_mf ( const ScratchData< dim, dim, number > &  scratch_data,
const unsigned int  dof_idx,
const unsigned int  cell_idx,
const number  scale_factor 
)
inline

Matrix-free

For a given

Parameters
cell,computethe cell_size dependent filter parameter

scale_factor * h^2

using a given

Parameters
scale_factor.
Todo:
: move to normal_vector_utils.hpp

◆ compute_cell_wise_volume() [1/2]

template<int dim>
double MeltPoolDG::LevelSet::compute_cell_wise_volume ( dealii::FEPointEvaluation< 1, dim > &  fe_point_evaluation,
const typename dealii::DoFHandler< dim >::active_cell_iterator &  cell,
dealii::Vector< double >  cell_dof_level_set_values,
const double  corr,
const unsigned int  n_quad_points 
)

Compute the volume enclosed by the zero level of a level-set field inside a cell.

The inside volume is defined by negative values of the level-set field.

Template Parameters
dimAn integer that denotes the dimension of the space in which the problem is solved.
Parameters
[in]fe_point_evaluationdealii::FEPointEvaluation used for point-wise evaluations.
[in]cellCell for which the volume is computed.
[in]cell_dof_level_set_valuesCell DoF values of the level-set field.
[in]corrCorrection applied uniformly to the DoF values.
[in]n_quad_pointsNumber of quadrature points for the volume integration faces.
Returns
Cell-wise volume enclosed by the level-set field.

◆ compute_cell_wise_volume() [2/2]

template<int dim>
double MeltPoolDG::LevelSet::compute_cell_wise_volume ( FEPointEvaluation< 1, dim > &  fe_point_evaluation,
const typename DoFHandler< dim >::active_cell_iterator &  cell,
Vector< double >  cell_dof_level_set_values,
const double  corr,
const unsigned int  n_quad_points 
)

◆ compute_cell_wise_volume< 2 >()

template double MeltPoolDG::LevelSet::compute_cell_wise_volume< 2 > ( FEPointEvaluation< 1, 2 > &  ,
const DoFHandler< 2 >::active_cell_iterator &  ,
Vector< double >  ,
const double  ,
const unsigned int   
)

◆ compute_cell_wise_volume< 3 >()

template double MeltPoolDG::LevelSet::compute_cell_wise_volume< 3 > ( FEPointEvaluation< 1, 3 > &  ,
const DoFHandler< 3 >::active_cell_iterator &  ,
Vector< double >  ,
const double  ,
const unsigned int   
)

◆ create_phase_weighted_delta_approximation()

template<typename number >
std::unique_ptr< DeltaApproximationBase< number > > MeltPoolDG::LevelSet::create_phase_weighted_delta_approximation ( const DeltaApproximationPhaseWeightedData< number > &  data)

◆ find_cells_around_cell()

template<int dim>
std::vector< typename dealii::DoFHandler< dim >::active_cell_iterator > MeltPoolDG::LevelSet::find_cells_around_cell ( std::map< unsigned int, std::set< typename dealii::DoFHandler< dim >::active_cell_iterator > > &  vertices_cell_map,
const typename dealii::DoFHandler< dim >::active_cell_iterator &  cell 
)

Find all active cells sharing at least one vertex with a given cell.

Template Parameters
dimAn integer that denotes the dimension of the space in which the problem is solved.
Parameters
[in]vertices_cell_mapMap from vertex indices to active cells.
[in]cellCell for which the surrounding cells are requested.
Returns
Vector containing the cells sharing a vertex with cell.

◆ find_point_triangle_distance()

template<int dim>
double MeltPoolDG::LevelSet::find_point_triangle_distance ( const std::vector< dealii::Point< dim > > &  triangle,
const dealii::Point< dim > &  point 
)

Compute the shortest distance between a point and an interface segment or triangle.

In 2D, triangle is interpreted as a line segment described by its first two points. In 3D, it is interpreted as a triangle described by its first three points.

Template Parameters
dimAn integer that denotes the dimension of the space in which the problem is solved.
Parameters
[in]triangledealii::Points describing the segment in 2D or triangle in 3D.
[in]pointdealii::Point from which the distance is computed.
Returns
Shortest Euclidean distance between point and the interface segment or triangle.

◆ integrate_volume_and_surface() [1/8]

template<int dim, typename VectorType >
std::pair< double, double > MeltPoolDG::LevelSet::integrate_volume_and_surface ( const dealii::DoFHandler< dim > &  dof_handler,
const dealii::FiniteElement< dim > &  fe,
const VectorType &  level_set_vector,
const double  iso_level 
)

Integrate the surface area of a given level of a level-set field and the volume enclosed by it.

The zero contour is defined with respect to iso_level by shifting the values of the level-set field.

Template Parameters
dimAn integer that denotes the dimension of the space in which the problem is solved.
VectorTypeThe vector type of the solution vector.
Parameters
[in]dof_handlerDoFHandler associated with the triangulation on which the volume is computed.
[in]feFinite element.
[in]level_set_vectorLevel-set vector.
[in]iso_levelGiven level of the level-set field enclosing the volume of interest.
Returns
Volume and surface area enclosed by iso_level. The volume is the first value and the surface area is the second.

◆ integrate_volume_and_surface() [2/8]

template<int dim, typename VectorType >
std::pair< double, double > MeltPoolDG::LevelSet::integrate_volume_and_surface ( const dealii::DoFHandler< dim > &  dof_handler,
const dealii::FiniteElement< dim > &  fe,
const VectorType &  level_set_vector_relevant_copy 
)

Integrate the surface area of the zero level of a level-set field and the volume enclosed by it.

The inside volume is defined by negative values of the level-set field.

Template Parameters
dimAn integer that denotes the dimension of the space in which the problem is solved.
VectorTypeThe vector type of the solution vector.
Parameters
[in]dof_handlerDoFHandler associated with the triangulation on which the volume is computed.
[in]feFinite element.
[in]level_set_vector_relevant_copyLevel-set vector.
Returns
Volume enclosed by the zero level and its surface area. The volume is the first value and the surface area is the second.

◆ integrate_volume_and_surface() [3/8]

template std::pair< double, double > MeltPoolDG::LevelSet::integrate_volume_and_surface ( const DoFHandler< 2 > &  ,
const FiniteElement< 2 > &  ,
const LinearAlgebra::distributed::Vector< double > &   
)

◆ integrate_volume_and_surface() [4/8]

template std::pair< double, double > MeltPoolDG::LevelSet::integrate_volume_and_surface ( const DoFHandler< 2 > &  ,
const FiniteElement< 2 > &  ,
const LinearAlgebra::distributed::Vector< double > &  ,
const double   
)

◆ integrate_volume_and_surface() [5/8]

template std::pair< double, double > MeltPoolDG::LevelSet::integrate_volume_and_surface ( const DoFHandler< 3 > &  ,
const FiniteElement< 3 > &  ,
const LinearAlgebra::distributed::Vector< double > &   
)

◆ integrate_volume_and_surface() [6/8]

template std::pair< double, double > MeltPoolDG::LevelSet::integrate_volume_and_surface ( const DoFHandler< 3 > &  ,
const FiniteElement< 3 > &  ,
const LinearAlgebra::distributed::Vector< double > &  ,
const double   
)

◆ integrate_volume_and_surface() [7/8]

template<int dim, typename VectorType >
std::pair< double, double > MeltPoolDG::LevelSet::integrate_volume_and_surface ( const DoFHandler< dim > &  dof_handler,
const FiniteElement< dim > &  fe,
const VectorType &  level_set_vector,
const double  iso_level 
)

◆ integrate_volume_and_surface() [8/8]

template<int dim, typename VectorType >
std::pair< double, double > MeltPoolDG::LevelSet::integrate_volume_and_surface ( const DoFHandler< dim > &  dof_handler,
const FiniteElement< dim > &  fe,
const VectorType &  level_set_vector_relevant_copy 
)

◆ reconstruct_interface() [1/4]

template<int dim, typename VectorType >
void MeltPoolDG::LevelSet::reconstruct_interface ( const dealii::Mapping< dim > &  mapping,
const dealii::DoFHandler< dim > &  dof_handler,
const dealii::FiniteElement< dim > &  fe,
const VectorType &  level_set_vector,
const double  iso_level,
const int  mca_n_subdivisions,
std::map< dealii::types::global_cell_index, std::vector< dealii::Point< dim > > > &  interface_reconstruction_vertices,
std::map< dealii::types::global_cell_index, std::vector< dealii::CellData< dim==1 ? 1 :dim - 1 > > > &  interface_reconstruction_cells,
std::set< dealii::types::global_dof_index > &  intersected_dofs 
)

Reconstruct the interface defined by a given level of a level-set field in the domain.

Template Parameters
dimAn integer that denotes the dimension of the space in which the problem is solved.
VectorTypeThe vector type of the solution vector.
Parameters
[in]mappingdealii::Mapping of the domain.
[in]dof_handlerDoFHandler associated with the triangulation for which the interface is reconstructed.
[in]feFinite element.
[in]level_set_vectorLevel-set vector.
[in]iso_levelGiven level of the level-set field defining the interface of interest.
[in,out]interface_reconstruction_verticesCell-wise map of the reconstructed interface vertices.
[in,out]interface_reconstruction_cellsCell-wise map of the reconstructed interface cells.
[in,out]intersected_dofsSet of DoFs belonging to intersected cells.

◆ reconstruct_interface() [2/4]

template void MeltPoolDG::LevelSet::reconstruct_interface ( const Mapping< 2 > &  ,
const DoFHandler< 2 > &  ,
const FiniteElement< 2 > &  ,
const LinearAlgebra::distributed::Vector< double > &  ,
const double  ,
const int  ,
std::map< types::global_cell_index, std::vector< Point< 2 > > > &  ,
std::map< types::global_cell_index, std::vector< CellData< 1 > > > &  ,
std::set< types::global_dof_index > &   
)

◆ reconstruct_interface() [3/4]

template void MeltPoolDG::LevelSet::reconstruct_interface ( const Mapping< 3 > &  ,
const DoFHandler< 3 > &  ,
const FiniteElement< 3 > &  ,
const LinearAlgebra::distributed::Vector< double > &  ,
const double  ,
const int  ,
std::map< types::global_cell_index, std::vector< Point< 3 > > > &  ,
std::map< types::global_cell_index, std::vector< CellData< 2 > > > &  ,
std::set< types::global_dof_index > &   
)

◆ reconstruct_interface() [4/4]

template<int dim, typename VectorType >
void MeltPoolDG::LevelSet::reconstruct_interface ( const Mapping< dim > &  mapping,
const DoFHandler< dim > &  dof_handler,
const FiniteElement< dim > &  fe,
const VectorType &  level_set_vector,
const double  iso_level,
const int  mca_n_subdivisions,
std::map< types::global_cell_index, std::vector< Point< dim > > > &  interface_reconstruction_vertices,
std::map< types::global_cell_index, std::vector< CellData< dim==1 ? 1 :dim - 1 > > > &  interface_reconstruction_cells,
std::set< types::global_dof_index > &  intersected_dofs 
)

◆ sgn()

template<typename T >
constexpr int MeltPoolDG::LevelSet::sgn ( const T  val)
constexprnoexcept

Return the sign of a value.

Template Parameters
TNumeric type of the input value.
Parameters
[in]valValue for which the sign is evaluated.
Returns
-1 if val is negative, 0 if it is zero, and 1 if it is positive.

◆ smooth_heaviside_from_distance_value()

template<typename number >
number MeltPoolDG::LevelSet::smooth_heaviside_from_distance_value ( const number  x)
inline

The given distance value is transformed to a smooth heaviside function \(H_\epsilon\), which has the property of \(\int \nabla H_\epsilon=1\). This function has its transition region between -2 and 2.

◆ vertices_cell_mapping()

template<int dim>
void MeltPoolDG::LevelSet::vertices_cell_mapping ( const dealii::DoFHandler< dim > &  dof_handler,
std::map< unsigned int, std::set< typename dealii::DoFHandler< dim >::active_cell_iterator > > &  vertices_cell_map 
)

Build a map from mesh vertex indices to the active cells that contain them.

Only locally owned and ghost cells are inserted in the map.

Template Parameters
dimAn integer that denotes the dimension of the space in which the problem is solved.
Parameters
[in]dof_handlerDoFHandler associated with the mesh.
[in,out]vertices_cell_mapMap filled with the cells attached to each vertex index.

Variable Documentation

◆ char

MeltPoolDG::LevelSet::char

◆ get_generalized_theta

std::map<std::string, double> MeltPoolDG::LevelSet::get_generalized_theta
static
Initial value:
= {
{"explicit_euler", 0.0},
{"implicit_euler", 1.0},
{"crank_nicolson", 0.5},
}

◆ is_debug_mode

constexpr bool MeltPoolDG::LevelSet::is_debug_mode = false
staticconstexpr

◆ specific_heat_capacity_times_density

MeltPoolDG::LevelSet::specific_heat_capacity_times_density

◆ volume_specific_heat_capacity

MeltPoolDG::LevelSet::volume_specific_heat_capacity