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