include/meltpooldg/level_set/level_set_tools.hpp File Reference

Developer Documentation: include/meltpooldg/level_set/level_set_tools.hpp File Reference
Developer Documentation
level_set_tools.hpp File Reference
#include <deal.II/base/point.h>
#include <deal.II/base/vectorization.h>
#include <deal.II/dofs/dof_handler.h>
#include <deal.II/fe/fe_system.h>
#include <deal.II/fe/mapping.h>
#include <deal.II/grid/tria.h>
#include <deal.II/lac/la_parallel_block_vector.h>
#include <deal.II/lac/la_parallel_vector.h>
#include <meltpooldg/core/scratch_data.hpp>
#include <functional>
#include <tuple>
#include <utility>
#include <vector>
Include dependency graph for level_set_tools.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  MeltPoolDG
 Interface for a general preconditioner.
 
namespace  MeltPoolDG::LevelSet
 This operation solves the reinitialization problem for a CG- or DG-FEM-based discrete level-set field by solving an elliptic problem.
 
namespace  MeltPoolDG::LevelSet::Tools
 

Enumerations

enum  MeltPoolDG::LevelSet::Tools::BooleanType { MeltPoolDG::LevelSet::Tools::Union , MeltPoolDG::LevelSet::Tools::Intersection , MeltPoolDG::LevelSet::Tools::Subtraction }
 

Functions

template<typename value_type1 , typename value_type2 , typename value_type3 >
value_type1 MeltPoolDG::LevelSet::Tools::interpolate (const value_type1 &ls, const value_type2 &val1, const value_type3 &val2)
 
template<typename value_type1 , typename value_type2 , typename value_type3 >
value_type1 MeltPoolDG::LevelSet::Tools::interpolate_reciprocal (const value_type1 &ls, const value_type2 &val1, const value_type3 &val2)
 
template<typename value_type1 , typename value_type2 , typename value_type3 >
value_type1 MeltPoolDG::LevelSet::Tools::interpolate_cubic (const value_type1 &ls, const value_type2 &val1, const value_type3 &val2)
 
template<typename value_type1 , typename value_type2 , typename value_type3 >
value_type1 MeltPoolDG::LevelSet::Tools::interpolate_cubic_derivative (const value_type1 &ls, const value_type2 &val1, const value_type3 &val2)
 
template<typename number >
number MeltPoolDG::LevelSet::Tools::approximate_distance_from_tanh_level_set (const number phi, const number eps, const number cutoff)
 Computes an approximate signed distance from a hyperbolic tangent level-set value.
 
template<typename number >
dealii::LinearAlgebra::distributed::Vector< number > MeltPoolDG::LevelSet::Tools::merge_two_indicator_fields (const dealii::LinearAlgebra::distributed::Vector< number > &indicator_1, const dealii::LinearAlgebra::distributed::Vector< number > &indicator_2, BooleanType type=BooleanType::Union, const number indicator_value_interior=1.0, const number indicator_value_exterior=-1.0)
 
template<int dim, typename number >
void MeltPoolDG::LevelSet::Tools::collect_interface_cells_and_intersection_points (std::vector< std::pair< std::pair< unsigned int, unsigned int >, std::vector< dealii::Point< dim > > > > &surface_cells_and_unit_points, std::vector< dealii::Point< dim > > &surface_points, const dealii::DoFHandler< dim > &dof_handler, const dealii::Mapping< dim > &mapping, const dealii::LinearAlgebra::distributed::Vector< number > &level_set_vector, const number contour_value=0.0, const unsigned int n_subdivisions=1, const number tolerance=1e-10)
 Identifies volume cells intersected by a level set and extracts the corresponding quadrature points at the intersection (in both real and reference coordinates).
 
template<int dim, typename number >
void MeltPoolDG::LevelSet::Tools::evaluate_at_interface (const dealii::DoFHandler< dim > &dof_handler, const dealii::Mapping< dim > &mapping, const dealii::LinearAlgebra::distributed::Vector< number > &level_set_vector, const std::function< void(const typename dealii::DoFHandler< dim >::active_cell_iterator &, const std::vector< dealii::Point< dim > > &, const std::vector< dealii::Point< dim > > &, const std::vector< number > &)> &evaluate_at_interface_points, const number contour_value=0.0, const unsigned int n_subdivisions=1, const number tolerance=1e-10, const bool use_mca=true)
 Evaluates user-defined quantities at an implicitly defined interface.
 
template<int dim, typename number >
std::vector< std::tuple< const typename dealii::Triangulation< dim, dim >::cell_iterator, std::vector< dealii::Point< dim > >, std::vector< number > > > MeltPoolDG::LevelSet::Tools::generate_surface_mesh_info (const dealii::DoFHandler< dim > &dof_handler, const dealii::Mapping< dim > &mapping, const dealii::LinearAlgebra::distributed::Vector< number > &level_set, const number contour_value=0.0, const unsigned int n_subdivisions=1, const number tolerance=1e-10, const bool use_mca=true)
 Generates surface mesh data corresponding to an implicit interface.
 
template<int dim, typename number >
void MeltPoolDG::LevelSet::Tools::generate_points_along_normal (std::vector< dealii::Point< dim > > &global_points_normal_to_interface, std::vector< unsigned int > &global_points_normal_to_interface_pointer, const dealii::DoFHandler< dim > &dof_handler_ls, const dealii::FESystem< dim > &fe_normal, const dealii::Mapping< dim > &mapping, const dealii::LinearAlgebra::distributed::Vector< number > &level_set_vector, const dealii::LinearAlgebra::distributed::BlockVector< number > &normal_vector, const number max_distance_per_side, const unsigned int n_inc_per_side, const bool bidirectional=true, const number contour_value=0.0, const unsigned int n_subdivisions_MCA=1)
 
template<int dim, typename number >
void MeltPoolDG::LevelSet::Tools::set_material_id_from_level_set (const ScratchData< dim, dim, number > &scratch_data, const unsigned int ls_dof_idx, const dealii::LinearAlgebra::distributed::Vector< number > &level_set_heaviside, const number lower_threshold=0.5)
 
template<typename number >
dealii::VectorizedArray< number > MeltPoolDG::LevelSet::Tools::compute_mask_narrow_band (const dealii::VectorizedArray< number > &val, const number narrow_band_threshold)