MaMiCo 1.2
Loading...
Searching...
No Matches
coupling::transferstrategies::TransferStrategy< LinkedCell, dim > Class Template Reference

#include <TransferStrategy.h>

Inheritance diagram for coupling::transferstrategies::TransferStrategy< LinkedCell, dim >:

Public Member Functions

 TransferStrategy (coupling::interface::MDSolverInterface< LinkedCell, dim > *const mdSolverInterface)
 a simple destructor
 
virtual ~TransferStrategy ()
 a dummy destructor
 
virtual void processInnerCouplingCellBeforeReceivingMacroscopicSolverData (coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > &cell, I02 index)
 is called on the inner coupling cells before the data from the macro solver is applied
 
virtual void beginProcessInnerCouplingCellsBeforeReceivingMacroscopicSolverData ()
 the method is called before the cells are processed, e.g. general values might be set here
 
virtual void endProcessInnerCouplingCellsBeforeReceivingMacroscopicSolverData ()
 the method is called after the cells are processed, e.g. some general evaluation might happen like sum/counter
 
virtual void processOuterCouplingCellBeforeReceivingMacroscopicSolverData (coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > &cell, I02 index)
 is called on the outer coupling cells before the data from the macro solver is applied
 
virtual void beginProcessOuterCouplingCellsBeforeReceivingMacroscopicSolverData ()
 the method is called before the outer cells are processed, e.g. general values might be set here
 
virtual void endProcessOuterCouplingCellsBeforeReceivingMacroscopicSolverData ()
 the method is called after the outer cells are processed, e.g. general values might be set here
 
virtual void processInnerCouplingCellAfterReceivingMacroscopicSolverData (coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > &cell, I02 index)
 
virtual void beginProcessInnerCouplingCellsAfterReceivingMacroscopicSolverData ()
 the method is called before the inner cells are processed, e.g. general values might be set here
 
virtual void endProcessInnerCouplingCellsAfterReceivingMacroscopicSolverData ()
 the method is called after the inner cells are processed, e.g. general values might be set here
 
virtual void processOuterCouplingCellAfterReceivingMacroscopicSolverData (coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > &cell, I02 index)
 is called for every coupling cell after the microscopicMass and -Momentum have been filled in with data from the macroscopic solver.
 
virtual void beginProcessOuterCouplingCellsAfterReceivingMacroscopicSolverData ()
 the method is called before the outer cells are processed, e.g. general values might be set here
 
virtual void endProcessOuterCouplingCellsAfterReceivingMacroscopicSolverData ()
 the method is called after the outer cells are processed, e.g. general values might be set here
 
virtual void processInnerCouplingCellBeforeSendingMDSolverData (coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > &cell, I02 index)
 is called for every coupling cell before sending the macroscopicMass and -Momentum data to the macroscopic solver and before noise reduction invocation.
 
virtual void beginProcessInnerCouplingCellsBeforeSendingMDSolverData ()
 the method is called before the inner cell data is send, e.g. general values might be set here
 
virtual void endProcessInnerCouplingCellsBeforeSendingMDSolverData ()
 the method is called after the inner cell data is send, e.g. general values might be set here
 
virtual void processOuterCouplingCellBeforeSendingMDSolverData (coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > &cell, I02 index)
 is called for outer coupling cell before sending the macroscopicMass and -Momentum data to the macroscopic solver and before noise reduction invocation.
 
virtual void beginProcessOuterCouplingCellsBeforeSendingMDSolverData ()
 the method is called before the outer cells are processed, e.g. general values might be set here
 
virtual void endProcessOuterCouplingCellsBeforeSendingMDSolverData ()
 the method is called after the outer cells are processed, e.g. general values might be set here
 
virtual void processInnerCouplingCellAfterMDTimestep (coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > &cell, I02 index)
 
virtual void beginProcessInnerCouplingCellsAfterMDTimestep ()
 the method is called before the inner cell data is send, e.g. general values might be set here
 
virtual void endProcessInnerCouplingCellsAfterMDTimestep ()
 the method is called after the inner cell data is send, e.g. general values might be set here
 

Protected Attributes

coupling::interface::MDSolverInterface< LinkedCell, dim > *const _mdSolverInterface
 

Detailed Description

template<class LinkedCell, unsigned int dim>
class coupling::transferstrategies::TransferStrategy< LinkedCell, dim >

interface for transfer strategy, that is for coupling cell operations that are carried out before/after send/recv-operations between the two solvers, or in each MD step for sampling purposes.

