walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T > Class Template Reference

Detailed Description

template<typename FlagField_T, template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
class walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >

Evaluator of the added (virtual) mass force based on the given added mass correlation.

The added mass force is evaluated for each body (requires interpolation of several quantities from the fluid fields) and then applied onto them. The corresponding reaction force is added to the fluid via the given distributor.

Note that the fluid velocity (and its derivatives) has to be the fluid-phase velocity (and not the volume-averaged velocity).

Whether or not a body gets treated by the evaluator depends on the return value of 'dpmBodySelectorFct'.

For more infos on interpolators, see field interpolators in src/field/interpolators. For more infos on distributors, see src/field/distributors.

#include <AddedMassForceEvaluator.h>

Public Types

using Vec3Field_T = GhostLayerField< Vector3< real_t >, 1 >
 
using Vec3FieldInterpolator_T = FieldInterpolator_T< Vec3Field_T, FlagField_T >
 
using ForceDistributor_T = Distributor_T< Vec3Field_T, FlagField_T >
 

Public Member Functions

 AddedMassForceEvaluator (const shared_ptr< StructuredBlockStorage > &blockStorage, const BlockDataID &forceFieldID, const BlockDataID &bodyStorageID, const BlockDataID &flagFieldID, const Set< FlagUID > &domainFlags, const BlockDataID &velocityTimeDerivativeFieldID, const std::function< Vector3< real_t >(const Vector3< real_t > &, const Vector3< real_t > &, real_t, real_t)> &addedMassForceCorrelationFunction, const shared_ptr< BodyVelocityTimeDerivativeEvaluator > &bodyVelocityTimeDerivativeEvaluator, const std::function< bool(pe::BodyID)> &dpmBodySelectorFct=selectRegularBodies)
 
void operator() ()
 

Private Attributes

shared_ptr< StructuredBlockStorageblockStorage_
 
const BlockDataID bodyStorageID_
 
std::function< Vector3< real_t > const Vector3< real_t > &, const Vector3< real_t > &, real_t, real_t)> addedMassForceCorrelationFunction_
 
shared_ptr< BodyVelocityTimeDerivativeEvaluatorbodyVelocityTimeDerivativeEvaluator_
 
std::function< bool(pe::BodyID)> dpmBodySelectorFct_
 
BlockDataID velocityTimeDerivativeFieldInterpolatorID_
 
BlockDataID forceDistributorID_
 

Member Typedef Documentation

◆ ForceDistributor_T

template<typename FlagField_T , template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
using walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >::ForceDistributor_T = Distributor_T<Vec3Field_T, FlagField_T>

◆ Vec3Field_T

template<typename FlagField_T , template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
using walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >::Vec3Field_T = GhostLayerField<Vector3<real_t>, 1>

◆ Vec3FieldInterpolator_T

template<typename FlagField_T , template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
using walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >::Vec3FieldInterpolator_T = FieldInterpolator_T<Vec3Field_T, FlagField_T>

Constructor & Destructor Documentation

◆ AddedMassForceEvaluator()

template<typename FlagField_T , template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >::AddedMassForceEvaluator ( const shared_ptr< StructuredBlockStorage > &  blockStorage,
const BlockDataID forceFieldID,
const BlockDataID bodyStorageID,
const BlockDataID flagFieldID,
const Set< FlagUID > &  domainFlags,
const BlockDataID velocityTimeDerivativeFieldID,
const std::function< Vector3< real_t >(const Vector3< real_t > &, const Vector3< real_t > &, real_t, real_t)> &  addedMassForceCorrelationFunction,
const shared_ptr< BodyVelocityTimeDerivativeEvaluator > &  bodyVelocityTimeDerivativeEvaluator,
const std::function< bool(pe::BodyID)> &  dpmBodySelectorFct = selectRegularBodies 
)
inline

Member Function Documentation

◆ operator()()

template<typename FlagField_T , template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
void walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >::operator()

Member Data Documentation

◆ addedMassForceCorrelationFunction_

template<typename FlagField_T , template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
std::function<Vector3<real_t> const Vector3<real_t> &, const Vector3<real_t> &, real_t, real_t )> walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >::addedMassForceCorrelationFunction_
private

◆ blockStorage_

template<typename FlagField_T , template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
shared_ptr<StructuredBlockStorage> walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >::blockStorage_
private

◆ bodyStorageID_

template<typename FlagField_T , template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
const BlockDataID walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >::bodyStorageID_
private

◆ bodyVelocityTimeDerivativeEvaluator_

template<typename FlagField_T , template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
shared_ptr< BodyVelocityTimeDerivativeEvaluator > walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >::bodyVelocityTimeDerivativeEvaluator_
private

◆ dpmBodySelectorFct_

template<typename FlagField_T , template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
std::function<bool(pe::BodyID)> walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >::dpmBodySelectorFct_
private

◆ forceDistributorID_

template<typename FlagField_T , template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
BlockDataID walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >::forceDistributorID_
private

◆ velocityTimeDerivativeFieldInterpolatorID_

template<typename FlagField_T , template< typename, typename > class FieldInterpolator_T, template< typename, typename > class Distributor_T>
BlockDataID walberla::pe_coupling::discrete_particle_methods::AddedMassForceEvaluator< FlagField_T, FieldInterpolator_T, Distributor_T >::velocityTimeDerivativeFieldInterpolatorID_
private

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