www.mooseframework.org
InteractionIntegralSM.h
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
7 #ifndef INTERACTIONINTEGRALSM_H
8 #define INTERACTIONINTEGRALSM_H
9 
10 #include "ElementIntegralPostprocessor.h"
11 #include "CrackFrontDefinition.h"
12 #include "SymmTensor.h"
13 
14 // Forward Declarations
16 class RankTwoTensor;
17 
18 template <>
19 InputParameters validParams<InteractionIntegralSM>();
20 
25 class InteractionIntegralSM : public ElementIntegralPostprocessor
26 {
27 public:
28  InteractionIntegralSM(const InputParameters & parameters);
29 
30  virtual Real getValue();
31 
32  static MooseEnum qFunctionType();
33  static MooseEnum sifModeType();
34 
35 protected:
36  virtual void initialSetup();
37  virtual Real computeQpIntegral();
38  virtual Real computeIntegral();
39  void computeAuxFields(RankTwoTensor & aux_stress, RankTwoTensor & grad_disp);
40  void computeTFields(RankTwoTensor & aux_stress, RankTwoTensor & grad_disp);
41 
42  unsigned int _ndisp;
45  const unsigned int _crack_front_point_index;
47  const MaterialProperty<SymmTensor> & _stress;
48  const MaterialProperty<SymmTensor> & _strain;
49  std::vector<const VariableGradient *> _grad_disp;
50  const bool _has_temp;
51  const VariableGradient & _grad_temp;
52  const MaterialProperty<Real> * _current_instantaneous_thermal_expansion_coef;
53  Real _K_factor;
57  unsigned int _ring_index;
58  std::vector<Real> _q_curr_elem;
59  const std::vector<std::vector<Real>> * _phi_curr_elem;
60  const std::vector<std::vector<RealGradient>> * _dphi_curr_elem;
61  Real _kappa;
63  Real _r;
64  Real _theta;
65 
66 private:
67  enum class QMethod
68  {
69  Geometry,
70  Topology
71  };
72 
74 
75  enum class SifMethod
76  {
77  KI,
78  KII,
79  KIII,
80  T
81  };
82 
84 };
85 
86 #endif // INTERACTIONINTEGRALSM_H
const unsigned int _crack_front_point_index
void computeAuxFields(RankTwoTensor &aux_stress, RankTwoTensor &grad_disp)
const CrackFrontDefinition *const _crack_front_definition
void computeTFields(RankTwoTensor &aux_stress, RankTwoTensor &grad_disp)
const MaterialProperty< SymmTensor > & _stress
const std::vector< std::vector< Real > > * _phi_curr_elem
InputParameters validParams< InteractionIntegralSM >()
Works on top of NodalNormalsPreprocessor.
const MaterialProperty< Real > * _current_instantaneous_thermal_expansion_coef
static MooseEnum sifModeType()
static MooseEnum qFunctionType()
std::vector< const VariableGradient * > _grad_disp
InteractionIntegralSM(const InputParameters &parameters)
std::vector< Real > _q_curr_elem
const std::vector< std::vector< RealGradient > > * _dphi_curr_elem
const VariableGradient & _grad_temp
const MaterialProperty< SymmTensor > & _strain
This postprocessor computes the Interaction Integral.