include/meltpooldg/level_set/signed_distance_solver.hpp File Reference

Developer Documentation: include/meltpooldg/level_set/signed_distance_solver.hpp File Reference
Developer Documentation
signed_distance_solver.hpp File Reference
#include <deal.II/base/bounding_box.h>
#include <deal.II/base/conditional_ostream.h>
#include <deal.II/base/function.h>
#include <deal.II/base/point.h>
#include <deal.II/base/quadrature_lib.h>
#include <deal.II/base/table_handler.h>
#include <deal.II/base/tensor.h>
#include <deal.II/base/utilities.h>
#include <deal.II/dofs/dof_handler.h>
#include <deal.II/dofs/dof_tools.h>
#include <deal.II/fe/fe.h>
#include <deal.II/fe/fe_q.h>
#include <deal.II/fe/fe_tools.h>
#include <deal.II/fe/mapping_q.h>
#include <deal.II/grid/grid_tools.h>
#include <deal.II/grid/tria.h>
#include <deal.II/hp/fe_collection.h>
#include <deal.II/hp/q_collection.h>
#include <deal.II/lac/affine_constraints.h>
#include <deal.II/lac/la_parallel_vector.h>
#include <deal.II/lac/lapack_full_matrix.h>
#include <deal.II/lac/vector.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 <deal.II/non_matching/quadrature_generator.h>
#include <deal.II/numerics/data_out.h>
#include <deal.II/numerics/vector_tools.h>
#include <algorithm>
#include <cmath>
#include <fstream>
#include <iostream>
#include <map>
#include <memory>
#include <optional>
#include <set>
#include <string>
#include <vector>
Include dependency graph for signed_distance_solver.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  MeltPoolDG::LevelSet::CellWiseFunction< dim, VectorType, FEType >
 Scalar function defined by the DoF values of a single cell. More...
 
class  MeltPoolDG::LevelSet::InterfaceReconstructionDataOut< dim >
 Interface to build patches of the interface reconstruction vertices for visualization. More...
 
class  MeltPoolDG::LevelSet::SignedDistanceSolver< dim, VectorType >
 Solver to compute the signed distance from a given level of a level-set field. More...
 

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.
 

Enumerations

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

Functions

template<typename T >
constexpr int MeltPoolDG::LevelSet::sgn (const T val) noexcept
 Return the sign of a value.
 
void MeltPoolDG::LevelSet::announce_string (const dealii::ConditionalOStream &pcout, const std::string &expression, const char delimiter='-')
 Print a string surrounded by delimiter lines.
 
template<int dim>
double MeltPoolDG::LevelSet::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 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.
 
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<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.
 
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.
 
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.
 
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.
 
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.