y=20e3, z=2e3, radius=1.5e3, props={'magnetization': giutils.ang2vec(1, inc=-70, dec=30)}) ] # Set the inclination and declination of the geomagnetic field. inc, dec = -10, 13 # Create a regular grid at a constant height shape = (300, 300) area = [0, 30e3, 0, 30e3] x, y, z = gridder.regular(area, shape, z=-10) fields = [ ['Total field Anomaly (nt)', sphere.tf(x, y, z, model, inc, dec)], ['Bx (nT)', sphere.bx(x, y, z, model)], ['By (nT)', sphere.by(x, y, z, model)], ['Bz (nT)', sphere.bz(x, y, z, model)], ] # Make maps of all fields calculated fig = plt.figure(figsize=(7, 6)) plt.rcParams['font.size'] = 10 X, Y = x.reshape(shape) / 1000, y.reshape(shape) / 1000 for i, tmp in enumerate(fields): ax = plt.subplot(2, 2, i + 1) field, data = tmp scale = np.abs([data.min(), data.max()]).max() ax.set_title(field) plot = ax.pcolormesh(Y,
from geoist.pfm.giutils import ang2vec, contaminate from geoist.pfm import sphere from geoist.pfm.magdir import DipoleMagDir from geoist.vis import giplt # Make noise-corrupted synthetic data inc, dec = -10.0, -15.0 # inclination and declination of the Geomagnetic Field model = [ geometry.Sphere(3000, 3000, 1000, 1000, {'magnetization': ang2vec(6.0, -20.0, -10.0)}), geometry.Sphere(7000, 7000, 1000, 1000, {'magnetization': ang2vec(10.0, 3.0, -67.0)}) ] area = (0, 10000, 0, 10000) x, y, z = gridder.scatter(area, 1000, z=-150, seed=0) tf = contaminate(sphere.tf(x, y, z, model, inc, dec), 5.0, seed=0) # Give the centers of the dipoles centers = [[3000, 3000, 1000], [7000, 7000, 1000]] # Estimate the magnetization vectors solver = DipoleMagDir(x, y, z, tf, inc, dec, centers).fit() # Print the estimated and true dipole monents, inclinations and declinations print('Estimated magnetization (intensity, inclination, declination)') for e in solver.estimate_: print(e) # Plot the fit and the normalized histogram of the residuals plt.figure(figsize=(14, 5)) plt.subplot(1, 2, 1)