OpenLB 1.8.1
Loading...
Searching...
No Matches
olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, PLATFORM > >::RecvTask Class Reference

Wrapper for a non-blocking block propagation receive request. More...

#include <blockLattice.hh>

+ Collaboration diagram for olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, PLATFORM > >::RecvTask:

Classes

class  ref
 Manual replacement for std::reference_wrapper<RecvTask> More...
 

Public Member Functions

 RecvTask (MPI_Comm comm, int tag, int rank, const std::vector< std::type_index > &fields, const std::vector< CellID > &cells, ConcreteBlockLattice< T, DESCRIPTOR, PLATFORM > &block)
 
bool operator< (const RecvTask &rhs) const
 
void receive ()
 
bool isDone ()
 
void unpack ()
 

Detailed Description

template<typename T, typename DESCRIPTOR, Platform PLATFORM>
class olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, PLATFORM > >::RecvTask

Wrapper for a non-blocking block propagation receive request.

Definition at line 681 of file blockLattice.hh.

Constructor & Destructor Documentation

◆ RecvTask()

template<typename T , typename DESCRIPTOR , Platform PLATFORM>
olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, PLATFORM > >::RecvTask::RecvTask ( MPI_Comm comm,
int tag,
int rank,
const std::vector< std::type_index > & fields,
const std::vector< CellID > & cells,
ConcreteBlockLattice< T, DESCRIPTOR, PLATFORM > & block )
inline

Definition at line 718 of file blockLattice.hh.

721 :
722 _tag(tag),
723 _rank(rank),
724 _cells(cells),
725 _target(block, fields),
726 _buffer(new std::uint8_t[_target.size(_cells)] { }),
727 _request(_buffer.get(), _target.size(_cells),
728 _rank, _tag, comm)
729 { }

Member Function Documentation

◆ isDone()

template<typename T , typename DESCRIPTOR , Platform PLATFORM>
bool olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, PLATFORM > >::RecvTask::isDone ( )
inline

Definition at line 742 of file blockLattice.hh.

743 {
744 return _request.isDone();
745 }

References olb::MpiRequest::isDone().

+ Here is the call graph for this function:

◆ operator<()

template<typename T , typename DESCRIPTOR , Platform PLATFORM>
bool olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, PLATFORM > >::RecvTask::operator< ( const RecvTask & rhs) const
inline

Definition at line 731 of file blockLattice.hh.

732 {
733 return _rank < rhs._rank
734 || (_rank == rhs._rank && _tag < rhs._tag);
735 }

◆ receive()

template<typename T , typename DESCRIPTOR , Platform PLATFORM>
void olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, PLATFORM > >::RecvTask::receive ( )
inline

Definition at line 737 of file blockLattice.hh.

738 {
739 _request.start();
740 };

References olb::MpiRequest::start().

+ Here is the call graph for this function:

◆ unpack()

template<typename T , typename DESCRIPTOR , Platform PLATFORM>
void olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, PLATFORM > >::RecvTask::unpack ( )
inline

Definition at line 747 of file blockLattice.hh.

748 {
749 _target.deserialize(_cells, _buffer.get());
750 }

References olb::MultiConcreteCommunicatable< COMMUNICATEE >::deserialize().

+ Here is the call graph for this function:

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