Loading [MathJax]/extensions/tex2jax.js
MAIA bb96820c
Multiphysics at AIA
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
mpiexchange.h File Reference

Go to the source code of this file.

Namespaces

namespace  maia
 Namespace for auxiliary functions/classes.
 
namespace  maia::mpi
 

Functions

template<typename U >
void maia::mpi::exchangeBuffer (const MInt noExDomains, const MInt *const exDomainId, const MInt *const recvSize, const MInt *const sendSize, const MPI_Comm comm, U *const receiveBuffer, const U *const sendBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
MInt maia::mpi::exchangeBufferAllToAll (const MInt sendSize, const MPI_Comm comm, U *const receiveBuffer, const U *const sendBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeBuffer (const std::vector< MInt > &exDomains, const std::vector< std::vector< MInt > > &noValuesToRecv, const std::vector< std::vector< MInt > > &noValuesToSend, const MPI_Comm comm, const U *const sendBuffer, U *const receiveBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeBuffer (const std::vector< MInt > &exDomains, std::vector< MInt > &noValuesToRecv, std::vector< MInt > &noValuesToSend, const MPI_Comm comm, const U *const sendBuffer, U *const receiveBuffer, const MInt noDat=1)
 Generic exchange of data (std::vector version) More...
 
template<typename U >
void maia::mpi::exchangeBuffer (const std::vector< MInt > &exDomains, const MInt *const noValuesToSend, const MInt *const noValuesToRecv, const MPI_Comm comm, const U *const sendBuffer, U *const receiveBuffer, const MInt noDat=1)
 Generic exchange of data (std::vector version) More...
 
template<typename U >
void maia::mpi::exchangeBuffer (const std::vector< MInt > &exDomains, std::vector< MInt > &noValues, const MPI_Comm comm, const U *const sendBuffer, U *const receiveBuffer, const MInt noDat=1)
 Generic exchange of data (std::vector version) More...
 
template<typename U >
void maia::mpi::exchangeValues (const std::vector< MInt > &exDomains, MInt noValues, const MPI_Comm comm, const U *const sendBuffer, U *const receiveBuffer, const MInt noDat=1)
 Generic exchange of data (std::vector version) More...
 
template<typename U >
void maia::mpi::exchangeData (const MInt noNghbrDomains, const MInt *const nghbrDomains, const MInt *const noHaloCells, const MInt **const, const MInt *const noWindowCells, const MInt **const windowCells, const MPI_Comm comm, const U *const data, U *const haloBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const std::vector< MInt > &nghbrDomains, const MInt *const noHaloCells, MInt **const haloCells, MInt *const noWindowCells, MInt **const windowCells, const MPI_Comm comm, const U *const data, U *const haloBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const MInt noNghbrDomains, const MInt *const nghbrDomains, const MInt *const noHaloCells, const MInt **const haloCells, const MInt *const noWindowCells, const MInt **const windowCells, const MPI_Comm comm, U *const data, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const std::vector< MInt > &nghbrDomains, const MInt *const noHaloCells, MInt **const haloCells, MInt *const noWindowCells, MInt **const windowCells, const MPI_Comm comm, U *const data, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::reverseExchangeData (const MInt noNghbrDomains, const MInt *const nghbrDomains, const MInt *const noHaloCells, const MInt **const haloCells, const MInt *const noWindowCells, const MInt **const, const MPI_Comm comm, const U *const data, U *const windowBuffer, const MInt noDat=1)
 Generic reverse exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const MInt noNghbrDomains, const MInt *const nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, U *const data, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const MInt noNghbrDomains, const MInt *const nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, U *const data, U *const haloBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const std::vector< MInt > &nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, U *const data, const MInt noDat=1)
 Generic exchange of data NOTE: version called in exchangeData from the solvers! More...
 
template<std::size_t N>
void maia::mpi::exchangeBitset (const std::vector< MInt > &nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, std::bitset< N > *const data, const MInt noCells, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const std::vector< MInt > &nghbrDomains, std::vector< std::vector< MInt > > &haloCellVec, std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, U *const data, U *const haloBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::reverseExchangeData (const MInt noNghbrDomains, const MInt *const nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, const U *const data, U *const windowBuffer, const MInt noDat=1)
 Generic reverse exchange of data. More...
 
template<typename U >
void maia::mpi::reverseExchangeData (const std::vector< MInt > &nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, const U *const data, U *const windowBuffer, const MInt noDat=1)
 Generic reverse exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeScattered (const std::vector< MInt > &nghbrDomains, std::vector< MInt > &sendDomainIndices, std::vector< U > &sendData, const MPI_Comm comm, std::vector< MInt > &recvOffsets, std::vector< U > &recvBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
MUint maia::mpi::getBufferSize (const std::vector< std::vector< MInt > > &exchangeCells)
 Generic exchange of data. More...
 
template<class dataType >
void maia::mpi::exchangeData (const dataType *const sendBuffer, const MInt domainId, const MInt noDomains, const MPI_Comm mpiComm, const MInt dataBlockSize, const MInt *const dataSizeSend, const MInt *const dataSizeRecv, dataType *const recvBuffer)
 Communicate variable amounts of data from each domain to all other domains. Data may also reside on the same domain. More...
 
template<class dataType >
void maia::mpi::exchangeData (const dataType *const sendBuffer, const MInt domainId, const MInt noNghbrDomains, const MInt *const nghbrDomainIds, const MPI_Comm mpiComm, const MInt dataBlockSize, const MInt *const dataSizeSend, const MInt *const dataSizeRecv, dataType *const recvBuffer)
 Communicate variable amounts of data from each domain to all neighboring domains. More...
 
template<typename DataType >
void maia::mpi::assembleDataBuffer (const MInt noCells, const MInt dataBlockSize, const DataType *const data, const MInt *const sortedId, DataType *const buffer)
 Assemble data buffer according to given sorting order. More...
 
template<typename DataType >
void maia::mpi::communicateData (const DataType *const data, const MInt noCells, const MInt *const sortedCellId, const MInt noDomains, const MInt domainId, const MPI_Comm mpiComm, const MInt *const noCellsToSendByDomain, const MInt *const noCellsToReceiveByDomain, const MInt dataBlockSize, DataType *const buffer)
 Assemble given data in send buffer and communicate. More...
 
template<std::size_t N>
void maia::mpi::communicateBitsetData (const std::bitset< N > *const data, const MInt noCells, const MInt *const sortedCellId, const MInt noDomains, const MInt domainId, const MPI_Comm mpiComm, const MInt *const noCellsToSendByDomain, const MInt *const noCellsToReceiveByDomain, const MInt dataBlockSize, std::bitset< N > *const buffer)
 
template<typename DataType >
void maia::mpi::communicateGlobalyOrderedData (DataType const *const sendData, const MInt noLocIds, const MInt noGlobalIds, const MInt nRows, const MInt nCols, const MInt noDomains, const MInt domainId, const MPI_Comm mpiComm, const MIntScratchSpace &localToGlobal, const MIntScratchSpace &dataOffsets, ScratchSpace< DataType > &recvData)
 Communicate (optionally) solver-structured data sorted by a global Id. More...
 
template<class T >
std::vector< T > maia::mpi::mpiExchangePointToPoint (const T *const sendBuffer, const MInt *const snghbrs, const MInt nosnghbrs, const MInt *const sendcounts, const MInt *const rnghbrs, const MInt nornghbrs, const MPI_Comm &mpi_comm, const MInt domainId, const MInt dataBlockSize, MInt *const recvcounts_=nullptr, MInt *const rdispls_=nullptr)
 
template<typename U >
void maia::mpi::reverseExchangeAddData (const std::vector< MInt > &nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, U **const data, const MInt noDat=1)
 Generic exchange from halo to window cells, however in this case the value in the halo-cell is added to the values in the windowcell! More...
 
template<typename U >
void maia::mpi::reverseExchangeAddData (const std::vector< MInt > &nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, U *const data, const MInt noDat=1)
 Generic exchange from halo to window cells, however in this case the value in the halo-cell is added to the values in the windowcell, simple pointer version. More...