diff --git a/modules/tensor_mechanics/src/actions/CohesiveZoneActionBase.C b/modules/tensor_mechanics/src/actions/CohesiveZoneActionBase.C index dc7c4e775008..becbce6e8658 100644 --- a/modules/tensor_mechanics/src/actions/CohesiveZoneActionBase.C +++ b/modules/tensor_mechanics/src/actions/CohesiveZoneActionBase.C @@ -12,6 +12,8 @@ #include "ActionWarehouse.h" #include "AddAuxVariableAction.h" #include "MooseEnum.h" +#include "MooseApp.h" +#include "InputParameterWarehouse.h" // map vector name shortcuts to tensor material property names const std::map @@ -89,10 +91,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 +123,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..26159d290093 100644 --- a/modules/tensor_mechanics/src/actions/LineElementAction.C +++ b/modules/tensor_mechanics/src/actions/LineElementAction.C @@ -14,6 +14,8 @@ #include "MooseObjectAction.h" #include "LineElementAction.h" #include "CommonLineElementAction.h" +#include "MooseApp.h" +#include "InputParameterWarehouse.h" #include "libmesh/string_to_enum.h" #include @@ -214,10 +216,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..b538434f8dad 100644 --- a/modules/tensor_mechanics/src/actions/TensorMechanicsActionBase.C +++ b/modules/tensor_mechanics/src/actions/TensorMechanicsActionBase.C @@ -12,6 +12,8 @@ #include "ActionWarehouse.h" #include "AddAuxVariableAction.h" #include "ComputeFiniteStrain.h" +#include "MooseApp.h" +#include "InputParameterWarehouse.h" // map tensor name shortcuts to tensor material property names std::map TensorMechanicsActionBase::_rank_two_cartesian_component_table = @@ -231,10 +233,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 +265,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/src/actions/XFEMAction.C b/modules/xfem/src/actions/XFEMAction.C index bab418025854..2e827e82bb74 100644 --- a/modules/xfem/src/actions/XFEMAction.C +++ b/modules/xfem/src/actions/XFEMAction.C @@ -17,6 +17,8 @@ #include "Parser.h" #include "Factory.h" #include "AddVariableAction.h" +#include "MooseApp.h" +#include "InputParameterWarehouse.h" #include "GeometricCutUserObject.h" #include "CrackFrontDefinition.h" @@ -135,7 +137,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();