Cycle Skipping

Frequently the analysis of cyclic loading is required to examine the influence of stress redistributions in structures. This type of analysis is used to see if the stresses are safely alleviated by cyclic plasticity, or if ratcheting strains can develop. These calculations are very costly because many loading increments are typically carried out for each cycle, and there may be hundreds of cycles of simulation. In Zebulon, cycle based solution extrapolation is available to greatly accelerate this type of calculation.

An example is given below for an axisymmetric specimen with non-uniform thermal loading and fixed end displacement. Due to thermal strain, the initial heating causes rapid compressive stress, and plasticity. Continued cycling relaxes the stress by redistribution of a plastic "ball" at the center of the specimen. The advancement of the plastic zone means that the simulation is never "steady state" even though the cumulation of evcum at the center axis become quite linear (see below).

This is a plot of the beginning load on the specimen.

The full simulation. In this case 150 cycles were skipped out of 240 total. More skipping would be possible with a lower precision...

The cumulation of inelastic strain equivalent with comparison between the cycle skip method and a full simulation. Note the automatic calculation of the number of cycles to be skipped from the ratio of first to second derivative with respect to cycle.

The input file follows (geometry is separate)

****calcul
 ***make_restart_file
   *time 221.0
   *file before_skip.rst

%
% These are the solution steps.. one pre-load sequence followed 
% by 240 cycles with 60. second cycle time. 
%
 ***resolution
  **sequence
    *time      1.
    *increment 1
  **cycles 240
    *dtime     10. 20. 10. 20.
    *increment 2 3 6 4
    *ratio     0.1
    *algorithm p1p2p3

%
% Use the Taylor series cycle skipping method. 
%
  **skip_cycles taylor_series
   *precision     0.1
   *during_cycles 6 290
   *use_sequence  1
   *extrapolate_from 1 2 3
   *check_with_component evcum
%
% Parameter sections are also known as field variables. any number
% are possible, and numerous formats are available for loading them
%
% file ../Identify/thermal1.node was copied to mechanical.data
% rec_size is the number of nodes 
%
***parameter
 **file temperature
  *node
  *rec_size 757
  *cycle_conversion 1. 1.e20 60.0
   0.                             uniform  23.0
   function 1.0+cycle*60.0;       file     mechanical.data  20
   function 1.0+ 10.0+cycle*60.0; file     mechanical.data  5
   function 1.0+ 14.0+cycle*60.0; file     mechanical.data  6
   function 1.0+ 18.0+cycle*60.0; file     mechanical.data  7
   function 1.0+ 22.0+cycle*60.0; file     mechanical.data  8
   function 1.0+ 26.0+cycle*60.0; file     mechanical.data  9
   function 1.0+ 30.0+cycle*60.0; file     mechanical.data  10
   function 1.0+ 32.0+cycle*60.0; file     mechanical.data  11
   function 1.0+ 34.0+cycle*60.0; file     mechanical.data  12
   function 1.0+ 36.0+cycle*60.0; file     mechanical.data  13
   function 1.0+ 38.0+cycle*60.0; file     mechanical.data  14
   function 1.0+ 40.0+cycle*60.0; file     mechanical.data  15
   function 1.0+ 44.0+cycle*60.0; file     mechanical.data  16
   function 1.0+ 48.0+cycle*60.0; file     mechanical.data  17
   function 1.0+ 52.0+cycle*60.0; file     mechanical.data  18
   function 1.0+ 56.0+cycle*60.0; file     mechanical.data  19
   function 1.0+ 60.0+cycle*60.0; file     mechanical.data  20

 %
 % left bottom and top are node sets.. simple BCs here
 %
 ***bc
  **impose_nodal_dof
    left   U1 0.0     
    bottom U2 0.0
    top    U2 0.0

 
 ***material
  *file mechanical.inp
  *integration theta_method_a 0.5 1.e-9 100

 %
 % This output is used for the contour plots.. 
 % The skip point is output 
 %
 ***output
  **frequency
   *sequence 1
  **save_parameter
  **contour 
  **value_at_integration
  **curve look.test
   *nset_var top U2
   *node_var couple1 temperature
   *node_var couple2 temperature
   *node_extrapolated 1 evcum
   
 %
 % This output generates curve data during the computation
 % so we don't have to post-process every time.
 % 
 ***output none
  **curve mechanical.test
   *nset_var top U2   
   *node_var couple1 temperature
   *node_var couple2 temperature
   *node_extrapolated 1   evcum
   *node_extrapolated 64  evcum
   *node_extrapolated 468 evcum
   *node_extrapolated 513 evcum
****return
   
%
% Elasto-viscoplastic material with thermal strain, 
% and kinematic hardening 
%
***behavior gen_evp
 **elasticity isotropic
    young temperature
      68.e3  20.0
      63.e3  200.0
      51.e3  300.0
      45.e3  400.0
    poisson 0.33
 **thermal_strain isotropic
    alpha temperature 
    21.4e-6  20.0
    23.0e-6  200.0
    23.7e-6  300.0
    24.2e-6  400.0
 **potential gen_evp ev
  *flow norton
    K    temperature
     300.  20.0
     260.  200.0
     180.  300.0
     150.  400.0
    n    temperature
      10.    20.0
      11.    200.0
      15.5   300.0
      12.0   400.0
  *isotropic constant
    R0 temperature
      56.    20.0 
      19.    200.0
      4.     300.0
      4.     400.0
  *kinematic nonlinear
    C temperature 
    35000.   20.0
    70000.   200.0
     2300.   300.0
     1000.   400.0
    D temperature
      460.   20.0
     1300.   200.0
      320.   300.0
      120.   400.0
***return