Skip to content

Commit

Permalink
Merge pull request #12789 from acasagran/stress_intensity_output_12785
Browse files Browse the repository at this point in the history
Added maximum shear and stress intensity output quantities
  • Loading branch information
bwspenc committed Feb 6, 2019
2 parents ca167b0 + 6f59921 commit 52f954c
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,26 @@ The scalar type `L2Norm` calculates the L2 normal of a Rank-2 tensor, $T_{ij}$,
s = \sqrt{T_{ij} T_{ij}}
\end{equation}

## Maximum Shear Stress

The scalar type `MaxShear` calculates the maximum shear stress for a Rank-2 tensor, as shown in
[eq:maxshear_scalar_type].
\begin{equation}
\label{eq:maxshear_scalar_type}
\sigma_{max}^{shear} = \frac{\sigma_{max}^{principal} - \sigma_{min}^{principal}}{2}
\end{equation}

#### Example Input File Syntax

!listing modules/tensor_mechanics/test/tests/elastic_patch/elastic_patch.i
block=AuxKernels/max_shear

An AuxVariable is required to store the AuxKernel information. Note that the name of the AuxVariable
is used as the argument for the `variable` input parameter in the `RankTwoScalarAux` block.

!listing modules/tensor_mechanics/test/tests/elastic_patch/elastic_patch.i
block=AuxVariables/max_shear

## Principal Values

### Maximum Principal Quantity
Expand Down Expand Up @@ -267,6 +287,29 @@ is used as the argument for the `variable` input parameter in the `RankTwoScalar
!listing modules/porous_flow/test/tests/thm_rehbinder/free_outer.i
block=AuxVariables/stress_rr

## Stress Intensity

The scalar type `StressIntensity` calculates the stress intensity for a Rank-2 tensor, as shown in
[eq:sint_scalar_type].
\begin{equation}
\label{eq:sint_scalar_type}
s = 2 \sigma_{max}^{shear} = \sigma_{max}^{principal} - \sigma_{min}^{principal}
\end{equation}

This quantity is useful in evaluating whether a Tresca failure criteria has
been met and is two times the MaxShear quantity.

#### Example Input File Syntax

!listing modules/tensor_mechanics/test/tests/elastic_patch/elastic_patch.i
block=AuxKernels/sint

An AuxVariable is required to store the AuxKernel information. Note that the name of the AuxVariable
is used as the argument for the `variable` input parameter in the `RankTwoScalarAux` block.

!listing modules/tensor_mechanics/test/tests/elastic_patch/elastic_patch.i
block=AuxVariables/sint

## Triaxiality Stress

The scalar type `TriaxialityStress` finds the ratio of the hydrostatic measure, $T_{hydrostatic}$, to
Expand Down
11 changes: 11 additions & 0 deletions modules/tensor_mechanics/include/utils/RankTwoScalarTools.h
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,17 @@ Real directionValueTensor(const RankTwoTensor & r2tensor, Point & direction);
* Triaxiality is the ratio of the hydrostatic stress to the von Mises stress.
*/
Real triaxialityStress(const RankTwoTensor & stress);

/*
* maxShear is the maximum shear stress defined as the maximum principal
* stress minus the minimum principal stress.
*/
Real maxShear(const RankTwoTensor & stress);

/*
* stressIntensity is defined as two times the maximum shear stress.
*/
Real stressIntensity(const RankTwoTensor & stress);
}

#endif // RANKTWOSCALARTOOLS_H
21 changes: 20 additions & 1 deletion modules/tensor_mechanics/src/utils/RankTwoScalarTools.C
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ scalarOptions()
return MooseEnum("VonMisesStress EffectiveStrain Hydrostatic L2norm MaxPrincipal "
"MidPrincipal MinPrincipal VolumetricStrain FirstInvariant SecondInvariant "
"ThirdInvariant AxialStress HoopStress RadialStress TriaxialityStress "
"Direction");
"Direction MaxShear StressIntensity");
}

Real
Expand Down Expand Up @@ -88,6 +88,12 @@ getQuantity(const RankTwoTensor & tensor,
case 15:
val = directionValueTensor(tensor, direction);
break;
case 16:
val = maxShear(tensor);
break;
case 17:
val = stressIntensity(tensor);
break;
default:
mooseError("RankTwoScalarAux Error: Pass valid scalar type - " +
scalarOptions().getRawNames());
Expand Down Expand Up @@ -334,4 +340,17 @@ triaxialityStress(const RankTwoTensor & stress)
{
return hydrostatic(stress) / vonMisesStress(stress);
}

Real
maxShear(const RankTwoTensor & stress)
{
Point dummy;
return (maxPrincipal(stress, dummy) - minPrincipal(stress, dummy)) / 2.;
}

Real
stressIntensity(const RankTwoTensor & stress)
{
return 2. * maxShear(stress);
}
}
20 changes: 20 additions & 0 deletions modules/tensor_mechanics/test/tests/elastic_patch/elastic_patch.i
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,14 @@
order = CONSTANT
family = MONOMIAL
[../]
[./max_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./sint]
order = CONSTANT
family = MONOMIAL
[../]

[] # AuxVariables

Expand Down Expand Up @@ -260,6 +268,18 @@
scalar_type = direction
direction = '1 1 1'
[../]
[./max_shear]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = max_shear
scalar_type = MaxShear
[../]
[./sint]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = sint
scalar_type = StressIntensity
[../]


[] # AuxKernels
Expand Down
Binary file not shown.
Binary file not shown.

0 comments on commit 52f954c

Please sign in to comment.