When modeling gravity data, excess mass refers to the mass required to produce the gravity anomaly. Assuming the density contrast between the excess mass and the surrounding rock is positive, the excess mass will be positive. If the density contrast between the mass and surrounding rock is negative, the excess mass will be negative. Using Gauss's Law it is possible to calculate the excess mass directly from the observed gravity anomaly, without reference to the shape of the mass.
Green found this solution to the excess mass within the Earth using a hemisphere for the hypothetical surface, $S$. Assume the flat top of the hemisphere is the surface of the Earth ($z=0$) The surface integral can be divided into the flat top and the hemisphere. By assuming the radius of the hemisphere is extremely large, some tricks are played with the limits of integration to simplify the problem. The equation for the surface integral becomes, $$\oint_S \vec g \cdot \vec n dA = \int_{z=0} \int g(x,y) dx dy + \int_{\phi = 0}^{2 \pi} \int_{\theta = \pi/2}^{\pi} g(r, \theta) sin \theta d \theta d \phi = 4 \pi GM $$ this reduces to, $$\int_{z=0} \int g(x,y) dx dy = 2 \pi GM $$ so the anomalous mass is, $$M = \frac{1}{2 \pi G} \int_{- \infty}^{\infty} \int_{- \infty}^{\infty} g(x,y) dx dy $$ In practice, the anomalous mass is found by numerically integrating the gridded gravity data across an area: $$M = \frac{1}{2 \pi G} \sum_{i=1}^{N} \sum_{j=1}^{M} \Delta g(x,y) \Delta x \Delta y$$ where:
This model assumes that:
The mathematical grid shown below is an example of a grid of gravity data. The background gravity value is 0.2 mGal, so $\Delta g(x,y)$ is the difference from 0.2 mGal. To calculate the excess mass for this example of gravity data:
The excess mass for the above grid of gravity data is approximately $M = -1.57 \times 10^{10}$ kg, with the values posted next to each grid point given in mGals. The negative mass indicates that mass is missing and the gravity low is caused by the occurrence of lower density material. If the anomaly were caused by an air-filled cave system in limestone
($\rho = 2300$ kg m$^{-3}$), the volume of the cave system is $6.8 \times 10 ^6$m$^3$.
The following perl script calculates the excess mass for a file of gridded gravity data. The data file should have the following format:
EASTING NORTHING GRAVITY(in mGal)
##################################
# Calculate the excess mass
#
# USAGE: perl script_name.pl data.txt threshold 0_or_1 spacing > out_file
# where,
# script_name.pl is the name of the perl script
# data.txt is the name of gridded gravity data file
# threshold is the background gravity value
# 0_or_1 is a flag value , 1 or 0,
# 1 = positive gravity anomaly
# 0 = negative gravity anomaly
# spacing is the grid spacing in meters
##################################
# USAGE statement
my $scriptname = $0;
if (($#ARGV +1) != 4) {
my $Usage = "Usage: perl $scriptname data_file threshold(0 or 1) spacing > outfile
where,
is the name of the gridded gravity data file
is the background value of gravity
<0 or 1> is a flag:
0 = negative gravity anomaly
1 = positive gravity anomaly
is the grid spacing in meters
is a name for the output\n";
print "$Usage\n";
exit;
}
my $xyz_file = $ARGV[0];
my $gravity_threshold = $ARGV[1];
my $pos_or_neg = $ARGV[2];
my $spacing = $ARGV[3];
# Open the data file
open IN, "<$xyz_file" or die "cannot open $xyz_file: $!\\n";
my $total = 0;
my $count = 0;
my $anomaly = 0;
# Now, check if excess mass is due to a
# positve or a negative gravity anomaly
# If anomaly is negative
if (!pos_or_neg) { # total all values < zero
#Read in each line from input file
while () {
# Split line into values, split at space
($east, $north, $gravity) = split (" ");
#Subtract threshold from all gravity values
$anomaly = $gravity - $gravity_threshold;
# Screen resulting gravity value and sum
if ($anomaly < 0) {
$total = $total + $anomaly;
$count = $count + 1;
}
}
}
elsif (pos_or_neg) { # total all values > zero
#Read in each line from input file
while () {
# Split line into values, split at space
($east, $north, $gravity) = split (" ");
#Subtract threshold from all gravity values
$anomaly = $gravity - $gravity_threshold;
# Screen resulting gravity value and sum
if ($anomaly > 0) {
$total = $total + $anomaly;
$count = $count + 1;
}
}
}
# Convert to kg
$total = $total/1e5;
#Calculate total excess mass
$xcess_mass = (1.0/(2.0 * 3.14159 * 6.67e-11)) * $total * $spacing * $spacing;
printf "Excess mass = %.2e kg (based on %d gravity values)\n", $xcess_mass, $count;
print "Finished!\n";
Telford, W.M., Geldart, L.P. and Sheriff, R.E. (1990) Applied Geophysics, Cambridge University Press.