|
Vlasiator ebf0dd394 on dev (v5.4.0 + 1054 commits)
|
Ionosphere is a class applying ionospheric boundary conditions. More...
#include <ionosphere.h>


Public Types | |
| enum | downmapSamplingMode { Pointwise , Boxcar27 } |
| enum | IonosphereConductivityModel { GUMICS , Ridley , Koskinen } |
Public Member Functions | |
| Ionosphere () | |
| virtual | ~Ionosphere () |
| virtual void | getParameters () override |
| virtual void | initSysBoundary (creal &t, Project &project) override |
| virtual void | assignSysBoundary (dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, fsgrids::technicalspan technical, FieldSolverGrid &fsgrid) override |
| virtual void | applyInitialState (dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, fsgrids::technicalspan technical, FieldSolverGrid &fsgrid, fsgrids::perbspan perb, fsgrids::bgbspan bgb, Project &project) override |
| virtual Real | fieldSolverBoundaryCondMagneticField (fsgrids::perbspan b, fsgrids::constbgbspan bgb, fsgrids::consttechnicalspan technical, const std::array< Real, 3 > &gridSpacing, const std::array< fsgrid::FsSize_t, 3 > &globalCoordinates, const fsgrid::FsStencil &stencil, cuint component) override |
| virtual void | fieldSolverBoundaryCondElectricField (fsgrids::efieldspan e, const fsgrid::FsStencil &stencil, cuint component) override |
| virtual void | fieldSolverBoundaryCondHallElectricField (fsgrids::ehallspan ehall, const fsgrid::FsStencil &stencil, cuint component) override |
| virtual void | fieldSolverBoundaryCondGradPeElectricField (fsgrids::egradpespan EGradPe, const fsgrid::FsStencil &stencil, cuint component) override |
| virtual void | fieldSolverBoundaryCondDerivatives (fsgrids::dperbspan dperb, fsgrids::dmomentsspan dmoments, const fsgrid::FsStencil &stencil, cuint RKCase, cuint component) override |
| virtual void | fieldSolverBoundaryCondBVOLDerivatives (fsgrids::volspan vols, const fsgrid::FsStencil &stencil, cuint component) override |
| virtual void | mapCellPotentialAndGetEXBDrift (std::array< Real, CellParams::N_SPATIAL_CELL_PARAMS > &cellParams) override |
| virtual void | vlasovBoundaryCondition (dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, const CellID &cellID, const uint popID, const bool calculate_V_moments) override |
| virtual void | updateState (dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, fsgrids::technicalspan technical, FieldSolverGrid &fsgrid, fsgrids::perbspan perb, fsgrids::bgbspan bgb, creal t) override |
| virtual void | getFaces (bool *faces) override |
| virtual std::string | getName () const override |
| virtual uint | getIndex () const override |
| void | generateTemplateCell (Project &project) |
| void | setCellFromTemplate (SpatialCell *cell, const uint popID) |
| std::array< Real, 3 > | fieldSolverGetNormalDirection (fsgrids::technicalspan technical, FieldSolverGrid &fsgrid, cint i, cint j, cint k) |
| Public Member Functions inherited from SBC::SysBoundaryCondition | |
| SysBoundaryCondition () | |
| virtual | ~SysBoundaryCondition () |
| virtual void | generateTemplateCell () |
| virtual void | setupL2OutflowAtRestart (dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid) |
| uint | getPrecedence () const |
| bool | isDynamic () const |
| bool | updateSysBoundaryConditionsAfterLoadBalance (const dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, const std::vector< CellID > &local_cells_on_boundary) |
| bool | doApplyUponRestart () const |
| void | setPeriodicity (std::array< bool, 3 > isFacePeriodic) |
Static Public Member Functions | |
| static void | addParameters () |
| Static Public Member Functions inherited from SBC::SysBoundaryCondition | |
| static void | addParameters () |
| static void | setCellDerivativesToZero (fsgrids::dperbspan dperb, fsgrids::dmomentsspan dmoments, const fsgrid::FsStencil &stencil, cuint component) |
| static void | setCellBVOLDerivativesToZero (fsgrids::volspan vols, const fsgrid::FsStencil &stencil, cuint component) |
Public Attributes | |
| Real | center [3] |
| uint | geometry |
| std::string | baseShape |
| std::string | path |
| int | fibonacciNodeNum |
| Real | earthAngularVelocity |
| Real | plasmapauseL |
| std::string | atmosphericModelFile |
| std::vector< Real > | refineMinLatitudes |
| std::vector< Real > | refineMaxLatitudes |
| spatial_cell::SpatialCell | templateCell |
Static Public Attributes | |
| static Real | radius |
| static std::vector< IonosphereSpeciesParameters > | speciesParams |
| static Real | innerRadius |
| static bool | useEigenSolver |
| static int | solverMaxIterations |
| static Real | solverRelativeL2ConvergenceThreshold |
| static int | solverMaxFailureCount |
| static Real | solverMaxErrorGrowthFactor |
| static bool | solverPreconditioning |
| static bool | solverUseMinimumResidualVariant |
| static bool | solverToggleMinimumResidualVariant |
| static Real | shieldingLatitude |
| static Real | ridleyParallelConductivity |
| static Real | recombAlpha |
| static Real | F10_7 |
| static Real | backgroundIonisation |
| static Real | downmapRadius |
| static Real | downmapSamplingWidth |
| static enum SBC::Ionosphere::downmapSamplingMode | downmapFACsamplingMode = Ionosphere::Pointwise |
| static Real | unmappedNodeRho |
| static Real | unmappedNodeTe |
| static Real | couplingTimescale |
| static Real | couplingInterval |
| static int | solveCount |
| static enum SBC::Ionosphere::IonosphereConductivityModel | conductivityModel |
| static Real | fixedSigmaP |
| static Real | fixedSigmaH |
Additional Inherited Members | |
| Protected Member Functions inherited from SBC::SysBoundaryCondition | |
| void | determineFace (bool *isThisCellOnAFace, const creal x, const creal y, const creal z, const creal dx, const creal dy, const creal dz, const bool excludeSlicesAndPeriodicDimensions=false) const |
| Function used to determine on which face(s) if any the cell at given coordinates is. | |
| void | determineFace (std::array< bool, 6 > &isThisCellOnAFace, const dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, CellID id, const bool excludeSlicesAndPeriodicDimensions=false) |
| Function used to determine on which face(s) if any the cell with the given MPI id is on. | |
| void | copyCellData (const SpatialCell *from, SpatialCell *to, const bool copyMomentsOnly, const uint popID, const bool copy_V_moments) |
| std::array< SpatialCell *, 27 > & | getFlowtoCells (const CellID &cellID) |
| std::array< Realf *, 27 > | getFlowtoCellsBlock (const std::array< SpatialCell *, 27 > flowtoCells, const vmesh::GlobalID blockGID, const uint popID) |
| int | nbrID (const int i, const int j, const int k) |
| void | vlasovBoundaryCopyFromTheClosestNbr (dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, const CellID &cellID, const bool ©MomentsOnly, const uint popID, const bool calculate_V_moments) |
| void | vlasovBoundaryCopyFromTheClosestL1OutflowNbr (dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, const CellID &cellID, const bool ©MomentsOnly, const uint popID, const bool calculate_V_moments) |
| void | vlasovBoundaryCopyFromAllClosestNbrs (dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, const CellID &cellID, const uint popID, const bool calculate_V_moments) |
| void | vlasovBoundaryFluffyCopyFromAllCloseNbrs (dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, const CellID &cellID, const uint popID, const bool calculate_V_moments, creal fluffiness) |
| std::array< int, 3 > | getTheClosestNonsysboundaryCell (fsgrids::technicalspan technical, FieldSolverGrid &fsgrid, cint i, cint j, cint k) |
| std::vector< std::array< int, 3 > > | getAllClosestNonsysboundaryCells (fsgrids::technicalspan technical, FieldSolverGrid &fsgrid, cint i, cint j, cint k) |
| CellID & | getTheClosestNonsysboundaryCell (const CellID &cellID) |
| std::vector< CellID > & | getAllClosestNonsysboundaryCells (const CellID &cellID) |
| std::vector< CellID > & | getAllCloseNonsysboundaryCells (const CellID &cellID) |
| Real | fieldBoundaryCopyFromSolvingNbrMagneticField (fsgrids::perbspan b, fsgrids::consttechnicalspan technical, const fsgrid::FsStencil &stencil, cuint component, cuint mask) |
| CellID & | getTheClosestL1OutflowCell (const CellID &cellID) |
| std::vector< CellID > & | getAllClosestL1OutflowCells (const CellID &cellID) |
| Protected Attributes inherited from SBC::SysBoundaryCondition | |
| uint | precedence |
| bool | dynamic |
| std::array< bool, 3 > | periodic |
| std::unordered_map< CellID, std::vector< CellID > > | allClosestNonsysboundaryCells |
| std::unordered_map< CellID, std::vector< CellID > > | allCloseNonsysboundaryCells |
| std::unordered_map< CellID, std::vector< CellID > > | allClosestL1OutflowCells |
| std::unordered_map< CellID, std::vector< CellID > > | allCloseL1OutflowCells |
| bool | applyUponRestart |
Ionosphere is a class applying ionospheric boundary conditions.
Ionosphere is a class handling cells tagged as sysboundarytype::IONOSPHERE by this system boundary condition. It applies ionospheric boundary conditions.
These consist in:
Definition at line 572 of file ionosphere.h.
| Enumerator | |
|---|---|
| Pointwise | |
| Boxcar27 | |
Definition at line 640 of file ionosphere.h.
| Enumerator | |
|---|---|
| GUMICS | |
| Ridley | |
| Koskinen | |
Definition at line 650 of file ionosphere.h.
| SBC::Ionosphere::Ionosphere | ( | ) |
|
virtual |
Definition at line 3029 of file ionosphere.cpp.
|
static |
Definition at line 3031 of file ionosphere.cpp.


|
overridevirtual |
Implements SBC::SysBoundaryCondition.
Definition at line 3361 of file ionosphere.cpp.

|
overridevirtual |
Implements SBC::SysBoundaryCondition.
Definition at line 3340 of file ionosphere.cpp.

|
overridevirtual |
Implements SBC::SysBoundaryCondition.
Definition at line 3779 of file ionosphere.cpp.

|
overridevirtual |
Implements SBC::SysBoundaryCondition.
Definition at line 3775 of file ionosphere.cpp.

|
overridevirtual |
Implements SBC::SysBoundaryCondition.
Definition at line 3741 of file ionosphere.cpp.
|
overridevirtual |
Implements SBC::SysBoundaryCondition.
Definition at line 3771 of file ionosphere.cpp.
|
overridevirtual |
Implements SBC::SysBoundaryCondition.
Definition at line 3745 of file ionosphere.cpp.
|
overridevirtual |
We want here to
– Average perturbed face B from the nearest neighbours
– Retain only the normal components of perturbed face B
This advanced magic lead to trouble when merging, so check it still works correctly
Implements SBC::SysBoundaryCondition.
Definition at line 3657 of file ionosphere.cpp.
| std::array< Real, 3 > SBC::Ionosphere::fieldSolverGetNormalDirection | ( | fsgrids::technicalspan | technical, |
| FieldSolverGrid & | fsgrid, | ||
| cint | i, | ||
| cint | j, | ||
| cint | k ) |
| void SBC::Ionosphere::generateTemplateCell | ( | Project & | project | ) |
NOTE: This function must initialize all particle species!
| project |
Definition at line 4106 of file ionosphere.cpp.

|
overridevirtual |
Function used to know which faces the boundary condition is applied to.
| faces | Pointer to array of 6 bool in which the values are returned whether the corresponding face is of that type. Order: 0 x+; 1 x-; 2 y+; 3 y-; 4 z+; 5 z- |
Function used in some cases to know which faces the system boundary condition is being applied to.
| faces | Pointer to array of 6 bool in which the values are returned whether the corresponding face is of that type. Order: 0 x+; 1 x-; 2 y+; 3 y-; 4 z+; 5 z- |
Implements SBC::SysBoundaryCondition.
Definition at line 4217 of file ionosphere.cpp.
|
overridevirtual |
Implements SBC::SysBoundaryCondition.
Definition at line 4221 of file ionosphere.cpp.

|
overridevirtual |
Reimplemented from SBC::SysBoundaryCondition.
Definition at line 4216 of file ionosphere.cpp.
|
overridevirtual |
Reimplemented from SBC::SysBoundaryCondition.
Definition at line 3087 of file ionosphere.cpp.


Implements SBC::SysBoundaryCondition.
Definition at line 3230 of file ionosphere.cpp.

|
overridevirtual |
Reimplemented from SBC::SysBoundaryCondition.
Definition at line 3784 of file ionosphere.cpp.

| void SBC::Ionosphere::setCellFromTemplate | ( | SpatialCell * | cell, |
| const uint | popID ) |
Definition at line 4208 of file ionosphere.cpp.


|
overridevirtual |
Implements SBC::SysBoundaryCondition.
Definition at line 4219 of file ionosphere.cpp.
|
overridevirtual |
This function computes the Vlasov (distribution function) boundary condition for the given particle species only. It is not! allowed to change block structure in cell.
| mpiGrid | Parallel grid. |
| cellID | Spatial cell ID. |
| popID | Particle species ID. |
Implements SBC::SysBoundaryCondition.
Definition at line 3838 of file ionosphere.cpp.

| std::string SBC::Ionosphere::atmosphericModelFile |
MSIS data file
Definition at line 677 of file ionosphere.h.
|
static |
Background ionisation due to stellar UV and cosmic rays
Definition at line 637 of file ionosphere.h.
| std::string SBC::Ionosphere::baseShape |
Basic mesh shape (fromFile / sphericalFibonacci / icosahedron / tetrahedron)
Definition at line 672 of file ionosphere.h.
| Real SBC::Ionosphere::center[3] |
Coordinates of the centre of the ionosphere.
Definition at line 668 of file ionosphere.h.
|
static |
Definition at line 100 of file ionosphere.cpp.
|
static |
Ionosphere update interval
Definition at line 648 of file ionosphere.h.
|
static |
Magnetosphere->Ionosphere coupling timescale (seconds)
Definition at line 647 of file ionosphere.h.
|
static |
FAC downmap mode flag
Definition at line 82 of file ionosphere.cpp.
|
static |
Radius from which FACs are downmapped (RE)
Definition at line 638 of file ionosphere.h.
|
static |
Stencil width for FACs downmapping routines
Definition at line 639 of file ionosphere.h.
| Real SBC::Ionosphere::earthAngularVelocity |
Earth rotation vector, in radians/s
Definition at line 675 of file ionosphere.h.
|
static |
Solar 10.7 Flux value (parameter)
Definition at line 636 of file ionosphere.h.
| int SBC::Ionosphere::fibonacciNodeNum |
If spherical fibonacci: number of nodes to generate
Definition at line 674 of file ionosphere.h.
|
static |
Definition at line 656 of file ionosphere.h.
|
static |
For the fixedSigma conductivity model
Definition at line 655 of file ionosphere.h.
| uint SBC::Ionosphere::geometry |
Geometry of the ionosphere, 0: inf-norm (diamond), 1: 1-norm (square), 2: 2-norm (circle, DEFAULT), 3: polar-plane cylinder with line dipole.
Definition at line 669 of file ionosphere.h.
|
static |
Radius of the ionosphere model
Definition at line 622 of file ionosphere.h.
| std::string SBC::Ionosphere::path |
Path to ionosphere grid mesh file
Definition at line 673 of file ionosphere.h.
| Real SBC::Ionosphere::plasmapauseL |
L-Value at which the plasma pause resides (everything inside corotates)
Definition at line 676 of file ionosphere.h.
|
static |
Radius of the inner simulation boundary
Definition at line 618 of file ionosphere.h.
|
static |
Recombination parameter, determining atmosphere ionizability (parameter)
Definition at line 635 of file ionosphere.h.
| std::vector<Real> SBC::Ionosphere::refineMaxLatitudes |
Definition at line 681 of file ionosphere.h.
| std::vector<Real> SBC::Ionosphere::refineMinLatitudes |
Definition at line 680 of file ionosphere.h.
|
static |
Constant parallel conductivity
Constant parallel conductivity in the Ridley conductivity model
Definition at line 632 of file ionosphere.h.
|
static |
Latitude (degree) below which the potential is zeroed in the equator gauge fixing scheme
Definition at line 631 of file ionosphere.h.
|
static |
Counter for the number of ionosphere solvings
Counter of the number of solvings
Definition at line 649 of file ionosphere.h.
|
static |
Definition at line 627 of file ionosphere.h.
|
static |
L2 metric relative convergence threshold
Definition at line 626 of file ionosphere.h.
|
static |
Maximum iterations of CG solver per timestep
Definition at line 624 of file ionosphere.h.
|
static |
Preconditioning for the CG solver
Definition at line 628 of file ionosphere.h.
|
static |
Definition at line 625 of file ionosphere.h.
|
static |
Toggle use of the minimum residual variant between solver restarts
Definition at line 630 of file ionosphere.h.
|
static |
Use the minimum residual variant
Definition at line 629 of file ionosphere.h.
|
static |
Definition at line 619 of file ionosphere.h.
| spatial_cell::SpatialCell SBC::Ionosphere::templateCell |
Definition at line 683 of file ionosphere.h.
|
static |
Electron density of ionosphere nodes that don't couple to the magnetosphere
Definition at line 645 of file ionosphere.h.
|
static |
Electron temperature of ionosphere nodes that don't couple to the magnetosphere
Definition at line 646 of file ionosphere.h.
|
static |
Definition at line 623 of file ionosphere.h.