PhyStar  v0.0.0 thu24
solver::ppsol::CartSmartPPSol< N_dim > Class Template Reference

smart Point-Particle Solver in a Cartesian box More...

#include <CartSmartPPSol.hpp>

Inheritance diagram for solver::ppsol::CartSmartPPSol< N_dim >:
Collaboration diagram for solver::ppsol::CartSmartPPSol< N_dim >:

Public Member Functions

virtual void Prepare ()
 prepare of ppsol, such as building particle types, init of point-particle interaction More...
 
void CreateParticle ()
 
void InitSmartParticleModule ()
 initialize the smart particle functions (sensor & actor) More...
 
void SensorGetState (const int &istep, const Real &time)
 get the state of each particle More...
 
void ActorTakeAction (const int &istep, const Real &time)
 take actions on the particles More...
 
void AgentDecideAction (const int &istep, const Real &time)
 decide action according to the state More...
 
- Public Member Functions inherited from solver::ppsol::CartPPSol< N_dim, SpaceID >
 CartPPSol ()
 Set the ptr_point_particlesol pointer to this class CartPPSol<N_dim, SpaceID> More...
 
virtual ~CartPPSol ()
 
virtual void SetMPI ()
 set MPI of ppsol More...
 
virtual void Init (const int &step, const Real &time)
 Init of particle fields and related operations. More...
 
virtual void Solve (const int &step, const Real &time)
 Core of PPsol. More...
 
virtual void Finish (const int &step, const Real &time)
 some operations when ppsol is finished More...
 
virtual void WritePPFields (const int &step, const Real &time)
 write point-particle field by hdf5 More...
 
virtual void WriteMidPPFields (const int &step, const Real &time)
 write mid point-particle field by hdf5 More...
 
virtual void LoadPPFields (const int &step, const Real &time)
 load point-particle field from onestep file More...
 
virtual void LoadMidPPFields (const int &step, const Real &time)
 load point-particle field from mid file More...
 
virtual std::string GetSolverName ()
 Get the Solver Name object. More...
 
virtual int PPSolID ()
 
void CreateParticle ()
 Create Particle models from PartInfo.in. More...
 
ParticleModelParticleFactory (const int &modelid, const int &size0, const tml::tmlnode &cfgbasic, const tml::tmlnode &cfgextend, const Real &kvisc, const Real &fdensity)
 Factory of particle models. More...
 
void CreatePRIBMIfNecessary ()
 create pr_ibm by particle type More...
 
void CalPRIBMForceIfNecessary (SmartPList< ParticleField< N_dim >> &pflist, Real dt0)
 
void CombinePRIBMForce (SmartPList< ParticleField< N_dim >> &pflist, Real dt0)
 
void CreateSmartPList (SmartPList< ParticleField< N_dim >> &pflist, const int size0)
 Create a ParticleFieldlist by SmartPList. More...
 
void CreateSmartPListFromPartDataList (SmartPList< ParticleField< N_dim >> &pflist)
 
void InitPartDataList ()
 init particle position More...
 
void ClearPartDataList ()
 
void FromRandom (SmartPList< ParticleField< N_dim >> &pflist)
 generate positions from Random numbers More...
 
void InitOrientation (SmartPList< ParticleField< N_dim >> &pflist)
 init particle orientation More...
 
void RandomOrientation (SmartPList< ParticleField< N_dim >> &pflist)
 generate orientations from random numbers More...
 
void InitPModelData (SmartPList< ParticleField< N_dim >> &pflist)
 initialize the pmodel_data array in each particlefield More...
 
void FromFile (SmartPList< ParticleField< N_dim >> &pflist)
 generate position from File More...
 
void Interpolate (SmartPList< ParticleField< N_dim >> &pflist)
 the fluid informatioins located at particles are interpolated from surrounding meshes More...
 
void InterpFluidVel (ParticleField< N_dim > &pfield)
 interpolate fluid velocity of a particle More...
 
void InterpFluidVelGrad (ParticleField< N_dim > &pfield)
 interpolate fluid velocity gradient of a particle More...
 
void InitVelAndAVel (SmartPList< ParticleField< N_dim >> &pflist)
 Init of particle velocity and Angular Velocity. More...
 
