21 params.
addParam<
bool>(
"use_transient_executioner",
"Option to use a transient executioner");
22 params.
addParam<
bool>(
"generate_mesh",
true,
"Option to have the action generate the mesh");
23 params.
addParam<std::vector<VariableName>>(
24 "scalar_variable_names", {},
"List of scalar variables");
25 params.
addParam<std::vector<FunctionName>>(
26 "scalar_variable_values", {},
"List of values of the scalar variables");
27 params.
addParam<std::vector<VariableName>>(
"aux_variable_names", {},
"List of aux variables");
28 params.
addParam<std::vector<FunctionName>>(
29 "aux_variable_values", {},
"List of values of the aux variables");
30 params.
addParam<std::vector<std::string>>(
31 "mat_property_names", {},
"List of material property names");
32 params.
addParam<std::vector<FunctionName>>(
33 "mat_property_values", {},
"List of values of the material properties");
34 params.
addParam<
bool>(
"ad",
false,
"Setup for AD or non-AD testing");
39 params.
addParam<
bool>(
"abort_on_solve_fail",
false,
"Abort if the solve did not converge rather than cut the timestep");
48 _default_use_transient_executioner(false),
50 _scalar_variables(getParam<
std::vector<VariableName>>(
"scalar_variable_names")),
51 _scalar_variable_values(getParam<
std::vector<FunctionName>>(
"scalar_variable_values")),
52 _aux_variables(getParam<
std::vector<VariableName>>(
"aux_variable_names")),
53 _aux_variable_values(getParam<
std::vector<FunctionName>>(
"aux_variable_values")),
54 _mat_property_names(getParam<
std::vector<
std::string>>(
"mat_property_names")),
55 _mat_property_values(getParam<
std::vector<FunctionName>>(
"mat_property_values")),
56 _fe_family(getParam<
std::string>(
"fe_family")),
57 _fe_order(getParam<
std::string>(
"fe_order")),
58 _ad(getParam<bool>(
"ad"))
62 ": The parameters 'scalar_variable_names' and ",
63 "'scalar_variable_values' must have the same numbers of entries.");
66 ": The parameters 'aux_variable_names' and ",
67 "'aux_variable_values' must have the same numbers of entries.");
70 ": The parameters 'mat_property_names' and ",
71 "'mat_property_values' must have the same numbers of entries.");
79 if (getParam<bool>(
"generate_mesh"))
85 const std::string class_name =
"CreateProblemAction";
87 action_params.
set<std::string>(
"type") =
"FEProblem";
89 std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<
MooseObjectAction>(
107 std::vector<std::string> setup_mesh_tasks{
"setup_mesh",
"set_mesh_base",
"init_mesh"};
108 for (
const std::string & task : setup_mesh_tasks)
110 const std::string class_name =
"SetupMeshAction";
112 params.
set<std::string>(
"type") =
"GeneratedMesh";
113 params.
set<std::string>(
"task") = task;
115 std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<
MooseObjectAction>(
119 action->getObjectParams().set<
unsigned int>(
"nx") = nx;
120 action->getObjectParams().set<
bool>(
"allow_renumbering") =
false;
125 std::vector<std::string> setup_mesh_complete_tasks{
"prepare_mesh",
"setup_mesh_complete"};
126 for (
const std::string & task : setup_mesh_complete_tasks)
128 const std::string class_name =
"SetupMeshCompleteAction";
130 params.
set<std::string>(
"task") = task;
132 std::shared_ptr<Action> action =
155 const std::vector<FunctionName> & values)
157 for (
unsigned int i = 0; i < names.size(); ++i)
164 const std::string class_name =
"AddInitialConditionAction";
166 params.
set<std::string>(
"type") =
"FunctionScalarIC";
168 std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<
MooseObjectAction>(
172 action->getObjectParams().set<std::vector<FunctionName>>(
"function") = {values[i]};
187 for (
unsigned int i = 0; i < names.size(); ++i)
197 const std::string class_name =
"AddKernelAction";
199 params.
set<std::string>(
"type") =
"FunctionAux";
200 params.
set<std::string>(
"task") =
"add_aux_kernel";
202 std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<
MooseObjectAction>(
206 action->getObjectParams().set<FunctionName>(
"function") = values[i];
216 const std::string class_name =
"AddMaterialAction";
218 params.
set<std::string>(
"type") =
"GenericFunctionMaterial";
220 std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<
MooseObjectAction>(
231 const std::string & family,
232 const std::string & order,
233 const Real & scaling)
235 const std::string class_name =
"AddVariableAction";
239 params.
set<std::vector<Real>>(
"scaling") = {scaling};
241 std::shared_ptr<Action> action =
249 const std::string & fe_family,
250 const std::string & fe_order)
252 const std::string class_name =
"AddAuxVariableAction";
258 std::shared_ptr<Action> action =
267 const std::string class_name =
"AddInitialConditionAction";
269 params.
set<std::string>(
"type") =
"ConstantIC";
271 std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<
MooseObjectAction>(
275 action->getObjectParams().set<
Real>(
"value") =
value;
283 const std::string class_name =
"AddInitialConditionAction";
285 params.
set<std::string>(
"type") =
"FunctionIC";
287 std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<
MooseObjectAction>(
291 action->getObjectParams().set<FunctionName>(
"function") = function_name;
304 const std::string class_name =
"CreateExecutionerAction";
308 bool use_transient_executioner;
310 use_transient_executioner = getParam<bool>(
"use_transient_executioner");
317 bool abort_on_solve_fail = getParam<bool>(
"abort_on_solve_fail");
320 if (use_transient_executioner)
323 params.
set<std::string>(
"type") =
"Transient";
325 std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<
MooseObjectAction>(
330 if (abort_on_solve_fail)
331 action->getObjectParams().set<
bool>(
"abort_on_solve_fail") = abort_on_solve_fail;
338 params.
set<std::string>(
"type") =
"Steady";
340 std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<
MooseObjectAction>(
343 if (abort_on_solve_fail)
const std::vector< std::string > _mat_property_names
List of material properties to add.
void addScalarVariables(const std::vector< VariableName > &names, const std::vector< FunctionName > &values)
Adds scalar variables.
InputParameters getValidParams(const std::string &name)
virtual void addPreconditioner()
Adds the preconditioner.
const std::vector< VariableName > _aux_variables
List of aux variables to add.
virtual void addAuxVariables()
Adds aux variables.
virtual void addInitialConditions()=0
Adds the initial conditions.
void addAuxVariable(const VariableName &var_name, const std::string &fe_family, const std::string &fe_order)
Adds an aux variable.
const std::string _fe_order
Default FE order.
virtual void addExecutioner()
Adds the executioner.
virtual void addObjects()
Adds all non-mesh objects.
void addActionBlock(std::shared_ptr< Action > blk)
void addConstantIC(const VariableName &var_name, const Real &value)
Adds a constant initial condition.
void addMeshInternal(const unsigned int &nx)
Adds the mesh with a provided number of elements in x direction.
virtual const std::string & name() const
std::shared_ptr< Action > create(const std::string &action, const std::string &action_name, InputParameters ¶meters)
bool isParamValid(const std::string &name) const
const std::vector< FunctionName > _aux_variable_values
List of function names for aux variables to add.
static InputParameters validParams()
InputParameters & getObjectParams()
virtual void addOutput()
Add output.
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
void addSolutionVariable(const VariableName &var_name, const std::string &family="LAGRANGE", const std::string &order="FIRST", const Real &scaling=1.0)
Adds a solution variable.
const std::vector< VariableName > _scalar_variables
List of scalar variables to add.
virtual void addMaterials()
Adds materials.
const std::string & _current_task
TestAction(const InputParameters ¶ms)
const std::vector< FunctionName > _mat_property_values
List of function names for material properties to add.
ActionFactory & _action_factory
static InputParameters validParams()
virtual void addSolutionVariables()=0
Adds the solution variables.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const std::vector< FunctionName > _scalar_variable_values
List of values for the scalar variables to add.
const std::string _fe_family
Default FE family.
void mooseError(Args &&... args) const
void addFunctionIC(const VariableName &var_name, const FunctionName &function_name)
Adds a function initial condition.
virtual void addUserObjects()=0
Adds user objects.
bool _default_use_transient_executioner
Default for option to use a transient executioner.
virtual void addMesh()
Adds the mesh.