Harmonica provides functions and classes for processing, modelling and interpolating gravity and magnetic data.
Its main goals are:
Provide efficient, well designed, and fully tested code that would compress the building blocks for more complex workflows.
Cover the entire data life-cycle: from raw data to 3D Earth model.
Focus on best-practices to discourage misuse of methods.
Easily extendable code to enable research on the developments of new methods.
Harmonica will not provide:
Reference ellipsoid representations and computations like normal gravity. Use Boule instead.
Before we get started, here are a few conventions we keep across Harmonica:
Every physical quantity will be assumed to be given in a unit belonging to the International System of Units (SI). The only exceptions are:
Harmonica uses the same conventions as
Functions expect coordinates in the order: West-East, South-North and (in occasions) Bottom-Top. Exceptions to this rule are the
We avoid using names like “x”, “y” and “z” to avoid ambiguity. We use “easting”, “northing” and “upward” or “longitude”, “latitude” and “height” instead.
Some functions or classes expect its arguments to be defined in a specific coordinate system. They can either be in:
Cartesian coordinates: usually given as easting, northing and upward coordinates (in meters), where the vertical axis points upwards.
Geodetic or ellipsoidal coordinates: given as longitude, latitude (both in decimal degrees) and geodetic height (in meters).
Spherical geocentric coordinates: given as longitude, spherical latitude (both in decimal degrees) and radius (in meters).
Checkout the Coordinate systems section for more details on these coordinates systems.