www.mooseframework.org
TensorMechanicsAction.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #include "Conversion.h"
11 #include "FEProblem.h"
12 #include "Factory.h"
13 #include "MooseMesh.h"
14 #include "MooseObjectAction.h"
15 #include "TensorMechanicsAction.h"
16 
17 #include "libmesh/string_to_enum.h"
18 #include <algorithm>
19 
20 registerMooseAction("TensorMechanicsApp", TensorMechanicsAction, "meta_action");
21 
22 registerMooseAction("TensorMechanicsApp", TensorMechanicsAction, "setup_mesh_complete");
23 
24 registerMooseAction("TensorMechanicsApp", TensorMechanicsAction, "validate_coordinate_systems");
25 
26 registerMooseAction("TensorMechanicsApp", TensorMechanicsAction, "add_variable");
27 
28 registerMooseAction("TensorMechanicsApp", TensorMechanicsAction, "add_aux_variable");
29 
30 registerMooseAction("TensorMechanicsApp", TensorMechanicsAction, "add_kernel");
31 
32 registerMooseAction("TensorMechanicsApp", TensorMechanicsAction, "add_aux_kernel");
33 
34 registerMooseAction("TensorMechanicsApp", TensorMechanicsAction, "add_material");
35 
37 
38 InputParameters
40 {
41  InputParameters params = TensorMechanicsActionBase::validParams();
42  params.addClassDescription("Set up stress divergence kernels with coordinate system aware logic");
43 
44  // parameters specified here only appear in the input file sub-blocks of the
45  // Master action, not in the common parameters area
46  params.addParam<std::vector<SubdomainName>>("block",
47  "The list of ids of the blocks (subdomain) "
48  "that the stress divergence kernels will be "
49  "applied to");
50  params.addParamNamesToGroup("block", "Advanced");
51 
52  params.addParam<MultiMooseEnum>("additional_generate_output",
54  "Add scalar quantity output for stress and/or strain (will be "
55  "appended to the list in `generate_output`)");
56  params.addParamNamesToGroup("additional_generate_output", "Output");
57  params.addParam<std::string>(
58  "strain_base_name",
59  "The base name used for the strain. If not provided, it will be set equal to base_name");
60  params.addParam<std::vector<TagName>>(
61  "extra_vector_tags",
62  "The tag names for extra vectors that residual data should be saved into");
63 
64  return params;
65 }
66 
67 TensorMechanicsAction::TensorMechanicsAction(const InputParameters & params)
68  : TensorMechanicsActionBase(params),
69  _displacements(getParam<std::vector<VariableName>>("displacements")),
70  _ndisp(_displacements.size()),
71  _coupled_displacements(_ndisp),
72  _save_in(getParam<std::vector<AuxVariableName>>("save_in")),
73  _diag_save_in(getParam<std::vector<AuxVariableName>>("diag_save_in")),
74  _subdomain_names(getParam<std::vector<SubdomainName>>("block")),
75  _subdomain_ids(),
76  _strain(getParam<MooseEnum>("strain").getEnum<Strain>()),
77  _planar_formulation(getParam<MooseEnum>("planar_formulation").getEnum<PlanarFormulation>()),
78  _out_of_plane_direction(
79  getParam<MooseEnum>("out_of_plane_direction").getEnum<OutOfPlaneDirection>()),
80  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : "")
81 {
82  // determine if incremental strains are to be used
83  if (isParamValid("incremental"))
84  {
85  const bool incremental = getParam<bool>("incremental");
86  if (!incremental && _strain == Strain::Small)
88  else if (!incremental && _strain == Strain::Finite)
90  else if (incremental && _strain == Strain::Small)
92  else if (incremental && _strain == Strain::Finite)
94  else
95  mooseError("Internal error");
96  }
97  else
98  {
99  if (_strain == Strain::Small)
101  else if (_strain == Strain::Finite)
103  else
104  mooseError("Internal error");
105  }
106 
107  // determine if displaced mesh is to be used
109  if (params.isParamSetByUser("use_displaced_mesh"))
110  {
111  bool use_displaced_mesh_param = getParam<bool>("use_displaced_mesh");
112  if (use_displaced_mesh_param != _use_displaced_mesh && params.isParamSetByUser("strain"))
113  mooseError("Wrong combination of use displaced mesh and strain model");
114  _use_displaced_mesh = use_displaced_mesh_param;
115  }
116 
117  // convert vector of VariableName to vector of VariableName
118  for (unsigned int i = 0; i < _ndisp; ++i)
120 
121  if (_save_in.size() != 0 && _save_in.size() != _ndisp)
122  mooseError("Number of save_in variables should equal to the number of displacement variables ",
123  _ndisp);
124 
125  if (_diag_save_in.size() != 0 && _diag_save_in.size() != _ndisp)
126  mooseError(
127  "Number of diag_save_in variables should equal to the number of displacement variables ",
128  _ndisp);
129 
130  // plane strain consistency check
132  {
133  if (params.isParamSetByUser("out_of_plane_strain") &&
135  mooseError(
136  "out_of_plane_strain should only be specified with planar_formulation=WEAK_PLANE_STRESS");
137  else if (!params.isParamSetByUser("out_of_plane_strain") &&
139  mooseError("out_of_plane_strain must be specified with planar_formulation=WEAK_PLANE_STRESS");
140  }
141 
142  // convert output variable names to lower case
143  for (const auto & out : getParam<MultiMooseEnum>("generate_output"))
144  {
145  std::string lower(out);
146  std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower);
147  _generate_output.push_back(lower);
148  }
149 
150  // Error if volumetric locking correction is true for 1D problems
151  if (_ndisp == 1 && getParam<bool>("volumetric_locking_correction"))
152  mooseError("Volumetric locking correction should be set to false for 1D problems.");
153 }
154 
155 void
157 {
158  std::string ad_prepend = "";
159  std::string ad_append = "";
160  if (_use_ad)
161  {
162  ad_prepend = "AD";
163  ad_append = "<RESIDUAL>";
164  }
165 
166  //
167  // Consistency checks across subdomains
168  //
170 
171  //
172  // Gather info from all other TensorMechanicsAction
173  //
175 
176  //
177  // Deal with the optional AuxVariable based tensor quantity output
178  //
180 
181  //
182  // Meta action which optionally spawns other actions
183  //
184  if (_current_task == "meta_action")
185  {
187  {
188  if (_use_ad)
189  paramError("use_ad", "AD not setup for use with PlaneStrain");
190  // Set the action parameters
191  const std::string type = "GeneralizedPlaneStrainAction";
192  auto action_params = _action_factory.getValidParams(type);
193  action_params.set<bool>("_built_by_moose") = true;
194  action_params.set<std::string>("registered_identifier") = "(AutoBuilt)";
195  action_params.applyParameters(parameters(), {"use_displaced_mesh"});
196  action_params.set<bool>("use_displaced_mesh") = _use_displaced_mesh;
197  if (isParamValid("pressure_factor"))
198  action_params.set<Real>("factor") = getParam<Real>("pressure_factor");
199  // Create and add the action to the warehouse
200  auto action = MooseSharedNamespace::static_pointer_cast<MooseObjectAction>(
201  _action_factory.create(type, name() + "_gps", action_params));
202  _awh.addActionBlock(action);
203  if (isParamValid("extra_vector_tags"))
204  action_params.set<std::vector<TagName>>("extra_vector_tags") =
205  getParam<std::vector<TagName>>("extra_vector_tags");
206  }
207  }
208 
209  //
210  // Add variables (optional)
211  //
212  else if (_current_task == "add_variable" && getParam<bool>("add_variables"))
213  {
214  auto params = _factory.getValidParams("MooseVariable");
215  // determine necessary order
216  const bool second = _problem->mesh().hasSecondOrderElements();
217 
218  params.set<MooseEnum>("order") = second ? "SECOND" : "FIRST";
219  params.set<MooseEnum>("family") = "LAGRANGE";
220 
221  // Loop through the displacement variables
222  for (const auto & disp : _displacements)
223  {
224  // Create displacement variables
225  _problem->addVariable("MooseVariable", disp, params);
226  }
227  }
228 
229  //
230  // Add Strain Materials
231  //
232  else if (_current_task == "add_material")
233  {
234  std::string type;
235 
236  //
237  // no plane strain
238  //
240  {
241  std::map<std::pair<Moose::CoordinateSystemType, StrainAndIncrement>, std::string> type_map = {
242  {{Moose::COORD_XYZ, StrainAndIncrement::SmallTotal}, "ComputeSmallStrain"},
243  {{Moose::COORD_XYZ, StrainAndIncrement::SmallIncremental},
244  "ComputeIncrementalSmallStrain"},
245  {{Moose::COORD_XYZ, StrainAndIncrement::FiniteIncremental}, "ComputeFiniteStrain"},
246  {{Moose::COORD_RZ, StrainAndIncrement::SmallTotal}, "ComputeAxisymmetricRZSmallStrain"},
247  {{Moose::COORD_RZ, StrainAndIncrement::SmallIncremental},
248  "ComputeAxisymmetricRZIncrementalStrain"},
249  {{Moose::COORD_RZ, StrainAndIncrement::FiniteIncremental},
250  "ComputeAxisymmetricRZFiniteStrain"},
251  {{Moose::COORD_RSPHERICAL, StrainAndIncrement::SmallTotal},
252  "ComputeRSphericalSmallStrain"},
253  {{Moose::COORD_RSPHERICAL, StrainAndIncrement::SmallIncremental},
254  "ComputeRSphericalIncrementalStrain"},
255  {{Moose::COORD_RSPHERICAL, StrainAndIncrement::FiniteIncremental},
256  "ComputeRSphericalFiniteStrain"}};
257 
258  auto type_it = type_map.find(std::make_pair(_coord_system, _strain_and_increment));
259  if (type_it != type_map.end())
260  type = type_it->second;
261  else
262  mooseError("Unsupported strain formulation");
263  }
267  {
268  if (_use_ad)
269  paramError(
270  "use_ad",
271  "AD not setup for use with WeakPlaneStress, PlaneStrain, or GeneralizedPlaneStrain");
272 
273  std::map<std::pair<Moose::CoordinateSystemType, StrainAndIncrement>, std::string> type_map = {
274  {{Moose::COORD_XYZ, StrainAndIncrement::SmallTotal}, "ComputePlaneSmallStrain"},
275  {{Moose::COORD_XYZ, StrainAndIncrement::SmallIncremental},
276  "ComputePlaneIncrementalStrain"},
277  {{Moose::COORD_XYZ, StrainAndIncrement::FiniteIncremental}, "ComputePlaneFiniteStrain"},
278  {{Moose::COORD_RZ, StrainAndIncrement::SmallTotal}, "ComputeAxisymmetric1DSmallStrain"},
279  {{Moose::COORD_RZ, StrainAndIncrement::SmallIncremental},
280  "ComputeAxisymmetric1DIncrementalStrain"},
281  {{Moose::COORD_RZ, StrainAndIncrement::FiniteIncremental},
282  "ComputeAxisymmetric1DFiniteStrain"}};
283 
284  // choose kernel type based on coordinate system
285  auto type_it = type_map.find(std::make_pair(_coord_system, _strain_and_increment));
286  if (type_it != type_map.end())
287  type = type_it->second;
288  else
289  mooseError("Unsupported coordinate system for plane strain.");
290  }
291  else
292  mooseError("Unsupported planar formulation");
293 
294  // set material parameters
295  auto params = _factory.getValidParams(ad_prepend + type + ad_append);
296  params.applyParameters(parameters(),
297  {"displacements",
298  "use_displaced_mesh",
299  "out_of_plane_strain",
300  "scalar_out_of_plane_strain"});
301 
302  if (isParamValid("strain_base_name"))
303  params.set<std::string>("base_name") = getParam<std::string>("strain_base_name");
304 
305  params.set<std::vector<VariableName>>("displacements") = _coupled_displacements;
306  params.set<bool>("use_displaced_mesh") = false;
307 
308  if (isParamValid("scalar_out_of_plane_strain"))
309  params.set<std::vector<VariableName>>("scalar_out_of_plane_strain") = {
310  getParam<VariableName>("scalar_out_of_plane_strain")};
311 
312  if (isParamValid("out_of_plane_strain"))
313  params.set<std::vector<VariableName>>("out_of_plane_strain") = {
314  getParam<VariableName>("out_of_plane_strain")};
315 
316  if (_use_ad)
317  {
318  _problem->addADResidualMaterial(
319  ad_prepend + type + "<RESIDUAL>", name() + "_strain" + "_residual", params);
320  _problem->addADJacobianMaterial(
321  ad_prepend + type + "<JACOBIAN>", name() + "_strain" + "_jacobian", params);
322  _problem->haveADObjects(true);
323  }
324  else
325  _problem->addMaterial(type, name() + "_strain", params);
326  }
327 
328  //
329  // Add Stress Divergence (and optionally WeakPlaneStress) Kernels
330  //
331  else if (_current_task == "add_kernel")
332  {
333  for (unsigned int i = 0; i < _ndisp; ++i)
334  {
335  auto tensor_kernel_type = getKernelType();
336  auto params = getKernelParameters(ad_prepend + tensor_kernel_type + ad_append);
337 
338  std::string kernel_name = "TM_" + name() + Moose::stringify(i);
339 
340  // Set appropriate components for kernels, including in the cases where a planar model is
341  // running in planes other than the x-y plane (defined by _out_of_plane_strain_direction).
343  continue;
344  else if (_out_of_plane_direction == OutOfPlaneDirection::y && i == 1)
345  continue;
346 
347  params.set<unsigned int>("component") = i;
348 
349  params.set<NonlinearVariableName>("variable") = _displacements[i];
350 
351  if (_save_in.size() == _ndisp)
352  params.set<std::vector<AuxVariableName>>("save_in") = {_save_in[i]};
353  if (_diag_save_in.size() == _ndisp)
354  params.set<std::vector<AuxVariableName>>("diag_save_in") = {_diag_save_in[i]};
355  if (isParamValid("out_of_plane_strain"))
356  params.set<std::vector<VariableName>>("out_of_plane_strain") = {
357  getParam<VariableName>("out_of_plane_strain")};
358 
359  if (_use_ad)
360  {
361  _problem->addKernel(
362  ad_prepend + tensor_kernel_type + "<RESIDUAL>", kernel_name + "_residual", params);
363  _problem->addKernel(
364  ad_prepend + tensor_kernel_type + "<JACOBIAN>", kernel_name + "_jacobian", params);
365  _problem->haveADObjects(true);
366  }
367  else
368  _problem->addKernel(tensor_kernel_type, kernel_name, params);
369  }
370 
372  {
373  auto params = getKernelParameters("WeakPlaneStress");
374  std::string wps_kernel_name = "TM_WPS_" + name();
375  params.set<NonlinearVariableName>("variable") = getParam<VariableName>("out_of_plane_strain");
376  _problem->addKernel("WeakPlaneStress", wps_kernel_name, params);
377  }
378  }
379 }
380 
381 void
383 {
384  //
385  // Do the coordinate system check only once the problem is created
386  //
387  if (_current_task == "setup_mesh_complete")
388  {
389  // get subdomain IDs
390  for (auto & name : _subdomain_names)
391  _subdomain_ids.insert(_mesh->getSubdomainID(name));
392  }
393 
394  if (_current_task == "validate_coordinate_systems")
395  {
396  // use either block restriction list or list of all subdomains in the mesh
397  const auto & check_subdomains =
398  _subdomain_ids.empty() ? _problem->mesh().meshSubdomains() : _subdomain_ids;
399  if (check_subdomains.empty())
400  mooseError("No subdomains found");
401 
402  // make sure all subdomains are using the same coordinate system
403  _coord_system = _problem->getCoordSystem(*check_subdomains.begin());
404  for (auto subdomain : check_subdomains)
405  if (_problem->getCoordSystem(subdomain) != _coord_system)
406  mooseError("The TensorMechanics action requires all subdomains to have the same coordinate "
407  "system.");
408 
409  if (_coord_system == Moose::COORD_RZ)
410  {
412  mooseError("'out_of_plane_direction' must be 'z' for axisymmetric simulations");
413  }
415  {
417  mooseError(
418  "Must specify two displacements for plane strain when the out of plane direction is z");
420  mooseError("Must specify three displacements for plane strain when the out of plane "
421  "direction is x or y");
422  }
423  }
424 }
425 
426 void
428 {
429  //
430  // Add variables (optional)
431  //
432  if (_current_task == "add_aux_variable")
433  {
434  auto params = _factory.getValidParams("MooseVariableConstMonomial");
435  params.set<MooseEnum>("order") = "CONSTANT";
436  params.set<MooseEnum>("family") = "MONOMIAL";
437  // Loop through output aux variables
438  for (auto out : _generate_output)
439  {
440  // Create output helper aux variables
441  _problem->addAuxVariable("MooseVariableConstMonomial", _base_name + out, params);
442  }
443  }
444 
445  //
446  // Add output AuxKernels
447  //
448  else if (_current_task == "add_aux_kernel")
449  {
450  // Loop through output aux variables
451  for (auto out : _generate_output)
452  {
453  std::string type = "";
454  InputParameters params = emptyInputParameters();
455 
456  // RankTwoAux
457  for (const auto & r2a : _ranktwoaux_table)
458  for (unsigned int a = 0; a < 3; ++a)
459  for (unsigned int b = 0; b < 3; ++b)
460  if (r2a.first + '_' + _component_table[a] + _component_table[b] == out)
461  {
462  type = "RankTwoAux";
463  params = _factory.getValidParams(type);
464  params.set<MaterialPropertyName>("rank_two_tensor") = _base_name + r2a.second;
465  params.set<unsigned int>("index_i") = a;
466  params.set<unsigned int>("index_j") = b;
467  }
468 
469  // RankTwoScalarAux
470  for (const auto & r2sa : _ranktwoscalaraux_table)
471  for (const auto & t : r2sa.second.second)
472  if (r2sa.first + '_' + t == out)
473  {
474  const auto r2a = _ranktwoaux_table.find(t);
475  if (r2a != _ranktwoaux_table.end())
476  {
477  type = "RankTwoScalarAux";
478  params = _factory.getValidParams(type);
479  params.set<MaterialPropertyName>("rank_two_tensor") = _base_name + r2a->second;
480  params.set<MooseEnum>("scalar_type") = r2sa.second.first;
481  }
482  else
483  mooseError("Internal error. The permitted tensor shortcuts in "
484  "'_ranktwoscalaraux_table' must be keys in the '_ranktwoaux_table'.");
485  }
486 
487  if (type != "")
488  {
489  params.applyParameters(parameters());
490  params.set<AuxVariableName>("variable") = _base_name + out;
491  params.set<ExecFlagEnum>("execute_on") = EXEC_TIMESTEP_END;
492  _problem->addAuxKernel(type, _base_name + out + '_' + name(), params);
493  }
494  else
495  mooseError("Unable to add output AuxKernel");
496  }
497  }
498 }
499 
500 void
502 {
503  //
504  // Gather info about all other master actions when we add variables
505  //
506  if (_current_task == "validate_coordinate_systems" && getParam<bool>("add_variables"))
507  {
508  auto actions = _awh.getActions<TensorMechanicsAction>();
509  for (const auto & action : actions)
510  {
511  const auto size_before = _subdomain_id_union.size();
512  const auto added_size = action->_subdomain_ids.size();
513  _subdomain_id_union.insert(action->_subdomain_ids.begin(), action->_subdomain_ids.end());
514  const auto size_after = _subdomain_id_union.size();
515 
516  if (size_after != size_before + added_size)
517  mooseError("The block restrictions in the TensorMechanics/Master actions must be "
518  "non-overlapping.");
519 
520  if (added_size == 0 && actions.size() > 1)
521  mooseError("No TensorMechanics/Master action can be block unrestricted if more than one "
522  "TensorMechanics/Master action is specified.");
523  }
524  }
525 }
526 
527 std::string
529 {
530  std::map<Moose::CoordinateSystemType, std::string> type_map = {
531  {Moose::COORD_XYZ, "StressDivergenceTensors"},
532  {Moose::COORD_RZ, "StressDivergenceRZTensors"},
533  {Moose::COORD_RSPHERICAL, "StressDivergenceRSphericalTensors"}};
534 
535  // choose kernel type based on coordinate system
536  auto type_it = type_map.find(_coord_system);
537  if (type_it != type_map.end())
538  return type_it->second;
539  else
540  mooseError("Unsupported coordinate system");
541 }
542 
543 InputParameters
545 {
546  InputParameters params = _factory.getValidParams(type);
547  params.applyParameters(parameters(),
548  {"displacements",
549  "use_displaced_mesh",
550  "save_in",
551  "diag_save_in",
552  "out_of_plane_strain"});
553 
554  params.set<std::vector<VariableName>>("displacements") = _coupled_displacements;
555  params.set<bool>("use_displaced_mesh") = _use_displaced_mesh;
556 
557  return params;
558 }
TensorMechanicsAction::PlanarFormulation::None
TensorMechanicsAction::actSubdomainChecks
void actSubdomainChecks()
Definition: TensorMechanicsAction.C:382
TensorMechanicsAction::_save_in
std::vector< AuxVariableName > _save_in
residual debugging
Definition: TensorMechanicsAction.h:43
TensorMechanicsAction::StrainAndIncrement::SmallTotal
TensorMechanicsAction::_planar_formulation
enum TensorMechanicsAction::PlanarFormulation _planar_formulation
TensorMechanicsAction::_ndisp
unsigned int _ndisp
Definition: TensorMechanicsAction.h:38
TensorMechanicsAction::OutOfPlaneDirection::x
TensorMechanicsAction::PlanarFormulation::GeneralizedPlaneStrain
defineLegacyParams
defineLegacyParams(TensorMechanicsAction)
TensorMechanicsAction::StrainAndIncrement::FiniteTotal
TensorMechanicsAction
Definition: TensorMechanicsAction.h:19
TensorMechanicsActionBase::_component_table
static const std::vector< char > _component_table
Definition: TensorMechanicsActionBase.h:31
TensorMechanicsAction::Strain
Strain
strain formulation
Definition: TensorMechanicsAction.h:59
TensorMechanicsAction::getKernelType
virtual std::string getKernelType()
Definition: TensorMechanicsAction.C:528
TensorMechanicsAction::Strain::Small
TensorMechanicsAction::actOutputGeneration
void actOutputGeneration()
Definition: TensorMechanicsAction.C:427
TensorMechanicsAction::PlanarFormulation
PlanarFormulation
use an out of plane stress/strain formulation
Definition: TensorMechanicsAction.h:75
TensorMechanicsAction::OutOfPlaneDirection::z
TensorMechanicsActionBase
Definition: TensorMechanicsActionBase.h:19
TensorMechanicsActionBase::validParams
static InputParameters validParams()
Definition: TensorMechanicsActionBase.C:39
TensorMechanicsAction::_use_displaced_mesh
bool _use_displaced_mesh
use displaced mesh (true unless _strain is SMALL)
Definition: TensorMechanicsAction.h:96
TensorMechanicsActionBase::_ranktwoaux_table
static const std::map< std::string, std::string > _ranktwoaux_table
table data for output generation
Definition: TensorMechanicsActionBase.h:30
TensorMechanicsAction::_base_name
const std::string _base_name
base name for the current master action block
Definition: TensorMechanicsAction.h:93
TensorMechanicsAction::_strain
enum TensorMechanicsAction::Strain _strain
TensorMechanicsAction::PlanarFormulation::PlaneStrain
TensorMechanicsAction::StrainAndIncrement::SmallIncremental
TensorMechanicsAction::StrainAndIncrement::FiniteIncremental
TensorMechanicsActionBase::_use_ad
const bool _use_ad
Definition: TensorMechanicsActionBase.h:37
TensorMechanicsAction::_coupled_displacements
std::vector< VariableName > _coupled_displacements
Definition: TensorMechanicsAction.h:39
TensorMechanicsAction::_subdomain_names
std::vector< SubdomainName > _subdomain_names
if this vector is not empty the variables, kernels and materials are restricted to these subdomains
Definition: TensorMechanicsAction.h:50
TensorMechanicsActionBase::_ranktwoscalaraux_table
static const std::map< std::string, std::pair< std::string, std::vector< std::string > > > _ranktwoscalaraux_table
Definition: TensorMechanicsActionBase.h:33
name
const std::string name
Definition: Setup.h:21
TensorMechanicsAction::Strain::Finite
TensorMechanicsAction::actGatherActionParameters
void actGatherActionParameters()
Definition: TensorMechanicsAction.C:501
TensorMechanicsAction::_subdomain_id_union
std::set< SubdomainID > _subdomain_id_union
set generated from the combined block restrictions of all TensorMechanics/Master action blocks
Definition: TensorMechanicsAction.h:56
TensorMechanicsAction.h
TensorMechanicsAction::_generate_output
std::vector< std::string > _generate_output
output aux variables to generate for sclar stress/strain tensor quantities
Definition: TensorMechanicsAction.h:99
TensorMechanicsAction::_strain_and_increment
enum TensorMechanicsAction::StrainAndIncrement _strain_and_increment
TensorMechanicsAction::_displacements
std::vector< VariableName > _displacements
displacement variables
Definition: TensorMechanicsAction.h:37
TensorMechanicsAction::_subdomain_ids
std::set< SubdomainID > _subdomain_ids
set generated from the passed in vector of subdomain names
Definition: TensorMechanicsAction.h:53
registerMooseAction
registerMooseAction("TensorMechanicsApp", TensorMechanicsAction, "meta_action")
TensorMechanicsAction::_diag_save_in
std::vector< AuxVariableName > _diag_save_in
Definition: TensorMechanicsAction.h:44
TensorMechanicsAction::OutOfPlaneDirection
OutOfPlaneDirection
Definition: TensorMechanicsAction.h:83
TensorMechanicsAction::PlanarFormulation::WeakPlaneStress
TensorMechanicsActionBase::outputPropertiesType
static MultiMooseEnum outputPropertiesType()
Definition: TensorMechanicsActionBase.C:134
TensorMechanicsAction::act
virtual void act()
Definition: TensorMechanicsAction.C:156
TensorMechanicsAction::OutOfPlaneDirection::y
TensorMechanicsAction::TensorMechanicsAction
TensorMechanicsAction(const InputParameters &params)
Definition: TensorMechanicsAction.C:67
TensorMechanicsAction::getKernelParameters
virtual InputParameters getKernelParameters(std::string type)
Definition: TensorMechanicsAction.C:544
TensorMechanicsAction::validParams
static InputParameters validParams()
Definition: TensorMechanicsAction.C:39
TensorMechanicsAction::_out_of_plane_direction
const OutOfPlaneDirection _out_of_plane_direction
Definition: TensorMechanicsAction.h:90
TensorMechanicsAction::_coord_system
Moose::CoordinateSystemType _coord_system
Definition: TensorMechanicsAction.h:47