Title: | Calculate Earth’s Obliquity and Precession in the Past |
---|---|
Description: | Easily calculate precession and obliquity from an orbital solution (defaults to ZB18a from Zeebe and Lourens (2019) <doi:10.1126/science.aax0612>) and assumed or reconstructed values for dynamical ellipticity (Ed) and tidal dissipation (Td). This is a translation and adaptation of the 'C'-code in the supplementary material to Zeebe and Lourens (2022) <doi:10.1029/2021PA004349>, with further details on the methodology described in Zeebe (2022) <doi:10.3847/1538-3881/ac80f8>. The name of the 'C'-routine is 'snvec', which refers to the key units of computation: spin vector s and orbit normal vector n. |
Authors: | Ilja Kocken [aut, cre, trl, cph]
|
Maintainer: | Ilja Kocken <[email protected]> |
License: | GPL (>= 3) |
Version: | 3.10.1.9000 |
Built: | 2025-03-10 14:19:52 UTC |
Source: | https://github.com/japhir/snvecr |
The full ZB18a solution spans the past 100 Myr.
It contains the HNBody output of Zeebe & Lourens (2019) after some pre-processing using
prepare_solution()
. The wikipedia page on Orbital elements describes what the
components relate to in order to uniquely specify an orbital plane.
get_solution("full-ZB18a")
A data frame with 250,001 rows and 20 columns:
Time (days).
Time in thousands of years (kyr).
Semimajor axis in astronomical units (au).
Eccentricity (unitless).
Inclination (degrees).
Longitude of perihelion (degrees).
Longitude of the ascending node (degrees).
Argument of perihelion (degrees).
Mean anomaly (degrees).
The following columns were computed from the above input with prepare_solution()
:
Unwrapped longitude of perihelion (degrees
without jumps).
Unwrapped longitude of the ascending node
(degrees without jumps).
Variable: .
Variable: .
Variable: .
Variable: .
Helper: .
Helper: .
The ,
, and
-components of the
Eart's orbit unit normal vector
, normal to Earth's
instantaneous orbital plane.
All astronomical solutions by Zeebe can be found on http://www.soest.hawaii.edu/oceanography/faculty/zeebe_files/Astro.html.
They can be loaded into R quickly, using get_solution()
.
Zeebe, R. E., & Lourens, L. J. (2019). Solar System chaos and the Paleocene–Eocene boundary age constrained by geology and astronomy. Science, 365(6456), 926–929. doi:10.1126/science.aax0612.
Zeebe, R. E. and Lourens, L. J. (2022). A deep-time dating tool for paleo-applications utilizing obliquity and precession cycles: The role of dynamical ellipticity and tidal dissipation. Paleoceanography and Paleoclimatology. doi:10.1029/2021PA004349
get_solution()
downloads an astronomical solution and stores it in the user's cache
directory. The next time the function is called, it will load the data from
the cache rather than downloading it again.
get_solution( astronomical_solution = "full-ZB18a", quiet = FALSE, force = FALSE )
get_solution( astronomical_solution = "full-ZB18a", quiet = FALSE, force = FALSE )
astronomical_solution |
Character vector with the name of the desired
solution. Defaults to |
quiet |
Be quiet?
|
force |
Force re-downloading the results, even if the solution is saved to the cache. |
All astronomical solutions by Zeebe can be found on http://www.soest.hawaii.edu/oceanography/faculty/zeebe_files/Astro.html. Supported solutions include:
See their respective documentation pages for details and citations.
This also provides a wrapper for astrochron::getLaskar()
if one of
"La04"
, "La10a"
, "La10b"
, "La10c"
, "La10d"
, or "La11"
is
specified, but converts the output to a tibble.
Note that we do not cache these solutions locally, however.
It is possible to change the location of the cache directory with
options(snvecR.cachedir = "/path/to/cache")
.
A tibble with the astronomical solution (and some preprocessed new columns).
Zeebe, R. E., & Lourens, L. J. (2019). Solar System chaos and the Paleocene–Eocene boundary age constrained by geology and astronomy. Science, 365(6456), 926–929. doi:10.1126/science.aax0612.
Zeebe, R. E. and Lourens, L. J. (2022). A deep-time dating tool for paleo-applications utilizing obliquity and precession cycles: The role of dynamical ellipticity and tidal dissipation. Paleoceanography and Paleoclimatology. doi:10.1029/2021PA004349
prepare_solution, full_ZB18a, ZB17, ZB18a_100, ZB18a_300 ZB20, ZB23, PT_ZB18a
get_solution("full-ZB18a") # input for snvec get_solution("ZB18a-300") # eccentricity get_solution("ZB20a") get_solution("La11") get_solution("PT-ZB18a(1,1)") # pre-computed precession-tilt get_solution("ZB23.R01") # one of the 3.6 Gyr solutions
get_solution("full-ZB18a") # input for snvec get_solution("ZB18a-300") # eccentricity get_solution("ZB20a") get_solution("La11") get_solution("PT-ZB18a(1,1)") # pre-computed precession-tilt get_solution("ZB23.R01") # one of the 3.6 Gyr solutions
prepare_solution()
calculates helper columns from an astronomical solution input.
prepare_solution(data, quiet = FALSE)
prepare_solution(data, quiet = FALSE)
data |
A data frame with the following columns:
The easiest way to get this is with |
quiet |
Be quiet?
|
New columns include:
lphu
Unwrapped longitude of perihelion (degrees without
jumps).
lanu
Unwrapped longitude of the ascending node (degrees
without jumps).
hh
Variable: .
kk
Variable: .
pp
Variable: .
qq
Variable: .
cc
Helper: .
dd
Helper: .
nnx
, nny
, nnz
The ,
, and
-components of the
Earth's orbit unit normal vector
, normal to Earth's
instantaneous orbital plane.
A tibble with the new columns added.
The pre-computed precession-tilt solutions PT-ZB18a(Ed,Td) span the past 100 Myr. Available solutions include all combinations of dynamical ellipticity values between 0.9950 and 1.0050 in increments of 0.0010 and tidal dissipation values between 0.000 and 1.2000 in increments of 0.1.
get_solution("PT-ZB18a(1.000,1.000)")
A data frame with 249,480 rows and 4 columns:
Time in thousands of years (kyr).
Obliqity (radians).
Axial Precession (radians).
Climatic Precession (unitless).
All astronomical solutions by Zeebe can be found on http://www.soest.hawaii.edu/oceanography/faculty/zeebe_files/Astro.html.
They can be loaded into R quickly, using get_solution()
.
Zeebe, R. E. and Lourens, L. J. (2022). Geologically constrained astronomical solutions for the Cenozoic era. Earth and Planetary Science Letters. doi:10.1016/j.epsl.2022.117595
snvec()
computes climatic precession and obliquity (or tilt) from an
astronomical solution (AS) input and input values for dynamical ellipticity
() and tidal dissipation (
). It solves a set
of ordinary differential equations.
snvec( tend = -1000, ed = 1, td = 0, astronomical_solution = "full-ZB18a", os_ref_frame = "HCI", os_omt = NULL, os_inct = NULL, tres = -0.4, atol = 1e-05, rtol = 0, solver = "vode", quiet = FALSE, output = "nice" )
snvec( tend = -1000, ed = 1, td = 0, astronomical_solution = "full-ZB18a", os_ref_frame = "HCI", os_omt = NULL, os_inct = NULL, tres = -0.4, atol = 1e-05, rtol = 0, solver = "vode", quiet = FALSE, output = "nice" )
tend |
Final timestep in thousands of years (kyr).
Defaults to |
ed |
Dynamical ellipticity |
td |
Tidal dissipation |
astronomical_solution |
Character vector with the name of the desired
solution. Defaults to |
os_ref_frame |
Character vector with the reference frame of the astronomical
solution. Either |
os_omt |
Longitude of ascending node of the solar equator relative to ECLIPJ2000. |
os_inct |
Inclination of the solar equator relative to ECLIPJ2000. |
tres |
Output timestep resolution in thousands of years (kyr). Defaults
to |
atol |
Numerical absolute tolerance passed to |
rtol |
Numerical relative tolerance passed to |
solver |
Character vector specifying the method passed to
|
quiet |
Be quiet?
|
output |
Character vector with name of desired output. One of: |
This is a re-implementation of the C-code in the supplementary information of Zeebe & Lourens (2022). The terms are explained in detail in Zeebe (2022).
snvec()
returns different output depending on the outputs
argument.
If output = "nice"
(the default), returns a
tibble with the following columns:
time
Time in thousands of years (kyr).
epl
Calculated Obliquity (radians).
phi
Calculated Precession (radians) from ECLIPJ2000.
lpx
Calculated Longitude of Perihelion with respect to the moving node .
cp
Calculated Climatic precession (-) as .
where is the longitude of perihelion relative to the moving equinox.
If output = "all"
(for developers), additional columns are included,
typically interpolated to output timescale.
sx
, sy
, sz
The ,
, and
-components of Earth's
spin axis unit vector
in the heliocentric inertial
reference frame.
See the source code for descriptions of all the intermediate computational steps.
If output = "ode"
, it will return the raw output of the ODE solver, which
is an object of class deSolve
and matrix
, with columns time
, sx
,
sy
, and sz
. This can be useful for i.e. deSolve::diagnostics()
.
NASA provides their asteroid and planet positions in the ecliptic J2000 reference frame, while long-term astronomical solution integrations are often performed in the heliocentric inertial reference frame (HCI) or in the inertial reference frame. This is to align the reference frame with the spin vector of the Sun, making J2 corrections intuitive to implement.
Obliquity is typically given in the ecliptic reference frame, so snvec
converts all outputs to J2000 if the os_ref_frame
is equal to "HCI"
and
does no transformations if it is already in "J2000"
.
For this, it uses and
as in Zeebe (2017). You can overwrite
these defaults with
os_omt
and os_inct
if desired.
Note that the different ODE solver algorithm we use (Soetaert et al.,
2010) means that the R routine returns an evenly-spaced time grid, whereas
the C-routine has a variable time-step.
This means we need to explicitly set the stepsize tres
.
Zeebe, R.E. (2017). Numerical Solutions for the Orbital Motion of the Solar System over the Past 100 Myr: Limits and New Results. The Astronomical Journal, 154(5), doi:10.3847/1538-3881/aa8cce.
Zeebe, R. E., & Lourens, L. J. (2019). Solar System chaos and the Paleocene–Eocene boundary age constrained by geology and astronomy. Science, 365(6456), 926–929. doi:10.1126/science.aax0612.
Zeebe, R. E., & Lourens, L. J. (2022). A deep-time dating tool for paleo-applications utilizing obliquity and precession cycles: The role of dynamical ellipticity and tidal dissipation. Paleoceanography and Paleoclimatology, e2021PA004349. doi:10.1029/2021PA004349.
Zeebe, R. E. (2022). Reduced Variations in Earth’s and Mars’ Orbital Inclination and Earth’s Obliquity from 58 to 48 Myr ago due to Solar System Chaos. The Astronomical Journal, 164(3), doi:10.3847/1538-3881/ac80f8.
Wikipedia page on Orbital Elements: https://en.wikipedia.org/wiki/Orbital_elements
Karline Soetaert, Thomas Petzoldt, R. Woodrow Setzer (2010). Solving Differential Equations in R: Package deSolve. Journal of Statistical Software, 33(9), 1–25. doi:10.18637/jss.v033.i09.
deSolve::ode()
from Soetaert et al., (2010) for the ODE solver that we
use.
get_solution()
Get astronomical solutions.
# default call snvec(tend = -1e3, ed = 1, td = 0, tres = -0.4)
# default call snvec(tend = -1e3, ed = 1, td = 0, tres = -0.4)
The ZB17x eccentricity solutions span the past 100 Myr.
Available solutions include "ZB17a"
, "ZB17b"
, "ZB17c"
, "ZB17d"
,
"ZB17e"
, "ZB17f"
, "ZB17h"
, "ZB17i"
, "ZB17j"
, "ZB17k"
, and
"ZB17p"
.
get_solution("ZB17x")
A data frame with 62,501 rows and 3 columns:
Time in thousands of years (kyr).
Eccentricity (unitless).
Inclination (degrees).
All astronomical solutions by Zeebe can be found on http://www.soest.hawaii.edu/oceanography/faculty/zeebe_files/Astro.html.
They can be loaded into R quickly, using get_solution()
.
Zeebe, R. E. (2017). Numerical Solutions for the orbital motion of the Solar System over the Past 100 Myr: Limits and new results. The Astronomical Journal. doi:10.3847/1538-3881/aa8cce
The ZB18a_100 eccentricity solution spans the past 100 Myr. See ZB18a_300 for the past 300 Myr.
get_solution("ZB18a-100")
A data frame with 62,501 rows and 3 columns:
Time in thousands of years (kyr).
Eccentricity (unitless).
Inclination (degrees).
All astronomical solutions by Zeebe can be found on http://www.soest.hawaii.edu/oceanography/faculty/zeebe_files/Astro.html.
They can be loaded into R quickly, using get_solution()
.
Zeebe, R. E., & Lourens, L. J. (2019). Solar System chaos and the Paleocene–Eocene boundary age constrained by geology and astronomy. Science, 365(6456), 926–929. doi:10.1126/science.aax0612.'
The ZB18a_300 eccentricity solution spans the past 300 Myr. See ZB18a_100 for the past 100 Myr.
get_solution("ZB18a-300")
A data frame with 187,501 rows and 3 columns:
Time in thousands of years (kyr).
Eccentricity (unitless).
Inclination
(degrees).
All astronomical solutions by Zeebe can be found on http://www.soest.hawaii.edu/oceanography/faculty/zeebe_files/Astro.html.
They can be loaded into R quickly, using get_solution()
.
Zeebe, R. E., & Lourens, L. J. (2019). Solar System chaos and the Paleocene–Eocene boundary age constrained by geology and astronomy. Science, 365(6456), 926–929. doi:10.1126/science.aax0612.'
Zeebe, R. E. and Lourens, L. J. (2022). Geologically constrained astronomical solutions for the Cenozoic era. Earth and Planetary Science Letters. doi:10.1016/j.epsl.2022.117595
The ZB20x eccentricity solutions span the past 300 Myr. Available solutions
include "ZB20a"
, "ZB20b"
, "ZB20c"
, and "ZB20d"
.
get_solution("ZB20x")
A data frame with 187,501 rows and 3 columns:
Time in thousands of years (kyr).
Eccentricity (unitless).
Inclination (degrees).
All astronomical solutions by Zeebe can be found on http://www.soest.hawaii.edu/oceanography/faculty/zeebe_files/Astro.html.
They can be loaded into R quickly, using get_solution()
.
Zeebe, R. E. and Lourens, L. J. (2022). Geologically constrained astronomical solutions for the Cenozoic era. Earth and Planetary Science Letters. doi:10.1016/j.epsl.2022.117595
The ZB23.Rxx eccentricity solutions spand the past 3.6 Gyr. Available solutions include
"ZB23.R01"
to "ZB23.R60"
and "ZB23.R62"
to "ZB23.R64"
.
get_solution("ZB23.Rxx")
A data frame with 8,750,001 rows and 5 columns:
Time in thousands of years (kyr).
Eccentricity (unitless).
Inclination (radians).
Obliqity (radians).
Climatic Precession (unitless).
All astronomical solutions by Zeebe can be found on http://www.soest.hawaii.edu/oceanography/faculty/zeebe_files/Astro.html.
They can be loaded into R quickly, using get_solution()
.
Zeebe, R. E. and Lourens, L. J. (2022). Geologically constrained astronomical solutions for the Cenozoic era. Earth and Planetary Science Letters. doi:10.1016/j.epsl.2022.117595