Author
Philipp Neumann
Template Parameters
LinkedCellthe LinkedCell class is given by the implementation of linked cells in the molecular dynamics simulation
dimrefers to the spacial dimension of the simulation, can be 1, 2, or 3

Constructor & Destructor Documentation

◆ TransferStrategy()

template<class LinkedCell, unsigned int dim>
coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::TransferStrategy ( coupling::interface::MDSolverInterface< LinkedCell, dim > *const mdSolverInterface)
inline

a simple destructor

Parameters
mdSolverInterfaceinterface to md solver

Member Function Documentation

◆ beginProcessInnerCouplingCellsAfterMDTimestep()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::beginProcessInnerCouplingCellsAfterMDTimestep ( )
inlinevirtual

the method is called before the inner cell data is send, e.g. general values might be set here

This method is only applied to coupling cells that cover parts of the MD domain; it is not applied the outer coupling cells. Is called before the processInnerCouplingCellAfterMDTimestep() method

Reimplemented in coupling::transferstrategies::AveragingTransferStrategy< LinkedCell, dim >, coupling::transferstrategies::TransferStrategy4NieCoupling< LinkedCell, dim >, and coupling::transferstrategies::TransferStrategy4SchwarzCoupling< LinkedCell, dim >.

◆ beginProcessInnerCouplingCellsAfterReceivingMacroscopicSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::beginProcessInnerCouplingCellsAfterReceivingMacroscopicSolverData ( )
inlinevirtual

the method is called before the inner cells are processed, e.g. general values might be set here

This method is only applied to coupling cells that cover parts of the MD domain; it is not applied the outer coupling cells. Is called before the processInnerCouplingCellAfterReceivingMacroscopicSolverData() method

◆ beginProcessInnerCouplingCellsBeforeReceivingMacroscopicSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::beginProcessInnerCouplingCellsBeforeReceivingMacroscopicSolverData ( )
inlinevirtual

the method is called before the cells are processed, e.g. general values might be set here

This method is only applied to coupling cells that cover parts of the MD domain; it is not applied in the outer coupling cells. Is called before the processInnerCouplingCellBeforeReceivingMacroscopicSolverData() method

Reimplemented in coupling::transferstrategies::AveragingTransferStrategy< LinkedCell, dim >, coupling::transferstrategies::TransferStrategy4NieCoupling< LinkedCell, dim >, and coupling::transferstrategies::TransferStrategy4SchwarzCoupling< LinkedCell, dim >.

◆ beginProcessInnerCouplingCellsBeforeSendingMDSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::beginProcessInnerCouplingCellsBeforeSendingMDSolverData ( )
inlinevirtual

the method is called before the inner cell data is send, e.g. general values might be set here

This method is only applied to coupling cells that cover parts of the MD domain; it is not applied the outer coupling cells. Is called before the processInnerCouplingCellBeforeSendingMDSolverData() method

◆ beginProcessOuterCouplingCellsAfterReceivingMacroscopicSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::beginProcessOuterCouplingCellsAfterReceivingMacroscopicSolverData ( )
inlinevirtual

the method is called before the outer cells are processed, e.g. general values might be set here

This method is only applied to coupling cells are part of the outer MD domain; it is not applied the inner coupling cells. Is called before the processOuterCouplingCellAfterReceivingMacroscopicSolverData() method

◆ beginProcessOuterCouplingCellsBeforeReceivingMacroscopicSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::beginProcessOuterCouplingCellsBeforeReceivingMacroscopicSolverData ( )
inlinevirtual

the method is called before the outer cells are processed, e.g. general values might be set here

This method is only applied to coupling cells that are not part the inner MD domain; it is not applied to the ghost layer Is called before the processOuterCouplingCellBeforeReceivingMacroscopicSolverData() method

◆ beginProcessOuterCouplingCellsBeforeSendingMDSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::beginProcessOuterCouplingCellsBeforeSendingMDSolverData ( )
inlinevirtual

the method is called before the outer cells are processed, e.g. general values might be set here

This method is only applied to coupling cells are part of the outer MD domain; it is not applied the inner coupling cells. Is called before the processOuterCouplingCellBeforeSendingMDSolverData() method

◆ endProcessInnerCouplingCellsAfterMDTimestep()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::endProcessInnerCouplingCellsAfterMDTimestep ( )
inlinevirtual

the method is called after the inner cell data is send, e.g. general values might be set here

This method is only applied to coupling cells that cover parts of the MD domain; it is not applied the outer coupling cells. Is called after the processInnerCouplingCellAfterMDTimestep() method

◆ endProcessInnerCouplingCellsAfterReceivingMacroscopicSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::endProcessInnerCouplingCellsAfterReceivingMacroscopicSolverData ( )
inlinevirtual

