31#include <dccrg_cartesian_geometry.hpp>
72 void checkRefinement(dccrg::Dccrg<spatial_cell::SpatialCell,dccrg::Cartesian_Geometry>& mpiGrid);
73 void classifyCells(dccrg::Dccrg<spatial_cell::SpatialCell,dccrg::Cartesian_Geometry>& mpiGrid,
75 void applyInitialState(dccrg::Dccrg<spatial_cell::SpatialCell, dccrg::Cartesian_Geometry>& mpiGrid,
79 void updateState(dccrg::Dccrg<SpatialCell, dccrg::Cartesian_Geometry>& mpiGrid,
86 unsigned int size()
const;
122 const std::vector<CellID>& cellList,
123 std::vector<CellID>& boundaryCellList);
SBC::SysBoundaryCondition is the base class for system boundary conditions.
void initSysBoundaries(Project &project, creal &t)
Initialise all system boundary conditions actually used.
std::array< bool, 3 > periodic
SysBoundary(const SysBoundary &bc)
bool isPeriodic(uint direction) const
SBC::SysBoundaryCondition * getSysBoundary(cuint sysBoundaryType) const
void updateState(dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, fsgrids::technicalspan technical, FieldSolverGrid &fsgrid, fsgrids::perbspan perb, fsgrids::bgbspan bgb, creal t)
std::vector< std::string > sysBoundaryCondList
void classifyCells(dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, fsgrids::technicalspan technical, FieldSolverGrid &fsgrid)
Classify all simulation cells with respect to the system boundary conditions.
void checkRefinement(dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid)
bool existSysBoundary(std::string name)
Boolean check if queried sysboundarycondition exists Note: this queries against the parsed list of na...
void getParameters()
Get this class' parameters.
void addSysBoundary(SBC::SysBoundaryCondition *sbc, Project &project, creal &t)
~SysBoundary()
Destructor for class SysBoundary.
void addParameters()
Add its own and all existing SysBoundaryConditions' parameters.
std::list< SBC::SysBoundaryCondition * > sysBoundaries
void applyInitialState(dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, fsgrids::technicalspan technical, FieldSolverGrid &fsgrid, fsgrids::perbspan perb, fsgrids::bgbspan bgb, Project &project)
Apply the initial state to all system boundary cells. Loops through all SysBoundaryConditions and cal...
std::map< uint, SBC::SysBoundaryCondition * > indexToSysBoundary
unsigned int size() const
void setupL2OutflowAtRestart(dccrg::Dccrg< SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid)
bool isAnyDynamic() const
void applySysBoundaryVlasovConditions(dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, creal &t, const bool calculate_V_moments)
Apply the Vlasov system boundary conditions to all system boundary cells at time t.
void updateSysBoundariesAfterLoadBalance(dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid)
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
void getBoundaryCellList(const dccrg::Dccrg< spatial_cell::SpatialCell, dccrg::Cartesian_Geometry > &mpiGrid, const std::vector< CellID > &cellList, std::vector< CellID > &boundaryCellList)
bool precedenceSort(const SBC::SysBoundaryCondition *first, const SBC::SysBoundaryCondition *second)