PhyStar  v0.0.0 thu24
dmdyn::WPContact< N_dim > Struct Template Reference

#include <WPContact.hpp>

Collaboration diagram for dmdyn::WPContact< N_dim >:

Public Types

using WPCM_ptr = std::shared_ptr< WPContactModelBase >
 
using PBTypeMap = std::unordered_map< std::string, std::vector< PBoundaryType > >
 

Public Member Functions

void Init (ParticleModel **ptr_p)
 
void InitCollisionCount ()
 
void AddWallObject (std::vector< algo::fcl::CollisionObject * > &collobj)
 Add wall object to the wpcontact manager. More...
 
void AddWallObject (algo::fcl::CollisionObject *collobj)
 
void AddWallObjectFromBoundary (const std::vector< std::vector< Real >> &domain_size, const std::vector< std::vector< Real >> &global_domain_size, PBTypeMap &pbound_type)
 Add plane Wall objects from boundary dict. More...
 
void AddWallObjectFromBoundaryOld (const std::vector< std::vector< Real >> &domain_size, const std::vector< std::vector< Real >> &global_domain_size, PBTypeMap &pbound_type)
 
bool IsInPossibleWPContacted (auto &pfield, const Real fac=1.2)
 
void ManagerSetUp ()
 
std::vector< NormDist< N_dim > > & MultiDists (auto &pfield, Real fac=0.0)
 compute the mini_distance with walls More...
 
Real CollisionRadius (ParticleModel *p_part, const WPDetectMethod &wpmethod)
 the radius for collision depending on the selected wall contact method More...
 
bool SimpleWallCollisionByCollisionRadius (ParticleField< N_dim > &pfield)
 
void WallCollisionByFullResolved (ParticleField< N_dim > &pfield, Real alpha=1.0, Real beta=0.0)
 
bool SimpleWallCollision (ParticleField< N_dim > &pfield)
 
void ContactModelListGenerate (const std::vector< std::string > &strlist, auto &ppdict)
 
void CompactNormDistsByDist (Real ds)
 compact norm dists and delete duplicate data by the distance among points, and return min_distances with different contant points More...
 
void UpdateMinMeands (Real ds)
 

Public Attributes

algo::fcl::DynamicAABBTreeCollisionManager wpcontact_manager
 
algo::fcl::CollisionCallBackDefault wpcoll
 
algo::fcl::DistanceCallBackDefault wpdist
 
std::vector< WPCM_ptrcontact_models
 
std::vector< NormDist< N_dim > > norm_dists
 
Real min_meands = -999
 
ParticleModel ** ptr_particle_base = nullptr
 
std::vector< uIntcoll_count
 
std::vector< uIntcoll_count1
 
std::vector< uIntcoll_count2
 

Member Typedef Documentation

◆ PBTypeMap

template<int N_dim>
using dmdyn::WPContact< N_dim >::PBTypeMap = std::unordered_map<std::string, std::vector<PBoundaryType> >

◆ WPCM_ptr

template<int N_dim>
using dmdyn::WPContact< N_dim >::WPCM_ptr = std::shared_ptr<WPContactModelBase>

Member Function Documentation

◆ AddWallObject() [1/2]

template<int N_dim>
void dmdyn::WPContact< N_dim >::AddWallObject ( algo::fcl::CollisionObject *  collobj)
inline

◆ AddWallObject() [2/2]

template<int N_dim>
void dmdyn::WPContact< N_dim >::AddWallObject ( std::vector< algo::fcl::CollisionObject * > &  collobj)
inline

Add wall object to the wpcontact manager.

Parameters
collobj

◆ AddWallObjectFromBoundary()

template<int N_dim>
void dmdyn::WPContact< N_dim >::AddWallObjectFromBoundary ( const std::vector< std::vector< Real >> &  domain_size,
const std::vector< std::vector< Real >> &  global_domain_size,
PBTypeMap pbound_type 
)
inline

Add plane Wall objects from boundary dict.

if the current block does not contain this plane wall object, this wall object will not appended in the wpcontact_manager

Parameters
domain_size
global_domain_size
pbound_type

References compgeo::eps, and dmdyn::W.

◆ AddWallObjectFromBoundaryOld()

template<int N_dim>
void dmdyn::WPContact< N_dim >::AddWallObjectFromBoundaryOld ( const std::vector< std::vector< Real >> &  domain_size,
const std::vector< std::vector< Real >> &  global_domain_size,
PBTypeMap pbound_type 
)
inline

References compgeo::eps, and dmdyn::W.

◆ CollisionRadius()

template<int N_dim>
Real dmdyn::WPContact< N_dim >::CollisionRadius ( ParticleModel p_part,
const WPDetectMethod wpmethod 
)
inline

the radius for collision depending on the selected wall contact method

Parameters
p_part
wpmethod
Returns
Real

References dmdyn::CenterPnt, dmdyn::EquRadius, dmdyn::ParticleModel::EquRadius(), dmdyn::FullResolved, dmdyn::MaxRadius, and dmdyn::ParticleModel::MaxRadius().

Here is the call graph for this function:

◆ CompactNormDistsByDist()

template<int N_dim>
void dmdyn::WPContact< N_dim >::CompactNormDistsByDist ( Real  ds)
inline

compact norm dists and delete duplicate data by the distance among points, and return min_distances with different contant points

Parameters
ds

References blin::Distance().

Here is the call graph for this function:

◆ ContactModelListGenerate()

template<int N_dim>
void dmdyn::WPContact< N_dim >::ContactModelListGenerate ( const std::vector< std::string > &  strlist,
auto &  ppdict 
)
inline

References dmdyn::strlist.

◆ Init()

template<int N_dim>
void dmdyn::WPContact< N_dim >::Init ( ParticleModel **  ptr_p)
inline

◆ InitCollisionCount()

template<int N_dim>
void dmdyn::WPContact< N_dim >::InitCollisionCount ( )
inline

◆ IsInPossibleWPContacted()

template<int N_dim>
bool dmdyn::WPContact< N_dim >::IsInPossibleWPContacted ( auto &  pfield,
const Real  fac = 1.2 
)
inline

References dmdyn::radius.

◆ ManagerSetUp()

template<int N_dim>
void dmdyn::WPContact< N_dim >::ManagerSetUp ( )
inline

◆ MultiDists()

template<int N_dim>
std::vector<NormDist<N_dim> >& dmdyn::WPContact< N_dim >::MultiDists ( auto &  pfield,
Real  fac = 0.0 
)
inline

compute the mini_distance with walls

For full resolved wall contact model, this function can return the positive mini_distances with a thresold \delta=0.1 Coll_rad for simple collision model, such as maximum and equivalent radii, only return one collide distance if the norm_dists is not empty, this means that particle is in the contact region or touch with the wall.

Parameters
pfield
Returns
std::vector<NormDist>

References dmdyn::FullResolved, and quadpack::max().

Here is the call graph for this function:

◆ SimpleWallCollision()

template<int N_dim>
bool dmdyn::WPContact< N_dim >::SimpleWallCollision ( ParticleField< N_dim > &  pfield)
inline

◆ SimpleWallCollisionByCollisionRadius()

template<int N_dim>
bool dmdyn::WPContact< N_dim >::SimpleWallCollisionByCollisionRadius ( ParticleField< N_dim > &  pfield)
inline

◆ UpdateMinMeands()

template<int N_dim>
void dmdyn::WPContact< N_dim >::UpdateMinMeands ( Real  ds)
inline

References quadpack::min().

Here is the call graph for this function:

◆ WallCollisionByFullResolved()

template<int N_dim>
void dmdyn::WPContact< N_dim >::WallCollisionByFullResolved ( ParticleField< N_dim > &  pfield,
Real  alpha = 1.0,
Real  beta = 0.0 
)
inline

Member Data Documentation

◆ coll_count

template<int N_dim>
std::vector<uInt> dmdyn::WPContact< N_dim >::coll_count

◆ coll_count1

template<int N_dim>
std::vector<uInt> dmdyn::WPContact< N_dim >::coll_count1

◆ coll_count2

template<int N_dim>
std::vector<uInt> dmdyn::WPContact< N_dim >::coll_count2

◆ contact_models

template<int N_dim>
std::vector<WPCM_ptr> dmdyn::WPContact< N_dim >::contact_models

◆ min_meands

template<int N_dim>
Real dmdyn::WPContact< N_dim >::min_meands = -999

◆ norm_dists

template<int N_dim>
std::vector<NormDist<N_dim> > dmdyn::WPContact< N_dim >::norm_dists

◆ ptr_particle_base

template<int N_dim>
ParticleModel** dmdyn::WPContact< N_dim >::ptr_particle_base = nullptr

◆ wpcoll

template<int N_dim>
algo::fcl::CollisionCallBackDefault dmdyn::WPContact< N_dim >::wpcoll

◆ wpcontact_manager

template<int N_dim>
algo::fcl::DynamicAABBTreeCollisionManager dmdyn::WPContact< N_dim >::wpcontact_manager

◆ wpdist

template<int N_dim>
algo::fcl::DistanceCallBackDefault dmdyn::WPContact< N_dim >::wpdist

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