the method is called after the inner cells are processed, e.g. general values might be set here

This method is only applied to coupling cells that cover parts of the MD domain; it is not applied the outer coupling cells. Is called after the processInnerCouplingCellAfterReceivingMacroscopicSolverData() method

◆ endProcessInnerCouplingCellsBeforeReceivingMacroscopicSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::endProcessInnerCouplingCellsBeforeReceivingMacroscopicSolverData ( )
inlinevirtual

the method is called after the cells are processed, e.g. some general evaluation might happen like sum/counter

This method is only applied to coupling cells that cover parts of the MD domain; it is not applied in the outer coupling cells. Is called after the processInnerCouplingCellBeforeReceivingMacroscopicSolverData() method

◆ endProcessInnerCouplingCellsBeforeSendingMDSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::endProcessInnerCouplingCellsBeforeSendingMDSolverData ( )
inlinevirtual

the method is called after the inner cell data is send, e.g. general values might be set here

This method is only applied to coupling cells that cover parts of the MD domain; it is not applied the outer coupling cells. Is called after the processInnerCouplingCellBeforeSendingMDSolverData() method

◆ endProcessOuterCouplingCellsAfterReceivingMacroscopicSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::endProcessOuterCouplingCellsAfterReceivingMacroscopicSolverData ( )
inlinevirtual

the method is called after the outer cells are processed, e.g. general values might be set here

This method is only applied to coupling cells are part of the outer MD domain; it is not applied the inner coupling cells. Is called after the processOuterCouplingCellAfterReceivingMacroscopicSolverData() method

◆ endProcessOuterCouplingCellsBeforeReceivingMacroscopicSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::endProcessOuterCouplingCellsBeforeReceivingMacroscopicSolverData ( )
inlinevirtual

the method is called after the outer cells are processed, e.g. general values might be set here

This method is only applied to coupling cells that are not part the inner MD domain; it is not applied to the ghost layer Is called after the processOuterCouplingCellBeforeReceivingMacroscopicSolverData() method

◆ endProcessOuterCouplingCellsBeforeSendingMDSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::endProcessOuterCouplingCellsBeforeSendingMDSolverData ( )
inlinevirtual

the method is called after the outer cells are processed, e.g. general values might be set here

This method is only applied to coupling cells are part of the outer MD domain; it is not applied the inner coupling cells. Is called after the processOuterCouplingCellBeforeSendingMDSolverData() method

◆ processInnerCouplingCellAfterMDTimestep()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::processInnerCouplingCellAfterMDTimestep ( coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > & cell,
I02 index )
inlinevirtual

required to collect cell data during an MD simulation. For example, if we need time-averaged data within a coupling cell, we can compute mass and momentum in each timestep and add it to the microscopicMass and -Momentum buffers. This method is only applied to coupling cells that cover parts of the MD domain; it is not applied in the outer coupling cells.

Parameters
cellthe coupling cell to apply
indexthe index of the coupling cell

Reimplemented in coupling::transferstrategies::AveragingTransferStrategy< LinkedCell, dim >, coupling::transferstrategies::DifferenceTransferStrategy< LinkedCell, dim >, coupling::transferstrategies::TransferStrategy4NieCoupling< LinkedCell, dim >, and coupling::transferstrategies::TransferStrategy4SchwarzCoupling< LinkedCell, dim >.

◆ processInnerCouplingCellAfterReceivingMacroscopicSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::processInnerCouplingCellAfterReceivingMacroscopicSolverData ( coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > & cell,
I02 index )
inlinevirtual

These values might be manipulated within this function. Example: Mass and momentum have been transferred from the macroscopic solver to MD, but only the difference between MD and macroscopic solver shall be introduced to MD. Then, this function determines this difference and stores the result again in microscopicMass and -Momentum. This method is only applied to coupling cells that cover parts of the MD domain; it is not applied in the outer coupling cells. @brieff is called for every coupling cell after the microscopicMass and -Momentum have been filled in with data from the macroscopic solver.

Parameters
cellthe coupling cell to apply
indexthe index of the coupling cell

Reimplemented in coupling::transferstrategies::DifferenceTransferStrategy< LinkedCell, dim >, coupling::transferstrategies::TransferStrategy4NieCoupling< LinkedCell, dim >, and coupling::transferstrategies::TransferStrategy4SchwarzCoupling< LinkedCell, dim >.

◆ processInnerCouplingCellBeforeReceivingMacroscopicSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::processInnerCouplingCellBeforeReceivingMacroscopicSolverData ( coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > & cell,
I02 index )
inlinevirtual

