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

ComputeLayeredCosseratElasticityTensor defines an elasticity tensor and an elastic flexural rigidity tensor for use in simulations with layered Cosserat materials. More...

#include <ComputeLayeredCosseratElasticityTensor.h>

Inheritance diagram for ComputeLayeredCosseratElasticityTensor:
[legend]

Public Member Functions

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

Protected Member Functions

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

Protected Attributes

RankFourTensor _Eijkl
 Conventional elasticity tensor. More...
 
RankFourTensor _Bijkl
 Flexural rigidity tensor. More...
 
RankFourTensor _Cijkl
 Inverse of elasticity tensor. More...
 
MaterialProperty< RankFourTensor > & _elastic_flexural_rigidity_tensor
 Flexural rigidity tensor at the qps. More...
 
MaterialProperty< RankFourTensor > & _compliance
 Compliance tensor (_Eijkl^-1) at the qps. 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

ComputeLayeredCosseratElasticityTensor defines an elasticity tensor and an elastic flexural rigidity tensor for use in simulations with layered Cosserat materials.

The layering direction is assumed to be in the "z" direction.

Definition at line 27 of file ComputeLayeredCosseratElasticityTensor.h.

Constructor & Destructor Documentation

◆ ComputeLayeredCosseratElasticityTensor()

ComputeLayeredCosseratElasticityTensor::ComputeLayeredCosseratElasticityTensor ( const InputParameters &  parameters)

Definition at line 36 of file ComputeLayeredCosseratElasticityTensor.C.

38  : ComputeElasticityTensorBase(parameters),
39  _Eijkl(RankFourTensor()),
40  _Bijkl(RankFourTensor()),
41  _Cijkl(RankFourTensor()),
43  declareProperty<RankFourTensor>("elastic_flexural_rigidity_tensor")),
44  _compliance(declareProperty<RankFourTensor>(_base_name + "compliance_tensor"))
45 {
46  if (!isParamValid("elasticity_tensor_prefactor"))
48 
49  const Real E = getParam<Real>("young");
50  const Real nu = getParam<Real>("poisson");
51  const Real b = getParam<Real>("layer_thickness");
52  const Real kn = getParam<Real>("joint_normal_stiffness");
53  const Real ks = getParam<Real>("joint_shear_stiffness");
54 
55  // shear modulus of solid
56  const Real G = 0.5 * E / (1.0 + nu);
57  // shear modulus of jointed material
58  const Real Gprime = G * b * ks / (b * ks + G);
59 
60  const Real a0000 =
61  (b * kn > 0.0)
62  ? E / (1.0 - nu * nu - Utility::pow<2>(nu * (1.0 + nu)) / (1.0 - nu * nu + E / b / kn))
63  : E / (1.0 - nu * nu);
64  const Real a0011 = nu * a0000 / (1.0 - nu);
65  const Real a2222 =
66  (b * kn > 0.0) ? 1.0 / ((1.0 + nu) * (1.0 - 2.0 * nu) / E / (1.0 - nu) + 1.0 / b / kn) : 0.0;
67  const Real a0022 = nu * a2222 / (1.0 - nu);
68  const Real a0101 = G;
69  const Real a66 = Gprime;
70  const Real a77 = 0.5 * (G + Gprime);
71 
72  // Eijkl does not obey the usual symmetries, viz Eijkl != Ejikl, so must fill manually
73  _Eijkl(0, 0, 0, 0) = _Eijkl(1, 1, 1, 1) = a0000;
74  _Eijkl(0, 0, 1, 1) = _Eijkl(1, 1, 0, 0) = a0011;
75  _Eijkl(2, 2, 2, 2) = a2222;
76  _Eijkl(0, 0, 2, 2) = _Eijkl(1, 1, 2, 2) = _Eijkl(2, 2, 0, 0) = _Eijkl(2, 2, 1, 1) = a0022;
77  _Eijkl(0, 1, 0, 1) = _Eijkl(0, 1, 1, 0) = _Eijkl(1, 0, 0, 1) = _Eijkl(1, 0, 1, 0) = a0101;
78  _Eijkl(0, 2, 0, 2) = _Eijkl(0, 2, 2, 0) = _Eijkl(2, 0, 0, 2) = _Eijkl(1, 2, 1, 2) =
79  _Eijkl(1, 2, 2, 1) = _Eijkl(2, 1, 1, 2) = a66;
80  _Eijkl(2, 0, 2, 0) = _Eijkl(2, 1, 2, 1) = a77;
81 
82  // most of Bijkl is zero since the only nonzero moment stresses are m01 and m10.
83  // It also does not have the usual symmetries.
84  const Real D0 = E * Utility::pow<3>(b) / 12.0 / (1.0 - nu * nu); // bending rigidity of a layer
85  const Real b0101 = D0 / b * G / (2.0 * b * ks + G);
86  const Real b0110 = -nu * b0101;
87  _Bijkl(0, 1, 0, 1) = _Bijkl(1, 0, 1, 0) = b0101;
88  _Bijkl(0, 1, 1, 0) = _Bijkl(1, 0, 0, 1) = b0110;
89 
90  // The compliance tensor also does not obey the usual symmetries, and
91  // this is the main reason it is calculated here, since we can't use
92  // _Eijkl.invSymm()
93  const Real pre = (nu - 1.0) / (a0000 * (nu - 1.0) + 2.0 * a2222 * Utility::pow<2>(nu));
94  const Real cp0000 =
95  ((a2222 - a0000) * nu * nu + 2.0 * a0000 * nu - a0000) / (2.0 * a0000 * nu - a0000);
96  const Real cp0011 = -((a0000 + a2222) * nu * nu - a0000 * nu) / (2.0 * a0000 * nu - a0000);
97  _Cijkl(0, 0, 0, 0) = _Cijkl(1, 1, 1, 1) = pre * cp0000;
98  _Cijkl(0, 0, 1, 1) = _Cijkl(1, 1, 0, 0) = pre * cp0011;
99  _Cijkl(2, 2, 2, 2) = pre * a0000 / a2222;
100  _Cijkl(0, 0, 2, 2) = _Cijkl(1, 1, 2, 2) = _Cijkl(2, 2, 0, 0) = _Cijkl(2, 2, 1, 1) = -nu * pre;
101  _Cijkl(0, 1, 0, 1) = _Cijkl(0, 1, 1, 0) = _Cijkl(1, 0, 0, 1) = _Cijkl(1, 0, 1, 0) = 0.25 / a0101;
102  const Real slip = 2.0 / (G - Gprime);
103  _Cijkl(0, 2, 2, 0) = _Cijkl(2, 0, 0, 2) = _Cijkl(1, 2, 2, 1) = _Cijkl(2, 1, 1, 2) = -slip;
104  _Cijkl(0, 2, 0, 2) = _Cijkl(1, 2, 1, 2) = (G + Gprime) * slip / 2.0 / Gprime;
105  _Cijkl(2, 0, 2, 0) = _Cijkl(2, 1, 2, 1) = slip;
106 }
RankFourTensor _Cijkl
Inverse of elasticity tensor.
void issueGuarantee(const MaterialPropertyName &prop_name, Guarantee guarantee)
MaterialProperty< RankFourTensor > & _elastic_flexural_rigidity_tensor
Flexural rigidity tensor at the qps.
MaterialProperty< RankFourTensor > & _compliance
Compliance tensor (_Eijkl^-1) at the qps.
ComputeElasticityTensorBase(const InputParameters &parameters)
RankFourTensor _Eijkl
Conventional elasticity tensor.

Member Function Documentation

◆ computeQpElasticityTensor()

void ComputeLayeredCosseratElasticityTensor::computeQpElasticityTensor ( )
protectedvirtual

Implements ComputeElasticityTensorBase.

Definition at line 109 of file ComputeLayeredCosseratElasticityTensor.C.

110 {
111  _elasticity_tensor[_qp] = _Eijkl;
113  _compliance[_qp] = _Cijkl;
114 
116  _compliance[_qp] /= _prefactor_function->value(_t, _q_point[_qp]);
117 }
RankFourTensor _Cijkl
Inverse of elasticity tensor.
MaterialProperty< RankFourTensor > & _elastic_flexural_rigidity_tensor
Flexural rigidity tensor at the qps.
MaterialProperty< RankFourTensor > & _compliance
Compliance tensor (_Eijkl^-1) at the qps.
Function *const _prefactor_function
prefactor function to multiply the elasticity tensor with
RankFourTensor _Eijkl
Conventional elasticity tensor.
MaterialProperty< RankFourTensor > & _elasticity_tensor

◆ computeQpProperties()

void ComputeElasticityTensorBase::computeQpProperties ( )
protectedvirtualinherited

Definition at line 41 of file ComputeElasticityTensorBase.C.

42 {
44 
45  // Multiply by prefactor
47  _elasticity_tensor[_qp] *= _prefactor_function->value(_t, _q_point[_qp]);
48 }
Function *const _prefactor_function
prefactor function to multiply the elasticity tensor with
virtual void computeQpElasticityTensor()=0
MaterialProperty< RankFourTensor > & _elasticity_tensor

◆ hasGuarantee()

bool GuaranteeProvider::hasGuarantee ( const MaterialPropertyName &  prop_name,
Guarantee  guarantee 
)
inherited

Definition at line 16 of file GuaranteeProvider.C.

17 {
18  auto it = _guarantees.find(prop_name);
19  if (it == _guarantees.end())
20  return false;
21 
22  auto it2 = it->second.find(guarantee);
23  return it2 != it->second.end();
24 }
std::map< MaterialPropertyName, std::set< Guarantee > > _guarantees

◆ issueGuarantee()

void GuaranteeProvider::issueGuarantee ( const MaterialPropertyName &  prop_name,
Guarantee  guarantee 
)
protectedinherited

◆ revokeGuarantee()

void GuaranteeProvider::revokeGuarantee ( const MaterialPropertyName &  prop_name,
Guarantee  guarantee 
)
protectedinherited

Definition at line 34 of file GuaranteeProvider.C.

Referenced by ComputeElasticityTensorCP::ComputeElasticityTensorCP().

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

Member Data Documentation

◆ _base_name

std::string ComputeElasticityTensorBase::_base_name
protectedinherited

◆ _Bijkl

RankFourTensor ComputeLayeredCosseratElasticityTensor::_Bijkl
protected

Flexural rigidity tensor.

Definition at line 39 of file ComputeLayeredCosseratElasticityTensor.h.

Referenced by ComputeLayeredCosseratElasticityTensor(), and computeQpElasticityTensor().

◆ _Cijkl

RankFourTensor ComputeLayeredCosseratElasticityTensor::_Cijkl
protected

Inverse of elasticity tensor.

The usual _Eijkl.invSymm() cannot be used here as _Eijkl does not possess the usual symmetries

Definition at line 46 of file ComputeLayeredCosseratElasticityTensor.h.

Referenced by ComputeLayeredCosseratElasticityTensor(), and computeQpElasticityTensor().

◆ _compliance

MaterialProperty<RankFourTensor>& ComputeLayeredCosseratElasticityTensor::_compliance
protected

Compliance tensor (_Eijkl^-1) at the qps.

Definition at line 52 of file ComputeLayeredCosseratElasticityTensor.h.

Referenced by computeQpElasticityTensor().

◆ _Eijkl

RankFourTensor ComputeLayeredCosseratElasticityTensor::_Eijkl
protected

Conventional elasticity tensor.

Definition at line 36 of file ComputeLayeredCosseratElasticityTensor.h.

Referenced by ComputeLayeredCosseratElasticityTensor(), and computeQpElasticityTensor().

◆ _elastic_flexural_rigidity_tensor

MaterialProperty<RankFourTensor>& ComputeLayeredCosseratElasticityTensor::_elastic_flexural_rigidity_tensor
protected

Flexural rigidity tensor at the qps.

Definition at line 49 of file ComputeLayeredCosseratElasticityTensor.h.

Referenced by computeQpElasticityTensor().

◆ _elasticity_tensor

MaterialProperty<RankFourTensor>& ComputeElasticityTensorBase::_elasticity_tensor
protectedinherited

◆ _elasticity_tensor_name

std::string ComputeElasticityTensorBase::_elasticity_tensor_name
protectedinherited

◆ _prefactor_function

Function* const ComputeElasticityTensorBase::_prefactor_function
protectedinherited

prefactor function to multiply the elasticity tensor with

Definition at line 42 of file ComputeElasticityTensorBase.h.

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


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