29#include <dccrg_cartesian_geometry.hpp>
92 virtual void hook(
cuint& stage,
const dccrg::Dccrg<spatial_cell::SpatialCell, dccrg::Cartesian_Geometry>& mpiGrid,
124 virtual bool shouldRefineCell(dccrg::Dccrg<spatial_cell::SpatialCell,dccrg::Cartesian_Geometry>& mpiGrid,
CellID id,
Real r_max2)
const;
126 virtual bool shouldUnrefineCell(dccrg::Dccrg<spatial_cell::SpatialCell,dccrg::Cartesian_Geometry>& mpiGrid,
CellID id,
Real r_max2)
const;
128 virtual bool refineSpatialCells( dccrg::Dccrg<spatial_cell::SpatialCell,dccrg::Cartesian_Geometry>& mpiGrid )
const;
134 virtual uint64_t
adaptRefinement( dccrg::Dccrg<spatial_cell::SpatialCell,dccrg::Cartesian_Geometry>& mpiGrid )
const;
141 virtual bool forceRefinement( dccrg::Dccrg<spatial_cell::SpatialCell,dccrg::Cartesian_Geometry>& mpiGrid,
int n )
const;
146 virtual bool filterRefined( dccrg::Dccrg<spatial_cell::SpatialCell,dccrg::Cartesian_Geometry>& mpiGrid )
const;
193 const uint nRequested)
const = 0;
211 void setRandomSeed(uint64_t seedModifier, std::default_random_engine& randGen)
const;
sqrt(1.0+vA *vA/(c *c))) % Ion-acoustic wave cS
virtual void setupBeforeSetCell(const std::vector< CellID > &cells)
virtual bool forceRefinement(dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, int n) const
Refine/unrefine spatial cells one level to the static criteria in the config.
virtual Realf fillPhaseSpace(spatial_cell::SpatialCell *cell, const uint popID, const uint nRequested) const =0
virtual uint64_t adaptRefinement(dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid) const
Adapts refinement by one level according to the project. Returns true if any cells were refined,...
virtual bool canRefine(spatial_cell::SpatialCell *cell) const
Real getRandomNumber(std::default_random_engine &randGen) const
virtual Real getCorrectNumberDensity(spatial_cell::SpatialCell *cell, const uint popID) const
virtual bool initialize()
virtual void getParameters()
virtual uint findBlocksToInitialize(spatial_cell::SpatialCell *cell, const uint popID) const
Prepares a list of blocks to loop through when initialising.
virtual bool shouldRefineCell(dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, CellID id, Real r_max2) const
static char rngStateBuffer[256]
virtual void setProjectBField(fsgrids::perbspan perb, fsgrids::bgbspan bgb, fsgrids::technicalspan technical, FieldSolverGrid &fsgrid)
virtual bool refineSpatialCells(dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid) const
static void addParameters()
virtual bool rescalesDensity(const uint popID) const
virtual void calcCellParameters(spatial_cell::SpatialCell *cell, creal &t)
void rescaleDensity(spatial_cell::SpatialCell *cell, const uint popID) const
virtual bool shouldUnrefineCell(dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, CellID id, Real r_max2) const
void setRandomSeed(uint64_t seedModifier, std::default_random_engine &randGen) const
void setRandomCellSeed(spatial_cell::SpatialCell *cell, std::default_random_engine &randGen) const
void setVelocitySpace(const uint popID, spatial_cell::SpatialCell *cell) const
Sets the distribution function in a cell.
bool baseClassInitialized
virtual bool filterRefined(dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid) const
Boxcar filters spatial cells that were recently refined.
void setCell(spatial_cell::SpatialCell *cell)
Set the perturbed fields and distribution of a cell according to the default simulation settings....
fsgrid::FsGrid< FS_STENCIL_WIDTH > FieldSolverGrid
std::span< std::array< Real, fsgrids::bfield::N_BFIELD > > perbspan
std::span< technical > technicalspan
std::span< std::array< Real, bgbfield::N_BGB > > bgbspan
Project * createProject()
ARCH_HOSTDEV Realf MaxwellianPhaseSpaceDensity(creal &vx, creal &vy, creal &vz, creal &T, creal &rho, creal &mass)
ARCH_HOSTDEV Realf TriMaxwellianPhaseSpaceDensity(creal &vx, creal &vy, creal &vz, creal &Tx, creal &Ty, creal &Tz, creal &rho, creal &mass)