78 std::vector<Real> iso_const(2);
82 if (_youngs_modulus_set && _poissons_ratio_set)
84 _Cijkl.fillSymmetricIsotropicEandNu(_youngs_modulus, _poissons_ratio);
85 _effective_stiffness_local =
86 std::max(std::sqrt((_youngs_modulus * (1 - _poissons_ratio)) /
87 ((1 + _poissons_ratio) * (1 - 2 * _poissons_ratio))),
88 std::sqrt(_youngs_modulus / (2 * (1 + _poissons_ratio))));
92 if (_lambda_set && _shear_modulus_set)
94 iso_const[0] = _lambda;
95 iso_const[1] = _shear_modulus;
96 elas_mod = (_shear_modulus * (3 * _lambda + 2 * _shear_modulus)) / (_lambda + _shear_modulus);
97 poiss_rat = _lambda / (2 * (_lambda + _shear_modulus));
98 _effective_stiffness_local =
99 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
100 std::sqrt(_shear_modulus));
102 else if (_shear_modulus_set && _bulk_modulus_set)
104 iso_const[0] = _bulk_modulus - 2.0 / 3.0 * _shear_modulus;
105 iso_const[1] = _shear_modulus;
106 elas_mod = (9 * _bulk_modulus * _shear_modulus) / (3 * _bulk_modulus + _shear_modulus);
108 (3 * _bulk_modulus - 2 * _shear_modulus) / (2 * (3 * _bulk_modulus + _shear_modulus));
109 _effective_stiffness_local =
110 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
111 std::sqrt(_shear_modulus));
113 else if (_poissons_ratio_set && _bulk_modulus_set)
115 iso_const[0] = 3.0 * _bulk_modulus * _poissons_ratio / (1.0 + _poissons_ratio);
117 3.0 * _bulk_modulus * (1.0 - 2.0 * _poissons_ratio) / (2.0 * (1.0 + _poissons_ratio));
118 elas_mod = 3 * _bulk_modulus * (1 - 2 * _poissons_ratio);
119 poiss_rat = _poissons_ratio;
120 _effective_stiffness_local =
121 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
122 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
124 else if (_lambda_set && _bulk_modulus_set)
126 iso_const[0] = _lambda;
127 iso_const[1] = 3.0 * (_bulk_modulus - _lambda) / 2.0;
128 elas_mod = (9 * _bulk_modulus * (_bulk_modulus - _lambda)) / (3 * _bulk_modulus - _lambda);
129 poiss_rat = (_lambda) / ((3 * _bulk_modulus - _lambda));
130 _effective_stiffness_local =
131 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
132 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
134 else if (_shear_modulus_set && _youngs_modulus_set)
136 iso_const[0] = _shear_modulus * (_youngs_modulus - 2.0 * _shear_modulus) /
137 (3.0 * _shear_modulus - _youngs_modulus);
138 iso_const[1] = _shear_modulus;
139 elas_mod = _youngs_modulus;
140 poiss_rat = (_youngs_modulus - 2 * _shear_modulus) / (2 * _shear_modulus);
141 _effective_stiffness_local =
142 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
143 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
145 else if (_shear_modulus_set && _poissons_ratio_set)
147 iso_const[0] = 2.0 * _shear_modulus * _poissons_ratio / (1.0 - 2.0 * _poissons_ratio);
148 iso_const[1] = _shear_modulus;
149 elas_mod = (2 * _shear_modulus * (1 + _poissons_ratio));
150 poiss_rat = (_poissons_ratio);
151 _effective_stiffness_local =
152 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
153 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
155 else if (_youngs_modulus_set && _bulk_modulus_set)
157 iso_const[0] = 3.0 * _bulk_modulus * (3.0 * _bulk_modulus - _youngs_modulus) /
158 (9.0 * _bulk_modulus - _youngs_modulus);
159 iso_const[1] = 3.0 * _bulk_modulus * _youngs_modulus / (9.0 * _bulk_modulus - _youngs_modulus);
160 elas_mod = (_youngs_modulus);
161 poiss_rat = (3 * _bulk_modulus - _youngs_modulus) / (6 * _bulk_modulus);
162 _effective_stiffness_local =
163 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
164 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
166 else if (_lambda_set && _poissons_ratio_set)
168 iso_const[0] = _lambda;
169 iso_const[1] = _lambda * (1.0 - 2.0 * _poissons_ratio) / (2.0 * _poissons_ratio);
170 elas_mod = (_lambda * (1 + _poissons_ratio) * (1 - 2 * _poissons_ratio)) / (_poissons_ratio);
171 poiss_rat = (_poissons_ratio);
172 _effective_stiffness_local =
173 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
174 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
176 else if (_lambda_set && _youngs_modulus_set)
178 iso_const[0] = _lambda;
179 iso_const[1] = (_youngs_modulus - 3.0 * _lambda +
180 std::sqrt(_youngs_modulus * _youngs_modulus + 9.0 * _lambda * _lambda +
181 2.0 * _youngs_modulus * _lambda)) /
183 elas_mod = (_youngs_modulus);
184 poiss_rat = (2 * _lambda) / (_youngs_modulus + _lambda +
185 std::sqrt(std::pow(_youngs_modulus, 2) + 9 * std::pow(_lambda, 2) +
186 2 * _youngs_modulus * _lambda));
187 _effective_stiffness_local =
188 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
189 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
192 mooseError(
"Incorrect combination of elastic properties in ComputeIsotropicElasticityTensor.");
195 _Cijkl.fillFromInputVector(iso_const, T::symmetric_isotropic);