Adds an accumulated force field value to another force field, applying continuous averaging.
The force field contains all external force, etc acting on the fluid, except the fluid-solid interaction forces from the DPS coupling. The interaction force field only contains the interaction forces, simply added up over several subcycling timesteps, with the maximum number given by maximumAveragingSteps. This class will average the interaction force over the currently carried out sub cycles (counted via an internal counter) and add this averaged quantity to the force field, to get rid of possible oscillations in the interaction force and have a valid force field in each sub cycling iteration.
Can also be used to simply add the current interaction force field to the force field if maximumAveragingSteps = 1.
#include <AveragedInteractionForceFieldToForceFieldAdder.h>
Public Types | |
using | ForceField_T = GhostLayerField< Vector3< real_t >, 1 > |
Public Member Functions | |
AveragedInteractionForceFieldToForceFieldAdder (const shared_ptr< StructuredBlockStorage > &blockStorage, const BlockDataID &forceFieldID, const ConstBlockDataID &interactionForceFieldID, uint_t maximumAveragingSteps) | |
void | operator() () |
void | resetAveragingCounter () |
Private Attributes | |
shared_ptr< StructuredBlockStorage > | blockStorage_ |
const BlockDataID | forceFieldID_ |
const ConstBlockDataID | interactionForceFieldID_ |
uint_t | maximumAveragingSteps_ |
uint_t | averagingCounter_ |
using walberla::pe_coupling::discrete_particle_methods::AveragedInteractionForceFieldToForceFieldAdder::ForceField_T = GhostLayerField<Vector3<real_t>, 1> |
|
inline |
|
inline |
|
inline |
|
private |
|
private |
|
private |
|
private |
|
private |