magneticField {oce}R Documentation

Earth magnetic declination, inclination, and intensity

Description

Implements the 12th generation International Geomagnetic Reference Field (IGRF), based on a reworked version of a Fortran program downloaded from a NOAA website (see reference 1).

Usage

magneticField(longitude, latitude, time)

Arguments

longitude

longitude in degrees east (negative for degrees west). The dimensions must conform to lat.

latitude

latitude in degrees north, a number, vector, or matrix.

time

The time at which the field is desired. This may be a single value or a vector or matrix that is structured to match longitude and latitude. The value may a decimal year, a POSIXt time, or a Date time.

Details

The code (subroutine igrf12syn) seems to have been written by Susan Macmillan of the British Geological Survey. Comments in the source code indicate that it employs coefficients agreed to in December 2014 by the IAGA Working Group V-MOD. Other comments in that code suggest that the valid time interval is from years 1900 to 2020, with only the values from 1945 to 2010 being considered definitive.

Reference 2 suggests that a new version to the underlying source code might be expected in 2019 or 2020, but a check on January 31, 2019, showed that version 12, as incorporated in oce since 2015, remains the active version.

Value

A list containing declination, inclination, and intensity.

Author(s)

Dan Kelley wrote the R code and a fortran wrapper to the igrf12.f subroutine, which was written by Susan Macmillan of the British Geological Survey and distributed “without limitation” (email from SM to DK dated June 5, 2015).

References

  1. The underlying Fortran code is from igrf12.f, downloaded the NOAA website (https://www.ngdc.noaa.gov/IAGA/vmod/igrf.html) on June 7,

  2. Witze, Alexandra. “Earth's Magnetic Field Is Acting up and Geologists Don't Know Why.” Nature 565 (January 9, 2019): 143. https://doi.org/10.1038/d41586-019-00007-1.

See Also

Other things related to magnetism: applyMagneticDeclination()

Examples

library(oce)
# 1. Today's value at Halifax NS
magneticField(-(63+36/60), 44+39/60, Sys.Date())

# 2. World map of declination in year 2000.

data(coastlineWorld)
par(mar=rep(0.5, 4)) # no axes on whole-world projection
mapPlot(coastlineWorld, projection="+proj=robin", col="lightgray")
# Construct matrix holding declination
lon <- seq(-180, 180)
lat <- seq(-90, 90)
dec2000 <- function(lon, lat)
    magneticField(lon, lat, 2000)$declination
dec <- outer(lon, lat, dec2000) # hint: outer() is very handy!
# Contour, unlabelled for small increments, labeled for
# larger increments.
mapContour(lon, lat, dec, col='blue', levels=seq(-180, -5, 5),
           lty=3, drawlabels=FALSE)
mapContour(lon, lat, dec, col='blue', levels=seq(-180, -20, 20))
mapContour(lon, lat, dec, col='red', levels=seq(5, 180, 5),
           lty=3, drawlabels=FALSE)
mapContour(lon, lat, dec, col='red', levels=seq(20, 180, 20))
mapContour(lon, lat, dec, levels=180, col='black', lwd=2, drawlabels=FALSE)
mapContour(lon, lat, dec, levels=0, col='black', lwd=2)



[Package oce version 1.2-0 Index]