Package 'snvecR'

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] , Richard Zeebe [aut]
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

Help Index


Full Astronomical Solution ZB18a

Description

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.

Format

get_solution("full-ZB18a")

A data frame with 250,001 rows and 20 columns:

t

Time tt (days).

time

Time in thousands of years (kyr).

aa

Semimajor axis aa in astronomical units (au).

ee

Eccentricity ee (unitless).

inc

Inclination II (degrees).

lph

Longitude of perihelion ϖ\varpi (degrees).

lan

Longitude of the ascending node Ω\Omega (degrees).

arp

Argument of perihelion ω\omega (degrees).

mna

Mean anomaly MM (degrees).

The following columns were computed from the above input with prepare_solution():

lphu

Unwrapped longitude of perihelion ϖ\varpi (degrees without jumps).

lanu

Unwrapped longitude of the ascending node Ω\Omega (degrees without jumps).

hh

Variable: esin(ϖ)e\sin(\varpi).

kk

Variable: ecos(ϖ)e\cos(\varpi).

pp

Variable: 2sin(0.5I)sin(Ω)2\sin(0.5I)\sin(\Omega).

qq

Variable: 2sin(0.5I)cos(Ω)2\sin(0.5I)\cos(\Omega).

cc

Helper: cos(I)\cos(I).

dd

Helper: cos(I)/2\cos(I)/2.

nnx, nny, nnz

The xx, yy, and zz-components of the Eart's orbit unit normal vector n\vec{n}, normal to Earth's instantaneous orbital plane.

Source

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().

References

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

See Also

prepare_solution()


Get an Astronomical Solution

Description

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.

Usage

get_solution(
  astronomical_solution = "full-ZB18a",
  quiet = FALSE,
  force = FALSE
)

Arguments

astronomical_solution

Character vector with the name of the desired solution. Defaults to "full-ZB18a".

quiet

Be quiet?

  • If TRUE, hide info messages.

  • If FALSE (the default) print info messages and timing.

force

Force re-downloading the results, even if the solution is saved to the cache.

Details

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").

Value

A tibble with the astronomical solution (and some preprocessed new columns).

References

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

See Also

prepare_solution, full_ZB18a, ZB17, ZB18a_100, ZB18a_300 ZB20, ZB23, PT_ZB18a

Examples

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 Astronomical Solution

Description

prepare_solution() calculates helper columns from an astronomical solution input.

Usage

prepare_solution(data, quiet = FALSE)

Arguments

data

A data frame with the following columns:

  • t Time tt (days).

  • ee Eccentricity ee (unitless).

  • lph Longitude of perihelion ϖ\varpi (degrees).

  • lan Longitude of the ascending node Ω\Omega (degrees).

  • inc Inclination II (degrees).

The easiest way to get this is with get_solution().

quiet

Be quiet?

  • If TRUE, hide info messages.

  • If FALSE (the default) print info messages and timing.

Details

New columns include:

  • lphu Unwrapped longitude of perihelion ϖ\varpi (degrees without jumps).

  • lanu Unwrapped longitude of the ascending node Ω\Omega (degrees without jumps).

  • hh Variable: esin(ϖ)e\sin(\varpi).

  • kk Variable: ecos(ϖ)e\cos(\varpi).

  • pp Variable: 2sin(0.5I)sin(Ω)2\sin(0.5I)\sin(\Omega).

  • qq Variable: 2sin(0.5I)cos(Ω)2\sin(0.5I)\cos(\Omega).

  • cc Helper: cos(I)\cos(I).

  • dd Helper: cos(I)/2\cos(I)/2.

  • nnx, nny, nnz The xx, yy, and zz-components of the Earth's orbit unit normal vector n\vec{n}, normal to Earth's instantaneous orbital plane.

Value

A tibble with the new columns added.

See Also

get_solution()


Astronomical Solutions PT-ZB18a(Ed,Td)

Description

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.

Format

get_solution("PT-ZB18a(1.000,1.000)")

A data frame with 249,480 rows and 4 columns:

time

Time in thousands of years (kyr).

epl

Obliqity ϵ\epsilon (radians).

phi

Axial Precession ϕ\phi (radians).

cp

Climatic Precession esin(ωˉ)e \sin(\bar{\omega}) (unitless).

Source

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().

References

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


Calculate Earth’s Obliquity and Precession in the Past

Description

snvec() computes climatic precession and obliquity (or tilt) from an astronomical solution (AS) input and input values for dynamical ellipticity (EdE_{d}) and tidal dissipation (TdT_{d}). It solves a set of ordinary differential equations.

