6.1. Cyclic-Loading Analysis

A cyclic-loading analysis repeats a predefined loading cycle (or cycles) a specified number of times.

Each cyclic-loading solution–also referred to as a cyclic-loading load step–is comprised of several cycles associated with a single SOLVE command. The solution occurs in a single load step with multiple substeps.

An analysis can have multiple cyclic-loading solutions combined with noncyclic-loading solutions.

6.1.1. Standard Cyclic-Loading Analysis

This command initiates and sets solution parameters for a standard cyclic-loading analysis:

CLOAD, Option, Input1

To specify the various control options (Option), issue the command multiple times.

6.1.1.1. Step 1: Define the Tabular Array

Define the tabular array (*DIM). Set the tabular array size according to the number of time points needed to define one cycle of loading.

You can define multiple tabular arrays defined to apply different loads in a cyclic-loading load step. (For example, one cyclic-loading table can apply a displacement boundary condition, another can apply a force loading, and so on.) If you intend to use multiple tabular arrays in the same cyclic-loading load step, the arrays must be of the same size. Different cyclic-loading load steps can have different array sizes.

Issue CLOAD,DEFINE,BEGIN and CLOAD,DEFINE,END commands before and after load table definitions, respectively, to mark tabular array or arrays as cyclic-loading tables.

Example 6.1: Marking Tabular Arrays as Cyclic-Loading Tables

CLOAD,DEFINE,BEGIN
*DIM,_cycload1,TABLE,4
*DIM,_cycload2,TABLE,4
CLOAD,DEFINE,END

Cyclic-loading tables to be applied in the same cyclic-loading load step must have the same dimensions.

Load tables not specified as cyclic-loading tables (CLOAD,DEFINE) as shown are not cyclically repeated.

6.1.1.2. Step 2: Specify the Cyclic-Loading Table Values

Column 0 contains the time points of the cyclic-loading table, and column 1 contains the load values.

The cyclic-load table time value must always start at 0. The program sets the correct time value automatically when the current cyclic-loading analysis is preceded by a standard solution or another cyclic-loading analysis.

The beginning and ending load values must always be the same.

Example 6.2: Specifying Values in a Cyclic-Loading Table

! Time values
_cycload1(1,0) = 0.   ! time must start at 0
_cycload1(2,0) = 0.25
_cycload1(3,0) = 0.8
_cycload1(4,0) = 1.2
! Load values
_cycload1(1,1) = 0.   ! beginning load value
_cycload1(2,1) = 0.1
_cycload1(3,1) = -0.15
_cycload1(4,1) = 0.   ! ending load value

If there are multiple cyclic-loading tables in a given cyclic-loading load step, they must have the same time values.

6.1.1.3. Step 3. Apply the Cyclic-Loading Table(s)

Apply the cyclic-loading table(s) to the finite element problem.

Example 6.3: Applying Cyclic-Loading Tables

NSEL, S, LOC, Y, 10
D,All,UY,%_cycload1%
NSEL, S, LOC, X, 10
D,All,UX,%_cycload2%

Each cyclic-loading solution (comprised of multiple cycles) is its own load step. For each new cyclic-loading load step, you must reapply a cyclic-loading table or tables. Cyclic-loading load applications are not automatically carried from one cyclic-loading load step to another. It is not necessary to redefine the load tables (that is, steps 1 and 2 need not be repeated) if they already exist, or if they were applied previously.

6.1.1.4. Step 4. Specify Cyclic-Loading Parameters

Define the cyclic-loading analysis parameters by specifying the length of each loading cycle (CLOAD,CYCTIME) and total number of cycles (CLOAD,CYCNUM). The final time point of the defined cyclic-loading tables must coincide with the value of the cycle length.

Example 6.4: Defining Cyclic-Loading Parameters

CLOAD,CYCNUM,100   ! total number of cycles
CLOAD,CYCTIME,1.2  !time length of each cycle

Each cyclic-loading load step requires a specified number of cycles (CLOAD,CYCNUM) and cycle time (CLOAD,CYCTIME).

6.1.1.5. Step 5. Specify Time-Stepping Parameters

In a cyclic-loading analysis, the time-stepping parameters (NSUBST or DELTIM) require no adjustment if the total number of cycles (CLOAD,CYCNUM) are changed.

The time-stepping parameters (NSUBST or DELTIM) apply to either of the following:

6.1.1.5.1. Single-Cycle Length

By default, time-stepping (NSUBST or DELTIM) applies to a single cycle length (and not the total analysis time).

As shown in this figure, time-stepping on a single-cycle-length basis means that the time-stepping applies to :

Figure 6.1: Time Points and Ranges in a Cyclic-Loading Table

Time Points and Ranges in a Cyclic-Loading Table

6.1.1.5.1.1. Default Time-Stepping and Predictor Behavior

The program adjusts the time-stepping increments to ensure that the time points defined in the cyclic-loading table are not missed.

The program also disables the predictor at each defined table time point, as the defined table time point is often associated with a sudden change in loading direction, as shown:

Figure 6.2: Typical Cyclic-Loading Appropriate for Default Time-Stepping and Predictor Behavior

Typical Cyclic-Loading Appropriate for Default Time-Stepping and Predictor Behavior

6.1.1.5.1.2. Modifying the Time-Stepping and Predictor Behavior

When the load transition is smooth, the default time-stepping and predictor behavior may not be appropriate.

Consider a sinusoidal cyclic-loading of the form shown:

Figure 6.3: Cyclic-Loading Better Suited to the Modified Time-Stepping and Predictor Behavior

Cyclic-Loading Better Suited to the Modified Time-Stepping and Predictor Behavior

The cyclic-loading in this case requires many closely-spaced defined time points to describe the sinusoidal loading. A smooth transition occurs from one defined point to the next.

The default time-stepping behavior would therefore be inappropriate, as the time-stepping increments may be much smaller than desired because each defined time point is respected. Also, the default predictor behavior is unnecessary in this case because the load transition is smooth.

In such a scenario, it is appropriate to modify cyclic-loading behavior so that the defined table time points do not dictate time-stepping nor disable the predictor at those points (CLOAD,LTAB). Setting cyclic-loading in such a way ensures that the time-stepping command (NSUBST or DELTIM) dictates the time-stepping increments and not the defined time points. Defined time points may therefore be missed, and the predictor is not disabled even if the time points are hit.

If you require that defined time points are not missed but still want the predictor to remain enabled at those points, you can set the predictor to do so (PRED,ON,,ON). If both CLOAD,LTAB and PRED,ON,,ON are defined, the program considers the one defined most recently to control cyclic-loading behavior.

Table 6.1: Time-Stepping and Predictor Behavior

 Time-Stepping BehaviorPredictor behavior
DefaultDefined time points respectedPredictor disabled at defined time points
CLOAD,LTABDefined time points not respectedPredictor not disabled at defined time points
PRED,ON,,ONDefined time points respected Predictor not disabled at defined time points

6.1.1.5.2. Each Time-Point Range

If the loading cycles have nonuniform time-point ranges, default time-stepping behavior can lead to an excessive number of substeps and longer run times.

In such cases, you can set time-stepping to apply to each time-point range ( in the figure) in a cycle. If you enable this option (CLOAD,TSTEP), time-stepping resets at each time-point defined in the cyclic-loading table. The defined time points are always respected.

Example 6.5: Defining Time-Stepping Parameters for a Time-Point Range

CLOAD,TSTEP    ! enable time-point range time-stepping
NSUBST,1,20,1  ! time-stepping command

6.1.1.5.2.1. Predictor Behavior

By default, the program disables the predictor at each defined table time point. You can set the predictor to remain enabled if desired (PRED,ON,,ON).

6.1.1.6. Step 6. Select Output Time Points

Writing all results for all substeps can lead to very large results (.rst) files.

To reduce the .rst file size, you can set output for specific time points only (CLOAD,OUTR), such as A and B in Figure 6.1: Time Points and Ranges in a Cyclic-Loading Table. Used with the key-time array option (OUTRES,,%array%), defined output points are required for only one cycle.

If you limit output to specific time points, results are output for each cycle by default. You can adjust the results frequency to output results at a specified cycle frequency (for example, every 10 cycles). Any key-time array point defined must also be a defined time-point in the cyclic-loading table.

Example 6.6: Selecting Output Time Points

*dim,timvals,array,2
timvals(1)=0.25
timvals(2)=1.2
OUTRES,ALL,%timvals%
CLOAD,OUTR,10   ! output every 10 cycles

6.1.1.7. Step 7. Solve the Cyclic-Loading Analysis

