Class DiscreteOrdinatesProblem
Defined in File discrete_ordinates_problem.h
Inheritance Relationships
Base Type
public opensn::LBSProblem
(Class LBSProblem)
Derived Type
public opensn::DiscreteOrdinatesCurvilinearProblem
(Class DiscreteOrdinatesCurvilinearProblem)
Class Documentation
-
class DiscreteOrdinatesProblem : public opensn::LBSProblem
Base class for Discrete Ordinates solvers. This class mostly establishes utilities related to sweeping. From here we can derive a steady-state, transient, adjoint, and k-eigenvalue solver.
Subclassed by opensn::DiscreteOrdinatesCurvilinearProblem
Public Functions
-
explicit DiscreteOrdinatesProblem(const InputParameters ¶ms)
Static registration based constructor.
-
~DiscreteOrdinatesProblem() override
-
inline const std::string &GetSweepType() const
-
virtual std::pair<size_t, size_t> GetNumPhiIterativeUnknowns() override
Gets the local and global number of iterative unknowns. This normally is only the flux moments, however, the sweep based solvers might include delayed angular fluxes in this number.
-
virtual void Initialize() override
Initialize function.
-
const std::map<uint64_t, std::shared_ptr<SweepBoundary>> &GetSweepBoundaries() const
Returns the sweep boundaries as a read only reference.
-
virtual void ReorientAdjointSolution() override
Reorient an adjoint solution to account for backwards streaming.
-
void ZeroOutflowBalanceVars(LBSGroupset &groupset)
Zeroes all the outflow data-structures required to compute balance.
Public Static Functions
-
static InputParameters GetInputParameters()
-
static std::shared_ptr<DiscreteOrdinatesProblem> Create(const ParameterBlock ¶ms)
Protected Types
-
using SweepOrderGroupingInfo = std::pair<UniqueSOGroupings, DirIDToSOMap>
Protected Functions
-
virtual void InitializeBoundaries() override
Initializes boundaries.
-
virtual void InitializeWGSSolvers() override
Initializes Within-GroupSet solvers.
-
void InitializeSweepDataStructures()
This routine initializes basic sweep datastructures that are agnostic of the number of groups and essentially the groupsets. The routine rebuilds the data structures i)
quadrature_unq_so_grouping_map_
, ii)quadrature_spds_map_
and iii)quadrature_fluds_templates_map_
. i) is a mapping, per quadrature, to a collection of angle-index-sets where all the angles in a particular angleset share the same sweep ordering. ii) is a mapping, per quadrature, to a collection of SPDSs where each SPDS mirrors an angle-index-set in i) iii) is again a mapping, per quadrature, to a collection of Template FLUDS where each FLUDS mirrors a SPDS in ii).
-
void InitFluxDataStructures(LBSGroupset &groupset)
Initializes fluds_ data structures.
-
void ResetSweepOrderings(LBSGroupset &groupset)
Clears all the sweep orderings for a groupset in preperation for another.
-
virtual std::shared_ptr<SweepChunk> SetSweepChunk(LBSGroupset &groupset)
Sets up the sweek chunk for the given discretization method.
Protected Attributes
-
std::map<std::shared_ptr<AngularQuadrature>, SweepOrderGroupingInfo> quadrature_unq_so_grouping_map_
-
std::map<std::shared_ptr<AngularQuadrature>, std::vector<std::shared_ptr<SPDS>>> quadrature_spds_map_
-
std::map<std::shared_ptr<AngularQuadrature>, std::vector<std::unique_ptr<FLUDSCommonData>>> quadrature_fluds_commondata_map_
-
std::vector<int> verbose_sweep_angles_
-
const std::string sweep_type_
-
std::map<uint64_t, std::shared_ptr<SweepBoundary>> sweep_boundaries_
-
std::size_t max_level_size_ = 0
Max level size.
-
std::size_t max_angleset_size_ = 0
Max angle-set size.
-
std::size_t max_groupset_size_ = 0
Max group-set size.
-
std::shared_ptr<GridFaceHistogram> grid_face_histogram_ = nullptr
Protected Static Functions
This routine groups angle-indices to groups sharing the same sweep ordering. It also takes geometry into account.
-
explicit DiscreteOrdinatesProblem(const InputParameters ¶ms)