Vlasiator ebf0dd394 on dev (v5.4.0 + 1054 commits)
Loading...
Searching...
No Matches
projects::TriAxisSearch Class Referenceabstract

#include <projectTriAxisSearch.h>

Inheritance diagram for projects::TriAxisSearch:
Collaboration diagram for projects::TriAxisSearch:

Protected Member Functions

virtual uint findBlocksToInitialize (spatial_cell::SpatialCell *cell, const uint popID) const
 Find blocks above the threshold centred isotropically around a bulk velocity.
virtual Realf probePhaseSpace (spatial_cell::SpatialCell *cell, const uint popID, Real vx_in, Real vy_in, Real vz_in) const =0
virtual std::vector< std::array< Real, 3 > > getV0 (creal x, creal y, creal z, const uint popID) const =0
 Return a vector containing the velocity coordinate of the centre of each ion population in the distribution.
Protected Member Functions inherited from projects::Project
void setVelocitySpace (const uint popID, spatial_cell::SpatialCell *cell) const
 Sets the distribution function in a cell.
virtual void calcCellParameters (spatial_cell::SpatialCell *cell, creal &t)
virtual Realf fillPhaseSpace (spatial_cell::SpatialCell *cell, const uint popID, const uint nRequested) const =0
void printPopulations ()
virtual bool rescalesDensity (const uint popID) const
void rescaleDensity (spatial_cell::SpatialCell *cell, const uint popID) const
Real getRandomNumber (std::default_random_engine &randGen) const
void setRandomSeed (uint64_t seedModifier, std::default_random_engine &randGen) const
void setRandomCellSeed (spatial_cell::SpatialCell *cell, std::default_random_engine &randGen) const

Additional Inherited Members

Public Member Functions inherited from projects::Project
 Project ()
virtual ~Project ()
virtual Real getCorrectNumberDensity (spatial_cell::SpatialCell *cell, const uint popID) const
virtual void getParameters ()
virtual bool initialize ()
virtual void hook (cuint &stage, const dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, fsgrids::perbspan perb, fsgrids::technicalspan technical, FieldSolverGrid &fsgrid) const
bool initialized ()
virtual void setProjectBField (fsgrids::perbspan perb, fsgrids::bgbspan bgb, fsgrids::technicalspan technical, FieldSolverGrid &fsgrid)
virtual void setupBeforeSetCell (const std::vector< CellID > &cells)
void setCell (spatial_cell::SpatialCell *cell)
 Set the perturbed fields and distribution of a cell according to the default simulation settings. This is used for the NOT_SYSBOUNDARY cells and some other system boundary conditions (e.g. Outflow).
virtual bool canRefine (spatial_cell::SpatialCell *cell) const
virtual bool shouldRefineCell (dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, CellID id, Real r_max2) const
virtual bool shouldUnrefineCell (dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, CellID id, Real r_max2) const
virtual bool refineSpatialCells (dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid) const
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, false if not.
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 bool filterRefined (dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid) const
 Boxcar filters spatial cells that were recently refined.
Static Public Member Functions inherited from projects::Project
static void addParameters ()

Detailed Description

Definition at line 28 of file projectTriAxisSearch.h.

Member Function Documentation

◆ findBlocksToInitialize()

uint projects::TriAxisSearch::findBlocksToInitialize ( spatial_cell::SpatialCell * cell,
const uint popID ) const
protectedvirtual

Find blocks above the threshold centred isotropically around a bulk velocity.

Instead of looping through the whole velocity space this function starts from the project's bulk velocity V0[3]. It then proceeds along V[XYZ] successively to determine at what maximum radius a block falls below (0.1 times) the threshold.

This radius is used to determine all blocks within that radius of V0 for creating V-spaces. The function stores the prepared blocks into cell->velocity_block_with_content_list and returns the count.

This assumes that the velocity space is isotropic (same resolution in vx, vy, vz).

Reimplemented from projects::Project.

Definition at line 34 of file projectTriAxisSearch.cpp.

Here is the call graph for this function:

◆ getV0()

virtual std::vector< std::array< Real, 3 > > projects::TriAxisSearch::getV0 ( creal x,
creal y,
creal z,
const uint popID ) const
protectedpure virtual

Return a vector containing the velocity coordinate of the centre of each ion population in the distribution.

This function is used by findBlocksToInitialize() to start the search of the extent of the distribution along each axis. The extension to a vector allows to have more than one population in each spatial cell.

See also
findBlocksToInitialize

Implemented in projects::Distributions, projects::Flowthrough, projects::Fluctuations, projects::Harris, projects::IPShock, projects::KHB, projects::LossCone, projects::Magnetosphere, projects::MultiPeak, projects::Shocktest, projects::Template, and projects::test_fp.

Here is the caller graph for this function:

◆ probePhaseSpace()

virtual Realf projects::TriAxisSearch::probePhaseSpace ( spatial_cell::SpatialCell * cell,
const uint popID,
Real vx_in,
Real vy_in,
Real vz_in ) const
protectedpure virtual

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