diff --git a/modules/tensor_mechanics/include/actions/CavityPressurePPAction.h b/modules/tensor_mechanics/include/actions/CavityPressurePPAction.h index 85da376cdef9..38059ff26987 100644 --- a/modules/tensor_mechanics/include/actions/CavityPressurePPAction.h +++ b/modules/tensor_mechanics/include/actions/CavityPressurePPAction.h @@ -16,7 +16,7 @@ class CavityPressurePPAction : public Action public: static InputParameters validParams(); - CavityPressurePPAction(InputParameters params); + CavityPressurePPAction(const InputParameters & params); virtual void act(); }; diff --git a/modules/tensor_mechanics/src/actions/CavityPressurePPAction.C b/modules/tensor_mechanics/src/actions/CavityPressurePPAction.C index 9138e68e5201..a49546415ea8 100644 --- a/modules/tensor_mechanics/src/actions/CavityPressurePPAction.C +++ b/modules/tensor_mechanics/src/actions/CavityPressurePPAction.C @@ -24,7 +24,7 @@ CavityPressurePPAction::validParams() return params; } -CavityPressurePPAction::CavityPressurePPAction(InputParameters params) : Action(params) {} +CavityPressurePPAction::CavityPressurePPAction(const InputParameters & params) : Action(params) {} void CavityPressurePPAction::act() diff --git a/modules/tensor_mechanics/src/actions/CohesiveZoneActionBase.C b/modules/tensor_mechanics/src/actions/CohesiveZoneActionBase.C index dc7c4e775008..dc21fa886a2d 100644 --- a/modules/tensor_mechanics/src/actions/CohesiveZoneActionBase.C +++ b/modules/tensor_mechanics/src/actions/CohesiveZoneActionBase.C @@ -12,6 +12,7 @@ #include "ActionWarehouse.h" #include "AddAuxVariableAction.h" #include "MooseEnum.h" +#include "InputParameterWarehouse.h" // map vector name shortcuts to tensor material property names const std::map @@ -89,10 +90,15 @@ CohesiveZoneActionBase::validParams() CohesiveZoneActionBase::CohesiveZoneActionBase(const InputParameters & params) : Action(params) { + // FIXME: suggest to use action of action to add this to avoid changing the input parameters in + // the warehouse. + const auto & parameters = _app.getInputParameterWarehouse().getInputParameters(); + InputParameters & pars(*(parameters.find(uniqueActionName())->second.get())); + // check if a container block with common parameters is found auto action = _awh.getActions(); if (action.size() == 1) - _pars.applyParameters(action[0]->parameters()); + pars.applyParameters(action[0]->parameters()); // append additional_generate_output to generate_output if (isParamValid("additional_generate_output")) @@ -116,9 +122,9 @@ CohesiveZoneActionBase::CohesiveZoneActionBase(const InputParameters & params) : for (auto & family : additional_material_output_family) material_output_family.push_back(family); - _pars.set("generate_output") = generate_output; - _pars.set("material_output_order") = material_output_order; - _pars.set("material_output_family") = material_output_family; + pars.set("generate_output") = generate_output; + pars.set("material_output_order") = material_output_order; + pars.set("material_output_family") = material_output_family; } } diff --git a/modules/tensor_mechanics/src/actions/LineElementAction.C b/modules/tensor_mechanics/src/actions/LineElementAction.C index 175b31569284..34e342bddb91 100644 --- a/modules/tensor_mechanics/src/actions/LineElementAction.C +++ b/modules/tensor_mechanics/src/actions/LineElementAction.C @@ -214,10 +214,15 @@ LineElementAction::LineElementAction(const InputParameters & params) _subdomain_ids(), _add_dynamic_variables(false) { + // FIXME: suggest to use action of action to add this to avoid changing the input parameters in + // the warehouse. + const auto & parameters = _app.getInputParameterWarehouse().getInputParameters(); + InputParameters & pars(*(parameters.find(uniqueActionName())->second.get())); + // check if a container block with common parameters is found auto action = _awh.getActions(); if (action.size() == 1) - _pars.applyParameters(action[0]->parameters()); + pars.applyParameters(action[0]->parameters()); // Set values to variables after common parameters are applied _save_in = getParam>("save_in"); diff --git a/modules/tensor_mechanics/src/actions/TensorMechanicsActionBase.C b/modules/tensor_mechanics/src/actions/TensorMechanicsActionBase.C index fc8db0216ffc..551d60f27fb9 100644 --- a/modules/tensor_mechanics/src/actions/TensorMechanicsActionBase.C +++ b/modules/tensor_mechanics/src/actions/TensorMechanicsActionBase.C @@ -231,10 +231,15 @@ TensorMechanicsActionBase::validParams() TensorMechanicsActionBase::TensorMechanicsActionBase(const InputParameters & parameters) : Action(parameters), _use_ad(getParam("use_automatic_differentiation")) { + // FIXME: suggest to use action of action to add this to avoid changing the input parameters in + // the warehouse. + const auto & params = _app.getInputParameterWarehouse().getInputParameters(); + InputParameters & pars(*(params.find(uniqueActionName())->second.get())); + // check if a container block with common parameters is found auto action = _awh.getActions(); if (action.size() == 1) - _pars.applyParameters(action[0]->parameters()); + pars.applyParameters(action[0]->parameters()); // append additional_generate_output if (isParamValid("additional_generate_output")) @@ -258,9 +263,9 @@ TensorMechanicsActionBase::TensorMechanicsActionBase(const InputParameters & par for (auto & family : additional_material_output_family) material_output_family.push_back(family); - _pars.set("generate_output") = generate_output; - _pars.set("material_output_order") = material_output_order; - _pars.set("material_output_family") = material_output_family; + pars.set("generate_output") = generate_output; + pars.set("material_output_order") = material_output_order; + pars.set("material_output_family") = material_output_family; } } diff --git a/modules/xfem/include/actions/XFEMAction.h b/modules/xfem/include/actions/XFEMAction.h index d64c27c5c7e9..40228643effe 100644 --- a/modules/xfem/include/actions/XFEMAction.h +++ b/modules/xfem/include/actions/XFEMAction.h @@ -17,7 +17,7 @@ class XFEMAction : public Action public: static InputParameters validParams(); - XFEMAction(InputParameters params); + XFEMAction(const InputParameters & params); virtual void act(); diff --git a/modules/xfem/src/actions/XFEMAction.C b/modules/xfem/src/actions/XFEMAction.C index 7c3277ccd722..da44ff787999 100644 --- a/modules/xfem/src/actions/XFEMAction.C +++ b/modules/xfem/src/actions/XFEMAction.C @@ -17,6 +17,7 @@ #include "Parser.h" #include "Factory.h" #include "AddVariableAction.h" +#include "InputParameterWarehouse.h" #include "GeometricCutUserObject.h" #include "CrackFrontDefinition.h" @@ -79,7 +80,7 @@ XFEMAction::validParams() return params; } -XFEMAction::XFEMAction(InputParameters params) +XFEMAction::XFEMAction(const InputParameters & params) : Action(params), _geom_cut_userobjects(getParam>("geometric_cut_userobjects")), _xfem_qrule(getParam("qrule")), @@ -135,7 +136,9 @@ XFEMAction::act() std::shared_ptr xfem_interface = _problem->getXFEM(); if (xfem_interface == NULL) { - _pars.set("_fe_problem_base") = &*_problem; + const auto & params = _app.getInputParameterWarehouse().getInputParameters(); + InputParameters & pars(*(params.find(uniqueActionName())->second.get())); + pars.set("_fe_problem_base") = &*_problem; std::shared_ptr new_xfem(new XFEM(_pars)); _problem->initXFEM(new_xfem); xfem_interface = _problem->getXFEM();