https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
32void
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 {
58 2.0 * _b * _mechanical_stretch[_qp] / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
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}
virtual void computeBondForce() override
Function to compute force of a bond.
ComputeSmallStrainMaterialBaseOSPD(const InputParameters &parameters)
MaterialProperty< Real > & _bond_nonlocal_force
Material properties to store.
void addClassDescription(const std::string &doc_string)
unsigned int _qp
MaterialProperty< Real > & _mechanical_stretch
Base material class for bond-based and ordinary state-based peridynamic models, i....
MaterialProperty< Real > & _bond_local_force
Material properties to store.
static InputParameters validParams()
MaterialProperty< Real > & _bond_local_dfdE
MaterialProperty< Real > & _bond_local_dfdT
const Real _temp_ref
Reference temperature.
const VariableValue & _scalar_out_of_plane_strain
MaterialProperty< Real > & _bond_local_dfdU
std::vector< Real > _temp
Temperature variable.
const bool _scalar_out_of_plane_strain_coupled
Scalar out-of-plane component of strain tensor for generalized plane strain.