Skip to content

Commit

Permalink
Fix unity build, docs, and paralleleization (idaholab#26053)
Browse files Browse the repository at this point in the history
  • Loading branch information
dschwen committed Nov 15, 2023
1 parent a73d906 commit 74df6c9
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 26 deletions.
Expand Up @@ -24,6 +24,9 @@ class ProjectedStatefulMaterialStorageAction : public Action

virtual void act() override;

using Action::addRelationshipManagers;
virtual void addRelationshipManagers(Moose::RelationshipManagerType input_rm_type) override;

protected:
/**
* Perform setup for a single scalar component of the material property prop_name, and gather the
Expand Down
Expand Up @@ -12,6 +12,8 @@
#include "AuxKernel.h"
#include "IndexableProperty.h"

class MaterialBase;

template <bool is_ad>
class ProjectedStatefulMaterialAuxTempl : public AuxKernel
{
Expand Down
Expand Up @@ -12,6 +12,8 @@
// MOOSE includes
#include "NodalPatchRecoveryMaterialProperty.h"

class MaterialBase;

/**
* Nodal patch recovery for material property components for projected stateful properties
*/
Expand Down
Expand Up @@ -20,7 +20,7 @@
#include "libmesh/string_to_enum.h"

// we need to add these variables after the material property types are known
registerMooseAction("MooseApp",
registerMooseAction("TensorMechanicsApp",
ProjectedStatefulMaterialStorageAction,
"setup_projected_properties");

Expand Down Expand Up @@ -62,6 +62,14 @@ ProjectedStatefulMaterialStorageAction::ProjectedStatefulMaterialStorageAction(
{
}

void
ProjectedStatefulMaterialStorageAction::addRelationshipManagers(
Moose::RelationshipManagerType input_rm_type)
{
auto params = _factory.getValidParams("ProjectedStatefulMaterialNodalPatchRecovery");
addRelationshipManagers(input_rm_type, params);
}

void
ProjectedStatefulMaterialStorageAction::processComponent(const std::string & prop_name,
std::vector<unsigned int> idx,
Expand All @@ -79,6 +87,7 @@ ProjectedStatefulMaterialStorageAction::processComponent(const std::string & pro

const auto var_name = name("var");
vars.push_back(var_name);
const auto uo_name = name("uo");

if (_current_task == "setup_projected_properties")
{
Expand All @@ -87,38 +96,36 @@ ProjectedStatefulMaterialStorageAction::processComponent(const std::string & pro
params.applyParameters(parameters());
params.set<std::vector<OutputName>>("outputs") = {"none"};
_problem->addAuxVariable(_var_type, var_name, params);

// use nodal patch recovery for lagrange
if (_fe_type.family == LAGRANGE)
{
// nodal variables require patch recovery (add user object)
const auto & type_name = is_ad ? "ADProjectedStatefulMaterialNodalPatchRecovery"
: "ProjectedStatefulMaterialNodalPatchRecovery";
auto params = _factory.getValidParams(type_name);
params.applySpecificParameters(parameters(), {"block"});
params.set<std::vector<unsigned int>>("component") = idx;
params.set<MaterialPropertyName>("property") = prop_name;
params.set<MooseEnum>("patch_polynomial_order") = _order;
params.set<ExecFlagEnum>("execute_on") = {EXEC_INITIAL, EXEC_TIMESTEP_END};
params.set<bool>("force_preaux") = true;
_problem->addUserObject(type_name, uo_name, params);
}
}

if (_current_task == "add_aux_kernel")
{
// use nodal patch recovery for lagrange
if (_fe_type.family == LAGRANGE)
{
// nodal variables require patch recovery
const auto uo_name = name("uo");

{
// add user object
const auto & type_name = is_ad ? "ADProjectedStatefulMaterialNodalPatchRecovery"
: "ProjectedStatefulMaterialNodalPatchRecovery";
auto params = _factory.getValidParams(type_name);
params.applySpecificParameters(parameters(), {"block"});
params.set<std::vector<unsigned int>>("component") = idx;
params.set<MaterialPropertyName>("property") = prop_name;
params.set<MooseEnum>("patch_polynomial_order") = _order;
params.set<ExecFlagEnum>("execute_on") = {EXEC_INITIAL, EXEC_TIMESTEP_END};
_problem->addUserObject(type_name, uo_name, params);
}

{
// add aux kernel
auto params = _factory.getValidParams("NodalPatchRecoveryAux");
params.applySpecificParameters(parameters(), {"block"});
params.set<AuxVariableName>("variable") = var_name;
params.set<UserObjectName>("nodal_patch_recovery_uo") = uo_name;
params.set<ExecFlagEnum>("execute_on") = {EXEC_INITIAL, EXEC_TIMESTEP_END};
_problem->addAuxKernel("NodalPatchRecoveryAux", name("aux"), params);
}
// nodal variables require patch recovery (add aux kernel)
auto params = _factory.getValidParams("NodalPatchRecoveryAux");
params.applySpecificParameters(parameters(), {"block"});
params.set<AuxVariableName>("variable") = var_name;
params.set<UserObjectName>("nodal_patch_recovery_uo") = uo_name;
params.set<ExecFlagEnum>("execute_on") = {EXEC_INITIAL, EXEC_TIMESTEP_END};
_problem->addAuxKernel("NodalPatchRecoveryAux", name("aux"), params);
}
else
{
Expand Down
Expand Up @@ -10,6 +10,7 @@
#include "ProjectedStatefulMaterialAux.h"
#include "NodalPatchRecoveryBase.h"
#include "MaterialBase.h"
#include "Assembly.h"

registerMooseObject("TensorMechanicsApp", ProjectedStatefulMaterialAux);
registerMooseObject("TensorMechanicsApp", ADProjectedStatefulMaterialAux);
Expand Down
Expand Up @@ -8,6 +8,8 @@
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "ProjectedStatefulMaterialNodalPatchRecovery.h"
#include "MaterialBase.h"
#include "Assembly.h"

registerMooseObject("TensorMechanicsApp", ProjectedStatefulMaterialNodalPatchRecovery);

Expand Down

0 comments on commit 74df6c9

Please sign in to comment.