OpenFPM  5.2.0
Project that contain the implementation of distributed structures
vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop > Class Template Reference

Distributed vector. More...

#include <vector_dist.hpp>

+ Inheritance diagram for vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >:

Public Types

typedef vector_dist< dim, St, prop, Decomposition, Memory, layout_base > self
 Self type.
 
typedef St stype
 
typedef prop value_type
 
typedef Decomposition Decomposition_type
 
typedef Memory Memory_type
 
typedef CellList< dim, St, Mem_fast<>, shift< dim, St >, internal_position_vector_type > CellList_type
 
typedef int yes_i_am_vector_dist
 yes I am vector dist
 
typedef std::integral_constant< bool, false > is_it_a_subset
 yes I am vector subset dist
 

Public Member Functions

vector_dist< dim, St, prop, Decomposition, Memory, layout_base > & operator= (const vector_dist< dim, St, prop, Decomposition, Memory, layout_base > &v)
 Operator= for distributed vector. More...
 
vector_dist< dim, St, prop, Decomposition, Memory, layout_base > & operator= (vector_dist< dim, St, prop, Decomposition, Memory, layout_base > &&v)
 Operator= for distributed vector. More...
 
 vector_dist (const vector_dist< dim, St, prop, Decomposition, Memory, layout_base > &v)
 Copy Constructor. More...
 
 vector_dist (vector_dist< dim, St, prop, Decomposition, Memory, layout_base > &&v) noexcept
 Copy constructor. More...
 
 vector_dist (const Decomposition &dec, size_t np)
 Constructor with predefined decomposition. More...
 
 vector_dist (size_t np, Box< dim, St > box, const size_t(&bc)[dim], const Ghost< dim, St > &g, const grid_sm< dim, void > &gdist)
 Constructor of a distributed vector. More...
 
 vector_dist (size_t np, Box< dim, St > box, const size_t(&bc)[dim], const Ghost< dim, St > &g, size_t opt=0, const grid_sm< dim, void > &gdist=grid_sm< dim, void >())
 Constructor of a distributed vector. More...
 
void setReferenceCounterToOne ()
 
void clear ()
 remove all the elements
 
size_t size_local () const
 return the local size of the vector More...
 
size_t size_local_with_ghost () const
 return the local size of the vector More...
 
auto getPos (vect_dist_key_dx vec_key) -> decltype(vPos.template get< 0 >(vec_key.getKey()))
 Get the position of an element. More...
 
auto getPos (vect_dist_key_dx vec_key) const -> decltype(vPos.template get< 0 >(vec_key.getKey()))
 Get the position of an element. More...
 
auto getPos (size_t vec_key) -> decltype(vPos.template get< 0 >(vec_key))
 Get the position of an element. More...
 
auto getPos (size_t vec_key) const -> decltype(vPos.template get< 0 >(vec_key))
 Get the position of an element. More...
 
template<unsigned int id>
auto getProp (vect_dist_key_dx vec_key) -> decltype(vPrp.template get< id >(vec_key.getKey()))
 Get the property of an element. More...
 
template<unsigned int id>
auto getProp (vect_dist_key_dx vec_key) const -> decltype(vPrp.template get< id >(vec_key.getKey()))
 Get the property of an element. More...
 
template<unsigned int id>
auto getProp (size_t vec_key) -> decltype(vPrp.template get< id >(vec_key))
 Get the property of an element. More...
 
template<unsigned int id>
auto getProp (size_t vec_key) const -> decltype(vPrp.template get< id >(vec_key))
 Get the property of an element. More...
 
auto getPosNC (vect_dist_key_dx vec_key) -> decltype(vPos.template get< 0 >(vec_key.getKey()))
 Get the position of an element. More...
 
auto getPosNC (vect_dist_key_dx vec_key) const -> decltype(vPos.template get< 0 >(vec_key.getKey()))
 Get the position of an element. More...
 
auto getPosNC (size_t vec_key) -> decltype(vPos.template get< 0 >(vec_key))
 Get the position of an element. More...
 
auto getPosNC (size_t vec_key) const -> decltype(vPos.template get< 0 >(vec_key))
 Get the position of an element. More...
 
template<unsigned int id>
auto getPropNC (vect_dist_key_dx vec_key) -> decltype(vPrp.template get< id >(vec_key.getKey()))
 Get the property of an element. More...
 
template<unsigned int id>
auto getPropNC (vect_dist_key_dx vec_key) const -> decltype(vPrp.template get< id >(vec_key.getKey()))
 Get the property of an element. More...
 
template<unsigned int id>
auto getPropNC (size_t vec_key) -> decltype(vPrp.template get< id >(vec_key))
 Get the property of an element. More...
 
template<unsigned int id>
auto getPropNC (size_t vec_key) const -> decltype(vPrp.template get< id >(vec_key))
 Get the property of an element. More...
 
auto getPosWrite (vect_dist_key_dx vec_key) -> decltype(vPos.template get< 0 >(vec_key.getKey()))
 Get the position of an element. More...
 
auto getPosRead (vect_dist_key_dx vec_key) const -> decltype(vPos.template get< 0 >(vec_key.getKey()))
 Get the position of an element. More...
 
template<unsigned int id>
auto getPropWrite (vect_dist_key_dx vec_key) -> decltype(vPrp.template get< id >(vec_key.getKey()))
 Get the property of an element. More...
 
template<unsigned int id>
auto getPropRead (vect_dist_key_dx vec_key) const -> decltype(vPrp.template get< id >(vec_key.getKey()))
 Get the property of an element. More...
 
void add ()
 Add local particle. More...
 
void appendLocal ()
 Add at the END of local and ghost particle. More...
 
auto getLastPos () -> decltype(vPos.template get< 0 >(0))
 Get the position of the last element. More...
 
auto getLastPosEnd () -> decltype(vPos.template get< 0 >(0))
 Get the position of the last element after ghost. More...
 
template<unsigned int id>
auto getLastProp () -> decltype(vPrp.template get< id >(0))
 Get the property of the last element. More...
 
auto getLastPosRead () -> decltype(vPos.template get< 0 >(0))
 Get the position of the last element. More...
 
template<unsigned int id>
auto getLastPropRead () -> decltype(vPrp.template get< id >(0))
 Get the property of the last element. More...
 
auto getLastPosWrite () -> decltype(vPos.template get< 0 >(0))
 Get the position of the last element. More...
 
template<unsigned int id>
auto getLastPropWrite () -> decltype(vPrp.template get< id >(0))
 Get the property of the last element. More...
 
template<typename CellList_type = CellList<dim, St, Mem_fast<>, shift<dim, St>,internal_position_vector_type >>
CellList_type getCellListSym (St r_cut, size_t opt=CL_LINEAR_CELL_KEYS)
 Construct a cell list symmetric based on a cut-off radius. More...
 
template<typename CellList_type = CellList<dim, St, Mem_fast<>, shift<dim, St>,internal_position_vector_type >>
CellList_type getCellListSymLocal (St r_cut, size_t opt=CL_LINEAR_CELL_KEYS)
 Construct a local symmetric cell list based on a cut-off radius. More...
 
template<typename CellList_type = CellList<dim, St, Mem_fast<>, shift<dim, St>, decltype(vPos) >>
CellList_type getCellList (St r_cut, size_t opt=CL_NON_SYMMETRIC|CL_LINEAR_CELL_KEYS, bool no_se3=false, float ghostEnlargeFactor=1.013)
 Construct a cell list starting from the stored particles. More...
 
template<typename CellL = CellList<dim, St, Mem_fast<>, shift<dim, St> >>
CellL getCellListSym (const size_t(&div)[dim], const size_t(&pad)[dim], size_t opt=CL_LINEAR_CELL_KEYS)
 Construct a symmetric cell list based on a number of divisions and padding. More...
 
template<typename CellL = CellList<dim, St, Mem_fast<>, shift<dim, St> >>
CellL getCellList_hilb (St r_cut, size_t opt=CL_NON_SYMMETRIC)
 Construct an hilbert cell list starting from the stored particles. More...
 
template<unsigned int ... prp, typename CellL >
void updateCellList (CellL &cellList, bool no_se3=false)
 Update a cell list using the stored particles. More...
 
template<typename VerletList_type = VerletList<dim,St,VL_SYMMETRIC,Mem_fast<>,shift<dim,St>,decltype(vPos)>>
VerletList_type getVerletSym (St r_cut)
 for each particle get the symmetric verlet list More...
 
template<typename VerletList_type = VerletList<dim,St,VL_CRS_SYMMETRIC,Mem_fast<>,shift<dim,St>,decltype(vPos)>>
VerletList_type getVerletCrs (St r_cut)
 for each particle get the symmetric verlet list More...
 
template<typename VerletList_type = VerletList<dim,St,VL_NON_SYMMETRIC|VL_ADAPTIVE_RCUT,Mem_fast<>,shift<dim,St>,decltype(vPos)>>
VerletList_type getVerletAdaptRCut ()
 Get Verlet list with unique cut-off radius for every particle. More...
 
template<unsigned int optVerlet = VL_NON_SYMMETRIC, typename VerletList_type = VerletList<dim,St,optVerlet,Mem_fast<>,shift<dim,St>,decltype(vPos)>>
VerletList_type getVerlet (St r_cut, size_t neighborMaxNum=0)
 for each particle get the verlet list More...
 
template<unsigned int opt, typename Mem_type >
void updateVerlet (VerletList< dim, St, opt, Mem_type, shift< dim, St > > &verletList, St r_cut)
 for each particle get the verlet list More...
 
template<unsigned int opt, typename Mem_type >
void updateVerletAdaptRCut (VerletList< dim, St, opt, Mem_type, shift< dim, St > > &verletList)
 Update non-symmetric adaptive r-cut Verlet list. More...
 
template<typename CellL = CellList<dim,St,Mem_bal<>,shift<dim,St> >>
void reorder (int32_t m, reorder_opt opt=reorder_opt::HILBERT)
 Construct a cell list starting from the stored particles and reorder a vector according to the Hilberts curve. More...
 
template<typename CellL = CellList<dim,St,Mem_bal<>,shift<dim,St> >>
void reorder (int32_t m, const Ghost< dim, St > &enlarge, reorder_opt opt=reorder_opt::HILBERT)
 Construct a cell list starting from the stored particles and reorder a vector according to the Hilberts curve. More...
 
template<typename CellL = CellList<dim,St,Mem_bal<>,shift<dim,St> >>
void reorder_rcut (St r_cut)
 Construct a cell list starting from the stored particles and reorder a vector according to the Hilberts curve. More...
 
size_t init_size_accum (size_t np)
 It return the number of particles contained by the previous processors. More...
 
vector_dist_iterator getIterator ()
 Get an iterator that traverse domain and ghost particles. More...
 
vector_dist_iterator getIterator (size_t start, size_t stop)
 Get an iterator that traverse domain and ghost particles. More...
 
grid_dist_id_iterator_dec< DecompositiongetGridIterator (const size_t(&sz)[dim])
 
vector_dist_iterator getGhostIterator () const
 Get the iterator across the position of the ghost particles. More...
 
vector_dist_iterator getGhostIterator_no_se3 () const
 Get the iterator across the position of the ghost particles. More...
 
template<typename CellList >
ParticleIt_Cells< dim, CellListgetDomainIteratorCells (CellList &cellList)
 Get an iterator that traverse the particles in the domain using a cell list. More...
 
vector_dist_iterator getDomainIterator () const
 Get an iterator that traverse the particles in the domain. More...
 
auto getDomainIteratorDevice (size_t n_thr=default_kernel_wg_threads_) const -> decltype(this->getDomainIterator())
 Get an iterator that traverse the particles in the domain. More...
 
vector_dist_iterator getDomainIterator_no_se3 () const
 Get an iterator that traverse the particles in the domain. More...
 
vector_dist_iterator getDomainAndGhostIterator () const
 Get an iterator that traverse the particles in the domain. More...
 
vector_dist_iterator getDomainAndGhostIterator_no_se3 () const
 Get an iterator that traverse the particles in the domain. More...
 
DecompositiongetDecomposition ()
 Get the decomposition. More...
 
const DecompositiongetDecomposition () const
 Get the decomposition. More...
 
template<unsigned int ... prp>
void map_list (size_t opt=NONE)
 It move all the particles that does not belong to the local processor to the respective processor. More...
 
template<typename obp = KillParticle>
void map (size_t opt=NONE)
 It move all the particles that does not belong to the local processor to the respective processor. More...
 
void ghost_get_subset ()
 Stub does not do anything.
 
template<int ... prp>
void ghost_get (size_t opt=WITH_POSITION)
 It synchronize the properties and position of the ghost particles. More...
 
template<int ... prp>
void Ighost_get (size_t opt=WITH_POSITION)
 It synchronize the properties and position of the ghost particles. More...
 
template<int ... prp>
void ghost_wait (size_t opt=WITH_POSITION)
 It synchronize the properties and position of the ghost particles. More...
 
template<template< typename, typename > class op, int ... prp>
void ghost_put (size_t opt_=NONE)
 It synchronize the properties and position of the ghost particles. More...
 
void remove (std::set< size_t > &keys)
 Remove a set of elements from the distributed vector. More...
 
void remove (openfpm::vector< size_t > &keys, size_t start=0)
 Remove a set of elements from the distributed vector. More...
 
void remove (openfpm::vector< aggregate< int >> &keys, size_t start=0)
 Remove a set of elements from the distributed vector. More...
 
void remove (size_t key)
 Remove one element from the distributed vector. More...
 
template<typename Model = ModelLin>
void addComputationCosts (const self &vd, Model md=Model())
 Add the computation cost on the decomposition coming from the particles. More...
 
template<typename Model = ModelLin>
void finalizeComputationCosts (Model md=Model(), size_t ts=1)
 Add the computation cost on the decomposition coming from the particles. More...
 
void initializeComputationCosts ()
 Initialize the computational cost.
 
template<typename Model = ModelLin>
void addComputationCosts (Model md=Model(), size_t ts=1)
 Add the computation cost on the decomposition coming from the particles. More...
 
void save (const std::string &filename) const
 Save the distributed vector on HDF5 file. More...
 
void load (const std::string &filename)
 Load the distributed vector from an HDF5 file. More...
 
void setCapacity (unsigned int ns)
 Reserve space for the internal vectors. More...
 
bool write (std::string out, int opt=VTK_WRITER)
 Output particle position and properties. More...
 
bool write (std::string out, std::string meta_info, int opt=VTK_WRITER)
 Output particle position and properties. More...
 
void deleteGhost ()
 Delete the particles on the ghost.
 
void resize (size_t rs)
 Resize the vector (locally) More...
 
void discardLocalAppend (size_t rs)
 Resize the vector at the end of the ghost (locally) More...
 
bool write_frame (std::string out, size_t iteration, int opt=VTK_WRITER)
 Output particle position and properties. More...
 
bool write_frame (std::string out, size_t iteration, std::string meta_info, int opt=VTK_WRITER)
 Output particle position and properties. More...
 
bool write_frame (std::string out, size_t iteration, double time, int opt=VTK_WRITER)
 Output particle position and properties and add a time stamp to pvtp. More...
 
void getCellListParams (St r_cut, size_t(&div)[dim], Box< dim, St > &box, Ghost< dim, St > enlarge=Ghost< dim, St >(0.0))
 Get the Celllist parameters. More...
 
Vcluster< Memory > & getVC ()
 Get the Virtual Cluster machine. More...
 
const vector_dist_pos & getPosVector () const
 return the position vector of all the particles More...
 
vector_dist_pos & getPosVector ()
 return the position vector of all the particles More...
 
const vector_dist_prop & getPropVector () const
 return the property vector of all the particles More...
 
vector_dist_prop & getPropVector ()
 return the property vector of all the particles More...
 
size_t accum ()
 It return the sum of the particles in the previous processors. More...
 
template<typename cli >
ParticleItCRS_Cells< dim, cli, decltype(vPos)> getParticleIteratorCRS_Cell (cli &cellList)
 Get a special particle iterator able to iterate across particles using symmetric crossing scheme. More...
 
void setPropNames (const openfpm::vector< std::string > &names)
 Set the properties names. More...
 
openfpm::vector< std::string > & getPropNames ()
 Get the properties names. More...
 
template<typename VerletList_type >
openfpm::vector_key_iterator_seq< typename VerletList_type::Mem_type_type::local_index_type > getParticleIteratorCRS (VerletList_type &cellList)
 Get a special particle iterator able to iterate across particles using symmetric crossing scheme. More...
 
template<typename Celllist >
grid_key_dx< dim > getCRSStart (Celllist &cellList)
 Return from which cell we have to start in case of CRS interation scheme. More...
 
template<typename Celllist >
grid_key_dx< dim > getCRSStop (Celllist &cellList)
 Return from which cell we have to stop in case of CRS interation scheme. More...
 
bool isSubset () const
 Indicate that this class is not a subset. More...
 
