MoReFEM
|
Object in charge of all the dofs related to a given Mesh. More...
#include <GodOfDof.hpp>
Public Types | |
using | shared_ptr = std::shared_ptr<GodOfDof> |
using | const_shared_ptr = std::shared_ptr<const GodOfDof> |
using | unique_id_parent = Crtp::UniqueId<GodOfDof, MeshNS::unique_id, UniqueIdNS::AssignationMode::manual> |
Convenient alias to one of the parent. | |
using | underlying_type |
Type used for the unique id. | |
Public Member Functions | |
const Mesh & | GetMesh () const noexcept |
Get the mesh object. | |
const FEltSpace & | GetFEltSpace (FEltSpaceNS::unique_id unique_id) const |
Get access to the unique_id -th finite element space. | |
bool | IsFEltSpace (FEltSpaceNS::unique_id unique_id) const |
const FEltSpace::vector_unique_ptr & | GetFEltSpaceList () const noexcept |
Get the list of FEltSpace. | |
const NodeBearer::vector_shared_ptr & | GetProcessorWiseNodeBearerList () const noexcept |
Returns the list of node bearers present on local processor. | |
const NodeBearer::vector_shared_ptr & | GetGhostNodeBearerList () const noexcept |
Returns the list of ghost node bearers. | |
std::size_t | NprocessorWiseDof () const noexcept |
Returns the number of processor-wise dofs (excluding ghosts). | |
std::size_t | NprocessorWiseDof (const NumberingSubset &numbering_subset) const |
std::size_t | NprogramWiseDof () const noexcept |
Get the number of program-wise dofs. | |
std::size_t | NprogramWiseDof (const NumberingSubset &numbering_subset) const |
const Dof::vector_shared_ptr & | GetProcessorWiseDofList () const noexcept |
Get the list of all processor-wise dofs. | |
const Dof::vector_shared_ptr & | GetGhostDofList () const noexcept |
Get the list of all ghost dofs. | |
const NumberingSubset::vector_const_shared_ptr & | GetNumberingSubsetList () const noexcept |
List of all numbering subsets, computed from the finite element spaces. | |
const Wrappers::Petsc::MatrixPattern & | GetMatrixPattern (const NumberingSubset &row_numbering_subset, const NumberingSubset &column_numbering_subset) const |
const Wrappers::Petsc::MatrixPattern & | GetMatrixPattern (const NumberingSubset &numbering_subset) const |
Dof::vector_shared_ptr | GetBoundaryConditionDofList (const NumberingSubset &numbering_subset) const |
Return the list of the dofs involved in an essential boundary condition. | |
GodOfDof::shared_ptr | GetSharedPtr () |
Yield a shared_ptr to the current object. | |
bool | HasInitBeenCalled () const |
Whether Init() has already been called or not. | |
void | PrintDofInformation (const NumberingSubset &numbering_subset, std::ostream &stream) const |
const NumberingSubset & | GetNumberingSubset (NumberingSubsetNS::unique_id unique_id) const |
const NumberingSubset::const_shared_ptr & | GetNumberingSubsetPtr (NumberingSubsetNS::unique_id unique_id) const |
template<Internal::GodOfDofNS::wildcard_for_rank is_wildcard = Internal::GodOfDofNS::wildcard_for_rank::no> | |
const FilesystemNS::Directory & | GetOutputDirectory () const noexcept |
Get the output directory. | |
template<Internal::GodOfDofNS::wildcard_for_rank is_wildcard = Internal::GodOfDofNS::wildcard_for_rank::no> | |
const FilesystemNS::Directory & | GetOutputDirectoryForNumberingSubset (const NumberingSubset &numbering_subset) const |
Returns the name of the subfolder related to a given numbering subset. | |
void | ClearTemporaryData () const noexcept |
Clear the temporary data used to build properly the Internal::FEltNS::Local2GlobalStorage objects. | |
template<BoundaryConditionMethod BoundaryConditionMethodT> | |
void | ApplyBoundaryCondition (const DirichletBoundaryCondition &boundary_condition, GlobalMatrix &matrix) const |
template<BoundaryConditionMethod BoundaryConditionMethodT> | |
void | ApplyBoundaryCondition (const DirichletBoundaryCondition &boundary_condition, GlobalVector &vector) const |
void | ApplyPseudoElimination (const DirichletBoundaryCondition &boundary_condition, GlobalMatrix &matrix) const |
Apply one boundary condition by pseudo-elimination on a matrix. | |
void | ApplyPseudoElimination (const DirichletBoundaryCondition &boundary_condition, GlobalVector &vector) const |
Apply one boundary condition by pseudo-elimination on a vector. | |
void | ApplyPenalization (const DirichletBoundaryCondition &boundary_condition, GlobalMatrix &matrix) const |
Apply one boundary condition by penalization on a matrix. | |
void | ApplyPenalization (const DirichletBoundaryCondition &boundary_condition, GlobalVector &vector) const |
Apply one boundary condition by penalization on a vector. | |
Mesh & | GetNonCstMesh () noexcept |
Non constant access to the mesh object. | |
const std::map<::MoReFEM::NumberingSubsetNS::unique_id, std::size_t > & | NprogramWiseDofPerNumberingSubset () const noexcept |
DoConsiderProcessorWiseLocal2Global | GetDoConsiderProcessorWiseLocal2Global () const |
Whether local2global arrays for processor-wise indexes might be required or not. | |
const Wrappers::Mpi & | GetMpi () const noexcept |
MeshNS::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 MeshNS::unique_id | GenerateNewEligibleId () |
Generate a unique id. | |
static void | ClearUniqueIdList () |
Clear all unique ids. | |
Private Member Functions | |
NodeBearer::vector_shared_ptr & | GetNonCstProcessorWiseNodeBearerList () noexcept |
Non constant access to the list of node bearers. | |
NodeBearer::vector_shared_ptr & | GetNonCstGhostNodeBearerList () noexcept |
Non constant access to the list of ghost node bearers. | |
void | SetUpNodeBearersFromPrepartitionedData (::MoReFEM::Wrappers::Lua::OptionFile &god_of_dof_prepartitioned_data, Internal::FEltSpaceNS::optional_ref_connectivity_per_numbering_subset_type connectivity_per_numbering_subset=std::nullopt) |
Sort and reindex the NodeBearer so that they match what is expected for the parallel run. | |
auto | GetIteratorFEltSpace (FEltSpaceNS::unique_id unique_id) const |
Iterator to the finite element space which index is unique_id. | |
void | Reduce (const Internal::FEltSpaceNS::AssignGeomEltToProcessor &assign_geom_elt_to_processor, const std::optional< MeshNS::InterpolationNS::CoordsMatching > &coords_matching) |
Reduce to processor-wise data. | |
Internal::FEltSpaceNS::MatchInterfaceNodeBearer | CreateNodeBearers () |
Create all the NodeBearer objects. | |
void | CreateNodes (Internal::FEltSpaceNS::MatchInterfaceNodeBearer &match_interface_node_bearer) |
Create all the Nodes by iterating through all LocalFEltSpace of FEltSpace. | |
void | ComputeDofIndexes () |
Compute all the indexes related to all of the Dof. | |
void | ReduceToProcessorWise (const Internal::FEltSpaceNS::AssignGeomEltToProcessor &assign_geom_elt_to_processor, Internal::FEltSpaceNS::MatchInterfaceNodeBearer &match_interface_node_bearer, Internal::FEltSpaceNS::connectivity_per_numbering_subset_type &connectivity_per_numbering_subset) |
Reduce to processor-wise the finite elements in each finite element space, the mesh and computes the ghost node bearers. | |
std::size_t | NprocessorWiseNodeBearer () const noexcept |
Returns the number of node bearers. | |
void | SetBoundaryConditions () |
Set for each concerned dof the associated value from a Dirichlet boundary condition. | |
Dof::vector_shared_ptr & | GetNonCstProcessorWiseDofList () noexcept |
Get the list of all processor-wise dofs (ghost excluded). | |
Dof::vector_shared_ptr & | GetNonCstGhostDofList () noexcept |
Get the list of all ghost dofs. | |
const NumberingSubset::vector_const_shared_ptr & | ComputeNumberingSubsetList () |
Iterate through all finite element spaces and compute the list of all numbering subsets. | |
void | PrepareOutput (const Internal::Parallelism *parallelism) |
Prepare the subfolders for each numbering_subset. | |
const Internal::FEltSpaceNS::NdofHolder & | GetNdofHolder () const noexcept |
Accessor to NdofHolder. | |
Internal::FEltSpaceNS::MatchInterfaceNodeBearer | InitNodeBearers () |
First part of the Init() method, that begins to initialize stuff but has not yet begun the reduction to processor-wise. | |
void | CreateNodesAndDofs (Internal::FEltSpaceNS::MatchInterfaceNodeBearer &match_interface_node_bearer) |
Third part of the Init() method, which mostly settles the data reduction to processor-size. | |
void | Reduce (Internal::FEltSpaceNS::MatchInterfaceNodeBearer &match_interface_node_bearer, Internal::FEltSpaceNS::connectivity_per_numbering_subset_type &connectivity_per_numbering_subset) |
Reduce to processor-wise and ghost data.. | |
void | ComputeGhostNodeBearerListForCoordsMatching (const MeshNS::InterpolationNS::CoordsMatching &coords_matching, const NumberingSubset &source_numbering_subset, Internal::FEltSpaceNS::MatchInterfaceNodeBearer &match_interface_node_bearer) |
Identify the supplementary ghost NodeBearer that should be kept for CoordsMatching purpose. | |
void | SetFEltSpaceList (FEltSpace::vector_unique_ptr &&felt_space_list) |
Set list of FEltSpace. | |
template<::MoReFEM::Advanced::Concept::MoReFEMDataType MoReFEMDataT> | |
void | InitFromPreprocessedData (const MoReFEMDataT &morefem_data) |
The method called by Init() when the parallelism strategy is "run_from_preprocessed_data". | |
void | InitFromPreprocessedDataHelper (::MoReFEM::Wrappers::Lua::OptionFile &god_of_dof_prepartioned_data) |
The method that does the heavy bulk of InitFromPreprocessedData - once the correct data have been extracted from the input data file. | |
void | FinalizeInitialization (DoConsiderProcessorWiseLocal2Global do_consider_processor_wise_local_2_global, const Internal::Parallelism *parallelism) |
Finalize the initialization of the GodOfDof (through Init() call). | |
void | InitOutputDirectories (const FilesystemNS::Directory &output_directory) |
Set and create the output directories. | |
Static Private Member Functions | |
static MeshNS::unique_id | AssignUniqueId () |
If AssignationMode is automatic, generates a new unique identifier. | |
static MeshNS::unique_id | NewUniqueId (MeshNS::unique_id new_unique_id) |
If AssignationMode is manual, checks the unique identifier provided is valid. | |
static std::set< MeshNS::unique_id > & | StaticUniqueIdList () |
List of all identifiers existing for DerivedT. | |
Private Attributes | |
FEltSpace::vector_unique_ptr | felt_space_list_ |
List of all finite element spaces related to the mesh covered by GodOfDof. | |
NumberingSubset::vector_const_shared_ptr | numbering_subset_list_ |
List of all numbering subsets, computed from the finite element spaces. | |
Mesh & | mesh_ |
Mesh covered by the current object. | |
NodeBearer::vector_shared_ptr | processor_wise_node_bearer_list_ |
List of all node bearers. Each one is present only once here; ghost aren't present in this one. | |
NodeBearer::vector_shared_ptr | ghost_node_bearer_list_ |
Internal::FEltSpaceNS::NdofHolder::const_unique_ptr | Ndof_holder_ = nullptr |
Objects that counts the number of dofs in several configurations. | |
Internal::GodOfDofNS::OutputDirectoryStorage::const_unique_ptr | output_directory_storage_ = nullptr |
Object in charge of storing output directories. | |
Internal::GodOfDofNS::OutputDirectoryStorage::const_unique_ptr | output_directory_wildcard_storage_ = nullptr |
Object in charge of storing output directories with wildcarfs instead of rank id (for use in output files). | |
Dof::vector_shared_ptr | processor_wise_dof_list_ |
List of processor-wise dofs. | |
Dof::vector_shared_ptr | ghost_dof_list_ |
List of processor-wise dofs. | |
Internal::FEltSpaceNS::MatrixPattern::vector_const_unique_ptr | matrix_pattern_per_numbering_subset_ |
CSR Pattern of the matrix. | |
FilesystemNS::File | time_iteration_file_ |
Path of the file listing the time iterations and the related files. | |
bool | has_init_been_called_ = false |
Whether Init() has already been called or not. | |
DoConsiderProcessorWiseLocal2Global | do_consider_proc_wise_local_2_global_ |
Whether local2global arrays for processor-wise indexes might be required or not. | |
const Wrappers::Mpi & | mpi_ |
Mpi object. | |
const MeshNS::unique_id | unique_id_ |
The value of the unique id for the current DerivedT object. | |
Friends | |
class | GodOfDofManager |
Friendship. | |
class | Internal::GodOfDofNS::InitAllGodOfDof |
Friendship. | |
class | TestNS::LoadPrepartitionedGodOfDofNS::Model |
Friendship to test class,. | |
Special members. | |
GodOfDof (const Wrappers::Mpi &mpi, Mesh &mesh) | |
Constructor. | |
~GodOfDof ()=default | |
Destructor. | |
GodOfDof (const GodOfDof &rhs)=delete | |
The copy constructor. | |
GodOfDof (GodOfDof &&rhs)=default | |
The move constructor. | |
GodOfDof & | operator= (const GodOfDof &rhs)=delete |
The (copy) operator=. | |
GodOfDof & | operator= (GodOfDof &&rhs)=delete |
The (move) operator=. | |
Object in charge of all the dofs related to a given Mesh.
There is exactly one GodOfDof per Mesh; both objects share the same unique id. For instance if in the input data file there is
Mesh2 = { ... }
a Mesh AND a GodOfDof with an identifier of 2 are created.
GodOfDof is also the place where all finite element spaces related to a given mesh are stored.
using MoReFEM::GodOfDof::shared_ptr = std::shared_ptr<GodOfDof> |
Alias to shared pointer. It is a shared_pointer and not unique_ptr here as weak_pointers will be used in FEltSpace.
using MoReFEM::GodOfDof::const_shared_ptr = std::shared_ptr<const GodOfDof> |
Alias to shared pointer. It is a shared_pointer and not unique_ptr here as weak_pointers will be used in FEltSpace.
|
explicitprivate |
Constructor.
[internal]
It is private as construction should be driven by friend GodOfDofManager.
|
delete |
The copy constructor.
[in] | rhs | The object from which the construction occurs. |
|
default |
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. |
const FEltSpace & MoReFEM::GodOfDof::GetFEltSpace | ( | FEltSpaceNS::unique_id | unique_id | ) | const |
Get access to the unique_id -th finite element space.
It assumes the finite element space does exist in the GodOfDof; this can be checked beforehand with IsFEltSpace(index).
[in] | unique_id | Unique identifier of the sought FEltSpace (as returned by FEltSpace::GetUniqueId()). |
bool MoReFEM::GodOfDof::IsFEltSpace | ( | FEltSpaceNS::unique_id | unique_id | ) | const |
Whether the finite element space unique_id is in the current GodOfDof.
[in] | unique_id | Unique identifier of the sought FEltSpace (as returned by FEltSpace::GetUniqueId()). |
std::size_t MoReFEM::GodOfDof::NprocessorWiseDof | ( | const NumberingSubset & | numbering_subset | ) | const |
Returns the number of processor-wise dofs (excluding ghosts) within a given numbering subset.
[in] | numbering_subset | NumberingSubset for which the tally is done. |
std::size_t MoReFEM::GodOfDof::NprogramWiseDof | ( | const NumberingSubset & | numbering_subset | ) | const |
Returns the number of program-wise dofs within a given numbering subset.
[in] | numbering_subset | NumberingSubset for which the tally is done. |
const Wrappers::Petsc::MatrixPattern & MoReFEM::GodOfDof::GetMatrixPattern | ( | const NumberingSubset & | row_numbering_subset, |
const NumberingSubset & | column_numbering_subset ) const |
Fetch the matrix pattern which rows are numbered by row_numbering_subset, and columns by column_numbering_subset.
[in] | row_numbering_subset | NumberingSubset used for the rows. |
[in] | column_numbering_subset | NumberingSubset used for the columns. |
const Wrappers::Petsc::MatrixPattern & MoReFEM::GodOfDof::GetMatrixPattern | ( | const NumberingSubset & | numbering_subset | ) | const |
Shorthand function for a matrix described only by one numbering_subset (square matrix).
[in] | numbering_subset | Same NumberingSubset used for the rows and the columns. |
Dof::vector_shared_ptr MoReFEM::GodOfDof::GetBoundaryConditionDofList | ( | const NumberingSubset & | numbering_subset | ) | const |
Return the list of the dofs involved in an essential boundary condition.
The dofs may be processor-wise or ghosts; as usual ghost are packed together at the end of the container.
[in] | numbering_subset | Only dofs that belongs to this NumberingSubset are requested. |
GodOfDof::shared_ptr MoReFEM::GodOfDof::GetSharedPtr | ( | ) |
Yield a shared_ptr to the current object.
This requires that at least one shared_ptr to this object exists (see behaviour of std::enable_shared_from_this for more details).
bool MoReFEM::GodOfDof::HasInitBeenCalled | ( | ) | const |
Whether Init() has already been called or not.
Finite element spaces are fully initialized with the call to Init(), which among other things fill them and partition the mesh. They must not be defined after this call; current debug attribute is there to ensure it doesn't happen.
void MoReFEM::GodOfDof::PrintDofInformation | ( | const NumberingSubset & | numbering_subset, |
std::ostream & | stream ) const |
Print the information for each dof.
[in] | numbering_subset | NumberingSubset for which dof information will be printed. |
[in,out] | stream | Stream upon which object information are written. |
const NumberingSubset & MoReFEM::GodOfDof::GetNumberingSubset | ( | NumberingSubsetNS::unique_id | unique_id | ) | const |
Get the numbering subset which id is unique_id.
[in] | unique_id | Unique identifier of the sought NumberingSubset (as returned by NumberingSubset::GetUniqueId()). |
const NumberingSubset::const_shared_ptr & MoReFEM::GodOfDof::GetNumberingSubsetPtr | ( | NumberingSubsetNS::unique_id | unique_id | ) | const |
Get the numbering subset which id is unique_id as a smart pointer.
[in] | unique_id | Unique identifier of the sought NumberingSubset (as returned by NumberingSubset::GetUniqueId()). |
const FilesystemNS::Directory & MoReFEM::GodOfDof::GetOutputDirectoryForNumberingSubset | ( | const NumberingSubset & | numbering_subset | ) | const |
Returns the name of the subfolder related to a given numbering subset.
For instance
where i is the unique id of the numbering subset.
[in] | numbering_subset | Numbering subset for which output folder is sought. |
void MoReFEM::GodOfDof::ApplyBoundaryCondition | ( | const DirichletBoundaryCondition & | boundary_condition, |
GlobalMatrix & | matrix ) const |
Apply the boundary condition method given in template argument.
BoundaryConditionMethodT | Method used to enforce the boundary condition. |
[in] | boundary_condition | DirichletBoundaryCondition to be applied. |
[in,out] | matrix | GlobalMatrix upon which the boundary condition will be enforced. |
void MoReFEM::GodOfDof::ApplyBoundaryCondition | ( | const DirichletBoundaryCondition & | boundary_condition, |
GlobalVector & | vector ) const |
Apply the boundary condition method given in template argument.
BoundaryConditionMethodT | Method used to enforce the boundary condition. |
[in] | boundary_condition | DirichletBoundaryCondition to be applied. |
[in,out] | vector | GlobalVector upon which the boundary condition will be enforced. |
void MoReFEM::GodOfDof::ApplyPseudoElimination | ( | const DirichletBoundaryCondition & | boundary_condition, |
GlobalMatrix & | matrix ) const |
Apply one boundary condition by pseudo-elimination on a matrix.
Relevant numbering subset is read from the matrix object.
[in] | boundary_condition | Boundary condition to be applied. |
[in,out] | matrix | Matrix upon which the condition is applied. |
void MoReFEM::GodOfDof::ApplyPseudoElimination | ( | const DirichletBoundaryCondition & | boundary_condition, |
GlobalVector & | vector ) const |
Apply one boundary condition by pseudo-elimination on a vector.
Relevant numbering subset is read from the vector object.
[in] | boundary_condition | Boundary condition to be applied. |
[in,out] | vector | Vector upon which the condition is applied. |
void MoReFEM::GodOfDof::ApplyPenalization | ( | const DirichletBoundaryCondition & | boundary_condition, |
GlobalMatrix & | matrix ) const |
Apply one boundary condition by penalization on a matrix.
Relevant numbering subset is read from the matrix object.
[in] | boundary_condition | Boundary condition to be applied. |
[in,out] | matrix | Matrix upon which the condition is applied. |
void MoReFEM::GodOfDof::ApplyPenalization | ( | const DirichletBoundaryCondition & | boundary_condition, |
GlobalVector & | vector ) const |
Apply one boundary condition by penalization on a vector.
Relevant numbering subset is read from the vector object.
[in] | boundary_condition | Boundary condition to be applied. |
[in,out] | vector | Vector upon which the condition is applied. |
|
noexcept |
Non constant access to the mesh object.
|
private |
Sort and reindex the NodeBearer so that they match what is expected for the parallel run.
This method is expected to be called in a run from prepartitioned data, just after the NodeBearer have been created from the reduced data. At this stage before the call, we get a list of NodeBearers, but we don't know yet:
These information are properly filled by the method.
[in] | god_of_dof_prepartitioned_data | The OptionFile which contains the data required to reconstruct properly the GodOfDof in a run from preprocessed data. It should really be seen as an input only - the fact it is not const is due to the constraints of the OptionFile implementation. |
[out] | connectivity_per_numbering_subset | For each NumberingSubset, track for each processor-wise NodeBearer the other NodeBearer s to which it is collected - including ghosted ones. |
|
private |
Iterator to the finite element space which index is unique_id.
Iterator might be the end of the list; this method is only for internal purposes.
[in] | unique_id | Unique identifier of the FEltSpace (noticeably used in the input data file to tag the finite element space). |
|
private |
Reduce to processor-wise data.
[in] | assign_geom_elt_to_processor | The object which was used to determine which rank is in charge of each GeometricElt. |
[in] | coords_matching | If there is a FromCoordsMatching operator, the association between Coords of both meshes involved. |
|
private |
Create all the NodeBearer objects.
And only those - their content (Node and Dof) is created later, after the reduction in parallel mode.
|
private |
Create all the Nodes by iterating through all LocalFEltSpace of FEltSpace.
[in,out] | match_interface_node_bearer | Helper object which stores data useful for the initialisation phase. |
This method is expected to be called AFTER the reduction process occurred. After the call, all relevant Node are created and they are properly sorted as processor-wise or ghost.
Don't call this method directly: it is automatically called in CreateNodesAndDofs().
|
private |
Compute all the indexes related to all of the Dof.
This includes the indexes for each relevant NumbberingSubset.
|
private |
Reduce to processor-wise the finite elements in each finite element space, the mesh and computes the ghost node bearers.
[in] | assign_geom_elt_to_processor | The object which was used to determine which rank is in charge of each GeometricElt. |
[in,out] | match_interface_node_bearer | Helper object which stores data useful for the initialisation phase. |
[in,out] | connectivity_per_numbering_subset | NodeBearer connectivity for each NumberingSubset. This is also an input parameter: if there are several GodOfDof involved in the model at hand there might be already data from another GodOfDof. |
The only quantity not yet reduced is the dofs involved in the boundary conditions.
|
private |
Set for each concerned dof the associated value from a Dirichlet boundary condition.
[internal]
Boundary conditions have not been discussed deeply yet and so essential ones are still handled à la Felisce (which is not necessarily a bad thing here). However, we depart much for the handling of natural ones.
|
private |
Iterate through all finite element spaces and compute the list of all numbering subsets.
|
private |
Prepare the subfolders for each numbering_subset.
[in] | parallelism | Object which holds the parallelism strategy to use. or some of them, additional information will be written on disk. |
|
private |
First part of the Init() method, that begins to initialize stuff but has not yet begun the reduction to processor-wise.
It is hence decoupled because this part may be compiled, contrary to the second one.
|
private |
Third part of the Init() method, which mostly settles the data reduction to processor-size.
[in,out] | match_interface_node_bearer | Helper object which stores data useful for the initialisation phase. |
|
private |
Reduce to processor-wise and ghost data..
[in,out] | match_interface_node_bearer | Helper object which stores data useful for the initialisation phase. |
[in,out] | connectivity_per_numbering_subset | NodeBearer connectivity for each NumberingSubset. This is also an input parameter: if there are several GodOfDof involved in the model at hand there might be already data from another GodOfDof. |
|
private |
Identify the supplementary ghost NodeBearer that should be kept for CoordsMatching purpose.
If there is a CoordsMatching operator, list the NodeBearer that should be kept as ghost - some of them would have been dropped otherwise.
[in,out] | match_interface_node_bearer | Helper object which stores data useful for the initialisation phase. |
[in] | source_numbering_subset | Source NumberingSubset in the FromCoordsMatching interpolator. |
[in] | coords_matching | If there is a FromCoordsMatching operator, the association between Coords of both meshes involved. |
|
private |
|
private |
The method called by Init() when the parallelism strategy is "run_from_preprocessed_data".
[in] | morefem_data | The object which encapsulates some stuff that acts as global data, such as:
|
Prerequisite: FEltSpace and output directories must have been initialized.
|
private |
The method that does the heavy bulk of InitFromPreprocessedData - once the correct data have been extracted from the input data file.
The perk is that this method is compiled, leaving only a very restrained part in the InitFromPreprocessedData method.
[in] | god_of_dof_prepartioned_data | The OptionFile which contains the data required to reconstruct properly the GodOfDo in a run from preprocessed data. It should really be seen as an input only - the fact it is not const is due to the constraints of the OptionFile implementation. |
|
private |
Finalize the initialization of the GodOfDof (through Init() call).
[in] | do_consider_processor_wise_local_2_global | If no, only the program-wise local2global array is computed. If yes, both program- and processor-wise ones are computed. By default it is no: some global operators don't need it so it's best to avoid cluttering memory when it doesn't matter. |
[in] | parallelism | Object which holds the parallelism strategy to use. or some of them, additional information will be written on disk. |
|
private |
Set and create the output directories.
[in] | output_directory | Output directory for data specific to the mesh covered by the GodOfDof. |
|
noexcept |
Number of program-wise dofs per NumberingSubset. You shouldn't need this: it is useful only for reloading data for two-steps parallelism.
DoConsiderProcessorWiseLocal2Global MoReFEM::GodOfDof::GetDoConsiderProcessorWiseLocal2Global | ( | ) | const |
Whether local2global arrays for processor-wise indexes might be required or not.
yes doesn't mean they are already computed, but is a mandatory prerequisite should they be required.
|
noexceptinherited |
Read-only access to underlying Mpi object.
|
inherited |
Get the value of the internal unique ID.
|
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.
|
staticinherited |
Clear all unique ids.
|
staticprivateinherited |
If AssignationMode is automatic, generates a new unique identifier.
|
staticprivateinherited |
If AssignationMode is manual, checks the unique identifier provided is valid.
[in] | new_unique_id | The proposed new unique id. If it already exists an exception will be thrown. |
|
private |
List of all ghost node bearers, that is all nodes required for calculation but not hosted by local processor.
|
private |
List of processor-wise dofs.
Ghost are excluded and handled in ghost_dof_list_.
[internal]
This information is redundant with the one from node_per_felt_, but it allows to use a slicker interface (direct loop instead of three imbricated ones). //
|
private |
List of processor-wise dofs.
[internal]
This information is redundant with the one from node_per_felt_, but it allows to use a slicker interface (direct loop instead of three imbricated ones).
|
private |
Whether Init() has already been called or not.
Finite element spaces are fully initialized with the call to Init(), which among other things fill them and partition the mesh. They must not been defined after this call; current debug attribute is there to ensure it doesn't happen.
|
private |
Whether local2global arrays for processor-wise indexes might be required or not.
yes doesn't mean they are already computed, but is a mandatory prerequisite should they be required.