www.mooseframework.org
InteractionIntegral.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 INTERACTIONINTEGRAL_H
8 #define INTERACTIONINTEGRAL_H
9 
10 #include "ElementIntegralPostprocessor.h"
11 #include "CrackFrontDefinition.h"
12 
13 // Forward Declarations
15 class RankTwoTensor;
16 
17 template <>
18 InputParameters validParams<InteractionIntegral>();
19 
24 class InteractionIntegral : public ElementIntegralPostprocessor
25 {
26 public:
27  InteractionIntegral(const InputParameters & parameters);
28 
29  virtual Real getValue();
30 
31  static MooseEnum qFunctionType();
32  static MooseEnum sifModeType();
33 
34 protected:
35  virtual void initialSetup();
36  virtual Real computeQpIntegral();
37  virtual Real computeIntegral();
38  void computeAuxFields(RankTwoTensor & aux_stress, RankTwoTensor & grad_disp);
39  void computeTFields(RankTwoTensor & aux_stress, RankTwoTensor & grad_disp);
40  unsigned int _ndisp;
43  const unsigned int _crack_front_point_index;
45  const MaterialProperty<RankTwoTensor> * _stress;
46  const MaterialProperty<RankTwoTensor> * _strain;
47  std::vector<const VariableGradient *> _grad_disp;
48  const bool _has_temp;
49  const VariableGradient & _grad_temp;
50  Real _K_factor;
54  unsigned int _ring_index;
55  const MaterialProperty<RankTwoTensor> * _total_deigenstrain_dT;
56  std::vector<Real> _q_curr_elem;
57  const std::vector<std::vector<Real>> * _phi_curr_elem;
58  const std::vector<std::vector<RealGradient>> * _dphi_curr_elem;
59  Real _kappa;
61  Real _r;
62  Real _theta;
63 
64 private:
65  enum class QMethod
66  {
67  Geometry,
68  Topology
69  };
70 
72 
73  enum class SifMethod
74  {
75  KI,
76  KII,
77  KIII,
78  T
79  };
80 
82 };
83 
84 #endif // INTERACTIONINTEGRAL_H
void computeAuxFields(RankTwoTensor &aux_stress, RankTwoTensor &grad_disp)
static MooseEnum qFunctionType()
virtual Real computeIntegral()
const std::vector< std::vector< Real > > * _phi_curr_elem
const unsigned int _crack_front_point_index
const QMethod _q_function_type
const MaterialProperty< RankTwoTensor > * _stress
const CrackFrontDefinition *const _crack_front_definition
std::vector< const VariableGradient * > _grad_disp
Works on top of NodalNormalsPreprocessor.
void computeTFields(RankTwoTensor &aux_stress, RankTwoTensor &grad_disp)
const std::vector< std::vector< RealGradient > > * _dphi_curr_elem
virtual Real computeQpIntegral()
virtual void initialSetup()
const MaterialProperty< RankTwoTensor > * _strain
const SifMethod _sif_mode
const MaterialProperty< RankTwoTensor > * _total_deigenstrain_dT
static MooseEnum sifModeType()
const VariableGradient & _grad_temp
std::vector< Real > _q_curr_elem
InteractionIntegral(const InputParameters &parameters)
This postprocessor computes the Interaction Integral.
InputParameters validParams< InteractionIntegral >()