Represents the shape of a complete mesh element. More...
#include <Block.hpp>
Public Member Functions | |
| double | nominal_size () const |
| Obtains the edge length of this element before any vertex adjustment. | |
| Mat< 3 > | nominal_shape () const |
| Mat< 3 > | nominal_position (int i_vert=0) const |
What the position of vertex i_vert would be supposed to be if this were a Cartesian element. | |
| Mat< 3 > | nominal_center () const |
| Mat< 3 > | vertex_center () const |
| average of the vertices' positions | |
| Vertex & | vertex (int i_vert) |
Accesses the i_vertth vertex (in standard row-major order) | |
| const Vertex & | vertex (int i_vert) const |
| const Basis & | basis () const |
| bool | glued () const |
| Mat< 3 > | interpolate (std::vector< double > coords, Int recursion_depth=0) const |
| void | connect (Element_shape &that, Connection_direction) |
Stipulates that 1 face of this is conformally connected to 1 face of that. | |
| void | connect (std::vector< Element_shape * > those, Connection_direction) |
Stipulates a hanging node connection between 1 face of this and 1 face each of those. | |
| void | glue (Element_shape &that, std::array< std::vector< double >, 2 > corners) |
| void | unglue () |
| void | destroy_boundary_face () |
| std::array< std::vector< double >, 2 > | glued_corners () const |
| void | set_glued_corners (std::array< std::vector< double >, 2 > corners) |
| Surface_face * | boundary_face_3d () |
| const Surface_face * | boundary_face_3d () const |
| Boundary_block * | boundary_block () |
| const Boundary_block * | boundary_block () const |
| int | boundary_face () const |
| bool | glued_to_face (int i_face) const |
| Sequence< Vertex & > | glued_verts () |
| bool | acceptable_quality (bool only_determinant=false) const |
Public Member Functions inherited from hexed::next::Block | |
| Block (int n_dim, int row_size) | |
| int | n_dim () const |
| number of topological dimensions. | |
| int | row_size () const |
| number nodes along each dimension | |
| Mat< 3 > | point (const std::vector< int > &node_coords, Int recursion_depth=0) const |
Obtains the node with array indices specified by node_coords. | |
| Mat< 3 > | point (int i_point, Int recursion_depth=0) const |
Obtains the node with flat index i_point | |
| virtual Array< double > | points () const |
| Obtains all the nodes as a multidimensional array. | |
| void | visualize (std::string format, std::string file_name, double time=0.) const |
Visualizes the nodes of a single Block. | |
Public Member Functions inherited from hexed::mutual::Multiple< void, void > | |
| Multiple (const Multiple &)=delete | |
| Multiple (Multiple &&that) | |
steals all of that's partners, leaving that unconnected | |
| Multiple & | operator= (const Multiple &)=delete |
| Multiple & | operator= (Multiple &&that) |
steals all of that's partners, leaving that unconnected | |
| next::Sequence< Base< void, void > & > | partners () |
| provides access to the list of partners | |
| next::Sequence< const Base< void, void > & > | partners () const |
| provides access to the list of partners | |
Public Member Functions inherited from hexed::mutual::Base< void, void > | |
| virtual void * | _mine () |
| virtual const void * | _mine () const |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
Static Public Member Functions | |
| static void | connect (std::array< std::vector< Element_shape * >, 2 >, Connection_direction) |
Static Public Member Functions inherited from hexed::next::Block | |
| static void | visualize (std::string format, std::string file_name, next::Sequence< const Block & >, double time=0.) |
Visualizes the nodes of a set of Blocks. | |
Public Attributes | |
| bool | deformed |
| bool | for_matching |
| int | extruded_direction |
| bool | is_new |
| int | record |
| double | uncertainty |
| Lock | lock |
| Int | index |
Friends | |
| class | Mesh_blocks |
| void | Vertex::glue (Element_shape &, std::vector< double >) |
Additional Inherited Members | |
Static Public Attributes inherited from hexed::next::Block | |
| static constexpr Int | max_recursion_depth = 100 |
Protected Member Functions inherited from hexed::mutual::Base< void, void > | |
| void | _connect (Base< void, void > &that) |
may be overridden by derived classes to provide partners to data of some arbitrary type T | |
| void | _disconnect (Base< void, void > &that) |
mutually disconnects this and that by calling both of their _unset() member functions | |
Static Protected Member Functions inherited from hexed::mutual::Base< void, void > | |
| static void * | _yours (Base< void, void > &that) |
Accesses the _mine() of that | |
| static const void * | _yours (const Base< void, void > &that) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
Protected Attributes inherited from hexed::mutual::Base< void, void > | |
| Lock | _lock |
Represents the shape of a complete mesh element.
I say the "shape of an element" because this class represents only the position and not the flow variables. This same class is used to represent the element regardless of the dimensionality. Thus n_dim() is both the topological dimensionality of this Block and the physical dimensionality of the mesh. Element_shapes cannot be constructed directly from scratch. (They can, however, be constructed with move semantics). To construct an Element_shape, use Mesh_blocks::create_element. Depending on whether the element is on the boundary, Block::point will return either order-1 interpolation between the vertices, or order-1 interpolation between the boundary side (which is a Boundary_block) and the opposite side (which itself obtains its position by order-1 interpolation between the vertices).
| void hexed::next::Element_shape::connect | ( | Element_shape & | that, |
| Connection_direction | dir ) |
Stipulates that 1 face of this is conformally connected to 1 face of that.
Which faces are involved is determined by the Connection_direction. Vertices are eaten and edges are glued as necessary to enforce continuity.
| void hexed::next::Element_shape::connect | ( | std::vector< Element_shape * > | those, |
| Connection_direction | dir ) |
Stipulates a hanging node connection between 1 face of this and 1 face each of those.
Which faces are involved is determined by the Connection_direction (it must be the same face for each of those). Vertices are eaten/glued and edges are glued as necessary to enforce continuity. those should be in their standard tree order. Any permutation that might be necessary to reconcile different face dimensions will be performed automatically.