OpenLB 1.7
Loading...
Searching...
No Matches
Public Member Functions | List of all members
olb::ConcreteCommunicatable< std::vector< COLUMN > > Class Template Referencefinal

#include <communicatable.h>

+ Inheritance diagram for olb::ConcreteCommunicatable< std::vector< COLUMN > >:
+ Collaboration diagram for olb::ConcreteCommunicatable< std::vector< COLUMN > >:

Public Member Functions

 ConcreteCommunicatable (std::vector< COLUMN > &vector)
 
std::size_t size (ConstSpan< CellID > indices) const
 Get serialized size for data at locations indices
 
std::size_t serialize (ConstSpan< CellID > indices, std::uint8_t *buffer) const
 Serialize data at locations indices to buffer
 
std::size_t deserialize (ConstSpan< CellID > indices, const std::uint8_t *buffer)
 Deserialize data at locations indices to buffer
 
- Public Member Functions inherited from olb::Communicatable
virtual ~Communicatable ()
 

Detailed Description

template<typename COLUMN>
class olb::ConcreteCommunicatable< std::vector< COLUMN > >

Definition at line 205 of file communicatable.h.

Constructor & Destructor Documentation

◆ ConcreteCommunicatable()

template<typename COLUMN >
olb::ConcreteCommunicatable< std::vector< COLUMN > >::ConcreteCommunicatable ( std::vector< COLUMN > & vector)
inline

Definition at line 210 of file communicatable.h.

210 :
211 _vector{vector} { }

Member Function Documentation

◆ deserialize()

template<typename COLUMN >
std::size_t olb::ConcreteCommunicatable< std::vector< COLUMN > >::deserialize ( ConstSpan< CellID > indices,
const std::uint8_t * buffer )
inlinevirtual

Deserialize data at locations indices to buffer

Implements olb::Communicatable.

Definition at line 239 of file communicatable.h.

241 {
242 std::size_t size = ConcreteCommunicatable<COLUMN>(_vector[0]).size(indices);
243 const std::uint8_t* curr = buffer;
244 #ifdef PARALLEL_MODE_OMP
245 #pragma omp parallel for schedule(static,1)
246 #endif
247 for (unsigned iD=0; iD < _vector.size(); ++iD) {
248 ConcreteCommunicatable<COLUMN>(_vector[iD]).deserialize(indices, curr + iD*size);
249 }
250 return _vector.size() * size;
251 }
std::size_t size(ConstSpan< CellID > indices) const
Get serialized size for data at locations indices

References olb::ConcreteCommunicatable< COMMUNICATEE >::deserialize(), olb::ConcreteCommunicatable< COMMUNICATEE >::size(), and olb::ConcreteCommunicatable< COMMUNICATEE >::size().

+ Here is the call graph for this function:

◆ serialize()

template<typename COLUMN >
std::size_t olb::ConcreteCommunicatable< std::vector< COLUMN > >::serialize ( ConstSpan< CellID > indices,
std::uint8_t * buffer ) const
inlinevirtual

Serialize data at locations indices to buffer

Implements olb::Communicatable.

Definition at line 224 of file communicatable.h.

226 {
227 std::size_t size = ConcreteCommunicatable<COLUMN>(_vector[0]).size(indices);
228 std::uint8_t* curr = buffer;
229 #ifdef PARALLEL_MODE_OMP
230 #pragma omp parallel for schedule(static,1)
231 #endif
232 for (unsigned iD=0; iD < _vector.size(); ++iD) {
233 ConcreteCommunicatable<COLUMN>(_vector[iD]).serialize(indices, curr + iD*size);
234 }
235 return _vector.size() * size;
236 }

References olb::ConcreteCommunicatable< COMMUNICATEE >::serialize(), olb::ConcreteCommunicatable< COMMUNICATEE >::size(), and olb::ConcreteCommunicatable< COMMUNICATEE >::size().

+ Here is the call graph for this function:

◆ size()

template<typename COLUMN >
std::size_t olb::ConcreteCommunicatable< std::vector< COLUMN > >::size ( ConstSpan< CellID > indices) const
inlinevirtual

Get serialized size for data at locations indices

Implements olb::Communicatable.

Definition at line 214 of file communicatable.h.

215 {
216 std::size_t size = 0;
217 for (unsigned iD=0; iD < _vector.size(); ++iD) {
218 size += ConcreteCommunicatable<COLUMN>(_vector[iD]).size(indices);
219 }
220 return size;
221 }

References olb::ConcreteCommunicatable< COMMUNICATEE >::size(), and olb::ConcreteCommunicatable< COMMUNICATEE >::size().

+ Here is the call graph for this function:

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