Class DiscreteOrdinatesKEigenAcceleration

Nested Relationships

Nested Types

Inheritance Relationships

Derived Types

Class Documentation

class DiscreteOrdinatesKEigenAcceleration

Base class for LBS acceleration methods.

Subclassed by opensn::SCDSAAcceleration, opensn::SMMAcceleration

Public Functions

explicit DiscreteOrdinatesKEigenAcceleration(const InputParameters &params)
virtual ~DiscreteOrdinatesKEigenAcceleration() = default
void Initialize(PowerIterationKEigenSolver &solver)

Public initialize method, to be called by the power iteration solver using this acceleration scheme.

Calls the internal Initialize() method.

virtual void Initialize() = 0

Initialization method for derived classes. Must be overridden.

Called by the other Initialize() method that takes a solver.

virtual void PreExecute() = 0

Pre-execute method for derived classes. Must be overridden.

Called by the owning solver at the beginning of its Execute().

virtual void PrePowerIteration() = 0

Pre-power iteration method for derived classes. Must be overridden.

Called by the owning solver at the beginning of the power iteration loop after the fission source is set and the local moments are scaled.

virtual double PostPowerIteration() = 0

Post-power iteration method for derived classes. Must be overridden.

Called by the owning solver at the end of the power iteration loop after transport is solved.

Returns the k-eigenvalue from the acceleration solve.

inline const std::string &GetName() const

Public Static Functions

static InputParameters GetInputParameters()

Protected Functions

void NodallyAveragedPWLDVector(const std::vector<double> &input, std::vector<double> &output) const

Takes an input vector that is the local version of a PWLD discrete space and then makes it continuous by applying nodal averages.

void CopyOnlyPhi0(const std::vector<double> &phi_in, std::vector<double> &phi_local)

Copies only the scalar moments from an lbs primary flux moments vector.

void ProjectBackPhi0(const std::vector<double> &input, std::vector<double> &output) const

Copies back only the scalar moments to a lbs primary flux vector.

Protected Attributes

DiscreteOrdinatesProblem &do_problem_

The associated DiscreteOrdinatesProblem problem.

const double l_abs_tol_

Absolute residual tolerance from parameters.

const int max_iters_

Maximum allowable iterations from parameters.

const bool verbose_

Verbosity flag from parameters.

const std::string petsc_options_

PETSc options from parameters.

const int pi_max_its_

Maximum inner power iteration count, from parameters.

const double pi_k_tol_

k-eigenvalue tolerance for inner power iterations, from parameters

std::vector<LBSGroupset> &groupsets_

Groupsets from the LBSProblem.

LBSGroupset &front_gs_

Front groupset from the LBSProblem.

std::vector<double> &q_moments_local_

Source moments vector from the LBSProblem.

std::vector<double> &phi_old_local_

Last updated flux vector from the LBSProblem.

std::vector<double> &phi_new_local_

Newest updated flux vector from the LBSProblem.

PowerIterationKEigenSolver *solver_

Associated PI solver, filled during Initialize()

std::shared_ptr<SpatialDiscretization> pwlc_ptr_ = nullptr

Underlying continuous discretization, if needed.

GhostInfo ghost_info_

Ghost information, needed with a continuous discretization.

std::shared_ptr<DiffusionSolver> diffusion_solver_ = nullptr

Underlying diffusion solver.

Protected Static Functions

static std::vector<int64_t> MakePWLDGhostIndices(const SpatialDiscretization &pwld, const UnknownManager &uk_man)
static GhostInfo MakePWLDGhostInfo(const SpatialDiscretization &pwld, const UnknownManager &uk_man)
struct GhostInfo

Public Members

std::shared_ptr<VectorGhostCommunicator> vector_ghost_communicator = nullptr
std::map<int64_t, int64_t> ghost_global_id_2_local_map