PhyStar  v0.0.0 thu24
solver::ppsol::CartPPSol< N_dim, SpaceID > Class Template Reference

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

#include <CartPPSol.hpp>

Inheritance diagram for solver::ppsol::CartPPSol< N_dim, SpaceID >:
Collaboration diagram for solver::ppsol::CartPPSol< N_dim, SpaceID >:

Public Types

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

Public Member Functions

 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 Prepare ()
 prepare of ppsol, such as building particle types, init of point-particle interaction 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

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
 

Static Public Attributes

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
 

Private Attributes

const std::string _name = "CartPPSol"
 

Additional Inherited Members

- 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)
 
- 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, int SpaceID = 999>
class solver::ppsol::CartPPSol< N_dim, SpaceID >

Point-Particle Solver in a Cartesian box.

Authors
Zhiwen Cui
Template Parameters
N_dimdimension should be 2 or 3

Member Typedef Documentation

◆ PBTypeMap

template<int N_dim, int SpaceID = 999>
using solver::ppsol::CartPPSol< N_dim, SpaceID >::PBTypeMap = std::unordered_map<std::string, std::vector<PBoundaryType> >

Constructor & Destructor Documentation

◆ CartPPSol()

template<int N_dim, int SpaceID>
solver::ppsol::CartPPSol< N_dim, SpaceID >::CartPPSol

Set the ptr_point_particlesol pointer to this class CartPPSol<N_dim, SpaceID>

Template Parameters
N_dim

◆ ~CartPPSol()

template<int N_dim, int SpaceID>
solver::ppsol::CartPPSol< N_dim, SpaceID >::~CartPPSol
virtual

Member Function Documentation

◆ BoundaryIfNecessary()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::BoundaryIfNecessary ( ParticleField< N_dim > &  p)

◆ BoundaryOfPossiblePeriodic()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::BoundaryOfPossiblePeriodic ( ParticleField< N_dim > &  p)

Particle Boundary.

Parameters
pparticleField

References quadpack::P, and dmdyn::ParticleField< N_dim >::pdata.

◆ BoundaryOfPossibleSimpleWall()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::BoundaryOfPossibleSimpleWall ( ParticleField< N_dim > &  p)

◆ CalContactForce()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::CalContactForce ( SmartPList< ParticleField< N_dim >> &  pflist,
int  jp 
)

◆ CalPRIBMForceIfNecessary()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::CalPRIBMForceIfNecessary ( SmartPList< ParticleField< N_dim >> &  pflist,
Real  dt0 
)

◆ ClearPartDataList()

template<int N_dim, int SpaceID = 999>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::ClearPartDataList ( )
inline

◆ CombinePRIBMForce()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::CombinePRIBMForce ( SmartPList< ParticleField< N_dim >> &  pflist,
Real  dt0 
)

◆ ConfigPPDict()

◆ CreateParticle()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::CreateParticle

Create Particle models from PartInfo.in.

References quadpack::max().

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

◆ CreatePRIBMIfNecessary()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::CreatePRIBMIfNecessary

create pr_ibm by particle type

References ibm::DirectForce, and ibm::SmallRigidBody.

◆ CreateSmartPList()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::CreateSmartPList ( SmartPList< ParticleField< N_dim >> &  pflist,
const int  size0 
)

Create a ParticleFieldlist by SmartPList.

SmartPList is a dynamic array for massive particles, all kinds of particles are stored in a one-dimensional array

Parameters
pflistparticlefieldlist
size0size of particlefieldlist

◆ CreateSmartPListFromPartDataList()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::CreateSmartPListFromPartDataList ( SmartPList< ParticleField< N_dim >> &  pflist)

◆ Distance() [1/2]

template<int N_dim, int SpaceID>
Real solver::ppsol::CartPPSol< N_dim, SpaceID >::Distance ( const ParticleField< N_dim > &  pf_i,
const ParticleField< N_dim > &  pf_j 
)

Cal the distance between the particles.

References dmdyn::ParticleField< N_dim >::pdata.

◆ Distance() [2/2]

template<int N_dim, int SpaceID>
Real solver::ppsol::CartPPSol< N_dim, SpaceID >::Distance ( Vecr< N_dim > &  pos_i,
Vecr< N_dim > &  pos_j 
)

◆ dSolve()

template<int N_dim, int SpaceID>
ParticleData< N_dim > solver::ppsol::CartPPSol< N_dim, SpaceID >::dSolve ( Real  t,
ParticleData< N_dim >  dsol,
ParticleField< N_dim > &  pfield 
)

dSolve:increment of particle [will be abandoned in future]

Parameters
ttime
dsol
pfield
Returns
ParticleData<N_dim>

References dmdyn::ParticleField< N_dim >::pdata.

◆ Finish()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::Finish ( const int &  step,
const Real time 
)
virtual

some operations when ppsol is finished

Parameters
step
time

Implements solver::ppsol::PPSolBase.

◆ FromFile()

template<int N_dim, int SpaceID = 999>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::FromFile ( SmartPList< ParticleField< N_dim >> &  pflist)

generate position from File

the positions of particle can be easily designed from external tools, for example particles are arranged into some figures or characters.

Parameters
pflist

◆ FromRandom()

template<int N_dim, int SpaceID = 999>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::FromRandom ( SmartPList< ParticleField< N_dim >> &  pflist)

generate positions from Random numbers

Parameters
pflistparticlefieldlist

◆ GetSolverName()

template<int N_dim, int SpaceID = 999>
virtual std::string solver::ppsol::CartPPSol< N_dim, SpaceID >::GetSolverName ( )
inlinevirtual

Get the Solver Name object.

Returns
std::string

Reimplemented from solver::Solver.

References solver::ppsol::CartPPSol< N_dim, SpaceID >::_name.

◆ Init()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::Init ( const int &  step,
const Real time 
)
virtual

Init of particle fields and related operations.

Parameters
stepcurrent step of simulation
timecurrent time

Implements solver::ppsol::PPSolBase.

Here is the caller graph for this function:

◆ InitOrientation()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::InitOrientation ( SmartPList< ParticleField< N_dim >> &  pflist)

init particle orientation

Parameters
pflist

◆ InitOrientationWithInputValues()

template<int N_dim, int SpaceID = 999>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::InitOrientationWithInputValues ( SmartPList< ParticleField< N_dim >> &  pflist)

◆ InitPartDataList()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::InitPartDataList

init particle position

Parameters
pflist

References dmdyn::init::FromFile.

◆ InitPModelData()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::InitPModelData ( SmartPList< ParticleField< N_dim >> &  pflist)

initialize the pmodel_data array in each particlefield

Parameters
pflist

◆ InitStatLogFile()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::InitStatLogFile

init statistic log file

References gsmpi::root.

Here is the caller graph for this function:

◆ InitVelAndAVel()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::InitVelAndAVel ( SmartPList< ParticleField< N_dim >> &  pflist)

Init of particle velocity and Angular Velocity.

Parameters
pflist

References dmdyn::angular::MatFromIFToPF3DimByee().

Here is the call graph for this function:

◆ InitVelAndAVelWithInputValues()

template<int N_dim, int SpaceID = 999>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::InitVelAndAVelWithInputValues ( SmartPList< ParticleField< N_dim >> &  pflist)

◆ InitVelAndAVelWithLocalFlow()

template<int N_dim, int SpaceID = 999>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::InitVelAndAVelWithLocalFlow ( SmartPList< ParticleField< N_dim >> &  pflist)

Init of particle velocity and Angular Velocity By local flows.

Parameters
pflist

◆ InterpFluidVel()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::InterpFluidVel ( ParticleField< N_dim > &  pfield)

interpolate fluid velocity of a particle

Parameters
pfieldfield of one particle

References dmdyn::ParticleField< N_dim >::fdata, and dmdyn::ParticleField< N_dim >::pdata.

◆ InterpFluidVelGrad()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::InterpFluidVelGrad ( ParticleField< N_dim > &  pfield)

interpolate fluid velocity gradient of a particle

Parameters
pfieldfield of one particle

References dmdyn::ParticleField< N_dim >::fdata, and dmdyn::ParticleField< N_dim >::pdata.

◆ Interpolate()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::Interpolate ( SmartPList< ParticleField< N_dim >> &  pflist)

the fluid informatioins located at particles are interpolated from surrounding meshes

Parameters
pflist

◆ IsInCurrentZone() [1/2]

template<int N_dim, int SpaceID = 999>
bool solver::ppsol::CartPPSol< N_dim, SpaceID >::IsInCurrentZone ( const Real  pos[])
inline

References solver::ppsol::CartPPSol< N_dim, SpaceID >::zonelist.

Here is the caller graph for this function:

◆ IsInCurrentZone() [2/2]

template<int N_dim, int SpaceID = 999>
bool solver::ppsol::CartPPSol< N_dim, SpaceID >::IsInCurrentZone ( const std::vector< Real pos)
inline

References solver::ppsol::CartPPSol< N_dim, SpaceID >::IsInCurrentZone().

Here is the call graph for this function:

◆ LoadMidPPFields()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::LoadMidPPFields ( const int &  step,
const Real time 
)
virtual

◆ LoadPPFields()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::LoadPPFields ( const int &  step,
const Real time 
)
virtual

◆ NextZoneIndex() [1/2]

template<int N_dim, int SpaceID = 999>
int solver::ppsol::CartPPSol< N_dim, SpaceID >::NextZoneIndex ( const Real  pos[])
inline

which next zone should particle locate at?

Parameters
posparticle positstion
Returns
int local_index of zonelist

References solver::ppsol::CartPPSol< N_dim, SpaceID >::zonelist.

Here is the caller graph for this function:

◆ NextZoneIndex() [2/2]

template<int N_dim, int SpaceID = 999>
int solver::ppsol::CartPPSol< N_dim, SpaceID >::NextZoneIndex ( const std::vector< Real pos)
inline

which next zone should particle locate at?

Parameters
posparticle positstion
Returns
int local_index of zonelist

References solver::ppsol::CartPPSol< N_dim, SpaceID >::NextZoneIndex().

Here is the call graph for this function:

◆ NextZoneIndexVirtualRegion()

template<int N_dim, int SpaceID = 999>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::NextZoneIndexVirtualRegion ( const Real  pos[],
std::vector< int > &  index,
const double  r 
)
inline

which next zone should virtual particle locate at?

Parameters
posparticle position
[out]indexindex list of zonelist
rwidth of virtual region

References solver::ppsol::CartPPSol< N_dim, SpaceID >::mpicomm, and solver::ppsol::CartPPSol< N_dim, SpaceID >::zonelist.

◆ ParticleFactory()

template<int N_dim, int SpaceID>
ParticleModel * solver::ppsol::CartPPSol< N_dim, SpaceID >::ParticleFactory ( const int &  modelid,
const int &  size0,
const tml::tmlnode cfgbasic,
const tml::tmlnode cfgextend,
const Real kvisc,
const Real fdensity 
)

◆ ParticleSendRecv()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::ParticleSendRecv ( SmartPList< ParticleField< N_dim >> &  pflist)

particle sendrecv process

communicate the particle data among neighbor processors

Parameters
pflistparticle field list

particle sendrecv process. new version, wrote by qjr

Parameters
pflistparticle field list
Template Parameters
N_dim
Parameters
pflistNew version of communicate the particle data among neighbor processors. wrote by QJR
Template Parameters
N_dim
Parameters
pflist

References dmdyn::SmartData< N_dim >::action, dmdyn::ParticleField< N_dim >::particle_typeid, dmdyn::ParticleField< N_dim >::pdata, dmdyn::ParticleField< N_dim >::Serialize(), dmdyn::ParticleField< N_dim >::SerializedLen(), dmdyn::SmartData< N_dim >::state, and dmdyn::ParticleField< N_dim >::Unserialize().

Here is the call graph for this function:

◆ PPSolID()

template<int N_dim, int SpaceID = 999>
virtual int solver::ppsol::CartPPSol< N_dim, SpaceID >::PPSolID ( )
inlinevirtual

References solver::ppsol::PPSolBase::id.

Here is the caller graph for this function:

◆ Prepare()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::Prepare
virtual

prepare of ppsol, such as building particle types, init of point-particle interaction

Reimplemented in solver::ppsol::CartSmartPPSol< N_dim >.

References solver::ppsol::AB2, solver::database::partinfo, and solver::ppsol::RK3.

Here is the caller graph for this function:

◆ PrepareParticleSendRecv()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::PrepareParticleSendRecv ( SmartPList< ParticleField< N_dim >> &  pflist)

◆ PrepareSendRecvForVirtualRegion()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::PrepareSendRecvForVirtualRegion ( SmartPList< ParticleField< N_dim >> &  pflist,
Real  fac 
)

Preparation of particle sendrecv for virtual particles.

Parameters
pflistparticle field list

◆ RandomOrientation()

template<int N_dim, int SpaceID = 999>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::RandomOrientation ( SmartPList< ParticleField< N_dim >> &  pflist)

generate orientations from random numbers

Parameters
pflist

◆ ScatterOutput()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::ScatterOutput ( const int  istep,
const Real time 
)

ouput scatter of particles rank-by-rank (excluding virtual particles)

Parameters
istep
time

References fileio::intTostr().

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

◆ ScatterOutputVirtual()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::ScatterOutputVirtual ( const int  istep,
const Real time 
)

output scatter of particles in virtual region rank-by-rank (only for testing)

Parameters
istep
time

References fileio::intTostr().

Here is the call graph for this function:

◆ SetMPI()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::SetMPI
virtual

set MPI of ppsol

to init zonelist and build a topology relationship of nearby zones

References gsmpi::SendRecvModel< T >::buffer, gsmpi::SendRecvModel< T >::counts, gsmpi::SendRecvModel< T >::len, gsmpi::SendRecvModel< T >::PrintBuffer(), and gsmpi::SendRecvModel< T >::UpdateLen().

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

◆ Solve()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::Solve ( const int &  step,
const Real time 
)
virtual

Core of PPsol.

Parameters
step
time

Implements solver::ppsol::PPSolBase.

References solver::ppsol::AB2, and solver::ppsol::RK3.

Here is the caller graph for this function:

◆ Statistic()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::Statistic ( const int &  istep,
const Real time 
)

statistc of particle fields

Parameters
istep
time

References gsmpi::root.

Here is the caller graph for this function:

◆ UpdateLocalSize()

template<int N_dim, int SpaceID = 999>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::UpdateLocalSize ( )
inline

update local size of current rank in ppsol

to sum local size of all kinds of particle models

References solver::ppsol::CartPPSol< N_dim, SpaceID >::localsize, solver::ppsol::CartPPSol< N_dim, SpaceID >::ptr_particle, and solver::ppsol::CartPPSol< N_dim, SpaceID >::typenum.

Here is the caller graph for this function:

◆ UpdateLocalSizeFromPFieldList()

template<int N_dim, int SpaceID = 999>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::UpdateLocalSizeFromPFieldList ( )
inline

Update localsize of different kinds of particles from existing ParticleFieldList.

the particleFieldlist should contain particle_typeid

References solver::ppsol::CartPPSol< N_dim, SpaceID >::partfieldlist, solver::ppsol::CartPPSol< N_dim, SpaceID >::ptr_particle, and solver::ppsol::CartPPSol< N_dim, SpaceID >::UpdateLocalSize().

Here is the call graph for this function:

◆ UpdatePPCollisionCountIfNecessary()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::UpdatePPCollisionCountIfNecessary ( SmartPList< ParticleField< N_dim >> &  pflist,
int  jp 
)

◆ UpdateTotalSizeForEachTypeParticle()

template<int N_dim, int SpaceID = 999>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::UpdateTotalSizeForEachTypeParticle ( )
inline

update total size for each type of particle

to sum local sizes of each type of particle in different CPU processes

References solver::ppsol::CartPPSol< N_dim, SpaceID >::mpicomm, solver::ppsol::CartPPSol< N_dim, SpaceID >::ptr_particle, and solver::ppsol::CartPPSol< N_dim, SpaceID >::typenum.

◆ UpdateVirtualParticle()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::UpdateVirtualParticle ( SmartPList< ParticleField< N_dim >> &  pflist)

update virtual particle

Before running this subroutine, prepareSendRecvForVirtualRegion should be executed. this subroutine will use an existed info generated by prepareSendRecvForVirtualRegion

Parameters
pflistparticle field list

◆ VirtualIBMParticleSendRecvBackward()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::VirtualIBMParticleSendRecvBackward ( SmartPList< ParticleField< N_dim >> &  pflist)

the backward of the IBM particle sendrecv process for virtual particles,

Parameters
pflistparticle field list

References dmdyn::AddVirtualListOnly, dmdyn::ReadOnly, and dmdyn::ParticleField< N_dim >::ShortUnserialize().

Here is the call graph for this function:

◆ VirtualParticleSendRecv()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::VirtualParticleSendRecv ( SmartPList< ParticleField< N_dim >> &  pflist)

particle sendrecv process for virtual particles

Parameters
pflistparticle field list

References dmdyn::AddVirtualListOnly, dmdyn::ReadOnly, and dmdyn::ParticleField< N_dim >::ShortUnserialize().

Here is the call graph for this function:

◆ vSolve()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::vSolve ( SmartPList< ParticleField< N_dim >> &  pflist)

sub solver in Solve()

Parameters
pflist

References dmdyn::ParticleField< N_dim >::contact_force, and dmdyn::angular::eeNormalized().

Here is the call graph for this function:

◆ vSolveRK3()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::vSolveRK3 ( SmartPList< ParticleField< N_dim >> &  pflist)

sub solver in Solve() by RK3

Parameters
pflist

References dmdyn::angular::eeNormalized(), and dmdyn::ParticleField< N_dim >::InitContactForce().

Here is the call graph for this function:

◆ WhetherConsiderPFCouple()

template<int N_dim, int SpaceID = 999>
bool solver::ppsol::CartPPSol< N_dim, SpaceID >::WhetherConsiderPFCouple ( )
inline

check whether consider Particle To Fluid interaction

Returns
true consider
false do not consider

References solver::ppsol::FourWay, solver::ppsol::CartPPSol< N_dim, SpaceID >::ppdict, and solver::ppsol::TwoWay.

◆ WhetherConsiderPPInteraction()

template<int N_dim, int SpaceID = 999>
bool solver::ppsol::CartPPSol< N_dim, SpaceID >::WhetherConsiderPPInteraction ( )
inline

check whether consider particle-particle interaction

Returns
true consider
false do not consider

References solver::ppsol::FourWay, solver::ppsol::CartPPSol< N_dim, SpaceID >::ppdict, and solver::ppsol::ThreeWay.

Here is the caller graph for this function:

◆ WriteMidPPFields()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::WriteMidPPFields ( const int &  step,
const Real time 
)
virtual

write mid point-particle field by hdf5

Parameters
step
time

References fileio::PointParticleCartRegularD< N_dim >::AddPPField(), fileio::PointParticleCartRegularD< N_dim >::CloseFile(), fileio::PointParticleCartRegularD< N_dim >::CreateFile(), gsmpi::root, and fileio::PointParticleCartRegularD< N_dim >::SetFileAttr().

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

◆ WritePPFields()

template<int N_dim, int SpaceID>
void solver::ppsol::CartPPSol< N_dim, SpaceID >::WritePPFields ( const int &  step,
const Real time 
)
virtual

Member Data Documentation

◆ _name

template<int N_dim, int SpaceID = 999>
const std::string solver::ppsol::CartPPSol< N_dim, SpaceID >::_name = "CartPPSol"
private

◆ block

template<int N_dim, int SpaceID = 999>
blockelm::CartBlock<N_dim>& solver::ppsol::CartPPSol< N_dim, SpaceID >::block = CartDataSpace<N_dim, SpaceID>::cartblock

◆ bound_type

template<int N_dim, int SpaceID = 999>
PBTypeMap solver::ppsol::CartPPSol< N_dim, SpaceID >::bound_type

◆ cartibm

template<int N_dim, int SpaceID = 999>
std::vector<ibm::IBMCart<N_dim> >& solver::ppsol::CartPPSol< N_dim, SpaceID >::cartibm = CartDataSpace<N_dim, SpaceID>::cartibm

◆ coll_comp

template<int N_dim, int SpaceID = 999>
ContactComponent solver::ppsol::CartPPSol< N_dim, SpaceID >::coll_comp

◆ contact

template<int N_dim, int SpaceID = 999>
dmdyn::ParticleContact<N_dim> solver::ppsol::CartPPSol< N_dim, SpaceID >::contact

◆ conti

template<int N_dim, int SpaceID = 999>
int solver::ppsol::CartPPSol< N_dim, SpaceID >::conti

◆ couple_type

template<int N_dim, int SpaceID = 999>
CoupleType solver::ppsol::CartPPSol< N_dim, SpaceID >::couple_type

◆ domain_size

template<int N_dim, int SpaceID = 999>
std::vector<std::vector<Real> >& solver::ppsol::CartPPSol< N_dim, SpaceID >::domain_size = CartDataSpace<N_dim, SpaceID>::domain_size

◆ gb_domain_size

template<int N_dim, int SpaceID = 999>
std::vector<std::vector<Real> >& solver::ppsol::CartPPSol< N_dim, SpaceID >::gb_domain_size = CartDataSpace<N_dim, SpaceID>::gb_domain_size

◆ ibm_flag

template<int N_dim, int SpaceID = 999>
int& solver::ppsol::CartPPSol< N_dim, SpaceID >::ibm_flag = CartDataSpace<N_dim>::ibm_flag

◆ initpdata_list

template<int N_dim, int SpaceID = 999>
std::vector<dmdyn::init::InitPartData<N_dim> > solver::ppsol::CartPPSol< N_dim, SpaceID >::initpdata_list

◆ interp_order

