https://mooseframework.inl.gov
ComputeSmallStrainMaterialBaseOSPD.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
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 
11 
14 {
16  params.addClassDescription("Base class for ordinary state-based peridynamic mechanics models");
17 
18  return params;
19 }
20 
22  const InputParameters & parameters)
23  : ParametricMaterialBasePD(parameters),
24  _bond_nonlocal_force(declareProperty<Real>("bond_nonlocal_force")),
25  _bond_nonlocal_dfdU(declareProperty<Real>("bond_nonlocal_dfdU")),
26  _bond_nonlocal_dfdT(declareProperty<Real>("bond_nonlocal_dfdT")),
27  _bond_nonlocal_dfdE(declareProperty<Real>("bond_nonlocal_dfdE")),
28  _d(2)
29 {
30 }
31 
32 void
34 {
36  {
38  2.0 * _b *
41  _alpha * (0.5 * (_temp[0] + _temp[1]) - _temp_ref))) /
42  _origin_vec.norm() * _node_vol[0] * _node_vol[1];
43  _bond_local_dfdT[_qp] = -2.0 * _b * (1.0 + _poissons_ratio) * 0.5 * _alpha /
44  _origin_vec.norm() * _node_vol[0] * _node_vol[1];
45 
47  2.0 * _a * _d[_qp] * _d[_qp] *
48  (_mechanical_stretch[_qp] + _alpha * (0.5 * (_temp[0] + _temp[1]) - _temp_ref) -
49  _alpha * (_temp[_qp] - _temp_ref) +
51  _node_vol[0] * _node_vol[1];
52  _bond_nonlocal_dfdT[_qp] = -2.0 * _a * _d[_qp] * _d[_qp] * (1.0 + _poissons_ratio) * _alpha *
53  _node_vol[0] * _node_vol[1];
54  }
55  else
56  {
60  -2.0 * _b * 0.5 * _alpha / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
61 
63  2.0 * _a * _d[_qp] * _d[_qp] *
64  (_mechanical_stretch[_qp] + _alpha * (0.5 * (_temp[0] + _temp[1]) - _temp_ref) -
65  _alpha * (_temp[_qp] - _temp_ref)) *
66  _node_vol[0] * _node_vol[1];
67  _bond_nonlocal_dfdT[_qp] = -2.0 * _a * _d[_qp] * _d[_qp] * _alpha * _node_vol[0] * _node_vol[1];
68  }
69 
71  2.0 * _b / _origin_vec.norm() / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
73  2.0 * _a * _d[_qp] * _d[_qp] / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
74 
76  2.0 * _b * _poissons_ratio / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
78  2.0 * _a * _d[_qp] * _d[_qp] * _poissons_ratio * _node_vol[0] * _node_vol[1];
79 }
MaterialProperty< Real > & _bond_local_dfdU
MaterialProperty< Real > & _bond_local_force
Material properties to store.
static InputParameters validParams()
auto norm() const -> decltype(std::norm(Real()))
const Real _temp_ref
Reference temperature.
std::vector< Real > _temp
Temperature variable.
const VariableValue & _scalar_out_of_plane_strain
const bool _scalar_out_of_plane_strain_coupled
Scalar out-of-plane component of strain tensor for generalized plane strain.
unsigned int _qp
Base material class for bond-based and ordinary state-based peridynamic models, i.e.
ComputeSmallStrainMaterialBaseOSPD(const InputParameters &parameters)
MaterialProperty< Real > & _bond_local_dfdT
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)
virtual void computeBondForce() override
Function to compute force of a bond.
MaterialProperty< Real > & _mechanical_stretch
MaterialProperty< Real > & _bond_nonlocal_force
Material properties to store.
MaterialProperty< Real > & _bond_local_dfdE