OpenLB 1.7
Loading...
Searching...
No Matches
Classes | Public Member Functions | List of all members
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 618 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 655 of file blockLattice.hh.

658 :
659 _tag(tag),
660 _rank(rank),
661 _cells(cells),
662 _target(block, fields),
663 _buffer(new std::uint8_t[_target.size(_cells)] { }),
664 _request(_buffer.get(), _target.size(_cells),
665 _rank, _tag, comm)
666 { }

Member Function Documentation

◆ isDone()

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

Definition at line 679 of file blockLattice.hh.

680 {
681 return _request.isDone();
682 }

◆ 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 668 of file blockLattice.hh.

669 {
670 return _rank < rhs._rank
671 || (_rank == rhs._rank && _tag < rhs._tag);
672 }

◆ receive()

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

Definition at line 674 of file blockLattice.hh.

675 {
676 _request.start();
677 };

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 684 of file blockLattice.hh.

685 {
686 _target.deserialize(_cells, _buffer.get());
687 }

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