template<unsigned int ... prp>
void deviceToHostProp ()
 Move the memory from the device to host memory. More...
 
void deviceToHostPos ()
 Move the memory from the device to host memory. More...
 
template<unsigned int ... prp>
void hostToDeviceProp ()
 Move the memory from the device to host memory. More...
 
void hostToDevicePos ()
 Move the memory from the device to host memory. More...
 
- Public Member Functions inherited from vector_dist_comm< dim, St, prop, CartDecomposition< dim, St >, HeapMemory, memory_traits_lin >
 vector_dist_comm (const vector_dist_comm< dim, St, prop, CartDecomposition< dim, St >, HeapMemory, memory_traits_lin > &v)
 Copy Constructor. More...
 
 vector_dist_comm (const CartDecomposition< dim, St > &dec)
 Constructor. More...
 
 vector_dist_comm (CartDecomposition< dim, St > &&dec)
 Constructor. More...
 
 vector_dist_comm ()
 Constructor.
 
 ~vector_dist_comm ()
 Destructor. More...
 
size_t getDecompositionGranularity ()
 Get the number of minimum sub-domain per processor. More...
 
void setDecompositionGranularity (size_t n_sub)
 Set the minimum number of sub-domain per processor. More...
 
void init_decomposition (Box< dim, St > &box, const size_t(&bc)[dim], const Ghost< dim, St > &g, size_t opt, const grid_sm< dim, void > &gdist)
 Initialize the decomposition. More...
 
void init_decomposition_gr_cell (Box< dim, St > &box, const size_t(&bc)[dim], const Ghost< dim, St > &g, size_t opt, const grid_sm< dim, void > &gdist)
 Initialize the decomposition. More...
 
void ghost_get_ (openfpm::vector< Point< dim, St >, HeapMemory, memory_traits_lin > &v_pos, openfpm::vector< prop, HeapMemory, memory_traits_lin > &v_prp, size_t &ghostMarker, size_t opt=WITH_POSITION)
 It synchronize the properties and position of the ghost particles. More...
 
void ghost_wait_ (openfpm::vector< Point< dim, St >, HeapMemory, memory_traits_lin > &v_pos, openfpm::vector< prop, HeapMemory, memory_traits_lin > &v_prp, size_t &ghostMarker, size_t opt=WITH_POSITION)
 It synchronize the properties and position of the ghost particles. More...
 
void map_list_ (openfpm::vector< Point< dim, St >> &v_pos, openfpm::vector< prop > &v_prp, size_t &ghostMarker, size_t opt)
 It move all the particles that does not belong to the local processor to the respective processor. More...
 
void map_ (openfpm::vector< Point< dim, St >, HeapMemory, memory_traits_lin > &v_pos, openfpm::vector< prop, HeapMemory, memory_traits_lin > &v_prp, size_t &ghostMarker, size_t opt)
 It move all the particles that does not belong to the local processor to the respective processor. More...
 
void setDecomposition (CartDecomposition< dim, St > &dec2)
 Set the decomposition. More...
 
CartDecomposition< dim, St > & getDecomposition ()
 Get the decomposition. More...
 
const CartDecomposition< dim, St > & getDecomposition () const
 Get the decomposition. More...
 
vector_dist_comm< dim, St, prop, CartDecomposition< dim, St >, HeapMemory, memory_traits_lin > & operator= (const vector_dist_comm< dim, St, prop, CartDecomposition< dim, St >, HeapMemory, memory_traits_lin > &vc)
 Copy a vector. More...
 
vector_dist_comm< dim, St, prop, CartDecomposition< dim, St >, HeapMemory, memory_traits_lin > & operator= (vector_dist_comm< dim, St, prop, CartDecomposition< dim, St >, HeapMemory, memory_traits_lin > &&vc)
 Copy a vector. More...
 
void ghost_put_ (openfpm::vector< Point< dim, St >, HeapMemory, memory_traits_lin > &v_pos, openfpm::vector< prop, HeapMemory, memory_traits_lin > &v_prp, size_t &ghostMarker, size_t opt)
 Ghost put. More...
 

Data Fields

decltype(vPos) typedef internal_position_vector_type
 

Static Public Attributes

static const unsigned int dims = dim
 template parameters typedefs
 

Private Member Functions

void init_structures (size_t np)
 Initialize the structures. More...
 
void check_parameters (Box< dim, St > &box)
 Check if the parameters describe a valid vector. In case it does not report an error. More...
 
void check_ghost_compatible_rcut (St r_cut)
 It check that the r_cut is not bugger than the ghost. More...
 
template<typename CellL , typename sfc_it >
void reorder_sfc (openfpm::vector< Point< dim, St >> &v_pos_dest, openfpm::vector< prop > &v_prp_dest, sfc_it &h_it, CellL &cellList)
 Reorder based on hilbert space filling curve. More...
 
- Private Member Functions inherited from vector_dist_ker_list< int >
void add (int &v)
 Add a new vector_dist_kernel to track. More...
 
void update (const int &v)
 Update the addresses of all vector_dist_kernels around. More...
 
void remove (int &v)
 Remove one vector_dist_kernels entry. More...
 
size_t n_entry ()
 Return the number of entries. More...
 
bool check (const int &v)
 Check that all the entries are aligned to the latest vector_dist_ker_type. More...
 

Private Attributes

size_t ghostMarker = 0
 Ghost marker, all the particle with id > ghostMarker are ghost all with ghostMarker < are real particle.
 
vector_dist_pos vPos
 
vector_dist_pos vPosReordered
 
vector_dist_prop vPrp
 
vector_dist_prop vPrpReordered
 
size_t opt = 0
 option used to create this vector
 
openfpm::vector< std::string > prp_names
 Name of the properties.
 

Detailed Description

template<unsigned int dim, typename St, typename prop, typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
class vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >

Distributed vector.

This class represent a distributed vector, the distribution of the structure is based on the positional information of the elements the vector store

Create a vector of random elements on each processor 2D

Box<2,float> box({0.0,0.0},{1.0,1.0});
// Boundary conditions
size_t bc[2]={NON_PERIODIC,NON_PERIODIC};
auto it = vd.getIterator();
while (it.isNext())
{
auto key = it.get();
vd.getPos(key)[0] = ud(eg);
vd.getPos(key)[1] = ud(eg);
++it;
}
vd.map();
This class represent an N-dimensional box.
Definition: Box.hpp:60
Definition: Ghost.hpp:40
Distributed vector.

Create a vector of random elements on each processor 3D

Box<3,float> box({0.0,0.0,0.0},{1.0,1.0,1.0});
// Boundary conditions
size_t bc[3]={NON_PERIODIC,NON_PERIODIC,NON_PERIODIC};
auto it = vd.getIterator();
while (it.isNext())
{
auto key = it.get();
vd.getPos(key)[0] = ud(eg);
vd.getPos(key)[1] = ud(eg);
vd.getPos(key)[2] = ud(eg);
++it;
}
vd.map();

Create a vector of elements distributed on a grid like way

size_t g_div[]= {sz,sz};
// number of particles
size_t np = sz * sz;
// Calculate the number of elements this processor is going to obtain
size_t p_np = np / v_cl.getProcessingUnits();
// Get non divisible part
size_t r = np % v_cl.getProcessingUnits();
// Get the offset
size_t offset = v_cl.getProcessUnitID() * p_np + std::min(v_cl.getProcessUnitID(),r);
// Distribute the remain elements
p_np++;
// Create a grid info
grid_sm<2,void> g_info(g_div);
// Calculate the grid spacing
Point<2,float> spacing = box.getP2() - box.getP1();
spacing = spacing / g_div;
// middle spacing
Point<2,float> m_spacing = spacing / 2.0;
// set the ghost based on the radius cut off (make just a little bit smaller than the spacing)
Ghost<2,float> g(spacing.get(0) - spacing .get(0) * 0.0001);
// Boundary conditions
size_t bc[2]={NON_PERIODIC,NON_PERIODIC};
// Vector of particles
vector vd(g_info.size(),box,bc,g);
// size_t
size_t cobj = 0;
grid_key_dx_iterator_sp<2> it(g_info,offset,offset+p_np-1);
auto v_it = vd.getIterator();
while (v_it.isNext() && it.isNext())
{
auto key = it.get();
auto key_v = v_it.get();
// set the particle position
vd.getPos(key_v)[0] = key.get(0) * spacing[0] + m_spacing[0] + box.getLow(0);
vd.getPos(key_v)[1] = key.get(1) * spacing[1] + m_spacing[1] + box.getLow(1);
cobj++;
++v_it;
++it;
}
This class implement the point shape in an N-dimensional space.
Definition: Point.hpp:28
__device__ __host__ const T & get(unsigned int i) const
Get coordinate.
Definition: Point.hpp:172
size_t getProcessUnitID()
Get the process unit id.
size_t getProcessingUnits()
Get the total number of processors.
Declaration grid_sm.
Definition: grid_sm.hpp:167

