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

ComputeIsotropicElasticityTensor defines an elasticity tensor material for isotropic materials. More...

#include <ComputeIsotropicElasticityTensor.h>

Inheritance diagram for ComputeIsotropicElasticityTensor:
[legend]

Public Member Functions

 ComputeIsotropicElasticityTensor (const InputParameters &parameters)
 
bool hasGuarantee (const MaterialPropertyName &prop_name, Guarantee guarantee)
 

Protected Member Functions

virtual void computeQpElasticityTensor () override
 
virtual void computeQpProperties ()
 
void issueGuarantee (const MaterialPropertyName &prop_name, Guarantee guarantee)
 
void revokeGuarantee (const MaterialPropertyName &prop_name, Guarantee guarantee)
 

Protected Attributes

bool _bulk_modulus_set
 Elastic constants. More...
 
bool _lambda_set
 
bool _poissons_ratio_set
 
bool _shear_modulus_set
 
bool _youngs_modulus_set
 
Real _bulk_modulus
 
Real _lambda
 
Real _poissons_ratio
 
Real _shear_modulus
 
Real _youngs_modulus
 
RankFourTensor _Cijkl
 Individual elasticity tensor. More...
 
std::string _base_name
 
std::string _elasticity_tensor_name
 
MaterialProperty< RankFourTensor > & _elasticity_tensor
 
Function *const _prefactor_function
 prefactor function to multiply the elasticity tensor with More...
 

Detailed Description

ComputeIsotropicElasticityTensor defines an elasticity tensor material for isotropic materials.

Definition at line 16 of file ComputeIsotropicElasticityTensor.h.

Constructor & Destructor Documentation

ComputeIsotropicElasticityTensor::ComputeIsotropicElasticityTensor ( const InputParameters &  parameters)

Definition at line 23 of file ComputeIsotropicElasticityTensor.C.

25  : ComputeElasticityTensorBase(parameters),
26  _bulk_modulus_set(parameters.isParamValid("bulk_modulus")),
27  _lambda_set(parameters.isParamValid("lambda")),
28  _poissons_ratio_set(parameters.isParamValid("poissons_ratio")),
29  _shear_modulus_set(parameters.isParamValid("shear_modulus")),
30  _youngs_modulus_set(parameters.isParamValid("youngs_modulus")),
31  _bulk_modulus(_bulk_modulus_set ? getParam<Real>("bulk_modulus") : -1),
32  _lambda(_lambda_set ? getParam<Real>("lambda") : -1),
33  _poissons_ratio(_poissons_ratio_set ? getParam<Real>("poissons_ratio") : -1),
34  _shear_modulus(_shear_modulus_set ? getParam<Real>("shear_modulus") : -1),
35  _youngs_modulus(_youngs_modulus_set ? getParam<Real>("youngs_modulus") : -1)
36 {
37  unsigned int num_elastic_constants = _bulk_modulus_set + _lambda_set + _poissons_ratio_set +
39  if (num_elastic_constants != 2)
40  mooseError("Exactly two elastic constants must be defined for material '" + name() + "'.");
41 
42  // all tensors created by this class are always isotropic
44  if (!isParamValid("elasticity_tensor_prefactor"))
46 
47  if (_bulk_modulus_set && _bulk_modulus <= 0.0)
48  mooseError("Bulk modulus must be positive in material '" + name() + "'.");
49 
50  if (_poissons_ratio_set && (_poissons_ratio <= -1.0 || _poissons_ratio >= 0.5))
51  mooseError("Poissons ratio must be greater than -1 and less than 0.5 in "
52  "material '" +
53  name() + "'.");
54 
56  mooseError("Shear modulus must not be negative in material '" + name() + "'.");
57 
58  if (_youngs_modulus_set && _youngs_modulus <= 0.0)
59  mooseError("Youngs modulus must be positive in material '" + name() + "'.");
60 
61  if (_youngs_modulus_set && _poissons_ratio_set)
62  {
63  _Cijkl.fillSymmetricIsotropicEandNu(_youngs_modulus, _poissons_ratio);
64  return;
65  }
66 
67  std::vector<Real> iso_const(2);
68 
70  {
71  iso_const[0] = _lambda;
72  iso_const[1] = _shear_modulus;
73  }
75  {
76  iso_const[0] = _bulk_modulus - 2.0 / 3.0 * _shear_modulus;
77  iso_const[1] = _shear_modulus;
78  }
80  {
81  iso_const[0] = 3.0 * _bulk_modulus * _poissons_ratio / (1.0 + _poissons_ratio);
82  iso_const[1] =
83  3.0 * _bulk_modulus * (1.0 - 2.0 * _poissons_ratio) / (2.0 * (1.0 + _poissons_ratio));
84  }
85  else if (_lambda_set && _bulk_modulus_set)
86  {
87  iso_const[0] = _lambda;
88  iso_const[1] = 3.0 * (_bulk_modulus - _lambda) / 2.0;
89  }
90  else if (_shear_modulus_set && _youngs_modulus_set)
91  {
92  iso_const[0] = _shear_modulus * (_youngs_modulus - 2.0 * _shear_modulus) /
94  iso_const[1] = _shear_modulus;
95  }
97  {
98  iso_const[0] = 2.0 * _shear_modulus * _poissons_ratio / (1.0 - 2.0 * _poissons_ratio);
99  iso_const[1] = _shear_modulus;
100  }
101  else if (_youngs_modulus_set && _bulk_modulus_set)
102  {
103  iso_const[0] = 3.0 * _bulk_modulus * (3.0 * _bulk_modulus - _youngs_modulus) /
104  (9.0 * _bulk_modulus - _youngs_modulus);
105  iso_const[1] = 3.0 * _bulk_modulus * _youngs_modulus / (9.0 * _bulk_modulus - _youngs_modulus);
106  }
107  else if (_lambda_set && _poissons_ratio_set)
108  {
109  iso_const[0] = _lambda;
110  iso_const[1] = _lambda * (1.0 - 2.0 * _poissons_ratio) / (2.0 * _poissons_ratio);
111  }
112  else if (_lambda_set && _youngs_modulus_set)
113  {
114  iso_const[0] = _lambda;
115  iso_const[1] = (_youngs_modulus - 3.0 * _lambda +
116  std::sqrt(_youngs_modulus * _youngs_modulus + 9.0 * _lambda * _lambda +
117  2.0 * _youngs_modulus * _lambda)) /
118  4.0;
119  }
120  else
121  mooseError("Incorrect combination of elastic properties in ComputeIsotropicElasticityTensor.");
122 
123  // Fill elasticity tensor
124  _Cijkl.fillFromInputVector(iso_const, RankFourTensor::symmetric_isotropic);
125 }
void issueGuarantee(const MaterialPropertyName &prop_name, Guarantee guarantee)
RankFourTensor _Cijkl
Individual elasticity tensor.
ComputeElasticityTensorBase(const InputParameters &parameters)

Member Function Documentation

void ComputeIsotropicElasticityTensor::computeQpElasticityTensor ( )
overrideprotectedvirtual

Implements ComputeElasticityTensorBase.

Definition at line 128 of file ComputeIsotropicElasticityTensor.C.

129 {
130  // Assign elasticity tensor at a given quad point
131  _elasticity_tensor[_qp] = _Cijkl;
132 }
RankFourTensor _Cijkl
Individual elasticity tensor.
MaterialProperty< RankFourTensor > & _elasticity_tensor
void ComputeElasticityTensorBase::computeQpProperties ( )
protectedvirtualinherited

Definition at line 39 of file ComputeElasticityTensorBase.C.

40 {
42 
43  // Multiply by prefactor
45  _elasticity_tensor[_qp] *= _prefactor_function->value(_t, _q_point[_qp]);
46 }
Function *const _prefactor_function
prefactor function to multiply the elasticity tensor with
virtual void computeQpElasticityTensor()=0
MaterialProperty< RankFourTensor > & _elasticity_tensor
bool GuaranteeProvider::hasGuarantee ( const MaterialPropertyName &  prop_name,
Guarantee  guarantee 
)
inherited

Definition at line 14 of file GuaranteeProvider.C.

15 {
16  auto it = _guarantees.find(prop_name);
17  if (it == _guarantees.end())
18  return false;
19 
20  auto it2 = it->second.find(guarantee);
21  return it2 != it->second.end();
22 }
std::map< MaterialPropertyName, std::set< Guarantee > > _guarantees
void GuaranteeProvider::issueGuarantee ( const MaterialPropertyName &  prop_name,
Guarantee  guarantee 
)
protectedinherited
void GuaranteeProvider::revokeGuarantee ( const MaterialPropertyName &  prop_name,
Guarantee  guarantee 
)
protectedinherited

Definition at line 32 of file GuaranteeProvider.C.

Referenced by ComputeElasticityTensorCP::ComputeElasticityTensorCP().

33 {
34  auto it = _guarantees.find(prop_name);
35  if (it != _guarantees.end())
36  it->second.erase(guarantee);
37 }
std::map< MaterialPropertyName, std::set< Guarantee > > _guarantees

Member Data Documentation

std::string ComputeElasticityTensorBase::_base_name
protectedinherited
Real ComputeIsotropicElasticityTensor::_bulk_modulus
protected

Definition at line 31 of file ComputeIsotropicElasticityTensor.h.

Referenced by ComputeIsotropicElasticityTensor().

bool ComputeIsotropicElasticityTensor::_bulk_modulus_set
protected

Elastic constants.

Definition at line 25 of file ComputeIsotropicElasticityTensor.h.

Referenced by ComputeIsotropicElasticityTensor().

RankFourTensor ComputeIsotropicElasticityTensor::_Cijkl
protected

Individual elasticity tensor.

Definition at line 38 of file ComputeIsotropicElasticityTensor.h.

Referenced by ComputeIsotropicElasticityTensor(), and computeQpElasticityTensor().

MaterialProperty<RankFourTensor>& ComputeElasticityTensorBase::_elasticity_tensor
protectedinherited
std::string ComputeElasticityTensorBase::_elasticity_tensor_name
protectedinherited
Real ComputeIsotropicElasticityTensor::_lambda
protected

Definition at line 32 of file ComputeIsotropicElasticityTensor.h.

Referenced by ComputeIsotropicElasticityTensor().

bool ComputeIsotropicElasticityTensor::_lambda_set
protected

Definition at line 26 of file ComputeIsotropicElasticityTensor.h.

Referenced by ComputeIsotropicElasticityTensor().

Real ComputeIsotropicElasticityTensor::_poissons_ratio
protected

Definition at line 33 of file ComputeIsotropicElasticityTensor.h.

Referenced by ComputeIsotropicElasticityTensor().

bool ComputeIsotropicElasticityTensor::_poissons_ratio_set
protected

Definition at line 27 of file ComputeIsotropicElasticityTensor.h.

Referenced by ComputeIsotropicElasticityTensor().

Function* const ComputeElasticityTensorBase::_prefactor_function
protectedinherited

prefactor function to multiply the elasticity tensor with

Definition at line 34 of file ComputeElasticityTensorBase.h.

Referenced by ComputeLayeredCosseratElasticityTensor::computeQpElasticityTensor(), and ComputeElasticityTensorBase::computeQpProperties().

Real ComputeIsotropicElasticityTensor::_shear_modulus
protected

Definition at line 34 of file ComputeIsotropicElasticityTensor.h.

Referenced by ComputeIsotropicElasticityTensor().

bool ComputeIsotropicElasticityTensor::_shear_modulus_set
protected

Definition at line 28 of file ComputeIsotropicElasticityTensor.h.

Referenced by ComputeIsotropicElasticityTensor().

Real ComputeIsotropicElasticityTensor::_youngs_modulus
protected

Definition at line 35 of file ComputeIsotropicElasticityTensor.h.

Referenced by ComputeIsotropicElasticityTensor().

bool ComputeIsotropicElasticityTensor::_youngs_modulus_set
protected

Definition at line 29 of file ComputeIsotropicElasticityTensor.h.

Referenced by ComputeIsotropicElasticityTensor().


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