is called on the inner coupling cells before the data from the macro solver is applied

Here, you might e.g. reset all coupling cell values to zero. This method is only applied to coupling cells that cover parts of the MD domain; it is not applied in the outer coupling cells.

Parameters
cellthe coupling cell to apply
indexthe index of the coupling cell

Reimplemented in coupling::transferstrategies::AveragingTransferStrategy< LinkedCell, dim >, coupling::transferstrategies::DifferenceTransferStrategy< LinkedCell, dim >, coupling::transferstrategies::DirectTransferStrategy< LinkedCell, dim >, and coupling::transferstrategies::TransferStrategy4NieCoupling< LinkedCell, dim >.

◆ processInnerCouplingCellBeforeSendingMDSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::processInnerCouplingCellBeforeSendingMDSolverData ( coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > & cell,
I02 index )
inlinevirtual

is called for every coupling cell before sending the macroscopicMass and -Momentum data to the macroscopic solver and before noise reduction invocation.

Example: Compute mass and momentum and store the results in macroscopicMass and -Momentum. The total mass and momentum from the MD system will then be sent to the macroscopic solver. This method is only applied to coupling cells that cover parts of the MD domain; it is not applied in the outer coupling cells.

Parameters
cellthe coupling cell to apply
indexthe index of the coupling cell

Reimplemented in coupling::transferstrategies::DifferenceTransferStrategy< LinkedCell, dim >, coupling::transferstrategies::DirectTransferStrategy< LinkedCell, dim >, coupling::transferstrategies::TransferStrategy4NieCoupling< LinkedCell, dim >, and coupling::transferstrategies::TransferStrategy4SchwarzCoupling< LinkedCell, dim >.

◆ processOuterCouplingCellAfterReceivingMacroscopicSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::processOuterCouplingCellAfterReceivingMacroscopicSolverData ( coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > & cell,
I02 index )
inlinevirtual

is called for every coupling cell after the microscopicMass and -Momentum have been filled in with data from the macroscopic solver.

These values might be manipulated within this function. Example: Mass and momentum have been transferred from the macroscopic solver to MD, but only the difference between MD and macroscopic solver shall be introduced to MD. Then, this function determines this difference and stores the result again in microscopicMass and -Momentum. This method is only applied to coupling cells in the outer parts of the MD domain; it is not applied in the ghost layer.

Parameters
cellthe coupling cell to apply
indexthe index of the coupling cell

Reimplemented in coupling::transferstrategies::TransferStrategy4SchwarzCoupling< LinkedCell, dim >.

◆ processOuterCouplingCellBeforeReceivingMacroscopicSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::processOuterCouplingCellBeforeReceivingMacroscopicSolverData ( coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > & cell,
I02 index )
inlinevirtual

is called on the outer coupling cells before the data from the macro solver is applied

Here, you might e.g. reset all coupling cell values to zero. This method is only applied to outer coupling cells that are not part of the inner MD domain; it is not applied to the cells in the ghost layer

Parameters
cellthe coupling cell to apply
indexthe index of the coupling cell

Reimplemented in coupling::transferstrategies::DifferenceTransferStrategy< LinkedCell, dim >, and coupling::transferstrategies::DirectTransferStrategy< LinkedCell, dim >.

◆ processOuterCouplingCellBeforeSendingMDSolverData()

template<class LinkedCell, unsigned int dim>
virtual void coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::processOuterCouplingCellBeforeSendingMDSolverData ( coupling::datastructures::CouplingCellWithLinkedCells< LinkedCell, dim > & cell,
I02 index )
inlinevirtual

is called for outer coupling cell before sending the macroscopicMass and -Momentum data to the macroscopic solver and before noise reduction invocation.

is called for every coupling cell before sending the macroscopicMass and -Momentum data to the macroscopic solver and before noise reduction invocation. Example: Compute mass and momentum and store the results in macroscopicMass and -Momentum. The total mass and momentum from the MD system will then be sent to the macroscopic solver. This method is only applied to outer coupling cells, that is cells that are located outside the MD domain.

Parameters
cellthe coupling cell to apply
indexthe index of the coupling cell

Reimplemented in coupling::transferstrategies::TransferStrategy4SchwarzCoupling< LinkedCell, dim >.

Member Data Documentation

◆ _mdSolverInterface

template<class LinkedCell, unsigned int dim>
coupling::interface::MDSolverInterface<LinkedCell, dim>* const coupling::transferstrategies::TransferStrategy< LinkedCell, dim >::_mdSolverInterface
protected

interface for the md solver


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