Carries out the the PE time steps, including sub iteration functionality.
It executes numberOfSubIterations PE steps within one timestep of size timeStepSize.
These PE sub iterations require, that the current external (e.g. hydrodynamic, gravitational, ...) forces and torques acting on each particle remains unchanged. Thus, a map is set up internally that stores and re-sets these forces and torques in each PE sub iteration.
Additionally, a function forceEvaluationFunc can be given that allows to evaluate different forces before the PE step is carried out. An example are particle-particle lubrication forces that have to be updated in each sub iteration.
#include <TimeStep.h>
Public Member Functions | |
TimeStep (const shared_ptr< StructuredBlockStorage > &blockStorage, const BlockDataID &bodyStorageID, pe::cr::ICR &collisionResponse, const std::function< void(void)> &synchronizeFunc, const real_t timeStepSize=real_t(1), const uint_t numberOfSubIterations=uint_t(1), const std::function< void(void)> &forceEvaluationFunc=[](){}) | |
void | operator() () |
Private Attributes | |
const real_t | timeStepSize_ |
const uint_t | numberOfSubIterations_ |
shared_ptr< StructuredBlockStorage > | blockStorage_ |
const BlockDataID & | bodyStorageID_ |
pe::cr::ICR & | collisionResponse_ |
std::function< void(void)> | synchronizeFunc_ |
std::function< void(void)> | forceEvaluationFunc_ |
|
inlineexplicit |
void walberla::pe_coupling::TimeStep::operator() | ( | ) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |