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";
registerMooseAction("MooseApp", AddDefaultConvergenceAction, "add_default_nonlinear_convergence")
static InputParameters validParams()
std::shared_ptr< FEProblemBase > & _problem
Convenience reference to a problem this action works on.
const std::string & _current_task
The current action (even though we have separate instances for each action)
Adds default Convergence objects to the simulation.
void checkUnusedNonlinearConvergenceParameters()
Checks that nonlinear convergence parameters were not set in the executioner if using a Convergence o...
virtual void act() override
Method to add objects to the simulation or perform other setup tasks.
void addDefaultNonlinearConvergence()
Adds the default nonlinear Convergence object(s)
AddDefaultConvergenceAction(const InputParameters ¶ms)
void checkUnusedMultiAppFixedPointConvergenceParameters()
Checks that fixed point convergence parameters were not set in the executioner if using a Convergence...
static InputParameters validParams()
void addDefaultSteadyStateConvergence()
Adds the default steady-state Convergence object.
void checkUnusedSteadyStateConvergenceParameters()
Checks that steady-state convergence parameters were not set in the executioner if using a Convergenc...
void addDefaultMultiAppFixedPointConvergence()
Adds the default fixed point Convergence object.
Default fixed point convergence criteria.
Default nonlinear convergence criteria for FEProblem.
Default convergence criteria for steady-state detection in a transient simulation.
static InputParameters feProblemDefaultConvergenceParams()
static InputParameters fixedPointDefaultConvergenceParams()
Executioner * getExecutioner() const
Retrieve the Executioner for this App.
const InputParameters & parameters() const
Get the parameters of the object.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
static InputParameters defaultSteadyStateConvergenceParams()