source/utilities/level_set_tools.cpp File Reference

Developer Documentation: source/utilities/level_set_tools.cpp File Reference
Developer Documentation
level_set_tools.cpp File Reference
#include <meltpooldg/level_set/level_set_tools.hpp>
#include <deal.II/base/array_view.h>
#include <deal.II/base/exceptions.h>
#include <deal.II/base/index_set.h>
#include <deal.II/base/quadrature.h>
#include <deal.II/base/quadrature_lib.h>
#include <deal.II/base/types.h>
#include <deal.II/base/utilities.h>
#include <deal.II/distributed/shared_tria.h>
#include <deal.II/dofs/dof_tools.h>
#include <deal.II/fe/fe_nothing.h>
#include <deal.II/fe/fe_simplex_p.h>
#include <deal.II/fe/fe_update_flags.h>
#include <deal.II/fe/fe_values.h>
#include <deal.II/fe/mapping_fe.h>
#include <deal.II/grid/cell_data.h>
#include <deal.II/grid/grid_tools.h>
#include <deal.II/grid/grid_tools_geometry.h>
#include <deal.II/hp/fe_collection.h>
#include <deal.II/hp/mapping_collection.h>
#include <deal.II/hp/q_collection.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/vector_operation.h>
#include <deal.II/matrix_free/evaluation_flags.h>
#include <deal.II/matrix_free/fe_point_evaluation.h>
#include <deal.II/non_matching/fe_immersed_values.h>
#include <deal.II/non_matching/fe_values.h>
#include <deal.II/non_matching/mesh_classifier.h>
#include <meltpooldg/utilities/generate_points_along_vector.hpp>
#include <meltpooldg/utilities/triangulation_utils.hpp>
#include <algorithm>
#include <cmath>
#include <map>
#include <memory>
#include <optional>
#include <string>
Include dependency graph for level_set_tools.cpp:

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
 

Functions

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 dealii::LinearAlgebra::distributed::Vector< double > MeltPoolDG::LevelSet::Tools::merge_two_indicator_fields (const dealii::LinearAlgebra::distributed::Vector< double > &, const dealii::LinearAlgebra::distributed::Vector< double > &, BooleanType, const double, const double)
 
template void MeltPoolDG::LevelSet::Tools::collect_interface_cells_and_intersection_points (std::vector< std::pair< std::pair< unsigned int, unsigned int >, std::vector< dealii::Point< 1 > > > > &, std::vector< dealii::Point< 1 > > &, const dealii::DoFHandler< 1 > &, const dealii::Mapping< 1 > &, const dealii::LinearAlgebra::distributed::Vector< double > &, const double, const unsigned int, const double)
 
template void MeltPoolDG::LevelSet::Tools::collect_interface_cells_and_intersection_points (std::vector< std::pair< std::pair< unsigned int, unsigned int >, std::vector< dealii::Point< 2 > > > > &, std::vector< dealii::Point< 2 > > &, const dealii::DoFHandler< 2 > &, const dealii::Mapping< 2 > &, const dealii::LinearAlgebra::distributed::Vector< double > &, const double, const unsigned int, const double)
 
template void MeltPoolDG::LevelSet::Tools::collect_interface_cells_and_intersection_points (std::vector< std::pair< std::pair< unsigned int, unsigned int >, std::vector< dealii::Point< 3 > > > > &, std::vector< dealii::Point< 3 > > &, const dealii::DoFHandler< 3 > &, const dealii::Mapping< 3 > &, const dealii::LinearAlgebra::distributed::Vector< double > &, const double, const unsigned int, const double)
 
template void MeltPoolDG::LevelSet::Tools::evaluate_at_interface (const dealii::DoFHandler< 1 > &, const dealii::Mapping< 1 > &, const dealii::LinearAlgebra::distributed::Vector< double > &, const std::function< void(const typename dealii::DoFHandler< 1 >::active_cell_iterator &, const std::vector< dealii::Point< 1 > > &, const std::vector< dealii::Point< 1 > > &, const std::vector< double > &)> &, const double, const unsigned int, const double, const bool)
 
