MoReFEM
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Static Private Member Functions | Private Attributes | Friends
MoReFEM::NumberingSubset Class Reference

Descriptor of a dof numbering. More...

#include <NumberingSubset.hpp>

Inheritance diagram for MoReFEM::NumberingSubset:
Collaboration diagram for MoReFEM::NumberingSubset:

Public Types

using const_shared_ptr = std::shared_ptr<const NumberingSubset>
 Alias for shared pointer to a constant object.
 
using vector_const_shared_ptr = std::vector<const_shared_ptr>
 Alias for a vector of const_shared_ptr.
 
using unique_id_parent
 Alias for the parent.
 
using underlying_type
 Type used for the unique id.
 

Public Member Functions

bool DoMoveMesh () const noexcept
 Whether a vector defined on this numbering subset might be used to compute a movemesh.
 
NumberingSubsetNS::unique_id GetUniqueId () const
 Get the value of the internal unique ID.
 

Static Public Member Functions

static const std::string & ClassName ()
 Name of the class.
 
static NumberingSubsetNS::unique_id GenerateNewEligibleId ()
 Generate a unique id.
 
static void ClearUniqueIdList ()
 Clear all unique ids.
 

Static Private Member Functions

static NumberingSubsetNS::unique_id AssignUniqueId ()
 If AssignationMode is automatic, generates a new unique identifier.
 
static NumberingSubsetNS::unique_id NewUniqueId (NumberingSubsetNS::unique_id new_unique_id)
 If AssignationMode is manual, checks the unique identifier provided is valid.
 
static std::set< NumberingSubsetNS::unique_id > & StaticUniqueIdList ()
 List of all identifiers existing for DerivedT.
 

Private Attributes

const bool do_move_mesh_
 Whether a vector defined on this numbering subset might be used to compute a movemesh.
 
const NumberingSubsetNS::unique_id unique_id_
 The value of the unique id for the current DerivedT object.
 

Friends

class Internal::NumberingSubsetNS::NumberingSubsetManager
 Friendship!
 

Special members.

Create function.

 NumberingSubset (NumberingSubsetNS::unique_id id, bool do_move_mesh)
 Constructor.
 
 ~NumberingSubset ()=default
 Destructor.
 
 NumberingSubset (const NumberingSubset &rhs)=delete
 The copy constructor.
 
 NumberingSubset (NumberingSubset &&rhs)=delete
 The move constructor.
 
NumberingSubsetoperator= (const NumberingSubset &rhs)=delete
 The (copy) operator=.
 
NumberingSubsetoperator= (NumberingSubset &&rhs)=delete
 The (move) operator=.
 

Detailed Description

Descriptor of a dof numbering.

NumberingSubsets are most prominently used in global linear algebra description: numbering used for rows and columns in a GlobalMatrix are for instance tagged by a NumberingSubset.

Todo
#9 Explain more precisely numbering subset here!

Member Typedef Documentation

◆ unique_id_parent

Initial value:
Crtp::UniqueId<NumberingSubset, NumberingSubsetNS::unique_id, UniqueIdNS::AssignationMode::manual>

Alias for the parent.

Constructor & Destructor Documentation

◆ NumberingSubset() [1/3]

MoReFEM::NumberingSubset::NumberingSubset ( NumberingSubsetNS::unique_id id,
bool do_move_mesh )
explicitprivate

Constructor.

Parameters
[in]idUnique identifier of the numbering subset.
[in]do_move_meshWhether a vector defined on this numbering subset might be used to compute a movemesh. If true, a FEltSpace featuring this numbering subset will compute additional quantities to enable fast computation. This should be false for most numbering subsets, and when it's true the sole unknown involved should be a displacement.

◆ NumberingSubset() [2/3]

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

The copy constructor.

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

◆ NumberingSubset() [3/3]

MoReFEM::NumberingSubset::NumberingSubset ( NumberingSubset && rhs)
delete

The move constructor.

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

Member Function Documentation

◆ operator=() [1/2]

NumberingSubset & MoReFEM::NumberingSubset::operator= ( const NumberingSubset & 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]

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

The (move) operator=.

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

◆ GetUniqueId()

NumberingSubsetNS::unique_id MoReFEM::Crtp::UniqueId< NumberingSubset , NumberingSubsetNS::unique_id , AssignationModeT, UniqueIdNS::DoAllowNoId::no >::GetUniqueId ( ) const
inherited

Get the value of the internal unique ID.

Returns
Unique id.

◆ GenerateNewEligibleId()

static NumberingSubsetNS::unique_id MoReFEM::Crtp::UniqueId< NumberingSubset , NumberingSubsetNS::unique_id , AssignationModeT, UniqueIdNS::DoAllowNoId::no >::GenerateNewEligibleId ( )
staticinherited

Generate a unique id.

No new objects is created, and the new identifier is not counted in the list - the purpose here is just to provide a value that don't collide with existing objects. This is really used in a very edge case; think twice before using this functionality as it really might not be what you really seek.

Returns
A unique id that is not in use yet.

◆ ClearUniqueIdList()

static void MoReFEM::Crtp::UniqueId< NumberingSubset , NumberingSubsetNS::unique_id , AssignationModeT, UniqueIdNS::DoAllowNoId::no >::ClearUniqueIdList ( )
staticinherited

Clear all unique ids.

Attention
This functionality has been put there only for the sake of writing tests; please do not use it! It should be considered as private, even if unfortunately I can't easily put it that way.

◆ AssignUniqueId()

static NumberingSubsetNS::unique_id MoReFEM::Crtp::UniqueId< NumberingSubset , NumberingSubsetNS::unique_id , AssignationModeT, UniqueIdNS::DoAllowNoId::no >::AssignUniqueId ( )
staticprivateinherited

If AssignationMode is automatic, generates a new unique identifier.

Returns
The new unique id, which is just an increment from the previously assigned one.

◆ NewUniqueId()

static NumberingSubsetNS::unique_id MoReFEM::Crtp::UniqueId< NumberingSubset , NumberingSubsetNS::unique_id , AssignationModeT, UniqueIdNS::DoAllowNoId::no >::NewUniqueId ( NumberingSubsetNS::unique_id new_unique_id)
staticprivateinherited

If AssignationMode is manual, checks the unique identifier provided is valid.

Parameters
[in]new_unique_idThe proposed new unique id. If it already exists an exception will be thrown.
Returns
The unmodified unique id.

Field Documentation

◆ do_move_mesh_

const bool MoReFEM::NumberingSubset::do_move_mesh_
private

Whether a vector defined on this numbering subset might be used to compute a movemesh.

If true, a FEltSpace featuring this numbering subset will compute additional quantities to enable fast computation. This should be false for most numbering subsets, and when it's true the sole unknown involved should be a displacement.


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