https://mooseframework.inl.gov
BilinearMixedModeCohesiveZoneModel.h
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 
10 #pragma once
11 
12 #include "CohesiveZoneModelBase.h"
13 #include "TwoVector.h"
14 
19 {
20 public:
22 
24 
25  virtual void initialize() override;
26  virtual void finalize() override;
27 
28  // Getters for analysis output
29  Real getModeMixityRatio(const Node * const node) const;
30  Real getCohesiveDamage(const Node * const node) const;
31  Real getLocalDisplacementNormal(const Node * const node) const;
32  Real getLocalDisplacementTangential(const Node * const node) const;
33 
34 protected:
35  virtual void computeQpProperties() override;
36  virtual void computeQpIProperties() override;
37 
38  virtual bool constrainedByOwner() const override { return false; }
39 
40  // @{
41  // Compute CZM bilinear traction law.
42  virtual void computeModeMixity(const Node * const node);
43  virtual void computeCriticalDisplacementJump(const Node * const node);
44  virtual void computeFinalDisplacementJump(const Node * const node);
45  virtual void computeEffectiveDisplacementJump(const Node * const node);
46  virtual void computeDamage(const Node * const node) override;
47  // @}
48 
50  virtual void computeCZMTraction(const Node * const node) override;
51 
54 
56  std::unordered_map<const DofObject *, ADReal> _dof_to_mode_mixity_ratio;
57 
60 
63 
66 
69 
72 
75 
78 
81 
82  // Penalty stiffness for bilinear traction model
84 
86  enum class MixedModeCriterion
87  {
88  POWER_LAW,
89  BK
91 
94 
97 
100 
101  // @{
102  // Strength material properties at the nodes
103  std::unordered_map<const DofObject *, ADReal> _dof_to_normal_strength;
104  std::unordered_map<const DofObject *, ADReal> _dof_to_shear_strength;
105  // @}
106 
107  // @{
108  // Fracture properties at the nodes
109  std::unordered_map<const DofObject *, ADReal> _dof_to_GI_c;
110  std::unordered_map<const DofObject *, ADReal> _dof_to_GII_c;
111  // @}
112 
113  // @{
114  // The parameters in the damage evolution law: Maps node to damage
115  std::unordered_map<const DofObject *, ADReal> _dof_to_delta_initial;
116  std::unordered_map<const DofObject *, ADReal> _dof_to_delta_final;
117  std::unordered_map<const DofObject *, ADReal> _dof_to_delta_max;
118  // @}
119 };
std::unordered_map< const DofObject *, ADReal > _dof_to_normal_strength
ADReal _normal_strength_interpolation
Interpolated value of normal_strength.
Real getModeMixityRatio(const Node *const node) const
const MaterialProperty< Real > & _GI_c
Fracture parameter mode I.
const Real _regularization_alpha
Parameter for the regularization of the Macaulay bracket.
const bool _set_compressive_traction_to_zero
Zero compressive traction.
const InputParameters & parameters() const
std::unordered_map< const DofObject *, ADReal > _dof_to_delta_initial
const MaterialProperty< Real > & _GII_c
Fracture parameter mode II.
Real getCohesiveDamage(const Node *const node) const
const Real _viscosity
Viscosity for damage model.
ADReal _shear_strength_interpolation
Interpolated value of shear_strength.
std::unordered_map< const DofObject *, ADReal > _dof_to_delta_max
DualNumber< Real, DNDerivativeType, false > ADReal
std::unordered_map< const DofObject *, ADReal > _dof_to_GII_c
virtual void computeQpIProperties() override
Computes properties that are functions both of _qp and _i, for example the weighted gap...
MixedModeCriterion
Mixed-mode propagation criterion.
virtual void computeQpProperties() override
Computes properties that are functions only of the current quadrature point (_qp), e.g.
Real getLocalDisplacementTangential(const Node *const node) const
const MaterialProperty< Real > & _shear_strength
The shear strength material property.
const MaterialProperty< Real > & _normal_strength
The normal strength material property.
std::unordered_map< const DofObject *, ADReal > _dof_to_delta_final
virtual void computeDamage(const Node *const node) override
virtual void computeModeMixity(const Node *const node)
BilinearMixedModeCohesiveZoneModel(const InputParameters &parameters)
std::unordered_map< const DofObject *, ADReal > _dof_to_shear_strength
ADReal _GI_c_interpolation
Interpolated value of fracture paramter mode I.
virtual void computeCriticalDisplacementJump(const Node *const node)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::unordered_map< const DofObject *, ADReal > _dof_to_GI_c
User object that computes bilinear mixed mode traction separation law.
enum BilinearMixedModeCohesiveZoneModel::MixedModeCriterion _mix_mode_criterion
virtual void computeFinalDisplacementJump(const Node *const node)
const Real _power_law_parameter
Power law parameter for bilinear traction model.
virtual void computeCZMTraction(const Node *const node) override
Encapsulate the CZM constitutive behavior.
Real getLocalDisplacementNormal(const Node *const node) const
virtual void computeEffectiveDisplacementJump(const Node *const node)
Base class for mortar-based cohesive zone model.
ADReal _GII_c_interpolation
Interpolated value of fracture paramter mode II.
std::unordered_map< const DofObject *, ADReal > _dof_to_mode_mixity_ratio
Map from degree of freedom to mode mixity ratio (AD needed?)