www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
LinearAnisotropicMaterial Class Reference

LinearIsotropic material for use in simple applications that don't need material properties. More...

#include <LinearAnisotropicMaterial.h>

Inheritance diagram for LinearAnisotropicMaterial:
[legend]

Public Member Functions

 LinearAnisotropicMaterial (const InputParameters &parameters)
 

Protected Member Functions

virtual void computeProperties ()
 
virtual void computeStress (const SymmTensor &strain, SymmTensor &stress)
 
virtual void computeStrain (const SymmTensor &total_strain, SymmTensor &elastic_strain)
 Will always be passed to full symmetric strain tensor. More...
 
virtual Real computeAlpha ()
 
virtual void initQpStatefulProperties () override
 
template<typename T >
MaterialProperty< T > & createProperty (const std::string &prop_name)
 
template<typename T >
const MaterialProperty< T > & getPropertyOld (const std::string &prop_name)
 

Protected Attributes

Real _material_constant_c11
 
Real _material_constant_c12
 
Real _material_constant_c44
 
Real _euler_angle_1
 
Real _euler_angle_2
 
Real _euler_angle_3
 
Real _youngs_modulus
 
Real _poissons_ratio
 
Real _t_ref
 
Real _alpha
 
SymmElasticityTensor_local_elasticity_tensor
 
Real _pi
 
Real _tol
 
const std::string _appended_property_name
 
const VariableGradient & _grad_disp_x
 
const VariableGradient & _grad_disp_y
 
const VariableGradient & _grad_disp_z
 
bool _has_temp
 
const VariableValue & _temp
 
bool _has_c
 
const VariableValue & _c
 
std::vector< VolumetricModel * > _volumetric_models
 
MaterialProperty< SymmTensor > & _stress
 
MaterialProperty< SymmElasticityTensor > & _elasticity_tensor
 
MaterialProperty< SymmElasticityTensor > & _Jacobian_mult
 
SymmTensor _d_strain_dT
 
MaterialProperty< SymmTensor > & _d_stress_dT
 
MaterialProperty< SymmTensor > & _elastic_strain
 

Detailed Description

LinearIsotropic material for use in simple applications that don't need material properties.

Definition at line 22 of file LinearAnisotropicMaterial.h.

Constructor & Destructor Documentation

LinearAnisotropicMaterial::LinearAnisotropicMaterial ( const InputParameters &  parameters)

Definition at line 26 of file LinearAnisotropicMaterial.C.

27  : LinearIsotropicMaterial(parameters),
28  _material_constant_c11(getParam<Real>("material_constant_c11")),
29  _material_constant_c12(getParam<Real>("material_constant_c12")),
30  _material_constant_c44(getParam<Real>("material_constant_c44")),
31  _euler_angle_1(getParam<Real>("euler_angle_1")),
32  _euler_angle_2(getParam<Real>("euler_angle_2")),
33  _euler_angle_3(getParam<Real>("euler_angle_3"))
34 {
36  aniso_elasticity_tensor->setMaterialConstantc11(_material_constant_c11);
37  aniso_elasticity_tensor->setMaterialConstantc12(_material_constant_c12);
38  aniso_elasticity_tensor->setMaterialConstantc44(_material_constant_c44);
39 
40  /* AMJ: I believe I have identified a logic bug with using inherited classes (e.g.,
41  LinearAnisotropicMaterial and non-zero Euler angles in conjunction with/inheriting from
42  LinearIsotropicMaterial. When using Euler angles = 0.0, no problem occurs. However,
43  using Euler angles != zero causes the _elasticity_tensor[_qp]=*_local_elasticity_tensor
44  to rotate with every single quadrature point, every time the Material class is
45  computed. This is due to the _local_elasticity_tensor->calculate(_qp) call. Because
46  we are dereferencing the _local_elasticity_tensor, we are actually changing the
47  original elasticity tensor that is supplied (from the input or material class
48  construction, etc). I've attempted to fix this by moving the relevant information
49  into a local copy_local_tensor variable, but (perhaps because I don't know enough
50  C++) I cannot get this to work in LinearIsotropicMaterial for an arbitrary derived class that
51  may use different derived kinds of Symm***ElasticityTensors. So... good luck, Chuck.
52  I might not be able to fix the problem, but I think I've identified it correctly. */
53 
54  aniso_elasticity_tensor->setFirstEulerAngle(_euler_angle_1);
55  aniso_elasticity_tensor->setSecondEulerAngle(_euler_angle_2);
56  aniso_elasticity_tensor->setThirdEulerAngle(_euler_angle_3);
57 
59  _local_elasticity_tensor = aniso_elasticity_tensor;
60 }
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.
LinearIsotropicMaterial(const InputParameters &parameters)
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.
SymmElasticityTensor * _local_elasticity_tensor

Member Function Documentation

Real LinearIsotropicMaterial::computeAlpha ( )
protectedvirtualinherited

Definition at line 139 of file LinearIsotropicMaterial.C.

Referenced by LinearIsotropicMaterial::computeProperties().

140 {
141  return _alpha;
142 }
void LinearIsotropicMaterial::computeProperties ( )
protectedvirtualinherited

Definition at line 50 of file LinearIsotropicMaterial.C.

51 {
52  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
53  {
54  Real alpha = computeAlpha();
55 
57 
59 
60  SymmTensor strn(_grad_disp_x[_qp](0),
61  _grad_disp_y[_qp](1),
62  _grad_disp_z[_qp](2),
63  0.5 * (_grad_disp_x[_qp](1) + _grad_disp_y[_qp](0)),
64  0.5 * (_grad_disp_y[_qp](2) + _grad_disp_z[_qp](1)),
65  0.5 * (_grad_disp_z[_qp](0) + _grad_disp_x[_qp](2)));
66 
67  // Add in Isotropic Thermal Strain
68  if (_has_temp)
69  {
70  Real isotropic_strain = alpha * (_temp[_qp] - _t_ref);
71 
72  strn.addDiag(-isotropic_strain);
73 
75  _d_strain_dT.addDiag(-alpha);
76  }
77 
78  SymmTensor strain(strn);
79 
80  computeStress(strain, _stress[_qp]);
81  }
82 }
const VariableValue & _temp
const VariableGradient & _grad_disp_y
const VariableGradient & _grad_disp_x
MaterialProperty< SymmElasticityTensor > & _elasticity_tensor
void zero()
Definition: SymmTensor.h:273
void calculate(unsigned int qp)
Public function that will be called whenever the values for this matrix need to be filled in...
MaterialProperty< SymmTensor > & _stress
const VariableGradient & _grad_disp_z
void addDiag(Real value)
Definition: SymmTensor.h:279
SymmElasticityTensor * _local_elasticity_tensor
virtual void computeStress(const SymmTensor &strain, SymmTensor &stress)
void LinearIsotropicMaterial::computeStrain ( const SymmTensor total_strain,
SymmTensor elastic_strain 
)
protectedvirtualinherited

Will always be passed to full symmetric strain tensor.

What should come out is a modified strain tensor.

Definition at line 113 of file LinearIsotropicMaterial.C.

Referenced by LinearIsotropicMaterial::computeStress().

114 {
115 
116  // Multiplier that zeros out stiffness
117  // Real h = (1.0 - _c[_qp]*_c[_qp]);
118  /*Real vl = -0.05 + _c[_qp]*1.1;
119  if (vl < 0.0)
120  vl = 0.0;
121  if (vl > 1.0)
122  vl = 1.0;*/
123 
124  Real h = (1.0 + std::cos(_pi * _c[_qp])) / 2.0;
125  if (h < _tol)
126  h = _tol;
127 
128  elastic_strain = total_strain;
129  // Jacobian multiplier of the stress
131 
133  // d_stress_dT *= _dt;
134  d_stress_dT *= h;
135  _d_stress_dT[_qp] = d_stress_dT;
136 }
const VariableValue & _c
MaterialProperty< SymmElasticityTensor > & _Jacobian_mult
SymmElasticityTensor * _local_elasticity_tensor
MaterialProperty< SymmTensor > & _d_stress_dT
void LinearIsotropicMaterial::computeStress ( const SymmTensor strain,
SymmTensor stress 
)
protectedvirtualinherited

Definition at line 85 of file LinearIsotropicMaterial.C.

Referenced by LinearIsotropicMaterial::computeProperties().

86 {
87  // Add in any extra strain components
88  SymmTensor elastic_strain;
89 
90  computeStrain(strain, elastic_strain);
91 
92  // Multiplier that zeros out stiffness
93  // Real h = (1.0 - _c[_qp]*_c[_qp]);
94  /*Real vl = -0.05 + _c[_qp]*1.1;
95  if (vl < 0.0)
96  vl = 0.0;
97  if (vl > 1.0)
98  vl = 1.0;*/
99 
100  Real h = (1.0 + std::cos(_pi * _c[_qp])) / 2.0;
101  if (h < _tol)
102  h = _tol;
103 
104  // Save that off as the elastic strain
105  _elastic_strain[_qp] = elastic_strain;
106 
107  // Create column vector
108  // C * e
109  stress = (*_local_elasticity_tensor) * h * elastic_strain;
110 }
const VariableValue & _c
MaterialProperty< SymmTensor > & _elastic_strain
virtual void computeStrain(const SymmTensor &total_strain, SymmTensor &elastic_strain)
Will always be passed to full symmetric strain tensor.
template<typename T >
MaterialProperty<T>& SolidMechanicsMaterial::createProperty ( const std::string &  prop_name)
inlineprotectedinherited

Definition at line 56 of file SolidMechanicsMaterial.h.

57  {
58  std::string name(prop_name + _appended_property_name);
59  return declareProperty<T>(name);
60  }
const std::string _appended_property_name
template<typename T >
const MaterialProperty<T>& SolidMechanicsMaterial::getPropertyOld ( const std::string &  prop_name)
inlineprotectedinherited

Definition at line 63 of file SolidMechanicsMaterial.h.

64  {
65  std::string name(prop_name + _appended_property_name);
66  return getMaterialPropertyOld<T>(name);
67  }
const std::string _appended_property_name
void SolidMechanicsMaterial::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Definition at line 30 of file SolidMechanicsMaterial.C.

31 {
32 }

Member Data Documentation

Real LinearIsotropicMaterial::_alpha
protectedinherited

Definition at line 46 of file LinearIsotropicMaterial.h.

Referenced by LinearIsotropicMaterial::computeAlpha().

const std::string SolidMechanicsMaterial::_appended_property_name
protectedinherited

Definition at line 30 of file SolidMechanicsMaterial.h.

const VariableValue& SolidMechanicsMaterial::_c
protectedinherited
SymmTensor SolidMechanicsMaterial::_d_strain_dT
protectedinherited
MaterialProperty<SymmTensor>& SolidMechanicsMaterial::_d_stress_dT
protectedinherited

Definition at line 51 of file SolidMechanicsMaterial.h.

Referenced by LinearIsotropicMaterial::computeStrain().

MaterialProperty<SymmTensor>& SolidMechanicsMaterial::_elastic_strain
protectedinherited
MaterialProperty<SymmElasticityTensor>& SolidMechanicsMaterial::_elasticity_tensor
protectedinherited
Real LinearAnisotropicMaterial::_euler_angle_1
protected

Definition at line 31 of file LinearAnisotropicMaterial.h.

Referenced by LinearAnisotropicMaterial().

Real LinearAnisotropicMaterial::_euler_angle_2
protected

Definition at line 32 of file LinearAnisotropicMaterial.h.

Referenced by LinearAnisotropicMaterial().

Real LinearAnisotropicMaterial::_euler_angle_3
protected

Definition at line 33 of file LinearAnisotropicMaterial.h.

Referenced by LinearAnisotropicMaterial().

const VariableGradient& SolidMechanicsMaterial::_grad_disp_x
protectedinherited
const VariableGradient& SolidMechanicsMaterial::_grad_disp_y
protectedinherited
const VariableGradient& SolidMechanicsMaterial::_grad_disp_z
protectedinherited
bool SolidMechanicsMaterial::_has_c
protectedinherited

Definition at line 38 of file SolidMechanicsMaterial.h.

bool SolidMechanicsMaterial::_has_temp
protectedinherited

Definition at line 35 of file SolidMechanicsMaterial.h.

Referenced by LinearIsotropicMaterial::computeProperties().

MaterialProperty<SymmElasticityTensor>& SolidMechanicsMaterial::_Jacobian_mult
protectedinherited
SymmElasticityTensor* LinearIsotropicMaterial::_local_elasticity_tensor
protectedinherited
Real LinearAnisotropicMaterial::_material_constant_c11
protected

Definition at line 28 of file LinearAnisotropicMaterial.h.

Referenced by LinearAnisotropicMaterial().

Real LinearAnisotropicMaterial::_material_constant_c12
protected

Definition at line 29 of file LinearAnisotropicMaterial.h.

Referenced by LinearAnisotropicMaterial().

Real LinearAnisotropicMaterial::_material_constant_c44
protected

Definition at line 30 of file LinearAnisotropicMaterial.h.

Referenced by LinearAnisotropicMaterial().

Real LinearIsotropicMaterial::_pi
protectedinherited
Real LinearIsotropicMaterial::_poissons_ratio
protectedinherited
MaterialProperty<SymmTensor>& SolidMechanicsMaterial::_stress
protectedinherited
Real LinearIsotropicMaterial::_t_ref
protectedinherited
const VariableValue& SolidMechanicsMaterial::_temp
protectedinherited

Definition at line 36 of file SolidMechanicsMaterial.h.

Referenced by LinearIsotropicMaterial::computeProperties().

Real LinearIsotropicMaterial::_tol
protectedinherited
std::vector<VolumetricModel *> SolidMechanicsMaterial::_volumetric_models
protectedinherited

Definition at line 41 of file SolidMechanicsMaterial.h.

Real LinearIsotropicMaterial::_youngs_modulus
protectedinherited

The documentation for this class was generated from the following files: