www.mooseframework.org
SymmAnisotropicElasticityTensor.h
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 #ifndef SYMMANISOTROPICELASTICITYTENSOR_H
8 #define SYMMANISOTROPICELASTICITYTENSOR_H
9 
10 #include "SymmElasticityTensor.h"
11 
13 {
14 public:
16  SymmAnisotropicElasticityTensor(std::vector<Real> & init_list, bool all_21);
18 
20 
25  void setFirstEulerAngle(const Real a1);
26 
31  void setSecondEulerAngle(const Real a2);
32 
37  void setThirdEulerAngle(const Real a3);
38 
43  void setMaterialConstantc11(const Real c11);
44 
49  void setMaterialConstantc12(const Real c12);
50 
55  void setMaterialConstantc44(const Real c44);
56 
61  virtual void rotate(const Real a1, const Real a2, const Real a3);
62 
67  Real firstEulerAngle();
68 
73  Real secondEulerAngle();
74 
79  Real thirdEulerAngle();
80 
81  // Debugging functions
82  void show_dt_matrix();
83  void show_r_matrix();
84 
85 protected:
86  DenseMatrix<Real> _dmat; // 9 x 9 Material Matrix
87  DenseMatrix<Real> _qdmat; // Rotated Material Matrix
88  DenseMatrix<Real> _dt; // 6 x 6 Material Matrix
89  DenseMatrix<Real> _qdt; // Rotated Material Matrix
90  DenseMatrix<Real> _r; // Rotational Matrix
91  DenseMatrix<Real> _q; // Q = R (dyadic) R
92  DenseMatrix<Real> _qt; // Q Transpose
93  std::vector<Real> _euler_angle; // Stores Euler angeles
94 
95  DenseMatrix<Real> _trans_d6_to_d9;
96  // Transformation matrix from a 6 x 6 to 9 to 9
97 
98  DenseMatrix<Real> _trans_d9_to_d6;
99  // Transformation matrix from a 9 x 9 to 6 x 6
100 
101  Real _c11, _c12, _c44; // Material Constants
102 
103  void form_r_matrix();
111 
116  virtual void calculateEntries(unsigned int qp);
117 };
118 
119 #endif // ANISOTROPICELASTICITYTENSOR_H
virtual void rotate(const Real a1, const Real a2, const Real a3)
Perform rotation around three axes.
This class defines a basic set of capabilities any elasticity tensor should have. ...
virtual void calculateEntries(unsigned int qp)
Fill in the matrix.
void setMaterialConstantc11(const Real c11)
Set the material constant c11; assumes cubic material.
void setMaterialConstantc44(const Real c44)
Set the material constant c44; assumes cubic material.
void setThirdEulerAngle(const Real a3)
Set the third euler angle.
void setSecondEulerAngle(const Real a2)
Set the second euler angle.
void setFirstEulerAngle(const Real a1)
Set the first euler angle.
void setMaterialConstantc12(const Real c12)
Set the material constant c22; assumes cubic material.