DUNE-FEM (unstable)

Communication

Classes

class  Dune::Fem::ParallelScalarProduct< DiscreteFunction >
 
class  Dune::Fem::AuxiliaryDofs< GridPart, Mapper >
 In parallel computations the dofs of a discrete function are made up by all primary dofs. For technical reasons some dofs exists on multiply processes but are only primary on exactly one process. Dofs on processes that are not primary are called auxiliary. More...
 
struct  Dune::Fem::PrimaryDofs< AuxiliaryDofs >
 In parallel computations the dofs of a discrete function are made up by all primary dofs. For technical reasons some dofs exists on multiply processes but are only primary on exactly one process. More...
 
class  Dune::Fem::DefaultCommunicationManager< Space >
 default communication manager using just the grids communicate method More...
 
class  Dune::Fem::CommunicationManager< SpaceImp >
 use Default CommunicationManager as Communication Manager More...
 
class  Dune::Fem::CommunicationManagerList
 Proxy class to DependencyCache which is singleton per space. More...
 

Typedefs

typedef DiscreteFunctionType::DiscreteFunctionSpaceType Dune::Fem::ParallelScalarProduct< DiscreteFunction >::DiscreteFunctionSpaceType
 type of the discrete function space
 
typedef DiscreteFunctionSpaceType::RangeFieldType Dune::Fem::ParallelScalarProduct< DiscreteFunction >::RangeFieldType
 type of range field
 
typedef DiscreteFunctionSpaceType::BlockMapperType Dune::Fem::ParallelScalarProduct< DiscreteFunction >::MapperType
 type of used mapper
 
typedef GridPart Dune::Fem::AuxiliaryDofs< GridPart, Mapper >::GridPartType
 type of grid part
 
typedef Mapper Dune::Fem::AuxiliaryDofs< GridPart, Mapper >::MapperType
 type of used mapper
 

Functions

 Dune::Fem::ParallelScalarProduct< DiscreteFunction >::ParallelScalarProduct (const DiscreteFunctionSpaceType &space)
 constructor taking space
 
template<class OtherDiscreteFunctionType >
RangeFieldType Dune::Fem::ParallelScalarProduct< DiscreteFunction >::scalarProductDofs (const DiscreteFunctionType &x, const OtherDiscreteFunctionType &y) const
 evaluate scalar product and omit auxiliary nodes
 
template<class DofVector , class OtherDofVector >
RangeFieldType Dune::Fem::ParallelScalarProduct< DiscreteFunction >::dotProduct (const DofVector &x, const OtherDofVector &y) const
 evaluate scalar product on dofVector and omit auxiliary nodes
 
IndexType Dune::Fem::AuxiliaryDofs< GridPart, Mapper >::operator[] (const IndexType index) const
 return dof number of auxiliary for index
 
IndexType Dune::Fem::AuxiliaryDofs< GridPart, Mapper >::size () const
 return number of auxiliary dofs
 
IndexType Dune::Fem::AuxiliaryDofs< GridPart, Mapper >::primarySize () const
 return number of primaryDofs
 
bool Dune::Fem::AuxiliaryDofs< GridPart, Mapper >::contains (IndexType index) const
 return true if index is contained, meaning it is a auxiliary dof
 
template<class MessageBuffer , class Entity >
void Dune::Fem::AuxiliaryDofs< GridPart, Mapper >::LinkBuilder::gather (MessageBuffer &buffer, const Entity &entity) const
 read buffer and apply operation
 
template<class MessageBuffer , class EntityType >
void Dune::Fem::AuxiliaryDofs< GridPart, Mapper >::LinkBuilder::scatter (MessageBuffer &buffer, const EntityType &entity, std::size_t n)
 
template<class Entity >
std::size_t Dune::Fem::AuxiliaryDofs< GridPart, Mapper >::LinkBuilder::size (const Entity &entity) const
 return local dof size to be communicated
 
template<class AuxiliaryDofs , class F >
static void Dune::Fem::forEachAuxiliaryDof (const AuxiliaryDofs &auxiliaryDofs, F &&f)
 Apply action encoded in Functor f to all auxiliary dofs. More...
 
template<class AuxiliaryDofs , class F >
static void Dune::Fem::forEachPrimaryDof (const AuxiliaryDofs &auxiliaryDofs, F &&f)
 Apply action encoded in Functor f to all primary dofs. More...
 
template<class DiscreteFunction >
void Dune::Fem::DefaultCommunicationManager< Space >::NonBlockingCommunication::send (const DiscreteFunction &discreteFunction)
 send data for given discrete function
 
template<class DiscreteFunctionSpace , class Operation >
double Dune::Fem::DefaultCommunicationManager< Space >::NonBlockingCommunication::receive (PetscDiscreteFunction< DiscreteFunctionSpace > &discreteFunction, const Operation &operation)
 receive data for discrete function and given operation
 
template<class DiscreteFunction , class Operation >
double Dune::Fem::DefaultCommunicationManager< Space >::NonBlockingCommunication::receive (DiscreteFunction &discreteFunction, const Operation &operation)
 receive data for discrete function and given operation
 
template<class DiscreteFunction >
double Dune::Fem::DefaultCommunicationManager< Space >::NonBlockingCommunication::receive (DiscreteFunction &discreteFunction)
 receive method with default operation
 
 Dune::Fem::DefaultCommunicationManager< Space >::DefaultCommunicationManager (const SpaceType &space, const InterfaceType interface, const CommunicationDirection dir)
 constructor taking space and communication interface/direction
 
InterfaceType Dune::Fem::DefaultCommunicationManager< Space >::communicationInterface () const
 return communication interface
 
CommunicationDirection Dune::Fem::DefaultCommunicationManager< Space >::communicationDirection () const
 return communication direction
 
double Dune::Fem::DefaultCommunicationManager< Space >::buildTime () const
 return time needed for last build More...
 
double Dune::Fem::DefaultCommunicationManager< Space >::exchangeTime () const
 return time needed for last exchange of data More...
 
NonBlockingCommunicationType Dune::Fem::DefaultCommunicationManager< Space >::nonBlockingCommunication () const
 return object for non-blocking communication More...
 
template<class DiscreteFunction >
void Dune::Fem::DefaultCommunicationManager< Space >::exchange (DiscreteFunction &discreteFunction) const
 exchange data for a discrete function using the copy operation More...
 
template<class DiscreteFunction , class Operation >
void Dune::Fem::DefaultCommunicationManager< Space >::exchange (DiscreteFunction &discreteFunction, const Operation &operation) const
 exchange data for a discrete function using the given operation More...
 
template<class DiscreteFunction , class Operation >
void Dune::Fem::DefaultCommunicationManager< Space >::exchange (const Space &space, DiscreteFunction &discreteFunction, const Operation &operation) const
 exchange data for a discrete function using the given operation More...
 
 Dune::Fem::CommunicationManager< SpaceImp >::CommunicationManager (const SpaceImp &space, const InterfaceType interface, const CommunicationDirection dir)
 constructor taking space and communication interface/direction
 
 Dune::Fem::CommunicationManager< SpaceImp >::CommunicationManager (const SpaceImp &space)
 constructor taking space
 
 Dune::Fem::CommunicationManagerList::DiscreteFunctionCommunicator< DiscreteFunctionImp, Operation >::DiscreteFunctionCommunicator (DiscreteFunctionType &df, const Operation &op)
 constructor taking disctete function
 
template<class CombinedObjectType >
 Dune::Fem::CommunicationManagerList::CommunicationManagerList (CombinedObjectType &cObj)
 constructor
 
template<class DiscreteFunctionImp , class Operation >
void Dune::Fem::CommunicationManagerList::addToList (DiscreteFunctionImp &df, const Operation &operation)
 add discrete function to communication list
 
template<class DiscreteFunctionImp >
void Dune::Fem::CommunicationManagerList::addToList (DiscreteFunctionImp &df)
 add discrete function to communication list
 
void Dune::Fem::CommunicationManagerList::exchange () const
 
template<class GridPart , class BaseMapper , class GlobalKey , class F >
static void Dune::Fem::forEachPrimaryDof (const AuxiliaryDofs< GridPart, GhostDofMapper< GridPart, BaseMapper, GlobalKey > > &auxiliaryDofs, F &&f)
 Apply action encoded in Functor f to all primary dofs. More...
 

Detailed Description

Function Documentation

◆ buildTime()

template<class Space >
double Dune::Fem::DefaultCommunicationManager< Space >::buildTime ( ) const
inline

return time needed for last build

Returns
time needed for last build of caches (if needed)

◆ exchange() [1/4]

void Dune::Fem::CommunicationManagerList::exchange ( ) const
inline

exchange discrete function to all procs we share data with by using given OperationImp when receiving data from other procs

◆ exchange() [2/4]

template<class Space >
template<class DiscreteFunction , class Operation >
void Dune::Fem::DefaultCommunicationManager< Space >::exchange ( const Space &  space,
DiscreteFunction &  discreteFunction,
const Operation &  operation 
) const
inline

exchange data for a discrete function using the given operation

The used operation is derived from the type of the op-pointer. The actual pointer is not used.

Parameters
discreteFunctiondiscrete function to communicate
[in]operationa (phony) pointer to an operation

References DUNE_THROW.

◆ exchange() [3/4]

template<class Space >
template<class DiscreteFunction >
void Dune::Fem::DefaultCommunicationManager< Space >::exchange ( DiscreteFunction &  discreteFunction) const
inline

exchange data for a discrete function using the copy operation

Parameters
discreteFunctiondiscrete function to communicate

References Dune::Fem::DefaultCommunicationManager< Space >::exchange().

Referenced by Dune::Fem::DiscreteFunctionSpaceDefault< FunctionSpaceTraits >::communicate(), and Dune::Fem::DefaultCommunicationManager< Space >::exchange().

◆ exchange() [4/4]

template<class Space >
template<class DiscreteFunction , class Operation >
void Dune::Fem::DefaultCommunicationManager< Space >::exchange ( DiscreteFunction &  discreteFunction,
const Operation &  operation 
) const
inline

exchange data for a discrete function using the given operation

The used operation is derived from the type of the op-pointer. The actual pointer is not used.

Parameters
discreteFunctiondiscrete function to communicate
[in]operationa (phony) pointer to an operation

◆ exchangeTime()

template<class Space >
double Dune::Fem::DefaultCommunicationManager< Space >::exchangeTime ( ) const
inline

return time needed for last exchange of data

Returns
time needed for last exchange of data

◆ forEachAuxiliaryDof()

template<class AuxiliaryDofs , class F >
static void Dune::Fem::forEachAuxiliaryDof ( const AuxiliaryDofs auxiliaryDofs,
F &&  f 
)
static

Apply action encoded in Functor f to all auxiliary dofs.

Parameters
[in]auxiliaryDofsAuxiliaryDofs instance (from space)
[in]fa Functor or lambda offering operator()( const size_t dof )

◆ forEachPrimaryDof() [1/2]

template<class AuxiliaryDofs , class F >
static void Dune::Fem::forEachPrimaryDof ( const AuxiliaryDofs auxiliaryDofs,
F &&  f 
)
static

Apply action encoded in Functor f to all primary dofs.

Parameters
[in]auxiliaryDofsAuxiliaryDofs instance (from space)
[in]fa Functor or lambda offering operator()( const size_t dof )

Referenced by Dune::Fem::ParallelScalarProduct< DiscreteFunction >::dotProduct().

◆ forEachPrimaryDof() [2/2]

template<class GridPart , class BaseMapper , class GlobalKey , class F >
static void Dune::Fem::forEachPrimaryDof ( const AuxiliaryDofs< GridPart, GhostDofMapper< GridPart, BaseMapper, GlobalKey > > &  auxiliaryDofs,
F &&  f 
)
static

Apply action encoded in Functor f to all primary dofs.

Parameters
[in]auxiliaryDofsAuxiliaryDofs instance (from space)
[in]fa Functor or lambda offering operator()( const size_t dof )
Note
: This is a specialization for the Petsc GhostMapper based AuxiliaryDofs.

References Dune::size().

◆ nonBlockingCommunication()

template<class Space >
NonBlockingCommunicationType Dune::Fem::DefaultCommunicationManager< Space >::nonBlockingCommunication ( ) const
inline

return object for non-blocking communication

Returns
NonBlockingCommunicationType containing send and receive facilities

◆ scatter()

template<class GridPart , class Mapper >
template<class MessageBuffer , class EntityType >
void Dune::Fem::AuxiliaryDofs< GridPart, Mapper >::LinkBuilder::scatter ( MessageBuffer &  buffer,
const EntityType &  entity,
std::size_t  n 
)
inline

read buffer and apply operation scatter is called for one every entity several times depending on how much data was gathered

Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 12, 23:30, 2024)