hexed 0.4.0
 
Loading...
Searching...
No Matches
hexed::next::Element_shape Class Reference

Represents the shape of a complete mesh element. More...

#include <Block.hpp>

Inheritance diagram for hexed::next::Element_shape:
hexed::next::Block hexed::Mortal hexed::mutual::Multiple< void, void > hexed::mutual::Base< void, void >

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
 
Vertexvertex (int i_vert)
 Accesses the i_vertth vertex (in standard row-major order)
 
const Vertexvertex (int i_vert) const
 
const Basisbasis () 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_faceboundary_face_3d ()
 
const Surface_faceboundary_face_3d () const
 
Boundary_blockboundary_block ()
 
const Boundary_blockboundary_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
 
Multipleoperator= (const Multiple &)=delete
 
Multipleoperator= (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
 

Detailed Description

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).

Member Function Documentation

◆ connect() [1/2]

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.

◆ connect() [2/2]

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.


The documentation for this class was generated from the following files: