SolverBase¶
-
class
SolverBase¶ Base class for all solvers.
Subclassed by MNSolver, PNSolver, SNSolver
Public Functions
-
SolverBase(Config *settings)¶ Solver constructor.
- Parameters
settings: config class that stores all needed config information
-
void
Solve()¶ Solve functions runs main iteration loop. Components of the solve loop are pure virtual and subclassed by the child solvers.
-
void
PrintVolumeOutput() const¶ Save Output solution to VTK file.
Public Static Functions
-
SolverBase *
Create(Config *settings)¶ Create constructor.
- Return
pointer to SolverBase
- Parameters
settings: config class that stores all needed config information
Protected Functions
-
void
SolverPreprocessing()¶ Performs preprocessing steps before the pseudo time iteration is started.
-
void
IterPreprocessing(unsigned idx_iter) = 0¶ Performs preprocessing for the current solver iteration.
- Parameters
idx_iter: current (peudo) time iteration
-
void
IterPostprocessing(unsigned idx_pseudotime) = 0¶ Performs postprocessing for the current solver iteration.
-
void
FluxUpdate() = 0¶ Constructs the flux update for the current iteration and stores it in psiNew.
-
void
FVMUpdate(unsigned idx_iter) = 0¶ Computes the finite Volume update step for the current iteration.
- Parameters
idx_iter: current (peudo) time iteration
-
void
RKUpdate(VectorVector sol0, VectorVector sol_rk)¶ Computes the finite Volume update step for the current iteration.
- Parameters
idx_iter: current (peudo) time iteration
-
double
ComputeTimeStep(double cfl) const¶ ComputeTimeStep calculates the maximal stable time step using the cfl number.
- Parameters
cfl: Courant-Friedrichs-Levy condition number
-
void
ComputeRadFlux() = 0¶ Computes the flux of the solution to check conservation properties.
-
void
PrepareVolumeOutput() = 0¶ Initializes the output groups and fields of this solver and names the fields.
-
void
WriteVolumeOutput(unsigned idx_iter) = 0¶ Function that prepares VTK export and csv export of the current solver iteration.
- Parameters
idx_iter: current (pseudo) time iteration
-
void
PrintVolumeOutput(int idx_iter) const¶ Save Output solution at given energy (pseudo time) to VTK file. Write frequency is given by option VOLUME_OUTPUT_FREQUENCY. Always prints last iteration without iteration affix.
- Parameters
idx_iter: current (pseudo) time iteration
-
void
PrepareScreenOutput()¶ Initialized the output fields and their Names for the screenoutput.
-
void
WriteScalarOutput(unsigned idx_iter)¶ Function that writes screen and history output fields.
- Parameters
idx_iter: current (pseudo) time iteration
-
void
PrintScreenOutput(unsigned idx_iter)¶ Prints ScreenOutputFields to Screen and to logger. Write frequency is given by option SCREEN_OUTPUT_FREQUENCY. Always prints last iteration.
- Parameters
idx_iter: current (pseudo) time iteration
-
void
PrepareHistoryOutput()¶ Initialized the historyOutputFields and their Names for history output. Write frequency is given by option HISTORY_OUTPUT_FREQUENCY. Always prints last iteration.
-
void
PrintHistoryOutput(unsigned idx_iter)¶ Prints HistoryOutputFields to logger.
- Parameters
idx_iter: current (pseudo) time iteration
-
void
DrawPreSolverOutput()¶ Pre Solver Screen and Logger Output.
-
void
DrawPostSolverOutput()¶ Post Solver Screen and Logger Output.
Protected Attributes
-
NumericalFluxBase *
_g¶ class for numerical flux
-
ProblemBase *
_problem¶ problem class for initial conditions
-
unsigned
_maxIter¶ number of time steps, for non CSD, this equals _nEnergies, for _csd, _maxIter = _nEnergies-1
-
unsigned
_nEnergies¶ number of energysteps, number of nodal energy values for CSD
-
double
_dE¶ energy/time step size
-
Vector
_energies¶ energy groups used in the simulation [keV]
-
unsigned
_nCells¶ number of spatial cells
-
std::vector<BOUNDARY_TYPE>
_boundaryCells¶ boundary type for all cells, dim(_boundary) = (_NCells)
-
std::vector<double>
_areas¶ surface area of all spatial cells, dim(_areas) = _NCells
-
std::vector<std::vector<Vector>>
_normals¶ edge normals multiplied by edge length, dim(_normals) = (_NCells,nEdgesPerCell,spatialDim)
-
std::vector<std::vector<unsigned>>
_neighbors¶ edge neighbor cell ids, dim(_neighbors) = (_NCells,nEdgesPerCell)
-
Reconstructor *
_reconstructor¶ reconstructor object for high-order scheme
-
unsigned
_reconsOrder¶ reconstruction order (current: 1 & 2)
-
VectorVector
_cellMidPoints¶ middle point locations of elements
-
std::vector<std::vector<Vector>>
_interfaceMidPoints¶ middle point locations of edges
-
std::vector<double>
_density¶ patient density, dim(_density) = _nCells (only for csdsolver)
-
Vector
_s¶ stopping power, dim(_s) = _maxIter (only for csdsolver)
-
Vector
_sMid¶ stopping power at intermediate time steps, dim(_s) = _maxIter (only for csdsolver)
-
std::vector<VectorVector>
_Q¶ external source term. Dim(_Q) = _maxIter x (_nCells x _nSystem)
-
VectorVector
_sigmaS¶ scattering cross section for all energies. len: _nEnergies x _nCells
-
VectorVector
_sigmaT¶ total cross section for all energies. len: _nEnergies x _nCells
-
QuadratureBase *
_quadrature¶ pointer to quadrature class
-
unsigned
_nq¶ number of quadrature points
-
VectorVector
_sol¶ solution of the PDE, e.g. angular flux or moments
-
VectorVector
_solNew¶ VectorVector to store the new flux and later the new solution per iteration.
-
Vector
_fluxNew¶ Vector to store the new Flux. Dim _nCells.
-
Vector
_flux¶ Vector to store the old Flux. Dim _nCells.
-
VectorVector
_solDx¶ solution gradient in x direction
-
VectorVector
_solDy¶ solution gradient in y direction
-
std::vector<double>
_solverOutput¶ slope limiter at cell and system pt
<LEGACY: Outputfield for solver ==> Will be replaced by _outputFields in the near future
-
std::vector<std::vector<std::vector<double>>>
_outputFields¶ Solver Output: dimensions (GroupID,FieldID,CellID).
-
std::vector<std::vector<std::string>>
_outputFieldNames¶ Names of the outputFields: dimensions (GroupID,FieldID)
-
std::vector<double>
_screenOutputFields¶ Solver Output: dimensions (FieldID).
-
std::vector<std::string>
_screenOutputFieldNames¶ Names of the outputFields: dimensions (FieldID)
-
std::vector<double>
_historyOutputFields¶ Solver Output: dimensions (FieldID).
-
std::vector<std::string>
_historyOutputFieldNames¶ Names of the outputFields: dimensions (FieldID)
-