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

A 2-dimensional Block bounded by 4 Edges. More...

#include <Block.hpp>

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

Public Member Functions

 Surface_face (std::array< Vertex *, 4 >, const Basis &)
 Constructs a Surface_face that referes to existing vertices.
 
Edgeedge (int i)
 Access the ith edge.
 
const Edgeedge (int i) const
 
std::vector< Element_shape * > dependent_elements () override
 Obtains all the Element_shapes whose point() depends on this
 
std::vector< int > element_coords (std::vector< int >) const override
 Transforms node coordinates from the space of the Block to its Element_shape
 
std::vector< Vertex * > vertices () override
 
void reset () override
 sets interior() to minimize the Laplacian.
 
void set_points (Array< double > points) override
 Sets the interior, edge, and vertex points to points.
 
- Public Member Functions inherited from hexed::next::Boundary_block
 Boundary_block (int n_dim, const Basis &basis)
 
const Basisbasis () const
 
bool alive () const
 true iff this currently has an Element_shape referencing it.
 
void pair (mutual::Base< Element_shape, Boundary_block > &elem)
 sets elem to point to this
 
Element_shapeelement ()
 Get the element this is pair()d with (nullptr if not paired).
 
const Element_shapeelement () const
 
Array< double > interior ()
 A modifiable view of the interior points.
 
- 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.
 

Additional Inherited Members

- 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 inherited from hexed::next::Boundary_block
bool snapping_problem
 
- 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::next::Boundary_block
Array< double > _interior
 storage for the interior points
 
- Protected Attributes inherited from hexed::mutual::Base< void, void >
Lock _lock
 

Detailed Description

A 2-dimensional Block bounded by 4 Edges.

This class is only used to represent boundary faces, since interior faces are not free (their position is always determined by linear interpolation between the vertices). Only 3D meshes have Surface_faces. point({i, j}) will behave as follows:

  • if i and j \(\in\) {0, row_size() - 1}, returns the position of one of the vertices.
  • if i or j \(\in\) {0, row_size() - 1}, returns the position of one the edges.
  • otherwise returns a point in the interior().

Constructor & Destructor Documentation

◆ Surface_face()

hexed::next::Surface_face::Surface_face ( std::array< Vertex *, 4 > verts,
const Basis & b )

Constructs a Surface_face that referes to existing vertices.

Vertices are ordered in the standard row-major order. this will construct and own its edges (which can be accessed with Surface_face::edge).

Member Function Documentation

◆ dependent_elements()

std::vector< Element_shape * > hexed::next::Surface_face::dependent_elements ( )
overridevirtual

Obtains all the Element_shapes whose point() depends on this

Implements hexed::next::Boundary_block.

◆ edge()

Edge & hexed::next::Surface_face::edge ( int i)
inline

Access the ith edge.

The order of the edges is \( \{\xi_0 = 0\}, \{\xi_0 = 1\}, \{\xi_1 = 0\}, \{\xi_1 = 1\} \).

◆ element_coords()

std::vector< int > hexed::next::Surface_face::element_coords ( std::vector< int > coords) const
overridevirtual

Transforms node coordinates from the space of the Block to its Element_shape

That is, element()->point(elemement_coords(coords)) should give the same result as point(coords).

Implements hexed::next::Boundary_block.

◆ reset()

void hexed::next::Surface_face::reset ( )
overridevirtual

sets interior() to minimize the Laplacian.

Specifically, the Laplacian of each physical coordinate as a function of the reference coordinates is minimized in the \( L^2 \) norm.

Implements hexed::next::Boundary_block.

◆ set_points()

void hexed::next::Surface_face::set_points ( Array< double > points)
overridevirtual

Sets the interior, edge, and vertex points to points.

The interior(), as well as any connected Edges and Vertexs will be modified. After calling set_points(p), points() and p should be equal. The points provided as the argument must have the same shape as points().

Implements hexed::next::Boundary_block.

◆ vertices()

std::vector< Vertex * > hexed::next::Surface_face::vertices ( )
overridevirtual

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