Redistribute the particles and sync the ghost properties

// redistribute the particles according to the decomposition
vd.map();
auto v_it2 = vd.getIterator();
while (v_it2.isNext())
{
auto key = v_it2.get();
// fill with the processor ID where these particle live
vd.template getProp<p::s>(key) = vd.getPos(key)[0] + vd.getPos(key)[1] * 16.0f;
vd.template getProp<p::v>(key)[0] = v_cl.getProcessUnitID();
vd.template getProp<p::v>(key)[1] = v_cl.getProcessUnitID();
vd.template getProp<p::v>(key)[2] = v_cl.getProcessUnitID();
++v_it2;
}
// do a ghost get
vd.template ghost_get<p::s,p::v>();

Create a gpu distributed vector [St = float or double]

Fill a GPU vector_dist on CPU and move the information to GPU and redistribute [St = float or double]

srand(vCluster.rank()*10000);
auto it = vecDist.getDomainIterator();
while (it.isNext())
{
auto p = it.get();
vecDist.getPos(p)[0] = (St)rand() / (float)RAND_MAX;
vecDist.getPos(p)[1] = (St)rand() / (float)RAND_MAX;
vecDist.getPos(p)[2] = (St)rand() / (float)RAND_MAX;
vecDist.template getProp<0>(p) = vecDist.getPos(p)[0] + vecDist.getPos(p)[1] + vecDist.getPos(p)[2];
vecDist.template getProp<1>(p)[0] = vecDist.getPos(p)[0];
vecDist.template getProp<1>(p)[1] = vecDist.getPos(p)[1];
vecDist.template getProp<1>(p)[2] = vecDist.getPos(p)[2];
vecDist.template getProp<2>(p)[0] = vecDist.getPos(p)[0] + vecDist.getPos(p)[1];
vecDist.template getProp<2>(p)[1] = vecDist.getPos(p)[0] + vecDist.getPos(p)[2];
vecDist.template getProp<2>(p)[2] = vecDist.getPos(p)[1] + vecDist.getPos(p)[2];
++it;
}
// move on device
vecDist.hostToDevicePos();
vecDist.template hostToDeviceProp<0,1,2>();
// Ok we redistribute the particles (GPU based)
vecDist.map(RUN_ON_DEVICE);

Fill the ghost on GPU

vecDist.template ghost_get<0,1,2>(RUN_ON_DEVICE);
Template Parameters
dimDimensionality of the space where the elements lives
Sttype of space float, double ...
propproperties the vector element store in OpenFPM data structure format
DecompositionDecomposition strategy to use CartDecomposition ...
MemoryMemory pool where store the information HeapMemory ...
Memorylayout

Definition at line 170 of file vector_dist.hpp.

Constructor & Destructor Documentation

◆ vector_dist() [1/5]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::vector_dist ( const vector_dist< dim, St, prop, Decomposition, Memory, layout_base > &  v)
inline

Copy Constructor.

Parameters
vvector to copy

Definition at line 408 of file vector_dist.hpp.

◆ vector_dist() [2/5]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::vector_dist ( vector_dist< dim, St, prop, Decomposition, Memory, layout_base > &&  v)
inlinenoexcept

Copy constructor.

Parameters
vvector to copy

Definition at line 423 of file vector_dist.hpp.

◆ vector_dist() [3/5]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::vector_dist ( const Decomposition dec,
size_t  np 
)
inline

Constructor with predefined decomposition.

Parameters
decis the decomposition
npnumber of particles

Definition at line 442 of file vector_dist.hpp.

◆ vector_dist() [4/5]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::vector_dist ( size_t  np,
Box< dim, St >  box,
const size_t(&)  bc[dim],
const Ghost< dim, St > &  g,
const grid_sm< dim, void > &  gdist 
)
inline

Constructor of a distributed vector.

Parameters
npnumber of elements
boxdomain where the vector of elements live
bcboundary conditions
gGhost margins
opt[Optional] additional options. BIND_DEC_TO_GHOST Bind the decomposition to be multiple of the ghost size. This is required if we want to use symmetric to eliminate ghost communications.
gdist[Optional] override the default distribution grid

Definition at line 468 of file vector_dist.hpp.

◆ vector_dist() [5/5]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::vector_dist ( size_t  np,
Box< dim, St >  box,
const size_t(&)  bc[dim],
const Ghost< dim, St > &  g,
size_t  opt = 0,
const grid_sm< dim, void > &  gdist = grid_sm<dim,void>() 
)
inline

Constructor of a distributed vector.

Parameters
npnumber of elements
boxdomain where the vector of elements live
bcboundary conditions
gGhost margins
opt[Optional] additional options. BIND_DEC_TO_GHOST Bind the decomposition to be multiple of the ghost size. This is required if we want to use symmetric to eliminate ghost communications.
gdist[Optional] override the default distribution grid

Definition at line 498 of file vector_dist.hpp.

Member Function Documentation

◆ accum()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
size_t vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::accum ( )
inline

It return the sum of the particles in the previous processors.

Returns
the particles number

Definition at line 2806 of file vector_dist.hpp.

◆ add()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::add ( )
inline

Add local particle.

It add a local particle, with "local" we mean in this processor the particle can be also created out of the processor domain, in this case a call to map is required. Added particles are always created at the end and can be accessed with getLastPos and getLastProp

Definition at line 923 of file vector_dist.hpp.

◆ addComputationCosts() [1/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename Model = ModelLin>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::addComputationCosts ( const self vd,
Model  md = Model() 
)
inline

Add the computation cost on the decomposition coming from the particles.

Parameters
mdModel to use
vdexternal vector to add for the computational cost

Definition at line 2381 of file vector_dist.hpp.

◆ addComputationCosts() [2/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename Model = ModelLin>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::addComputationCosts ( Model  md = Model(),
size_t  ts = 1 
)
inline

Add the computation cost on the decomposition coming from the particles.

Parameters
mdModel to use
tsIt is an optional parameter approximately should be the number of ghost get between two rebalancing at first decomposition this number can be ignored (default = 1) because not used

Definition at line 2445 of file vector_dist.hpp.

◆ appendLocal()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::appendLocal ( )
inline

Add at the END of local and ghost particle.

It add a local particle at the end of local and ghost, with "local" we mean in this processor the particle can be also created out of the processor domain, in this case a call to map is required. Added particles are always created at the end and can be accessed with getLastPos and getLastProp

Definition at line 946 of file vector_dist.hpp.

◆ check_ghost_compatible_rcut()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::check_ghost_compatible_rcut ( St  r_cut)
inlineprivate

It check that the r_cut is not bugger than the ghost.

Parameters
r_cutcut-off radius

Definition at line 278 of file vector_dist.hpp.

◆ check_parameters()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::check_parameters ( Box< dim, St > &  box)
inlineprivate

Check if the parameters describe a valid vector. In case it does not report an error.

Parameters
boxBox to check

Definition at line 262 of file vector_dist.hpp.

◆ deviceToHostPos()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::deviceToHostPos ( )
inline

Move the memory from the device to host memory.

Template Parameters
propertyto move use POS_PROP for position property

Definition at line 3093 of file vector_dist.hpp.

◆ deviceToHostProp()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int ... prp>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::deviceToHostProp ( )
inline

Move the memory from the device to host memory.

Template Parameters
propertyto move use POS_PROP for position property

Definition at line 3085 of file vector_dist.hpp.

◆ discardLocalAppend()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::discardLocalAppend ( size_t  rs)
inline

Resize the vector at the end of the ghost (locally)

Warning
It doesn't delete the ghosts
Parameters
rs

Definition at line 2593 of file vector_dist.hpp.

◆ finalizeComputationCosts()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename Model = ModelLin>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::finalizeComputationCosts ( Model  md = Model(),
size_t  ts = 1 
)
inline

Add the computation cost on the decomposition coming from the particles.

Parameters
mdModel to use
tsIt is an optional parameter approximately should be the number of ghost get between two rebalancing at first decomposition this number can be ignored (default = 1) because not used

Definition at line 2410 of file vector_dist.hpp.

◆ getCellList()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename CellList_type = CellList<dim, St, Mem_fast<>, shift<dim, St>, decltype(vPos) >>
CellList_type vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getCellList ( St  r_cut,
size_t  opt = CL_NON_SYMMETRIC | CL_LINEAR_CELL_KEYS,
bool  no_se3 = false,
float  ghostEnlargeFactor = 1.013 
)
inline

Construct a cell list starting from the stored particles.

Template Parameters
CellLCellList type to construct
Parameters
r_cutinteration radius, or size of each cell
no_se3avoid SE_CLASS3 checking
Returns
the Cell list

Definition at line 1094 of file vector_dist.hpp.

◆ getCellList_hilb()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename CellL = CellList<dim, St, Mem_fast<>, shift<dim, St> >>
CellL vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getCellList_hilb ( St  r_cut,
size_t  opt = CL_NON_SYMMETRIC 
)
inline

Construct an hilbert cell list starting from the stored particles.

Template Parameters
CellLCellList type to construct
Parameters
r_cutinteration radius, or size of each cell
Returns
the Cell list

Definition at line 1274 of file vector_dist.hpp.

◆ getCellListParams()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getCellListParams ( St  r_cut,
size_t(&)  div[dim],
Box< dim, St > &  box,
Ghost< dim, St >  enlarge = Ghost<dim,St>(0.0) 
)
inline

Get the Celllist parameters.

Parameters
r_cutspacing of the cell-list
divdivision required for the cell-list
boxwhere the Cell list must be defined (In general Processor domain + Ghost)
enlargeOptionally a request to make the space a littler bit larger than Processor domain + Ghost keeping the cell list consistent with the requests

Definition at line 2732 of file vector_dist.hpp.

◆ getCellListSym() [1/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename CellL = CellList<dim, St, Mem_fast<>, shift<dim, St> >>
CellL vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getCellListSym ( const size_t(&)  div[dim],
const size_t(&)  pad[dim],
size_t  opt = CL_LINEAR_CELL_KEYS 
)
inline

Construct a symmetric cell list based on a number of divisions and padding.

Template Parameters
CellLCellList type to construct
Parameters
divnumber of cells per dimension
numberof padding layers per dimension
Returns
the Cell list

Definition at line 1173 of file vector_dist.hpp.

◆ getCellListSym() [2/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename CellList_type = CellList<dim, St, Mem_fast<>, shift<dim, St>,internal_position_vector_type >>
CellList_type vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getCellListSym ( St  r_cut,
size_t  opt = CL_LINEAR_CELL_KEYS 
)
inline

Construct a cell list symmetric based on a cut-off radius.

Template Parameters
CellList_typeCellList type to construct
Parameters
r_cutinteration radius, or size of each cell
Returns
the Cell list

Definition at line 1063 of file vector_dist.hpp.

◆ getCellListSymLocal()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename CellList_type = CellList<dim, St, Mem_fast<>, shift<dim, St>,internal_position_vector_type >>
CellList_type vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getCellListSymLocal ( St  r_cut,
size_t  opt = CL_LINEAR_CELL_KEYS 
)
inline

Construct a local symmetric cell list based on a cut-off radius.

Template Parameters
CellList_typeCellList type to construct
Parameters
r_cutinteration radius, or size of each cell
Returns
the Cell list

Definition at line 1078 of file vector_dist.hpp.

◆ getCRSStart()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename Celllist >
grid_key_dx<dim> vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getCRSStart ( Celllist &  cellList)
inline

Return from which cell we have to start in case of CRS interation scheme.

Parameters
cellListcell-list
Returns
The starting cell point

Definition at line 2920 of file vector_dist.hpp.

◆ getCRSStop()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename Celllist >
grid_key_dx<dim> vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getCRSStop ( Celllist &  cellList)
inline

Return from which cell we have to stop in case of CRS interation scheme.

Parameters
cellListcell-list
Returns
The stop cell point

Definition at line 2933 of file vector_dist.hpp.

◆ getDecomposition() [1/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
Decomposition& vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getDecomposition ( )
inline

Get the decomposition.

Returns

Definition at line 2101 of file vector_dist.hpp.

◆ getDecomposition() [2/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
const Decomposition& vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getDecomposition ( ) const
inline

Get the decomposition.

Returns

Definition at line 2111 of file vector_dist.hpp.

◆ getDomainAndGhostIterator()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_iterator vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getDomainAndGhostIterator ( ) const
inline

Get an iterator that traverse the particles in the domain.

Returns
an iterator

Definition at line 2077 of file vector_dist.hpp.

◆ getDomainAndGhostIterator_no_se3()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_iterator vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getDomainAndGhostIterator_no_se3 ( ) const
inline

Get an iterator that traverse the particles in the domain.

Returns
an iterator

Definition at line 2091 of file vector_dist.hpp.

◆ getDomainIterator()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_iterator vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getDomainIterator ( ) const
inline

Get an iterator that traverse the particles in the domain.

Returns
an iterator

Definition at line 1942 of file vector_dist.hpp.

◆ getDomainIterator_no_se3()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_iterator vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getDomainIterator_no_se3 ( ) const
inline

Get an iterator that traverse the particles in the domain.

Returns
an iterator

Definition at line 2067 of file vector_dist.hpp.

◆ getDomainIteratorCells()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename CellList >
ParticleIt_Cells<dim,CellList> vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getDomainIteratorCells ( CellList cellList)
inline

Get an iterator that traverse the particles in the domain using a cell list.

Parameters
cellListCell-list
Returns
an iterator over the particles

Definition at line 1917 of file vector_dist.hpp.

◆ getDomainIteratorDevice()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getDomainIteratorDevice ( size_t  n_thr = default_kernel_wg_threads_) const -> decltype(this->getDomainIterator())
inline

Get an iterator that traverse the particles in the domain.

Returns
an iterator

Definition at line 2054 of file vector_dist.hpp.

◆ getGhostIterator()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_iterator vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getGhostIterator ( ) const
inline

Get the iterator across the position of the ghost particles.

Returns
an iterator

Definition at line 1889 of file vector_dist.hpp.

◆ getGhostIterator_no_se3()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_iterator vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getGhostIterator_no_se3 ( ) const
inline

Get the iterator across the position of the ghost particles.

Returns
an iterator

Definition at line 1903 of file vector_dist.hpp.

◆ getGridIterator()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
grid_dist_id_iterator_dec<Decomposition> vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getGridIterator ( const size_t(&)  sz[dim])
inline

/brief Get a grid Iterator

Usefull function to place particles on a grid or grid-like (grid + noise)

Parameters
szsize of the grid
Returns
a Grid iterator

Definition at line 1870 of file vector_dist.hpp.

◆ getIterator() [1/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_iterator vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getIterator ( )
inline

Get an iterator that traverse domain and ghost particles.

Returns
an iterator

Definition at line 1837 of file vector_dist.hpp.

◆ getIterator() [2/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_iterator vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getIterator ( size_t  start,
size_t  stop 
)
inline

Get an iterator that traverse domain and ghost particles.

Parameters
startparticle
stopparticle
Returns
an iterator

Definition at line 1853 of file vector_dist.hpp.

◆ getLastPos()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getLastPos ( ) -> decltype(vPos.template get<0>(0))
inline

Get the position of the last element.

Returns
the position of the element in space

Definition at line 958 of file vector_dist.hpp.

◆ getLastPosEnd()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getLastPosEnd ( ) -> decltype(vPos.template get<0>(0))
inline

Get the position of the last element after ghost.

Returns
the position of the element in space

Definition at line 969 of file vector_dist.hpp.

◆ getLastPosRead()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getLastPosRead ( ) -> decltype(vPos.template get<0>(0))
inline

Get the position of the last element.

Returns
the position of the element in space

Definition at line 995 of file vector_dist.hpp.

◆ getLastPosWrite()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getLastPosWrite ( ) -> decltype(vPos.template get<0>(0))
inline

Get the position of the last element.

Returns
the position of the element in space

Definition at line 1026 of file vector_dist.hpp.

◆ getLastProp()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getLastProp ( ) -> decltype(vPrp.template get<id>(0))
inline

Get the property of the last element.

Template Parameters
idproperty id
Returns
return the selected property of the vector element

Definition at line 981 of file vector_dist.hpp.

◆ getLastPropRead()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getLastPropRead ( ) -> decltype(vPrp.template get<id>(0))
inline

Get the property of the last element.

Template Parameters
idproperty id
Returns
return the selected property of the vector element

Definition at line 1011 of file vector_dist.hpp.

◆ getLastPropWrite()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getLastPropWrite ( ) -> decltype(vPrp.template get<id>(0))
inline

Get the property of the last element.

Template Parameters
idproperty id
Returns
return the selected property of the vector element

Definition at line 1042 of file vector_dist.hpp.

◆ getParticleIteratorCRS()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename VerletList_type >
openfpm::vector_key_iterator_seq<typename VerletList_type::Mem_type_type::local_index_type> vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getParticleIteratorCRS ( VerletList_type &  cellList)
inline

Get a special particle iterator able to iterate across particles using symmetric crossing scheme.

Parameters
cellListVerlet list neighborhood
Returns
Particle iterator

Definition at line 2898 of file vector_dist.hpp.

◆ getParticleIteratorCRS_Cell()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename cli >
ParticleItCRS_Cells<dim,cli,decltype(vPos)> vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getParticleIteratorCRS_Cell ( cli &  cellList)
inline

Get a special particle iterator able to iterate across particles using symmetric crossing scheme.

Parameters
cellListCell-List neighborhood
Returns
Particle iterator

Definition at line 2833 of file vector_dist.hpp.

◆ getPos() [1/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPos ( size_t  vec_key) -> decltype(vPos.template get<0>(vec_key))
inline

Get the position of an element.

see the vector_dist iterator usage to get an element key

Parameters
vec_keyelement
Returns
the position of the element in space

Definition at line 620 of file vector_dist.hpp.

◆ getPos() [2/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPos ( size_t  vec_key) const -> decltype(vPos.template get<0>(vec_key))
inline

Get the position of an element.

see the vector_dist iterator usage to get an element key

Parameters
vec_keyelement
Returns
the position of the element in space

Definition at line 637 of file vector_dist.hpp.

◆ getPos() [3/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPos ( vect_dist_key_dx  vec_key) -> decltype(vPos.template get<0>(vec_key.getKey()))
inline

Get the position of an element.

see the vector_dist iterator usage to get an element key

Parameters
vec_keyelement
Returns
the position of the element in space

Definition at line 585 of file vector_dist.hpp.

◆ getPos() [4/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPos ( vect_dist_key_dx  vec_key) const -> decltype(vPos.template get<0>(vec_key.getKey()))
inline

Get the position of an element.

see the vector_dist iterator usage to get an element key

Parameters
vec_keyelement
Returns
the position of the element in space

Definition at line 603 of file vector_dist.hpp.

◆ getPosNC() [1/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPosNC ( size_t  vec_key) -> decltype(vPos.template get<0>(vec_key))
inline

Get the position of an element.

see the vector_dist iterator usage to get an element key

Parameters
vec_keyelement
Returns
the position of the element in space

Definition at line 758 of file vector_dist.hpp.

◆ getPosNC() [2/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPosNC ( size_t  vec_key) const -> decltype(vPos.template get<0>(vec_key))
inline

Get the position of an element.

see the vector_dist iterator usage to get an element key

Parameters
vec_keyelement
Returns
the position of the element in space

Definition at line 772 of file vector_dist.hpp.

◆ getPosNC() [3/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPosNC ( vect_dist_key_dx  vec_key) -> decltype(vPos.template get<0>(vec_key.getKey()))
inline

Get the position of an element.

see the vector_dist iterator usage to get an element key

Parameters
vec_keyelement
Returns
the position of the element in space

Definition at line 730 of file vector_dist.hpp.

◆ getPosNC() [4/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPosNC ( vect_dist_key_dx  vec_key) const -> decltype(vPos.template get<0>(vec_key.getKey()))
inline

Get the position of an element.

see the vector_dist iterator usage to get an element key

Parameters
vec_keyelement
Returns
the position of the element in space

Definition at line 744 of file vector_dist.hpp.

◆ getPosRead()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPosRead ( vect_dist_key_dx  vec_key) const -> decltype(vPos.template get<0>(vec_key.getKey()))
inline

Get the position of an element.

see the vector_dist iterator usage to get an element key

Parameters
vec_keyelement
Returns
the position of the element in space

Definition at line 866 of file vector_dist.hpp.

◆ getPosVector() [1/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_pos& vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPosVector ( )
inline

return the position vector of all the particles

Returns
the particle position vector

Definition at line 2776 of file vector_dist.hpp.

◆ getPosVector() [2/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
const vector_dist_pos& vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPosVector ( ) const
inline

return the position vector of all the particles

Returns
the particle position vector

Definition at line 2766 of file vector_dist.hpp.

◆ getPosWrite()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPosWrite ( vect_dist_key_dx  vec_key) -> decltype(vPos.template get<0>(vec_key.getKey()))
inline

Get the position of an element.

see the vector_dist iterator usage to get an element key

Parameters
vec_keyelement
Returns
the position of the element in space

Definition at line 848 of file vector_dist.hpp.

◆ getProp() [1/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getProp ( size_t  vec_key) -> decltype(vPrp.template get<id>(vec_key))
inline

Get the property of an element.

see the vector_dist iterator usage to get an element key

Template Parameters
idproperty id
Parameters
vec_keyvector element
Returns
return the selected property of the vector element

Definition at line 691 of file vector_dist.hpp.

◆ getProp() [2/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getProp ( size_t  vec_key) const -> decltype(vPrp.template get<id>(vec_key))
inline

Get the property of an element.

see the vector_dist iterator usage to get an element key

Template Parameters
idproperty id
Parameters
vec_keyvector element
Returns
return the selected property of the vector element

Definition at line 709 of file vector_dist.hpp.

◆ getProp() [3/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getProp ( vect_dist_key_dx  vec_key) -> decltype(vPrp.template get<id>(vec_key.getKey()))
inline

Get the property of an element.

see the vector_dist iterator usage to get an element key

Template Parameters
idproperty id
Parameters
vec_keyvector element
Returns
return the selected property of the vector element

Definition at line 655 of file vector_dist.hpp.

◆ getProp() [4/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getProp ( vect_dist_key_dx  vec_key) const -> decltype(vPrp.template get<id>(vec_key.getKey()))
inline

Get the property of an element.

see the vector_dist iterator usage to get an element key

Template Parameters
idproperty id
Parameters
vec_keyvector element
Returns
return the selected property of the vector element

Definition at line 673 of file vector_dist.hpp.

◆ getPropNames()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
openfpm::vector<std::string>& vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPropNames ( )
inline

Get the properties names.

It is useful to get name for the properties in vtk writers

Definition at line 2883 of file vector_dist.hpp.

◆ getPropNC() [1/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPropNC ( size_t  vec_key) -> decltype(vPrp.template get<id>(vec_key))
inline

Get the property of an element.

see the vector_dist iterator usage to get an element key

Template Parameters
idproperty id
Parameters
vec_keyvector element
Returns
return the selected property of the vector element

Definition at line 817 of file vector_dist.hpp.

◆ getPropNC() [2/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPropNC ( size_t  vec_key) const -> decltype(vPrp.template get<id>(vec_key))
inline

Get the property of an element.

see the vector_dist iterator usage to get an element key

Template Parameters
idproperty id
Parameters
vec_keyvector element
Returns
return the selected property of the vector element

Definition at line 832 of file vector_dist.hpp.

◆ getPropNC() [3/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPropNC ( vect_dist_key_dx  vec_key) -> decltype(vPrp.template get<id>(vec_key.getKey()))
inline

Get the property of an element.

see the vector_dist iterator usage to get an element key

Template Parameters
idproperty id
Parameters
vec_keyvector element
Returns
return the selected property of the vector element

Definition at line 787 of file vector_dist.hpp.

◆ getPropNC() [4/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPropNC ( vect_dist_key_dx  vec_key) const -> decltype(vPrp.template get<id>(vec_key.getKey()))
inline

Get the property of an element.

see the vector_dist iterator usage to get an element key

Template Parameters
idproperty id
Parameters
vec_keyvector element
Returns
return the selected property of the vector element

Definition at line 802 of file vector_dist.hpp.

◆ getPropRead()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPropRead ( vect_dist_key_dx  vec_key) const -> decltype(vPrp.template get<id>(vec_key.getKey()))
inline

Get the property of an element.

see the vector_dist iterator usage to get an element key

Template Parameters
idproperty id
Parameters
vec_keyvector element
Returns
return the selected property of the vector element

Definition at line 904 of file vector_dist.hpp.

◆ getPropVector() [1/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_prop& vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPropVector ( )
inline

return the property vector of all the particles

Returns
the particle property vector

Definition at line 2796 of file vector_dist.hpp.

◆ getPropVector() [2/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
const vector_dist_prop& vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPropVector ( ) const
inline

return the property vector of all the particles

Returns
the particle property vector

Definition at line 2786 of file vector_dist.hpp.

◆ getPropWrite()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int id>
auto vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getPropWrite ( vect_dist_key_dx  vec_key) -> decltype(vPrp.template get<id>(vec_key.getKey()))
inline

Get the property of an element.

see the vector_dist iterator usage to get an element key

Template Parameters
idproperty id
Parameters
vec_keyvector element
Returns
return the selected property of the vector element

Definition at line 885 of file vector_dist.hpp.

◆ getVC()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
Vcluster<Memory>& vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getVC ( )
inline

Get the Virtual Cluster machine.

Returns
the Virtual cluster machine

Definition at line 2753 of file vector_dist.hpp.

◆ getVerlet()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int optVerlet = VL_NON_SYMMETRIC, typename VerletList_type = VerletList<dim,St,optVerlet,Mem_fast<>,shift<dim,St>,decltype(vPos)>>
VerletList_type vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getVerlet ( St  r_cut,
size_t  neighborMaxNum = 0 
)
inline

for each particle get the verlet list

Parameters
r_cutcut-off radius
nMaxMax number of neighboring particles added per p (sorted by distance). By default all are included Should be supplied additionally with option flag VL_NMAX_NEIGHBOR to VerletList_type template type
Returns
a VerletList object

Definition at line 1515 of file vector_dist.hpp.

◆ getVerletAdaptRCut()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename VerletList_type = VerletList<dim,St,VL_NON_SYMMETRIC|VL_ADAPTIVE_RCUT,Mem_fast<>,shift<dim,St>,decltype(vPos)>>
VerletList_type vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getVerletAdaptRCut ( )
inline

Get Verlet list with unique cut-off radius for every particle.

Parameters
rCutslist of cut-off radii for every particle in vPos
Returns
the verlet list

Definition at line 1480 of file vector_dist.hpp.

◆ getVerletCrs()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename VerletList_type = VerletList<dim,St,VL_CRS_SYMMETRIC,Mem_fast<>,shift<dim,St>,decltype(vPos)>>
VerletList_type vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getVerletCrs ( St  r_cut)
inline

for each particle get the symmetric verlet list

Parameters
r_cutcut-off radius
Returns
the verlet list

Definition at line 1426 of file vector_dist.hpp.

◆ getVerletSym()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename VerletList_type = VerletList<dim,St,VL_SYMMETRIC,Mem_fast<>,shift<dim,St>,decltype(vPos)>>
VerletList_type vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::getVerletSym ( St  r_cut)
inline

for each particle get the symmetric verlet list

Parameters
r_cutcut-off radius
Returns
the verlet list

Definition at line 1413 of file vector_dist.hpp.

◆ ghost_get()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<int ... prp>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::ghost_get ( size_t  opt = WITH_POSITION)
inline

It synchronize the properties and position of the ghost particles.

Template Parameters
prplist of properties to get synchronize
Parameters
optoptions WITH_POSITION, it send also the positional information of the particles

Definition at line 2203 of file vector_dist.hpp.

◆ ghost_put()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<template< typename, typename > class op, int ... prp>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::ghost_put ( size_t  opt_ = NONE)
inline

It synchronize the properties and position of the ghost particles.

Template Parameters
opwhich kind of operation to apply
prplist of properties to get synchronize
Parameters
opt_options. It is an optional parameter. If set to NO_CHANGE_ELEMENTS the communication has lower latencies. This option has some usage limitations, so please refere to the examples for further explanations

Definition at line 2304 of file vector_dist.hpp.

◆ ghost_wait()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<int ... prp>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::ghost_wait ( size_t  opt = WITH_POSITION)
inline

It synchronize the properties and position of the ghost particles.

Template Parameters
prplist of properties to get synchronize
Parameters
optoptions WITH_POSITION, it send also the positional information of the particles

Definition at line 2267 of file vector_dist.hpp.

◆ hostToDevicePos()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::hostToDevicePos ( )
inline

Move the memory from the device to host memory.

Template Parameters
propertyto move use POS_PROP for position property

Definition at line 3109 of file vector_dist.hpp.

◆ hostToDeviceProp()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int ... prp>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::hostToDeviceProp ( )
inline

Move the memory from the device to host memory.

Template Parameters
propertyto move use POS_PROP for position property

Definition at line 3101 of file vector_dist.hpp.

◆ Ighost_get()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<int ... prp>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::Ighost_get ( size_t  opt = WITH_POSITION)
inline

It synchronize the properties and position of the ghost particles.

Template Parameters
prplist of properties to get synchronize
Parameters
optoptions WITH_POSITION, it send also the positional information of the particles

Definition at line 2241 of file vector_dist.hpp.

◆ init_size_accum()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
size_t vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::init_size_accum ( size_t  np)
inline

It return the number of particles contained by the previous processors.

Warning
It only work with the initial decomposition

Given 1000 particles and 3 processors, you will get

  • Processor 0: 0
  • Processor 1: 334
  • Processor 2: 667
Parameters
npinitial number of particles
Returns
number of particles contained by the previous processors

Definition at line 1809 of file vector_dist.hpp.

◆ init_structures()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::init_structures ( size_t  np)
inlineprivate

Initialize the structures.

Parameters
npnumber of particles

Definition at line 234 of file vector_dist.hpp.

◆ isSubset()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
bool vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::isSubset ( ) const
inline

Indicate that this class is not a subset.

Returns
false

Definition at line 2947 of file vector_dist.hpp.

◆ load()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::load ( const std::string &  filename)
inline

Load the distributed vector from an HDF5 file.

Parameters
filenamefile from where to load

Definition at line 2471 of file vector_dist.hpp.

◆ map()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename obp = KillParticle>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::map ( size_t  opt = NONE)
inline

It move all the particles that does not belong to the local processor to the respective processor.

Template Parameters
outof bound policy it specify what to do when the particles are detected out of bound

In general this function is called after moving the particles to move the elements out the local processor. Or just after initialization if each processor contain non local particles

Parameters
optoptions

Definition at line 2158 of file vector_dist.hpp.

◆ map_list()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int ... prp>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::map_list ( size_t  opt = NONE)
inline

It move all the particles that does not belong to the local processor to the respective processor.

Template Parameters
outof bound policy it specify what to do when the particles are detected out of bound

In general this function is called after moving the particles to move the elements out the local processor. Or just after initialization if each processor contain non local particles

Template Parameters
prpproperties to communicate
Parameters
optoptions

Definition at line 2129 of file vector_dist.hpp.

◆ operator=() [1/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist<dim,St,prop,Decomposition,Memory,layout_base>& vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::operator= ( const vector_dist< dim, St, prop, Decomposition, Memory, layout_base > &  v)
inline

Operator= for distributed vector.

Parameters
vvector to copy
Returns
itself

Definition at line 356 of file vector_dist.hpp.

◆ operator=() [2/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist<dim,St,prop,Decomposition,Memory,layout_base>& vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::operator= ( vector_dist< dim, St, prop, Decomposition, Memory, layout_base > &&  v)
inline

Operator= for distributed vector.

Parameters
vvector to copy
Returns
itself

Definition at line 381 of file vector_dist.hpp.

◆ remove() [1/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::remove ( openfpm::vector< aggregate< int >> &  keys,
size_t  start = 0 
)
inline

Remove a set of elements from the distributed vector.

Warning
keys must be sorted
Parameters
keysvector of elements to eliminate
startfrom where to eliminate

Definition at line 2353 of file vector_dist.hpp.

◆ remove() [2/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::remove ( openfpm::vector< size_t > &  keys,
size_t  start = 0 
)
inline

Remove a set of elements from the distributed vector.

Warning
keys must be sorted
Parameters
keysvector of elements to eliminate
startfrom where to eliminate

Definition at line 2337 of file vector_dist.hpp.

◆ remove() [3/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::remove ( size_t  key)
inline

Remove one element from the distributed vector.

Parameters
keyremove one element from the vector

Definition at line 2366 of file vector_dist.hpp.

◆ remove() [4/4]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::remove ( std::set< size_t > &  keys)
inline

Remove a set of elements from the distributed vector.

Parameters
keysstd::set of elements to eliminate. Values inside std::set are sorted by definition of the container

Definition at line 2318 of file vector_dist.hpp.

◆ reorder() [1/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename CellL = CellList<dim,St,Mem_bal<>,shift<dim,St> >>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::reorder ( int32_t  m,
const Ghost< dim, St > &  enlarge,
reorder_opt  opt = reorder_opt::HILBERT 
)
inline

Construct a cell list starting from the stored particles and reorder a vector according to the Hilberts curve.

Warning
it kill the ghost and invalidate cell-lists

It differs from the reorder(m) for an additional parameter, in case the domain + ghost is not big enough to contain additional padding particles, a Cell list with bigger space can be created (padding particles in general are particles added by the user out of the domains)

Parameters
morder of a curve
enlargeIn case of padding particles the cell list must be enlarged, like a ghost this parameter say how much must be enlarged

Definition at line 1681 of file vector_dist.hpp.

◆ reorder() [2/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename CellL = CellList<dim,St,Mem_bal<>,shift<dim,St> >>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::reorder ( int32_t  m,
reorder_opt  opt = reorder_opt::HILBERT 
)
inline

Construct a cell list starting from the stored particles and reorder a vector according to the Hilberts curve.

Template Parameters
CellLCellList type to construct
Parameters
man order of a hilbert curve

Definition at line 1661 of file vector_dist.hpp.

◆ reorder_rcut()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename CellL = CellList<dim,St,Mem_bal<>,shift<dim,St> >>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::reorder_rcut ( St  r_cut)
inline

Construct a cell list starting from the stored particles and reorder a vector according to the Hilberts curve.

Warning
it kill the ghost and invalidate cell-lists

It differs from the reorder(m) for an additional parameter, in case the domain + ghost is not big enough to contain additional padding particles, a Cell list with bigger space can be created (padding particles in general are particles added by the user out of the domains)

Parameters
morder of a curve
enlargeIn case of padding particles the cell list must be enlarged, like a ghost this parameter say how much must be enlarged

Definition at line 1767 of file vector_dist.hpp.

◆ reorder_sfc()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<typename CellL , typename sfc_it >
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::reorder_sfc ( openfpm::vector< Point< dim, St >> &  v_pos_dest,
openfpm::vector< prop > &  v_prp_dest,
sfc_it &  h_it,
CellL &  cellList 
)
inlineprivate

Reorder based on hilbert space filling curve.

Parameters
v_pos_destreordered vector of position
v_prp_destreordered vector of properties
morder of the space filling curve
cellListcell-list

Definition at line 299 of file vector_dist.hpp.

◆ resize()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::resize ( size_t  rs)
inline

Resize the vector (locally)

Warning
It automatically delete the ghosts
Parameters
rs

Definition at line 2572 of file vector_dist.hpp.

◆ save()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::save ( const std::string &  filename) const
inline

Save the distributed vector on HDF5 file.

Parameters
filenamefile where to save

Definition at line 2459 of file vector_dist.hpp.

◆ setCapacity()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::setCapacity ( unsigned int  ns)
inline

Reserve space for the internal vectors.

Parameters

Definition at line 2483 of file vector_dist.hpp.

◆ setPropNames()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::setPropNames ( const openfpm::vector< std::string > &  names)
inline

Set the properties names.

It is useful to specify name for the properties in vtk writers

Parameters
namesset of properties names

Definition at line 2873 of file vector_dist.hpp.

◆ setReferenceCounterToOne()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::setReferenceCounterToOne ( )
inline

Set reference counter to one

Definition at line 530 of file vector_dist.hpp.

◆ size_local()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
size_t vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::size_local ( ) const
inline

return the local size of the vector

Returns
local size

Definition at line 559 of file vector_dist.hpp.

◆ size_local_with_ghost()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
size_t vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::size_local_with_ghost ( ) const
inline

return the local size of the vector

Returns
local size

Definition at line 569 of file vector_dist.hpp.

◆ updateCellList()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int ... prp, typename CellL >
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::updateCellList ( CellL &  cellList,
bool  no_se3 = false 
)
inline

Update a cell list using the stored particles.

Template Parameters
CellLCellList type to construct
Parameters
cellListCell list to update
no_se3avoid se class 3 checking

Definition at line 1288 of file vector_dist.hpp.

◆ updateVerlet()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int opt, typename Mem_type >
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::updateVerlet ( VerletList< dim, St, opt, Mem_type, shift< dim, St > > &  verletList,
St  r_cut 
)
inline

for each particle get the verlet list

Parameters
r_cutcut-off radius
verletListVerlet to update

Definition at line 1556 of file vector_dist.hpp.

◆ updateVerletAdaptRCut()

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
template<unsigned int opt, typename Mem_type >
void vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::updateVerletAdaptRCut ( VerletList< dim, St, opt, Mem_type, shift< dim, St > > &  verletList)
inline

Update non-symmetric adaptive r-cut Verlet list.

Parameters
verletListVerlet to update
rCutslist of cut-off radii for every particle in pos

Definition at line 1629 of file vector_dist.hpp.

◆ write() [1/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
bool vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::write ( std::string  out,
int  opt = VTK_WRITER 
)
inline

Output particle position and properties.

Parameters
outoutput filename
optVTK_WRITER, CSV_WRITER, it is also possible to choose the format for VTK FORMAT_BINARY. (the default is ASCII format)
Returns
true if the file has been written without error

Definition at line 2498 of file vector_dist.hpp.

◆ write() [2/2]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
bool vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::write ( std::string  out,
std::string  meta_info,
int  opt = VTK_WRITER 
)
inline

Output particle position and properties.

Parameters
outoutput filename
meta_infometa information example ("time = 1.234" add the information time to the VTK file)
optVTK_WRITER, CSV_WRITER, it is also possible to choose the format for VTK FORMAT_BINARY. (the default is ASCII format)
Returns
true if the file has been written without error

Definition at line 2513 of file vector_dist.hpp.

◆ write_frame() [1/3]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
bool vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::write_frame ( std::string  out,
size_t  iteration,
double  time,
int  opt = VTK_WRITER 
)
inline

Output particle position and properties and add a time stamp to pvtp.

Parameters
outoutput
iteration(we can append the number at the end of the file_name)
time= 1.234 to add to the information time to the PVTP file)
optVTK_WRITER, CSV_WRITER, it is also possible to choose the format for VTK FORMAT_BINARY. (the default is ASCII format)
Returns
if the file has been written correctly

Definition at line 2683 of file vector_dist.hpp.

◆ write_frame() [2/3]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
bool vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::write_frame ( std::string  out,
size_t  iteration,
int  opt = VTK_WRITER 
)
inline

Output particle position and properties.

Parameters
outoutput
iteration(we can append the number at the end of the file_name)
meta_infometa information example ("time = 1.234" add the information time to the VTK file)
optVTK_WRITER, CSV_WRITER, it is also possible to choose the format for VTK FORMAT_BINARY. (the default is ASCII format)
Returns
if the file has been written correctly

Definition at line 2612 of file vector_dist.hpp.

◆ write_frame() [3/3]

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
bool vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::write_frame ( std::string  out,
size_t  iteration,
std::string  meta_info,
int  opt = VTK_WRITER 
)
inline

Output particle position and properties.

Parameters
outoutput
iteration(we can append the number at the end of the file_name)
meta_infometa information example ("time = 1.234" add the information time to the VTK file)
optVTK_WRITER, CSV_WRITER, it is also possible to choose the format for VTK FORMAT_BINARY. (the default is ASCII format)
Returns
if the file has been written correctly

Definition at line 2628 of file vector_dist.hpp.

Field Documentation

◆ vPos

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_pos vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::vPos
private

Particle position vector, (It has 2 elements) the first has real particles assigned to a processor the second element contain unassigned particles

Definition at line 197 of file vector_dist.hpp.

◆ vPosReordered

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_pos vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::vPosReordered
private

Used when cell list is constructed with CL_GPU_REORDER_POSITION. Stores a copy of vPos Stores a sorted copy of vPos in between updateCellListGPU and restoreOrder

Definition at line 201 of file vector_dist.hpp.

◆ vPrp

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_prop vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::vPrp
private

Particle properties vector, (It has 2 elements) the first has real particles assigned to a processor the second element contain unassigned particles

Definition at line 205 of file vector_dist.hpp.

◆ vPrpReordered

template<unsigned int dim, typename St , typename prop , typename Decomposition = CartDecomposition<dim,St>, typename Memory = HeapMemory, template< typename > class layout_base = memory_traits_lin, typename vector_dist_pos = openfpm::vector<Point<dim, St>,Memory,layout_base>, typename vector_dist_prop = openfpm::vector<prop,Memory,layout_base>>
vector_dist_prop vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::vPrpReordered
private

Used when cell list is constructed with CL_GPU_REORDER_PROPERTY. Stores a copy of vPrp Stores a sorted copy of vPos in between updateCellListGPU and restoreOrder

Definition at line 209 of file vector_dist.hpp.


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