www.mooseframework.org
MaterialTensorCalculator.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 
12 
13 template <>
14 InputParameters
16 {
17  InputParameters params = emptyInputParameters();
18  MooseEnum quantities("VonMises=1 EffectiveStrain Hydrostatic Direction Hoop Radial Axial "
19  "MaxPrincipal MedPrincipal MinPrincipal FirstInvariant SecondInvariant "
20  "ThirdInvariant TriAxiality VolumetricStrain");
21 
22  params.addParam<int>(
23  "index", -1, "The index into the tensor, from 0 to 5 (xx, yy, zz, xy, yz, zx).");
24  params.addParam<MooseEnum>(
25  "quantity", quantities, "A scalar quantity to compute: " + quantities.getRawNames());
26 
27  params.addParam<RealVectorValue>(
28  "point1",
29  RealVectorValue(0, 0, 0),
30  "Start point for axis used to calculate some material tensor quantities");
31  params.addParam<RealVectorValue>(
32  "point2",
33  RealVectorValue(0, 1, 0),
34  "End point for axis used to calculate some material tensor quantities");
35  params.addParam<RealVectorValue>("direction", RealVectorValue(1, 0, 0), "Direction vector");
36  return params;
37 }
38 
39 MaterialTensorCalculator::MaterialTensorCalculator(const InputParameters & parameters)
40  : _index(parameters.get<int>("index")),
41  _quantity_moose_enum(parameters.get<MooseEnum>("quantity")),
42  _p1(parameters.get<RealVectorValue>("point1")),
43  _p2(parameters.get<RealVectorValue>("point2")),
44  _direction(parameters.get<RealVectorValue>("direction") /
45  parameters.get<RealVectorValue>("direction").norm())
46 {
47  const std::string & name = parameters.get<std::string>("_object_name");
48 
49  if (_quantity_moose_enum.isValid())
50  {
51  if (_index > 0)
52  mooseError("Cannot define an index and a quantity in " + name);
53  else
55  }
56  else
57  {
58  if (_index < 0)
59  mooseError("Neither an index nor a quantity listed for " + name);
60  else
61  _quantity = COMPONENT; // default
62  }
63 
64  if (_index > -1 && _index > 5)
65  {
66  mooseError("The material tensor index must be >= 0 and <= 5 OR < 0 (off).");
67  }
68 }
69 
70 Real
72  const Point & curr_point,
73  RealVectorValue & direction)
74 {
75  direction.zero();
76  Real value = 0.0;
77 
78  switch (_quantity)
79  {
80  case 0:
81  value = MaterialTensorCalculatorTools::component(tensor, _index, direction);
82  break;
83 
84  case 1:
86  break;
87 
88  case 2:
90  break;
91 
92  case 3:
94  break;
95 
96  case 4:
98  break;
99 
100  case 5:
101  value = MaterialTensorCalculatorTools::hoopStress(tensor, _p1, _p2, curr_point, direction);
102  break;
103 
104  case 6:
105  value = MaterialTensorCalculatorTools::radialStress(tensor, _p1, _p2, curr_point, direction);
106  break;
107 
108  case 7:
109  value = MaterialTensorCalculatorTools::axialStress(tensor, _p1, _p2, direction);
110  break;
111 
112  case 8:
113  value = MaterialTensorCalculatorTools::maxPrincipal(tensor, direction);
114  break;
115 
116  case 9:
117  value = MaterialTensorCalculatorTools::midPrincipal(tensor, direction);
118  break;
119 
120  case 10:
121  value = MaterialTensorCalculatorTools::minPrincipal(tensor, direction);
122  break;
123 
124  case 11:
126  break;
127 
128  case 12:
130  break;
131 
132  case 13:
134  break;
135 
136  case 14:
138  break;
139 
140  case 15:
142  break;
143 
144  default:
145  mooseError("Unknown quantity in MaterialTensorAux: " +
146  _quantity_moose_enum.operator std::string());
147  }
148  return value;
149 }
MaterialTensorCalculatorTools::hoopStress
Real hoopStress(const SymmTensor &symm_stress, const Point &point1, const Point &point2, const Point &curr_point, RealVectorValue &direction)
Definition: MaterialTensorCalculatorTools.C:200
MaterialTensorCalculatorTools::midPrincipal
Real midPrincipal(const SymmTensor &symm_tensor, RealVectorValue &direction)
Definition: MaterialTensorCalculatorTools.C:129
MaterialTensorCalculator::QUANTITY_ENUM
QUANTITY_ENUM
Definition: MaterialTensorCalculator.h:27
MaterialTensorCalculator::_p2
const Point _p2
Definition: MaterialTensorCalculator.h:57
MaterialTensorCalculator::getTensorQuantity
Real getTensorQuantity(const SymmTensor &tensor, const Point &curr_point, RealVectorValue &direction)
Definition: MaterialTensorCalculator.C:71
MaterialTensorCalculator.h
MaterialTensorCalculatorTools::hydrostatic
Real hydrostatic(const SymmTensor &symm_tensor)
Definition: MaterialTensorCalculatorTools.C:64
MaterialTensorCalculatorTools::effectiveStrain
Real effectiveStrain(const SymmTensor &symm_strain)
Definition: MaterialTensorCalculatorTools.C:58
MaterialTensorCalculatorTools::vonMisesStress
Real vonMisesStress(const SymmTensor &symm_stress)
Definition: MaterialTensorCalculatorTools.C:47
MaterialTensorCalculatorTools::maxPrincipal
Real maxPrincipal(const SymmTensor &symm_tensor, RealVectorValue &direction)
Definition: MaterialTensorCalculatorTools.C:122
MaterialTensorCalculatorTools::thirdInvariant
Real thirdInvariant(const SymmTensor &symm_tensor)
Definition: MaterialTensorCalculatorTools.C:108
MaterialTensorCalculatorTools::firstInvariant
Real firstInvariant(const SymmTensor &symm_tensor)
Definition: MaterialTensorCalculatorTools.C:92
MaterialTensorCalculatorTools::volumetricStrain
Real volumetricStrain(const SymmTensor &symm_strain)
Definition: MaterialTensorCalculatorTools.C:70
MaterialTensorCalculatorTools::directionValueTensor
Real directionValueTensor(const SymmTensor &symm_tensor, const RealVectorValue &input_direction)
Definition: MaterialTensorCalculatorTools.C:269
MaterialTensorCalculatorTools::radialStress
Real radialStress(const SymmTensor &symm_stress, const Point &point1, const Point &point2, const Point &curr_point, RealVectorValue &direction)
Definition: MaterialTensorCalculatorTools.C:227
validParams< MaterialTensorCalculator >
InputParameters validParams< MaterialTensorCalculator >()
Definition: MaterialTensorCalculator.C:15
MaterialTensorCalculator::MaterialTensorCalculator
MaterialTensorCalculator(const InputParameters &parameters)
Definition: MaterialTensorCalculator.C:39
MaterialTensorCalculatorTools.h
MaterialTensorCalculatorTools::triaxialityStress
Real triaxialityStress(const SymmTensor &symm_stress)
Definition: MaterialTensorCalculatorTools.C:281
name
const std::string name
Definition: Setup.h:21
MaterialTensorCalculatorTools::secondInvariant
Real secondInvariant(const SymmTensor &symm_tensor)
Definition: MaterialTensorCalculatorTools.C:98
MaterialTensorCalculator::_index
const int _index
Definition: MaterialTensorCalculator.h:52
MaterialTensorCalculatorTools::component
Real component(const SymmTensor &symm_tensor, unsigned int index)
Definition: MaterialTensorCalculatorTools.C:16
SymmTensor
Definition: SymmTensor.h:21
MaterialTensorCalculator::COMPONENT
Definition: MaterialTensorCalculator.h:29
MaterialTensorCalculator::_quantity
QUANTITY_ENUM _quantity
Definition: MaterialTensorCalculator.h:54
MaterialTensorCalculator::_p1
const Point _p1
Definition: MaterialTensorCalculator.h:56
MaterialTensorCalculator::_quantity_moose_enum
MooseEnum _quantity_moose_enum
Definition: MaterialTensorCalculator.h:53
MaterialTensorCalculator::_direction
const Point _direction
Definition: MaterialTensorCalculator.h:58
MaterialTensorCalculatorTools::minPrincipal
Real minPrincipal(const SymmTensor &symm_tensor, RealVectorValue &direction)
Definition: MaterialTensorCalculatorTools.C:136
MaterialTensorCalculatorTools::axialStress
Real axialStress(const SymmTensor &symm_stress, const Point &point1, const Point &point2, RealVectorValue &direction)
Definition: MaterialTensorCalculatorTools.C:180