Usage

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"
)

Arguments

tend

Final timestep in thousands of years (kyr). Defaults to -1000 kyr.

ed

Dynamical ellipticity EdE_{d}, normalized to modern. Defaults to 1.0.

td

Tidal dissipation TdT_{d}, normalized to modern. Defaults to 0.0.

astronomical_solution

Character vector with the name of the desired solution. Defaults to "full-ZB18a".

os_ref_frame

Character vector with the reference frame of the astronomical solution. Either "HCI" for heliocentric inertial reference frame or "J2000" for ecliptic J2000 reference frame. Defaults to "HCI" for HNBody output.

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 -0.4. To determine the sign, think of from 0 to tend by timestep tres.

atol

Numerical absolute tolerance passed to deSolve::ode()'s atol. Defaults to 1e-5.

rtol

Numerical relative tolerance passed to deSolve::ode()'s rtol. Defaults to 0.

solver

Character vector specifying the method passed to deSolve::ode()'s method. Defaults to "vode" for stiff problems with a variable timestep.

quiet

Be quiet?

  • If TRUE, hide info messages.

  • If FALSE (the default) print info messages and timing.

output

Character vector with name of desired output. One of:

  • "nice" (the default) A tibble with the columns time, eei, epl, phi, cp.

  • "full" A tibble with all the computed and interpolated columns.

  • "ode" A matrix with the output of the ODE solver.

Details

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).

Value

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 ϵ\epsilon (radians).

  • phi Calculated Precession ϕ\phi (radians) from ECLIPJ2000.

  • lpx Calculated Longitude of Perihelion with respect to the moving node ωˉ\bar{\omega}.

  • cp Calculated Climatic precession (-) as esinωˉe\sin\bar{\omega}.

where ωˉ\bar{\omega} 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 xx, yy, and zz-components of Earth's spin axis unit vector s\vec{s} 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().

Reference Frames of Astronomical Solutions

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 Ω=75.5940\Omega_{\odot} = 75.5940 and i=7.155i_{\odot} = 7.155 as in Zeebe (2017). You can overwrite these defaults with os_omt and os_inct if desired.

ODE Solver

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.

References

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.

See Also

Examples

# default call
snvec(tend = -1e3, ed = 1, td = 0, tres = -0.4)

Astronomical Solutions ZB17

Description

The ZB17x eccentricity solutions span the past 100 Myr. Available solutions include "ZB17a", "ZB17b", "ZB17c", "ZB17d", "ZB17e", "ZB17f", "ZB17h", "ZB17i", "ZB17j", "ZB17k", and "ZB17p".

Format

get_solution("ZB17x")

A data frame with 62,501 rows and 3 columns:

time

Time in thousands of years (kyr).

ecc

Eccentricity ee (unitless).

inc

Inclination II (degrees).

Source

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().

References

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


Astronomical Solution ZB18a

Description

The ZB18a_100 eccentricity solution spans the past 100 Myr. See ZB18a_300 for the past 300 Myr.

Format

get_solution("ZB18a-100")

A data frame with 62,501 rows and 3 columns:

time

Time in thousands of years (kyr).

ecc

Eccentricity ee (unitless).

inc

Inclination II (degrees).

Source

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().

References

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.'


Astronomical Solution ZB18a

Description

The ZB18a_300 eccentricity solution spans the past 300 Myr. See ZB18a_100 for the past 100 Myr.

Format

get_solution("ZB18a-300")

A data frame with 187,501 rows and 3 columns:

time

Time in thousands of years (kyr).

ecc

Eccentricity ee (unitless).

inc

Inclination II (degrees).

Source

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().

References

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


Astronomical Solutions ZB20

Description

The ZB20x eccentricity solutions span the past 300 Myr. Available solutions include "ZB20a", "ZB20b", "ZB20c", and "ZB20d".

Format

get_solution("ZB20x")

A data frame with 187,501 rows and 3 columns:

time

Time in thousands of years (kyr).

ee

Eccentricity ee (unitless).

inc

Inclination II (degrees).

Source

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().

References

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


Astronomical Solutions ZB23.Rxx

Description

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".

Format

get_solution("ZB23.Rxx")

A data frame with 8,750,001 rows and 5 columns:

time

Time in thousands of years (kyr).

ecc

Eccentricity ee (unitless).

inc

Inclination II (radians).

obliquity

Obliqity ϵ\epsilon (radians).

cp

Climatic Precession esin(ωˉ)e \sin(\bar{\omega}) (unitless).

Source

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().

References

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