pygimli.physics.gravimetry#

Solve gravimetric and magneto static problems in 2D and 3D analytically

Overview#

Functions

BZPoly(pnts, poly, mag[, openPoly])

TODO WRITEME.

BaZCylinderHoriz(pnts, R, pos, M)

Magnetic anomaly for a horizontal cylinder.

BaZSphere(pnts, R, pos, M)

Magnetic anomaly for a sphere.

SolveGravMagHolstein(mesh, pnts, cmp, igrf)

Solve gravity and/or magnetics problem after Holstein (1997).

gradGZCylinderHoriz(r, a, rho[, pos])

TODO WRITEME.

gradGZHalfPlateHoriz(pnts, t, rho[, pos])

TODO WRITEME.

gradGZSphere(r, rad, rho[, pos])

TODO WRITEME.

gradUCylinderHoriz(r, a, rho[, pos])

2D Gradient of gravimetric potential of horizontal cylinder (in mGal at position pos).

gradUHalfPlateHoriz(pnts, t, rho[, pos])

Gravitational field od a horizontal half plate.

gradUSphere(r, rad, rho[, pos])

Gravitational field of a sphere.

solveGravimetry(mesh[, dDensity, pnts, complete])

Solve gravimetric response.

uCylinderHoriz(pnts, rad, rho[, pos])

Gravitational potential of horizonzal cylinder.

uSphere(r, rad, rho[, pos])

Gravitational potential of a sphere.

Classes

MagneticsModelling(mesh, points, cmp, igrf)

Magnetics modelling operator using Holstein (2007).

Functions#

pygimli.physics.gravimetry.BZPoly(pnts, poly, mag, openPoly=False)[source]#

TODO WRITEME.

Parameters
  • pnts (list) – Measurement points [[p1x, p1z], [p2x, p2z],…]

  • poly (list) – Polygon [[p1x, p1z], [p2x, p2z],…]

  • mag ([M_x, M_y, M_z]) – Magnetization = [M_x, M_y, M_z]

pygimli.physics.gravimetry.BaZCylinderHoriz(pnts, R, pos, M)[source]#

Magnetic anomaly for a horizontal cylinder.

Calculate the vertical component of the anomalous magnetic field Bz for a buried horizontal cylinder at position pos with radius R for a given magnetization M at measurement points pnts.

TODO .. only 2D atm

Parameters
  • pnts ([[x,z], ]) – measurement points – array[x,y,z]

  • R (float) – radius

  • pos ([float, float]) – [x,z] – sphere center

  • M ([float, float]) – [Mx, Mz] – magnetization

pygimli.physics.gravimetry.BaZSphere(pnts, R, pos, M)[source]#

Magnetic anomaly for a sphere.

Calculate the vertical component of the anomalous magnetic field Bz for a buried sphere at position pos with radius R for a given magnetization M at measurement points pnts.

Parameters
  • pnts ([[x,y,z], ]) – measurement points – array[x,y,z]

  • R (float) – radius

  • pos ([float, float, float]) – [x,y,z] – sphere center

  • M ([float, float, float]) – [Mx, My, Mz] – magnetization

pygimli.physics.gravimetry.SolveGravMagHolstein(mesh, pnts, cmp, igrf, foot=inf)[source]#

Solve gravity and/or magnetics problem after Holstein (1997).

Parameters
  • mesh (pygimli:mesh) – tetrahedral or hexahedral mesh

  • pnts (list|array of (x, y, z)) – measuring points

  • cmp (list of str) – component list of: gx, gy, gz, TFA, Bx, By, Bz, Bxy, Bxz, Byy, Byz, Bzz

  • igrf (list|array of size 3 or 7) –

    international geomagnetic reference field, either [D, I, H, X, Y, Z, F] - declination, inclination, horizontal field,

    X/Y/Z components, total field OR

    [X, Y, Z] - X/Y/Z components

Returns

out – kernel matrix to be multiplied with density or susceptibility

Return type

ndarray (nPoints x nComponents x nCells)

pygimli.physics.gravimetry.gradGZCylinderHoriz(r, a, rho, pos=(0.0, 0.0))[source]#

TODO WRITEME.

\[g = -grad u(r), with r = [x,z], |r| = \sqrt{x^2+z^2}\]
Parameters
  • r (list[[x, z]]) – Observation positions

  • a (float) – Cylinder radius in [meter]

  • rho – Density in [kg/m^3]

Return type

grad gz, [gz_x, gz_z]

Examples using pygimli.physics.gravimetry.gradGZCylinderHoriz

Semianalytical Gravimetry and Geomagnetics in 2D

Semianalytical Gravimetry and Geomagnetics in 2D

Semianalytical Gravimetry and Geomagnetics in 2D
pygimli.physics.gravimetry.gradGZHalfPlateHoriz(pnts, t, rho, pos=(0.0, 0.0))[source]#

TODO WRITEME.

\[g = -\nabla u\]
Parameters
  • pnts (array (\(n\times 2\))) – n 2 dimensional measurement points

  • t (float) – Plate thickness in \([\text{m}]\)

  • rho (float) – Density in \([\text{kg}/\text{m}^3]\)

Returns

gz – Gradient of z-component of g \(\nabla(\frac{\partial u}{\partial\vec{r}}_z)\)

Return type

array

Examples using pygimli.physics.gravimetry.gradGZHalfPlateHoriz

Semianalytical Gravimetry and Geomagnetics in 2D

Semianalytical Gravimetry and Geomagnetics in 2D

Semianalytical Gravimetry and Geomagnetics in 2D
pygimli.physics.gravimetry.gradGZSphere(r, rad, rho, pos=(0.0, 0.0, 0.0))[source]#

TODO WRITEME.

\[g = -\nabla u\]
Parameters
Return type

[d g_z /dx, d g_z /dy, d g_z /dz]

pygimli.physics.gravimetry.gradUCylinderHoriz(r, a, rho, pos=(0.0, 0.0))[source]#

2D Gradient of gravimetric potential of horizontal cylinder (in mGal at position pos).

\[g = -G[m^3/(kg s^2)] * dM[kg/m] * 1/r[1/m] * grad(r)[1/1] = [m^3/(kg s^2)] * [kg/m] * 1/m * [1/1] == m/s^2\]
Parameters
  • r (list[[x, z]]) – Observation positions

  • a (float) – Cylinder radius in [meter]

  • pos ([x,z]) – Center position of cylinder.

  • rho (float) – Delta density in [kg/m^3]

Returns

g – Gradient of gravimetry potential.

Return type

[dudx, dudz]

Examples using pygimli.physics.gravimetry.gradUCylinderHoriz

Gravimetry in 2D - Part I

Gravimetry in 2D - Part I

Gravimetry in 2D - Part I
Semianalytical Gravimetry and Geomagnetics in 2D

Semianalytical Gravimetry and Geomagnetics in 2D

Semianalytical Gravimetry and Geomagnetics in 2D
pygimli.physics.gravimetry.gradUHalfPlateHoriz(pnts, t, rho, pos=(0.0, 0.0))[source]#

Gravitational field od a horizontal half plate.

\[g = -grad u,\]
Parameters
  • pnts

  • t

  • rho – Density in [kg/m^3]

Returns

z-component of g .. math:: nabla(partial u/partialvec{r})_z

Return type

gz

Examples using pygimli.physics.gravimetry.gradUHalfPlateHoriz

Semianalytical Gravimetry and Geomagnetics in 2D

Semianalytical Gravimetry and Geomagnetics in 2D

Semianalytical Gravimetry and Geomagnetics in 2D
pygimli.physics.gravimetry.gradUSphere(r, rad, rho, pos=(0.0, 0.0, 0.0))[source]#

Gravitational field of a sphere.

\[g = -G[m^3/(kg s^2)] * dM[kg] * 1/r^2 1/m^2] * \grad(r)[1/1] = [m^3/(kg s^2)] * [kg] * 1/m^2 * [1/1] == m/s^2\]
Parameters
Returns

[gx, gy, gz] – gravitational acceleration (note that gz points negative)

Return type

[float*3]

pygimli.physics.gravimetry.solveGravimetry(mesh, dDensity=None, pnts=None, complete=False)[source]#

Solve gravimetric response.

2D with pygimli.physics.gravimetry.lineIntegralZ_WonBevis

3D with pygimli.physics.gravimetry.gravMagBoundarySinghGup

TOWRITE

Parameters
  • mesh (GIMLI::Mesh) – 2d or 3d mesh with or without cells.

  • dDensity (float | array) –

    Density difference.

    • float – solve for positive boundary marker only.

      Assuming one inhomogeneity.

    • [[int, float]] – solve for multiple positive boundaries TOIMPL

    • array – solve for one delta density value per cell

    • None – return per cell kernel matrix G TOIMPL

  • pnts ([[x_i, y_i]]) – List of measurement positions.

  • complete (bool [False]) – If True return whole solution or matrix for [dgx, dgy, dgz] and … TODO

Examples using pygimli.physics.gravimetry.solveGravimetry

Gravimetry in 2D - Part I

Gravimetry in 2D - Part I

Gravimetry in 2D - Part I
Semianalytical Gravimetry and Geomagnetics in 2D

Semianalytical Gravimetry and Geomagnetics in 2D

Semianalytical Gravimetry and Geomagnetics in 2D
pygimli.physics.gravimetry.uCylinderHoriz(pnts, rad, rho, pos=(0.0, 0.0))[source]#

Gravitational potential of horizonzal cylinder.

TODO

pygimli.physics.gravimetry.uSphere(r, rad, rho, pos=None)[source]#

Gravitational potential of a sphere.

Gravitational potential of a sphere with radius and density at a given position.

\[u = -G * dM * \frac{1}{r}\]
Parameters

Classes#

class pygimli.physics.gravimetry.MagneticsModelling(mesh, points, cmp, igrf, foot=None)[source]#

Bases: Modelling

Magnetics modelling operator using Holstein (2007).

__init__(mesh, points, cmp, igrf, foot=None)[source]#

Setup forward operator.

Parameters
  • mesh (pygimli:mesh) – tetrahedral or hexahedral mesh

  • points (list|array of (x, y, z)) – measuring points

  • cmp (list of str) – component of: gx, gy, gz, TFA, Bx, By, Bz, Bxy, Bxz, Byy, Byz, Bzz

  • igrf (list|array of size 3 or 7) –

    international geomagnetic reference field, either [D, I, H, X, Y, Z, F] - declination, inclination, horizontal field,

    X/Y/Z components, total field OR

    [X, Y, Z] - X/Y/Z components

createJacobian(model)[source]#

Do nothing as this is a linear problem.

response(model)[source]#

Compute forward response.