Reference documentation for deal.II version 9.3.3
|
#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/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_q.h>
#include <deal.II/fe/mapping_q1.h>
#include <deal.II/fe/mapping_q_generic.h>
#include <deal.II/grid/filtered_iterator.h>
#include <deal.II/grid/grid_reordering.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/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 <boost/random/mersenne_twister.hpp>
#include <boost/random/uniform_real_distribution.hpp>
#include <array>
#include <cmath>
#include <iostream>
#include <list>
#include <numeric>
#include <set>
#include <tuple>
#include <unordered_map>
#include "grid_tools.inst"
Go to the source code of this file.
Namespaces | |
namespace | GridTools |
namespace | GridTools::internal |
namespace | GridTools::internal::BoundingBoxPredicate |
namespace | GridTools::internal::FixUpDistortedChildCells |
Functions | |
void | GridTools::internal::append_face_data (const CellData< 1 > &face_data, SubCellData &subcell_data) |
void | GridTools::internal::append_face_data (const CellData< 2 > &face_data, SubCellData &subcell_data) |
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<class 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> | |
std::tuple< std::vector< unsigned int >, std::vector< unsigned int >, std::vector< unsigned int > > | GridTools::internal::guess_point_owner (const std::vector< std::vector< BoundingBox< spacedim > > > &global_bboxes, const std::vector< Point< spacedim > > &points) |
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) |
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 double tolerance, const bool perform_handshake, const bool enforce_unique_mapping=false) |
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 > > &cells) |
Information about meshes and cells | |
template<int dim, int spacedim> | |
double | GridTools::diameter (const Triangulation< dim, spacedim > &tria) |
template<int dim, int spacedim> | |
double | GridTools::volume (const Triangulation< dim, spacedim > &tria, const Mapping< dim, spacedim > &mapping=(ReferenceCells::get_hypercube< dim >() .template get_default_linear_mapping< dim, spacedim >())) |
template<int dim, int spacedim> | |
std::pair< DerivativeForm< 1, dim, spacedim >, Tensor< 1, spacedim > > | GridTools::affine_cell_approximation (const ArrayView< const Point< spacedim > > &vertices) |
template<int dim> | |
Vector< double > | GridTools::compute_aspect_ratio_of_cells (const Mapping< dim > &mapping, const Triangulation< dim > &triangulation, const Quadrature< dim > &quadrature) |
template<int dim> | |
double | GridTools::compute_maximum_aspect_ratio (const Mapping< dim > &mapping, const Triangulation< dim > &triangulation, const Quadrature< dim > &quadrature) |
template<int dim, int spacedim> | |
BoundingBox< spacedim > | GridTools::compute_bounding_box (const Triangulation< dim, spacedim > &triangulation) |
template<int dim, int spacedim> | |
std::tuple< std::vector< Point< spacedim > >, std::vector< CellData< dim > >, SubCellData > | GridTools::get_coarse_mesh_description (const Triangulation< dim, spacedim > &tria) |
template<int dim, int spacedim> | |
double | GridTools::minimal_cell_diameter (const Triangulation< dim, spacedim > &triangulation, const Mapping< dim, spacedim > &mapping=(ReferenceCells::get_hypercube< dim >() .template get_default_linear_mapping< dim, spacedim >())) |
template<int dim, int spacedim> | |
double | GridTools::maximal_cell_diameter (const Triangulation< dim, spacedim > &triangulation, const Mapping< dim, spacedim > &mapping=(ReferenceCells::get_hypercube< dim >() .template get_default_linear_mapping< dim, spacedim >())) |
Functions supporting the creation of meshes | |
template<int dim, int spacedim> | |
void | GridTools::delete_unused_vertices (std::vector< Point< spacedim > > &vertices, std::vector< CellData< dim > > &cells, SubCellData &subcelldata) |
template<int dim, int spacedim> | |
void | GridTools::delete_duplicated_vertices (std::vector< Point< spacedim > > &all_vertices, std::vector< CellData< dim > > &cells, SubCellData &subcelldata, std::vector< unsigned int > &considered_vertices, const double tol=1e-12) |
template<int dim, int spacedim> | |
void | GridTools::invert_all_negative_measure_cells (const std::vector< Point< spacedim > > &all_vertices, std::vector< CellData< dim > > &cells) |
template<int dim> | |
void | GridTools::consistently_order_cells (std::vector< CellData< dim > > &cells) |
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> | |
void | GridTools::rotate (const double angle, const unsigned int axis, 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> | |
std::map< unsigned int, Point< spacedim > > | GridTools::get_all_vertices_at_boundary (const Triangulation< dim, spacedim > &tria) |
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::remove_hanging_nodes (Triangulation< dim, spacedim > &tria, const bool isotropic=false, const unsigned int max_iterations=100) |
template<int dim, int spacedim> | |
void | GridTools::remove_anisotropy (Triangulation< dim, spacedim > &tria, const double max_ratio=1.6180339887, const unsigned int max_iterations=5) |
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, template< int, int > class MeshType, int spacedim> | |
std::vector< typename MeshType< dim, spacedim >::active_cell_iterator > | GridTools::find_cells_adjacent_to_vertex (const MeshType< dim, spacedim > &container, const unsigned int vertex_index) |
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) |
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<class 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::vector< std::set< typename Triangulation< dim, spacedim >::active_cell_iterator > > | GridTools::vertex_to_cell_map (const Triangulation< dim, spacedim > &triangulation) |
template<int dim, int spacedim> | |
std::map< unsigned int, types::global_vertex_index > | GridTools::compute_local_to_global_vertex_index_map (const parallel::distributed::Triangulation< dim, spacedim > &triangulation) |
template<int dim, int spacedim> | |
std::pair< unsigned int, double > | GridTools::get_longest_direction (typename Triangulation< dim, spacedim >::active_cell_iterator cell) |
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) |
template<int dim, int spacedim> | |
std::map< unsigned int, Point< spacedim > > | GridTools::extract_used_vertices (const Triangulation< dim, spacedim > &container, const Mapping< dim, spacedim > &mapping=(ReferenceCells::get_hypercube< dim >() .template get_default_linear_mapping< dim, spacedim >())) |
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::get_face_connectivity_of_cells (const Triangulation< dim, spacedim > &triangulation, DynamicSparsityPattern &connectivity) |
template<int dim, int spacedim> | |
void | GridTools::get_vertex_connectivity_of_cells (const Triangulation< dim, spacedim > &triangulation, DynamicSparsityPattern &connectivity) |
template<int dim, int spacedim> | |
void | GridTools::get_vertex_connectivity_of_cells_on_level (const Triangulation< dim, spacedim > &triangulation, const unsigned int level, DynamicSparsityPattern &connectivity) |
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) |
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) |
|
static |
Definition at line 213 of file grid_tools.cc.
|
static |
Definition at line 214 of file grid_tools.cc.
|
private |
The global indices of the vertices that define the edge.
Definition at line 963 of file grid_tools.cc.
|
private |
Definition at line 963 of file grid_tools.cc.
|
static |
An array that contains the indices of dim edges that can serve as (arbitrarily chosen) starting points for the dim sets of parallel edges within each cell.
Definition at line 1027 of file grid_tools.cc.
|
static |
Number and indices of all of those edges parallel to each of the edges in a cell.
Definition at line 1033 of file grid_tools.cc.
|
static |
Definition at line 1035 of file grid_tools.cc.
unsigned int cell_index |
Definition at line 1092 of file grid_tools.cc.
unsigned int edge_within_cell |
Definition at line 1093 of file grid_tools.cc.
|
private |
References to the (at most) two cells that are adjacent to the edge this object corresponds to. Unused elements are default-initialized and have invalid values; in particular, their cell_index field equals numbers::invalid_unsigned_int.
Store the set of cells adjacent to this edge (these cells then also store where in the cell the edge is located).
Definition at line 1176 of file grid_tools.cc.
unsigned int vertex_indices[GeometryInfo< dim >::vertices_per_cell] |
The global indices of the two vertices that bound this edge. These will be ordered so that the first index is less than the second.
A list of global indices for the vertices that bound this cell.
Definition at line 1256 of file grid_tools.cc.
OrientationStatus orientation_status |
Definition at line 1269 of file grid_tools.cc.
unsigned int edge_indices[2] |
A list of indices into the 'edge_list' array passed to the constructor for the edges of the current cell.
Storage space to store the indices of at most two edges.
Definition at line 1319 of file grid_tools.cc.