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

Implementation of the non-stateful exponential traction separation law proposed by Salehani, Mohsen Khajeh and Irani, Nilgoon 2018. More...

#include <SalehaniIrani3DCTraction.h>

Inheritance diagram for SalehaniIrani3DCTraction:
[legend]

Public Member Functions

 SalehaniIrani3DCTraction (const InputParameters &parameters)
 

Protected Member Functions

virtual RealVectorValue computeTraction () override
 method returning the traction in the interface coordinate system. More...
 
virtual RankTwoTensor computeTractionDerivatives () override
 method returning the traction derivitaves wrt local displacement jump. More...
 
virtual void computeQpProperties () override
 

Protected Attributes

const std::vector< Real > _delta_u0
 the displacement jump associated to the maximum traction More...
 
const std::vector< Real > _max_allowable_traction
 the vector representing the maximum allowed traction in each direction More...
 
const MooseArray< Point > & _normals
 normal to the interface More...
 
const unsigned int _ndisp
 number of displacement components More...
 
std::vector< const VariableValue * > _disp
 the coupled displacement and neighbor displacement values More...
 
std::vector< const VariableValue * > _disp_neighbor
 
MaterialProperty< RealVectorValue > & _displacement_jump_global
 the displacement jump in global and local coordiante More...
 
MaterialProperty< RealVectorValue > & _displacement_jump
 
MaterialProperty< RealVectorValue > & _traction_global
 the value of the traction in global and local coordinates More...
 
MaterialProperty< RealVectorValue > & _traction
 
MaterialProperty< RankTwoTensor > & _traction_derivatives_global
 the traction's derivatives wrt the displacement jump in global and local coordinates More...
 
MaterialProperty< RankTwoTensor > & _traction_derivatives
 

Detailed Description

Implementation of the non-stateful exponential traction separation law proposed by Salehani, Mohsen Khajeh and Irani, Nilgoon 2018.

Definition at line 20 of file SalehaniIrani3DCTraction.h.

Constructor & Destructor Documentation

◆ SalehaniIrani3DCTraction()

SalehaniIrani3DCTraction::SalehaniIrani3DCTraction ( const InputParameters &  parameters)

Definition at line 33 of file SalehaniIrani3DCTraction.C.

34  : CZMMaterialBase(parameters),
35  _delta_u0({getParam<Real>("normal_gap_at_maximum_normal_traction"),
36  std::sqrt(2) * getParam<Real>("tangential_gap_at_maximum_shear_traction"),
37  std::sqrt(2) * getParam<Real>("tangential_gap_at_maximum_shear_traction")}),
38  _max_allowable_traction({getParam<Real>("maximum_normal_traction"),
39  getParam<Real>("maximum_shear_traction"),
40  getParam<Real>("maximum_shear_traction")})
41 {
42 }

Member Function Documentation

◆ computeQpProperties()

void CZMMaterialBase::computeQpProperties ( )
overrideprotectedvirtualinherited

Definition at line 54 of file CZMMaterialBase.C.

55 {
56 
57  RealTensorValue RotationGlobalToLocal =
58  RotationMatrix::rotVec1ToVec2(_normals[_qp], RealVectorValue(1, 0, 0));
59 
60  // computing the displacement jump
61  for (unsigned int i = 0; i < _ndisp; i++)
62  _displacement_jump_global[_qp](i) = (*_disp_neighbor[i])[_qp] - (*_disp[i])[_qp];
63  for (unsigned int i = _ndisp; i < 3; i++)
64  _displacement_jump_global[_qp](i) = 0;
65 
66  // rotate the displacement jump to the local coordiante system
67  _displacement_jump[_qp] = RotationGlobalToLocal * _displacement_jump_global[_qp];
68 
69  // compute local traction
70  _traction[_qp] = computeTraction();
71 
72  // compute local traction derivatives wrt the displacement jump
74 
75  // rotate local traction and derivatives to the global coordinate system
76  _traction_global[_qp] = RotationGlobalToLocal.transpose() * _traction[_qp];
78  _traction_derivatives_global[_qp].rotate(RotationGlobalToLocal.transpose());
79 }

◆ computeTraction()

RealVectorValue SalehaniIrani3DCTraction::computeTraction ( )
overrideprotectedvirtual

method returning the traction in the interface coordinate system.

Implements CZMMaterialBase.

Definition at line 45 of file SalehaniIrani3DCTraction.C.

46 {
47 
48  // The convention for ordering the traction is N, T, S, where N is the normal direction, and T and
49  // S are two arbitrary tangential directions.
50  RealVectorValue traction_local;
51 
52  // temporary containers for auxiliary calculations
53  Real aa, x, exp_x, a_i, b_i;
54  // index variable to avoid multiple redefinitions
55  unsigned int i;
56 
57  x = 0;
58  for (i = 0; i < 3; i++)
59  {
60  aa = _displacement_jump[_qp](i) / _delta_u0[i];
61  if (i > 0)
62  aa *= aa; // square for shear component
63 
64  x += aa;
65  }
66 
67  exp_x = std::exp(-x);
68 
69  for (i = 0; i < 3; i++)
70  {
71  if (i == 0)
72  aa = std::exp(1);
73  else
74  aa = std::sqrt(2 * std::exp(1));
75 
76  a_i = _max_allowable_traction[i] * aa;
77  b_i = _displacement_jump[_qp](i) / _delta_u0[i];
78  traction_local(i) = a_i * b_i * exp_x;
79  }
80 
81  return traction_local;
82 }

◆ computeTractionDerivatives()

RankTwoTensor SalehaniIrani3DCTraction::computeTractionDerivatives ( )
overrideprotectedvirtual

method returning the traction derivitaves wrt local displacement jump.

Implements CZMMaterialBase.

Definition at line 85 of file SalehaniIrani3DCTraction.C.

86 {
87  RankTwoTensor traction_jump_derivatives_local;
88 
89  // this function computes the partial derivates of Tn[0][:], Tt[1][:], Ts[2][:]
90  // wrt dun, dut, dus
91  // T_i = a_i*b_i*exp(-x) with:
92  // a_i = \sigma_i,max * (\alpha_i*e)^{1/\alpha_i} with \alpha_i = 1 for i==n
93  // \alpha_i = 2 for i!=n
94  // b_i = \delta_u,i / \delta_0,i
95  // x = sum_i=1^3{(\delta_u,i / \delta_0,i)^\alpha_i} with \alpha_i = 1 for i==n
96  // \alpha_i = 2 for i!=n
97 
98  // dTi_duj = a_i * ( dBi_duj * exp(-x) + b_i * exp(-x) * dx_duj )
99  // = a_i * ( exp(-x) * (dBi_duj + b_i * dx_duj ) )
100 
101  // temporary containers for auxiliary calculations
102  Real aa, exp_x, x;
103  // index variables to avoid multiple redefinitions
104  unsigned int i, j;
105 
106  // compute x and the exponential term
107  aa = 0;
108  x = 0;
109  for (i = 0; i < 3; i++)
110  {
111  aa = _displacement_jump[_qp](i) / _delta_u0[i];
112  if (i > 0)
113  aa *= aa;
114  x += aa;
115  }
116  exp_x = std::exp(-x);
117 
118  // compute partial derivatives in local coordiante wrt the displacement jump
119  // | dTn/dun dTn/dut dTn/dus |
120  // dTi_duj = | dTt/dun dTt/dut dTt/dus | = _traction_derivative[i][j]
121  // | dTs/dun dTs/dut dTs/dus |
122  Real a_i, b_i;
123  Real dbi_dui, dx_duj;
124 
125  for (i = 0; i < 3; i++)
126  {
127  if (i == 0) // alpha = 1
128  a_i = std::exp(1);
129  else // alpha = 2
130  a_i = std::sqrt(2 * std::exp(1));
131 
132  a_i *= _max_allowable_traction[i];
133  b_i = _displacement_jump[_qp](i) / _delta_u0[i];
134 
135  for (j = 0; j < 3; j++)
136  {
137 
138  dbi_dui = 0;
139  if (i == j)
140  dbi_dui = 1 / _delta_u0[j];
141 
142  if (j == 0) // alpha = 1
143  dx_duj = 1. / _delta_u0[j];
144  else // alpha = 2
145  dx_duj = 2. * _displacement_jump[_qp](j) / (_delta_u0[j] * _delta_u0[j]);
146 
147  traction_jump_derivatives_local(i, j) =
148  a_i * exp_x * (dbi_dui - b_i * dx_duj); // the minus sign is due to exp(-x)
149  }
150  }
151 
152  return traction_jump_derivatives_local;
153 }

Member Data Documentation

◆ _delta_u0

const std::vector<Real> SalehaniIrani3DCTraction::_delta_u0
protected

the displacement jump associated to the maximum traction

Definition at line 31 of file SalehaniIrani3DCTraction.h.

Referenced by computeTraction(), and computeTractionDerivatives().

◆ _disp

std::vector<const VariableValue *> CZMMaterialBase::_disp
protectedinherited

the coupled displacement and neighbor displacement values

Definition at line 45 of file CZMMaterialBase.h.

Referenced by CZMMaterialBase::computeQpProperties(), and CZMMaterialBase::CZMMaterialBase().

◆ _disp_neighbor

std::vector<const VariableValue *> CZMMaterialBase::_disp_neighbor
protectedinherited

◆ _displacement_jump

MaterialProperty<RealVectorValue>& CZMMaterialBase::_displacement_jump
protectedinherited

