utils.forcing.create_periodic_forcing
utils.forcing.create_periodic_forcing(
periods_powers,
desired_amplitude=1,
y0=0,
duration=None,
)Build a composite periodic forcing from normalised sine components.
Component amplitudes are rescaled so their summed peak amplitude equals desired_amplitude.
Parameters
periods_powers : sequence of (float, float)-
Sequence of
(period, power)pairs. Eachperiodmust be > 0.powersets the relative weight of that component. desired_amplitude : float = 1-
Peak amplitude of the composite signal. Default 1.
y0 : float = 0-
Constant offset. Default 0.
duration : float = None-
If given, returns a :class:
~climatecritters.core.ForcingElement. If omitted, returns an indefinite :class:~climatecritters.core.Forcing.
Returns
: Forcing or ForcingElement
Examples
import matplotlib.pyplot as plt
from climatecritters.utils.forcing import create_periodic_forcing
# Milankovitch-like: 100 kyr eccentricity + 41 kyr obliquity
orbital = create_periodic_forcing([(100, 0.6), (41, 0.4)], desired_amplitude=25.0)
fig, ax = orbital.plot(t_span=(0, 500))
ax.set_xlabel('time (kyr)'); ax.set_ylabel('forcing (W m⁻²)')
plt.savefig('docs/reference/figures/create_periodic_forcing_example.png',
dpi=150, bbox_inches='tight')