deal.II version GIT relicensing-2220-ge8e5360a96 2024-12-05 09:50:00+00:00
|
#include <deal.II/base/floating_point_comparator.h>
#include <deal.II/base/mpi.h>
#include <deal.II/base/mpi.templates.h>
#include <deal.II/base/mpi_consensus_algorithms.h>
#include <deal.II/base/quadrature_lib.h>
#include <deal.II/base/thread_management.h>
#include <deal.II/arborx/access_traits.h>
#include <deal.II/arborx/distributed_tree.h>
#include <deal.II/cgal/intersections.h>
#include <deal.II/cgal/utilities.h>
#include <deal.II/distributed/fully_distributed_tria.h>
#include <deal.II/distributed/p4est_wrappers.h>
#include <deal.II/distributed/shared_tria.h>
#include <deal.II/distributed/tria.h>
#include <deal.II/dofs/dof_accessor.h>
#include <deal.II/dofs/dof_handler.h>
#include <deal.II/dofs/dof_tools.h>
#include <deal.II/fe/fe_nothing.h>
#include <deal.II/fe/fe_q.h>
#include <deal.II/fe/fe_values.h>
#include <deal.II/fe/mapping_fe.h>
#include <deal.II/fe/mapping_q.h>
#include <deal.II/grid/filtered_iterator.h>
#include <deal.II/grid/grid_tools.h>
#include <deal.II/grid/grid_tools_cache.h>
#include <deal.II/grid/manifold.h>
#include <deal.II/grid/tria.h>
#include <deal.II/grid/tria_accessor.h>
#include <deal.II/grid/tria_iterator.h>
#include <deal.II/lac/constrained_linear_operator.h>
#include <deal.II/lac/dynamic_sparsity_pattern.h>
#include <deal.II/lac/lapack_full_matrix.h>
#include <deal.II/lac/precondition.h>
#include <deal.II/lac/solver_cg.h>
#include <deal.II/lac/sparse_matrix.h>
#include <deal.II/lac/sparsity_pattern.h>
#include <deal.II/lac/sparsity_tools.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/vector_memory.h>
#include <deal.II/numerics/matrix_tools.h>
#include <deal.II/numerics/vector_tools_integrate_difference.h>
#include <deal.II/physics/transformations.h>
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/uniform_real_distribution.hpp>
#include <array>
#include <cmath>
#include <iostream>
#include <limits>
#include <list>
#include <numeric>
#include <set>
#include <tuple>
#include <unordered_map>
#include "grid_tools.inst"
Go to the source code of this file.
Classes | |
class | GridTools::internal::Shift< spacedim > |
class | GridTools::internal::Rotate2d |
class | GridTools::internal::Rotate3d |
class | GridTools::internal::Scale< spacedim > |
Namespaces | |
namespace | GridTools |
namespace | GridTools::internal |
namespace | GridTools::internal::BoundingBoxPredicate |
namespace | GridTools::internal::FixUpDistortedChildCells |
Functions | |
template<> | |
void | GridTools::rotate (const double angle, Triangulation< 1, 2 > &triangulation) |
template<> | |
void | GridTools::rotate (const double angle, Triangulation< 2, 2 > &triangulation) |
void | GridTools::internal::laplace_solve (const SparseMatrix< double > &S, const AffineConstraints< double > &constraints, Vector< double > &u) |
template<int dim> | |
void | GridTools::laplace_transform (const std::map< unsigned int, Point< dim > > &new_points, Triangulation< dim > &triangulation, const Function< dim > *coefficient, const bool solve_for_absolute_positions) |
template<int spacedim> | |
bool | GridTools::internal::compare_point_association (const unsigned int a, const unsigned int b, const Tensor< 1, spacedim > &point_direction, const std::vector< Tensor< 1, spacedim > > ¢er_directions) |
template<typename MeshType > | |
std::tuple< BoundingBox< MeshType::space_dimension >, bool > | GridTools::internal::BoundingBoxPredicate::compute_cell_predicate_bounding_box (const typename MeshType::cell_iterator &parent_cell, const std::function< bool(const typename MeshType::active_cell_iterator &)> &predicate) |
template<class IT > | |
void | GridTools::internal::set_subdomain_id_in_zorder_recursively (IT cell, unsigned int ¤t_proc_idx, unsigned int ¤t_cell_idx, const unsigned int n_active_cells, const unsigned int n_partitions) |
template<typename Iterator , int spacedim> | |
double | GridTools::internal::FixUpDistortedChildCells::objective_function (const Iterator &object, const Point< spacedim > &object_mid_point) |
template<typename Iterator > | |
Point< Iterator::AccessorType::space_dimension > | GridTools::internal::FixUpDistortedChildCells::get_face_midpoint (const Iterator &object, const unsigned int f, std::integral_constant< int, 1 >) |
template<typename Iterator > | |
Point< Iterator::AccessorType::space_dimension > | GridTools::internal::FixUpDistortedChildCells::get_face_midpoint (const Iterator &object, const unsigned int f, std::integral_constant< int, 2 >) |
template<typename Iterator > | |
Point< Iterator::AccessorType::space_dimension > | GridTools::internal::FixUpDistortedChildCells::get_face_midpoint (const Iterator &object, const unsigned int f, std::integral_constant< int, 3 >) |
template<typename Iterator > | |
double | GridTools::internal::FixUpDistortedChildCells::minimal_diameter (const Iterator &object) |
template<typename Iterator > | |
bool | GridTools::internal::FixUpDistortedChildCells::fix_up_object (const Iterator &object) |
template<int dim, int spacedim> | |
void | GridTools::internal::FixUpDistortedChildCells::fix_up_faces (const typename ::Triangulation< dim, spacedim >::cell_iterator &cell, std::integral_constant< int, dim >, std::integral_constant< int, spacedim >) |
template<int spacedim, typename T > | |
std::tuple< std::vector< unsigned int >, std::vector< unsigned int >, std::vector< unsigned int > > | GridTools::internal::guess_owners_of_entities (const MPI_Comm comm, const std::vector< std::vector< BoundingBox< spacedim > > > &global_bboxes, const std::vector< T > &entities, const double tolerance) |
template<int dim, int spacedim> | |
std::vector< std::pair< typename Triangulation< dim, spacedim >::active_cell_iterator, Point< dim > > > | GridTools::internal::find_all_locally_owned_active_cells_around_point (const Cache< dim, spacedim > &cache, const Point< spacedim > &point, typename Triangulation< dim, spacedim >::active_cell_iterator &cell_hint, const std::vector< bool > &marked_vertices, const double tolerance, const bool enforce_unique_mapping) |
template<int dim, int spacedim> | |
DistributedComputePointLocationsInternal< dim, spacedim > | GridTools::internal::distributed_compute_point_locations (const GridTools::Cache< dim, spacedim > &cache, const std::vector< Point< spacedim > > &points, const std::vector< std::vector< BoundingBox< spacedim > > > &global_bboxes, const std::vector< bool > &marked_vertices, const double tolerance, const bool perform_handshake, const bool enforce_unique_mapping=false) |
template<int structdim, int dim, int spacedim> | |
DistributedComputeIntersectionLocationsInternal< structdim, spacedim > | GridTools::internal::distributed_compute_intersection_locations (const Cache< dim, spacedim > &cache, const std::vector< std::vector< Point< spacedim > > > &intersection_requests, const std::vector< std::vector< BoundingBox< spacedim > > > &global_bboxes, const std::vector< bool > &marked_vertices, const double tolerance) |
template<int spacedim> | |
std::vector< std::vector< BoundingBox< spacedim > > > | GridTools::exchange_local_bounding_boxes (const std::vector< BoundingBox< spacedim > > &local_bboxes, const MPI_Comm mpi_communicator) |
template<int spacedim> | |
RTree< std::pair< BoundingBox< spacedim >, unsigned int > > | GridTools::build_global_description_tree (const std::vector< BoundingBox< spacedim > > &local_description, const MPI_Comm mpi_communicator) |
template<int dim, int spacedim> | |
void | GridTools::collect_coinciding_vertices (const Triangulation< dim, spacedim > &tria, std::map< unsigned int, std::vector< unsigned int > > &coinciding_vertex_groups, std::map< unsigned int, unsigned int > &vertex_to_coinciding_vertex_group) |
template<int dim, int spacedim> | |
std::map< unsigned int, std::set<::types::subdomain_id > > | GridTools::compute_vertices_with_ghost_neighbors (const Triangulation< dim, spacedim > &tria) |
template<int dim, unsigned int n_vertices, unsigned int n_sub_vertices, unsigned int n_configurations, unsigned int n_lines, unsigned int n_cols, typename value_type > | |
void | GridTools::internal::process_sub_cell (const std::array< unsigned int, n_configurations > &cut_line_table, const ndarray< unsigned int, n_configurations, n_cols > &new_line_table, const ndarray< unsigned int, n_lines, 2 > &line_to_vertex_table, const std::vector< value_type > &ls_values, const std::vector< Point< dim > > &points, const std::vector< unsigned int > &mask, const double iso_level, const double tolerance, std::vector< Point< dim > > &vertices, std::vector< CellData< dim==1 ? 1 :dim - 1 > > &cells, const bool write_back_cell_data) |
Rotating, stretching and otherwise transforming meshes | |
template<int dim, int spacedim> | |
void | GridTools::shift (const Tensor< 1, spacedim > &shift_vector, Triangulation< dim, spacedim > &triangulation) |
template<int dim, int spacedim> | |
void | GridTools::rotate (const double angle, Triangulation< dim, spacedim > &triangulation) |
template<int dim> | |
void | GridTools::rotate (const Tensor< 1, 3, double > &axis, const double angle, Triangulation< dim, 3 > &triangulation) |
template<int dim, int spacedim> | |
void | GridTools::scale (const double scaling_factor, Triangulation< dim, spacedim > &triangulation) |
template<int dim, int spacedim> | |
void | GridTools::distort_random (const double factor, Triangulation< dim, spacedim > &triangulation, const bool keep_boundary=true, const unsigned int seed=boost::random::mt19937::default_seed) |
template<int dim, int spacedim> | |
void | GridTools::regularize_corner_cells (Triangulation< dim, spacedim > &tria, const double limit_angle_fraction=.75) |
Finding cells and vertices of a triangulation | |
template<int dim, template< int, int > class MeshType, int spacedim> | |
unsigned int | GridTools::find_closest_vertex (const MeshType< dim, spacedim > &mesh, const Point< spacedim > &p, const std::vector< bool > &marked_vertices={}) |
template<int dim, template< int, int > class MeshType, int spacedim> | |
unsigned int | GridTools::find_closest_vertex (const Mapping< dim, spacedim > &mapping, const MeshType< dim, spacedim > &mesh, const Point< spacedim > &p, const std::vector< bool > &marked_vertices={}) |
template<int dim, int spacedim> | |
std::vector< std::vector< Tensor< 1, spacedim > > > | GridTools::vertex_to_cell_centers_directions (const Triangulation< dim, spacedim > &mesh, const std::vector< std::set< typename Triangulation< dim, spacedim >::active_cell_iterator > > &vertex_to_cells) |
template<int dim, template< int, int > class MeshType, int spacedim> | |
std::pair< typename MeshType< dim, spacedim >::active_cell_iterator, Point< dim > > | GridTools::find_active_cell_around_point (const Mapping< dim, spacedim > &mapping, const MeshType< dim, spacedim > &mesh, const Point< spacedim > &p, const std::vector< std::set< typename MeshType< dim, spacedim >::active_cell_iterator > > &vertex_to_cell_map, const std::vector< std::vector< Tensor< 1, spacedim > > > &vertex_to_cell_centers, const typename MeshType< dim, spacedim >::active_cell_iterator &cell_hint=typename MeshType< dim, spacedim >::active_cell_iterator(), const std::vector< bool > &marked_vertices={}, const RTree< std::pair< Point< spacedim >, unsigned int > > &used_vertices_rtree=RTree< std::pair< Point< spacedim >, unsigned int > >{}, const double tolerance=1.e-10, const RTree< std::pair< BoundingBox< spacedim >, typename Triangulation< dim, spacedim >::active_cell_iterator > > *relevant_cell_bounding_boxes_rtree=nullptr) |
template<int dim, int spacedim> | |
unsigned int | GridTools::find_closest_vertex_of_cell (const typename Triangulation< dim, spacedim >::active_cell_iterator &cell, const Point< spacedim > &position, const Mapping< dim, spacedim > &mapping=(ReferenceCells::get_hypercube< dim >() .template get_default_linear_mapping< dim, spacedim >())) |
template<typename MeshType > | |
std::vector< BoundingBox< MeshType::space_dimension > > | GridTools::compute_mesh_predicate_bounding_box (const MeshType &mesh, const std::function< bool(const typename MeshType::active_cell_iterator &)> &predicate, const unsigned int refinement_level=0, const bool allow_merge=false, const unsigned int max_boxes=numbers::invalid_unsigned_int) |
template<int spacedim> | |
return_type | GridTools::guess_point_owner (const std::vector< std::vector< BoundingBox< spacedim > > > &global_bboxes, const std::vector< Point< spacedim > > &points) |
template<int spacedim> | |
return_type | GridTools::guess_point_owner (const RTree< std::pair< BoundingBox< spacedim >, unsigned int > > &covering_rtree, const std::vector< Point< spacedim > > &points) |
template<int dim, int spacedim> | |
std::map< unsigned int, types::global_vertex_index > | GridTools::compute_local_to_global_vertex_index_map (const Triangulation< dim, spacedim > &triangulation) |
template<int dim, int spacedim> | |
return_type | GridTools::compute_point_locations (const Cache< dim, spacedim > &cache, const std::vector< Point< spacedim > > &points, const typename Triangulation< dim, spacedim >::active_cell_iterator &cell_hint=typename Triangulation< dim, spacedim >::active_cell_iterator()) |
template<int dim, int spacedim> | |
return_type | GridTools::compute_point_locations_try_all (const Cache< dim, spacedim > &cache, const std::vector< Point< spacedim > > &points, const typename Triangulation< dim, spacedim >::active_cell_iterator &cell_hint=typename Triangulation< dim, spacedim >::active_cell_iterator()) |
template<int dim, int spacedim> | |
return_type | GridTools::distributed_compute_point_locations (const GridTools::Cache< dim, spacedim > &cache, const std::vector< Point< spacedim > > &local_points, const std::vector< std::vector< BoundingBox< spacedim > > > &global_bboxes, const double tolerance=1e-10, const std::vector< bool > &marked_vertices={}, const bool enforce_unique_mapping=true) |
template<int spacedim> | |
unsigned int | GridTools::find_closest_vertex (const std::map< unsigned int, Point< spacedim > > &vertices, const Point< spacedim > &p) |
template<int dim, int spacedim> | |
std::pair< typename Triangulation< dim, spacedim >::active_cell_iterator, Point< dim > > | GridTools::find_active_cell_around_point (const Cache< dim, spacedim > &cache, const Point< spacedim > &p, const typename Triangulation< dim, spacedim >::active_cell_iterator &cell_hint=typename Triangulation< dim, spacedim >::active_cell_iterator(), const std::vector< bool > &marked_vertices={}, const double tolerance=1.e-10) |
Partitions and subdomains of triangulations | |
template<int dim, int spacedim> | |
void | GridTools::partition_triangulation (const unsigned int n_partitions, Triangulation< dim, spacedim > &triangulation, const SparsityTools::Partitioner partitioner=SparsityTools::Partitioner::metis) |
template<int dim, int spacedim> | |
void | GridTools::partition_triangulation (const unsigned int n_partitions, const std::vector< unsigned int > &cell_weights, Triangulation< dim, spacedim > &triangulation, const SparsityTools::Partitioner partitioner=SparsityTools::Partitioner::metis) |
template<int dim, int spacedim> | |
void | GridTools::partition_triangulation (const unsigned int n_partitions, const SparsityPattern &cell_connection_graph, Triangulation< dim, spacedim > &triangulation, const SparsityTools::Partitioner partitioner=SparsityTools::Partitioner::metis) |
template<int dim, int spacedim> | |
void | GridTools::partition_triangulation (const unsigned int n_partitions, const std::vector< unsigned int > &cell_weights, const SparsityPattern &cell_connection_graph, Triangulation< dim, spacedim > &triangulation, const SparsityTools::Partitioner partitioner=SparsityTools::Partitioner::metis) |
template<int dim, int spacedim> | |
void | GridTools::partition_triangulation_zorder (const unsigned int n_partitions, Triangulation< dim, spacedim > &triangulation, const bool group_siblings=true) |
template<int dim, int spacedim> | |
void | GridTools::partition_multigrid_levels (Triangulation< dim, spacedim > &triangulation) |
template<int dim, int spacedim> | |
std::vector< types::subdomain_id > | GridTools::get_subdomain_association (const Triangulation< dim, spacedim > &triangulation, const std::vector< CellId > &cell_ids) |
template<int dim, int spacedim> | |
void | GridTools::get_subdomain_association (const Triangulation< dim, spacedim > &triangulation, std::vector< types::subdomain_id > &subdomain) |
template<int dim, int spacedim> | |
unsigned int | GridTools::count_cells_with_subdomain_association (const Triangulation< dim, spacedim > &triangulation, const types::subdomain_id subdomain) |
template<int dim, int spacedim> | |
std::vector< bool > | GridTools::get_locally_owned_vertices (const Triangulation< dim, spacedim > &triangulation) |
Dealing with distorted cells | |
template<int dim, int spacedim> | |
Triangulation< dim, spacedim >::DistortedCellList | GridTools::fix_up_distorted_child_cells (const typename Triangulation< dim, spacedim >::DistortedCellList &distorted_cells, Triangulation< dim, spacedim > &triangulation) |
Dealing with boundary and manifold ids | |
template<int dim, int spacedim> | |
void | GridTools::copy_boundary_to_manifold_id (Triangulation< dim, spacedim > &tria, const bool reset_boundary_ids=false) |
template<int dim, int spacedim> | |
void | GridTools::map_boundary_to_manifold_ids (const std::vector< types::boundary_id > &src_boundary_ids, const std::vector< types::manifold_id > &dst_manifold_ids, Triangulation< dim, spacedim > &tria, const std::vector< types::boundary_id > &reset_boundary_ids={}) |
template<int dim, int spacedim> | |
void | GridTools::copy_material_to_manifold_id (Triangulation< dim, spacedim > &tria, const bool compute_face_ids=false) |
template<int dim, int spacedim> | |
void | GridTools::assign_co_dimensional_manifold_indicators (Triangulation< dim, spacedim > &tria, const std::function< types::manifold_id(const std::set< types::manifold_id > &)> &disambiguation_function=[](const std::set< types::manifold_id > &manifold_ids) { if(manifold_ids.size()==1) return *manifold_ids.begin();else return numbers::flat_manifold_id;}, bool overwrite_only_flat_manifold_ids=true) |