www.mooseframework.org
LinearGeneralAnisotropicMaterial.C
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
7 // Original class author: A.M. Jokisaari
8 // O. Heinonen, et al. at ANL also have contributed significantly - thanks guys!
9 
11 #include <ostream>
12 
19 template <>
20 InputParameters
22 {
23  InputParameters params = validParams<SolidMechanicsMaterial>();
24  params.addRequiredParam<std::vector<Real>>("C_matrix", "Stiffness tensor for matrix");
25  params.addRequiredParam<bool>("all_21",
26  "True if all 21 independent values are given; else false "
27  "indicates only 9 values given (C11, C12, C13, C22, C23, "
28  "C33, C44, C55, C66.");
29  params.addParam<Real>("euler_angle_1", 0.0, "Euler angle in direction 1");
30  params.addParam<Real>("euler_angle_2", 0.0, "Euler angle in direction 2");
31  params.addParam<Real>("euler_angle_3", 0.0, "Euler angle in direction 3");
32 
33  return params;
34 }
35 
37  const InputParameters & parameters)
38  : SolidMechanicsMaterial(parameters),
39  _euler_angle_1(getParam<Real>("euler_angle_1")),
40  _euler_angle_2(getParam<Real>("euler_angle_2")),
41  _euler_angle_3(getParam<Real>("euler_angle_3")),
42  _Cijkl_matrix_vector(getParam<std::vector<Real>>("C_matrix")),
43  _all_21(getParam<bool>("all_21")),
44  _Cijkl_matrix()
45 {
46  // fill in the local tensors from the input vector information
48 
49  // rotate the C_ijkl matrix
51 
52  // debugging
53  /*_Cijkl_matrix.show_r_matrix();
54  _Cijkl_matrix.show_dt_matrix();
55  if (libMesh::on_command_line("--debug") || libMesh::on_command_line("--debug-elasticity-Cijkl"))
56  {
57  libMesh::out << "Material " << this->name() << " on mesh block " << this->blockID() << " has
58  _Cijkl_matrix:\n" << _Cijkl_matrix << "\n";
59  }*/
60 }
61 
62 void
64 {
68 }
69 
70 void
72 {
73  // Fill in the matrix stiffness material property
76 }
77 
78 void
80 {
82  _grad_disp_y[_qp](1),
83  _grad_disp_z[_qp](2),
84  0.5 * (_grad_disp_x[_qp](1) + _grad_disp_y[_qp](0)),
85  0.5 * (_grad_disp_y[_qp](2) + _grad_disp_z[_qp](1)),
86  0.5 * (_grad_disp_z[_qp](0) + _grad_disp_x[_qp](2)));
87 }
88 
89 void
91 {
92  // stress = C * e
93  _stress[_qp] = _elasticity_tensor[_qp] * _elastic_strain[_qp];
94 }
virtual void rotate(const Real a1, const Real a2, const Real a3)
Perform rotation around three axes.
SolidMechanics material for use in simple applications that don&#39;t need material properties.
MaterialProperty< SymmTensor > & _elastic_strain
const VariableGradient & _grad_disp_y
const VariableGradient & _grad_disp_x
InputParameters validParams< LinearGeneralAnisotropicMaterial >()
LinearGeneralAnisotropicMaterial handles a fully anisotropic, single-crystal material&#39;s elastic const...
MaterialProperty< SymmElasticityTensor > & _elasticity_tensor
SymmAnisotropicElasticityTensor _Cijkl_matrix
InputParameters validParams< SolidMechanicsMaterial >()
void fillFromInputVector(std::vector< Real > input, bool all)
MaterialProperty< SymmTensor > & _stress
const VariableGradient & _grad_disp_z
MaterialProperty< SymmElasticityTensor > & _Jacobian_mult
LinearGeneralAnisotropicMaterial(const InputParameters &parameters)