digraph inheritancead427aefdc { bgcolor=transparent; rankdir=LR; ratio=expand; size=""; "OrbitalCycles" [URL="#climlab.solar.orbital_cycles.OrbitalCycles",dirType=back,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=14,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; }
class climlab.solar.orbital_cycles.OrbitalCycles(model, kyear_start=-20.0, kyear_stop=0.0, segment_length_years=100.0, orbital_year_factor=1.0, verbose=True)[source]

Bases: object

Automatically integrates a process through changes in orbital parameters.

OrbitalCycles is a module for setting up long integrations of climlab processes over orbital cycles.

The duration between integration start and end time is partitioned in time segments over which the orbital parameters are held constant. The process is integrated over every time segment and the process state Ts is stored for each segment.

The storage arrays are saving:

  • current model state at end of each segment

  • model state averaged over last integrated year of each segment

  • global mean of averaged model state over last integrated year of each segment


Input kyear is thousands of years after present. For years before present, use kyear < 0.

Initialization parameters

  • model (TimeDependentProcess) – a time dependent process

  • kyear_start (float) –

    integration start time.

    As time reference is present, argument should be \(<0\) for time before present.

    • unit: kiloyears

    • default value: -20.

  • kyear_stop (float) –

    integration stop time.

    As time reference is present, argument should be \(\le 0\) for time before present.

    • unit: kiloyears

    • default value: 0.

  • segment_length_years (float) – is the length of each integration with fixed orbital parameters. [default: 100.]

  • orbital_year_factor (float) – is an optional speed-up to the orbital cycles. [default: 1.]

  • verbose (bool) – prints product of calculation and information about computation progress [default: True]

Object attributes

Following object attributes are generated during initialization:

  • model (TimeDependentProcess) – timedependent process to be integrated

  • kyear_start (float) – integration start time

  • kyear_stop (float) – integration stop time

  • segment_length_years (float) – length of each integration with fixed orbital parameters

  • orbital_year_factor (float) – speed-up factor to the orbital cycles

  • verbose (bool) – print flag

  • num_segments (int) –

    number of segments with fixed oribtal parameters, calculated through:

    \[num_{seg} = \frac{-(kyear_{start}-kyear_{stop})*1000}{seg_{length} * orb_{factor}}\]

  • T_segments_global (array) – storage for global mean temperature for final year of each segment

  • T_segments (array) – storage for actual temperature at end of each segment

  • T_segments_annual (array) –

    storage for timeaveraged temperature over last year of segment

    dimension: (size(Ts), num_segments)

  • orb_kyear (array) – integration start time of all segments

  • orb (dict) – orbital parameters for last integrated segment


Integration of an energy balance model for 10,000 years with corresponding orbital parameters:

from climlab.model.ebm import EBM_seasonal
from climlab.solar.orbital_cycles import OrbitalCycles
from climlab.surface.albedo import StepFunctionAlbedo
ebm = EBM_seasonal()
print ebm

#  add an albedo feedback
albedo = StepFunctionAlbedo(state=ebm.state, **ebm.param)
ebm.add_subprocess('albedo', albedo)

#  start the integration
#  run for 10,000 orbital years, but only 1,000 model years
experiment = OrbitalCycles(ebm, kyear_start=-20, kyear_stop=-10,