The fatiando package has been deprecated. Please check out the new tools in the Fatiando a Terra website: www.fatiando.org

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

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
:

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
:

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
:

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
:

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
:

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
:

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
:

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
:

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
:

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
:

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:

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:

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:

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:

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:

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:

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
:

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