# Fatigue Analysis Setup

## Static Fatigue Analysis: Linear Superposition of Multiple FEA/Load Time History Load Cases

Where, $n$ is the total number of load cases, ${P}_{k}\left(t\right)$ and ${\sigma}_{ij}\left(t\right)$ are, respectively, the time variation of the k-th load time history and the total stress tensor, and ${P}_{FEA,k}$ and ${\sigma}_{ij}\left(t\right)$ are, respectively, the k-th load magnitude and stress tensor from FE analysis.

## Transient Fatigue Analysis

During Transient Fatigue Analysis, the load-time history input is not required, as it is calculated internally during Transient Analysis.

## Random Response Fatigue Analysis

During Random Response Fatigue Analysis, the load time history input is not required.
The `LCID` field on the FATLOAD Bulk Data Entry
should referenced a Random Response Subcase.

## Sine Sweep Fatigue Analysis

During Sine Sweep Fatigue Analysis, the load-time history input is not required. The
`LCID` field on the FATLOAD Bulk Data Entry
should reference a Frequency Response Subcase.

## OS-MBD Stress Recovery

Fatigue Analysis can also be performed based on stresses recovered from a
flexh3d file sourced from a Multibody Analysis. The
ASSIGN,`H3DMBD` entry can be used to
identify the flexh3d file and the EL2PROP
Bulk Data Entry should be used to define Properties (and materials) for the
elements. You can create sets from the flexbody H3D files and assign modal
participation factors to obtain the corresponding stresses for the fatigue
calculation.

## Load Time History Compression

Removing intermediate points is another important mechanism to save computation time. If any point on the load-time history is neither a peak nor valley point, it will not contribute in determining any stress cycle. Such points could be screened out in the fatigue computation without losing the accuracy, but the computation time could be saved significantly. For example, the left column in Figure 2 shows three load-time histories of three super-positioned loadcases, respectively. After removing the intermediate points, the three load-time histories are obtained as in the right column, which can produce the same fatigue results as the left column, but use much less time. This mechanism is built in OptiStruct and is effective automatically.

## Fatigue Loads, Events and Sequences

Fatigue loading is defined by scaling a static subcase with a load-time history.

A fatigue event consists of one or more static loadcases applied simultaneously in the same time duration scaled by load-time histories. For fatigue events with more than one static loadcase stress, linear superposition is used.

A fatigue sequence consists of a number of fatigue events and repeated instances of these events. A fatigue sequence can be made up of other sub fatigue sequences and/or fatigue events. In this way, you can define very complex events and sequences for fatigue analysis.

In OptiStruct, fatigue sequences defined in fatigue subcases (referred by FATSEQ) are the basic loading blocks. The fatigue life results of these fatigue subcases are calculated as the number of repeats of the loading block.

Fatigue loading is defined by a FATLOAD Bulk Data Entry, where a static subcase and a load-time history are associated.

A fatigue loading event is defined by a FATEVNT Bulk Data Entry, where one or more fatigue loads (FATLOAD) are selected.

A fatigue loading sequence is defined by a FATSEQ Bulk Data Entry, where a sequence of one or more fatigue loading events or other fatigue loading sequences is given. The appropriate FATSEQ Bulk Data Entry may be referenced from a fatigue subcase definition through the FATSEQ Subcase Information Entry.

## Pseudo Damage Method

`PSEUDO`flag on the FATPARM entry. For additional control, the

`PSEUDO`continuation line on FATPARM can be used to modify parameters.

- Load History Approximation
- Rainflow counting is conducted directly on the load history to find the load cycles for subsequent fatigue calculations.
- SWT method of mean stress correction is applied directly to the load cycles identified by Rainflow counting.
- The top NPV load cycles with the highest ranges are selected (default is 3). Note that if there are multiple load histories (multiple TABFATs), and if the same load cycle (time step pair) from one load history is not identified in other load histories, then such load cycles should still be selected for fatigue calculations.

- Pseudo Damage Calculation
- Based on the approximated load histories from the previous step, pseudo damages are calculated for all elements in the model.
- These are termed as pseudo damages since they are damages calculated based on the approximated load histories.

- Cluster Generation
- The global maximum Pseudo Damage is normalized to 1.0.
- Now the model would typically consist of a global maximum pseudo damage of 1.0 and many local maxima across the element-space.
- Starting with the element exhibiting the global maximum pseudo damage, the first element cluster is created. The cluster is expanded to include neighboring elements as long as a positive slope is not encountered (that is, the cluster can expand as long as the pseudo damage of the outermost element within the cluster boundary is greater than the pseudo damage of its neighboring element outside the cluster).
- If the difference in pseudo damage between the neighboring element
outside the cluster and its corresponding outermost element within
the cluster is greater than
`NOISETHR`, then the current cluster formation is terminated. - After a cluster formation is terminated, all elements in the cluster are removed from consideration for the next loop. Now the next global pseudo damage maximum is identified, and the steps 3, 4, and 5 under Cluster Generation section are repeated until the entire model has been divided into element clusters.

- Hotspot Generation
- The next step is the generation of hotspot clusters. The total
number of hotspot clusters for each model is defined by
`MXHOTSPOT`. For each element cluster created in step 5 above, the top`NACTDMG`number of elements are identified based on their pseudo damage values. - For these
`NACTDMG`number of elements, actual damage calculation is carried out (this is the regular fatigue damage calculation using the entire load history). The local maximum within each such element cluster and its`NACTDMG`elements for which the actual damage calculation is carried out, is called as a Hotspot. - For all other elements in the cluster, whose pseudo damages are
lower than the top
`NACTDMG`elements, the following approximation is carried out:log (Damage) = log (pseudo damage)*log(actual damage of the local maximum element)/log(pseudo damage of the local maximum element)

- The steps 1 through 3 above completes the generation of one hotspot
cluster. This process is repeated until a total of
`MXHOTSPOT`hotspot clusters are generated.

- The next step is the generation of hotspot clusters. The total
number of hotspot clusters for each model is defined by
- Output
- Fatigue and Life results are output by default and Rainflow results can be output using the RNFLOW command. The output consists of the actual damage results (based on full load history) for the elements in the hotspot clusters and for the rest of the elements, the actual damage values are approximated based on the equation specified in step 3 of the Hotspot Generation section.
- A filename.eactdmg file is output by default for a Pseudo damage run. This file contains the element sets for which actual damages were calculated in each fatigue subcase. This can be turned off using PARAM,PEACTDMG,NO.

## Fatigue Optimization

The `RTYPE` field of the DRESP1 entry should be
set to FATIGUE. Fatigue Optimization Responses are Life, Damage,
and Factor of Safety using the LIFE, DAMAGE, and
FOS options on the `ATTA` field of
DRESP1 Entry. A minimum of one Fatigue Analysis subcase is
required for Fatigue Optimization.

Fatigue Optimization with Multibody analysis using the ESL optimization method is now
supported (Fatigue Analysis is not supported for this feature). The
`LCID` field on the FATLOAD entry can
reference an MBD subcase. Only the Fatigue subcase and MBD subcase can be present,
no other subcases are allowed in the model.