void InitVelAndAVelWithLocalFlow (SmartPList< ParticleField< N_dim >> &pflist)
 Init of particle velocity and Angular Velocity By local flows. More...
 
void InitVelAndAVelWithInputValues (SmartPList< ParticleField< N_dim >> &pflist)
 
void InitOrientationWithInputValues (SmartPList< ParticleField< N_dim >> &pflist)
 
void vSolve (SmartPList< ParticleField< N_dim >> &pflist)
 sub solver in Solve() More...
 
void CalContactForce (SmartPList< ParticleField< N_dim >> &pflist, int jp)
 
void UpdatePPCollisionCountIfNecessary (SmartPList< ParticleField< N_dim >> &pflist, int jp)
 
void vSolveRK3 (SmartPList< ParticleField< N_dim >> &pflist)
 sub solver in Solve() by RK3 More...
 
ParticleData< N_dim > dSolve (Real t, ParticleData< N_dim > dsol, ParticleField< N_dim > &pfield)
 dSolve:increment of particle [will be abandoned in future] More...
 
void BoundaryOfPossiblePeriodic (ParticleField< N_dim > &p)
 Particle Boundary. More...
 
void BoundaryOfPossibleSimpleWall (ParticleField< N_dim > &p)
 
void BoundaryIfNecessary (ParticleField< N_dim > &p)
 
void ParticleSendRecv (SmartPList< ParticleField< N_dim >> &pflist)
 particle sendrecv process More...
 
void PrepareParticleSendRecv (SmartPList< ParticleField< N_dim >> &pflist)
 
void VirtualParticleSendRecv (SmartPList< ParticleField< N_dim >> &pflist)
 particle sendrecv process for virtual particles More...
 
void VirtualIBMParticleSendRecvBackward (SmartPList< ParticleField< N_dim >> &pflist)
 the backward of the IBM particle sendrecv process for virtual particles, More...
 
void PrepareSendRecvForVirtualRegion (SmartPList< ParticleField< N_dim >> &pflist, Real fac)
 Preparation of particle sendrecv for virtual particles. More...
 
void UpdateVirtualParticle (SmartPList< ParticleField< N_dim >> &pflist)
 update virtual particle More...
 
void ScatterOutput (const int istep, const Real &time)
 ouput scatter of particles rank-by-rank (excluding virtual particles) More...
 
void ScatterOutputVirtual (const int istep, const Real &time)
 output scatter of particles in virtual region rank-by-rank (only for testing) More...
 
void ConfigPPDict ()
 Config PPDict. More...
 
bool IsInCurrentZone (const Real pos[])
 
bool IsInCurrentZone (const std::vector< Real > pos)
 
int NextZoneIndex (const Real pos[])
 which next zone should particle locate at? More...
 
int NextZoneIndex (const std::vector< Real > pos)
 which next zone should particle locate at? More...
 
void NextZoneIndexVirtualRegion (const Real pos[], std::vector< int > &index, const double r)
 which next zone should virtual particle locate at? More...
 
void UpdateLocalSize ()
 update local size of current rank in ppsol More...
 
void UpdateTotalSizeForEachTypeParticle ()
 update total size for each type of particle More...
 
void UpdateLocalSizeFromPFieldList ()
 Update localsize of different kinds of particles from existing ParticleFieldList. More...
 
bool WhetherConsiderPPInteraction ()
 check whether consider particle-particle interaction More...
 
bool WhetherConsiderPFCouple ()
 check whether consider Particle To Fluid interaction More...
 
void Statistic (const int &istep, const Real &time)
 statistc of particle fields More...
 
void InitStatLogFile ()
 init statistic log file More...
 
Real Distance (const ParticleField< N_dim > &pf_i, const ParticleField< N_dim > &pf_j)
 Cal the distance between the particles. More...
 
Real Distance (Vecr< N_dim > &pos_i, Vecr< N_dim > &pos_j)
 
- Public Member Functions inherited from solver::ppsol::PPSolBase
 PPSolBase ()
 
virtual ~PPSolBase ()
 
- Public Member Functions inherited from solver::Solver
 Solver ()
 
virtual ~Solver ()
 
void PrintAbstract ()
 
void Relase (const SolverNameList &flag)
 
void ConfigGlobalDict (const std::string filename)
 
void PrintConfigGlobalDict ()
 
virtual std::string GetMeshName ()
 
- Public Member Functions inherited from solver::CartDataSpace< N_dim, 999 >
 CartDataSpace ()
 
 ~CartDataSpace ()
 
void ConfigDataSpaceDict ()
 config information of mpi from ControlDict.in More...
 
void CheckConfigDataSpaceDict ()
 

Public Attributes

std::vector< std::shared_ptr< smart::Sensor > > sensors
 
std::vector< std::shared_ptr< smart::Actor > > actors
 
std::vector< std::shared_ptr< smart::Agent > > agents
 
- Public Attributes inherited from solver::ppsol::CartPPSol< N_dim, SpaceID >
Array1< dmdyn::ParticleModel * > ptr_particle
 
int typenum
 
int localsize
 
std::vector< dmdyn::init::InitPartData< N_dim > > initpdata_list
 
blockelm::CartBlock< N_dim > & block = CartDataSpace<N_dim, SpaceID>::cartblock
 
std::vector< std::vector< Real > > & domain_size = CartDataSpace<N_dim, SpaceID>::domain_size
 
std::vector< std::vector< Real > > & gb_domain_size = CartDataSpace<N_dim, SpaceID>::gb_domain_size
 
gsmpi::GSMPICart< N_dim > & mpicomm = CartDataSpace<N_dim, SpaceID>::mpicomm
 
std::vector< ibm::IBMCart< N_dim > > & cartibm = CartDataSpace<N_dim, SpaceID>::cartibm
 
int & ibm_flag = CartDataSpace<N_dim>::ibm_flag
 
std::vector< blockelm::CartField< Real, N_dim > * > & tempfields = CartDataSpace<N_dim, SpaceID>::tempfields
 
std::vector< ibm::IBMCart< N_dim > > pr_ibm
 
std::unordered_map< int, int > pr_index
 
gsmpi::SerializedBuffer psendbuff
 
gsmpi::SerializedBuffer precvbuff
 
Array1< compgeo::SimpleCartBoxZone< N_dim > > zonelist
 
Real max_particle_length = 0.
 
SmartPList< ParticleField< N_dim > > partfieldlist
 
dmdyn::ParticleContact< N_dim > contact
 
CartPPVirtualRegion< N_dim > ppvirt
 
dmdyn::CoupleCart< N_dim > pfcouple
 
struct {
   std::string   part_type
 
   std::string   part_info_path
 
   std::string   work_path
 
   CoupleType   couple_type
 
   int   ratio_dt_dtp
 
   int   ratio_dtp_dtc
 
   TimeScheme   time_scheme
 
   int   interp_order
 
   int   conti
 
   ContactComponent   coll_comp
 
   PBTypeMap   bound_type
 
   PDataFileType   pdata_filetype
 
ppdict
 dictionary of ppsol configuration More...
 
- Public Attributes inherited from solver::ppsol::PPSolBase
Real dtp = 0.
 
Real dtc = 0.
 
tml::tmlnode ppsoltml
 
tml::table subpartinfo
 
std::string idprefix = ""
 
- Public Attributes inherited from solver::CartDataSpace< N_dim, 999 >
std::vector< Realdomain_size
 
std::vector< int > mesh_size
 
std::vector< int > ghost_size
 
std::vector< int > stagger_flag
 

Private Attributes

const std::string _name = "CartSmartPPSol"
 

Additional Inherited Members

- Public Types inherited from solver::ppsol::CartPPSol< N_dim, SpaceID >
using PBTypeMap = std::unordered_map< std::string, std::vector< PBoundaryType > >
 
- Static Public Member Functions inherited from solver::Solver
static const auto & GlobalDict ()
 
static const auto & Dt ()
 
- Static Public Member Functions inherited from solver::CartDataSpace< N_dim, 999 >
static std::vector< int > CalTotalShape (const std::vector< int > &flag)
 
- Static Public Attributes inherited from solver::ppsol::CartPPSol< N_dim, SpaceID >
static dmdyn::ParticleModelptr_part_temp = nullptr
 
- Static Public Attributes inherited from solver::CartDataSpace< N_dim, 999 >
static std::vector< std::vector< Real > > domain_size
 
static std::vector< std::vector< Real > > gb_domain_size
 
static std::vector< int > mesh_size
 
static std::vector< int > gb_mesh_size
 
static std::vector< int > start_index
 
static std::vector< std::vector< int > > ghost_size
 
static std::vector< std::vector< int > > stagger_flag
 
static const std::vector< int > center_flag
 
static blockelm::CartMesh< N_dim > gb_cartmesh
 
static blockelm::CartBlock< N_dim > cartblock
 
static gsmpi::GSMPICart< N_dim > mpicomm
 
static std::vector< ibm::IBMCart< N_dim > > cartibm
 
static int ibm_flag
 
static std::vector< blockelm::CartField< Real, N_dim > * > tempfields
 
static tml::tmlnode dataspacetml
 
struct {
   std::vector< Real >   domain_size
 
