www.mooseframework.org
DomainIntegralAction.h
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 
10 #pragma once
11 
12 // MOOSE includes
13 #include "Action.h"
14 #include "MooseEnum.h"
15 #include "MooseTypes.h"
16 
17 #include "libmesh/vector_value.h"
18 
23 {
24 public:
26 
27  DomainIntegralAction(const InputParameters & params);
28 
30 
31  virtual void act() override;
32 
34  virtual void addRelationshipManagers(Moose::RelationshipManagerType input_rm_type) override;
35 
36 protected:
38  enum INTEGRAL
39  {
47  };
48 
52  {
55  };
56 
63  unsigned int calcNumCrackFrontPoints();
64 
66  std::set<INTEGRAL> _integrals;
68  const std::vector<BoundaryName> & _boundary_names;
70  std::vector<Point> _crack_front_points;
79  const std::string _order;
80  const std::string _family;
99  std::vector<BoundaryName> _crack_mouth_boundary_names;
102  std::vector<BoundaryName> _intersecting_boundary_names;
106  unsigned int _axis_2d;
110  std::vector<Real> _radius_inner;
111  std::vector<Real> _radius_outer;
114  unsigned int _ring_first;
116  unsigned int _ring_last;
118  std::vector<VariableName> _output_variables;
124  std::vector<SubdomainName> _blocks;
126  std::vector<VariableName> _displacements;
128  VariableName _temp;
132  unsigned int _symmetry_plane;
142  bool _output_q;
144  std::vector<unsigned int> _ring_vec;
156  const bool _use_ad;
163 };
const RealVectorValue _crack_direction_vector
Vector optionally used to prescribe direction of crack extension.
const bool _used_by_xfem_to_grow_crack
This determines if fracture integrals should be executed on nonlinear in order to grow the crack when...
unsigned int _symmetry_plane
Identifier for which plane is the symmetry plane.
VariableName _temp
Temperature variable.
std::vector< VariableName > _output_variables
List of variables for which values are to be sampled and output at the crack front points...
const std::vector< BoundaryName > & _boundary_names
Boundaries containing the crack front points.
virtual void act() override
UserObjectName _crack_front_points_provider
Name of crack front points provider user object used to optionally define the crack points...
const std::string _order
Order and family of the AuxVariables optionally created to output the values of q.
RelationshipManagerType
const bool _have_crack_direction_vector_end_2
Whether the crack direction vector at the 2nd end of the crack has been provided. ...
MaterialPropertyName _functionally_graded_youngs_modulus
Material property name for spatially-dependent Youngs modulus for functionally graded materials...
const bool _have_crack_direction_vector
Whether the crack direction vector has been provided.
std::vector< BoundaryName > _intersecting_boundary_names
Names of boundaries optionally used for improved computation of crack extension direction at ends of ...
unsigned int calcNumCrackFrontPoints()
Compute the number of points on the crack front.
Action to set up all objects used in computation of fracture domain integrals.
const bool _use_ad
Whether to create automatic differentiation objects from the action.
std::vector< Real > _radius_inner
Sets of inner and outer radii of the rings used for the domain form of the fracture integrals...
bool _has_symmetry_plane
Whether the model has a symmetry plane passing through the plane of the crack.
bool _use_crack_front_points_provider
Whether to use a crack front points provider.
DomainIntegralAction(const InputParameters &params)
bool _treat_as_2d
Whether fracture computations for a 3D model should be treated as though it were a 2D model...
Real _poissons_ratio
Poisson&#39;s ratio of material.
const std::string _family
MooseEnum _direction_method_moose_enum
Enum used to define the method to compute crack front direction.
static InputParameters validParams()
std::vector< VariableName > _displacements
Vector of displacement variables.
std::vector< BoundaryName > _crack_mouth_boundary_names
Names of boundaries optionally used to define the crack mouth location.
virtual void addRelationshipManagers(Moose::RelationshipManagerType input_rm_type) override
std::vector< SubdomainName > _blocks
Blocks for which the domain integrals are to be computed.
MooseEnum _end_direction_method_moose_enum
Enum used to define the method to compute crack front direction at ends of crack front.
std::vector< unsigned int > _ring_vec
Vector of ids for the individual rings on which the fracture integral is computed.
bool _incremental
Whether the constitutive models for the mechanics calculations use an incremental form...
std::vector< Real > _radius_outer
MooseEnum _q_function_type
How the q function is evaluated (geometric distance from crack front or ring of elements) ...
const bool _have_crack_direction_vector_end_1
Whether the crack direction vector at the 1st end of the crack has been provided. ...
bool _convert_J_to_K
Whether to convert the J-integral to a stress intensity factor (K) –deprecated.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
MaterialPropertyName _functionally_graded_youngs_modulus_crack_dir_gradient
Material property name for the Youngs modulus derivative for functionally graded materials.
bool _use_displaced_mesh
Whether to compute the fracture integrals on the displaced mesh.
const RealVectorValue _crack_direction_vector_end_1
Vector optionally used to prescribe direction of crack extension at the 1st end of the crack...
INTEGRAL
Enum used to select the type of integral to be performed.
bool _output_q
Whether to ouput the q function as a set of AuxVariables.
bool _get_equivalent_k
Whether to compute the equivalent K from the individual fracture integrals for mixed-mode fracture...
MooseEnum _position_type
How the distance along the crack front is measured (angle or distance)
std::vector< Point > _crack_front_points
User-defined vector of crack front points.
Q_FUNCTION_TYPE
Enum used to select the method used to compute the Q function used in the fracture integrals...
unsigned int _ring_last
Number of elements away from the crack tip to outside of outer ring with the topological q function...
virtual void addRelationshipManagers(Moose::RelationshipManagerType when_type)
unsigned int _ring_first
Number of elements away from the crack tip to inside of inner ring with the topological q function...
bool _fgm_crack
Whether the crack lives in a functionally-graded material.
const RealVectorValue _crack_direction_vector_end_2
Vector optionally used to prescribe direction of crack extension at the 2nd end of the crack...
unsigned int _axis_2d
Out-of-plane axis for 3D models treated as 2D.
bool _closed_loop
Indicates whether the crack forms a closed loop.
Real _youngs_modulus
Young&#39;s modulus of material.
std::set< INTEGRAL > _integrals
Container for enumerations describing the individual integrals computed.