www.mooseframework.org
LinearGeneralAnisotropicMaterial.C
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 // Original class author: A.M. Jokisaari
11 // O. Heinonen, et al. at ANL also have contributed significantly - thanks guys!
12 
14 #include <ostream>
15 
23 
24 template <>
25 InputParameters
27 {
28  InputParameters params = validParams<SolidMechanicsMaterial>();
29  params.addRequiredParam<std::vector<Real>>("C_matrix", "Stiffness tensor for matrix");
30  params.addRequiredParam<bool>("all_21",
31  "True if all 21 independent values are given; else false "
32  "indicates only 9 values given (C11, C12, C13, C22, C23, "
33  "C33, C44, C55, C66.");
34  params.addParam<Real>("euler_angle_1", 0.0, "Euler angle in direction 1");
35  params.addParam<Real>("euler_angle_2", 0.0, "Euler angle in direction 2");
36  params.addParam<Real>("euler_angle_3", 0.0, "Euler angle in direction 3");
37 
38  return params;
39 }
40 
42  const InputParameters & parameters)
43  : SolidMechanicsMaterial(parameters),
44  _euler_angle_1(getParam<Real>("euler_angle_1")),
45  _euler_angle_2(getParam<Real>("euler_angle_2")),
46  _euler_angle_3(getParam<Real>("euler_angle_3")),
47  _Cijkl_matrix_vector(getParam<std::vector<Real>>("C_matrix")),
48  _all_21(getParam<bool>("all_21")),
49  _Cijkl_matrix()
50 {
51  // fill in the local tensors from the input vector information
53 
54  // rotate the C_ijkl matrix
56 
57  // debugging
58  /*_Cijkl_matrix.show_r_matrix();
59  _Cijkl_matrix.show_dt_matrix();
60  if (libMesh::on_command_line("--debug") || libMesh::on_command_line("--debug-elasticity-Cijkl"))
61  {
62  libMesh::out << "Material " << this->name() << " on mesh block " << this->blockID() << " has
63  _Cijkl_matrix:\n" << _Cijkl_matrix << "\n";
64  }*/
65 }
66 
67 void
69 {
73 }
74 
75 void
77 {
78  // Fill in the matrix stiffness material property
81 }
82 
83 void
85 {
87  _grad_disp_y[_qp](1),
88  _grad_disp_z[_qp](2),
89  0.5 * (_grad_disp_x[_qp](1) + _grad_disp_y[_qp](0)),
90  0.5 * (_grad_disp_y[_qp](2) + _grad_disp_z[_qp](1)),
91  0.5 * (_grad_disp_z[_qp](0) + _grad_disp_x[_qp](2)));
92 }
93 
94 void
96 {
97  // stress = C * e
98  _stress[_qp] = _elasticity_tensor[_qp] * _elastic_strain[_qp];
99 }
LinearGeneralAnisotropicMaterial::LinearGeneralAnisotropicMaterial
LinearGeneralAnisotropicMaterial(const InputParameters &parameters)
Definition: LinearGeneralAnisotropicMaterial.C:41
SolidMechanicsMaterial::_Jacobian_mult
MaterialProperty< SymmElasticityTensor > & _Jacobian_mult
Definition: SolidMechanicsMaterial.h:47
LinearGeneralAnisotropicMaterial::_euler_angle_1
Real _euler_angle_1
Definition: LinearGeneralAnisotropicMaterial.h:47
validParams< LinearGeneralAnisotropicMaterial >
InputParameters validParams< LinearGeneralAnisotropicMaterial >()
Definition: LinearGeneralAnisotropicMaterial.C:26
LinearGeneralAnisotropicMaterial
Definition: LinearGeneralAnisotropicMaterial.h:32
LinearGeneralAnisotropicMaterial::_all_21
bool _all_21
Definition: LinearGeneralAnisotropicMaterial.h:55
LinearGeneralAnisotropicMaterial::computeQpStrain
virtual void computeQpStrain()
Definition: LinearGeneralAnisotropicMaterial.C:84
LinearGeneralAnisotropicMaterial::computeQpProperties
virtual void computeQpProperties()
Definition: LinearGeneralAnisotropicMaterial.C:68
SolidMechanicsMaterial::_elasticity_tensor
MaterialProperty< SymmElasticityTensor > & _elasticity_tensor
Definition: SolidMechanicsMaterial.h:46
SymmAnisotropicElasticityTensor::rotate
virtual void rotate(const Real a1, const Real a2, const Real a3)
Perform rotation around three axes.
Definition: SymmAnisotropicElasticityTensor.C:144
registerMooseObject
registerMooseObject("SolidMechanicsApp", LinearGeneralAnisotropicMaterial)
LinearGeneralAnisotropicMaterial handles a fully anisotropic, single-crystal material's elastic const...
validParams< SolidMechanicsMaterial >
InputParameters validParams< SolidMechanicsMaterial >()
Definition: SolidMechanicsMaterial.C:17
SolidMechanicsMaterial::_elastic_strain
MaterialProperty< SymmTensor > & _elastic_strain
Definition: SolidMechanicsMaterial.h:55
LinearGeneralAnisotropicMaterial::_Cijkl_matrix_vector
std::vector< Real > _Cijkl_matrix_vector
Definition: LinearGeneralAnisotropicMaterial.h:52
SolidMechanicsMaterial::_stress
MaterialProperty< SymmTensor > & _stress
Definition: SolidMechanicsMaterial.h:45
SolidMechanicsMaterial::_grad_disp_y
const VariableGradient & _grad_disp_y
Definition: SolidMechanicsMaterial.h:34
SolidMechanicsMaterial
SolidMechanics material for use in simple applications that don't need material properties.
Definition: SolidMechanicsMaterial.h:25
LinearGeneralAnisotropicMaterial::_euler_angle_3
Real _euler_angle_3
Definition: LinearGeneralAnisotropicMaterial.h:49
SolidMechanicsMaterial::_grad_disp_z
const VariableGradient & _grad_disp_z
Definition: SolidMechanicsMaterial.h:35
LinearGeneralAnisotropicMaterial::computeQpElasticityTensor
virtual void computeQpElasticityTensor()
Definition: LinearGeneralAnisotropicMaterial.C:76
SymmTensor
Definition: SymmTensor.h:21
LinearGeneralAnisotropicMaterial.h
LinearGeneralAnisotropicMaterial::_euler_angle_2
Real _euler_angle_2
Definition: LinearGeneralAnisotropicMaterial.h:48
SolidMechanicsMaterial::_grad_disp_x
const VariableGradient & _grad_disp_x
Definition: SolidMechanicsMaterial.h:33
LinearGeneralAnisotropicMaterial::computeQpStress
virtual void computeQpStress()
Definition: LinearGeneralAnisotropicMaterial.C:95
SymmElasticityTensor::fillFromInputVector
void fillFromInputVector(std::vector< Real > input, bool all)
Definition: SymmElasticityTensor.C:384
LinearGeneralAnisotropicMaterial::_Cijkl_matrix
SymmAnisotropicElasticityTensor _Cijkl_matrix
Definition: LinearGeneralAnisotropicMaterial.h:58