19 std::map<std::string, std::string>
21 {
"strain",
"total_strain"},
22 {
"mechanical_strain",
"mechanical_strain"},
24 {
"cauchy_stress",
"cauchy_stress"},
25 {
"deformation_gradient",
"deformation_gradient"},
26 {
"pk1_stress",
"pk1_stress"},
27 {
"pk2_stress",
"pk2_stress"},
28 {
"small_stress",
"small_stress"},
29 {
"elastic_strain",
"elastic_strain"},
30 {
"plastic_strain",
"plastic_strain"},
31 {
"creep_strain",
"creep_strain"},
32 {
"creep_stress",
"creep_stress"}};
37 const std::map<std::string, std::pair<std::string, std::vector<std::string>>>
39 {
"vonmises", {
"VonMisesStress", {
"stress",
"cauchy_stress",
"pk1_stress",
"pk2_stress"}}},
40 {
"effective", {
"EffectiveStrain", {
"plastic_strain",
"creep_strain"}}},
42 {
"Hydrostatic", {
"stress",
"cauchy_stress",
"pk1_stress",
"pk2_stress",
"small_stress"}}},
53 {
"volumetric", {
"VolumetricStrain", {
"mechanical_strain",
"strain"}}},
56 {
"stress",
"cauchy_stress",
"pk1_stress",
"pk2_stress",
"small_stress",
"strain"}}},
59 {
"stress",
"cauchy_stress",
"pk1_stress",
"pk2_stress",
"small_stress",
"strain"}}},
62 {
"stress",
"cauchy_stress",
"pk1_stress",
"pk2_stress",
"small_stress",
"strain"}}},
101 {
"mechanical_strain",
110 {
"mechanical_strain",
118 const std::map<std::string, std::pair<std::string, std::vector<std::string>>>
120 {
"directional", {
"Direction", {
"stress",
"strain"}}}};
122 const std::map<std::string, std::pair<std::string, std::vector<std::string>>>
125 {
"AxialStress", {
"stress",
"strain",
"plastic_strain",
"creep_strain",
"elastic_strain"}}},
127 {
"HoopStress", {
"stress",
"strain",
"plastic_strain",
"creep_strain",
"elastic_strain"}}},
128 {
"radial", {
"RadialStress", {
"stress",
"strain"}}}};
130 const std::map<std::string, std::pair<std::string, std::vector<std::string>>>
133 {
"HoopStress", {
"stress",
"strain",
"plastic_strain",
"creep_strain",
"elastic_strain"}}},
134 {
"spherical_radial", {
"RadialStress", {
"stress",
"strain"}}}};
142 "displacements",
"The nonlinear displacement variables for the problem");
143 params.
addParam<std::vector<VariableName>>(
"temperature",
"The temperature");
145 MooseEnum strainType(
"SMALL FINITE",
"SMALL");
147 params.
addParam<
bool>(
"incremental",
148 "Use incremental or total strain (if not explicitly specified this " 149 "defaults to incremental for finite strain and total for small strain)");
151 params.
addParam<std::string>(
"base_name",
"Material property base name");
153 "volumetric_locking_correction",
false,
"Flag to correct volumetric locking");
155 "use_finite_deform_jacobian",
false,
"Jacobian for corrotational finite strain");
156 params.
addParam<
bool>(
"add_variables",
false,
"Add the displacement variables");
157 params.
addParam<std::vector<MaterialPropertyName>>(
158 "eigenstrain_names", {},
"List of eigenstrains to be applied in this strain calculation");
159 params.
addParam<
bool>(
"use_automatic_differentiation",
161 "Flag to use automatic differentiation (AD) objects when possible");
163 params.
addParam<MaterialPropertyName>(
165 "Name of the global strain material to be applied in this strain calculation. " 166 "The global strain tensor is constant over the whole domain and allows visualization " 167 "of the deformed shape with the periodic BC");
170 params.
addParam<std::vector<AuxVariableName>>(
"save_in", {},
"The displacement residuals");
171 params.
addParam<std::vector<AuxVariableName>>(
172 "diag_save_in", {},
"The displacement diagonal preconditioner terms");
175 "Methods to calculate the finite strain and rotation increments");
179 MooseEnum planarFormulationType(
"NONE WEAK_PLANE_STRESS PLANE_STRAIN GENERALIZED_PLANE_STRAIN",
182 "planar_formulation", planarFormulationType,
"Out-of-plane stress/strain formulation");
183 params.
addParam<VariableName>(
"scalar_out_of_plane_strain",
184 "Scalar variable for the out-of-plane strain (in y " 185 "direction for 1D Axisymmetric or in z direction for 2D " 186 "Cartesian problems)");
187 params.
addParam<VariableName>(
"out_of_plane_strain",
188 "Variable for the out-of-plane strain for plane stress models");
189 MooseEnum outOfPlaneDirection(
"x y z",
"z");
191 "out_of_plane_direction", outOfPlaneDirection,
"The direction of the out-of-plane strain.");
193 "out_of_plane_pressure",
194 "Function used to prescribe pressure (applied toward the body) in the out-of-plane direction " 195 "(y for 1D Axisymmetric or z for 2D Cartesian problems)",
196 "This has been replaced by 'out_of_plane_pressure_function'");
198 "out_of_plane_pressure_function",
199 "Function used to prescribe pressure (applied toward the body) in the out-of-plane direction " 200 "(y for 1D Axisymmetric or z for 2D Cartesian problems)");
203 "Scale factor applied to prescribed out-of-plane pressure (both material and function)");
204 params.
addParam<MaterialPropertyName>(
"out_of_plane_pressure_material",
206 "Material used to prescribe pressure (applied toward the " 207 "body) in the out-of-plane direction");
208 params.
addParamNamesToGroup(
"planar_formulation scalar_out_of_plane_strain out_of_plane_pressure " 209 "out_of_plane_pressure_material out_of_plane_pressure_function " 210 "pressure_factor out_of_plane_direction out_of_plane_strain",
211 "Out-of-plane stress/strain");
216 "Add scalar quantity output for stress and/or strain");
219 "material_output_order",
221 "Specifies the order of the FE shape function to use for this variable.");
224 "material_output_family",
226 "Specifies the family of FE shape functions to use for this variable.");
229 params.
addParam<
bool>(
"verbose",
false,
"Display extra information.");
233 "If true use the new " 234 "LagrangianStressDiverence kernels.");
236 MooseEnum formulationType(
"TOTAL UPDATED",
"TOTAL");
239 "Select between the total Lagrangian (TOTAL) " 240 "and updated Lagrangian (UPDATED) formulations " 241 "for the new kernel system.");
252 :
Action(parameters), _use_ad(getParam<bool>(
"use_automatic_differentiation"))
259 if (action.size() == 1)
265 MultiMooseEnum generate_output = getParam<MultiMooseEnum>(
"generate_output");
267 getParam<MultiMooseEnum>(
"additional_generate_output");
269 MultiMooseEnum material_output_order = getParam<MultiMooseEnum>(
"material_output_order");
271 getParam<MultiMooseEnum>(
"additional_material_output_order");
273 MultiMooseEnum material_output_family = getParam<MultiMooseEnum>(
"material_output_family");
275 getParam<MultiMooseEnum>(
"additional_material_output_family");
277 for (
auto & output : additional_generate_output)
279 for (
auto & order : additional_material_output_order)
280 material_output_order.setAdditionalValue(order);
281 for (
auto & family : additional_material_output_family)
282 material_output_family.setAdditionalValue(family);
307 std::string options =
"";
309 for (
unsigned int a = 0;
a < 3; ++
a)
310 for (
unsigned int b = 0;
b < 3; ++
b)
315 for (
auto & t : r2i.second.second)
316 options +=
" " + r2i.first +
"_" + t;
319 for (
auto & r : r2sdc.second.second)
320 options +=
" " + r2sdc.first +
"_" + r;
323 for (
auto & r : r2cc.second.second)
324 options +=
" " + r2cc.first +
"_" + r;
327 for (
auto & r : r2sc.second.second)
328 options +=
" " + r2sc.first +
"_" + r;
335 const std::string & prop_name)
337 if (prop_name.empty())
static void addCartesianComponentOutput(const std::string &name, const std::string &prop_name="")
static const std::map< std::string, std::pair< std::string, std::vector< std::string > > > _rank_two_invariant_table
void setAdditionalValue(const std::string &names)
InputParameterWarehouse & getInputParameterWarehouse()
static const std::map< std::string, std::pair< std::string, std::vector< std::string > > > _rank_two_cylindrical_component_table
Store common tensor mechanics parameters.
static MultiMooseEnum materialOutputFamilies()
std::string getRawNames() const
MooseObjectName uniqueActionName() const
static const std::vector< char > _component_table
table data for output generation
QuasiStaticSolidMechanicsPhysicsBase(const InputParameters ¶ms)
bool isParamValid(const std::string &name) const
static MultiMooseEnum materialOutputOrders()
static InputParameters validParams()
static MooseEnum decompositionType()
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
static InputParameters validParams()
static MooseEnum getAuxVariableOrders()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static MultiMooseEnum outputPropertiesType()
std::vector< const T *> getActions()
static const std::map< std::string, std::pair< std::string, std::vector< std::string > > > _rank_two_spherical_component_table