18 "Generalized implementation of a non-linear k-Eigenvalue solver");
24 "Handle to an existing lbs solver");
27 "nl_abs_tol", 1.0e-8,
"Non-linear absolute tolerance");
29 "nl_rel_tol", 1.0e-8,
"Non-linear relative tolerance");
31 "nl_sol_tol", 1.0e-50,
"Non-linear solution tolerance");
33 "nl_max_its", 50,
"Non-linear maximum iterations");
38 "l_div_tol", 1.0e6,
"Linear divergence tolerance");
41 "l_gmres_restart_intvl", 30,
"GMRes restart interval");
43 "l_gmres_breakdown_tol", 1.0e6,
"GMRes breakdown tolerance");
46 "reinit_phi_1",
true,
"If true, reinitializes scalar phi fluxes to 1");
50 "The number of free power iterations to execute "
51 "before entering the non-linear algorithm");
59 Chi::object_stack, params.GetParamValue<size_t>(
"lbs_solver_handle"))),
61 nl_solver_(nl_context_),
62 reinit_phi_1_(params.GetParamValue<bool>(
"reinit_phi_1")),
63 num_free_power_its_(params.GetParamValue<int>(
"num_free_power_iterations"))
68 tolerances.nl_rel_tol_ = params.
GetParamValue<
double>(
"nl_rel_tol");
69 tolerances.nl_sol_tol_ = params.
GetParamValue<
double>(
"nl_sol_tol");
70 tolerances.nl_max_its_ = params.
GetParamValue<
int>(
"nl_max_its");
72 tolerances.l_rel_tol_ = params.
GetParamValue<
double>(
"l_rel_tol");
73 tolerances.l_abs_tol_ = params.
GetParamValue<
double>(
"l_abs_tol");
74 tolerances.l_div_tol_ = params.
GetParamValue<
double>(
"l_div_tol");
75 tolerances.l_max_its_ = params.
GetParamValue<
int>(
"l_max_its");
76 tolerances.l_gmres_restart_intvl_ =
78 tolerances.l_gmres_breakdown_tol_ =
111 <<
"LinearBoltzmann::KEigenvalueSolver execution completed\n\n";
LogStream Log(LOG_LVL level=LOG_0)
T GetParamValue(const std::string ¶m_name) const
NonLinearSolverOptions & ToleranceOptions()
static chi::InputParameters GetInputParameters()
std::vector< double > & PrecursorsNewLocal()
virtual void SetPhiVectorScalarValues(std::vector< double > &phi_vector, double value)
void Initialize() override
std::vector< double > & PhiOldLocal()
void UpdateFieldFunctions()
void Initialize() override
static chi::InputParameters GetInputParameters()
NLKEigenvalueAGSSolver< Mat, Vec, SNES > nl_solver_
XXNonLinearKEigen(const chi::InputParameters ¶ms)
std::shared_ptr< NLKEigenAGSContext< Vec, SNES > > nl_context_
void Scale(VecDbl &x, const double &val)
void PowerIterationKEigen(LBSSolver &lbs_solver, double tolerance, int max_iterations, double &k_eff)
RegisterChiObject(lbs, DiffusionDFEMSolver)