www.mooseframework.org
DomainIntegralTopologicalQFunction.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 
13 
15 
16 InputParameters
18 {
19  InputParameters params = AuxKernel::validParams();
20  params.addClassDescription(
21  "Determines if a node is within the ring of the crack front defintion; this object is "
22  "normally created by the DomainIntegralAction.");
23  params.addRequiredParam<unsigned int>("ring_index",
24  "The ring of elements that defines the integration domain");
25  params.addRequiredParam<UserObjectName>("crack_front_definition",
26  "The CrackFrontDefinition user object name");
27  params.addParam<unsigned int>(
28  "crack_front_point_index",
29  "The index of the point on the crack front corresponding to this q function");
30  params.set<bool>("use_displaced_mesh") = false;
31  return params;
32 }
33 
35  const InputParameters & parameters)
36  : AuxKernel(parameters),
37  _ring_number(getParam<unsigned int>("ring_index")),
38  _crack_front_definition(&getUserObject<CrackFrontDefinition>("crack_front_definition")),
39  _has_crack_front_point_index(isParamValid("crack_front_point_index")),
40  _crack_front_point_index(
41  _has_crack_front_point_index ? getParam<unsigned int>("crack_front_point_index") : 0),
42  _treat_as_2d(false)
43 {
44 }
45 
46 void
48 {
50 
51  if (_treat_as_2d)
52  {
54  {
55  mooseWarning(
56  "crack_front_point_index ignored because CrackFrontDefinition is set to treat as 2D");
57  }
58  }
59  else
60  {
62  {
63  mooseError("crack_front_point_index must be specified in DomainIntegralTopologicalQFunction");
64  }
65  }
66 }
67 
68 Real
70 {
71 
72  Real q = 0;
73  bool is_node_in_ring = _crack_front_definition->isNodeInRing(
74  _ring_number, _current_node->id(), _crack_front_point_index);
75  if (is_node_in_ring)
76  q = 1;
77 
78  return q;
79 }
DomainIntegralTopologicalQFunction::_crack_front_point_index
const unsigned int _crack_front_point_index
Definition: DomainIntegralTopologicalQFunction.h:39
CrackFrontDefinition::isNodeInRing
bool isNodeInRing(const unsigned int ring_index, const dof_id_type connected_node_id, const unsigned int node_index) const
Definition: CrackFrontDefinition.C:1651
DomainIntegralTopologicalQFunction
Coupled auxiliary value.
Definition: DomainIntegralTopologicalQFunction.h:18
CrackFrontDefinition
Works on top of NodalNormalsPreprocessor.
Definition: CrackFrontDefinition.h:36
DomainIntegralTopologicalQFunction::_has_crack_front_point_index
bool _has_crack_front_point_index
Definition: DomainIntegralTopologicalQFunction.h:38
DomainIntegralTopologicalQFunction.h
DomainIntegralTopologicalQFunction::computeValue
virtual Real computeValue()
Definition: DomainIntegralTopologicalQFunction.C:69
DomainIntegralTopologicalQFunction::DomainIntegralTopologicalQFunction
DomainIntegralTopologicalQFunction(const InputParameters &parameters)
Factory constructor, takes parameters so that all derived classes can be built using the same constru...
Definition: DomainIntegralTopologicalQFunction.C:34
validParams
InputParameters validParams()
DomainIntegralTopologicalQFunction::validParams
static InputParameters validParams()
Definition: DomainIntegralTopologicalQFunction.C:17
DomainIntegralTopologicalQFunction::_treat_as_2d
bool _treat_as_2d
Definition: DomainIntegralTopologicalQFunction.h:40
DomainIntegralTopologicalQFunction::_crack_front_definition
const CrackFrontDefinition *const _crack_front_definition
Definition: DomainIntegralTopologicalQFunction.h:37
CrackFrontDefinition::treatAs2D
bool treatAs2D() const
Definition: CrackFrontDefinition.h:59
DomainIntegralTopologicalQFunction::initialSetup
virtual void initialSetup()
Definition: DomainIntegralTopologicalQFunction.C:47
defineLegacyParams
defineLegacyParams(DomainIntegralTopologicalQFunction)
registerMooseObject
registerMooseObject("TensorMechanicsApp", DomainIntegralTopologicalQFunction)
DomainIntegralTopologicalQFunction::_ring_number
const unsigned int _ring_number
Definition: DomainIntegralTopologicalQFunction.h:36