| FEAT 3
    Finite Element Analysis Toolbox | 
Mesh permutation class template. More...
#include <mesh_permutation.hpp>
| Public Types | |
| typedef std::array< Adjacency::Permutation, shape_dim+1 > | PermArray | 
| permutation array typedef  More... | |
| typedef Shape_ | ShapeType | 
| the underlying shape type  More... | |
| Public Member Functions | |
| MeshPermutation () | |
| standard constructor  More... | |
| MeshPermutation (const MeshPermutation &)=delete | |
| delete copy constructor | |
| MeshPermutation (MeshPermutation &&other) | |
| move constructor  More... | |
| template<int num_coords_, typename Coord_ > | |
| MeshPermutation (PermutationStrategy strategy, const IndexSetHolder< Shape_ > &ish, const VertexSet< num_coords_, Coord_ > &vtx) | |
| Creates a mesh permutation for a conformal mesh.  More... | |
| virtual | ~MeshPermutation () | 
| virtual destructor  More... | |
| std::size_t | bytes () const | 
| MeshPermutation | clone () const | 
| void | clone (const MeshPermutation &other) | 
| Clones another mesh permutation object into thisobject.  More... | |
| template<int num_coords_, typename Coord_ > | |
| void | create (PermutationStrategy strategy, const IndexSetHolder< Shape_ > &ish, const VertexSet< num_coords_, Coord_ > &vtx) | 
| Creates a mesh permutation for a conformal mesh.  More... | |
| void | create_cmk (const IndexSetHolder< Shape_ > &ish, bool reverse) | 
| Creates a (reversed) algebraic Cuthill-McKee mesh permutation for a conformal mesh.  More... | |
| void | create_colored (const IndexSetHolder< Shape_ > &ish) | 
| Creates a colored mesh permutation for a conformal mesh.  More... | |
| template<int num_coords_, typename Coord_ > | |
| void | create_gcmk (const IndexSetHolder< Shape_ > &ish, const VertexSet< num_coords_, Coord_ > &vtx, bool reverse) | 
| Creates a (reversed) geometric Cuthill-McKee mesh permutation for a conformal mesh.  More... | |
| void | create_inverse_permutations () | 
| (Re)Creates the inverse permutations from the forward ones.  More... | |
| template<int num_coords_, typename Coord_ > | |
| void | create_lexicographic (const IndexSetHolder< Shape_ > &ish, const VertexSet< num_coords_, Coord_ > &vtx) | 
| Creates a lexicographic mesh permutation for a conformal mesh.  More... | |
| PermArray & | create_other () | 
| Initializes a custom permutation.  More... | |
| void | create_random (const IndexSetHolder< Shape_ > &ish) | 
| Creates random mesh permutation for a conformal mesh.  More... | |
| void | create_random (const IndexSetHolder< Shape_ > &ish, Random &rng) | 
| Creates random mesh permutation for a conformal mesh.  More... | |
| bool | empty () const | 
| Checks whether this permutation is empty.  More... | |
| const std::vector< Index > & | get_element_coloring () const | 
| Returns a const reference to the element coloring vector.  More... | |
| const std::vector< Index > & | get_element_layering () const | 
| Returns a const reference to the element layering vector.  More... | |
| const Adjacency::Permutation & | get_inv_perm (int dim=shape_dim) const | 
| Returns a const reference to an inverse permutation.  More... | |
| const PermArray & | get_inv_perms () const | 
| const Adjacency::Permutation & | get_perm (int dim=shape_dim) const | 
| Returns a const reference to a (forward) permutation.  More... | |
| const PermArray & | get_perms () const | 
| PermutationStrategy | get_strategy () const | 
| MeshPermutation & | operator= (const MeshPermutation &)=delete | 
| delete copy-assign operator | |
| MeshPermutation & | operator= (MeshPermutation &&other) | 
| move-assignment operator  More... | |
| int | validate_sizes (const Index *num_entities) const | 
| Validates the permutation sizes.  More... | |
| Static Public Attributes | |
| static constexpr int | shape_dim = ShapeType::dimension | 
| the shape dimension  More... | |
| Static Protected Member Functions | |
| static Index | _pick_gcmk_root (const Adjacency::Graph &v_at_e, const Adjacency::Graph &e_at_v, const std::vector< int > &mask) | 
| Auxiliary helper function: pick an unmasked root element for GCMK.  More... | |
| Protected Attributes | |
| std::vector< Index > | _element_coloring | 
| std::vector< Index > | _element_layering | 
| PermArray | _inv_perms | 
| the inverse permutations  More... | |
| PermArray | _perms | 
| the actual permutations  More... | |
| PermutationStrategy | _strategy | 
| the permutation strategy  More... | |
Mesh permutation class template.
This class is responsible for computing and managing mesh permutations for conformal meshes. An object of this class is stored as a member variable of the ConformalMesh class.
| [in] | Shape_ | The shape type of the mesh that is to be permuted. | 
This class stores both the forward and inverse permutations for the entities of each dimension. The forward permutation P defines the new positions within the old ordering, i.e. x_new[k] = x_old[P[k]], whereas the corresponding inverse permutation Q defined the old positions within the new array, i.e. x_new[Q[k]] = x_old[k], where x_old is the original unpermuted array and x_new is the permuted array.
Details about Element Coloring strategies:
The fundamental property (definition) of a valid element coloring strategy is as follows:
Let E1 != E2 be two elements which share at least one common vertex, and let C(E1) and C(E2) denote the colors of E1 and E2, respectively, then it must hold that C(E1) != C(E2).
In other words: Two different elements of the same color are not adjacent to each other.
If the mesh was permuted by a coloring strategy and the strategy required NC > 0 colors, then (by definition of the coloring strategy) all elements are sorted by their corresponding color, i.e. first come all elements of color 0, then all elements of color 1, etc.
This class stores the offsets of the first element for each color in an element coloring vector, whose total length is equal to NC+1, i.e. we have:
Details about Element Layering strategies:
The fundamental property (definition) of a valid element layering strategy is as follows:
Let E1 != E2 be two elements which share at least one common vertex, and let L(E1) and L(E2) denote the layers of E1 and E2, respectively, then it must hold that |L(E1)- L(E2)| <= 1.
In other words: An element in layer L can only be adjacent to elements in the (same or adjacent) layers L or (L-1) or (L+1).
If the mesh was permuted by one of the layering strategies (e.g. one of the algebraic or geometric Cuthill-McKee permutations) and the strategy produced NL > 0 layers, then (by definition of the layering strategy) all elements are sorted by their corresponding layer, i.e. first come all elements in layer 0, then all elements in layer 1, etc.
This class stores the offsets of the first element for each layer in an element layering vector, whose total length is equal to NL+1, i.e. we have:
Definition at line 360 of file mesh_permutation.hpp.
| typedef std::array<Adjacency::Permutation, shape_dim+1> FEAT::Geometry::MeshPermutation< Shape_ >::PermArray | 
permutation array typedef
Definition at line 370 of file mesh_permutation.hpp.
| typedef Shape_ FEAT::Geometry::MeshPermutation< Shape_ >::ShapeType | 
the underlying shape type
Definition at line 364 of file mesh_permutation.hpp.
| 
 | inline | 
standard constructor
Definition at line 388 of file mesh_permutation.hpp.
| 
 | inlineexplicit | 
Creates a mesh permutation for a conformal mesh.
| [in] | strategy | The mesh permutation strategy to be used. | 
| [in] | ish | A transient reference to the index set holder of the conformal mesh. | 
| [in] | vtx | A transient reference to the vertex set of the conformal mesh. | 
Definition at line 406 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::create().
| 
 | inline | 
move constructor
Definition at line 416 of file mesh_permutation.hpp.
| 
 | inlinevirtual | 
virtual destructor
Definition at line 444 of file mesh_permutation.hpp.
| 
 | inlinestaticprotected | 
Auxiliary helper function: pick an unmasked root element for GCMK.
Definition at line 1027 of file mesh_permutation.hpp.
References FEAT::Adjacency::Graph::image_begin(), and FEAT::Adjacency::Graph::image_end().
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::create_gcmk().
| 
 | inline | 
Definition at line 475 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_element_coloring, FEAT::Geometry::MeshPermutation< Shape_ >::_element_layering, FEAT::Geometry::MeshPermutation< Shape_ >::_inv_perms, FEAT::Geometry::MeshPermutation< Shape_ >::_perms, and FEAT::Geometry::MeshPermutation< Shape_ >::shape_dim.
Referenced by FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::bytes().
| 
 | inline | 
this mesh permutation object. Definition at line 467 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::clone().
| 
 | inline | 
Clones another mesh permutation object into this object. 
| [in] | other | A reference to the source object that is to be cloned into thisobject. | 
Definition at line 454 of file mesh_permutation.hpp.
References FEAT::Geometry::other, and FEAT::Geometry::MeshPermutation< Shape_ >::shape_dim.
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::clone(), and FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::clone().
| 
 | inline | 
Creates a mesh permutation for a conformal mesh.
This function is effectively just a switch-case wrapper for the other create_XXX() member functions.
| [in] | strategy | The mesh permutation strategy to be used. Must not be PermutationStrategy::other. | 
| [in] | ish | A transient reference to the index set holder of the conformal mesh. | 
| [in] | vtx | A transient reference to the vertex set of the conformal mesh. | 
Definition at line 585 of file mesh_permutation.hpp.
References FEAT::Geometry::colored, FEAT::Geometry::MeshPermutation< Shape_ >::create_cmk(), FEAT::Geometry::MeshPermutation< Shape_ >::create_colored(), FEAT::Geometry::MeshPermutation< Shape_ >::create_gcmk(), FEAT::Geometry::MeshPermutation< Shape_ >::create_lexicographic(), FEAT::Geometry::MeshPermutation< Shape_ >::create_random(), FEAT::Geometry::cuthill_mckee, FEAT::Geometry::cuthill_mckee_reversed, FEAT::Geometry::geometric_cuthill_mckee, FEAT::Geometry::geometric_cuthill_mckee_reversed, FEAT::Geometry::lexicographic, FEAT::Geometry::none, FEAT::Geometry::other, FEAT::Geometry::random, and XABORTM.
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::MeshPermutation(), FEAT::Geometry::AdaptiveMeshLayer< AdaptiveMeshType_ >::create_permutation(), and FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::create_permutation().
| 
 | inline | 
Creates a (reversed) algebraic Cuthill-McKee mesh permutation for a conformal mesh.
| [in] | ish | A transient reference to the index set holder of the conformal mesh. | 
| [in] | reverse | Specifies whether the ordering is to be reversed. | 
Definition at line 778 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_inv_perms, FEAT::Geometry::MeshPermutation< Shape_ >::_perms, FEAT::Adjacency::CuthillMcKee::asc, FEAT::Adjacency::CuthillMcKee::compute(), FEAT::Geometry::cuthill_mckee, FEAT::Geometry::cuthill_mckee_reversed, FEAT::Adjacency::injectify, FEAT::Adjacency::CuthillMcKee::minimum_degree, FEAT::Geometry::none, FEAT::Adjacency::transpose, and XASSERTM.
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::create().
| 
 | inline | 
Creates a colored mesh permutation for a conformal mesh.
| [in] | ish | A transient reference to the index set holder of the conformal mesh. | 
Definition at line 730 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_inv_perms, FEAT::Geometry::MeshPermutation< Shape_ >::_perms, FEAT::Geometry::colored, FEAT::Adjacency::Coloring::create_partition_graph(), FEAT::Adjacency::Graph::get_domain_ptr(), FEAT::Adjacency::Graph::get_image_idx(), FEAT::Adjacency::Graph::get_num_indices(), FEAT::Adjacency::injectify, FEAT::Geometry::none, FEAT::Adjacency::Permutation::perm, FEAT::Adjacency::transpose, XASSERT, and XASSERTM.
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::create().
| 
 | inline | 
Creates a (reversed) geometric Cuthill-McKee mesh permutation for a conformal mesh.
| [in] | ish | A transient reference to the index set holder of the conformal mesh. | 
| [in] | vtx | A transient reference to the vertex set of the conformal mesh. | 
| [in] | reverse | Specifies whether the ordering is to be reversed. | 
vtx parameter is not used by this function, but it is still required for upwards compatibility, because it is possible to improve this algorithm by also using the vertex positioning information. Definition at line 819 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_inv_perms, FEAT::Geometry::MeshPermutation< Shape_ >::_perms, FEAT::Geometry::MeshPermutation< Shape_ >::_pick_gcmk_root(), FEAT::Geometry::geometric_cuthill_mckee, FEAT::Geometry::geometric_cuthill_mckee_reversed, FEAT::Adjacency::Graph::image_begin(), FEAT::Adjacency::Graph::image_end(), FEAT::Adjacency::Permutation::perm, FEAT::Geometry::MeshPermutation< Shape_ >::shape_dim, FEAT::Adjacency::transpose, and XASSERT.
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::create().
| 
 | inline | 
(Re)Creates the inverse permutations from the forward ones.
Definition at line 982 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_inv_perms, FEAT::Geometry::MeshPermutation< Shape_ >::_perms, and FEAT::Geometry::MeshPermutation< Shape_ >::shape_dim.
| 
 | inline | 
Creates a lexicographic mesh permutation for a conformal mesh.
| [in] | ish | A transient reference to the index set holder of the conformal mesh. | 
| [in] | vtx | A transient reference to the vertex set of the conformal mesh. | 
Definition at line 700 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_inv_perms, FEAT::Geometry::MeshPermutation< Shape_ >::_perms, FEAT::Geometry::lexicographic, FEAT::Geometry::none, FEAT::Geometry::MeshPermutation< Shape_ >::shape_dim, and XASSERTM.
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::create().
| 
 | inline | 
Initializes a custom permutation.
This functions sets the internal strategy enum to PermutationStrategy::other and returns a non-const reference to the internal forwards permutations array, which can then be filled by the caller with the actual permutation data.
Definition at line 640 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_perms, FEAT::Geometry::none, FEAT::Geometry::other, and XASSERTM.
| 
 | inline | 
Creates random mesh permutation for a conformal mesh.
| [in] | ish | A transient reference to the index set holder of the conformal mesh. | 
Definition at line 656 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::create_random().
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::create(), and FEAT::Geometry::MeshPermutation< Shape_ >::create_random().
| 
 | inline | 
Creates random mesh permutation for a conformal mesh.
| [in] | ish | A transient reference to the index set holder of the conformal mesh. | 
| [in] | rng | A transient reference to the pseudo-random number generator to be used. | 
Definition at line 674 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_inv_perms, FEAT::Geometry::MeshPermutation< Shape_ >::_perms, FEAT::Geometry::none, FEAT::Geometry::random, FEAT::Geometry::MeshPermutation< Shape_ >::shape_dim, and XASSERTM.
| 
 | inline | 
Checks whether this permutation is empty.
A permutation is empty if the permutation strategy is PermutationStrategy::none.
true, if this permutation is empty, otherwise false. Definition at line 490 of file mesh_permutation.hpp.
References FEAT::Geometry::none.
Referenced by FEAT::Geometry::AdaptiveMeshLayer< AdaptiveMeshType_ >::create_permutation(), FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::create_permutation(), FEAT::Geometry::AdaptiveMeshLayer< AdaptiveMeshType_ >::is_permuted(), FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::is_permuted(), FEAT::Geometry::AdaptiveMeshLayer< AdaptiveMeshType_ >::set_permutation(), and FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::set_permutation().
| 
 | inline | 
Returns a const reference to the element coloring vector.
The returned vector may be empty, which indicates that the permutation is not a colored permutation and therefore no element coloring exists.
Definition at line 551 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_element_coloring.
Referenced by FEAT::Geometry::AdaptiveMeshLayer< AdaptiveMeshType_ >::validate_element_coloring(), and FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::validate_element_coloring().
| 
 | inline | 
Returns a const reference to the element layering vector.
The returned vector may be empty, which indicates that the permutation is not a layered permutation and therefore no element layering exists.
Definition at line 564 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_element_layering.
Referenced by FEAT::Geometry::AdaptiveMeshLayer< AdaptiveMeshType_ >::validate_element_layering(), and FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::validate_element_layering().
| 
 | inline | 
Returns a const reference to an inverse permutation.
| [in] | dim | The dimension of the entities whose permutation is to be returned. Must be 0 <= dim<= shape_dim. | 
dim. Definition at line 537 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::shape_dim, and XASSERT.
| 
 | inline | 
Definition at line 508 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_inv_perms.
Referenced by FEAT::Geometry::MeshPart< MeshType_ >::permute().
| 
 | inline | 
Returns a const reference to a (forward) permutation.
| [in] | dim | The dimension of the entities whose permutation is to be returned. Must be 0 <= dim<= shape_dim. | 
dim. Definition at line 522 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::shape_dim, and XASSERT.
Referenced by FEAT::Geometry::AdaptiveMeshLayer< AdaptiveMeshType_ >::create_permutation(), FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::create_permutation(), FEAT::Geometry::AdaptiveMeshLayer< AdaptiveMeshType_ >::set_permutation(), and FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::set_permutation().
| 
 | inline | 
Definition at line 502 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_perms.
Referenced by FEAT::Geometry::AdaptiveMeshLayer< AdaptiveMeshType_ >::create_permutation(), FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::create_permutation(), FEAT::Geometry::AdaptiveMeshLayer< AdaptiveMeshType_ >::set_permutation(), and FEAT::Geometry::ConformalMesh< Shape_, num_coords_, Coord_ >::set_permutation().
| 
 | inline | 
