PanNDE
All Classes Namespaces Functions Pages
Public Member Functions | List of all members
NetMPI::MetisPartitioner Class Reference

#include "modules/NetMPI/include/MetisPartitioner.hpp"

Inheritance diagram for NetMPI::MetisPartitioner:
Controller::Partitioner

Public Member Functions

 MetisPartitioner (std::shared_ptr< PanNDE::ArrayFactory< int32_t >> i32_maker, std::shared_ptr< PanNDE::ArrayFactory< int64_t >> i64_maker, std::shared_ptr< PanNDE::ArrayFactory< double >> dbl_maker, std::shared_ptr< PanNDE::Communicator >communicator=nullptr)
 
void partitionMesh (int Nparts, std::shared_ptr< PanNDE::Mesh > global_mesh) override
 
std::shared_ptr< PanNDE::Array< std::shared_ptr< PanNDE::Mesh > > > distributeMeshPartitions (std::shared_ptr< PanNDE::Array< int >> partitionIds, std::shared_ptr< PanNDE::MeshFactory > maker, int mesh_source_rank=0) override
 
std::shared_ptr< PanNDE::Array< std::shared_ptr< PanNDE::Field > > > distributeFieldPartitions (std::shared_ptr< PanNDE::Array< int >> partitionIds, std::shared_ptr< PanNDE::FieldFactory > maker, std::shared_ptr< PanNDE::Field > global_field=nullptr, int field_source_rank=0) override
 

Detailed Description

Implements the required externally faced operations for partitioning and distributing a mesh and it's associated fields

Constructor & Destructor Documentation

◆ MetisPartitioner()

NetMPI::MetisPartitioner::MetisPartitioner ( std::shared_ptr< PanNDE::ArrayFactory< int32_t >>  i32_maker,
std::shared_ptr< PanNDE::ArrayFactory< int64_t >>  i64_maker,
std::shared_ptr< PanNDE::ArrayFactory< double >>  dbl_maker,
std::shared_ptr< PanNDE::Communicator communicator = nullptr 
)
inline

constructor

Parameters
i32_makerArray factory for 32bit ints
i64_makerArray factory for 64bit ints
dbl_makerArray factory for doubles
communicatorcommunicator tool for distributing mesh and fields

Member Function Documentation

◆ distributeFieldPartitions()

std::shared_ptr<PanNDE::Array<std::shared_ptr<PanNDE::Field> > > NetMPI::MetisPartitioner::distributeFieldPartitions ( std::shared_ptr< PanNDE::Array< int >>  partitionIds,
std::shared_ptr< PanNDE::FieldFactory maker,
std::shared_ptr< PanNDE::Field global_field = nullptr,
int  field_source_rank = 0 
)
inlineoverridevirtual

distribute a field

Parameters
partitionIdswhich partitions the local process is requesting
makerthe field factory
global_fieldthe field that must be partitioned that is currently on the field_source_rank process
field_source_rankprocess which has the global field and is distributing the field partitions

Implements Controller::Partitioner.

◆ distributeMeshPartitions()

std::shared_ptr<PanNDE::Array<std::shared_ptr<PanNDE::Mesh> > > NetMPI::MetisPartitioner::distributeMeshPartitions ( std::shared_ptr< PanNDE::Array< int >>  partitionIds,
std::shared_ptr< PanNDE::MeshFactory maker,
int  mesh_source_rank = 0 
)
inlineoverridevirtual

distribute the mesh

Parameters
partitionIdswhich partitions the local process is requesting
makerthe mesh factory
mesh_source_rankprocess which has the global mesh and is distributing the mesh partitions

Implements Controller::Partitioner.

◆ partitionMesh()

void NetMPI::MetisPartitioner::partitionMesh ( int  Nparts,
std::shared_ptr< PanNDE::Mesh global_mesh 
)
inlineoverridevirtual

partition a mesh

Parameters
Npartsnumber of parts to decompose the mesh into
global_meshthe monolithic mesh to partition

Implements Controller::Partitioner.


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