https://mooseframework.inl.gov
ComputePlaneFiniteStrainNOSPD.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 
13 
16 {
18  params.addClassDescription(
19  "Class for computing nodal quantities for residual and jacobian calculation "
20  "for peridynamic correspondence models under planar finite strain "
21  "assumptions");
22 
23  params.addCoupledVar("scalar_out_of_plane_strain",
24  "Scalar out-of-plane strain variable for generalized plane strain");
25  params.addCoupledVar("out_of_plane_strain",
26  "Nonlinear out-of-plane strain variable for plane stress condition");
27 
28  return params;
29 }
30 
32  : ComputeFiniteStrainNOSPD(parameters),
33  _scalar_out_of_plane_strain_coupled(isCoupledScalar("scalar_out_of_plane_strain")),
34  _scalar_out_of_plane_strain(_scalar_out_of_plane_strain_coupled
35  ? coupledScalarValue("scalar_out_of_plane_strain")
36  : _zero),
37  _scalar_out_of_plane_strain_old(_scalar_out_of_plane_strain_coupled
38  ? coupledScalarValueOld("scalar_out_of_plane_strain")
39  : _zero),
40  _out_of_plane_strain_coupled(isCoupled("out_of_plane_strain")),
41  _out_of_plane_strain(_out_of_plane_strain_coupled ? coupledValue("out_of_plane_strain")
42  : _zero),
43  _out_of_plane_strain_old(_out_of_plane_strain_coupled ? coupledValueOld("out_of_plane_strain")
44  : _zero)
45 {
46 }
47 
48 void
50 {
52 
53  RankTwoTensor deformation_gradient_old = _deformation_gradient_old[_qp];
54  deformation_gradient_old(2, 2) = computeQpOutOfPlaneDeformationGradientOld();
55 
56  // Incremental deformation gradient of current step w.r.t previous step:
57  // _Fhat = deformation_gradient * inv(deformation_gradient_old)
58  _Fhat[_qp] = _deformation_gradient[_qp] * deformation_gradient_old.inverse();
59 }
60 
61 Real
63 {
64  // This is consistent with the approximation of stretch rate tensor
65  // D = log(sqrt(Fhat^T * Fhat)) / dt
66 
68  return std::exp(_scalar_out_of_plane_strain[0]);
69  else
70  return std::exp(_out_of_plane_strain[_qp]);
71 }
72 
73 Real
75 {
77  return std::exp(_scalar_out_of_plane_strain_old[0]);
78  else
79  return std::exp(_out_of_plane_strain_old[_qp]);
80 }
Material class for peridynamic correspondence model for finite strain.
RankTwoTensorTempl< Real > inverse() const
MaterialProperty< RankTwoTensor > & _deformation_gradient
const VariableValue & _scalar_out_of_plane_strain_old
static InputParameters validParams()
virtual Real computeQpOutOfPlaneDeformationGradient()
Functions to compute the out-of-plane component of deformation gradient for generalized plane strain ...
std::vector< RankTwoTensor > _Fhat
&#39;Incremental&#39; deformation gradient
Material class for 2D correspondence material model for finite strain: plane strain, generalized plane strain, weak plane stress.
const bool _scalar_out_of_plane_strain_coupled
Scalar out-of-plane strain for generalized plane strain.
void addCoupledVar(const std::string &name, const std::string &doc_string)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
registerMooseObject("PeridynamicsApp", ComputePlaneFiniteStrainNOSPD)
const MaterialProperty< RankTwoTensor > & _deformation_gradient_old
Material properties to fetch.
ComputePlaneFiniteStrainNOSPD(const InputParameters &parameters)
void addClassDescription(const std::string &doc_string)