OpenFPM_pdata  1.1.0
Project that contain the implementation of distributed structures
 All Data Structures Namespaces Functions Variables Typedefs Enumerations Friends Pages
CartDecomposition_ext< dim, T, Memory, Distribution > Class Template Reference

This class decompose a space into sub-sub-domains and distribute them across processors. More...

Detailed Description

template<unsigned int dim, typename T, typename Memory = HeapMemory, typename Distribution = ParMetisDistribution<dim, T>>
class CartDecomposition_ext< dim, T, Memory, Distribution >

This class decompose a space into sub-sub-domains and distribute them across processors.

Template Parameters
dimis the dimensionality of the physical domain we are going to decompose.
Ttype of the space we decompose, Real, Integer, Complex ...
MemoryMemory factory used to allocate memory
Distributiontype of distribution, can be ParMetisDistribution or MetisDistribution

Most of the functionality is the same as CartDecomposition so refer to that class for more information

The additional functionality is the possibility to produce an extended decomposition, in figure is show what we mean with extended

See Also
CartDecomposition

Create a Cartesian decomposition object on a Box space, distribute, calculate internal and external ghost boxes

Definition at line 42 of file CartDecomposition_ext.hpp.

#include <CartDecomposition_ext.hpp>

+ Inheritance diagram for CartDecomposition_ext< dim, T, Memory, Distribution >:

Public Types

typedef CartDecomposition< dim,
T, Memory, Distribution > 
base_type
 The non-extended decomposition base class.
 
- Public Types inherited from CartDecomposition< dim, T, Memory, Distribution >
typedef T domain_type
 Type of the domain we are going to decompose.
 
typedef SpaceBox< dim, T > Box
 It simplify to access the SpaceBox element.
 
typedef CartDecomposition< dim,
T, Memory, Distribution > 
base_type
 This class is base of itself.
 
typedef CartDecomposition_ext
< dim, T, Memory, Distribution > 
extended_type
 This class admit a class defined on an extended domain.
 
typedef T stype
 Space type.
 

Public Member Functions

 CartDecomposition_ext (Vcluster &v_cl)
 Cartesian decomposition constructor. More...
 
void setParameters (const CartDecomposition< dim, T, Memory, Distribution > &dec, const Ghost< dim, T > &g, const ::Box< dim, T > &ext_domain)
 It create another object that contain the same decomposition information but with different ghost boxes and an extended domain. More...
 
- Public Member Functions inherited from CartDecomposition< dim, T, Memory, Distribution >
void createSubdomains (Vcluster &v_cl, const size_t(&bc)[dim], size_t opt=0)
 Constructor, it decompose and distribute the sub-domains across the processors. More...
 
void Initialize_geo_cell_lists ()
 Initialize geo_cell lists. More...
 
void computeCommunicationAndMigrationCosts (size_t ts)
 Calculate communication and migration costs. More...
 
void CreateSubspaces ()
 Create the sub-domain that decompose your domain. More...
 
void calculateGhostBoxes ()
 It calculate the internal ghost boxes. More...
 
void incRef ()
 Increment the reference counter.
 
void decRef ()
 Decrement the reference counter.
 
long int ref ()
 Return the reference counter.
 
 CartDecomposition (Vcluster &v_cl)
 Cartesian decomposition constructor. More...
 
 CartDecomposition (const CartDecomposition< dim, T, Memory, Distribution > &cart)
 Cartesian decomposition copy constructor. More...
 
 CartDecomposition (CartDecomposition< dim, T, Memory, Distribution > &&cart)
 Cartesian decomposition copy constructor. More...
 
 ~CartDecomposition ()
 Cartesian decomposition destructor.
 
void applyPointBC (float(&pt)[dim]) const
 Apply boundary condition to the point. More...
 
void applyPointBC (Point< dim, T > &pt) const
 Apply boundary condition to the point. More...
 
template<typename Mem >
void applyPointBC (encapc< 1, Point< dim, T >, Mem > &&pt) const
 Apply boundary condition to the point. More...
 
CartDecomposition< dim, T,
Memory, Distribution > 
duplicate (const Ghost< dim, T > &g) const
 It create another object that contain the same decomposition information but with different ghost boxes. More...
 
CartDecomposition< dim, T,
Memory, Distribution > 
duplicate () const
 It create another object that contain the same information and act in the same way. More...
 
CartDecomposition< dim, T,
Memory, Distribution > & 
operator= (const CartDecomposition &cart)
 Copy the element. More...
 
CartDecomposition< dim, T,
Memory, Distribution > & 
operator= (CartDecomposition &&cart)
 Copy the element, move semantic. More...
 
template<typename Mem >
size_t processorID (const encapc< 1, Point< dim, T >, Mem > &p) const
 Given a point return in which processor the particle should go. More...
 
size_t processorID (const Point< dim, T > &p) const
 Given a point return in which processor the particle should go. More...
 
size_t processorID (const T(&p)[dim]) const
 Given a point return in which processor the particle should go. More...
 
template<typename Mem >
size_t processorIDBC (encapc< 1, Point< dim, T >, Mem > p)
 Given a point return in which processor the point/particle should go. More...
 
template<typename ofb >
size_t processorIDBC (const Point< dim, T > &p) const
 Given a point return in which processor the particle should go. More...
 
template<typename ofb >
size_t processorIDBC (const T(&p)[dim]) const
 Given a point return in which processor the particle should go. More...
 
size_t periodicity (size_t i) const
 Get the periodicity on i dimension. More...
 
const size_t(& periodicity () const)[dim]
 Get the periodicity. More...
 
void calculate_magn (const grid_sm< dim, void > &gm)
 Calculate magnification. More...
 
void setGoodParameters (::Box< dim, T > domain_, const size_t(&bc)[dim], const Ghost< dim, T > &ghost, size_t dec_gran, const grid_sm< dim, void > &sec_dist=grid_sm< dim, void >())
 Set the best parameters for the decomposition. More...
 
void getParameters (size_t(&div_)[dim])
 return the parameters of the decomposition More...
 
void setParameters (const size_t(&div_)[dim],::Box< dim, T > domain_, const size_t(&bc)[dim], const Ghost< dim, T > &ghost, const grid_sm< dim, void > &sec_dist=grid_sm< dim, void >())
 Set the parameter of the decomposition. More...
 
void reset ()
 Delete the decomposition and reset the data-structure. More...
 
void decompose ()
 Start decomposition. More...
 
void refine (size_t ts)
 Refine the decomposition, available only for ParMetis distribution, for Metis it is a null call. More...
 
void redecompose (size_t ts)
 Refine the decomposition, available only for ParMetis distribution, for Metis it is a null call. More...
 
bool refine (DLB &dlb)
 Refine the decomposition, available only for ParMetis distribution, for Metis it is a null call. More...
 
float getUnbalance ()
 Get the current un-balance value. More...
 
size_t getProcessorLoad ()
 Compute the processor load counting the total weights of its vertices. More...
 
void getSubSubDomainPosition (size_t id, T(&pos)[dim])
 function that return the position of the cell in the space More...
 
size_t getNSubSubDomains ()
 Get the number of sub-sub-domains in this sub-graph. More...
 
void setSubSubDomainComputationCost (size_t id, size_t weight)
 Function that set the computational cost for a of a sub-sub domain. More...
 
size_t getSubSubDomainComputationCost (size_t id)
 function that return the computation cost of the sub-sub-domain id More...
 
size_t subSize ()
 Operator to access the size of the sub-graph. More...
 
size_t getNSubDomain ()
 Get the number of local sub-domains. More...
 
SpaceBox< dim, T > getSubDomain (size_t lc)
 Get the local sub-domain. More...
 
SpaceBox< dim, T > getSubDomainWithGhost (size_t lc)
 Get the local sub-domain enlarged with ghost extension. More...
 
const ::Box< dim, T > & getDomain () const
 Return the box of the physical domain. More...
 
openfpm::vector< SpaceBox< dim,
T > > 
getSubDomains () const
 
openfpm::vector
< openfpm::vector< SpaceBox
< dim, T > > > & 
getSubDomainsGlobal ()
 
template<typename Mem >
bool isLocal (const encapc< 1, Point< dim, T >, Mem > p) const
 Check if the particle is local. More...
 
bool isLocal (const T(&pos)[dim]) const
 Check if the particle is local. More...
 
bool isLocal (const Point< dim, T > &pos) const
 Check if the particle is local. More...
 
template<typename Mem >
bool isLocalBC (const encapc< 1, Point< dim, T >, Mem > p, const size_t(&bc)[dim]) const
 Check if the particle is local considering boundary conditions. More...
 
