11 #include "MooseMesh.h"
21 params.addClassDescription(
22 "Postprocessor for asymptotic expansion homogenization for elasticity");
23 params.addRequiredCoupledVar(
"dx_xx",
"solution in xx");
24 params.addRequiredCoupledVar(
"dy_xx",
"solution in xx");
25 params.addCoupledVar(
"dz_xx",
"solution in xx");
26 params.addRequiredCoupledVar(
"dx_yy",
"solution in yy");
27 params.addRequiredCoupledVar(
"dy_yy",
"solution in yy");
28 params.addCoupledVar(
"dz_yy",
"solution in yy");
29 params.addCoupledVar(
"dx_zz",
"solution in zz");
30 params.addCoupledVar(
"dy_zz",
"solution in zz");
31 params.addCoupledVar(
"dz_zz",
"solution in zz");
32 params.addRequiredCoupledVar(
"dx_xy",
"solution in xy");
33 params.addRequiredCoupledVar(
"dy_xy",
"solution in xy");
34 params.addCoupledVar(
"dz_xy",
"solution in xy");
35 params.addCoupledVar(
"dx_yz",
"solution in yz");
36 params.addCoupledVar(
"dy_yz",
"solution in yz");
37 params.addCoupledVar(
"dz_yz",
"solution in yz");
38 params.addCoupledVar(
"dx_zx",
"solution in zx");
39 params.addCoupledVar(
"dy_zx",
"solution in zx");
40 params.addCoupledVar(
"dz_zx",
"solution in zx");
41 params.addParam<std::string>(
"base_name",
42 "Optional parameter that allows the user to define "
43 "multiple mechanics material systems on the same "
44 "block, i.e. for multiple phases");
45 MooseEnum column(
"xx yy zz yz xz xy");
46 params.addRequiredParam<MooseEnum>(
"column",
48 "The column of the material matrix this kernel acts in. "
49 "(xx, yy, zz, yz, xz, or xy)");
50 params.addRequiredParam<MooseEnum>(
"row",
52 "The row of the material matrix this kernel acts in. "
53 "(xx, yy, zz, yz, xz, or xy)");
59 : ElementIntegralPostprocessor(parameters),
60 _base_name(isParamValid(
"base_name") ? getParam<std::string>(
"base_name") +
"_" :
""),
61 _grad({{{{&coupledGradient(
"dx_xx"),
62 &coupledGradient(
"dy_xx"),
63 (_subproblem.mesh().dimension() == 3 ? &coupledGradient(
"dz_xx") : &_grad_zero)}},
64 {{&coupledGradient(
"dx_yy"),
65 &coupledGradient(
"dy_yy"),
66 (_subproblem.mesh().dimension() == 3 ? &coupledGradient(
"dz_yy") : &_grad_zero)}},
67 {{(_subproblem.mesh().dimension() == 3 ? &coupledGradient(
"dx_zz") : &_grad_zero),
68 (_subproblem.mesh().dimension() == 3 ? &coupledGradient(
"dy_zz") : &_grad_zero),
69 (_subproblem.mesh().dimension() == 3 ? &coupledGradient(
"dz_zz") : &_grad_zero)}},
70 {{(_subproblem.mesh().dimension() == 3 ? &coupledGradient(
"dx_yz") : &_grad_zero),
71 (_subproblem.mesh().dimension() == 3 ? &coupledGradient(
"dy_yz") : &_grad_zero),
72 (_subproblem.mesh().dimension() == 3 ? &coupledGradient(
"dz_yz") : &_grad_zero)}},
73 {{(_subproblem.mesh().dimension() == 3 ? &coupledGradient(
"dx_zx") : &_grad_zero),
74 (_subproblem.mesh().dimension() == 3 ? &coupledGradient(
"dy_zx") : &_grad_zero),
75 (_subproblem.mesh().dimension() == 3 ? &coupledGradient(
"dz_zx") : &_grad_zero)}},
76 {{(&coupledGradient(
"dx_xy")),
77 (&coupledGradient(
"dy_xy")),
78 (_subproblem.mesh().dimension() == 3 ? &coupledGradient(
"dz_xy") : &_grad_zero)}}}}),
79 _elasticity_tensor(getMaterialPropertyByName<RankFourTensor>(_base_name +
"elasticity_tensor")),
80 _column(getParam<MooseEnum>(
"column")),
81 _row(getParam<MooseEnum>(
"row")),
82 _ik_index({{0, 1, 2, 1, 0, 0}}),
83 _jl_index({{0, 1, 2, 2, 2, 1}}),
86 _k(_ik_index[_column]),
87 _l(_jl_index[_column]),
104 _volume += _current_elem_volume;
121 dynamic_cast<const AsymptoticExpansionHomogenizationElasticConstants &>(y);
131 for (
unsigned p = 0; p < 3; ++p)
132 for (
unsigned q = 0; q < 3; ++q)