Line data Source code
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 : 10 : #include "ComputeSmallStrainMaterialBaseOSPD.h" 11 : 12 : InputParameters 13 382 : ComputeSmallStrainMaterialBaseOSPD::validParams() 14 : { 15 382 : InputParameters params = ParametricMaterialBasePD::validParams(); 16 382 : params.addClassDescription("Base class for ordinary state-based peridynamic mechanics models"); 17 : 18 382 : return params; 19 0 : } 20 : 21 300 : ComputeSmallStrainMaterialBaseOSPD::ComputeSmallStrainMaterialBaseOSPD( 22 300 : const InputParameters & parameters) 23 : : ParametricMaterialBasePD(parameters), 24 300 : _bond_nonlocal_force(declareProperty<Real>("bond_nonlocal_force")), 25 300 : _bond_nonlocal_dfdU(declareProperty<Real>("bond_nonlocal_dfdU")), 26 300 : _bond_nonlocal_dfdT(declareProperty<Real>("bond_nonlocal_dfdT")), 27 300 : _bond_nonlocal_dfdE(declareProperty<Real>("bond_nonlocal_dfdE")), 28 600 : _d(2) 29 : { 30 300 : } 31 : 32 : void 33 1324304 : ComputeSmallStrainMaterialBaseOSPD::computeBondForce() 34 : { 35 1324304 : if (_scalar_out_of_plane_strain_coupled) 36 : { 37 806712 : _bond_local_force[_qp] = 38 806712 : 2.0 * _b * 39 806712 : (_mechanical_stretch[_qp] + 40 806712 : _poissons_ratio * (_scalar_out_of_plane_strain[0] - 41 806712 : _alpha * (0.5 * (_temp[0] + _temp[1]) - _temp_ref))) / 42 806712 : _origin_vec.norm() * _node_vol[0] * _node_vol[1]; 43 1613424 : _bond_local_dfdT[_qp] = -2.0 * _b * (1.0 + _poissons_ratio) * 0.5 * _alpha / 44 806712 : _origin_vec.norm() * _node_vol[0] * _node_vol[1]; 45 : 46 806712 : _bond_nonlocal_force[_qp] = 47 806712 : 2.0 * _a * _d[_qp] * _d[_qp] * 48 806712 : (_mechanical_stretch[_qp] + _alpha * (0.5 * (_temp[0] + _temp[1]) - _temp_ref) - 49 806712 : _alpha * (_temp[_qp] - _temp_ref) + 50 806712 : _poissons_ratio * (_scalar_out_of_plane_strain[0] - _alpha * (_temp[_qp] - _temp_ref))) * 51 806712 : _node_vol[0] * _node_vol[1]; 52 806712 : _bond_nonlocal_dfdT[_qp] = -2.0 * _a * _d[_qp] * _d[_qp] * (1.0 + _poissons_ratio) * _alpha * 53 806712 : _node_vol[0] * _node_vol[1]; 54 : } 55 : else 56 : { 57 517592 : _bond_local_force[_qp] = 58 517592 : 2.0 * _b * _mechanical_stretch[_qp] / _origin_vec.norm() * _node_vol[0] * _node_vol[1]; 59 517592 : _bond_local_dfdT[_qp] = 60 517592 : -2.0 * _b * 0.5 * _alpha / _origin_vec.norm() * _node_vol[0] * _node_vol[1]; 61 : 62 517592 : _bond_nonlocal_force[_qp] = 63 517592 : 2.0 * _a * _d[_qp] * _d[_qp] * 64 517592 : (_mechanical_stretch[_qp] + _alpha * (0.5 * (_temp[0] + _temp[1]) - _temp_ref) - 65 517592 : _alpha * (_temp[_qp] - _temp_ref)) * 66 517592 : _node_vol[0] * _node_vol[1]; 67 517592 : _bond_nonlocal_dfdT[_qp] = -2.0 * _a * _d[_qp] * _d[_qp] * _alpha * _node_vol[0] * _node_vol[1]; 68 : } 69 : 70 1324304 : _bond_local_dfdU[_qp] = 71 1324304 : 2.0 * _b / _origin_vec.norm() / _origin_vec.norm() * _node_vol[0] * _node_vol[1]; 72 1324304 : _bond_nonlocal_dfdU[_qp] = 73 1324304 : 2.0 * _a * _d[_qp] * _d[_qp] / _origin_vec.norm() * _node_vol[0] * _node_vol[1]; 74 : 75 1324304 : _bond_local_dfdE[_qp] = 76 1324304 : 2.0 * _b * _poissons_ratio / _origin_vec.norm() * _node_vol[0] * _node_vol[1]; 77 1324304 : _bond_nonlocal_dfdE[_qp] = 78 1324304 : 2.0 * _a * _d[_qp] * _d[_qp] * _poissons_ratio * _node_vol[0] * _node_vol[1]; 79 1324304 : }