www.mooseframework.org
HomogenizedElasticConstants.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 
11 #include "SymmElasticityTensor.h"
12 #include "SubProblem.h"
13 #include "MooseMesh.h"
14 
16 
17 template <>
18 InputParameters
20 {
21  InputParameters params = validParams<ElementAverageValue>();
22  params.addRequiredCoupledVar("dx_xx", "solution in xx");
23  params.addRequiredCoupledVar("dy_xx", "solution in xx");
24  params.addCoupledVar("dz_xx", "solution in xx");
25  params.addRequiredCoupledVar("dx_yy", "solution in yy");
26  params.addRequiredCoupledVar("dy_yy", "solution in yy");
27  params.addCoupledVar("dz_yy", "solution in yy");
28  params.addCoupledVar("dx_zz", "solution in zz");
29  params.addCoupledVar("dy_zz", "solution in zz");
30  params.addCoupledVar("dz_zz", "solution in zz");
31  params.addRequiredCoupledVar("dx_xy", "solution in xy");
32  params.addRequiredCoupledVar("dy_xy", "solution in xy");
33  params.addCoupledVar("dz_xy", "solution in xy");
34  params.addCoupledVar("dx_yz", "solution in yz");
35  params.addCoupledVar("dy_yz", "solution in yz");
36  params.addCoupledVar("dz_yz", "solution in yz");
37  params.addCoupledVar("dx_zx", "solution in zx");
38  params.addCoupledVar("dy_zx", "solution in zx");
39  params.addCoupledVar("dz_zx", "solution in zx");
40  params.addParam<std::string>(
41  "appended_property_name", "", "Name appended to material properties to make them unique");
42  params.addRequiredParam<unsigned int>("column",
43  "An integer corresponding to the direction the "
44  "variable this kernel acts in. (0 for xx, 1 for "
45  "yy, 2 for zz, 3 for xy, 4 for yz, 5 for zx)");
46  params.addRequiredParam<unsigned int>("row",
47  "An integer corresponding to the direction the "
48  "variable this kernel acts in. (0 for xx, 1 for yy, "
49  "2 for zz, 3 for xy, 4 for yz, 5 for zx)");
50  return params;
51 }
52 
54  : ElementAverageValue(parameters),
55  _grad_disp_x_xx(coupledGradient("dx_xx")),
56  _grad_disp_y_xx(coupledGradient("dy_xx")),
57  _grad_disp_z_xx(_subproblem.mesh().dimension() == 3 ? coupledGradient("dz_xx") : _grad_zero),
58  _grad_disp_x_yy(coupledGradient("dx_yy")),
59  _grad_disp_y_yy(coupledGradient("dy_yy")),
60  _grad_disp_z_yy(_subproblem.mesh().dimension() == 3 ? coupledGradient("dz_yy") : _grad_zero),
61  _grad_disp_x_zz(_subproblem.mesh().dimension() == 3 ? coupledGradient("dx_zz") : _grad_zero),
62  _grad_disp_y_zz(_subproblem.mesh().dimension() == 3 ? coupledGradient("dy_zz") : _grad_zero),
63  _grad_disp_z_zz(_subproblem.mesh().dimension() == 3 ? coupledGradient("dz_zz") : _grad_zero),
64  _grad_disp_x_xy(coupledGradient("dx_xy")),
65  _grad_disp_y_xy(coupledGradient("dy_xy")),
66  _grad_disp_z_xy(_subproblem.mesh().dimension() == 3 ? coupledGradient("dz_xy") : _grad_zero),
67  _grad_disp_x_yz(_subproblem.mesh().dimension() == 3 ? coupledGradient("dx_yz") : _grad_zero),
68  _grad_disp_y_yz(_subproblem.mesh().dimension() == 3 ? coupledGradient("dy_yz") : _grad_zero),
69  _grad_disp_z_yz(_subproblem.mesh().dimension() == 3 ? coupledGradient("dz_yz") : _grad_zero),
70  _grad_disp_x_zx(_subproblem.mesh().dimension() == 3 ? coupledGradient("dx_zx") : _grad_zero),
71  _grad_disp_y_zx(_subproblem.mesh().dimension() == 3 ? coupledGradient("dy_zx") : _grad_zero),
72  _grad_disp_z_zx(_subproblem.mesh().dimension() == 3 ? coupledGradient("dz_zx") : _grad_zero),
73  _elasticity_tensor(getMaterialProperty<SymmElasticityTensor>(
74  "elasticity_tensor" + getParam<std::string>("appended_property_name"))),
75  _column(getParam<unsigned int>("column")),
76  _row(getParam<unsigned int>("row")),
77  _volume(0),
78  _integral_value(0)
79 {
80 
81  if (_column == 0)
82  {
83  _k = 0;
84  _l = 0;
85  }
86 
87  if (_column == 1)
88  {
89  _k = 1;
90  _l = 1;
91  }
92 
93  if (_column == 2)
94  {
95  _k = 2;
96  _l = 2;
97  }
98 
99  if (_column == 3)
100  {
101  _k = 0;
102  _l = 1;
103  }
104 
105  if (_column == 4)
106  {
107  _k = 1;
108  _l = 2;
109  }
110 
111  if (_column == 5)
112  {
113  _k = 2;
114  _l = 0;
115  }
116 
117  if (_row == 0)
118  {
119  _i = 0;
120  _j = 0;
121  }
122 
123  if (_row == 1)
124  {
125  _i = 1;
126  _j = 1;
127  }
128 
129  if (_row == 2)
130  {
131  _i = 2;
132  _j = 2;
133  }
134 
135  if (_row == 3)
136  {
137  _i = 0;
138  _j = 1;
139  }
140 
141  if (_row == 4)
142  {
143  _i = 1;
144  _j = 2;
145  }
146 
147  if (_row == 5)
148  {
149  _i = 2;
150  _j = 0;
151  }
152 
153  _J = (3 * _l + _k);
154  _I = (3 * _j + _i);
155 }
156 
157 void
159 {
160  _integral_value = 0;
161  _volume = 0;
162 }
163 
164 void
166 {
167  _integral_value += computeIntegral();
168  _volume += _current_elem_volume;
169 }
170 
171 Real
173 {
174 
175  gatherSum(_integral_value);
176  gatherSum(_volume);
177 
178  return (_integral_value / _volume);
179 }
180 
181 void
183 {
184  const HomogenizedElasticConstants & pps = dynamic_cast<const HomogenizedElasticConstants &>(y);
185 
187  _volume += pps._volume;
188 }
189 
190 Real
192 {
193  ColumnMajorMatrix E(_elasticity_tensor[_qp].columnMajorMatrix9x9());
194  Real value;
195 
196  value = 0.0;
197 
198  const VariableGradient * grad[6][3];
199  grad[0][0] = &_grad_disp_x_xx;
200  grad[0][1] = &_grad_disp_y_xx;
201  grad[0][2] = &_grad_disp_z_xx;
202 
203  grad[1][0] = &_grad_disp_x_yy;
204  grad[1][1] = &_grad_disp_y_yy;
205  grad[1][2] = &_grad_disp_z_yy;
206 
207  grad[2][0] = &_grad_disp_x_zz;
208  grad[2][1] = &_grad_disp_y_zz;
209  grad[2][2] = &_grad_disp_z_zz;
210 
211  grad[3][0] = &_grad_disp_x_xy;
212  grad[3][1] = &_grad_disp_y_xy;
213  grad[3][2] = &_grad_disp_z_xy;
214 
215  grad[4][0] = &_grad_disp_x_yz;
216  grad[4][1] = &_grad_disp_y_yz;
217  grad[4][2] = &_grad_disp_z_yz;
218 
219  grad[5][0] = &_grad_disp_x_zx;
220  grad[5][1] = &_grad_disp_y_zx;
221  grad[5][2] = &_grad_disp_z_zx;
222 
223  for (int p = 0; p < 3; p++)
224  {
225  for (int q = 0; q < 3; q++)
226  {
227  value += E(_I, 3 * q + p) * (*grad[_column][p])[_qp](q);
228  }
229  }
230 
231  return (E(_I, _J) + value);
232 }
SymmElasticityTensor.h
HomogenizedElasticConstants::_volume
Real _volume
Definition: HomogenizedElasticConstants.h:68
HomogenizedElasticConstants::_integral_value
Real _integral_value
Definition: HomogenizedElasticConstants.h:69
HomogenizedElasticConstants::_column
const unsigned int _column
Definition: HomogenizedElasticConstants.h:64
HomogenizedElasticConstants::initialize
virtual void initialize()
Definition: HomogenizedElasticConstants.C:158
HomogenizedElasticConstants::_j
unsigned _j
Definition: HomogenizedElasticConstants.h:67
HomogenizedElasticConstants::_grad_disp_x_yy
const VariableGradient & _grad_disp_x_yy
Definition: HomogenizedElasticConstants.h:43
HomogenizedElasticConstants::_grad_disp_x_xx
const VariableGradient & _grad_disp_x_xx
Definition: HomogenizedElasticConstants.h:39
HomogenizedElasticConstants::_grad_disp_y_xy
const VariableGradient & _grad_disp_y_xy
Definition: HomogenizedElasticConstants.h:52
HomogenizedElasticConstants::_grad_disp_y_yy
const VariableGradient & _grad_disp_y_yy
Definition: HomogenizedElasticConstants.h:44
HomogenizedElasticConstants::_grad_disp_x_zx
const VariableGradient & _grad_disp_x_zx
Definition: HomogenizedElasticConstants.h:59
HomogenizedElasticConstants::_i
unsigned _i
Definition: HomogenizedElasticConstants.h:67
HomogenizedElasticConstants::_l
unsigned _l
Definition: HomogenizedElasticConstants.h:66
HomogenizedElasticConstants::_grad_disp_x_yz
const VariableGradient & _grad_disp_x_yz
Definition: HomogenizedElasticConstants.h:55
HomogenizedElasticConstants::_grad_disp_z_yz
const VariableGradient & _grad_disp_z_yz
Definition: HomogenizedElasticConstants.h:57
HomogenizedElasticConstants::_grad_disp_z_xx
const VariableGradient & _grad_disp_z_xx
Definition: HomogenizedElasticConstants.h:41
HomogenizedElasticConstants::_grad_disp_y_xx
const VariableGradient & _grad_disp_y_xx
Definition: HomogenizedElasticConstants.h:40
SymmElasticityTensor
This class defines a basic set of capabilities any elasticity tensor should have.
Definition: SymmElasticityTensor.h:55
HomogenizedElasticConstants::_grad_disp_y_yz
const VariableGradient & _grad_disp_y_yz
Definition: HomogenizedElasticConstants.h:56
HomogenizedElasticConstants::_grad_disp_y_zz
const VariableGradient & _grad_disp_y_zz
Definition: HomogenizedElasticConstants.h:48
HomogenizedElasticConstants::_grad_disp_x_zz
const VariableGradient & _grad_disp_x_zz
Definition: HomogenizedElasticConstants.h:47
registerMooseObject
registerMooseObject("SolidMechanicsApp", HomogenizedElasticConstants)
HomogenizedElasticConstants::getValue
virtual Real getValue()
Definition: HomogenizedElasticConstants.C:172
HomogenizedElasticConstants::_J
unsigned _J
Definition: HomogenizedElasticConstants.h:65
HomogenizedElasticConstants::_I
unsigned _I
Definition: HomogenizedElasticConstants.h:65
HomogenizedElasticConstants::execute
virtual void execute()
Definition: HomogenizedElasticConstants.C:165
HomogenizedElasticConstants::_grad_disp_z_zx
const VariableGradient & _grad_disp_z_zx
Definition: HomogenizedElasticConstants.h:61
HomogenizedElasticConstants::_row
const unsigned int _row
Definition: HomogenizedElasticConstants.h:64
HomogenizedElasticConstants::computeQpIntegral
virtual Real computeQpIntegral()
Definition: HomogenizedElasticConstants.C:191
HomogenizedElasticConstants.h
HomogenizedElasticConstants::_grad_disp_z_zz
const VariableGradient & _grad_disp_z_zz
Definition: HomogenizedElasticConstants.h:49
HomogenizedElasticConstants
This postprocessor computes the average grain area in a polycrystal.
Definition: HomogenizedElasticConstants.h:25
HomogenizedElasticConstants::_grad_disp_z_xy
const VariableGradient & _grad_disp_z_xy
Definition: HomogenizedElasticConstants.h:53
HomogenizedElasticConstants::_grad_disp_z_yy
const VariableGradient & _grad_disp_z_yy
Definition: HomogenizedElasticConstants.h:45
HomogenizedElasticConstants::_elasticity_tensor
const MaterialProperty< SymmElasticityTensor > & _elasticity_tensor
Definition: HomogenizedElasticConstants.h:63
validParams< HomogenizedElasticConstants >
InputParameters validParams< HomogenizedElasticConstants >()
Definition: HomogenizedElasticConstants.C:19
HomogenizedElasticConstants::_grad_disp_y_zx
const VariableGradient & _grad_disp_y_zx
Definition: HomogenizedElasticConstants.h:60
HomogenizedElasticConstants::threadJoin
virtual void threadJoin(const UserObject &y)
Definition: HomogenizedElasticConstants.C:182
HomogenizedElasticConstants::_k
unsigned _k
Definition: HomogenizedElasticConstants.h:66
HomogenizedElasticConstants::HomogenizedElasticConstants
HomogenizedElasticConstants(const InputParameters &parameters)
Definition: HomogenizedElasticConstants.C:53
HomogenizedElasticConstants::_grad_disp_x_xy
const VariableGradient & _grad_disp_x_xy
Definition: HomogenizedElasticConstants.h:51