   std::vector< int >   mesh_size
 
   std::vector< int >   ghost_size
 
   std::vector< int >   stagger_flag
 
dataspacedict
 
- Protected Attributes inherited from solver::ppsol::PPSolBase
int id = 0
 
- Static Protected Attributes inherited from solver::ppsol::PPSolBase
static int num_of_ppsol = 0
 
- Static Protected Attributes inherited from solver::Solver
static std::string header = "PhyStar"
 
static std::string version = "v0.0.1"
 
static int count
 
static Solverptr_fluidsol = nullptr
 
static Solverptr_point_particlesol = nullptr
 
static Solverptr_resolved_particlesol = nullptr
 
static Real dt
 
static Real kvisc
 
static Real density
 
static tml::tmlnode globaltml
 
struct {
   std::string   casename
 
   Real   time_start
 
   Real   time_end
 
   Real   time_ndump
 
   int   ndim
 
   int   step_start
 
   int   nstep
 
   int   step_end
 
   int   step_ndump
 
   int   step_nscreen
 
   int   step_nstat
 
   int   step_nrefresh
 
   int   ppsol_flag
 
   int   ppsol_same_dict
 
   unsigned int   random_seed
 
globaldict
 

Detailed Description

template<int N_dim>
class solver::ppsol::CartSmartPPSol< N_dim >

smart Point-Particle Solver in a Cartesian box

Authors
Jingran Qiu
Template Parameters
N_dimdimension should be 2 or 3

Member Function Documentation

◆ ActorTakeAction()

template<int N_dim>
void solver::ppsol::CartSmartPPSol< N_dim >::ActorTakeAction ( const int &  istep,
const Real time 
)
inline

◆ AgentDecideAction()

template<int N_dim>
void solver::ppsol::CartSmartPPSol< N_dim >::AgentDecideAction ( const int &  istep,
const Real time 
)
inline

◆ CreateParticle()

◆ InitSmartParticleModule()

template<int N_dim>
void solver::ppsol::CartSmartPPSol< N_dim >::InitSmartParticleModule ( )
inline

initialize the smart particle functions (sensor & actor)

References smart::ActorFactory(), solver::ppsol::CartSmartPPSol< N_dim >::actors, smart::AgentFactory(), solver::ppsol::CartSmartPPSol< N_dim >::agents, solver::database::partinfo, smart::SensorFactory(), and solver::ppsol::CartSmartPPSol< N_dim >::sensors.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Prepare()

◆ SensorGetState()

template<int N_dim>
void solver::ppsol::CartSmartPPSol< N_dim >::SensorGetState ( const int &  istep,
const Real time 
)
inline

Member Data Documentation

◆ _name

template<int N_dim>
const std::string solver::ppsol::CartSmartPPSol< N_dim >::_name = "CartSmartPPSol"
private

◆ actors

template<int N_dim>
std::vector<std::shared_ptr<smart::Actor> > solver::ppsol::CartSmartPPSol< N_dim >::actors

◆ agents

template<int N_dim>
std::vector<std::shared_ptr<smart::Agent> > solver::ppsol::CartSmartPPSol< N_dim >::agents

◆ sensors

template<int N_dim>
std::vector<std::shared_ptr<smart::Sensor> > solver::ppsol::CartSmartPPSol< N_dim >::sensors

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