![]() |
KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
|
Call Metis to divide an heterogeneous mesh, by partitioning its nodal graph. More...
#include <metis_divide_heterogeneous_input_process.h>
Public Member Functions | |
Life Cycle | |
| MetisDivideHeterogeneousInputProcess (IO &rIO, SizeType NumberOfPartitions, int Dimension=3, int Verbosity=0, bool SynchronizeConditions=false) | |
| Default constructor. More... | |
| MetisDivideHeterogeneousInputProcess (MetisDivideHeterogeneousInputProcess const &rOther)=delete | |
| Copy constructor. More... | |
| virtual | ~MetisDivideHeterogeneousInputProcess () |
| Destructor. More... | |
Operators | |
| void | operator() () |
Operations | |
| void | Execute () override |
| Generate a partition using Metis. More... | |
| virtual void | GetNodesPartitions (std::vector< idxtype > &rNodePartition, SizeType &rNumNodes) |
Input and output | |
| std::string | Info () const override |
| Turn back information as a string. More... | |
| void | PrintInfo (std::ostream &rOStream) const override |
| Print information about this object. More... | |
| void | PrintData (std::ostream &rOStream) const override |
| Print object's data. More... | |
Public Member Functions inherited from Kratos::Process | |
| KRATOS_CLASS_POINTER_DEFINITION (Process) | |
| Pointer definition of Process. More... | |
| Process () | |
| Default constructor. More... | |
| Process (const Flags options) | |
| ~Process () override | |
| Destructor. More... | |
| void | operator() () |
| This operator is provided to call the process as a function and simply calls the Execute method. More... | |
| virtual Process::Pointer | Create (Model &rModel, Parameters ThisParameters) |
| This method creates an pointer of the process. More... | |
| virtual void | ExecuteInitialize () |
| This function is designed for being called at the beginning of the computations right after reading the model and the groups. More... | |
| virtual void | ExecuteBeforeSolutionLoop () |
| This function is designed for being execute once before the solution loop but after all of the solvers where built. More... | |
| virtual void | ExecuteInitializeSolutionStep () |
| This function will be executed at every time step BEFORE performing the solve phase. More... | |
| virtual void | ExecuteFinalizeSolutionStep () |
| This function will be executed at every time step AFTER performing the solve phase. More... | |
| virtual void | ExecuteBeforeOutputStep () |
| This function will be executed at every time step BEFORE writing the output. More... | |
| virtual void | ExecuteAfterOutputStep () |
| This function will be executed at every time step AFTER writing the output. More... | |
| virtual void | ExecuteFinalize () |
| This function is designed for being called at the end of the computations. More... | |
| virtual int | Check () |
| This function is designed for being called after ExecuteInitialize ONCE to verify that the input is correct. More... | |
| virtual void | Clear () |
| This method clears the assignation of the conditions. More... | |
| virtual const Parameters | GetDefaultParameters () const |
| This method provides the defaults parameters to avoid conflicts between the different constructors. More... | |
Public Member Functions inherited from Kratos::Flags | |
| Flags & | operator= (Flags const &rOther) |
| Assignment operator. More... | |
| operator bool () const | |
| Flags | operator~ () const |
| bool | operator! () const |
| void | AssignFlags (Flags const &rOther) |
| void | Set (const Flags ThisFlag) |
| void | Set (const Flags ThisFlag, bool Value) |
| void | Reset (const Flags ThisFlag) |
| void | Flip (const Flags ThisFlag) |
| void | SetPosition (IndexType Position, bool Value=true) |
| bool | GetPosition (IndexType Position) const |
| void | FlipPosition (IndexType Position) |
| void | ClearPosition (IndexType Position) |
| void | Clear () |
| Flags | AsFalse () const |
| bool | Is (Flags const &rOther) const |
| bool | IsDefined (Flags const &rOther) const |
| bool | IsNot (Flags const &rOther) const |
| bool | IsNotDefined (Flags const &rOther) const |
| KRATOS_CLASS_POINTER_DEFINITION (Flags) | |
| Pointer definition of Flags. More... | |
| const Flags & | operator|= (const Flags &Other) |
| const Flags & | operator&= (const Flags &Other) |
| Flags () | |
| Default constructor. More... | |
| Flags (Flags const &rOther) | |
| Copy constructor. More... | |
| virtual | ~Flags () |
| Destructor. More... | |
Protected Member Functions | |
Private Operations | |
| void | ExecutePartitioning (PartitioningInfo &rPartitioningInfo) |
| int | PartitionNodes (SizeType NumNodes, idxtype *NodeIndices, idxtype *NodeConnectivities, std::vector< idxtype > &rNodePartition) |
| Call Metis to create a partition of nodes based on the nodal graph. More... | |
| void | PartitionMesh (std::vector< idxtype > const &NodePartition, const IO::ConnectivitiesContainerType &rElemConnectivities, std::vector< idxtype > &rElemPartition) |
| Use the nodal partition data to assign elements or conditions to a partition. More... | |
| void | PartitionElementsSynchronous (std::vector< idxtype > const &NodePartition, const IO::ConnectivitiesContainerType &rElemConnectivities, std::vector< idxtype > &rElemPartition) |
| Partition the elements such that boundary elements are always assigned the majority partition. More... | |
| void | PartitionConditionsSynchronous (const std::vector< idxtype > &rNodePartition, const std::vector< idxtype > &rElemPartition, const IO::ConnectivitiesContainerType &rCondConnectivities, const IO::ConnectivitiesContainerType &rElemConnectivities, std::vector< idxtype > &rCondPartition) |
| Partition the conditions such that the condition is assigned the same partition as its parent element. More... | |
| void | RedistributeHangingNodes (std::vector< idxtype > &rNodePartition, std::vector< idxtype > const &rElementPartition, const IO::ConnectivitiesContainerType &rElementConnectivities, std::vector< idxtype > const &rConditionPartition, const IO::ConnectivitiesContainerType &rConditionConnectivities) |
| SizeType | FindMax (SizeType NumTerms, const std::vector< int > &rVect) |
| void | PrintDebugData (const std::string &rLabel, const std::vector< idxtype > &rPartitionData) |
Un accessible methods | |
| MetisDivideHeterogeneousInputProcess & | operator= (MetisDivideHeterogeneousInputProcess const &rOther) |
| Assignment operator. More... | |
Protected Attributes | |
Member Variables | |
| IO & | mrIO |
| SizeType | mNumberOfPartitions |
| bool | mSynchronizeConditions |
| int | mVerbosity |
| int | mNumNodes |
| std::vector< std::unordered_set< std::size_t > > | mNodeConnectivities |
Type Definitions | |
| using | SizeType = IO::SizeType |
| using | GraphType = IO::GraphType |
| using | PartitioningInfo = IO::PartitioningInfo |
| using | PartitionIndicesType = IO::PartitionIndicesType |
| using | PartitionIndicesContainerType = IO::PartitionIndicesContainerType |
| using | idxtype = idx_t |
| KRATOS_CLASS_POINTER_DEFINITION (MetisDivideHeterogeneousInputProcess) | |
| Pointer definition of MetisDivideHeterogeneousInputProcess. More... | |
Additional Inherited Members | |
Public Types inherited from Kratos::Flags | |
| enum | FlagsList { Flag0 = BlockType(1) , Flag1 = BlockType(1) << 1 , Flag2 = BlockType(1) << 2 , Flag3 = BlockType(1) << 3 , Flag4 = BlockType(1) << 4 , Flag5 = BlockType(1) << 5 , Flag6 = BlockType(1) << 6 , Flag7 = BlockType(1) << 7 , Flag8 = BlockType(1) << 8 , Flag9 = BlockType(1) << 9 , Flag10 = BlockType(1) << 10 , Flag11 = BlockType(1) << 11 , Flag12 = BlockType(1) << 12 , Flag13 = BlockType(1) << 13 , Flag14 = BlockType(1) << 14 , Flag15 = BlockType(1) << 15 , Flag16 = BlockType(1) << 16 , Flag17 = BlockType(1) << 17 , Flag18 = BlockType(1) << 18 , Flag19 = BlockType(1) << 19 , Flag20 = BlockType(1) << 20 , Flag21 = BlockType(1) << 21 , Flag22 = BlockType(1) << 22 , Flag23 = BlockType(1) << 23 , Flag24 = BlockType(1) << 24 , Flag25 = BlockType(1) << 25 , Flag26 = BlockType(1) << 26 , Flag27 = BlockType(1) << 27 , Flag28 = BlockType(1) << 28 , Flag29 = BlockType(1) << 29 , Flag30 = BlockType(1) << 30 } |
| typedef int64_t | BlockType |
| typedef int64_t | FlagType |
| typedef std::size_t | IndexType |
Static Public Member Functions inherited from Kratos::Flags | |
| static const Flags | AllDefined () |
| static const Flags | AllTrue () |
| static Flags | Create (IndexType ThisPosition, bool Value=true) |
Call Metis to divide an heterogeneous mesh, by partitioning its nodal graph.
| using Kratos::MetisDivideHeterogeneousInputProcess::idxtype = idx_t |
| using Kratos::MetisDivideHeterogeneousInputProcess::PartitionIndicesContainerType = IO::PartitionIndicesContainerType |
|
inline |
Default constructor.
|
delete |
Copy constructor.
|
inlinevirtual |
Destructor.
|
overridevirtual |
Generate a partition using Metis.
Partitioned input is written as <problem name>_<mpi rank>.mdpa
Reimplemented from Kratos::Process.
|
protected |
|
protected |
|
virtual |
Reimplemented in Kratos::MetisDivideSubModelPartsHeterogeneousInputProcess.
|
inlineoverridevirtual |
Turn back information as a string.
Reimplemented from Kratos::Process.
Reimplemented in Kratos::MetisDivideSubModelPartsHeterogeneousInputProcess.
| Kratos::MetisDivideHeterogeneousInputProcess::KRATOS_CLASS_POINTER_DEFINITION | ( | MetisDivideHeterogeneousInputProcess | ) |
Pointer definition of MetisDivideHeterogeneousInputProcess.
|
inline |
|
protected |
Assignment operator.
|
protected |
Partition the conditions such that the condition is assigned the same partition as its parent element.
|
protected |
Partition the elements such that boundary elements are always assigned the majority partition.
|
protected |
Use the nodal partition data to assign elements or conditions to a partition.
|
protected |
Call Metis to create a partition of nodes based on the nodal graph.
Metis_PartGraphKway is used to generate a partition for nodes in the model.
| NumNodes | Number of nodes in the mesh. |
| NodeIndices | pointer to C array of size NumNodes+1, xadj array for calls to Metis_PartGraphKway. |
| NodeConnectivities | pointer to C array of size NodeIndices[NumNodes+1], adjcncy array for calls to Metis_PartGraphKway. |
| rNodePartition | Metis output as an std::vector, position k is the partition that will contain the k-th node (Node with Id k+1). |
|
inlineoverridevirtual |
Print object's data.
Reimplemented from Kratos::Process.
Reimplemented in Kratos::MetisDivideSubModelPartsHeterogeneousInputProcess.
|
protected |
|
inlineoverridevirtual |
Print information about this object.
Reimplemented from Kratos::Process.
Reimplemented in Kratos::MetisDivideSubModelPartsHeterogeneousInputProcess.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |