Forward modeling with spheres (fatiando.gravmag.sphere)

Calculate the potential fields of a homogeneous sphere.

Magnetic

Calculates the magnetic effect produced by an sphere. The functions are based on Blakely (1995).

  • tf: calculates the total-field anomaly
  • bx: calculates the x component of the induction
  • by: calculates the y component of the induction
  • bz: calculates the z component of the induction

Remember that:

The magnetization \(\mathbf{M}\) and the dipole moment \(\mathbf{m}\) are related with the volume V:

\[\mathbf{M} = \dfrac{\mathbf{m}}{V}.\]

The total-field anomaly is:

\[\Delta T = |\mathbf{T}| - |\mathbf{F}|,\]

where \(\mathbf{T}\) is the measured field and \(\mathbf{F}\) is a reference (regional) field. The forward modeling functions bx, by, and bz calculate the 3 components of the field perturbation \(\Delta\mathbf{F}\)

\[\Delta\mathbf{F} = \mathbf{T} - \mathbf{F}.\]

Then the total-field anomaly caused by the sphere is

\[\Delta T \approx \hat{\mathbf{F}}\cdot\Delta\mathbf{F}.\]

Gravity

Calculates the gravitational acceleration and gravity gradient tensor components.

Auxiliary Functions

Calculates the second derivatives of the function

\[\phi(x,y,z) = \frac{4}{3} \pi R^3 \frac{1}{r}\]

with respect to the variables \(x\), \(y\), and \(z\). In this equation,

\[r = \sqrt{(x - \nu)^2 + (y - \eta)^2 + (z - \zeta)^2},\]

and \(R\) is the radius of a sphere with centre at the Cartesian coordinates \(\nu\), \(\eta\) and \(\zeta\).

These second derivatives are used to calculate the total field magnetic anomaly and the gravity gradient tensor components.

References

Blakely, R. J. (1995), Potential Theory in Gravity and Magnetic Applications, Cambridge University Press.


fatiando.gravmag.sphere.bx(xp, yp, zp, spheres)[source]

Calculates the x component of the magnetic induction produced by spheres.

Note

Input units are SI. Output is in nT

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the anomaly will be calculated

  • spheres
    : list of fatiando.mesher.Sphere

    The spheres. Spheres must have the physical property 'magnetization'. Spheres without 'magnetization' will be ignored. The 'magnetization' must be a vector.

Returns:

  • bx: array

    The x component of the magnetic induction

fatiando.gravmag.sphere.by(xp, yp, zp, spheres)[source]

Calculates the y component of the magnetic induction produced by spheres.

Note

Input units are SI. Output is in nT

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the anomaly will be calculated

  • spheres
    : list of fatiando.mesher.Sphere

    The spheres. Spheres must have the physical property 'magnetization'. Spheres without 'magnetization' will be ignored. The 'magnetization' must be a vector.

Returns:

  • by: array

    The y component of the magnetic induction

fatiando.gravmag.sphere.bz(xp, yp, zp, spheres)[source]

Calculates the z component of the magnetic induction produced by spheres.

Note

Input units are SI. Output is in nT

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the anomaly will be calculated

  • spheres
    : list of fatiando.mesher.Sphere

    The spheres. Spheres must have the physical property 'magnetization'. Spheres without 'magnetization' will be ignored. The 'magnetization' must be a vector.

Returns:

  • bz: array

    The z component of the magnetic induction

fatiando.gravmag.sphere.gxx(xp, yp, zp, spheres, dens=None)[source]

Calculates the \(g_{xx}\) gravity gradient component.

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input values in SI and output in Eotvos!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the field will be calculated

  • spheres
    : list of fatiando.mesher.Sphere

    The spheres. Spheres must have the property 'density'. Those without will be ignored.

  • dens
    : float or None

    If not None, will use this value instead of the 'density' property of the spheres. Use this, e.g., for sensitivity matrix building.

Returns:

  • res
    : array

    The field calculated on xp, yp, zp

fatiando.gravmag.sphere.gxy(xp, yp, zp, spheres, dens=None)[source]

Calculates the \(g_{xy}\) gravity gradient component.

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input values in SI and output in Eotvos!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the field will be calculated

  • spheres
    : list of fatiando.mesher.Sphere

    The spheres. Spheres must have the property 'density'. Those without will be ignored.

  • dens
    : float or None

    If not None, will use this value instead of the 'density' property of the spheres. Use this, e.g., for sensitivity matrix building.

Returns:

  • res
    : array

    The field calculated on xp, yp, zp

fatiando.gravmag.sphere.gxz(xp, yp, zp, spheres, dens=None)[source]

Calculates the \(g_{xz}\) gravity gradient component.

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input values in SI and output in Eotvos!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the field will be calculated

  • spheres
    : list of fatiando.mesher.Sphere

    The spheres. Spheres must have the property 'density'. Those without will be ignored.

  • dens
    : float or None

    If not None, will use this value instead of the 'density' property of the spheres. Use this, e.g., for sensitivity matrix building.

Returns:

  • res
    : array

    The field calculated on xp, yp, zp

fatiando.gravmag.sphere.gyy(xp, yp, zp, spheres, dens=None)[source]

Calculates the \(g_{yy}\) gravity gradient component.

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input values in SI and output in Eotvos!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the field will be calculated

  • spheres
    : list of fatiando.mesher.Sphere

    The spheres. Spheres must have the property 'density'. Those without will be ignored.

  • dens
    : float or None

    If not None, will use this value instead of the 'density' property of the spheres. Use this, e.g., for sensitivity matrix building.

Returns:

  • res
    : array

    The field calculated on xp, yp, zp

fatiando.gravmag.sphere.gyz(xp, yp, zp, spheres, dens=None)[source]

Calculates the \(g_{yz}\) gravity gradient component.

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input values in SI and output in Eotvos!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the field will be calculated

  • spheres
    : list of fatiando.mesher.Sphere

    The spheres. Spheres must have the property 'density'. Those without will be ignored.

  • dens
    : float or None

    If not None, will use this value instead of the 'density' property of the spheres. Use this, e.g., for sensitivity matrix building.

Returns:

  • res
    : array

    The field calculated on xp, yp, zp

fatiando.gravmag.sphere.gz(xp, yp, zp, spheres, dens=None)[source]

Calculates the \(g_z\) gravity acceleration component.

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input values in SI and output in mGal!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the field will be calculated

  • spheres
    : list of fatiando.mesher.Sphere

    The spheres. Spheres must have the property 'density'. Those without will be ignored.

  • dens
    : float or None

    If not None, will use this value instead of the 'density' property of the spheres. Use this, e.g., for sensitivity matrix building.

Returns:

  • res
    : array

    The field calculated on xp, yp, zp

fatiando.gravmag.sphere.gzz(xp, yp, zp, spheres, dens=None)[source]

Calculates the \(g_{zz}\) gravity gradient component.

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input values in SI and output in Eotvos!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the field will be calculated

  • spheres
    : list of fatiando.mesher.Sphere

    The spheres. Spheres must have the property 'density'. Those without will be ignored.

  • dens
    : float or None

    If not None, will use this value instead of the 'density' property of the spheres. Use this, e.g., for sensitivity matrix building.

Returns:

  • res
    : array

    The field calculated on xp, yp, zp

fatiando.gravmag.sphere.kernelxx(xp, yp, zp, sphere)[source]

Calculates the function

\[\frac{\partial^2 \phi(x,y,z)}{\partial x^2},\]

where

\[\phi(x,y,z) = \frac{4}{3} \pi R^3 \frac{1}{r}\]

and

\[r = \sqrt{(x - \nu)^2 + (y - \eta)^2 + (z - \zeta)^2}.\]

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input and output values in SI!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the function will be calculated

  • sphere : object of fatiando.mesher.Sphere

Returns:

  • res
    : array

    The function calculated on xp, yp, zp

fatiando.gravmag.sphere.kernelxy(xp, yp, zp, sphere)[source]

Calculates the function

\[\frac{\partial^2 \phi(x,y,z)}{\partial x \partial y},\]

where

\[\phi(x,y,z) = \frac{4}{3} \pi R^3 \frac{1}{r}\]

and

\[r = \sqrt{(x - \nu)^2 + (y - \eta)^2 + (z - \zeta)^2}.\]

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input and output values in SI!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the function will be calculated

  • sphere : object of fatiando.mesher.Sphere

Returns:

  • res
    : array

    The function calculated on xp, yp, zp

fatiando.gravmag.sphere.kernelxz(xp, yp, zp, sphere)[source]

Calculates the function

\[\frac{\partial^2 \phi(x,y,z)}{\partial x \partial z},\]

where

\[\phi(x,y,z) = \frac{4}{3} \pi R^3 \frac{1}{r}\]

and

\[r = \sqrt{(x - \nu)^2 + (y - \eta)^2 + (z - \zeta)^2}.\]

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input and output values in SI!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the function will be calculated

  • sphere : object of fatiando.mesher.Sphere

Returns:

  • res
    : array

    The function calculated on xp, yp, zp

fatiando.gravmag.sphere.kernelyy(xp, yp, zp, sphere)[source]

Calculates the function

\[\frac{\partial^2 \phi(x,y,z)}{\partial y^2},\]

where

\[\phi(x,y,z) = \frac{4}{3} \pi R^3 \frac{1}{r}\]

and

\[r = \sqrt{(x - \nu)^2 + (y - \eta)^2 + (z - \zeta)^2}.\]

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input and output values in SI!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the function will be calculated

  • sphere : object of fatiando.mesher.Sphere

Returns:

  • res
    : array

    The function calculated on xp, yp, zp

fatiando.gravmag.sphere.kernelyz(xp, yp, zp, sphere)[source]

Calculates the function

\[\frac{\partial^2 \phi(x,y,z)}{\partial y \partial z},\]

where

\[\phi(x,y,z) = \frac{4}{3} \pi R^3 \frac{1}{r}\]

and

\[r = \sqrt{(x - \nu)^2 + (y - \eta)^2 + (z - \zeta)^2}.\]

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input and output values in SI!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the function will be calculated

  • sphere : object of fatiando.mesher.Sphere

Returns:

  • res
    : array

    The function calculated on xp, yp, zp

fatiando.gravmag.sphere.kernelzz(xp, yp, zp, sphere)[source]

Calculates the function

\[\frac{\partial^2 \phi(x,y,z)}{\partial z^2},\]

where

\[\phi(x,y,z) = \frac{4}{3} \pi R^3 \frac{1}{r}\]

and

\[r = \sqrt{(x - \nu)^2 + (y - \eta)^2 + (z - \zeta)^2}.\]

Note

The coordinate system of the input parameters is to be x -> North, y -> East and z -> Down.

Note

All input and output values in SI!

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the function will be calculated

  • sphere : object of fatiando.mesher.Sphere

Returns:

  • res
    : array

    The function calculated on xp, yp, zp

fatiando.gravmag.sphere.tf(xp, yp, zp, spheres, inc, dec, pmag=None)[source]

Calculate the total-field anomaly of spheres.

Note

Input units are SI. Output is in nT

Parameters:

  • xp, yp, zp
    : arrays

    The x, y, and z coordinates where the anomaly will be calculated

  • spheres
    : list of fatiando.mesher.Sphere

    The spheres. Spheres must have the physical property 'magnetization'. Spheres without 'magnetization' will be ignored.

  • inc
    : float

    The inclination of the regional field (in degrees)

  • dec
    : float

    The declination of the regional field (in degrees)

  • pmag
    : [mx, my, mz] or None

    A magnetization vector. If not None, will use this value instead of the 'magnetization' property of the spheres. Use this, e.g., for sensitivity matrix building.

Returns:

  • tf
    : array

    The total-field anomaly