Distributed vector. More...
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
dim | Dimensionality of the space where the elements lives |
St | type of space float, double ... |
prop | properties the vector element store in OpenFPM data structure format |
Decomposition | Decomposition strategy to use CartDecomposition ... |
Memory | Memory pool where store the information HeapMemory ... |
Memory | layout |
Definition at line 297 of file vector_dist.hpp.
#include <vector_dist.hpp>
Public Types | |
typedef vector_dist< dim, St, prop, Decomposition, Memory, layout_base > | self |
Self type. | |
typedef prop | value_type |
property object | |
typedef Decomposition | Decomposition_type |
typedef CellList< dim, St, Mem_fast<>, shift< dim, St >, internal_position_vector_type > | CellList_type |
typedef St | stype |
space 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 More... | |
size_t | size_local () const |
return the local size of the vector More... | |
size_t | size_local_orig () 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(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. More... | |
auto | getPos (vect_dist_key_dx vec_key) const -> decltype(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. More... | |
auto | getPos (size_t vec_key) -> decltype(v_pos.template get< 0 >(vec_key)) |
Get the position of an element. More... | |
auto | getPosOrig (vect_dist_key_dx vec_key) const -> decltype(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. More... | |
auto | getPosOrig (size_t vec_key) -> decltype(v_pos.template get< 0 >(vec_key)) |
Get the position of an element. More... | |
auto | getPos (size_t vec_key) const -> decltype(v_pos.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(v_prp.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(v_prp.template get< id >(vec_key.getKey())) |
Get the property of an element. More... | |
template<unsigned int id> | |
auto | getProp (size_t vec_key) -> decltype(v_prp.template get< id >(vec_key)) |
Get the property of an element. More... | |
template<unsigned int id> | |
auto | getProp (size_t vec_key) const -> decltype(v_prp.template get< id >(vec_key)) |
Get the property of an element. More... | |
auto | getPosNC (vect_dist_key_dx vec_key) -> decltype(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. More... | |
auto | getPosNC (vect_dist_key_dx vec_key) const -> decltype(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. More... | |
auto | getPosNC (size_t vec_key) -> decltype(v_pos.template get< 0 >(vec_key)) |
Get the position of an element. More... | |
auto | getPosNC (size_t vec_key) const -> decltype(v_pos.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(v_prp.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(v_prp.template get< id >(vec_key.getKey())) |
Get the property of an element. More... | |
template<unsigned int id> | |
auto | getPropNC (size_t vec_key) -> decltype(v_prp.template get< id >(vec_key)) |
Get the property of an element. More... | |
template<unsigned int id> | |
auto | getPropNC (size_t vec_key) const -> decltype(v_prp.template get< id >(vec_key)) |
Get the property of an element. More... | |
auto | getPosWrite (vect_dist_key_dx vec_key) -> decltype(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. More... | |
auto | getPosRead (vect_dist_key_dx vec_key) const -> decltype(v_pos.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(v_prp.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(v_prp.template get< id >(vec_key.getKey())) |
Get the property of an element. More... | |
void | add () |
Add local particle. More... | |
auto | getLastPos () -> decltype(v_pos.template get< 0 >(0)) |
Get the position of the last element. More... | |
template<unsigned int id> | |
auto | getLastProp () -> decltype(v_prp.template get< id >(0)) |
Get the property of the last element. More... | |
auto | getLastPosRead () -> decltype(v_pos.template get< 0 >(0)) |
Get the position of the last element. More... | |
template<unsigned int id> | |
auto | getLastPropRead () -> decltype(v_prp.template get< id >(0)) |
Get the property of the last element. More... | |
auto | getLastPosWrite () -> decltype(v_pos.template get< 0 >(0)) |
Get the position of the last element. More... | |
template<unsigned int id> | |
auto | getLastPropWrite () -> decltype(v_prp.template get< id >(0)) |
Get the property of the last element. More... | |
vect_dist_key_dx | getOriginKey (vect_dist_key_dx vec_key) |
template<typename CellL = CellList<dim, St, Mem_fast<>, shift<dim, St>,internal_position_vector_type >> | |
CellL | getCellListSym (St r_cut) |
Construct a cell list symmetric based on a cut of radius. More... | |
template<typename CellL = CellList<dim, St, Mem_fast<>, shift<dim, St> >> | |
CellL | getCellListSym (const size_t(&div)[dim], const size_t(&pad)[dim]) |
Construct a cell list symmetric based on a cut of radius. More... | |
template<unsigned int impl> | |
cell_list_selector< self, impl >::ctype | getCellListDev (St r_cut) |
Construct a cell list starting from the stored particles. More... | |
template<typename CellL = CellList_gen<dim, St, Process_keys_lin, Mem_fast<>, shift<dim, St>, decltype(v_pos) >> | |
CellL | getCellList (St r_cut, bool no_se3=false) |
Construct a cell list starting from the stored particles. More... | |
auto | getCellListDevice (St r_cut, bool no_se3=false) -> decltype(this->getCellList(r_cut, no_se3)) |
Construct a cell list from the stored particles. More... | |
template<typename CellL = CellList_gen<dim, St, Process_keys_hilb, Mem_fast<>, shift<dim, St> >> | |
CellL | getCellList_hilb (St r_cut) |
Construct an hilbert cell list starting from the stored particles. More... | |
template<unsigned int ... prp, typename CellL > | |
void | updateCellList (CellL &cell_list, bool no_se3=false, cl_construct_opt opt=cl_construct_opt::Full) |
Update a cell list using the stored particles. More... | |
template<typename CellL = CellList<dim, St, Mem_fast<>, shift<dim, St> >> | |
void | updateCellListSym (CellL &cell_list) |
Update a cell list using the stored particles. More... | |
template<typename CellL = CellList_gen<dim, St, Process_keys_lin, Mem_fast<>, shift<dim, St> >> | |
CellL | getCellList (St r_cut, const Ghost< dim, St > &enlarge, bool no_se3=false) |
Construct a cell list starting from the stored particles. More... | |
template<typename CellL = CellList_gen<dim, St, Process_keys_hilb, Mem_fast<>, shift<dim, St> >> | |
CellL | getCellList_hilb (St r_cut, const Ghost< dim, St > &enlarge) |
Construct an hilbert cell list starting from the stored particles. More... | |
template<typename VerletL = VerletList<dim,St,Mem_fast<>,shift<dim,St> >> | |
VerletL | getVerletSym (St r_cut) |
for each particle get the symmetric verlet list More... | |
template<typename VerletL = VerletList<dim,St,Mem_fast<>,shift<dim,St> >> | |
VerletL | getVerletCrs (St r_cut) |
for each particle get the symmetric verlet list More... | |
template<typename VerletL = VerletList<dim,St,Mem_fast<>,shift<dim,St>,decltype(v_pos) >> | |
VerletL | getVerlet (St r_cut) |
for each particle get the verlet list More... | |
template<typename Mem_type > | |
void | updateVerlet (VerletList< dim, St, Mem_type, shift< dim, St > > &ver, St r_cut, size_t opt=VL_NON_SYMMETRIC) |
for each particle get the verlet list More... | |
template<typename CellL = CellList_gen<dim,St,Process_keys_lin,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_gen<dim,St,Process_keys_lin,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_gen<dim,St,Process_keys_lin,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< Decomposition > | getGridIterator (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, CellList > | getDomainIteratorCells (CellList &NN) |
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... | |
Decomposition & | getDecomposition () |
Get the decomposition. More... | |
const Decomposition & | getDecomposition () 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. More... | |
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 (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. More... | |
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. More... | |
void | resize (size_t rs) |
Resize the vector (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... | |
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... | |
long int | who () |
It return the id of structure in the allocation list. 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... | |
const vector_dist_pos & | getPosVectorSort () const |
return the position vector of all the particles More... | |
vector_dist_pos & | getPosVectorSort () |
return the position vector of all the particles More... | |
const vector_dist_prop & | getPropVectorSort () const |
return the property vector of all the particles More... | |
vector_dist_prop & | getPropVectorSort () |
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(v_pos)> | getParticleIteratorCRS_Cell (cli &NN) |
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 vrl > | |
openfpm::vector_key_iterator_seq< typename vrl::Mem_type_type::local_index_type > | getParticleIteratorCRS (vrl &NN) |
Get a special particle iterator able to iterate across particles using symmetric crossing scheme. More... | |
template<typename Celllist > | |
grid_key_dx< dim > | getCRSStart (Celllist &NN) |
Return from which cell we have to start in case of CRS interation scheme. More... | |
template<typename Celllist > | |
grid_key_dx< dim > | getCRSStop (Celllist &NN) |
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... | |
![]() | |
vector_dist_comm (const vector_dist_comm< dim, St, prop, Decomposition, Memory, layout_base > &v) | |
Copy Constructor. More... | |
vector_dist_comm (const Decomposition &dec) | |
Constructor. More... | |
vector_dist_comm (Decomposition &&dec) | |
Constructor. More... | |
vector_dist_comm () | |
Constructor. More... | |
~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... | |
template<unsigned int impl, int ... prp> | |
void | ghost_get_ (openfpm::vector< Point< dim, St >, Memory, layout_base > &v_pos, openfpm::vector< prop, Memory, layout_base > &v_prp, size_t &g_m, size_t opt=WITH_POSITION) |
It synchronize the properties and position of the ghost particles. More... | |
template<int ... prp> | |
void | ghost_wait_ (openfpm::vector< Point< dim, St >, Memory, layout_base > &v_pos, openfpm::vector< prop, Memory, layout_base > &v_prp, size_t &g_m, size_t opt=WITH_POSITION) |
It synchronize the properties and position of the ghost particles. More... | |
template<unsigned int ... prp> | |
void | map_list_ (openfpm::vector< Point< dim, St >> &v_pos, openfpm::vector< prop > &v_prp, size_t &g_m, size_t opt) |
It move all the particles that does not belong to the local processor to the respective processor. More... | |
template<typename obp = KillParticle> | |
void | map_ (openfpm::vector< Point< dim, St >, Memory, layout_base > &v_pos, openfpm::vector< prop, Memory, layout_base > &v_prp, size_t &g_m, size_t opt) |
It move all the particles that does not belong to the local processor to the respective processor. More... | |
Decomposition & | getDecomposition () |
Get the decomposition. More... | |
const Decomposition & | getDecomposition () const |
Get the decomposition. More... | |
vector_dist_comm< dim, St, prop, Decomposition, Memory, layout_base > & | operator= (const vector_dist_comm< dim, St, prop, Decomposition, Memory, layout_base > &vc) |
Copy a vector. More... | |
vector_dist_comm< dim, St, prop, Decomposition, Memory, layout_base > & | operator= (vector_dist_comm< dim, St, prop, Decomposition, Memory, layout_base > &&vc) |
Copy a vector. More... | |
template<template< typename, typename > class op, int ... prp> | |
void | ghost_put_ (openfpm::vector< Point< dim, St >, Memory, layout_base > &v_pos, openfpm::vector< prop, Memory, layout_base > &v_prp, size_t &g_m, size_t opt) |
Ghost put. More... | |
Data Fields | |
decltype(v_pos) typedef | internal_position_vector_type |
Static Public Attributes | |
static const unsigned int | dims = dim |
dimensions of space | |
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 &cell_list) |
Reorder based on hilbert space filling curve. More... | |
![]() | |
void | add (int &v, bool is_sorted) |
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 | update_sort (const int &vs) |
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 | g_m = 0 |
Ghost marker, all the particle with id > g_m are ghost all with g_m < are real particle. | |
vector_dist_pos | v_pos |
vector_dist_prop | v_prp |
vector_dist_prop | v_prp_out |
reordered v_pos buffer | |
vector_dist_pos | v_pos_out |
reordered v_prp buffer | |
size_t | opt = 0 |
option used to create this vector | |
openfpm::vector< std::string > | prp_names |
Name of the properties. | |
|
inline |
|
inlinenoexcept |
|
inline |
Constructor with predefined decomposition.
dec | is the decomposition |
np | number of particles |
Definition at line 573 of file vector_dist.hpp.
|
inline |
Constructor of a distributed vector.
np | number of elements |
box | domain where the vector of elements live |
bc | boundary conditions |
g | Ghost 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 599 of file vector_dist.hpp.
|
inline |
Constructor of a distributed vector.
np | number of elements |
box | domain where the vector of elements live |
bc | boundary conditions |
g | Ghost 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 629 of file vector_dist.hpp.
|
inline |
It return the sum of the particles in the previous processors.
Definition at line 3022 of file vector_dist.hpp.
|
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 1098 of file vector_dist.hpp.
|
inline |
Add the computation cost on the decomposition coming from the particles.
md | Model to use |
vd | external vector to add for the computational cost |
Definition at line 2618 of file vector_dist.hpp.
|
inline |
Add the computation cost on the decomposition coming from the particles.
md | Model to use |
ts | It 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 2682 of file vector_dist.hpp.
|
inlineprivate |
It check that the r_cut is not bugger than the ghost.
r_cut | cut-off radius |
Definition at line 396 of file vector_dist.hpp.
|
inlineprivate |
Check if the parameters describe a valid vector. In case it does not report an error.
box | Box to check |
Definition at line 380 of file vector_dist.hpp.
|
inline |
remove all the elements
Definition at line 680 of file vector_dist.hpp.
|
inline |
Delete the particles on the ghost.
Definition at line 2792 of file vector_dist.hpp.
|
inline |
Move the memory from the device to host memory.
property | to move use POS_PROP for position property |
Definition at line 3351 of file vector_dist.hpp.
|
inline |
Move the memory from the device to host memory.
property | to move use POS_PROP for position property |
Definition at line 3343 of file vector_dist.hpp.
|
inline |
Add the computation cost on the decomposition coming from the particles.
md | Model to use |
ts | It 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 2647 of file vector_dist.hpp.
|
inline |
Construct a cell list starting from the stored particles.
CellL | CellList type to construct |
r_cut | interation radius, or size of each cell |
no_se3 | avoid SE_CLASS3 checking |
Definition at line 1324 of file vector_dist.hpp.
|
inline |
Construct a cell list starting from the stored particles.
It differ from the get getCellList 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)
CellL | CellList type to construct |
r_cut | interation radius, or size of each cell |
enlarge | In case of padding particles the cell list must be enlarged, like a ghost this parameter say how much must be enlarged |
no_se3 | avoid se_class3 cheking default false |
Definition at line 1579 of file vector_dist.hpp.
|
inline |
Construct an hilbert cell list starting from the stored particles.
CellL | CellList type to construct |
r_cut | interation radius, or size of each cell |
Definition at line 1468 of file vector_dist.hpp.
|
inline |
Construct an hilbert cell list starting from the stored particles.
It differ from the get getCellList 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)
CellL | CellList type to construct |
r_cut | interation radius, or size of each cell |
enlarge | In case of padding particles the cell list must be enlarged, like a ghost this parameter say how much must be enlarged |
Definition at line 1621 of file vector_dist.hpp.
|
inline |
Construct a cell list starting from the stored particles.
CellL | CellList type to construct |
r_cut | interation radius, or size of each cell |
no_se3 | avoid SE_CLASS3 checking |
Definition at line 1308 of file vector_dist.hpp.
|
inline |
Construct a cell list from the stored particles.
r_cut | interation radius, or size of each cell |
Definition at line 1449 of file vector_dist.hpp.
|
inline |
Get the Celllist parameters.
r_cut | spacing of the cell-list |
div | division required for the cell-list |
box | where the Cell list must be defined (In general Processor domain + Ghost) |
enlarge | Optionally 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 2892 of file vector_dist.hpp.
|
inline |
Construct a cell list symmetric based on a cut of radius.
CellL | CellList type to construct |
r_cut | interation radius, or size of each cell |
Definition at line 1217 of file vector_dist.hpp.
|
inline |
Construct a cell list symmetric based on a cut of radius.
CellL | CellList type to construct |
r_cut | interation radius, or size of each cell |
Definition at line 1260 of file vector_dist.hpp.
|
inline |
Return from which cell we have to start in case of CRS interation scheme.
NN | cell-list |
Definition at line 3133 of file vector_dist.hpp.
|
inline |
Return from which cell we have to stop in case of CRS interation scheme.
NN | cell-list |
Definition at line 3146 of file vector_dist.hpp.
|
inline |
|
inline |
|
inline |
Get an iterator that traverse the particles in the domain.
Definition at line 2332 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse the particles in the domain.
Definition at line 2346 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse the particles in the domain.
Definition at line 2142 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse the particles in the domain.
Definition at line 2322 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse the particles in the domain using a cell list.
NN | Cell-list |
Definition at line 2117 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse the particles in the domain.
Definition at line 2309 of file vector_dist.hpp.
|
inline |
Get the iterator across the position of the ghost particles.
Definition at line 2089 of file vector_dist.hpp.
|
inline |
Get the iterator across the position of the ghost particles.
Definition at line 2103 of file vector_dist.hpp.
|
inline |
/brief Get a grid Iterator
Usefull function to place particles on a grid or grid-like (grid + noise)
sz | size of the grid |
Definition at line 2070 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse domain and ghost particles.
Definition at line 2037 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse domain and ghost particles.
start | particle |
stop | particle |
Definition at line 2053 of file vector_dist.hpp.
|
inline |
Get the position of the last element.
Definition at line 1118 of file vector_dist.hpp.
|
inline |
Get the position of the last element.
Definition at line 1144 of file vector_dist.hpp.
|
inline |
Get the position of the last element.
Definition at line 1175 of file vector_dist.hpp.
|
inline |
Get the property of the last element.
id | property id |
Definition at line 1130 of file vector_dist.hpp.
|
inline |
Get the property of the last element.
id | property id |
Definition at line 1160 of file vector_dist.hpp.
|
inline |
Get the property of the last element.
id | property id |
Definition at line 1191 of file vector_dist.hpp.
|
inline |
Get a special particle iterator able to iterate across particles using symmetric crossing scheme.
NN | Verlet list neighborhood |
Definition at line 3111 of file vector_dist.hpp.
|
inline |
Get a special particle iterator able to iterate across particles using symmetric crossing scheme.
NN | Cell-List neighborhood |
Definition at line 3049 of file vector_dist.hpp.
|
inline |
Get the position of an element.
see the vector_dist iterator usage to get an element key
vec_key | element |
Definition at line 726 of file vector_dist.hpp.
|
inline |
Get the position of an element.
see the vector_dist iterator usage to get an element key
vec_key | element |
Definition at line 744 of file vector_dist.hpp.
|
inline |
Get the position of an element.
see the vector_dist iterator usage to get an element key
vec_key | element |
Definition at line 761 of file vector_dist.hpp.
|
inline |
Get the position of an element.
see the vector_dist iterator usage to get an element key
vec_key | element |
Definition at line 812 of file vector_dist.hpp.
|
inline |
Get the position of an element.
see the vector_dist iterator usage to get an element key
vec_key | element |
Definition at line 905 of file vector_dist.hpp.
|
inline |
Get the position of an element.
see the vector_dist iterator usage to get an element key
vec_key | element |
Definition at line 919 of file vector_dist.hpp.
|
inline |
Get the position of an element.
see the vector_dist iterator usage to get an element key
vec_key | element |
Definition at line 933 of file vector_dist.hpp.
|
inline |
Get the position of an element.
see the vector_dist iterator usage to get an element key
vec_key | element |
Definition at line 947 of file vector_dist.hpp.
|
inline |
Get the position of an element.
see the vector_dist iterator usage to get an element key
vec_key | element |
Definition at line 778 of file vector_dist.hpp.
|
inline |
Get the position of an element.
see the vector_dist iterator usage to get an element key
vec_key | element |
Definition at line 795 of file vector_dist.hpp.
|
inline |
Get the position of an element.
see the vector_dist iterator usage to get an element key
vec_key | element |
Definition at line 1041 of file vector_dist.hpp.
|
inline |
return the position vector of all the particles
Definition at line 2942 of file vector_dist.hpp.
|
inline |
return the position vector of all the particles
Definition at line 2952 of file vector_dist.hpp.
|
inline |
return the position vector of all the particles
Definition at line 2982 of file vector_dist.hpp.
|
inline |
return the position vector of all the particles
Definition at line 2992 of file vector_dist.hpp.
|
inline |
Get the position of an element.
see the vector_dist iterator usage to get an element key
vec_key | element |
Definition at line 1023 of file vector_dist.hpp.
|
inline |
Get the property of an element.
see the vector_dist iterator usage to get an element key
id | property id |
vec_key | vector element |
Definition at line 830 of file vector_dist.hpp.
|
inline |
Get the property of an element.
see the vector_dist iterator usage to get an element key
id | property id |
vec_key | vector element |
Definition at line 848 of file vector_dist.hpp.
|
inline |
Get the property of an element.
see the vector_dist iterator usage to get an element key
id | property id |
vec_key | vector element |
Definition at line 866 of file vector_dist.hpp.
|
inline |
Get the property of an element.
see the vector_dist iterator usage to get an element key
id | property id |
vec_key | vector element |
Definition at line 884 of file vector_dist.hpp.
|
inline |
Get the properties names.
It is useful to get name for the properties in vtk writers
Definition at line 3097 of file vector_dist.hpp.
|
inline |
Get the property of an element.
see the vector_dist iterator usage to get an element key
id | property id |
vec_key | vector element |
Definition at line 962 of file vector_dist.hpp.
|
inline |
Get the property of an element.
see the vector_dist iterator usage to get an element key
id | property id |
vec_key | vector element |
Definition at line 977 of file vector_dist.hpp.
|
inline |
Get the property of an element.
see the vector_dist iterator usage to get an element key
id | property id |
vec_key | vector element |
Definition at line 992 of file vector_dist.hpp.
|
inline |
Get the property of an element.
see the vector_dist iterator usage to get an element key
id | property id |
vec_key | vector element |
Definition at line 1007 of file vector_dist.hpp.
|
inline |
Get the property of an element.
see the vector_dist iterator usage to get an element key
id | property id |
vec_key | vector element |
Definition at line 1079 of file vector_dist.hpp.
|
inline |
return the property vector of all the particles
Definition at line 2962 of file vector_dist.hpp.
|
inline |
return the property vector of all the particles
Definition at line 2972 of file vector_dist.hpp.
|
inline |
return the property vector of all the particles
Definition at line 3002 of file vector_dist.hpp.
|
inline |
return the property vector of all the particles
Definition at line 3012 of file vector_dist.hpp.
|
inline |
Get the property of an element.
see the vector_dist iterator usage to get an element key
id | property id |
vec_key | vector element |
Definition at line 1060 of file vector_dist.hpp.
|
inline |
Get the Virtual Cluster machine.
Definition at line 2929 of file vector_dist.hpp.
|
inline |
for each particle get the verlet list
r_cut | cut-off radius |
Definition at line 1734 of file vector_dist.hpp.
|
inline |
for each particle get the symmetric verlet list
r_cut | cut-off radius |
Definition at line 1681 of file vector_dist.hpp.
|
inline |
for each particle get the symmetric verlet list
r_cut | cut-off radius |
Definition at line 1655 of file vector_dist.hpp.
|
inline |
It synchronize the properties and position of the ghost particles.
prp | list of properties to get synchronize |
opt | options WITH_POSITION, it send also the positional information of the particles |
Definition at line 2457 of file vector_dist.hpp.
|
inline |
Stub does not do anything.
Definition at line 2443 of file vector_dist.hpp.
|
inline |
It synchronize the properties and position of the ghost particles.
op | which kind of operation to apply |
prp | list of properties to get synchronize |
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 2558 of file vector_dist.hpp.
|
inline |
It synchronize the properties and position of the ghost particles.
prp | list of properties to get synchronize |
opt | options WITH_POSITION, it send also the positional information of the particles |
Definition at line 2521 of file vector_dist.hpp.
|
inline |
Move the memory from the device to host memory.
property | to move use POS_PROP for position property |
Definition at line 3367 of file vector_dist.hpp.
|
inline |
Move the memory from the device to host memory.
property | to move use POS_PROP for position property |
Definition at line 3359 of file vector_dist.hpp.
|
inline |
It synchronize the properties and position of the ghost particles.
prp | list of properties to get synchronize |
opt | options WITH_POSITION, it send also the positional information of the particles |
Definition at line 2495 of file vector_dist.hpp.
|
inline |
It return the number of particles contained by the previous processors.
Given 1000 particles and 3 processors, you will get
np | initial number of particles |
Definition at line 2009 of file vector_dist.hpp.
|
inlineprivate |
Initialize the structures.
np | number of particles |
Definition at line 352 of file vector_dist.hpp.
|
inline |
Initialize the computational cost.
Definition at line 2665 of file vector_dist.hpp.
|
inline |
Indicate that this class is not a subset.
Definition at line 3160 of file vector_dist.hpp.
|
inline |
Load the distributed vector from an HDF5 file.
filename | file from where to load |
Definition at line 2708 of file vector_dist.hpp.
|
inline |
It move all the particles that does not belong to the local processor to the respective processor.
out | of 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
opt | options |
Definition at line 2413 of file vector_dist.hpp.
|
inline |
It move all the particles that does not belong to the local processor to the respective processor.
out | of 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
prp | properties to communicate |
opt | options |
Definition at line 2384 of file vector_dist.hpp.
|
inline |
Operator= for distributed vector.
v | vector to copy |
Definition at line 487 of file vector_dist.hpp.
|
inline |
Operator= for distributed vector.
v | vector to copy |
Definition at line 512 of file vector_dist.hpp.
|
inline |
Remove a set of elements from the distributed vector.
keys | vector of elements to eliminate |
start | from where to eliminate |
Definition at line 2574 of file vector_dist.hpp.
|
inline |
Remove a set of elements from the distributed vector.
keys | vector of elements to eliminate |
start | from where to eliminate |
Definition at line 2590 of file vector_dist.hpp.
|
inline |
Remove one element from the distributed vector.
key | remove one element from the vector |
Definition at line 2603 of file vector_dist.hpp.
|
inline |
Construct a cell list starting from the stored particles and reorder a vector according to the Hilberts curve.
CellL | CellList type to construct |
m | an order of a hilbert curve |
Definition at line 1861 of file vector_dist.hpp.
|
inline |
Construct a cell list starting from the stored particles and reorder a vector according to the Hilberts curve.
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)
m | order of a curve |
enlarge | In case of padding particles the cell list must be enlarged, like a ghost this parameter say how much must be enlarged |
Definition at line 1881 of file vector_dist.hpp.
|
inline |
Construct a cell list starting from the stored particles and reorder a vector according to the Hilberts curve.
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)
m | order of a curve |
enlarge | In case of padding particles the cell list must be enlarged, like a ghost this parameter say how much must be enlarged |
Definition at line 1967 of file vector_dist.hpp.
|
inlineprivate |
Reorder based on hilbert space filling curve.
v_pos_dest | reordered vector of position |
v_prp_dest | reordered vector of properties |
m | order of the space filling curve |
cell_list | cell-list |
Definition at line 417 of file vector_dist.hpp.
|
inline |
Resize the vector (locally)
rs |
Definition at line 2805 of file vector_dist.hpp.
|
inline |
Save the distributed vector on HDF5 file.
filename | file where to save |
Definition at line 2696 of file vector_dist.hpp.
|
inline |
|
inline |
Set the properties names.
It is useful to specify name for the properties in vtk writers
names | set of properties names |
Definition at line 3087 of file vector_dist.hpp.
|
inline |
Set reference counter to one
Definition at line 661 of file vector_dist.hpp.
|
inline |
return the local size of the vector
Definition at line 690 of file vector_dist.hpp.
|
inline |
return the local size of the vector
Definition at line 700 of file vector_dist.hpp.
|
inline |
return the local size of the vector
Definition at line 710 of file vector_dist.hpp.
|
inline |
Update a cell list using the stored particles.
CellL | CellList type to construct |
cell_list | Cell list to update |
no_se3 | avoid se class 3 checking |
Definition at line 1493 of file vector_dist.hpp.
|
inline |
Update a cell list using the stored particles.
CellL | CellList type to construct |
cell_list | Cell list to update |
Definition at line 1533 of file vector_dist.hpp.
|
inline |
for each particle get the verlet list
r_cut | cut-off radius |
ver | Verlet to update |
r_cut | cutoff radius |
opt | option like VL_SYMMETRIC and VL_NON_SYMMETRIC or VL_CRS_SYMMETRIC |
Definition at line 1767 of file vector_dist.hpp.
|
inline |
It return the id of structure in the allocation list.
Definition at line 2914 of file vector_dist.hpp.
|
inline |
Output particle position and properties.
out | output filename |
opt | VTK_WRITER, CSV_WRITER, it is also possible to choose the format for VTK FORMAT_BINARY. (the default is ASCII format) |
Definition at line 2735 of file vector_dist.hpp.
|
inline |
Output particle position and properties.
out | output filename |
meta_info | meta information example ("time = 1.234" add the information time to the VTK file) |
opt | VTK_WRITER, CSV_WRITER, it is also possible to choose the format for VTK FORMAT_BINARY. (the default is ASCII format) |
Definition at line 2750 of file vector_dist.hpp.
|
inline |
Output particle position and properties.
out | output |
iteration | (we can append the number at the end of the file_name) |
meta_info | meta information example ("time = 1.234" add the information time to the VTK file) |
opt | VTK_WRITER, CSV_WRITER, it is also possible to choose the format for VTK FORMAT_BINARY. (the default is ASCII format) |
Definition at line 2830 of file vector_dist.hpp.
|
inline |
Output particle position and properties.
out | output |
iteration | (we can append the number at the end of the file_name) |
meta_info | meta information example ("time = 1.234" add the information time to the VTK file) |
opt | VTK_WRITER, CSV_WRITER, it is also possible to choose the format for VTK FORMAT_BINARY. (the default is ASCII format) |
Definition at line 2846 of file vector_dist.hpp.
|
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 317 of file vector_dist.hpp.
|
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 321 of file vector_dist.hpp.