www.mooseframework.org
SymmAnisotropicElasticityTensor.h
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 
10 #pragma once
11 
12 #include "SymmElasticityTensor.h"
13 
15 {
16 public:
18  SymmAnisotropicElasticityTensor(std::vector<Real> & init_list, bool all_21);
21 
22  virtual ~SymmAnisotropicElasticityTensor() = default;
23 
28  void setFirstEulerAngle(const Real a1);
29 
34  void setSecondEulerAngle(const Real a2);
35 
40  void setThirdEulerAngle(const Real a3);
41 
46  void setMaterialConstantc11(const Real c11);
47 
52  void setMaterialConstantc12(const Real c12);
53 
58  void setMaterialConstantc44(const Real c44);
59 
64  virtual void rotate(const Real a1, const Real a2, const Real a3);
65 
70  Real firstEulerAngle();
71 
76  Real secondEulerAngle();
77 
82  Real thirdEulerAngle();
83 
84  // Debugging functions
85  void show_dt_matrix();
86  void show_r_matrix();
87 
88 protected:
89  DenseMatrix<Real> _dmat; // 9 x 9 Material Matrix
90  DenseMatrix<Real> _qdmat; // Rotated Material Matrix
91  DenseMatrix<Real> _dt; // 6 x 6 Material Matrix
92  DenseMatrix<Real> _qdt; // Rotated Material Matrix
93  DenseMatrix<Real> _r; // Rotational Matrix
94  DenseMatrix<Real> _q; // Q = R (dyadic) R
95  DenseMatrix<Real> _qt; // Q Transpose
96  std::vector<Real> _euler_angle; // Stores Euler angeles
97 
98  DenseMatrix<Real> _trans_d6_to_d9;
99  // Transformation matrix from a 6 x 6 to 9 to 9
100 
101  DenseMatrix<Real> _trans_d9_to_d6;
102  // Transformation matrix from a 9 x 9 to 6 x 6
103 
104  Real _c11, _c12, _c44; // Material Constants
105 
106  void form_r_matrix();
114 
119  virtual void calculateEntries(unsigned int qp);
120 };
SymmElasticityTensor.h
SymmAnisotropicElasticityTensor::~SymmAnisotropicElasticityTensor
virtual ~SymmAnisotropicElasticityTensor()=default
SymmAnisotropicElasticityTensor::_qt
DenseMatrix< Real > _qt
Definition: SymmAnisotropicElasticityTensor.h:95
SymmAnisotropicElasticityTensor::_qdt
DenseMatrix< Real > _qdt
Definition: SymmAnisotropicElasticityTensor.h:92
SymmAnisotropicElasticityTensor::_r
DenseMatrix< Real > _r
Definition: SymmAnisotropicElasticityTensor.h:93
SymmAnisotropicElasticityTensor::_c44
Real _c44
Definition: SymmAnisotropicElasticityTensor.h:104
SymmAnisotropicElasticityTensor::show_dt_matrix
void show_dt_matrix()
Definition: SymmAnisotropicElasticityTensor.C:395
SymmAnisotropicElasticityTensor::initialize_material_dt_matrix
void initialize_material_dt_matrix()
Definition: SymmAnisotropicElasticityTensor.C:198
SymmAnisotropicElasticityTensor::setMaterialConstantc12
void setMaterialConstantc12(const Real c12)
Set the material constant c22; assumes cubic material.
Definition: SymmAnisotropicElasticityTensor.C:130
SymmAnisotropicElasticityTensor::_dt
DenseMatrix< Real > _dt
Definition: SymmAnisotropicElasticityTensor.h:91
SymmAnisotropicElasticityTensor::setThirdEulerAngle
void setThirdEulerAngle(const Real a3)
Set the third euler angle.
Definition: SymmAnisotropicElasticityTensor.C:99
SymmAnisotropicElasticityTensor::_qdmat
DenseMatrix< Real > _qdmat
Definition: SymmAnisotropicElasticityTensor.h:90
SymmAnisotropicElasticityTensor::rotate
virtual void rotate(const Real a1, const Real a2, const Real a3)
Perform rotation around three axes.
Definition: SymmAnisotropicElasticityTensor.C:144
SymmAnisotropicElasticityTensor::form_transformation_t_matrix
void form_transformation_t_matrix()
Definition: SymmAnisotropicElasticityTensor.C:240
SymmAnisotropicElasticityTensor::SymmAnisotropicElasticityTensor
SymmAnisotropicElasticityTensor()
Definition: SymmAnisotropicElasticityTensor.C:14
SymmElasticityTensor
This class defines a basic set of capabilities any elasticity tensor should have.
Definition: SymmElasticityTensor.h:55
SymmAnisotropicElasticityTensor::operator=
SymmAnisotropicElasticityTensor & operator=(const SymmAnisotropicElasticityTensor &a)=default
SymmAnisotropicElasticityTensor
Definition: SymmAnisotropicElasticityTensor.h:14
SymmAnisotropicElasticityTensor::setFirstEulerAngle
void setFirstEulerAngle(const Real a1)
Set the first euler angle.
Definition: SymmAnisotropicElasticityTensor.C:87
SymmAnisotropicElasticityTensor::show_r_matrix
void show_r_matrix()
Definition: SymmAnisotropicElasticityTensor.C:411
SymmAnisotropicElasticityTensor::form_rotational_q_matrix
void form_rotational_q_matrix()
Definition: SymmAnisotropicElasticityTensor.C:225
SymmAnisotropicElasticityTensor::form_transformed_material_dmat_matrix
void form_transformed_material_dmat_matrix()
Definition: SymmAnisotropicElasticityTensor.C:277
SymmAnisotropicElasticityTensor::_c12
Real _c12
Definition: SymmAnisotropicElasticityTensor.h:104
SymmAnisotropicElasticityTensor::setMaterialConstantc44
void setMaterialConstantc44(const Real c44)
Set the material constant c44; assumes cubic material.
Definition: SymmAnisotropicElasticityTensor.C:137
SymmAnisotropicElasticityTensor::initialize_anisotropic_material_dt_matrix
void initialize_anisotropic_material_dt_matrix()
Definition: SymmAnisotropicElasticityTensor.C:210
SymmAnisotropicElasticityTensor::setSecondEulerAngle
void setSecondEulerAngle(const Real a2)
Set the second euler angle.
Definition: SymmAnisotropicElasticityTensor.C:93
SymmAnisotropicElasticityTensor::_euler_angle
std::vector< Real > _euler_angle
Definition: SymmAnisotropicElasticityTensor.h:96
SymmAnisotropicElasticityTensor::form_r_matrix
void form_r_matrix()
Definition: SymmAnisotropicElasticityTensor.C:171
SymmAnisotropicElasticityTensor::_trans_d6_to_d9
DenseMatrix< Real > _trans_d6_to_d9
Definition: SymmAnisotropicElasticityTensor.h:98
SymmAnisotropicElasticityTensor::secondEulerAngle
Real secondEulerAngle()
Definition: SymmAnisotropicElasticityTensor.C:111
SymmAnisotropicElasticityTensor::_dmat
DenseMatrix< Real > _dmat
Definition: SymmAnisotropicElasticityTensor.h:89
SymmAnisotropicElasticityTensor::thirdEulerAngle
Real thirdEulerAngle()
Definition: SymmAnisotropicElasticityTensor.C:117
SymmAnisotropicElasticityTensor::calculateEntries
virtual void calculateEntries(unsigned int qp)
Fill in the matrix.
Definition: SymmAnisotropicElasticityTensor.C:365
SymmAnisotropicElasticityTensor::firstEulerAngle
Real firstEulerAngle()
Definition: SymmAnisotropicElasticityTensor.C:105
SymmAnisotropicElasticityTensor::_c11
Real _c11
Definition: SymmAnisotropicElasticityTensor.h:104
SymmAnisotropicElasticityTensor::setMaterialConstantc11
void setMaterialConstantc11(const Real c11)
Set the material constant c11; assumes cubic material.
Definition: SymmAnisotropicElasticityTensor.C:123
SymmAnisotropicElasticityTensor::_trans_d9_to_d6
DenseMatrix< Real > _trans_d9_to_d6
Definition: SymmAnisotropicElasticityTensor.h:101
SymmAnisotropicElasticityTensor::_q
DenseMatrix< Real > _q
Definition: SymmAnisotropicElasticityTensor.h:94
SymmAnisotropicElasticityTensor::form_transformed_material_dt_matrix
void form_transformed_material_dt_matrix()
Definition: SymmAnisotropicElasticityTensor.C:311
SymmAnisotropicElasticityTensor::form_rotated_material_qdmat_matrix
void form_rotated_material_qdmat_matrix()
Definition: SymmAnisotropicElasticityTensor.C:349