Definition at line 496 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_strategy.
| 
 | inline | 
move-assignment operator
Definition at line 426 of file mesh_permutation.hpp.
References FEAT::Geometry::MeshPermutation< Shape_ >::_element_coloring, FEAT::Geometry::MeshPermutation< Shape_ >::_element_layering, FEAT::Geometry::MeshPermutation< Shape_ >::_inv_perms, FEAT::Geometry::MeshPermutation< Shape_ >::_perms, FEAT::Geometry::MeshPermutation< Shape_ >::_strategy, and FEAT::Geometry::other.
| 
 | inline | 
Validates the permutation sizes.
| [in] | num_entities | An transient array of size shape_dim+1 that contains the number of entities for each dimension. | 
Definition at line 1003 of file mesh_permutation.hpp.
References FEAT::Adjacency::Permutation::empty(), FEAT::Geometry::MeshPermutation< Shape_ >::shape_dim, FEAT::Adjacency::Permutation::size(), and XASSERT.
| 
 | protected | 
the element color array in case of colored strategy see the documentation of this class for details
Definition at line 381 of file mesh_permutation.hpp.
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::bytes(), FEAT::Geometry::MeshPermutation< Shape_ >::get_element_coloring(), and FEAT::Geometry::MeshPermutation< Shape_ >::operator=().
| 
 | protected | 
the layer array in case of algebraic/geometric Cuthill-McKee strategy see the documentation of this class for details
Definition at line 384 of file mesh_permutation.hpp.
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::bytes(), FEAT::Geometry::MeshPermutation< Shape_ >::get_element_layering(), and FEAT::Geometry::MeshPermutation< Shape_ >::operator=().
| 
 | protected | 
the inverse permutations
Definition at line 378 of file mesh_permutation.hpp.
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::bytes(), FEAT::Geometry::MeshPermutation< Shape_ >::create_cmk(), FEAT::Geometry::MeshPermutation< Shape_ >::create_colored(), FEAT::Geometry::MeshPermutation< Shape_ >::create_gcmk(), FEAT::Geometry::MeshPermutation< Shape_ >::create_inverse_permutations(), FEAT::Geometry::MeshPermutation< Shape_ >::create_lexicographic(), FEAT::Geometry::MeshPermutation< Shape_ >::create_random(), FEAT::Geometry::MeshPermutation< Shape_ >::get_inv_perms(), and FEAT::Geometry::MeshPermutation< Shape_ >::operator=().
| 
 | protected | 
the actual permutations
Definition at line 376 of file mesh_permutation.hpp.
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::bytes(), FEAT::Geometry::MeshPermutation< Shape_ >::create_cmk(), FEAT::Geometry::MeshPermutation< Shape_ >::create_colored(), FEAT::Geometry::MeshPermutation< Shape_ >::create_gcmk(), FEAT::Geometry::MeshPermutation< Shape_ >::create_inverse_permutations(), FEAT::Geometry::MeshPermutation< Shape_ >::create_lexicographic(), FEAT::Geometry::MeshPermutation< Shape_ >::create_other(), FEAT::Geometry::MeshPermutation< Shape_ >::create_random(), FEAT::Geometry::MeshPermutation< Shape_ >::get_perms(), and FEAT::Geometry::MeshPermutation< Shape_ >::operator=().
| 
 | protected | 
the permutation strategy
Definition at line 374 of file mesh_permutation.hpp.
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::get_strategy(), and FEAT::Geometry::MeshPermutation< Shape_ >::operator=().
| 
 | staticconstexpr | 
the shape dimension
Definition at line 367 of file mesh_permutation.hpp.
Referenced by FEAT::Geometry::MeshPermutation< Shape_ >::bytes(), FEAT::Geometry::MeshPermutation< Shape_ >::clone(), FEAT::Geometry::MeshPermutation< Shape_ >::create_gcmk(), FEAT::Geometry::MeshPermutation< Shape_ >::create_inverse_permutations(), FEAT::Geometry::MeshPermutation< Shape_ >::create_lexicographic(), FEAT::Geometry::MeshPermutation< Shape_ >::create_random(), FEAT::Geometry::MeshPermutation< Shape_ >::get_inv_perm(), FEAT::Geometry::MeshPermutation< Shape_ >::get_perm(), and FEAT::Geometry::MeshPermutation< Shape_ >::validate_sizes().