forcing

class lowEBMs.Packages.Functions.forcing[source]

Bases: object

Class defining radiative forcing terms

Radiative forcing essentially can be comprehended as manipulation of the solar insolation which defines the amount of energy available in the system. This class defines terms which change the amount of energy in the system which can be derived from properties of the system (e.g. atmospheric CO2-concentrations). One has to be cautious when operating with these forcing because they are only used to mimic a radiative forcing detached from the systems propagation and therefore don’t represent interactions of the property which causes the forcing (e.g. the carbon cycle is not considered, only measured or projected trends).

random The random forcing mimics randomly occuring radiative forcing events.
predefined The predefined forcing imports data containing external radiative forcings.
co2_myhre The co2_myhre forcing calculates a radiative forcing from imported atmospheric CO2 conenctration data.
lowEBMs.Packages.Functions.forcing.random(self, funcparam)

The random forcing mimics randomly occuring radiative forcing events.

The random forcing is mainly used to mimic volcanic eruptions which are based on the idea that dust clouds, appearing after volcanic eruptions, affect the radiative balance. The consequence of an eruption is a negative radiative forcing over a specific time which generally causes a decrease in temperature, depending on the time and strentgh the forcing acts.

With this module such events are randomly generated. The parameters which have to be provided will determine a rough guess of frequency, strength and length of the events and many more. By setting a time of start and stop, this can be used to turn on/off the random radiative forcing for specifc times.

Function-call arguments

Parameters:funcparams (dict) –
  • forcingnumber the number of the radiative forcing term (relevant if multiple forcings are used)
    • type: int
    • unit: -
    • value: 0, 1,…
  • start: The time when the forcing starts
    • type: float
    • unit: depending on timeunit
    • value: any
  • stop: The time when the forcing stops
    • type: float
    • unit: depending on timeunit
    • value: any
  • steps: The amount of steps (timeresolution) between start and stop
    • type: int
    • unit: -
    • value: any (preferably the same as builtins.stepsize_of_integration)
  • timeunit: The unit of time for the forcing
    • type: string
    • unit: -
    • value: ‘minute’, ‘hour’, ‘day’, ‘week’, ‘month’, ‘year’ (if none, seconds are used)
  • strength: The maximal radiative forcing which can be randomly generated
    • type: float
    • unit: -
    • value: any
  • frequency: A classification how often an event occurs. Creates a window of frequency, from a minimal duration between two events towards a maximal from which the duration to the next event is randomly chosen.
    • type: string
    • unit: -
    • value: options
      • ’common’: the next event is in the following 0-4 steps/total_steps
      • ’intermediate’: the next event is in the following 4-12 steps/total_steps
      • ’rare’: the next event is in the following 12-30 steps/total_steps
      • ’superrare’: the next event is in the following 30-60 steps/total_steps
  • behaviour: The behaviour/shape of the radiative forcing
    • type: string
    • unit: -
    • value: options
      • ’step’: radiative forcing acts as stepfunction with width of one step defined by lifetime
      • ’exponential’: radiative forcing acts exponentially with a halflife defined by *lifetime*s
  • lifetime: The length on event appears (coupled to behaviour)
    • type: float
    • unit: depending on timeunit
    • value: any
  • seed: Indicates whether the random numbers are generated from a specific seed (for comparison)
    • type: int
    • unit: -
    • value: any (if None, every call is random)
  • sign: The sign of the resulting radiative forcing
    • type: string
    • unit: -
    • value: ‘negative’, ‘positive’
Returns:A randomly generated radiative forcing
Return type:float
lowEBMs.Packages.Functions.forcing.predefined(self, funcparam)

The predefined forcing imports data containing external radiative forcings.

This module imports radiative forcing data given as change in energy (\(Watt \cdot meter^{-2}\)) and applies it to the model run.

Function-call arguments

Parameters:funcparams (dict) –
  • forcingnumber the number of the radiative forcing term (relevant if multiple forcings are used)
    • type: int
    • unit: -
    • value: 0, 1,…
  • datapath: The path to the file (give full path or relative path!)
    • type: string
    • unit: -
    • value: example: ‘/insert/path/to/file’
  • name: The name of the file which is used
    • type: string
    • unit: -
    • value: example: ‘datafile.txt’
  • delimiter: How the data is delimited in the file
    • type: string
    • unit: -
    • value: example: ‘,’
  • header: The number of header rows to exclude
    • type: int
    • unit: -
    • value: any
  • col_time: The column where the time is stored
    • type: int
    • unit: -
    • value: any
  • col_forcing: The column where the forcing in stored
    • type: int
    • unit: -
    • value: any
  • timeunit: The unit of time which is used in the file to convert it to seconds
    • type: string
    • unit: -
    • value: ‘minute’, ‘hour’, ‘day’, ‘week’, ‘month’, ‘year’ (if none, seconds are used)
  • BP: If the time is given as “Before present”
    • type: boolean
    • unit: -
    • value: True / False
  • time_start: The time of the first entry (or the time when is should be started to apply it)
    • type: float
    • unit: depending timeunit
    • value: any
  • k: Scaling factor
    • type: float
    • unit: -
    • value: any
Returns:The radiative forcing for a specific time imported from a data file
Return type:float
lowEBMs.Packages.Functions.forcing.co2_myhre(self, funcparam)

The co2_myhre forcing calculates a radiative forcing from imported atmospheric CO2 conenctration data.

This module imports atmospheric CO2 concentrations from a data file and converts them to a change in energy \(F_{CO2}\) (\(W/m^2\)) after Myhre (1998):

\[F_{CO2}= A\cdot ln(C / C_0)\]

With the atmospheric CO2 concentration \(C\) (\(ppmv\)), the preindustrial atmospheric CO2 concentration \(C_0\) and an empricial constant A (\(5.35\;W/m^2\)).

Function-call arguments

Parameters:funcparams (dict) –
  • A The empirical constant A
    • type: float
    • unit: \(Watt \cdot meter^{-2}\)
    • value: 5.35
  • C_0: The preindustrial atmospheric CO2 concentration
    • type: float
    • unit: \(ppmv\)
    • value: 280
  • C02_base: The CO2 concentration to use before the forcing starts and after it ends
    • type: float
    • unit: \(ppmv\)
    • value: any
  • datapath: The path to the file (give full path or relative path!)
    • type: string
    • unit: -
    • value: example: ‘/insert/path/to/file’
  • name: The name of the file which is used
    • type: string
    • unit: -
    • value: example: ‘datafile.txt’
  • delimiter: How the data is delimited in the file
    • type: string
    • unit: -
    • value: example: ‘,’
  • header: The number of header rows to exclude
    • type: int
    • unit: -
    • value: any
  • footer: The number of footer rows to exclude
    • type: int
    • unit: -
    • value: any
  • col_time: The column where the time is stored
    • type: int
    • unit: -
    • value: any
  • col_conc: The column where the concentration in stored
    • type: int
    • unit: -
    • value: any
  • timeunit: The unit of time which is used in the file to convert it to seconds
    • type: string
    • unit: -
    • value: ‘minute’, ‘hour’, ‘day’, ‘week’, ‘month’, ‘year’ (if none, seconds are used)
  • BP: If the time is given as “Before present”
    • type: boolean
    • unit: -
    • value: True / False
  • time_start: The time of the first entry (or the time when is should be started to apply it)
    • type: float
    • unit: depending timeunit
    • value: any
Returns:The radiative forcing for a specific time calculated from atmospheric CO2-concentrations imported from a data file
Return type:float