.. _forward_modelling:
Forward modelling
=================
.. toctree::
:titlesonly:
:hidden:
point
dipole
prism
tesseroid
Harmonica offers some functions and classes to calculate the gravity and
magnetic fields generated by the following 3D bodies.
.. grid:: 1 1 2 2
:gutter: 2 3 5 5
.. grid-item-card:: Point sources
:img-top: ../../_static/figures/simple_points.svg
:text-align: center
:link: point
:link-type: ref
Cartesian and spherical coordinates
.. grid-item-card:: Magnetic dipoles
:img-top: ../../_static/figures/dipoles.svg
:text-align: center
:link: dipole
:link-type: ref
Cartesian coordinates
.. grid-item-card:: Rectangular prisms
:img-top: ../../_static/figures/simple_prism.svg
:text-align: center
:link: prism
:link-type: ref
Cartesian coordinates
.. grid-item-card:: Tesseroids
:img-top: ../../_static/figures/simple_tesseroid.svg
:text-align: center
:link: tesseroid
:link-type: ref
Spherical coordinates
General description
-------------------
Most of these functions require three main arguments:
- The **computation points**, which are usually passed as the ``coordinates``
argument. These are the set of points where the field will be computed. They
must be a tuple containing its coordinates in the following order:
``easting``, ``northing`` and ``upward`` or ``longitude``, ``latitude`` and
``radius`` (depending on the coordinate system that's being used).
- The **sources** or **geometric bodies** that generate the field that will be
computed. They must be often specified by their location or their boundaries.
- The **physical properties** of the sources. For example, when computing
gravity fields we might need to pass either the *density* or the *mass* of
the sources.
Optionally, we might need to specify which type of *field* we want to compute.
For example, we might choose the *potential* gravity field or the vertical
component of the gravity acceleration (``"g_z"``).