Skip to content

Sign of atmospheric correction #56

Description

@craigmillernz

In our formulation of the atmospheric correction (AC) a negative value is returned as we multiply the end result by -1 i.e.

gsolve.reductions.corrections.py
def atmospheric_correction()
height_ellipsoidal = to_1d_ndarray_or_float(height_ellipsoidal)
    atmospheric_correction = (0.874 - 9.9e-05 * height_ellipsoidal + 3.5625e-09 * height_ellipsoidal**2) * -1

however the function definition text does not include the -1 multiplier which creates confusion with what is computed.

The definition of the AC is to be a positive value e.g. Hinze et al (2005) eqn3, Hinze et al (2013) eqn 6.7 and Wenzel (1985)

As such i recommend we remove the -1 multiplier and change the formulation of the CBA to reflect the AC sign change.

gSolve applies corrections to the normal gravity and the corrected normal gravity is then subtracted from the observed absolute gravity to compute the anomaly.

Currently we do:

𝐶⁢𝐵⁢𝐴=𝐴⁢𝐺−(𝑁⁢𝐺+𝐹⁡𝐴⁢𝐶+𝐴⁢𝐶+𝐵⁢𝑆⁢𝐶+𝑆⁢𝐵⁢𝐶−𝑇⁢𝐶)

𝑆⁢𝐵⁢𝐴=𝐴⁢𝐺−(𝑁⁢𝐺+𝐹⁡𝐴⁢𝐶+𝐴⁢𝐶+𝐵⁢𝑆⁢𝐶+𝑆⁢𝐵⁢𝐶)

where the AC is added to normal gravity.

However when the AC has the correct sign it should be subtracted from the normal gravity
e.g., 𝐶⁢𝐵⁢𝐴=𝐴⁢𝐺−(𝑁⁢𝐺+𝐹⁡𝐴⁢𝐶+𝐵⁢𝑆⁢𝐶+𝑆⁢𝐵⁢𝐶−𝑇⁢𝐶-A⁢𝐶)

in gsolve.reductions.anomalies.py

i.e. change AC calculation sign from negative to positive and change AC in the CBA formula to be subtracted not added. The end result of the CBA should be the same, so the computations are correct, but here the logic is easier to follow.

We should also consider if the AC should be applied to the SBA or not. As the AC is a mass correction term similar to the terrain correction it would make sense for it not to be included in the SBA.

Activity

  1. craigmillernz commented on Oct 5, 2026

    @craigmillernz
    CollaboratorAuthor

    remove the AC from the SBA anomaly calc.

  2. craigmillernz commented on Oct 7, 2026

    @craigmillernz
    CollaboratorAuthor

    update tests that test for the negative AC to test for the positive AC.

  3. craigmillernz commented on Oct 7, 2026

    @craigmillernz
    CollaboratorAuthor
    def test_increases_with_height(self):
            # atmospheric correction becomes less negative (smaller magnitude) with altitude
            ac0 = atmospheric_correction(0.0)
            ac1000 = atmospheric_correction(1000.0)
            assert float(ac1000) > float(ac0)
    

    should change to

    def test_decreases_with_height(self):
            # atmospheric correction becomes smaller with altitude
            ac0 = atmospheric_correction(0.0)
            ac1000 = atmospheric_correction(1000.0)
            assert float(ac1000) < float(ac0)
    

    Plugging into AC = 0.874 − 9.9e-5·h + 3.5625e-9·h²:

    h = 0: 0.874 mGal
    h = 1000: 0.874 − 0.099 + 0.0035625 = 0.7785625 mGal (≈ 0.7786)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions