www.mooseframework.org
ComputePlaneFiniteStrainNOSPD.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 #include "RankTwoTensor.h"
12 
14 
15 template <>
16 InputParameters
18 {
19  InputParameters params = validParams<ComputeFiniteStrainNOSPD>();
20  params.addClassDescription(
21  "Class for computing nodal quantities for residual and jacobian calculation "
22  "for Self-stabilized Non-Ordinary State-based PeriDynamic (SNOSPD) "
23  "correspondence model under planar finite strain assumptions");
24 
25  params.addCoupledVar("scalar_out_of_plane_strain",
26  "Scalar out-of-plane strain variable for generalized plane strain");
27  params.addCoupledVar("out_of_plane_strain",
28  "Nonlinear out-of-plane strain variable for plane stress condition");
29 
30  return params;
31 }
32 
34  : ComputeFiniteStrainNOSPD(parameters),
35  _scalar_out_of_plane_strain_coupled(isCoupledScalar("scalar_out_of_plane_strain")),
36  _scalar_out_of_plane_strain(_scalar_out_of_plane_strain_coupled
37  ? coupledScalarValue("scalar_out_of_plane_strain")
38  : _zero),
39  _scalar_out_of_plane_strain_old(_scalar_out_of_plane_strain_coupled
40  ? coupledScalarValueOld("scalar_out_of_plane_strain")
41  : _zero),
42  _out_of_plane_strain_coupled(isCoupled("out_of_plane_strain")),
43  _out_of_plane_strain(_out_of_plane_strain_coupled ? coupledValue("out_of_plane_strain")
44  : _zero),
45  _out_of_plane_strain_old(_out_of_plane_strain_coupled ? coupledValueOld("out_of_plane_strain")
46  : _zero)
47 {
48 }
49 
50 void
52 {
54 
55  RankTwoTensor deformation_gradient_old = _deformation_gradient_old[_qp];
56  deformation_gradient_old(2, 2) = computeQpOutOfPlaneDeformationGradientOld();
57 
58  // Incremental deformation gradient of current step w.r.t previous step:
59  // _Fhat = deformation_gradient * inv(deformation_gradient_old)
60  _Fhat[_qp] = _deformation_gradient[_qp] * deformation_gradient_old.inverse();
61 }
62 
63 Real
65 {
66  // This is consistent with the approximation of stretch rate tensor
67  // D = log(sqrt(Fhat^T * Fhat)) / dt
68 
70  return std::exp(_scalar_out_of_plane_strain[0]);
71  else
72  return std::exp(_out_of_plane_strain[_qp]);
73 }
74 
75 Real
77 {
79  return std::exp(_scalar_out_of_plane_strain_old[0]);
80  else
81  return std::exp(_out_of_plane_strain_old[_qp]);
82 }
ComputePlaneFiniteStrainNOSPD::computeQpFhat
virtual void computeQpFhat() override
Definition: ComputePlaneFiniteStrainNOSPD.C:51
ComputePlaneFiniteStrainNOSPD::_out_of_plane_strain_old
const VariableValue & _out_of_plane_strain_old
Definition: ComputePlaneFiniteStrainNOSPD.h:45
ComputePlaneFiniteStrainNOSPD::computeQpOutOfPlaneDeformationGradient
virtual Real computeQpOutOfPlaneDeformationGradient()
Functions to compute the out-of-plane component of deformation gradient for generalized plane strain ...
Definition: ComputePlaneFiniteStrainNOSPD.C:64
registerMooseObject
registerMooseObject("PeridynamicsApp", ComputePlaneFiniteStrainNOSPD)
ComputePlaneFiniteStrainNOSPD::ComputePlaneFiniteStrainNOSPD
ComputePlaneFiniteStrainNOSPD(const InputParameters &parameters)
Definition: ComputePlaneFiniteStrainNOSPD.C:33
validParams< ComputeFiniteStrainNOSPD >
InputParameters validParams< ComputeFiniteStrainNOSPD >()
Definition: ComputeFiniteStrainNOSPD.C:24
ComputePlaneFiniteStrainNOSPD::_out_of_plane_strain
const VariableValue & _out_of_plane_strain
Definition: ComputePlaneFiniteStrainNOSPD.h:44
ComputeStrainBaseNOSPD::_deformation_gradient
MaterialProperty< RankTwoTensor > & _deformation_gradient
Definition: ComputeStrainBaseNOSPD.h:55
ComputePlaneFiniteStrainNOSPD::_scalar_out_of_plane_strain_coupled
const bool _scalar_out_of_plane_strain_coupled
Scalar out-of-plane strain for generalized plane strain.
Definition: ComputePlaneFiniteStrainNOSPD.h:37
ComputeFiniteStrainNOSPD
Material class for bond-associated correspondence material model for finite strain.
Definition: ComputeFiniteStrainNOSPD.h:23
ComputePlaneFiniteStrainNOSPD::_scalar_out_of_plane_strain_old
const VariableValue & _scalar_out_of_plane_strain_old
Definition: ComputePlaneFiniteStrainNOSPD.h:39
ComputePlaneFiniteStrainNOSPD::_scalar_out_of_plane_strain
const VariableValue & _scalar_out_of_plane_strain
Definition: ComputePlaneFiniteStrainNOSPD.h:38
ComputePlaneFiniteStrainNOSPD
Material class for 2D correspondence material model for finite strain: plane strain,...
Definition: ComputePlaneFiniteStrainNOSPD.h:23
validParams< ComputePlaneFiniteStrainNOSPD >
InputParameters validParams< ComputePlaneFiniteStrainNOSPD >()
Definition: ComputePlaneFiniteStrainNOSPD.C:17
ComputeFiniteStrainNOSPD::_deformation_gradient_old
const MaterialProperty< RankTwoTensor > & _deformation_gradient_old
Material properties to fetch.
Definition: ComputeFiniteStrainNOSPD.h:52
ComputePlaneFiniteStrainNOSPD::computeQpOutOfPlaneDeformationGradientOld
virtual Real computeQpOutOfPlaneDeformationGradientOld()
Definition: ComputePlaneFiniteStrainNOSPD.C:76
RankTwoTensorTempl< Real >
ComputePlaneFiniteStrainNOSPD.h
ComputeFiniteStrainNOSPD::_Fhat
std::vector< RankTwoTensor > _Fhat
'Incremental' deformation gradient
Definition: ComputeFiniteStrainNOSPD.h:59