OpenLB 1.8.1
Loading...
Searching...
No Matches
olb::ConcreteCommunicatable< ColumnVector< COLUMN, D > > Class Template Referencefinal

#include <columnVector.h>

+ Inheritance diagram for olb::ConcreteCommunicatable< ColumnVector< COLUMN, D > >:
+ Collaboration diagram for olb::ConcreteCommunicatable< ColumnVector< COLUMN, D > >:

Public Member Functions

 ConcreteCommunicatable (ColumnVector< COLUMN, D > &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, unsigned D>
class olb::ConcreteCommunicatable< ColumnVector< COLUMN, D > >

Definition at line 283 of file columnVector.h.

Constructor & Destructor Documentation

◆ ConcreteCommunicatable()

template<typename COLUMN , unsigned D>
olb::ConcreteCommunicatable< ColumnVector< COLUMN, D > >::ConcreteCommunicatable ( ColumnVector< COLUMN, D > & vector)
inline

Definition at line 288 of file columnVector.h.

288 :
289 _vector{vector} { }

Member Function Documentation

◆ deserialize()

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

Deserialize data at locations indices to buffer

Implements olb::Communicatable.

Definition at line 317 of file columnVector.h.

319 {
320 std::size_t size = ConcreteCommunicatable<COLUMN>(_vector[0]).size(indices);
321 const std::uint8_t* curr = buffer;
322 #ifdef PARALLEL_MODE_OMP
323 #pragma omp parallel for schedule(static,1)
324 #endif
325 for (unsigned iD=0; iD < D; ++iD) {
326 ConcreteCommunicatable<COLUMN>(_vector[iD]).deserialize(indices, curr + iD*size);
327 }
328 return D * size;
329 }
ConcreteCommunicatable(ColumnVector< COLUMN, D > &vector)
std::size_t size(ConstSpan< CellID > indices) const
Get serialized size for data at locations indices

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

+ Here is the call graph for this function:

◆ serialize()

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

Serialize data at locations indices to buffer

Implements olb::Communicatable.

Definition at line 302 of file columnVector.h.

304 {
305 std::size_t size = ConcreteCommunicatable<COLUMN>(_vector[0]).size(indices);
306 std::uint8_t* curr = buffer;
307 #ifdef PARALLEL_MODE_OMP
308 #pragma omp parallel for schedule(static,1)
309 #endif
310 for (unsigned iD=0; iD < D; ++iD) {
311 ConcreteCommunicatable<COLUMN>(_vector[iD]).serialize(indices, curr + iD*size);
312 }
313 return D * size;
314 }

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

+ Here is the call graph for this function:

◆ size()

template<typename COLUMN , unsigned D>
std::size_t olb::ConcreteCommunicatable< ColumnVector< COLUMN, D > >::size ( ConstSpan< CellID > indices) const
inlinevirtual

Get serialized size for data at locations indices

Implements olb::Communicatable.

Definition at line 292 of file columnVector.h.

293 {
294 std::size_t size = 0;
295 for (unsigned iD=0; iD < D; ++iD) {
296 size += ConcreteCommunicatable<COLUMN>(_vector[iD]).size(indices);
297 }
298 return size;
299 }

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

+ Here is the call graph for this function:

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