Skip to content

Commit

Permalink
fix tensor mechanics module and xfem module idaholab#22068
Browse files Browse the repository at this point in the history
  • Loading branch information
YaqiWang committed Sep 13, 2022
1 parent 9b1530c commit 5d1f033
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 10 deletions.
14 changes: 10 additions & 4 deletions modules/tensor_mechanics/src/actions/CohesiveZoneActionBase.C
Expand Up @@ -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<std::string, std::string>
Expand Down Expand Up @@ -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<CommonCohesiveZoneAction>();
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"))
Expand All @@ -116,9 +122,9 @@ CohesiveZoneActionBase::CohesiveZoneActionBase(const InputParameters & params) :
for (auto & family : additional_material_output_family)
material_output_family.push_back(family);

_pars.set<MultiMooseEnum>("generate_output") = generate_output;
_pars.set<MultiMooseEnum>("material_output_order") = material_output_order;
_pars.set<MultiMooseEnum>("material_output_family") = material_output_family;
pars.set<MultiMooseEnum>("generate_output") = generate_output;
pars.set<MultiMooseEnum>("material_output_order") = material_output_order;
pars.set<MultiMooseEnum>("material_output_family") = material_output_family;
}
}

Expand Down
7 changes: 6 additions & 1 deletion modules/tensor_mechanics/src/actions/LineElementAction.C
Expand Up @@ -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<CommonLineElementAction>();
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<std::vector<AuxVariableName>>("save_in");
Expand Down
13 changes: 9 additions & 4 deletions modules/tensor_mechanics/src/actions/TensorMechanicsActionBase.C
Expand Up @@ -231,10 +231,15 @@ TensorMechanicsActionBase::validParams()
TensorMechanicsActionBase::TensorMechanicsActionBase(const InputParameters & parameters)
: Action(parameters), _use_ad(getParam<bool>("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<CommonTensorMechanicsAction>();
if (action.size() == 1)
_pars.applyParameters(action[0]->parameters());
pars.applyParameters(action[0]->parameters());

// append additional_generate_output
if (isParamValid("additional_generate_output"))
Expand All @@ -258,9 +263,9 @@ TensorMechanicsActionBase::TensorMechanicsActionBase(const InputParameters & par
for (auto & family : additional_material_output_family)
material_output_family.push_back(family);

_pars.set<MultiMooseEnum>("generate_output") = generate_output;
_pars.set<MultiMooseEnum>("material_output_order") = material_output_order;
_pars.set<MultiMooseEnum>("material_output_family") = material_output_family;
pars.set<MultiMooseEnum>("generate_output") = generate_output;
pars.set<MultiMooseEnum>("material_output_order") = material_output_order;
pars.set<MultiMooseEnum>("material_output_family") = material_output_family;
}
}

Expand Down
5 changes: 4 additions & 1 deletion modules/xfem/src/actions/XFEMAction.C
Expand Up @@ -17,6 +17,7 @@
#include "Parser.h"
#include "Factory.h"
#include "AddVariableAction.h"
#include "InputParameterWarehouse.h"

#include "GeometricCutUserObject.h"
#include "CrackFrontDefinition.h"
Expand Down Expand Up @@ -135,7 +136,9 @@ XFEMAction::act()
std::shared_ptr<XFEMInterface> xfem_interface = _problem->getXFEM();
if (xfem_interface == NULL)
{
_pars.set<FEProblemBase *>("_fe_problem_base") = &*_problem;
const auto & params = _app.getInputParameterWarehouse().getInputParameters();
InputParameters & pars(*(params.find(uniqueActionName())->second.get()));
pars.set<FEProblemBase *>("_fe_problem_base") = &*_problem;
std::shared_ptr<XFEM> new_xfem(new XFEM(_pars));
_problem->initXFEM(new_xfem);
xfem_interface = _problem->getXFEM();
Expand Down

0 comments on commit 5d1f033

Please sign in to comment.