OpenFPM  5.2.0
Project that contain the implementation of distributed structures
Mem_mw< local_index > Class Template Reference

Class for MEMORY-WISE cell list implementation. More...

#include <MemMemoryWise.hpp>

Public Types

typedef void toKernel_type
 
typedef local_index local_index_type
 expose the type of the local index
 

Public Member Functions

void init_to_zero (local_index slot, local_index tot_n_cell)
 Initialize the data structure to zeros. More...
 
Mem_mwoperator= (const Mem_mw &cell)
 Copy two data-structure. More...
 
void addCell (local_index cell_id, typename base::value_type ele)
 Add an element to the cell. More...
 
void remove (local_index cell, local_index ele)
 Remove an element from the cell. More...
 
size_t getNelements (const local_index cell_id) const
 Get the number of elements in the cell. More...
 
auto get (local_index cell, local_index ele) -> decltype(cl_base[0].get(0)) &
 
auto get (local_index cell, local_index ele) const -> decltype(cl_base.find(cell) ->second.get(0)) &
 
void addCellGhostMarkers ()
 Add ghost marker to the cell. More...
 
size_t getGhostMarker (local_index cell_id) const
 Get ghost marker of the cell.
 
void swap (Mem_mw &cl)
 
void swap (Mem_mw &&cell)
 
void clear ()
 
const local_index & getStartId (size_t cell_id) const
 
const local_index & getGhostId (size_t cell_id) const
 
const local_index & getStopId (size_t cell_id) const
 
const local_index & get_lin (const local_index *cell_id) const
 
 Mem_mw (size_t slot)
 constructor More...
 
void set_slot (size_t slot)
 Set the number of slots. More...
 

Private Types

typedef openfpm::vector< local_index > base
 Base type storing information.
 

Private Attributes

std::unordered_map< local_index, basecl_base
 
std::remove_reference< decltype(std::declval< openfpm::vector< local_index >>().get(0))>::type invalid
 In case of invalid element return this.
 
std::unordered_map< local_index, size_t > ghostMarkers
 ghost marker for every cell (non-ghost particles < gm (ghost marker))
 

Detailed Description

template<typename local_index = size_t>
class Mem_mw< local_index >

Class for MEMORY-WISE cell list implementation.

This class implement the MEMORY-WISE cell list The memory allocation is small. The memory allocation is (in byte) Size = O(N*size_of(ele))

Where

N = total number of elements M = number of cells sizeof(ele) = the size of the element the cell list is storing, example if the cell list store the particle id (64bit) is 8 byte

Note
It is useful when M >> N
Template Parameters
dimDimensionality of the space
Ttype of the space float, double, complex

Definition at line 33 of file MemMemoryWise.hpp.

Constructor & Destructor Documentation

◆ Mem_mw()

template<typename local_index = size_t>
Mem_mw< local_index >::Mem_mw ( size_t  slot)
inline

constructor

Parameters
slotnumber of slots (unused)

Definition at line 226 of file MemMemoryWise.hpp.

Member Function Documentation

◆ addCell()

template<typename local_index = size_t>
void Mem_mw< local_index >::addCell ( local_index  cell_id,
typename base::value_type  ele 
)
inline

Add an element to the cell.

Parameters
cell_idcell-id
eleelement to add

Definition at line 88 of file MemMemoryWise.hpp.

◆ addCellGhostMarkers()

template<typename local_index = size_t>
void Mem_mw< local_index >::addCellGhostMarkers ( )
inline

Add ghost marker to the cell.

Parameters
cell_idid of the cell
g_mghost marker to add

Definition at line 146 of file MemMemoryWise.hpp.

◆ getNelements()

template<typename local_index = size_t>
size_t Mem_mw< local_index >::getNelements ( const local_index  cell_id) const
inline

Get the number of elements in the cell.

Parameters
cell_id
Returns
the number of elements

Definition at line 113 of file MemMemoryWise.hpp.

◆ init_to_zero()

template<typename local_index = size_t>
void Mem_mw< local_index >::init_to_zero ( local_index  slot,
local_index  tot_n_cell 
)
inline

Initialize the data structure to zeros.

In this case it does nothing

Parameters
slots
tot_n_celltotal number of cells

Definition at line 63 of file MemMemoryWise.hpp.

◆ operator=()

template<typename local_index = size_t>
Mem_mw& Mem_mw< local_index >::operator= ( const Mem_mw< local_index > &  cell)
inline

Copy two data-structure.

Parameters
celldata-structure to copy
Returns
itself

Definition at line 75 of file MemMemoryWise.hpp.

◆ remove()

template<typename local_index = size_t>
void Mem_mw< local_index >::remove ( local_index  cell,
local_index  ele 
)
inline

Remove an element from the cell.

Parameters
cellcell-id
eleelement to remove

Definition at line 101 of file MemMemoryWise.hpp.

◆ set_slot()

template<typename local_index = size_t>
void Mem_mw< local_index >::set_slot ( size_t  slot)
inline

Set the number of slots.

Parameters
slotunused

Definition at line 236 of file MemMemoryWise.hpp.

Field Documentation

◆ cl_base

template<typename local_index = size_t>
std::unordered_map<local_index,base> Mem_mw< local_index >::cl_base
private

each cell has a dynamic structure that store the elements in the cell

Definition at line 40 of file MemMemoryWise.hpp.


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