24 #include "libmesh/string_to_enum.h" 33 "validate_coordinate_systems");
47 "add_master_action_material");
57 params.
addClassDescription(
"Set up stress divergence kernels with coordinate system aware logic");
61 params.
addParam<std::vector<SubdomainName>>(
"block",
63 "The list of ids of the blocks (subdomain) " 64 "that the stress divergence kernels will be " 70 "Add scalar quantity output for stress and/or strain (will be " 71 "appended to the list in `generate_output`)");
73 "additional_material_output_order",
75 "Specifies the order of the FE shape function to use for this variable.");
78 "additional_material_output_family",
80 "Specifies the family of FE shape functions to use for this variable.");
83 "additional_material_output_family",
87 "The base name used for the strain. If not provided, it will be set equal to base_name");
88 params.
addParam<std::vector<TagName>>(
90 "The tag names for extra vectors that residual data should be saved into");
91 params.
addParam<std::vector<TagName>>(
"absolute_value_vector_tags",
92 "The tag names for extra vectors that the absolute value " 93 "of the residual should be accumulated into");
94 params.
addParam<
Real>(
"scaling",
"The scaling to apply to the displacement variables");
96 "cylindrical_axis_point1",
97 "Starting point for direction of axis of rotation for cylindrical stress/strain.");
99 "cylindrical_axis_point2",
100 "Ending point for direction of axis of rotation for cylindrical stress/strain.");
101 params.
addParam<Point>(
"spherical_center_point",
102 "Center point of the spherical coordinate system.");
103 params.
addParam<Point>(
"direction",
"Direction stress/strain is calculated in");
104 params.
addParam<
bool>(
"automatic_eigenstrain_names",
106 "Collects all material eigenstrains and passes to required strain " 107 "calculator within TMA internally.");
113 "Type of each constraint: " 114 "stress or strain.");
115 params.
addParam<std::vector<FunctionName>>(
"targets",
117 "Functions giving the target " 118 "values of each constraint.");
123 "cylindrical_axis_point1 cylindrical_axis_point2 spherical_center_point direction",
124 "Coordinate system");
131 _displacements(getParam<
std::vector<VariableName>>(
"displacements")),
132 _ndisp(_displacements.size()),
133 _coupled_displacements(_ndisp),
134 _save_in(getParam<
std::vector<AuxVariableName>>(
"save_in")),
135 _diag_save_in(getParam<
std::vector<AuxVariableName>>(
"diag_save_in")),
136 _subdomain_names(getParam<
std::vector<SubdomainName>>(
"block")),
140 _out_of_plane_direction(
142 _base_name(isParamValid(
"base_name") ? getParam<
std::string>(
"base_name") +
"_" :
""),
143 _material_output_order(getParam<
MultiMooseEnum>(
"material_output_order")),
144 _material_output_family(getParam<
MultiMooseEnum>(
"material_output_family")),
145 _cylindrical_axis_point1_valid(params.isParamSetByUser(
"cylindrical_axis_point1")),
146 _cylindrical_axis_point2_valid(params.isParamSetByUser(
"cylindrical_axis_point2")),
147 _direction_valid(params.isParamSetByUser(
"direction")),
148 _verbose(getParam<bool>(
"verbose")),
149 _spherical_center_point_valid(params.isParamSetByUser(
"spherical_center_point")),
150 _auto_eigenstrain(getParam<bool>(
"automatic_eigenstrain_names")),
151 _lagrangian_kernels(getParam<bool>(
"new_system")),
152 _lk_large_kinematics(_strain ==
Strain::Finite),
154 _lk_locking(getParam<bool>(
"volumetric_locking_correction")),
155 _lk_homogenization(false),
157 _targets(getParam<
std::vector<FunctionName>>(
"targets"))
162 const bool incremental = getParam<bool>(
"incremental");
179 mooseInfo(
"SolidMechanics Action: selecting 'total small strain' formulation. Use " 180 "`incremental = true` to select 'incremental small strain' instead.");
185 mooseInfo(
"SolidMechanics Action: selecting 'incremental finite strain' formulation.");
195 bool use_displaced_mesh_param = getParam<bool>(
"use_displaced_mesh");
197 mooseError(
"Wrong combination of use displaced mesh and strain model");
202 for (
unsigned int i = 0; i <
_ndisp; ++i)
206 mooseError(
"Number of save_in variables should equal to the number of displacement variables ",
211 "Number of diag_save_in variables should equal to the number of displacement variables ",
221 "Planar formulations are not yet available through the Physics syntax with new_system = " 222 "true. They can be enabled by manually setting up the appropriate objects. Please refer " 223 "to the documentation and regression tests for examples.");
227 "out_of_plane_strain should only be specified with planar_formulation=WEAK_PLANE_STRESS");
230 mooseError(
"out_of_plane_strain must be specified with planar_formulation=WEAK_PLANE_STRESS");
234 for (
const auto &
out : getParam<MultiMooseEnum>(
"generate_output"))
236 std::string lower(
out);
237 std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower);
245 if (
_ndisp == 1 && getParam<bool>(
"volumetric_locking_correction"))
246 mooseError(
"Volumetric locking correction should be set to false for 1D problems.");
250 "The scaling parameter has no effect unless add_variables is set to true. Did you " 251 "mean to set 'add_variables = true'?");
269 _eigenstrain_names = getParam<std::vector<MaterialPropertyName>>(
"eigenstrain_names");
275 if (ctype_set || targets_set)
277 if (!(ctype_set && targets_set))
278 mooseError(
"To use the Lagrangian kernel homogenization system you " 279 "most provide both the constraint_types and the targets " 284 mooseError(
"The Lagrangian kernel homogenization system requires the " 285 "use of formulation = TOTAL");
293 mooseError(
"The Lagrangian kernel system is not yet compatible with AD. " 294 "Do not set the use_automatic_differentiation flag.");
297 mooseError(
"The Lagrangian kernel system always produces the exact " 298 "Jacobian. use_finite_deform_jacobian is redundant and " 299 " should not be set");
301 mooseError(
"The Lagrangian kernel system is not compatible with " 302 "the global_strain option. Use the homogenization " 305 mooseError(
"The decomposition_method parameter should not be used " 306 " with the Lagrangian kernel system. Similar options " 307 " for native small deformation material models are " 308 " available as part of the ComputeLagrangianStress " 309 " material system.");
314 mooseError(
"The StressDiveregenceTensor system always uses an " 315 " updated Lagrangian formulation. Do not set the " 316 " formulation parameter, it is only used with the " 317 " new Lagrangian kernel system.");
319 mooseError(
"The homogenization system can only be used with the " 320 "new Lagrangian kernels");
327 std::string ad_prepend =
"";
346 paramError(
"use_automatic_differentiation",
"AD not setup for use with PlaneStrain");
348 const std::string
type =
"GeneralizedPlaneStrainAction";
350 action_params.
set<
bool>(
"_built_by_moose") =
true;
351 action_params.set<std::string>(
"registered_identifier") =
"(AutoBuilt)";
358 {
"use_displaced_mesh",
359 "out_of_plane_pressure",
360 "out_of_plane_pressure_function",
366 action_params.set<FunctionName>(
"out_of_plane_pressure") =
367 getParam<FunctionName>(
"out_of_plane_pressure");
369 action_params.set<FunctionName>(
"out_of_plane_pressure_function") =
370 getParam<FunctionName>(
"out_of_plane_pressure_function");
372 action_params.set<
Real>(
"factor") = getParam<Real>(
"factor");
374 action_params.set<
Real>(
"pressure_factor") = getParam<Real>(
"pressure_factor");
389 if (common_actions.empty() && getParam<bool>(
"add_variables"))
393 const bool second =
_problem->mesh().hasSecondOrderElements();
395 params.set<
MooseEnum>(
"order") = second ?
"SECOND" :
"FIRST";
396 params.set<
MooseEnum>(
"family") =
"LAGRANGE";
398 params.set<std::vector<Real>>(
"scaling") = {getParam<Real>(
"scaling")};
407 _problem->addVariable(
"MooseVariable", disp, params);
415 const std::map<bool, std::vector<unsigned int>> mg_order{{
true, {1, 4, 9}},
442 for (
unsigned int i = 0; i <
_ndisp; ++i)
456 params.set<
unsigned int>(
"component") = i;
458 params.set<NonlinearVariableName>(
"variable") =
_displacements[i];
461 params.set<std::vector<AuxVariableName>>(
"save_in") = {
_save_in[i]};
463 params.set<std::vector<AuxVariableName>>(
"diag_save_in") = {
_diag_save_in[i]};
465 params.set<std::vector<VariableName>>(
"out_of_plane_strain") = {
466 getParam<VariableName>(
"out_of_plane_strain")};
470 params.set<std::vector<VariableName>>(
"macro_gradient") = {
_hname};
474 _problem->addKernel(ad_prepend + tensor_kernel_type, kernel_name, params);
480 std::string wps_kernel_name =
"TM_WPS_" +
name();
481 params.set<NonlinearVariableName>(
"variable") = getParam<VariableName>(
"out_of_plane_strain");
483 _problem->addKernel(ad_prepend +
"WeakPlaneStress", wps_kernel_name, params);
491 params.
set<NonlinearVariableName>(
"variable") =
_hname;
495 "HomogenizationConstraintScalarKernel",
"HomogenizationConstraints", params);
504 params.
set<std::vector<FunctionName>>(
"targets") =
_targets;
525 paramError(
"block",
"Subdomain \"" +
name +
"\" not found in mesh.");
534 const auto & check_subdomains =
536 if (check_subdomains.empty())
541 for (
auto subdomain : check_subdomains)
543 mooseError(
"The SolidMechanics action requires all subdomains to have the same coordinate " 549 mooseError(
"'out_of_plane_direction' must be 'z' for axisymmetric simulations");
555 "Must specify two displacements for plane strain when the out of plane direction is z");
557 mooseError(
"Must specify three displacements for plane strain when the out of plane " 558 "direction is x or y");
572 unsigned int index = 0;
578 std::string
type = (order ==
"CONSTANT" && family ==
"MONOMIAL")
579 ?
"MooseVariableConstMonomial" 585 params.set<
MooseEnum>(
"family") = family;
587 if (family ==
"MONOMIAL")
599 std::string ad_prepend =
_use_ad ?
"AD" :
"";
601 unsigned int index = 0;
622 std::string ad_prepend =
_use_ad ?
"AD" :
"";
624 unsigned int index = 0;
648 std::map<std::string, std::set<SubdomainID>> material_eigenstrain_map;
649 std::set<std::string> eigenstrain_set;
651 std::set<MaterialPropertyName> verified_eigenstrain_names;
653 std::map<std::string, std::string> remove_add_map;
654 std::set<std::string> remove_reduced_set;
657 auto materials =
_problem->getMaterialWarehouse().getObjects();
658 for (
auto & mat : materials)
660 std::shared_ptr<BlockRestrictable> blk = std::dynamic_pointer_cast<
BlockRestrictable>(mat);
662 auto & mat_name = mat->type();
665 if (mat_params.isParamValid(
"eigenstrain_name"))
667 std::shared_ptr<MaterialData> mat_dat;
668 auto name = mat_params.get<std::string>(
"eigenstrain_name");
671 if (mat_params.isParamValid(
"base_name"))
672 name = mat_params.get<std::string>(
"base_name") +
'_' +
name;
676 mooseError(
"Internal error, Material object that does not inherit form BlockRestricted");
677 const std::set<SubdomainID> &
blocks =
678 blk->blockRestricted() ? blk->blockIDs() : blk->meshBlockIDs();
683 eigenstrain_set.insert(
name);
688 if (mat_name ==
"ComputeReducedOrderEigenstrain")
690 auto input_eigenstrain_names =
691 mat_params.get<std::vector<MaterialPropertyName>>(
"input_eigenstrain_names");
692 remove_reduced_set.insert(input_eigenstrain_names.begin(), input_eigenstrain_names.end());
695 if (mat_name ==
"CompositeEigenstrain")
697 auto remove_list = mat_params.get<std::vector<MaterialPropertyName>>(
"tensors");
698 for (
auto i : remove_list)
699 remove_reduced_set.insert(i);
703 if (mat_name ==
"RankTwoTensorMaterialADConverter")
705 std::vector<MaterialPropertyName> remove_list;
706 std::vector<MaterialPropertyName> add_list;
708 if (mat_params.isParamValid(
"ad_props_out") && mat_params.isParamValid(
"reg_props_in") &&
711 remove_list = mat_params.get<std::vector<MaterialPropertyName>>(
"reg_props_in");
712 add_list = mat_params.get<std::vector<MaterialPropertyName>>(
"ad_props_out");
714 if (mat_params.isParamValid(
"ad_props_in") && mat_params.isParamValid(
"reg_props_out") &&
717 remove_list = mat_params.get<std::vector<MaterialPropertyName>>(
"ad_props_in");
718 add_list = mat_params.get<std::vector<MaterialPropertyName>>(
"reg_props_out");
722 for (
unsigned int index = 0; index < remove_list.size(); index++)
723 remove_add_map.emplace(remove_list[index], add_list[index]);
729 for (
auto remove_add_index : remove_add_map)
731 const bool is_in = eigenstrain_set.find(remove_add_index.first) != eigenstrain_set.end();
734 eigenstrain_set.erase(remove_add_index.first);
735 eigenstrain_set.insert(remove_add_index.second);
738 for (
auto index : remove_reduced_set)
739 eigenstrain_set.erase(index);
743 std::set_union(eigenstrain_set.begin(),
744 eigenstrain_set.end(),
747 std::inserter(verified_eigenstrain_names, verified_eigenstrain_names.begin()));
751 std::copy(verified_eigenstrain_names.begin(),
752 verified_eigenstrain_names.end(),
755 Moose::out << COLOR_CYAN <<
"*** Automatic Eigenstrain Names ***" 758 << COLOR_DEFAULT << std::flush;
769 "The number of orders assigned to material outputs must be: 0 to be assigned " 770 "CONSTANT; 1 to assign all outputs the same value, or the same size as the number " 771 "of generate outputs listed.");
776 "The number of families assigned to material outputs must be: 0 to be assigned " 777 "MONOMIAL; 1 to assign all outputs the same value, or the same size as the number " 778 "of generate outputs listed.");
790 Moose::out << COLOR_CYAN <<
"*** Automatic applied material output orders ***" 793 << COLOR_DEFAULT << std::flush;
805 Moose::out << COLOR_CYAN <<
"*** Automatic applied material output families ***" 808 << COLOR_DEFAULT << std::flush;
814 std::string ad_prepend =
_use_ad ?
"AD" :
"";
828 for (
unsigned int a = 0;
a < 3; ++
a)
829 for (
unsigned int b = 0;
b < 3; ++
b)
832 auto type = ad_prepend +
"RankTwoCartesianComponent";
833 params = _factory.getValidParams(type);
834 params.set<MaterialPropertyName>(
"rank_two_tensor") = _base_name + r2q.second;
835 params.set<unsigned int>(
"index_i") = a;
836 params.set<unsigned int>(
"index_j") = b;
838 params.applyParameters(parameters());
839 params.set<MaterialPropertyName>(
"property_name") = _base_name + out;
840 _problem->addMaterial(type, _base_name + out +
'_' + name(), params);
850 [&](std::string prop_name, std::string invariant)
852 auto type = ad_prepend +
"RankTwoDirectionalComponent";
854 params.
set<MaterialPropertyName>(
"rank_two_tensor") =
866 [&](std::string prop_name, std::string invariant)
868 auto type = ad_prepend +
"RankTwoInvariant";
870 params.
set<MaterialPropertyName>(
"rank_two_tensor") =
883 [&](std::string prop_name, std::string
component)
887 "Cannot use cylindrical component output in a spherical coordinate system.");
888 auto type = ad_prepend +
"RankTwoCylindricalComponent";
890 params.
set<MaterialPropertyName>(
"rank_two_tensor") =
_base_name + prop_name;
901 [&](std::string prop_name, std::string
component)
903 auto type = ad_prepend +
"RankTwoSphericalComponent";
905 params.
set<MaterialPropertyName>(
"rank_two_tensor") =
914 paramError(
"generate_output",
"Unable to add output Material for '",
out,
"'");
923 if (
_current_task ==
"validate_coordinate_systems" && getParam<bool>(
"add_variables"))
926 for (
const auto & action : actions)
929 const auto added_size = action->_subdomain_ids.size();
933 if (size_after != size_before + added_size)
934 mooseError(
"The block restrictions in the SolidMechanics/QuasiStatic actions must be " 937 if (added_size == 0 && actions.size() > 1)
939 "No SolidMechanics/QuasiStatic action can be block unrestricted if more than one " 940 "SolidMechanics/QuasiStatic action is specified.");
950 type =
"ComputeLagrangianStrain";
952 type =
"ComputeLagrangianStrainAxisymmetricCylindrical";
954 type =
"ComputeLagrangianStrainCentrosymmetricSpherical";
961 params.
set<std::string>(
"base_name") = getParam<std::string>(
"strain_base_name");
964 params.set<std::vector<MaterialPropertyName>>(
"eigenstrain_names") =
_eigenstrain_names;
970 mooseError(
"Volumetric locking correction should not be used for " 971 "higher-order elements.");
973 params.set<
bool>(
"stabilize_strain") =
_lk_locking;
977 params.set<std::vector<MaterialPropertyName>>(
"homogenization_gradient_names") = {
986 std::string
type =
"ComputeHomogenizedLagrangianStrain";
990 params.set<std::vector<VariableName>>(
"macro_gradient") = {
_hname};
1000 std::string ad_prepend =
_use_ad ?
"AD" :
"";
1007 std::map<std::pair<Moose::CoordinateSystemType, StrainAndIncrement>, std::string> type_map = {
1013 "ComputeAxisymmetricRZIncrementalStrain"},
1015 "ComputeAxisymmetricRZFiniteStrain"},
1018 "ComputeRSphericalIncrementalStrain"},
1020 "ComputeRSphericalFiniteStrain"}};
1023 if (type_it != type_map.end())
1024 type = type_it->second;
1026 mooseError(
"Unsupported strain formulation");
1035 "AD not setup for use with PlaneStrain or GeneralizedPlaneStrain");
1037 std::map<std::pair<Moose::CoordinateSystemType, StrainAndIncrement>, std::string> type_map = {
1043 "ComputeAxisymmetric1DIncrementalStrain"},
1045 "ComputeAxisymmetric1DFiniteStrain"}};
1049 if (type_it != type_map.end())
1050 type = type_it->second;
1052 mooseError(
"Unsupported coordinate system for plane strain.");
1055 mooseError(
"Unsupported planar formulation");
1061 {
"displacements",
"use_displaced_mesh",
"out_of_plane_strain",
"scalar_out_of_plane_strain"});
1064 params.set<std::string>(
"base_name") = getParam<std::string>(
"strain_base_name");
1067 params.set<
bool>(
"use_displaced_mesh") =
false;
1070 params.set<std::vector<VariableName>>(
"scalar_out_of_plane_strain") = {
1071 getParam<VariableName>(
"scalar_out_of_plane_strain")};
1074 params.set<std::vector<VariableName>>(
"out_of_plane_strain") = {
1075 getParam<VariableName>(
"out_of_plane_strain")};
1077 params.set<std::vector<MaterialPropertyName>>(
"eigenstrain_names") =
_eigenstrain_names;
1091 type =
"HomogenizedTotalLagrangianStressDivergence";
1093 type =
"TotalLagrangianStressDivergence";
1095 type =
"UpdatedLagrangianStressDivergence";
1102 mooseError(
"The Lagrangian mechanics kernels do not yet support homogenization in " 1103 "coordinate systems other than Cartesian.");
1105 type =
"TotalLagrangianStressDivergenceAxisymmetricCylindrical";
1107 mooseError(
"The Lagrangian mechanics kernels do not yet support the updated Lagrangian " 1108 "formulation in RZ coordinates.");
1113 mooseError(
"The Lagrangian mechanics kernels do not yet support homogenization in " 1114 "coordinate systems other than Cartesian.");
1116 type =
"TotalLagrangianStressDivergenceCentrosymmetricSpherical";
1118 mooseError(
"The Lagrangian mechanics kernels do not yet support the updated Lagrangian " 1119 "formulation in RZ coordinates.");
1127 std::map<Moose::CoordinateSystemType, std::string> type_map = {
1134 if (type_it != type_map.end())
1135 return type_it->second;
1147 {
"displacements",
"use_displaced_mesh",
"save_in",
"diag_save_in",
"out_of_plane_strain"});
1153 params.
set<
bool>(
"use_displaced_mesh") =
const bool _lk_large_kinematics
Simplified flag for small/large deformations, Lagrangian kernel system.
MultiMooseEnum _material_output_order
void actGatherActionParameters()
std::set< SubdomainID > _subdomain_id_union
set generated from the combined block restrictions of all SolidMechanics/Master action blocks ...
enum QuasiStaticSolidMechanicsPhysics::StrainAndIncrement _strain_and_increment
std::vector< AuxVariableName > _save_in
residual debugging
virtual InputParameters getKernelParameters(std::string type)
bool setupOutput(std::string out, T table, T2 setup)
Helper function to decode generate_outputs options using a "table" of scalar output quantities and a ...
std::vector< AuxVariableName > _diag_save_in
static const std::map< std::string, std::pair< std::string, std::vector< std::string > > > _rank_two_invariant_table
std::set< SubdomainID > _subdomain_ids
set generated from the passed in vector of subdomain names
InputParameters getValidParams(const std::string &name)
void setAdditionalValue(const std::string &names)
void mooseInfo(Args &&... args) const
unsigned int _ndisp
Number of displacement variables.
static const std::string component
void actStressDivergenceTensorsStrain()
LKFormulation
New kernel system kinematics types.
static const std::map< std::string, std::pair< std::string, std::vector< std::string > > > _rank_two_cylindrical_component_table
InputParameters getValidParams(const std::string &name) const
const bool _auto_eigenstrain
automatically gather names of eigenstrain tensors provided by simulation objects
registerMooseAction("SolidMechanicsApp", QuasiStaticSolidMechanicsPhysics, "meta_action")
unsigned int size() const
void addActionBlock(std::shared_ptr< Action > blk)
Store common tensor mechanics parameters.
Moose::CoordinateSystemType _coord_system
const ExecFlagType EXEC_TIMESTEP_END
std::vector< VariableName > _displacements
displacement variables
static MultiMooseEnum materialOutputFamilies()
std::vector< std::string > _generate_output
output materials to generate scalar stress/strain tensor quantities
virtual const std::string & name() const
static const std::vector< char > _component_table
table data for output generation
std::shared_ptr< Action > create(const std::string &action, const std::string &action_name, InputParameters ¶meters)
enum QuasiStaticSolidMechanicsPhysics::PlanarFormulation _planar_formulation
const LKFormulation _lk_formulation
QuasiStaticSolidMechanicsPhysics(const InputParameters ¶ms)
bool isParamValid(const std::string &name) const
static MultiMooseEnum materialOutputOrders()
const SubdomainID INVALID_BLOCK_ID
void verifyOrderAndFamilyOutputs()
std::vector< SubdomainName > _subdomain_names
if this vector is not empty the variables, kernels and materials are restricted to these subdomains ...
void mooseDocumentedError(const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
const std::string _integrator_name
bool _use_displaced_mesh
use displaced mesh (true unless _strain is SMALL)
enum QuasiStaticSolidMechanicsPhysics::Strain _strain
std::vector< VariableName > _coupled_displacements
Coupled displacement variables.
MultiMooseEnum _material_output_family
bool _cylindrical_axis_point1_valid
booleans used to determine if cylindrical axis points are passed
std::vector< FunctionName > _targets
const std::string & type() const
bool _lk_locking
Simplified volumetric locking correction flag for new kernels.
const std::string & _current_task
static std::string variableType(const libMesh::FEType &fe_type, const bool is_fv=false, const bool is_array=false)
void paramError(const std::string ¶m, Args... args) const
ActionFactory & _action_factory
const ExecFlagType EXEC_LINEAR
std::string stringify(const T &t)
static const std::map< std::string, std::pair< std::string, std::vector< std::string > > > _rank_two_directional_component_table
static std::map< std::string, std::string > _rank_two_cartesian_component_table
std::vector< MaterialPropertyName > _eigenstrain_names
const OutOfPlaneDirection _out_of_plane_direction
const ExecFlagType EXEC_NONLINEAR
std::shared_ptr< MooseMesh > & _mesh
static libMesh::FEType feType(const InputParameters ¶ms)
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void actSubdomainChecks()
const bool _lagrangian_kernels
New or old kernel system.
void actLagrangianKernelStrain()
static InputParameters validParams()
void mooseError(Args &&... args) const
const std::string _homogenization_strain_name
std::shared_ptr< FEProblemBase > & _problem
const InputParameters & parameters() const
Point _spherical_center_point
center point for spherical stress/strain quantities
const MultiMooseEnum constraintType("strain stress none")
Moose constraint type, for input.
Point _cylindrical_axis_point2
void actOutputGeneration()
bool _spherical_center_point_valid
booleans used to determine if spherical center point is passed
const std::string _base_name
base name for the current master action block
static MultiMooseEnum outputPropertiesType()
std::vector< const T *> getActions()
bool _cylindrical_axis_point2_valid
MultiMooseEnum _constraint_types
PlanarFormulation
use an out of plane stress/strain formulation
void actEigenstrainNames()
virtual std::string getKernelType()
static const std::map< std::string, std::pair< std::string, std::vector< std::string > > > _rank_two_spherical_component_table
Point _cylindrical_axis_point1
points used to determine axis of rotation for cylindrical stress/strain quantities ...
bool _lk_homogenization
Flag indicating if the homogenization system is present for new kernels.
const ExecFlagType EXEC_INITIAL