MoReFEM
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes
MoReFEM::Vertex Class Referencefinal

Class in charge of the Vertex interface. More...

#include <Vertex.hpp>

Inheritance diagram for MoReFEM::Vertex:
Collaboration diagram for MoReFEM::Vertex:

Public Types

using shared_ptr = std::shared_ptr<Vertex>
 Alias over shared_ptr.
 
using vector_shared_ptr = std::vector<shared_ptr>
 Alias over vector of shared_ptr.
 
using InterfaceMap
 Alias 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_ptrGetCoordsList () 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 LocalVectorGetPseudoNormal () 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.
 Vertex (const Coords::shared_ptr &coords)
 Constructor.
 
 ~Vertex () override
 Destructor.
 
 Vertex (const Vertex &rhs)=delete
 The copy constructor.
 
 Vertex (Vertex &&rhs)=delete
 The move constructor.
 
Vertexoperator= (const Vertex &rhs)=delete
 The (copy) operator=.
 
Vertexoperator= (Vertex &&rhs)=delete
 The (move) operator=.
 

Static Public Member Functions

static const std::string & ClassName ()
 Name of the class.
 
static constexpr enum::MoReFEM::InterfaceNS::Nature StaticNature ()
 Nature of the Interface as a static method.
 

Data Fields

friend Mesh
 Friendship.
 

Protected Member Functions

LocalVectorGetNonCstPseudoNormal () noexcept
 Non constant accessor on the pseudo-normal.
 

Protected Attributes

std::unique_ptr< LocalVectorpseudo_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 a vertex.
 
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_ptrGetNonCstCoordsList () 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 Nvertice_
 Number of vertices.
 

Detailed Description

Class in charge of the Vertex interface.

Member Typedef Documentation

◆ InterfaceMap

Initial value:
Utilities::PointerComparison::
Map<Vertex::shared_ptr, std::vector<const GeometricElt*>, InterfaceNS::LessByCoords>

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

Constructor & Destructor Documentation

◆ Vertex() [1/3]

MoReFEM::Vertex::Vertex ( const Coords::shared_ptr & coords)
explicit

Constructor.

Parameters
[in]coordsCoords object associated to the Vertex interface.

◆ Vertex() [2/3]

MoReFEM::Vertex::Vertex ( const Vertex & rhs)
delete

The copy constructor.

Parameters
[in]rhsThe object from which the construction occurs.

◆ Vertex() [3/3]

MoReFEM::Vertex::Vertex ( Vertex && rhs)
delete

The move constructor.

Parameters
[in]rhsThe object from which the construction occurs.

Member Function Documentation

◆ operator=() [1/2]

Vertex & MoReFEM::Vertex::operator= ( const Vertex & rhs)
delete

The (copy) operator=.

Parameters
[in]rhsThe object from which the affectation occurs.
Returns
Reference to the object (to enable chained affectation).

◆ operator=() [2/2]

Vertex & MoReFEM::Vertex::operator= ( Vertex && rhs)
delete

The (move) operator=.

Parameters
[in]rhsThe object from which the affectation occurs.
Returns
Reference to the object (to enable chained affectation).

◆ ComputePseudoNormal()

void MoReFEM::Vertex::ComputePseudoNormal ( const std::vector< const GeometricElt * > & geom_elt_list)
private

Compute the pseudo-normal of a vertex.

Parameters
[in]geom_elt_listList of the geometric elements that share this vertex.
Warning
Should not be called directly. To compute pseudo-normals use PseudoNormals1 in Lua that will use the dedicated magager to compute them.

◆ Print()

void MoReFEM::Internal::InterfaceNS::TInterface< Vertex , NatureT >::Print ( std::ostream & stream) const
inherited

Print the underlying coords list.

Parameters
[in,out]streamStream upon which object information are written.

◆ GetNature()

virtual::MoReFEM::InterfaceNS::Nature MoReFEM::Internal::InterfaceNS::TInterface< Vertex , NatureT >::GetNature ( ) const
finaloverridevirtualnoexceptinherited

Nature of the Interface.

Implements MoReFEM::Interface.

◆ SetProgramWiseIndex()

template<allow_reset_index AllowResetIndexT = allow_reset_index::no>
void MoReFEM::Interface::SetProgramWiseIndex ( InterfaceNS::program_wise_index_type id)
noexceptinherited

Set the identifier associated to this interface.

Parameters
[in]idIdentifier 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.

◆ GetCoordsList()

virtual const Coords::vector_shared_ptr & MoReFEM::Interface::GetCoordsList ( ) const
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.

◆ ComputeCoordsIndexList()

template<CoordsNS::index_enum TypeT>
std::vector< CoordsNS::index_type< TypeT > > MoReFEM::Interface::ComputeCoordsIndexList ( ) const
inherited

Compute the list of Coords indexes that belongs to the interface.

Template Parameters
TypeTThe type of Coords index requested.
Returns
List of Coords indexes that belongs to the interface.

This method should not be used that much; that is the reason a return by copy has been adopted here.

◆ SetCoordsList()

void MoReFEM::Interface::SetCoordsList ( const Coords::vector_shared_ptr & coords_list)
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:

  • 1 10 3 5
  • 1 5 3 10 The latter is chosen because 5 is lower than 10.

This method is used only for faces and edges: it is obviously unrequired for vertices, and no Coords is stored for Volumes.

Parameters
[in]coords_listList of Coords, not yet sort.

[internal] It is intended to be called only in Edge and Face constructor.

◆ GetNonCstCoordsList()

Coords::vector_shared_ptr & MoReFEM::Interface::GetNonCstCoordsList ( )
privatenoexceptinherited

Non constant accessor to the underlying list of Coords.

Returns
Non constant access to the underlying list of Coords.

Field Documentation

◆ Nvertice_

std::size_t MoReFEM::Vertex::Nvertice_
staticprivate

Number of vertices.

[internal] This is a purely internal attribute used in vertices creation; should not be used outside of Vertex.cpp!

◆ coords_list_

Coords::vector_shared_ptr MoReFEM::Interface::coords_list_
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.

◆ program_wise_index_

InterfaceNS::program_wise_index_type MoReFEM::Interface::program_wise_index_
privateinherited
Initial value:
=
NumericNS::UninitializedIndex<InterfaceNS::program_wise_index_type>()

Facility which handles the indexes related to the Interface.


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