Magnetic tesseroids is a collection of command-line tools for modelling of the magnetic field with spherical prisms (tesseroids) used as magnetic sources.
To cite magnetic tesseroids in publications, please use our paper published in Computers & Geosciences:
Eldar Baykiev, Jörg Ebbing, Marco Brönner, Karl Fabian, Forward modeling magnetic fields of induced and remanent magnetization in the lithosphere using tesseroids, Computers & Geosciences, Volume 96, November 2016, Pages 124-135, ISSN 0098-3004, http://dx.doi.org/10.1016/j.cageo.2016.08.004.
Article can also be found here http://goo.gl/x9g7gi (researchgate).
Magnetic tesseroids are based on the existing program of Leonardo Uieda called tesseroids (Uieda, 2013) of version 1.1 (https://github.com/leouieda/tesseroids/releases/tag/v1.1). It inherits the interface of tesseroids-1.1 but with several changes. Present appendix describes constants and units used be the program, as well as input and output format.
- Geocentric mean Earth's radius R_E = 6378.137 km.
- Magnetic permeability of a free space µ_0 = 4π × 10^-7 H·m^-1
The tessbx, tessby, tessbz are programs that calculate the corresponding components (x - north, y - east, z - up) of the magnetic field of the tesseroid model on the computational grid.
The input model file should be a text file where each line describe one tesseroid in such space separated format:
W E S N HEIGHT_OF_TOP HEIGHT_OF_BOTTOM DENSITY SUSCEPTIBILITY BX BY BZ
W
, E
, S
, N
correspond to the western, eastern, southern and northern edges of a tesseroid (λ_1, λ_2, ϕ_1, ϕ_2 respectively) expressed in decimal degrees [°].
HEIGHT_OF_TOP
and HEIGHT_OF_BOTTOM
define the top and the bottom of tesseroid (r_2 and r_1 respectively). Both are counted from geocentric mean Earth's radius in meters [m]. If a tesseroid should be placed beneath the mean surface, than the values of these parameters should be negative. Note that HEIGHT_OF_TOP
> HEIGHT_OF_BOTTOM
.
DENSITY
is the density ρ of tesseroid in kilogram per cubic meter [kg/m^3]
SUSCEPTIBILITY
is the susceptibility χ of tesseroid in SI units.
BX
, BY
and BZ
are the components of the magnetizing field in the local North-East-Up Cartesian coordinate system of a tesseroids' geometric center. They can be taken from any core field's model. Values are given in nanotesla [nT].
In case of remanent magnetic field modeling, susceptibility must be set 1 SI and BX
, BY
and BZ
values than would define the direction of remanent magnetization vector.
This example shows a model made of 3 neighboring tesseroids near the North Pole:
-74 -73 89 90 -1000.000000 -11650.000000 1.000000 1.000000 334.9504973176 -1969.9308033594 -56572.6324041700
-73 -72 89 90 -1000.000000 -11650.000000 1.000000 1.000000 370.1879538142 -1968.1093976826 -56571.2826313492
-72 -71 89 90 -1000.000000 -11650.000000 1.000000 1.000000 405.4388222633 -1965.6409379187 -56569.9502088641
Computation grid can be regular or irregular and should be also a text file where each line describe the position of one computation point in such space separated format:
LON LAT ALT
LON
and LAT
correspond to the longitude and latitude of the point in decimal degrees [°].
ALT
corresponds to the altitude of the point above the mean surface in meters [m].
Note that the program tessgrd from original tesseroids-1.1 can be used to create a regular computation grid (see Uieda, 2013).
This example shows a grid made of 6 points with the same latitude and the altitude of 400 km:
-6 51 400000
-5.8 51 400000
-5.6 51 400000
-5.4 51 400000
-5.2 51 400000
-5 51 400000
Example: to calculate the vertical component of the magnetic field of a model in file modelfile.txt on a grid from file gridpoints.txt one can simply use a console command:
tessbz modelfile.txt < gridpoints.txt > gz_output.txt
The result would be written in the file gz_output.txt.
The programs' output is a modified grid file where in the end of each line the calculated value of a corresponding magnetic field component would be written. Values are given in nanotesla [nT] in the local North-East-Up coordinate system of a computational point.
Magnetic tesseroids support features like piping and integration accuracy adjustment from tesseroids-1.1. Please, check sections in the tesseroids-1.1 manual (Uieda, 2013) relative to the gravity calculation programs to get more information.
This program is made to 'magnetize' any existing tesseroid model by any given main field spherical harmonic model. Usage:
tessutil_magnetize_model [SH coeff file] [input tesseroid model file] [day] [month] [year] [output tesseroid model file]
Gradient calculator (Baykiev et al., in press). Usage:
tessutil_gradient_calculator -bx[Bx grid file] -by[By grid file] -bz[Bx grid file] -o[output component] -c2 >> output_file.dat
All grid files should be in tessgrd format. With option -c1
program reads input grid bz as its direction is upward, with option -c2
- downward, just as in magnetic tesseroids output. Output of gradient calculator is always in North-East-Down coordinate system.
Known issue: rounding error when processing grids with spacing equal or less than 0.2 degrees.
Sums calculated grids. Usage:
tessutil_combine_grids [grid file1] [factor1] ... [grid fileN] [factorN] >> output_file.dat
Each grid is multiplied by factor (susceptibility) and then the sum of all grids is calculated.
- Download source code from GitHub:
git clone https://github.com/eldarbaykiev/magnetic-tesseroids.git
- On Linux, install OpenBLAS library:
sudo apt-get install libopenblas-base libopenblas-dev
On macOS, make sure that Xcode is installed and Accelerate framework is available.
- Run make
make
To compile all utilities, run
make tools