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 299 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 St | stype |
typedef prop | value_type |
typedef Decomposition | Decomposition_type |
typedef Memory | Memory_type |
typedef decltype(v_pos) | internal_position_vector_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. | |
vector_dist< dim, St, prop, Decomposition, Memory, layout_base > & | operator= (vector_dist< dim, St, prop, Decomposition, Memory, layout_base > &&v) |
Operator= for distributed vector. | |
vector_dist (const vector_dist< dim, St, prop, Decomposition, Memory, layout_base > &v) | |
Copy Constructor. | |
vector_dist (vector_dist< dim, St, prop, Decomposition, Memory, layout_base > &&v) noexcept | |
Copy constructor. | |
vector_dist (const Decomposition &dec, size_t np) | |
Constructor with predefined decomposition. | |
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. | |
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. | |
void | setReferenceCounterToOne () |
void | clear () |
remove all the elements | |
size_t | size_local () const |
return the local size of the vector | |
size_t | size_local_orig () const |
return the local size of the vector | |
size_t | size_local_with_ghost () const |
return the local size of the vector | |
auto | getPos (vect_dist_key_dx vec_key) -> decltype(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. | |
auto | getPos (vect_dist_key_dx vec_key) const -> decltype(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. | |
auto | getPos (size_t vec_key) -> decltype(v_pos.template get< 0 >(vec_key)) |
Get the position of an element. | |
auto | getPosOrig (vect_dist_key_dx vec_key) const -> decltype(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. | |
auto | getPosOrig (size_t vec_key) -> decltype(v_pos.template get< 0 >(vec_key)) |
Get the position of an element. | |
auto | getPos (size_t vec_key) const -> decltype(v_pos.template get< 0 >(vec_key)) |
Get the position of an element. | |
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. | |
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. | |
template<unsigned int id> | |
auto | getProp (size_t vec_key) -> decltype(v_prp.template get< id >(vec_key)) |
Get the property of an element. | |
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. | |
auto | getPosNC (vect_dist_key_dx vec_key) -> decltype(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. | |
auto | getPosNC (vect_dist_key_dx vec_key) const -> decltype(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. | |
auto | getPosNC (size_t vec_key) -> decltype(v_pos.template get< 0 >(vec_key)) |
Get the position of an element. | |
auto | getPosNC (size_t vec_key) const -> decltype(v_pos.template get< 0 >(vec_key)) |
Get the position of an element. | |
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. | |
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. | |
template<unsigned int id> | |
auto | getPropNC (size_t vec_key) -> decltype(v_prp.template get< id >(vec_key)) |
Get the property of an element. | |
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. | |
auto | getPosWrite (vect_dist_key_dx vec_key) -> decltype(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. | |
auto | getPosRead (vect_dist_key_dx vec_key) const -> decltype(v_pos.template get< 0 >(vec_key.getKey())) |
Get the position of an element. | |
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. | |
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. | |
void | add () |
Add local particle. | |
void | addAtEnd () |
Add at the END of local and ghost particle. | |
auto | getLastPos () -> decltype(v_pos.template get< 0 >(0)) |
Get the position of the last element. | |
auto | getLastPosEnd () -> decltype(v_pos.template get< 0 >(0)) |
Get the position of the last element after ghost. | |
template<unsigned int id> | |
auto | getLastProp () -> decltype(v_prp.template get< id >(0)) |
Get the property of the last element. | |
auto | getLastPosRead () -> decltype(v_pos.template get< 0 >(0)) |
Get the position of the last element. | |
template<unsigned int id> | |
auto | getLastPropRead () -> decltype(v_prp.template get< id >(0)) |
Get the property of the last element. | |
auto | getLastPosWrite () -> decltype(v_pos.template get< 0 >(0)) |
Get the position of the last element. | |
template<unsigned int id> | |
auto | getLastPropWrite () -> decltype(v_prp.template get< id >(0)) |
Get the property of the last element. | |
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. | |
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. | |
template<unsigned int impl> | |
cell_list_selector< self, impl >::ctype | getCellListDev (St r_cut) |
Construct a cell list starting from the stored particles. | |
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. | |
auto | getCellListDevice (St r_cut, bool no_se3=false) -> decltype(this->getCellList(r_cut, no_se3)) |
Construct a cell list from the stored particles. | |
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. | |
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. | |
template<typename CellL = CellList<dim, St, Mem_fast<>, shift<dim, St> >> | |
void | updateCellListSym (CellL &cell_list) |
Update a cell list using the stored particles. | |
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. | |
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. | |
template<typename VerletL = VerletList<dim,St,Mem_fast<>,shift<dim,St> >> | |
VerletL | getVerletSym (St r_cut) |
for each particle get the symmetric verlet list | |
template<typename VerletL = VerletList<dim,St,Mem_fast<>,shift<dim,St> >> | |
VerletL | getVerletCrs (St r_cut) |
for each particle get the symmetric verlet list | |
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 | |
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 | |
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. | |
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. | |
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. | |
size_t | init_size_accum (size_t np) |
It return the number of particles contained by the previous processors. | |
vector_dist_iterator | getIterator () |
Get an iterator that traverse domain and ghost particles. | |
vector_dist_iterator | getIterator (size_t start, size_t stop) |
Get an iterator that traverse domain and ghost particles. | |
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. | |
vector_dist_iterator | getGhostIterator_no_se3 () const |
Get the iterator across the position of the ghost particles. | |
template<typename CellList > | |
ParticleIt_Cells< dim, CellList > | getDomainIteratorCells (CellList &NN) |
Get an iterator that traverse the particles in the domain using a cell list. | |
vector_dist_iterator | getDomainIterator () const |
Get an iterator that traverse the particles in the domain. | |
auto | getDomainIteratorDevice (size_t n_thr=default_kernel_wg_threads_) const -> decltype(this->getDomainIterator()) |
Get an iterator that traverse the particles in the domain. | |
vector_dist_iterator | getDomainIterator_no_se3 () const |
Get an iterator that traverse the particles in the domain. | |
vector_dist_iterator | getDomainAndGhostIterator () const |
Get an iterator that traverse the particles in the domain. | |
vector_dist_iterator | getDomainAndGhostIterator_no_se3 () const |
Get an iterator that traverse the particles in the domain. | |
Decomposition & | getDecomposition () |
Get the decomposition. | |
const Decomposition & | getDecomposition () const |
Get the decomposition. | |
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. | |
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. | |
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. | |
template<int ... prp> | |
void | Ighost_get (size_t opt=WITH_POSITION) |
It synchronize the properties and position of the ghost particles. | |
template<int ... prp> | |
void | ghost_wait (size_t opt=WITH_POSITION) |
It synchronize the properties and position of the ghost particles. | |
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. | |
void | remove (openfpm::vector< size_t > &keys, size_t start=0) |
Remove a set of elements from the distributed vector. | |
void | remove (openfpm::vector< aggregate< int > > &keys, size_t start=0) |
Remove a set of elements from the distributed vector. | |
void | remove (size_t key) |
Remove one element from the distributed vector. | |
template<typename Model = ModelLin> | |
void | addComputationCosts (const self &vd, Model md=Model()) |
Add the computation cost on the decomposition coming from the particles. | |
template<typename Model = ModelLin> | |
void | finalizeComputationCosts (Model md=Model(), size_t ts=1) |
Add the computation cost on the decomposition coming from the particles. | |
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. | |
void | save (const std::string &filename) const |
Save the distributed vector on HDF5 file. | |
void | load (const std::string &filename) |
Load the distributed vector from an HDF5 file. | |
void | setCapacity (unsigned int ns) |
Reserve space for the internal vectors. | |
bool | write (std::string out, int opt=VTK_WRITER) |
Output particle position and properties. | |
bool | write (std::string out, std::string meta_info, int opt=VTK_WRITER) |
Output particle position and properties. | |
void | deleteGhost () |
Delete the particles on the ghost. | |
void | resize (size_t rs) |
Resize the vector (locally) | |
void | resizeAtEnd (size_t rs) |
Resize the vector at the end of the ghost (locally) | |
bool | write_frame (std::string out, size_t iteration, int opt=VTK_WRITER) |
Output particle position and properties. | |
bool | write_frame (std::string out, size_t iteration, std::string meta_info, int opt=VTK_WRITER) |
Output particle position and properties. | |
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. | |
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. | |
long int | who () |
It return the id of structure in the allocation list. | |
Vcluster< Memory > & | getVC () |
Get the Virtual Cluster machine. | |
const vector_dist_pos & | getPosVector () const |
return the position vector of all the particles | |
vector_dist_pos & | getPosVector () |
return the position vector of all the particles | |
const vector_dist_prop & | getPropVector () const |
return the property vector of all the particles | |
vector_dist_prop & | getPropVector () |
return the property vector of all the particles | |
const vector_dist_pos & | getPosVectorSort () const |
return the position vector of all the particles | |
vector_dist_pos & | getPosVectorSort () |
return the position vector of all the particles | |
const vector_dist_prop & | getPropVectorSort () const |
return the property vector of all the particles | |
vector_dist_prop & | getPropVectorSort () |
return the property vector of all the particles | |
size_t | accum () |
It return the sum of the particles in the previous processors. | |
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. | |
void | setPropNames (const openfpm::vector< std::string > &names) |
Set the properties names. | |
openfpm::vector< std::string > & | getPropNames () |
Get the properties names. | |
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. | |
template<typename Celllist > | |
grid_key_dx< dim > | getCRSStart (Celllist &NN) |
Return from which cell we have to start in case of CRS interation scheme. | |
template<typename Celllist > | |
grid_key_dx< dim > | getCRSStop (Celllist &NN) |
Return from which cell we have to stop in case of CRS interation scheme. | |
bool | isSubset () const |
Indicate that this class is not a subset. | |
template<unsigned int ... prp> | |
void | deviceToHostProp () |
Move the memory from the device to host memory. | |
void | deviceToHostPos () |
Move the memory from the device to host memory. | |
template<unsigned int ... prp> | |
void | hostToDeviceProp () |
Move the memory from the device to host memory. | |
void | hostToDevicePos () |
Move the memory from the device to host memory. | |
Public Member Functions inherited from vector_dist_comm< dim, St, prop, Decomposition, Memory, layout_base > | |
vector_dist_comm (const vector_dist_comm< dim, St, prop, Decomposition, Memory, layout_base > &v) | |
Copy Constructor. | |
vector_dist_comm (const Decomposition &dec) | |
Constructor. | |
vector_dist_comm (Decomposition &&dec) | |
Constructor. | |
vector_dist_comm () | |
Constructor. | |
~vector_dist_comm () | |
Destructor. | |
size_t | getDecompositionGranularity () |
Get the number of minimum sub-domain per processor. | |
void | setDecompositionGranularity (size_t n_sub) |
Set the minimum number of sub-domain per processor. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
Decomposition & | getDecomposition () |
Get the decomposition. | |
const Decomposition & | getDecomposition () const |
Get the decomposition. | |
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. | |
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. | |
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. | |
Static Public Attributes | |
static const unsigned int | dims = dim |
template parameters typedefs | |
Private Member Functions | |
void | init_structures (size_t np) |
Initialize the structures. | |
void | check_parameters (Box< dim, St > &box) |
Check if the parameters describe a valid vector. In case it does not report an error. | |
void | check_ghost_compatible_rcut (St r_cut) |
It check that the r_cut is not bugger than the ghost. | |
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. | |
Private Member Functions inherited from vector_dist_ker_list< int > | |
void | add (int &v, bool is_sorted) |
Add a new vector_dist_kernel to track. | |
void | update (const int &v) |
Update the addresses of all vector_dist_kernels around. | |
void | update_sort (const int &vs) |
void | remove (int &v) |
Remove one vector_dist_kernels entry. | |
size_t | n_entry () |
Return the number of entries. | |
bool | check (const int &v) |
Check that all the entries are aligned to the latest vector_dist_ker_type. | |
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. | |
typedef CellList<dim, St, Mem_fast<>, shift<dim, St>, internal_position_vector_type > vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::CellList_type |
Definition at line 466 of file vector_dist.hpp.
typedef Decomposition vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::Decomposition_type |
Definition at line 316 of file vector_dist.hpp.
typedef decltype(v_pos) vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::internal_position_vector_type |
Definition at line 464 of file vector_dist.hpp.
typedef std::integral_constant<bool,false> vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::is_it_a_subset |
yes I am vector subset dist
Definition at line 472 of file vector_dist.hpp.
typedef Memory vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::Memory_type |
Definition at line 317 of file vector_dist.hpp.
typedef vector_dist<dim,St,prop,Decomposition,Memory,layout_base> vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::self |
Self type.
Definition at line 310 of file vector_dist.hpp.
typedef St vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::stype |
Definition at line 314 of file vector_dist.hpp.
typedef prop vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::value_type |
Definition at line 315 of file vector_dist.hpp.
typedef int vector_dist< dim, St, prop, Decomposition, Memory, layout_base, vector_dist_pos, vector_dist_prop >::yes_i_am_vector_dist |
yes I am vector dist
Definition at line 469 of file vector_dist.hpp.
|
inline |
Definition at line 526 of file vector_dist.hpp.
|
inline |
|
inlinenoexcept |
|
inline |
Constructor with predefined decomposition.
dec | is the decomposition |
np | number of particles |
Definition at line 569 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 595 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 625 of file vector_dist.hpp.
|
inline |
Definition at line 647 of file vector_dist.hpp.
|
inline |
It return the sum of the particles in the previous processors.
Definition at line 3126 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 1094 of file vector_dist.hpp.
|
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 1117 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 2642 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 2706 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 405 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 389 of file vector_dist.hpp.
|
inline |
remove all the elements
Definition at line 676 of file vector_dist.hpp.
|
inline |
Delete the particles on the ghost.
Definition at line 2820 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 3455 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 3447 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 2671 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 1347 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 1602 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 1491 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 1644 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 1331 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 1472 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 2996 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 1283 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 1240 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 3237 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 3250 of file vector_dist.hpp.
|
inline |
|
inline |
|
inline |
Get an iterator that traverse the particles in the domain.
Definition at line 2355 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse the particles in the domain.
Definition at line 2369 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse the particles in the domain.
Definition at line 2165 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse the particles in the domain.
Definition at line 2345 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 2140 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse the particles in the domain.
Definition at line 2332 of file vector_dist.hpp.
|
inline |
Get the iterator across the position of the ghost particles.
Definition at line 2112 of file vector_dist.hpp.
|
inline |
Get the iterator across the position of the ghost particles.
Definition at line 2126 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 2093 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse domain and ghost particles.
Definition at line 2060 of file vector_dist.hpp.
|
inline |
Get an iterator that traverse domain and ghost particles.
start | particle |
stop | particle |
Definition at line 2076 of file vector_dist.hpp.
|
inline |
Get the position of the last element.
Definition at line 1130 of file vector_dist.hpp.
|
inline |
Get the position of the last element after ghost.
Definition at line 1141 of file vector_dist.hpp.
|
inline |
Get the position of the last element.
Definition at line 1167 of file vector_dist.hpp.
|
inline |
Get the position of the last element.
Definition at line 1198 of file vector_dist.hpp.
|
inline |
Get the property of the last element.
id | property id |
Definition at line 1153 of file vector_dist.hpp.
|
inline |
Get the property of the last element.
id | property id |
Definition at line 1183 of file vector_dist.hpp.
|
inline |
Get the property of the last element.
id | property id |
Definition at line 1214 of file vector_dist.hpp.
|
inline |
Definition at line 1225 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 3215 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 3153 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 757 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 808 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 722 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 740 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 929 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 943 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 901 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 915 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 791 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 774 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 1037 of file vector_dist.hpp.
|
inline |
return the position vector of all the particles
Definition at line 3056 of file vector_dist.hpp.
|
inline |
return the position vector of all the particles
Definition at line 3046 of file vector_dist.hpp.
|
inline |
return the position vector of all the particles
Definition at line 3096 of file vector_dist.hpp.
|
inline |
return the position vector of all the particles
Definition at line 3086 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 1019 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 862 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 880 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 826 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 844 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 3201 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 988 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 1003 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 958 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 973 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 1075 of file vector_dist.hpp.
|
inline |
return the property vector of all the particles
Definition at line 3076 of file vector_dist.hpp.
|
inline |
return the property vector of all the particles
Definition at line 3066 of file vector_dist.hpp.
|
inline |
return the property vector of all the particles
Definition at line 3116 of file vector_dist.hpp.
|
inline |
return the property vector of all the particles
Definition at line 3106 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 1056 of file vector_dist.hpp.
|
inline |
Get the Virtual Cluster machine.
Definition at line 3033 of file vector_dist.hpp.
|
inline |
for each particle get the verlet list
r_cut | cut-off radius |
Definition at line 1757 of file vector_dist.hpp.
|
inline |
for each particle get the symmetric verlet list
r_cut | cut-off radius |
Definition at line 1704 of file vector_dist.hpp.
|
inline |
for each particle get the symmetric verlet list
r_cut | cut-off radius |
Definition at line 1678 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 2481 of file vector_dist.hpp.
|
inline |
Stub does not do anything.
Definition at line 2466 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 2582 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 2545 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 3471 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 3463 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 2519 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 2032 of file vector_dist.hpp.
|
inlineprivate |
Initialize the structures.
np | number of particles |
Definition at line 361 of file vector_dist.hpp.
|
inline |
Initialize the computational cost.
Definition at line 2689 of file vector_dist.hpp.
|
inline |
Indicate that this class is not a subset.
Definition at line 3264 of file vector_dist.hpp.
|
inline |
Load the distributed vector from an HDF5 file.
filename | file from where to load |
Definition at line 2732 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 2436 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 2407 of file vector_dist.hpp.
|
inline |
Operator= for distributed vector.
v | vector to copy |
Definition at line 483 of file vector_dist.hpp.
|
inline |
Operator= for distributed vector.
v | vector to copy |
Definition at line 508 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 2614 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 2598 of file vector_dist.hpp.
|
inline |
Remove one element from the distributed vector.
key | remove one element from the vector |
Definition at line 2627 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 1904 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 1884 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 1990 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 426 of file vector_dist.hpp.
|
inline |
Resize the vector (locally)
rs |
Definition at line 2833 of file vector_dist.hpp.
|
inline |
Resize the vector at the end of the ghost (locally)
rs |
Definition at line 2854 of file vector_dist.hpp.
|
inline |
Save the distributed vector on HDF5 file.
filename | file where to save |
Definition at line 2720 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 3191 of file vector_dist.hpp.
|
inline |
Set reference counter to one
Definition at line 657 of file vector_dist.hpp.
|
inline |
return the local size of the vector
Definition at line 686 of file vector_dist.hpp.
|
inline |
return the local size of the vector
Definition at line 696 of file vector_dist.hpp.
|
inline |
return the local size of the vector
Definition at line 706 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 1516 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 1556 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 1790 of file vector_dist.hpp.
|
inline |
It return the id of structure in the allocation list.
Definition at line 3018 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 2759 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 2774 of file vector_dist.hpp.
|
inline |
Output particle position and properties and add a time stamp to pvtp.
out | output |
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) |
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 2945 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 2874 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 2890 of file vector_dist.hpp.
|
static |
template parameters typedefs
Definition at line 313 of file vector_dist.hpp.
|
private |
Ghost marker, all the particle with id > g_m are ghost all with g_m < are real particle.
Definition at line 322 of file vector_dist.hpp.
|
private |
option used to create this vector
Definition at line 339 of file vector_dist.hpp.
|
private |
Name of the properties.
Definition at line 342 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 326 of file vector_dist.hpp.
|
private |
reordered v_prp buffer
Definition at line 336 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 330 of file vector_dist.hpp.
|
private |
reordered v_pos buffer
Definition at line 333 of file vector_dist.hpp.