◆ _displacement_jump_global

MaterialProperty<RealVectorValue>& CZMMaterialBase::_displacement_jump_global
protectedinherited

the displacement jump in global and local coordiante

Definition at line 57 of file CZMMaterialBase.h.

Referenced by CZMMaterialBase::computeQpProperties().

◆ _max_allowable_traction

const std::vector<Real> SalehaniIrani3DCTraction::_max_allowable_traction
protected

the vector representing the maximum allowed traction in each direction

Definition at line 34 of file SalehaniIrani3DCTraction.h.

Referenced by computeTraction(), and computeTractionDerivatives().

◆ _ndisp

const unsigned int CZMMaterialBase::_ndisp
protectedinherited

number of displacement components

Definition at line 41 of file CZMMaterialBase.h.

Referenced by CZMMaterialBase::computeQpProperties(), and CZMMaterialBase::CZMMaterialBase().

◆ _normals

const MooseArray<Point>& CZMMaterialBase::_normals
protectedinherited

normal to the interface

Definition at line 38 of file CZMMaterialBase.h.

Referenced by CZMMaterialBase::computeQpProperties().

◆ _traction

MaterialProperty<RealVectorValue>& CZMMaterialBase::_traction
protectedinherited

Definition at line 64 of file CZMMaterialBase.h.

Referenced by CZMMaterialBase::computeQpProperties().

◆ _traction_derivatives

MaterialProperty<RankTwoTensor>& CZMMaterialBase::_traction_derivatives
protectedinherited

Definition at line 70 of file CZMMaterialBase.h.

Referenced by CZMMaterialBase::computeQpProperties().

◆ _traction_derivatives_global

MaterialProperty<RankTwoTensor>& CZMMaterialBase::_traction_derivatives_global
protectedinherited

the traction's derivatives wrt the displacement jump in global and local coordinates

Definition at line 69 of file CZMMaterialBase.h.

Referenced by CZMMaterialBase::computeQpProperties().

◆ _traction_global

MaterialProperty<RealVectorValue>& CZMMaterialBase::_traction_global
protectedinherited

the value of the traction in global and local coordinates

Definition at line 63 of file CZMMaterialBase.h.

Referenced by CZMMaterialBase::computeQpProperties().


The documentation for this class was generated from the following files:
CZMMaterialBase::_disp
std::vector< const VariableValue * > _disp
the coupled displacement and neighbor displacement values
Definition: CZMMaterialBase.h:45
CZMMaterialBase::_traction
MaterialProperty< RealVectorValue > & _traction
Definition: CZMMaterialBase.h:64
CZMMaterialBase::_ndisp
const unsigned int _ndisp
number of displacement components
Definition: CZMMaterialBase.h:41
CZMMaterialBase::_disp_neighbor
std::vector< const VariableValue * > _disp_neighbor
Definition: CZMMaterialBase.h:46
CZMMaterialBase::_normals
const MooseArray< Point > & _normals
normal to the interface
Definition: CZMMaterialBase.h:38
SalehaniIrani3DCTraction::_max_allowable_traction
const std::vector< Real > _max_allowable_traction
the vector representing the maximum allowed traction in each direction
Definition: SalehaniIrani3DCTraction.h:34
CZMMaterialBase::computeTractionDerivatives
virtual RankTwoTensor computeTractionDerivatives()=0
method returning the traction derivitaves wrt local displacement jump.
CZMMaterialBase::_traction_global
MaterialProperty< RealVectorValue > & _traction_global
the value of the traction in global and local coordinates
Definition: CZMMaterialBase.h:63
CZMMaterialBase::CZMMaterialBase
CZMMaterialBase(const InputParameters &parameters)
Definition: CZMMaterialBase.C:26
CZMMaterialBase::_traction_derivatives_global
MaterialProperty< RankTwoTensor > & _traction_derivatives_global
the traction's derivatives wrt the displacement jump in global and local coordinates
Definition: CZMMaterialBase.h:69
CZMMaterialBase::_displacement_jump
MaterialProperty< RealVectorValue > & _displacement_jump
Definition: CZMMaterialBase.h:58
SalehaniIrani3DCTraction::_delta_u0
const std::vector< Real > _delta_u0
the displacement jump associated to the maximum traction
Definition: SalehaniIrani3DCTraction.h:31
CZMMaterialBase::_traction_derivatives
MaterialProperty< RankTwoTensor > & _traction_derivatives
Definition: CZMMaterialBase.h:70
RankTwoTensorTempl< Real >
CZMMaterialBase::_displacement_jump_global
MaterialProperty< RealVectorValue > & _displacement_jump_global
the displacement jump in global and local coordiante
Definition: CZMMaterialBase.h:57
CZMMaterialBase::computeTraction
virtual RealVectorValue computeTraction()=0
method returning the traction in the interface coordinate system.