MoReFEM
|
Class in charge of the edge interface. More...
#include <Edge.hpp>
Public Types | |
using | shared_ptr = std::shared_ptr<Edge> |
Alias over shared_ptr. | |
using | vector_shared_ptr = std::vector<shared_ptr> |
Alias over vector of shared_ptr. | |
using | InterfaceMap |
Typedef useful when the vertices are built. | |
Public Member Functions | |
void | Print (std::ostream &stream) const |
Print the underlying coords list. | |
virtual::MoReFEM::InterfaceNS::Nature | GetNature () const noexcept override final |
Nature of the Interface. | |
template<allow_reset_index AllowResetIndexT = allow_reset_index::no> | |
void | SetProgramWiseIndex (InterfaceNS::program_wise_index_type id) noexcept |
Set the identifier associated to this interface. | |
InterfaceNS::program_wise_index_type | GetProgramWiseIndex () const noexcept |
Get the identifier associated to this interface. | |
virtual const Coords::vector_shared_ptr & | GetCoordsList () const noexcept |
template<CoordsNS::index_enum TypeT> | |
std::vector< CoordsNS::index_type< TypeT > > | ComputeCoordsIndexList () const |
Compute the list of Coords indexes that belongs to the interface. | |
const LocalVector & | GetPseudoNormal () const noexcept |
Constant accessor on the pseudo-normal. | |
const std::unique_ptr< LocalVector > & | GetPseudoNormalPtr () const noexcept |
Constant accessor on the pointer of the pseudo-normal. | |
Special members. | |
template<class LocalEdgeContentT > | |
Edge (const LocalEdgeContentT &local_edge_content, const Coords::vector_shared_ptr &coords_list_in_geom_elt) | |
Constructor. | |
~Edge () override | |
Destructor. | |
Edge (const Edge &rhs)=delete | |
The copy constructor. | |
Edge (Edge &&rhs)=delete | |
The move constructor. | |
Edge & | operator= (const Edge &rhs)=delete |
The (copy) operator=. | |
Edge & | operator= (Edge &&rhs)=delete |
The (move) operator=. | |
Static Public Member Functions | |
static const std::string & | ClassName () |
Name of the class. | |
static std::size_t | NumberOfEdgesPseudoNormalComputed () |
Number of pseudo normals for edges computed. | |
static constexpr enum::MoReFEM::InterfaceNS::Nature | StaticNature () |
Nature of the Interface as a static method. | |
Data Fields | |
friend | Mesh |
Friendship. | |
Protected Member Functions | |
LocalVector & | GetNonCstPseudoNormal () noexcept |
Non constant accessor on the pseudo-normal. | |
Protected Attributes | |
std::unique_ptr< LocalVector > | pseudo_normal_ = nullptr |
Pseudo-normal of the interface. | |
Private Member Functions | |
void | ComputePseudoNormal (const std::vector< const GeometricElt * > &geom_elt_list) |
Compute the pseudo-normal of an edge. | |
void | SetCoordsList (const Coords::vector_shared_ptr &coords_list) |
Set coords_list_ and sort it so that the same interface used by another geometric element could match it. | |
Coords::vector_shared_ptr & | GetNonCstCoordsList () noexcept |
Non constant accessor to the underlying list of Coords. | |
Private Attributes | |
Coords::vector_shared_ptr | coords_list_ |
Coords that belongs to the edge_or_face. | |
InterfaceNS::program_wise_index_type | program_wise_index_ |
Facility which handles the indexes related to the Interface. | |
Static Private Attributes | |
static std::size_t | counter_pseudo_normal_edge_ |
Counter for pseudo-normal edges computation. | |
Class in charge of the edge interface.
Typedef useful when the vertices are built.
When a new Vertex is built, index is not yet associated to it; one must determine first whether it has already been built by another GeometricElt. The type below is used to list all those already built.
|
explicit |
Constructor.
LocalEdgeContentT | Type of the container or structure that represents the interface in the local topology. It is given by TopologyT::EdgeContent; where TopologyT is the topology of the GeometricElt for which the Interface is built. |
[in] | local_edge_content | Integer values that represent the interface within the local topology. Is is one of the element of TopologyT::GetEdgeList() (see above for the meaning of TopologyT). |
[in] | coords_list_in_geom_elt | List of Coords objects within the GeometricElt for which the interface is built. |
|
delete |
The copy constructor.
[in] | rhs | The object from which the construction occurs. |
|
delete |
The move constructor.
[in] | rhs | The object from which the construction occurs. |
The (copy) operator=.
[in] | rhs | The object from which the affectation occurs. |
The (move) operator=.
[in] | rhs | The object from which the affectation occurs. |
|
private |
Compute the pseudo-normal of an edge.
[in] | geom_elt_list | List of the geometric elements that share this edge. |
|
inherited |
Print the underlying coords list.
[in,out] | stream | Stream upon which object information are written. |
|
finaloverridevirtualnoexceptinherited |
Nature of the Interface.
Implements MoReFEM::Interface.
|
noexceptinherited |
Set the identifier associated to this interface.
[in] | id | Identifier to be associated to the interface. Identifier is unique for all interfaces of the same nature: there should be for instance only one edge with id = 124. |
|
virtualnoexceptinherited |
Get the list of Coords that belongs to the interface.
This methods is overridden only for Volume, as we do not store directly the Coords in this very specific case to avoid redundancy with the GeometricElt which already got them.
Reimplemented in MoReFEM::Volume.
|
inherited |
|
privateinherited |
Set coords_list_ and sort it so that the same interface used by another geometric element could match it.
The convention is to put first the Coords with the lower index, and then choose the rotation that put the lowest possible index in second. The index used to do so is the one used to define operator< for Coords class (i.e. the processor-wise one).
For instance let's consider quadrangle 3 5 1 10.
The lower is 1, and there are still two possibilities by rotating it:
This method is used only for faces and edges: it is obviously unrequired for vertices, and no Coords is stored for Volumes.
[in] | coords_list | List of Coords, not yet sort. |
[internal]
It is intended to be called only in Edge and Face constructor.
|
privatenoexceptinherited |
|
privateinherited |
Coords that belongs to the edge_or_face.
The convention is that the first Coords is the one with the lowest index. The relative ordering is local_coords.
For instance, if (89, 42, 15) is read in Init(), (15, 89, 42) will be stored.
[internal]
This information is really important when the interfaces are built: it is the way we can figure out if a given interface already exist or not.
|
privateinherited |
Facility which handles the indexes related to the Interface.