template<int N_dim, int SpaceID = 999>
int solver::ppsol::CartPPSol< N_dim, SpaceID >::interp_order

◆ localsize

template<int N_dim, int SpaceID = 999>
int solver::ppsol::CartPPSol< N_dim, SpaceID >::localsize

◆ max_particle_length

template<int N_dim, int SpaceID = 999>
Real solver::ppsol::CartPPSol< N_dim, SpaceID >::max_particle_length = 0.

◆ mpicomm

template<int N_dim, int SpaceID = 999>
gsmpi::GSMPICart<N_dim>& solver::ppsol::CartPPSol< N_dim, SpaceID >::mpicomm = CartDataSpace<N_dim, SpaceID>::mpicomm

◆ part_info_path

template<int N_dim, int SpaceID = 999>
std::string solver::ppsol::CartPPSol< N_dim, SpaceID >::part_info_path

◆ part_type

template<int N_dim, int SpaceID = 999>
std::string solver::ppsol::CartPPSol< N_dim, SpaceID >::part_type

◆ partfieldlist

template<int N_dim, int SpaceID = 999>
SmartPList<ParticleField<N_dim> > solver::ppsol::CartPPSol< N_dim, SpaceID >::partfieldlist

◆ pdata_filetype

template<int N_dim, int SpaceID = 999>
PDataFileType solver::ppsol::CartPPSol< N_dim, SpaceID >::pdata_filetype

◆ pfcouple

template<int N_dim, int SpaceID = 999>
dmdyn::CoupleCart<N_dim> solver::ppsol::CartPPSol< N_dim, SpaceID >::pfcouple

◆ 

struct { ... } solver::ppsol::CartPPSol< N_dim, SpaceID >::ppdict

dictionary of ppsol configuration

◆ ppvirt

template<int N_dim, int SpaceID = 999>
CartPPVirtualRegion<N_dim> solver::ppsol::CartPPSol< N_dim, SpaceID >::ppvirt

◆ pr_ibm

template<int N_dim, int SpaceID = 999>
std::vector<ibm::IBMCart<N_dim> > solver::ppsol::CartPPSol< N_dim, SpaceID >::pr_ibm

◆ pr_index

template<int N_dim, int SpaceID = 999>
std::unordered_map<int, int> solver::ppsol::CartPPSol< N_dim, SpaceID >::pr_index

◆ precvbuff

template<int N_dim, int SpaceID = 999>
gsmpi::SerializedBuffer solver::ppsol::CartPPSol< N_dim, SpaceID >::precvbuff

◆ psendbuff

template<int N_dim, int SpaceID = 999>
gsmpi::SerializedBuffer solver::ppsol::CartPPSol< N_dim, SpaceID >::psendbuff

◆ ptr_part_temp

template<int N_dim, int SpaceID = 999>
dmdyn::ParticleModel* solver::ppsol::CartPPSol< N_dim, SpaceID >::ptr_part_temp = nullptr
inlinestatic

◆ ptr_particle

template<int N_dim, int SpaceID = 999>
Array1<dmdyn::ParticleModel *> solver::ppsol::CartPPSol< N_dim, SpaceID >::ptr_particle

◆ ratio_dt_dtp

template<int N_dim, int SpaceID = 999>
int solver::ppsol::CartPPSol< N_dim, SpaceID >::ratio_dt_dtp

◆ ratio_dtp_dtc

template<int N_dim, int SpaceID = 999>
int solver::ppsol::CartPPSol< N_dim, SpaceID >::ratio_dtp_dtc

◆ tempfields

template<int N_dim, int SpaceID = 999>
std::vector<blockelm::CartField<Real, N_dim> *>& solver::ppsol::CartPPSol< N_dim, SpaceID >::tempfields = CartDataSpace<N_dim, SpaceID>::tempfields

◆ time_scheme

template<int N_dim, int SpaceID = 999>
TimeScheme solver::ppsol::CartPPSol< N_dim, SpaceID >::time_scheme

◆ typenum

template<int N_dim, int SpaceID = 999>
int solver::ppsol::CartPPSol< N_dim, SpaceID >::typenum

◆ work_path

template<int N_dim, int SpaceID = 999>
std::string solver::ppsol::CartPPSol< N_dim, SpaceID >::work_path

◆ zonelist

template<int N_dim, int SpaceID = 999>
Array1<compgeo::SimpleCartBoxZone<N_dim> > solver::ppsol::CartPPSol< N_dim, SpaceID >::zonelist

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