openfpm::vector< size_t > & getDomainCells ()
 Get the domain Cells. More...
 
openfpm::vector< size_t > & getCRSDomainCells ()
 Get the CRS domain Cells with normal neighborhood. More...
 
void setNNParameters (grid_key_dx< dim > &shift, grid_sm< dim, void > &gs)
 set NN parameters to calculate cell-list neighborhood More...
 
openfpm::vector< subsub_lin
< dim > > & 
getCRSAnomDomainCells ()
 Get the CRS anomalous cells. More...
 
bool isLocalBC (const T(&p)[dim], const size_t(&bc)[dim]) const
 Check if the particle is local considering boundary conditions. More...
 
::Box< dim, T > & getProcessorBounds ()
 Return the bounding box containing union of all the sub-domains for the local processor. More...
 
const Ghost< dim, T > & getGhost () const
 Return the ghost. More...
 
const grid_sm< dim, void > getGrid ()
 Decomposition grid. More...
 
const grid_sm< dim, void > getDistGrid ()
 Distribution grid. More...
 
bool write (std::string output) const
 Write the decomposition as VTK file. More...
 
VclustergetVC () const
 Get the Virtual Cluster machine. More...
 
bool check_consistency ()
 function to check the consistency of the information of the decomposition More...
 
void debugPrint ()
 Print subdomains, external and internal ghost boxes. More...
 
bool is_equal (CartDecomposition< dim, T, Memory > &cart)
 Check if the CartDecomposition contain the same information. More...
 
bool is_equal_ng (CartDecomposition< dim, T, Memory > &cart)
 Check if the CartDecomposition contain the same information with the exception of the ghost part It is anyway required that the ghost come from the same sub-domains decomposition. More...
 
Distribution & getDistribution ()
 Return the distribution object. More...
 
void addComputationCost (size_t gid, size_t i)
 Add computation cost i to the subsubdomain with global id gid. More...
 
size_t get_ndec ()
 Get the decomposition counter. More...
 
const CellDecomposer_sm< dim,
T, shift< dim, T > > & 
getCellDecomposer ()
 Get the cell decomposer of the decomposition. More...
 
- Public Member Functions inherited from ie_loc_ghost< dim, T >
void create (openfpm::vector< SpaceBox< dim, T >> &sub_domains, Box< dim, T > &domain, Ghost< dim, T > &ghost, const size_t(&bc)[dim])
 Create external and internal local ghosts. More...
 
 ie_loc_ghost ()
 Default constructor.
 
 ie_loc_ghost (const ie_loc_ghost< dim, T > &ilg)
 Constructor from another ie_loc_ghost.
 
 ie_loc_ghost (ie_loc_ghost< dim, T > &&ilg)
 Constructor from temporal ie_loc_ghost.
 
ie_loc_ghost< dim, T > & operator= (const ie_loc_ghost< dim, T > &ilg)
 copy the ie_loc_ghost More...
 
ie_loc_ghost< dim, T > & operator= (ie_loc_ghost< dim, T > &&ilg)
 copy the ie_loc_ghost More...
 
size_t getNLocalSub ()
 Get the number of local sub-domains. More...
 
size_t getLocalNEGhost (size_t id)
 Get the number of external local ghost box for each sub-domain. More...
 
size_t getLocalNIGhost (size_t id)
 Get the number of internal local ghost box for each sub-domain. More...
 
size_t getLocalIGhostE (size_t i, size_t j)
 For the sub-domain i intersected with a surrounding sub-domain enlarged. Produce a internal ghost box from the prospecive of i and an associated external ghost box from the prospective of j. In order to retrieve the information about the external ghost box we have to use getLocalEGhostBox(x,k). where k is the value returned by getLocalIGhostE(i,j) and x is the value returned by getLocalIGhostSub(i,j) More...
 
const ::Box< dim, T > & getLocalIGhostBox (size_t i, size_t j) const
 Get the j internal local ghost box for the i sub-domain. More...
 
const comb< dim > & getLocalIGhostPos (size_t i, size_t j) const
 Get the j internal local ghost box boundary position for the i sub-domain of the local processor. More...
 
const ::Box< dim, T > & getLocalEGhostBox (size_t i, size_t j) const
 Get the j external local ghost box for the local processor. More...
 
