version 3.11-dev
Loading...
Searching...
No Matches
Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT > Class Template Reference

A data handle class to exchange entries of a vector for multiple codims in one communication call.

#include <dumux/parallel/vectorcommdatahandle.hh>

Inheritance diagram for Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT >:

Public Types

using DataType = DataT
 export type of data for message buffer

Public Member Functions

 MultiCodimVectorCommDataHandle (const Mapper &mapper, Vector &vector, std::bitset< dim+1 > activeCodims)
bool contains (int, int codim) const
 returns true if data for this codim should be communicated
bool fixedSize (int, int codim) const
template<class Entity>
std::size_t size (Entity &entity) const
 how many objects of type DataType have to be sent for a given entity
template<class MessageBuffer, class Entity>
void gather (MessageBuffer &buff, const Entity &entity) const
 pack data from user to message buffer (all DOFs of entity)
template<class MessageBuffer, class Entity>
void scatter (MessageBuffer &buff, const Entity &entity, std::size_t n)
 unpack data from message buffer to user (all DOFs of entity)

Protected Attributes

const Mapper & mapper_
Vector & vector_
std::bitset< dim+1 > activeCodims_

Member Typedef Documentation

◆ DataType

template<class Mapper, class Vector, int dim, class ScatterOperator, class DataT = typename Vector::value_type>
using Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT >::DataType = DataT

Constructor & Destructor Documentation

◆ MultiCodimVectorCommDataHandle()

template<class Mapper, class Vector, int dim, class ScatterOperator, class DataT = typename Vector::value_type>
Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT >::MultiCodimVectorCommDataHandle ( const Mapper & mapper,
Vector & vector,
std::bitset< dim+1 > activeCodims )
inline

Member Function Documentation

◆ contains()

template<class Mapper, class Vector, int dim, class ScatterOperator, class DataT = typename Vector::value_type>
bool Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT >::contains ( int ,
int codim ) const
inline

◆ fixedSize()

template<class Mapper, class Vector, int dim, class ScatterOperator, class DataT = typename Vector::value_type>
bool Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT >::fixedSize ( int ,
int codim ) const
inline

returns true if size per entity of given dim and codim is a constant. For mappers where all entities of the same codim have the same DOF count, this is true. For mixed meshes with variable-DOF geometry types (e.g. simplex+cube) it may be false.

◆ gather()

template<class Mapper, class Vector, int dim, class ScatterOperator, class DataT = typename Vector::value_type>
template<class MessageBuffer, class Entity>
void Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT >::gather ( MessageBuffer & buff,
const Entity & entity ) const
inline

◆ scatter()

template<class Mapper, class Vector, int dim, class ScatterOperator, class DataT = typename Vector::value_type>
template<class MessageBuffer, class Entity>
void Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT >::scatter ( MessageBuffer & buff,
const Entity & entity,
std::size_t n )
inline
Note
n is the number of objects sent by the sender

◆ size()

template<class Mapper, class Vector, int dim, class ScatterOperator, class DataT = typename Vector::value_type>
template<class Entity>
std::size_t Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT >::size ( Entity & entity) const
inline
Note
Only the sender side needs to know this size.

Member Data Documentation

◆ activeCodims_

template<class Mapper, class Vector, int dim, class ScatterOperator, class DataT = typename Vector::value_type>
std::bitset<dim+1> Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT >::activeCodims_
protected

◆ mapper_

template<class Mapper, class Vector, int dim, class ScatterOperator, class DataT = typename Vector::value_type>
const Mapper& Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT >::mapper_
protected

◆ vector_

template<class Mapper, class Vector, int dim, class ScatterOperator, class DataT = typename Vector::value_type>
Vector& Dumux::MultiCodimVectorCommDataHandle< Mapper, Vector, dim, ScatterOperator, DataT >::vector_
protected

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