template void MeltPoolDG::LevelSet::Tools::evaluate_at_interface (const dealii::DoFHandler< 2 > &, const dealii::Mapping< 2 > &, const dealii::LinearAlgebra::distributed::Vector< double > &, const std::function< void(const typename dealii::DoFHandler< 2 >::active_cell_iterator &, const std::vector< dealii::Point< 2 > > &, const std::vector< dealii::Point< 2 > > &, const std::vector< double > &)> &, const double, const unsigned int, const double, const bool)
 
template void MeltPoolDG::LevelSet::Tools::evaluate_at_interface (const dealii::DoFHandler< 3 > &, const dealii::Mapping< 3 > &, const dealii::LinearAlgebra::distributed::Vector< double > &, const std::function< void(const typename dealii::DoFHandler< 3 >::active_cell_iterator &, const std::vector< dealii::Point< 3 > > &, const std::vector< dealii::Point< 3 > > &, const std::vector< double > &)> &, const double, const unsigned int, const double, const bool)
 
template std::vector< std::tuple< const typename dealii::Triangulation< 1, 1 >::cell_iterator, std::vector< dealii::Point< 1 > >, std::vector< double > > > MeltPoolDG::LevelSet::Tools::generate_surface_mesh_info (const dealii::DoFHandler< 1 > &, const dealii::Mapping< 1 > &, const dealii::LinearAlgebra::distributed::Vector< double > &, const double, const unsigned int, const double, const bool)
 
template std::vector< std::tuple< const typename dealii::Triangulation< 2, 2 >::cell_iterator, std::vector< dealii::Point< 2 > >, std::vector< double > > > MeltPoolDG::LevelSet::Tools::generate_surface_mesh_info (const dealii::DoFHandler< 2 > &, const dealii::Mapping< 2 > &, const dealii::LinearAlgebra::distributed::Vector< double > &, const double, const unsigned int, const double, const bool)
 
template std::vector< std::tuple< const typename dealii::Triangulation< 3, 3 >::cell_iterator, std::vector< dealii::Point< 3 > >, std::vector< double > > > MeltPoolDG::LevelSet::Tools::generate_surface_mesh_info (const dealii::DoFHandler< 3 > &, const dealii::Mapping< 3 > &, const dealii::LinearAlgebra::distributed::Vector< double > &, const double, const unsigned int, const double, const bool)
 
template void MeltPoolDG::LevelSet::Tools::generate_points_along_normal (std::vector< dealii::Point< 2 > > &, std::vector< unsigned int > &, const dealii::DoFHandler< 2 > &, const dealii::FESystem< 2 > &, const dealii::Mapping< 2 > &, const dealii::LinearAlgebra::distributed::Vector< double > &, const dealii::LinearAlgebra::distributed::BlockVector< double > &, const double, const unsigned int, const bool, const double, const unsigned int)
 
template void MeltPoolDG::LevelSet::Tools::generate_points_along_normal (std::vector< dealii::Point< 3 > > &, std::vector< unsigned int > &, const dealii::DoFHandler< 3 > &, const dealii::FESystem< 3 > &, const dealii::Mapping< 3 > &, const dealii::LinearAlgebra::distributed::Vector< double > &, const dealii::LinearAlgebra::distributed::BlockVector< double > &, const double, const unsigned int, const bool, const double, const unsigned int)
 
template void MeltPoolDG::LevelSet::Tools::set_material_id_from_level_set (const ScratchData< 1, 1, double > &, const unsigned int, const dealii::LinearAlgebra::distributed::Vector< double > &, const double)
 
template void MeltPoolDG::LevelSet::Tools::set_material_id_from_level_set (const ScratchData< 2, 2, double > &, const unsigned int, const dealii::LinearAlgebra::distributed::Vector< double > &, const double)
 
template void MeltPoolDG::LevelSet::Tools::set_material_id_from_level_set (const ScratchData< 3, 3, double > &, const unsigned int, const dealii::LinearAlgebra::distributed::Vector< double > &, const double)