const comb< dim > & getLocalEGhostPos (size_t i, size_t j) const
 Get the j external local ghost box for the local processor. More...
 
size_t getLocalIGhostSub (size_t i, size_t k) const
 Considering that sub-domains has N internal local ghost box identified with the 0 <= k < N that come from the intersection of 2 sub-domains i and j where j is enlarged, given the sub-domain i and the id k of the internal box, it return the id of the other sub-domain that produced the intersection. More...
 
size_t getLocalEGhostSub (size_t i, size_t k) const
 Considering that sub-domains has N external local ghost box identified with the 0 <= k < N that come from the intersection of 2 sub-domains i and j where i is enlarged, given the sub-domain i and the id k of the external box, it return the id of the other sub-domain that produced the intersection. More...
 
bool write (std::string output, size_t p_id) const
 Write the decomposition as VTK file. More...
 
bool check_consistency (size_t n_sub)
 function to check the consistency of the information of the decomposition More...
 
bool is_equal (ie_loc_ghost< dim, T > &ilg)
 Check if the ie_loc_ghosts contain the same information. More...
 
bool is_equal_ng (ie_loc_ghost< dim, T > &ilg)
 Check if the ie_loc_ghosts contain the same information with the exception of the ghost part. More...
 
void reset ()
 Reset the ie_loc_ghost. More...
 
- Public Member Functions inherited from nn_prcs< dim, T >
 nn_prcs (Vcluster &v_cl)
 Constructor require Vcluster.
 
 nn_prcs (const nn_prcs< dim, T > &ilg)
 Constructor from another nn_prcs.
 
 nn_prcs (nn_prcs< dim, T > &&ilg)
 Constructor from temporal ie_loc_ghost.
 
nn_prcs< dim, T > & operator= (const nn_prcs< dim, T > &nnp)
 Copy the object. More...
 
nn_prcs< dim, T > & operator= (nn_prcs< dim, T > &&nnp)
 Copy the object. More...
 
void create (const openfpm::vector< openfpm::vector< long unsigned int > > &box_nn_processor, const openfpm::vector< SpaceBox< dim, T >> &sub_domains)
 Create the list of adjacent processors and the list of adjacent sub-domains. More...
 
size_t getNNProcessors () const
 Get the number of Near processors. More...
 
size_t IDtoProc (size_t id) const
 Return the processor id of the near processor list at place id. More...
 
const openfpm::vector< size_t > & getNearSubdomainsRealId (size_t p_id) const
 Get the real-id of the sub-domains of a near processor. More...
 
const openfpm::vector< ::Box
< dim, T > > & 
getNearSubdomains (size_t p_id) const
 Get the sub-domains of a near processor. More...
 
size_t getNRealSubdomains (size_t p_id) const
 Get the number of real sub-domains of a near processor. More...
 
const openfpm::vector< comb
< dim > > & 
getNearSubdomainsPos (size_t p_id) const
 Get the sub-domains sector position of a near processor. More...
 
size_t getNearProcessor (size_t p_id) const
 Get the near processor id. More...
 
const openfpm::vector< size_t > & getSentSubdomains (size_t p_id) const
 For each near processor it give a vector with the id of the local sub-domain sent to that processor. More...
 
size_t ProctoID (size_t p) const
 Convert the processor rank to the id in the list. More...
 
bool write (std::string output) const
 Write the decomposition as VTK file. More...
 
void applyBC (const Box< dim, T > &domain, const Ghost< dim, T > &ghost, const size_t(&bc)[dim])
 Apply boundary conditions. More...
 
bool is_equal (nn_prcs< dim, T > &np)
 Check if the nn_prcs contain the same information. More...
 
void reset ()
 Reset the nn_prcs structure. More...
 
std::unordered_map< size_t,
N_box< dim, T > > & 
get_nn_processor_subdomains ()
 Used for testing porpose do not use.
 
openfpm::vector< size_t > & get_nn_processors ()
 Used for testing porpose do not use.
 
- Public Member Functions inherited from ie_ghost< dim, T >
 ie_ghost ()
 Default constructor.
 
 ie_ghost (const ie_ghost< dim, T > &ie)
 Copy constructor.
 
 ie_ghost (ie_ghost< dim, T > &&ie)
 Copy constructor.
 
ie_ghost< dim, T > & operator= (ie_ghost< dim, T > &&ie)
 Copy operator.
 