Initiate the solution process (SOLVE). The program repeats the loading cycles for the specified number of times. The final solution time is therefore CYCTIME x CYCNUM. Do not enter a time value (TIME) for a cyclic-loading analysis solution.

Each cyclic-loading analysis solution occurs in a single load step with multiple substeps. All cycles are part of the same load step.

Load-step output includes information about the cyclic-loading analysis:

A cyclic-loading solution can be combined with a standard analysis solution in any order and combination. Different cyclic-loading solutions can have different cycle lengths. A single analysis can include multiple solutions of either type. For a standard solution, input the end time of the solution (TIME); otherwise, the program increments the prior load-step time value by 1.

If your analysis has multiple cyclic-loading solutions, be sure to perform the following tasks for each solution before issuing its associated SOLVE command:

  • Specify the number of cycles (CLOAD,CYCNUM) and the cycle time (CLOAD,CYCTIME).

  • Apply a cyclic-loading load tables or tables.

Example 6.7: Cyclic Loading and Standard Solutions in a Single Analysis

! Load step 1: Standard SOLVE
! define solution options
…
TIME, 500
SOLVE

! Load step 2: Cyclic-Loading SOLVE
! define solution options
…
! apply cyclic load table(s)
NSEL, S, LOC, Y, 10
D,All,UY,%_cycload1%

CLOAD,CYCNUM,10
CLOAD,CYCTIME,20   ! No TIME command entered
SOLVE

! Load step 3: Cyclic-Loading SOLVE
! define solution options
…
! apply cyclic load table(s)
NSEL, S, LOC, Y, 10
D,All,UY,%_cycload1%

CLOAD,CYCNUM,5
CLOAD,CYCTIME,20   ! No TIME command entered
SOLVE

! Load step 4: Standard SOLVE
! define solution options
…
TIME, 900
SOLVE

All loads such as degree-of-freedom constraints, forces, surface loads, and body force loads can be used for cyclic loading. The load must be entered as table. The start and end load values of the load table should be the same to prevent unexpected large load increments when cyclic loading occurs.

In this figure, the applied force load is ramped up to the starting value of the cyclic loading, and the cyclic loading has identical beginning and ending values:

Figure 6.4: Analysis with Two Standard Solutions Followed by a Cyclic-Loading Analysis

Analysis with Two Standard Solutions Followed by a Cyclic-Loading Analysis

A cyclic-loading analysis can be performed independent of a cycle-jump analysis .

6.1.2. Multicycle Cyclic-Loading Analysis

The multicycle cyclic-loading analysis is useful for defining the fatigue load table for applications such as rainflow counting. This method allows for the primary cyclic-loading table to have subcycles, with each subcycle having its own number of cycles. Furthermore, the primary cycle can have its own number of cycles.

The following topics are available for multicycle cyclic-loading analysis:

6.1.2.1. Understanding Multicycle Cyclic Loading

Consider this cyclic-loading table consisting of a primary cycle and a number of subcycles:

Figure 6.5: Multicycle Cyclic-Loading Example

Multicycle Cyclic-Loading Example

  • Subcycle A: From time-point P1 to P2. Number of cycles = 4.

  • Ramp B: From time-point P2 to P3.

  • Subcycle C: From time-point P3 to P4. Number of cycles = 6.

  • Subcycle D: From time-point P4 to P5. Number of cycles = 2.

  • Ramp E: From time-point P5 to P6.

The multicycle cyclic-loading table example is equivalent to the following loading:

Figure 6.6: Cyclic-Loading Example

Cyclic-Loading Example

Loading for a multicycle cyclic-loading solution is possible by stitching together multiple standard cyclic-loading solutions and standard analysis solutions. Doing so, however, requires multiple SOLVE commands, one for each load step.

With the multicycle cyclic-loading method, the entire solution occurs in a single load step requiring one SOLVE command, leading to a more efficient, less computationally demanding solution.

6.1.2.2. Multicycle Cyclic-Loading Analysis Process

Performing a multicycle cyclic-load analysis is similar to performing a standard cyclic-loading analysis with several key differences.

6.1.2.2.1. Step 1: Define the Tabular Array

An additional dimension is required in the multicycle table to define the number of cycles for each subcycle. Set the second dimension to 2 (*DIM).

Example 6.8: Defining Multicycle Cyclic-Loading Tables

CLOAD,DEFINE,BEGIN
*DIM,_cycload1,TABLE,16,2
*DIM,_cycload2,TABLE,16,2
CLOAD,DEFINE,END

Multicycle cyclic-loading tables to be applied in the same cyclic-loading load step must have the same dimensions.

Load tables not specified as cyclic-loading tables (CLOAD,DEFINE) as shown are not cyclically repeated.

6.1.2.2.2. Step 2: Specify the Cyclic-Loading Table Values

The multicycle table data is input into a single table. Column 0 contains the time-points, column 1 contains the load values, and column 2 contains the number of cycles for each subcycle.

Specifying the time values:

The table time value must start at 0. Each subcycle time value must start at 0, and each new 0 represents a new subcycle.
Example: The time values for five subcycles are specified, with values of 0 specified at each new subcycle.

Specifying the load values:

The starting and ending load values of the primary cycle must be identical.
Example: Load values _cycload2(1 ,1) and _cycload2(16 ,1) are the same.
The ending load value of each subcycle must be the same as the starting load value of the next subcycle.
Example: The ending load value of the first subcycle _cycload2(4 ,1) is the same as the starting load value of the second subcycle _cycload2(5 ,1). The ending load value of the second subcycle _cycload2(6 ,1) is the same as the starting load value of the third subcycle _cycload2(7 ,1), and so on.
Ramp loads are input as part of the multicycle table.
For example, as shown in Figure 6.5: Multicycle Cyclic-Loading Example, there is a ramp load from P2 to P3. The ramp is specified in the input below as the time values _cycload2(5 ,0) to _cycload2(6 ,0), and load values _cycload2(5 ,1) to _cycload2(6 ,1).

Specifying the number of cycles for each subcycle:

The number of cycles information is specified in the column index 2 position. The row index at which each subcycle cycle number is specified corresponds to the row index value at the beginning of each subcycle.
Example: For subcycle 1, the row index value for the start of the subcycle is 1, so the number of cycles is set at _cycload2(1 ,2). For subcycle 2, the row index value for the start of the subcycle is 5, so the number of cycles is set at _cycload2(5 ,2), and so on.
For ramp loads, the number of cycles must be assigned a value of -1. This value allows the program to distinguish it from a regular subcycle.

Example 6.9: Specifying Values in a Multicycle Cyclic-Loading Table

! Multicycle table !

! Time values
_cycload2(1 ,0) = 0      ! Time must start at 0.0
_cycload2(2 ,0) = 101
_cycload2(3 ,0) = 198
_cycload2(4 ,0) = 203

_cycload2(5 ,0) = 0      ! New 0 signifies new subcycle
_cycload2(6 ,0) = 7

_cycload2(7 ,0) = 0      ! New 0 signifies new subcycle
_cycload2(8 ,0) = 12
_cycload2(9 ,0) = 200

_cycload2(10,0) = 0      ! New 0 signifies new subcycle
_cycload2(11,0) = 5.5
_cycload2(12,0) = 20
_cycload2(13,0) = 70.3
_cycload2(14,0) = 100

_cycload2(15,0) = 0      ! New 0 signifies new subcycle
_cycload2(16,0) = 8

! Load values
_cycload2(1 ,1) = 0
_cycload2(2 ,1) = 0.2
_cycload2(3 ,1) = 0.3
_cycload2(4 ,1) = 0      ! End of subcycle value must match next value at start

_cycload2(5 ,1) = 0      ! Start of subcycle
_cycload2(6 ,1) = -0.1
_cycload2(7 ,1) = -0.1
_cycload2(8 ,1) = -0.2
_cycload2(9 ,1) = -0.1
_cycload2(10,1) = -0.1
_cycload2(11,1) = 0.15
_cycload2(12,1) = 0.2
_cycload2(13,1) = 0.2
_cycload2(14,1) = -0.1
_cycload2(15,1) = -0.1
_cycload2(16,1) = 0      ! End value must match start value

! Number of cycles for each subcycle value
! The index values correspond to index values at new 0 time values
_cycload2(1 ,2) = 4    
_cycload2(5 ,2) = -1     ! Ramp load--table values do not end in the same loading value
_cycload2(7 ,2) = 6
_cycload2(10 ,2) = 2
_cycload2(15 ,2) = -1    ! Ramp load

If a cyclic-loading load step has multiple cyclic-loading tables, each must have the same time values. Therefore, if there are multiple multicycle cyclic-loading tables in a given cyclic-loading load step, each must have the same subcycle number of cycles data as well.

6.1.2.2.3. Step 3: Apply the Cyclic-Loading Table(s)

Apply the multicycle loading tables as you would in a standard cyclic-loading analysis.

6.1.2.2.4. Step 4. Specify Cyclic-Loading Parameters

Unlike a standard cyclic-loading analysis, the length of the primary loading cycle is not specified and CLOAD,CYCTIME is not used. Instead, the program determines the length of the primary loading cycle based on the table time values and the number of cycles of each subcycle.

Set the number of subcycles for a multicycle cyclic-loading load step (CLOAD,MSUB). Setting this value is necessary only once per multicycle cyclic-loading load step, even multiple tables exist in the same load step.

Define the total number of cycles for the primary cycle (CLOAD,CYCNUM).

Example 6.10: Defining Cyclic-Loading Parameters

CLOAD,MSUB,5      ! Define number of subcycles
CLOAD,CYCNUM,10   ! total number of primary cycles

6.1.2.2.5. Step 5. Specify Time-Stepping Parameters

Specify the time-stepping parameters as you would for a standard cyclic-loading solution.

6.1.2.2.6. Step 6. Select Output Time Points

You can set the output for specific time points only, similar to a standard cyclic-loading solution.

For a multicycle solution, the time values in the key-time array option are with respect to the primary cycle. That is, although you enter the information for the multicycle table only as shown in Figure 6.5: Multicycle Cyclic-Loading Example, any time value specified must be as shown in Figure 6.6: Cyclic-Loading Example.

Specify the time value for the first primary cycle only. The time values should be less than the time length of the primary cycle.

Calculate the time values manually (with respect to time 0) for which outputs are desired, as they may not be values specified when defining the multicycle table.

For example, as shown Figure 6.6: Cyclic-Loading Example, specify only the time value PB1 in the first primary cycle; the results are output in subsequent cycles at the same relative value PB1. The same applies for PB2.

Depending on the time points you specify for output (CLOAD,OUTR), results are output at the specified frequency with respect to the primary cycle.

Example 6.11: Selecting Output Time Points

*dim,timvals,array,2
timvals(1)= 710     ! absolute value in 1st primary cycle
timvals(2)= 1224    ! absolute value in 1st primary cycle
OUTRES,ALL,%timvals%
CLOAD,OUTR,5   ! output every 5 cycles wrt the primary cycle

6.1.2.2.7. Step 7. Solve the Cyclic-Loading Analysis

Initiate the solution as you would for a standard cyclic-loading analysis.

Example 6.12: Load Step Output for Multicycle Cyclic-Loading Analysis


You can combine a multicycle cyclic-loading solution with a standard solution and/or a standard cyclic-loading solution in any order and combination.

A multicycle cyclic-loading analysis cannot be combined with a cycle-jump analysis.

6.1.3. Restarting a Cyclic-Loading Analysis

A multiframe restart can resume a job at any point in a cyclic-loading analysis for which information is saved. The program will automatically complete the cyclic-loading analysis until the cyclic-loading end point. For example, if the cyclic-loading analysis consists of 100 cycles and the restart point is at some location in the 60th cycle, the restart analysis will commence at the restart point and run until the 100th cycle.

The following is an example of a typical multiframe restart of a cyclic-loading analysis.

Example 6.13: Multiframe Restart of a Cyclic-Loading Analysis

/SOLU
...

! Define cload table
...

! Apply cyclic load table
nsel,s,loc,z,1
sf,all,pres,%_cycload%
allsel

! Solution parameters
OUTRES,ALL,ALL
nsubst,20,100,8
... 

! Define cyclic loading analysis parameters
CLOAD,CYCNUM,5
CLOAD,CYCTIME,2.5

! Restart parameters
!RESCONTROL, Action, Ldstep, Frequency, MAXFILES,
rescontrol,        ,    2,       25,
solve

rescontrol,file_summary
save,file,db

finish

!*************** RESTART ***************
/clear,nostart
resume,file,db
finish

/solu
! Restart point
antype,static,restart,2,25,continue

allsel
solve
finish


6.1.4. Cyclic-Loading Analysis Limitations

The following limitations apply to cyclic loading: