www.mooseframework.org
RankTwoBasedFailureCriteriaNOSPD.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 "RankTwoScalarTools.h"
12 
14 
15 template <>
16 InputParameters
18 {
19  InputParameters params = validParams<BondStatusBasePD>();
20  params.addClassDescription(
21  "Class for rank two tensor based failure criteria in non-ordinary state-based model");
22 
23  params.addRequiredParam<MaterialPropertyName>("rank_two_tensor",
24  "The rank two material tensor name");
25  MooseEnum FailureCriterionTypes(
26  "Axial MaxPrincipal TrescaStrain TrescaStress VonMisesStrain VonMisesStress");
27  params.addRequiredParam<MooseEnum>("failure_criterion",
28  FailureCriterionTypes,
29  "Which stress based failure criterion to be used");
30 
31  return params;
32 }
33 
35  const InputParameters & parameters)
36  : BondStatusBasePD(parameters),
37  _failure_criterion(getParam<MooseEnum>("failure_criterion")),
38  _tensor(nullptr)
39 {
40  if (hasMaterialProperty<RankTwoTensor>("rank_two_tensor"))
41  _tensor = &getMaterialProperty<RankTwoTensor>("rank_two_tensor");
42  else
43  mooseError("Error in RankTwoBasedFailureCriteriaNOSPD! Required rank two tensor is not "
44  "available for current peridynamics model!");
45 }
46 
47 Real
49 {
50  Real val = 0.0;
51  RankTwoTensor avg_tensor = 0.5 * ((*_tensor)[0] + (*_tensor)[1]);
52  Point dirc;
53 
54  switch (_failure_criterion)
55  {
56  case 0:
58  avg_tensor, *_current_elem->node_ptr(0), *_current_elem->node_ptr(1), dirc);
59  break;
60  case 1:
61  val = RankTwoScalarTools::maxPrincipal(avg_tensor, dirc);
62  break;
63  case 2:
64  val = 4.0 / 3.0 * RankTwoScalarTools::maxShear(avg_tensor);
65  break;
66  case 3:
67  val = 2.0 * RankTwoScalarTools::maxShear(avg_tensor);
68  break;
69  case 4:
70  val = RankTwoScalarTools::effectiveStrain(avg_tensor);
71  break;
72  case 5:
73  val = RankTwoScalarTools::vonMisesStress(avg_tensor);
74  break;
75  default:
76  mooseError("Unsupported rank two tensor-based failure criterion. Choose from: Axial "
77  "MaxPrincipal TrescaStrain TrescaStress VonMisesStrain VonMisesStress");
78  }
79 
80  return val - _critical_val[0];
81 }
RankTwoBasedFailureCriteriaNOSPD::computeFailureCriterionValue
virtual Real computeFailureCriterionValue() override
Function to compute the value of a given failure criterion.
Definition: RankTwoBasedFailureCriteriaNOSPD.C:48
RankTwoScalarTools::effectiveStrain
T effectiveStrain(const RankTwoTensorTempl< T > &strain)
Definition: RankTwoScalarTools.h:77
validParams< RankTwoBasedFailureCriteriaNOSPD >
InputParameters validParams< RankTwoBasedFailureCriteriaNOSPD >()
Definition: RankTwoBasedFailureCriteriaNOSPD.C:17
RankTwoScalarTools::maxShear
T maxShear(const RankTwoTensorTempl< T > &stress)
Definition: RankTwoScalarTools.h:392
RankTwoScalarTools::axialStress
T axialStress(const RankTwoTensorTempl< T > &stress, const Point &point1, const Point &point2, Point &direction)
Definition: RankTwoScalarTools.h:258
RankTwoBasedFailureCriteriaNOSPD.h
registerMooseObject
registerMooseObject("PeridynamicsApp", RankTwoBasedFailureCriteriaNOSPD)
RankTwoBasedFailureCriteriaNOSPD::RankTwoBasedFailureCriteriaNOSPD
RankTwoBasedFailureCriteriaNOSPD(const InputParameters &parameters)
Definition: RankTwoBasedFailureCriteriaNOSPD.C:34
RankTwoBasedFailureCriteriaNOSPD
Rank two tensor based failure ctriteria to update the bond status for non-ordinary state-based model.
Definition: RankTwoBasedFailureCriteriaNOSPD.h:24
validParams< BondStatusBasePD >
InputParameters validParams< BondStatusBasePD >()
Definition: BondStatusBasePD.C:15
RankTwoScalarTools::maxPrincipal
T maxPrincipal(const RankTwoTensorTempl< T > &r2tensor, Point &direction)
Definition: RankTwoScalarTools.h:217
RankTwoBasedFailureCriteriaNOSPD::_tensor
const MaterialProperty< RankTwoTensor > * _tensor
Material property containing the rank two tensor.
Definition: RankTwoBasedFailureCriteriaNOSPD.h:36
RankTwoBasedFailureCriteriaNOSPD::_failure_criterion
MooseEnum _failure_criterion
MooseEnum used to control which failure criterion to use.
Definition: RankTwoBasedFailureCriteriaNOSPD.h:33
BondStatusBasePD
Base AuxKernel class for different failure criteria to update the bond status A bond is broken and th...
Definition: BondStatusBasePD.h:25
RankTwoScalarTools::vonMisesStress
T vonMisesStress(const RankTwoTensorTempl< T > &stress)
Definition: RankTwoScalarTools.h:64
RankTwoScalarTools.h
RankTwoTensorTempl
Definition: ACGrGrElasticDrivingForce.h:17
BondStatusBasePD::_critical_val
const VariableValue & _critical_val
Critical AuxVariable.
Definition: BondStatusBasePD.h:45