ie_ghost< dim, T > & operator= (const ie_ghost< dim, T > &ie)
 Copy operator.
 
const openfpm::vector< Point
< dim, T > > & 
getShiftVectors ()
 
size_t convertShift (const comb< dim > &cmb)
 
size_t getProcessorNIGhost (size_t id) const
 Get the number of Internal ghost boxes for one processor. More...
 
size_t getProcessorNEGhost (size_t id) const
 Get the number of External ghost boxes for one processor id. More...
 
const ::Box< dim, T > & getProcessorIGhostBox (size_t id, size_t j) const
 Get the j Internal ghost box for one processor. More...
 
const ::Box< dim, T > & getProcessorEGhostBox (size_t id, size_t j) const
 Get the j External ghost box. More...
 
const comb< dim > & getProcessorEGhostPos (size_t id, size_t j) const
 Get the j External ghost box sector. More...
 
const comb< dim > & getProcessorIGhostPos (size_t id, size_t j) const
 Get the ghost box sector of the external ghost box linked with the j internal ghost box. More...
 
size_t getProcessorIGhostId (size_t id, size_t j) const
 Get the j Internal ghost box id. More...
 
size_t getProcessorEGhostId (size_t id, size_t j) const
 Get the j External ghost box id. More...
 
size_t getProcessorIGhostSSub (size_t id, size_t j) const
 Get the sub-domain send-id at witch belong the internal ghost box. More...
 
size_t getProcessorIGhostSub (size_t id, size_t j) const
 Get the local sub-domain at witch belong the internal ghost box. More...
 
size_t getProcessorEGhostSub (size_t id, size_t j) const
 Get the local sub-domain at witch belong the external ghost box. More...
 
size_t getNIGhostBox () const
 Return the total number of the calculated internal ghost boxes. More...
 
const ::Box< dim, T > & getIGhostBox (size_t b_id) const
 Given the internal ghost box id, it return the internal ghost box. More...
 
size_t getIGhostBoxProcessor (size_t b_id) const
 Given the internal ghost box id, it return the near processor at witch belong or the near processor that produced this internal ghost box. More...
 
size_t getNEGhostBox () const
 Get the number of the calculated external ghost boxes. More...
 
inline::Box< dim, T > getEGhostBox (size_t b_id) const
 Given the external ghost box id, it return the external ghost box. More...
 
size_t getEGhostBoxProcessor (size_t b_id) const
 Given the external ghost box id, it return the near processor at witch belong or the near processor that produced this external ghost box. More...
 
auto getInternalIDBoxes (Point< dim, T > &p) -> decltype(geo_cell.getCellIterator(geo_cell.getCell(p)))
 
auto labelPoint (Point< dim, T > &p) -> decltype(geo_cell.getCellIterator(geo_cell.getCell(p)))
 if the point fall into the ghost of some near processor it return the processors id's in which it fall More...
 
template<typename id1 , typename id2 >
const openfpm::vector
< std::pair< size_t, size_t > > 
ghost_processorID_pair (Point< dim, T > &p, const int opt=MULTIPLE)
 Given a position it return if the position belong to any neighborhood processor ghost (Internal ghost) More...
 
template<typename id >
const openfpm::vector< size_t > ghost_processorID (const Point< dim, T > &p, const int opt=MULTIPLE)
 Given a position it return if the position belong to any neighborhood processor ghost (Internal ghost) More...
 
template<typename id1 , typename id2 , typename Mem >
const openfpm::vector
< std::pair< size_t, size_t > > & 
ghost_processorID_pair (const encapc< 1, Point< dim, T >, Mem > &p, const int opt=MULTIPLE)
 Given a position it return if the position belong to any neighborhood processor ghost (Internal ghost) More...
 
template<typename id , typename Mem >
const openfpm::vector< size_t > & ghost_processorID (const encapc< 1, Point< dim, T >, Mem > &p, const int opt=MULTIPLE)
 Given a position it return if the position belong to any neighborhood processor ghost (Internal ghost) More...
 
bool write (std::string output, size_t p_id) const
 write the information about the ghost in vtk format More...
 
bool is_equal (ie_ghost< dim, T > &ig)
 Check if the ie_ghosts contain the same information. More...
 
bool is_equal_ng (ie_ghost< dim, T > &ig)
 Check if the ie_loc_ghosts contain the same information with the exception of the ghost part It is anyway required that the ghost come from the same sub-domains decomposition. More...
 
void reset ()
 Reset the nn_prcs structure. More...
 
- Public Member Functions inherited from domain_nn_calculator_cart< dim >
void setParameters (const Box< dim, long int > &proc_box)
 Set parameters to calculate the cell neighborhood. More...
 
void setNNParameters (openfpm::vector<::Box< dim, size_t >> &loc_box, const grid_key_dx< dim > &shift, const grid_sm< dim, void > &gs)
 Set parameters to calculate the cell neighborhood. More...
 
openfpm::vector< size_t > & getDomainCells ()
 Get the domain Cells. More...
 
openfpm::vector< size_t > & getCRSDomainCells ()
 Get the domain Cells. More...
 
openfpm::vector< subsub_lin
< dim > > & 
getCRSAnomDomainCells ()
 Get the domain anomalous cells. More...
 
void reset ()
 In case you have to recompute the indexes. More...
 

Private Member Functions

void extend_subdomains (const CartDecomposition< dim, T, Memory, Distribution > &dec, const ::Box< dim, T > &ext_dom)
 It copy the sub-domains into another CartesianDecomposition object extending them. More...
 
void extend_fines (const CartDecomposition< dim, T, Memory, Distribution > &dec)
 Extend the fines for the new Cartesian decomposition. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from CartDecomposition< dim, T, Memory, Distribution >
static size_t getDefaultGrid (size_t n_sub)
 The default grid size. More...
 
- Static Public Member Functions inherited from nn_prcs< dim, T >
static bool check_valid (comb< dim > cmb, const size_t(&bc)[dim])
 
- Data Fields inherited from CartDecomposition< dim, T, Memory, Distribution >
friend extended_type
 friend classes
 
- Static Public Attributes inherited from CartDecomposition< dim, T, Memory, Distribution >
static constexpr int dims = dim
 Space dimensions.
 
- Protected Types inherited from CartDecomposition< dim, T, Memory, Distribution >
typedef openfpm::vector
< SpaceBox< dim, T >, Memory,
typename memory_traits_lin
< SpaceBox< dim, T > >::type,
memory_traits_lin,
openfpm::vector_grow_policy_default,
openfpm::vect_isel< SpaceBox
< dim, T > >::value >
::access_key 
acc_key
 
- Protected Member Functions inherited from CartDecomposition< dim, T, Memory, Distribution >
template<typename Memory_bx >
SpaceBox< dim, T > convertDecBoxIntoSubDomain (encapc< 1,::Box< dim, size_t >, Memory_bx > loc_box)
 It convert the box from the domain decomposition into sub-domain. More...
 
- Protected Member Functions inherited from ie_ghost< dim, T >
void generateShiftVectors (const Box< dim, T > &domain, size_t(&bc)[dim])
 Here we generare the shift vectors. More...
 
void Initialize_geo_cell (const Box< dim, T > &domain, const size_t(&div)[dim])
 Initialize the geo cell list structure. More...
 
void create_box_nn_processor_ext (Vcluster &v_cl, Ghost< dim, T > &ghost, openfpm::vector< SpaceBox< dim, T >> &sub_domains, const openfpm::vector< openfpm::vector< long unsigned int > > &box_nn_processor, const nn_prcs< dim, T > &nn_p)
 Create the box_nn_processor_int (bx part) structure. More...
 
void create_box_nn_processor_int (Vcluster &v_cl, Ghost< dim, T > &ghost, openfpm::vector< SpaceBox< dim, T >> &sub_domains, const openfpm::vector< openfpm::vector< long unsigned int > > &box_nn_processor, const nn_prcs< dim, T > &nn_p)
 Create the box_nn_processor_int (nbx part) structure, the geo_cell list and proc_int_box. More...
 
- Protected Attributes inherited from CartDecomposition< dim, T, Memory, Distribution >
bool commCostSet = false
 Indicate the communication weight has been set.
 
openfpm::vector< SpaceBox< dim,
T > > 
sub_domains
 the set of all local sub-domain as vector
 
openfpm::vector
< openfpm::vector< SpaceBox
< dim, T > > > 
sub_domains_global
 the global set of all sub-domains as vector of 'sub_domains' vectors
 
openfpm::vector
< openfpm::vector< long
unsigned int > > 
box_nn_processor
 for each sub-domain, contain the list of the neighborhood processors
 
openfpm::vector< size_t > fine_s
 
grid_sm< dim, void > gr
 Structure that store the cartesian grid information.
 
grid_sm< dim, void > gr_dist
 Structure that store the cartesian grid information.
 
CellDecomposer_sm< dim, T,
shift< dim, T > > 
cd
 
::Box< dim, T > domain
 rectangular domain to decompose
 
spacing [dim]
 Box Spacing.
 
size_t magn [dim]
 
Vclusterv_cl
 Runtime virtual cluster machine.
 
Distribution dist
 Create distribution.
 
::Box< dim, T > bbox
 Processor bounding box.
 
long int ref_cnt
 reference counter of the object in case is shared between object
 
Ghost< dim, T > ghost
 ghost info
 
size_t bc [dim]
 Boundary condition info.
 
::Box< dim, size_t > proc_box
 Processor domain bounding box.
 
openfpm::vector<::Box< dim,
size_t > > 
loc_box
 set of Boxes produced by the decomposition optimizer
 

Constructor & Destructor Documentation

template<unsigned int dim, typename T , typename Memory = HeapMemory, typename Distribution = ParMetisDistribution<dim, T>>
CartDecomposition_ext< dim, T, Memory, Distribution >::CartDecomposition_ext ( Vcluster v_cl)
inline

Cartesian decomposition constructor.

Parameters
v_clVCluster

Definition at line 164 of file CartDecomposition_ext.hpp.

Member Function Documentation

template<unsigned int dim, typename T , typename Memory = HeapMemory, typename Distribution = ParMetisDistribution<dim, T>>
void CartDecomposition_ext< dim, T, Memory, Distribution >::extend_fines ( const CartDecomposition< dim, T, Memory, Distribution > &  dec)
inlineprivate

Extend the fines for the new Cartesian decomposition.

Parameters
decNon-extended decomposition

Definition at line 93 of file CartDecomposition_ext.hpp.

template<unsigned int dim, typename T , typename Memory = HeapMemory, typename Distribution = ParMetisDistribution<dim, T>>
void CartDecomposition_ext< dim, T, Memory, Distribution >::extend_subdomains ( const CartDecomposition< dim, T, Memory, Distribution > &  dec,
const ::Box< dim, T > &  ext_dom 
)
inlineprivate

It copy the sub-domains into another CartesianDecomposition object extending them.

See Also
duplicate (in case of extended domain)
Parameters
decCartesian decomposition object
ext_domExtended domain

Definition at line 54 of file CartDecomposition_ext.hpp.

template<unsigned int dim, typename T , typename Memory = HeapMemory, typename Distribution = ParMetisDistribution<dim, T>>
void CartDecomposition_ext< dim, T, Memory, Distribution >::setParameters ( const CartDecomposition< dim, T, Memory, Distribution > &  dec,
const Ghost< dim, T > &  g,
const ::Box< dim, T > &  ext_domain 
)
inline

It create another object that contain the same decomposition information but with different ghost boxes and an extended domain.

The domain extension is produced extending the boxes at the border like in figure

 *
+--------------^--------^----------^----------+
|              |        |          |          |
|        A     |    E   |     F    |    N     |
|    +-----------------------------------+---->
|    |         |        |          |     |    |
|  A |   A     |        |     F    |     |    |
|    |         |        |          |     |    |
|    |         |    E   +----------+  N  |  N |
<--------------+        |          |     |    |
|    |         |        |          |     |    |
|    |         |        |     G    |     |    |
|    |         |        |          +---------->
|  B |   B     |        +----------+     |    |
|    |         +--------+          |  M  |  M |
|    |         |        |     H    |     |    |
|    |         |        +-----+----+---------->
<--------------+    D   |     |          |    |
|    |         |        |  I  |     L    |  L |
|  C |   C     |        |     |          |    |
|    |         |        |     |          |    |
|    +-----------------------------------+    |
|              |        |     |               |
|        C     |    D   |  I  |     L         |
+--------------v--------v-----v---------------+

 *
 * 
Parameters
decDecomposition
gghost
ext_domainextended domain (MUST be extended)
Returns
a duplicated decomposition with different ghost boxes and an extended domain

Definition at line 213 of file CartDecomposition_ext.hpp.


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