23 "add_default_multiapp_fixed_point_convergence");
26 "add_default_steady_state_convergence");
46 else if (
_current_task ==
"add_default_multiapp_fixed_point_convergence")
48 else if (
_current_task ==
"add_default_steady_state_convergence")
55 if (
_problem->needToAddDefaultNonlinearConvergence())
57 const std::string default_name =
"default_nonlinear_convergence";
59 std::vector<ConvergenceName> default_name_vec;
60 for (
const auto & nl_sys_name :
_problem->getNonlinearSystemNames())
61 default_name_vec.push_back(default_name + nl_sys_name);
62 _problem->setNonlinearConvergenceNames(default_name_vec);
72 if (
_problem->needToAddDefaultMultiAppFixedPointConvergence())
74 const std::string conv_name =
"default_multiapp_fixed_point_convergence";
75 _problem->setMultiAppFixedPointConvergenceName(conv_name);
85 if (
_problem->needToAddDefaultSteadyStateConvergence())
87 const std::string conv_name =
"default_steady_state_convergence";
88 _problem->setSteadyStateConvergenceName(conv_name);
100 if (!executioner_params.have_parameter<std::vector<ConvergenceName>>(
"nonlinear_convergence"))
104 bool has_convergence =
false;
105 for (
const auto & cv_name :
_problem->getNonlinearConvergenceNames())
106 if (
_problem->hasConvergence(cv_name))
107 has_convergence =
true;
108 if (!has_convergence)
113 bool has_a_default_nl_conv =
false;
114 for (
const auto & cv_name :
_problem->getNonlinearConvergenceNames())
116 if (!
_problem->hasConvergence(cv_name))
118 auto & conv =
_problem->getConvergence(cv_name);
121 has_a_default_nl_conv =
true;
126 if (!has_a_default_nl_conv)
128 for (
const auto & cv_name :
_problem->getNonlinearConvergenceNames())
130 if (!
_problem->hasConvergence(cv_name))
134 std::vector<std::string> unused_params;
135 for (
const auto & param : nl_params.getParametersList())
136 if (executioner_params.isParamSetByUser(param))
137 unused_params.push_back(param);
139 if (unused_params.size() > 0)
141 std::stringstream msg;
142 msg <<
"The following nonlinear convergence parameters were set in the executioner, but " 144 for (
const auto & param : unused_params)
145 msg <<
" " << param <<
"\n";
157 if (!executioner_params.have_parameter<ConvergenceName>(
"multiapp_fixed_point_convergence"))
161 if (!
_problem->hasSetMultiAppFixedPointConvergenceName())
164 const auto & conv_name =
_problem->getMultiAppFixedPointConvergenceName();
167 if (!
_problem->hasConvergence(conv_name))
172 auto & conv =
_problem->getConvergence(conv_name);
180 std::vector<std::string> unused_params;
181 for (
const auto & param : fp_params.getParametersList())
182 if (executioner_params.isParamSetByUser(param))
183 unused_params.push_back(param);
185 if (unused_params.size() > 0)
187 std::stringstream msg;
188 msg <<
"The following fixed point convergence parameters were set in the executioner, but " 190 for (
const auto & param : unused_params)
191 msg <<
" " << param <<
"\n";
202 if (!executioner_params.have_parameter<ConvergenceName>(
"steady_state_convergence"))
205 const auto conv_name =
_problem->getSteadyStateConvergenceName();
208 if (!
_problem->hasConvergence(conv_name))
213 auto & conv =
_problem->getConvergence(conv_name);
221 std::vector<std::string> unused_params;
222 for (
const auto & param : params.getParametersList())
223 if (executioner_params.isParamSetByUser(param))
224 unused_params.push_back(param);
226 if (unused_params.size() > 0)
228 std::stringstream msg;
229 msg <<
"The following steady-state convergence parameters were set in the executioner, but " 231 for (
const auto & param : unused_params)
232 msg <<
" " << param <<
"\n";
static InputParameters fixedPointDefaultConvergenceParams()
AddDefaultConvergenceAction(const InputParameters ¶ms)
registerMooseAction("MooseApp", AddDefaultConvergenceAction, "add_default_nonlinear_convergence")
Adds default Convergence objects to the simulation.
virtual void act() override
Method to add objects to the simulation or perform other setup tasks.
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
static InputParameters validParams()
void checkUnusedNonlinearConvergenceParameters()
Checks that nonlinear convergence parameters were not set in the executioner if using a Convergence o...
static InputParameters validParams()
void addDefaultSteadyStateConvergence()
Adds the default steady-state Convergence object.
void checkUnusedMultiAppFixedPointConvergenceParameters()
Checks that fixed point convergence parameters were not set in the executioner if using a Convergence...
static InputParameters feProblemDefaultConvergenceParams()
const std::string & _current_task
The current action (even though we have separate instances for each action)
Executioner * getExecutioner() const
Retrieve the Executioner for this App.
void addDefaultNonlinearConvergence()
Adds the default nonlinear Convergence object(s)
Default convergence criteria for steady-state detection in a transient simulation.
static InputParameters defaultSteadyStateConvergenceParams()
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::shared_ptr< FEProblemBase > & _problem
Convenience reference to a problem this action works on.
const InputParameters & parameters() const
Get the parameters of the object.
void addDefaultMultiAppFixedPointConvergence()
Adds the default fixed point Convergence object.
void checkUnusedSteadyStateConvergenceParameters()
Checks that steady-state convergence parameters were not set in the executioner if using a Convergenc...
Default nonlinear convergence criteria for FEProblem.
Default fixed point convergence criteria.