Skip to content

Commit 0030d6e

Browse files
committed
- [TEST] Move geophysics to plugins. NOTE: Probably is not a good idea but we will see once I get into
1 parent 66ea721 commit 0030d6e

File tree

5 files changed

+139
-1
lines changed

5 files changed

+139
-1
lines changed

gempy_plugins/assets/geophysics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import numpy as np
1919
import aesara
2020
import aesara.tensor as T
21-
from gempy.core.grid_modules.grid_types import CenteredGrid
21+
from gempy.core.data.grid_types import CenteredGrid
2222

2323

2424
class GravityPreprocessing(CenteredGrid):
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import pytest
2+
3+
pytestmark = pytest.mark.skip(reason="Geophysics module is not yet updated")
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# These two lines are necessary only if GemPy is not installed
2+
# sys.path.append("../..")
3+
4+
# Importing GemPy
5+
import gempy as gp
6+
7+
# Importing auxiliary libraries
8+
import numpy as np
9+
10+
11+
def test_gravity(interpolator_gravity):
12+
geo_model = gp.create_model('2-layers')
13+
gp.init_data(geo_model, extent=[0, 12, -2, 2, 0, 4], resolution=[500, 1, 500])
14+
geo_model.add_surfaces('surface 1')
15+
geo_model.add_surfaces('surface 2')
16+
geo_model.add_surfaces('basement')
17+
dz = geo_model._grid.regular_grid.dz
18+
geo_model._surfaces.add_surfaces_values([dz, 0, 0], ['dz'])
19+
geo_model._surfaces.add_surfaces_values([2.6, 2.4, 3.2], ['density'])
20+
geo_model.add_surface_points(3, 0, 3.05, 'surface 1')
21+
geo_model.add_surface_points(9, 0, 3.05, 'surface 1')
22+
23+
geo_model.add_surface_points(3, 0, 1.02, 'surface 2')
24+
geo_model.add_surface_points(9, 0, 1.02, 'surface 2')
25+
26+
geo_model.add_orientations(6, 0, 4, 'surface 1', [0, 0, 1])
27+
device_loc = np.array([[6, 0, 4]])
28+
29+
geo_model.set_centered_grid(device_loc, resolution=[10, 10, 100], radius=16000)
30+
geo_model.set_aesara_function(interpolator_gravity)
31+
geo_model._interpolator.set_aesara_shared_gravity(pos_density=2)
32+
print(geo_model._additional_data)
33+
gp.compute_model(geo_model, set_solutions=True, compute_mesh=False)
34+
print(geo_model.solutions.fw_gravity)
35+
np.testing.assert_almost_equal(geo_model.solutions.fw_gravity, np.array([-1624.1714]), decimal=4)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# These two lines are necessary only if GemPy is not installed
2+
import sys
3+
4+
sys.path.append("../../../gempy")
5+
6+
# Importing GemPy
7+
from gempy.core.data.grid_modules import CenteredGrid
8+
9+
# Importing auxiliary libraries
10+
import numpy as np
11+
12+
13+
def test_irregular_grid():
14+
g = CenteredGrid()
15+
g.set_centered_grid(np.array([0, 0, 0]), resolution=[5, 5, 5], radius = [100,100,100])
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# Importing GemPy
2+
import gempy as gp
3+
from gempy_plugins.assets.geophysics import MagneticsPreprocessing
4+
5+
# Importing auxiliary libraries
6+
import numpy as np
7+
import pytest
8+
9+
10+
def test_magnetics_api(interpolator_magnetics):
11+
# TODO add the check
12+
13+
geo_model = gp.create_model('test_center_grid_slicing')
14+
geo_model.set_default_surfaces()
15+
geo_model.add_surface_points(X=-1, Y=0, Z=0, surface='surface1')
16+
geo_model.add_surface_points(X=1, Y=0, Z=0, surface='surface1')
17+
geo_model.add_orientations(X=0, Y=0, Z=0, surface='surface1', pole_vector=(0, 0, 1))
18+
geo_model._surfaces.add_surfaces_values([0.037289, 0.0297], ['susceptibility'])
19+
20+
# needed constants
21+
mu_0 = 4.0 * np.pi * 10e-7 # magnetic permeability in free space [N/A^2]
22+
cm = mu_0 / (4.0 * np.pi) # constant for SI unit
23+
incl = 77.0653 # NOAA
24+
decl = 6.8116
25+
B_ext = 52819.8506939139e-9 # T
26+
27+
geo_model.set_regular_grid(extent=[-5, 5, -5, 5, -5, 5], resolution=[5, 5, 5])
28+
geo_model.set_centered_grid(np.array([[0, 0, 0]]), resolution=[10, 10, 15], radius=5000)
29+
geo_model.set_aesara_function(interpolator_magnetics)
30+
geo_model._interpolator.set_aesara_shared_magnetics(V='auto', pos_magnetics=1,
31+
incl= incl, decl=decl, B_ext=B_ext)
32+
33+
gp.compute_model(geo_model)
34+
print(geo_model._interpolator.aesara_graph.lg0.get_value())
35+
print(geo_model.solutions.fw_magnetics)
36+
np.testing.assert_almost_equal(geo_model.solutions.fw_magnetics,
37+
np.array([473.7836]), decimal=4)
38+
39+
40+
@pytest.fixture(scope="module")
41+
def test_magnetics_no_regular_grid(interpolator_magnetics):
42+
# TODO add the check
43+
44+
geo_model = gp.create_model('test_center_grid_slicing')
45+
geo_model.set_default_surfaces()
46+
geo_model.add_surface_points(X=-1, Y=0, Z=0, surface='surface1')
47+
geo_model.add_surface_points(X=1, Y=0, Z=0, surface='surface1')
48+
geo_model.add_orientations(X=0, Y=0, Z=0, surface='surface1', pole_vector=(0, 0, 1))
49+
geo_model._surfaces.add_surfaces_values([0.037289, 0.0297], ['susceptibility'])
50+
51+
# needed constants
52+
mu_0 = 4.0 * np.pi * 10e-7 # magnetic permeability in free space [N/A^2]
53+
cm = mu_0 / (4.0 * np.pi) # constant for SI unit
54+
incl = 77.0653 # NOAA
55+
decl = 6.8116
56+
B_ext = 52819.8506939139e-9 # T
57+
58+
geo_model.set_centered_grid(np.array([0, 0, 0]), resolution=[10, 10, 15], radius=5000)
59+
60+
Vmodel = MagneticsPreprocessing(geo_model._grid.centered_grid).set_Vs_kernel()
61+
# gp.set_interpolator(geo_model, output=['magnetics'])
62+
geo_model.set_aesara_function(interpolator_magnetics)
63+
geo_model._interpolator.set_aesara_shared_magnetics(V= Vmodel, pos_magnetics=1,
64+
incl= incl, decl=decl, B_ext=B_ext)
65+
66+
# geo_model.interpolator.aesara_graph.V.set_value(Vmodel)
67+
# geo_model.interpolator.aesara_graph.incl.set_value(incl)
68+
# geo_model.interpolator.aesara_graph.decl.set_value(decl)
69+
# geo_model.interpolator.aesara_graph.B_ext.set_value(B_ext)
70+
71+
gp.compute_model(geo_model)
72+
np.testing.assert_almost_equal(geo_model.solutions.fw_magnetics,
73+
np.array([473.7836]), decimal=4)
74+
75+
return geo_model
76+
77+
78+
def test_center_grid_slicing(test_magnetics_no_regular_grid):
79+
geo_model = test_magnetics_no_regular_grid
80+
81+
geo_model.set_centered_grid(np.array([[0, 0, 0],
82+
[1, 1, 1]]), resolution=[10, 10, 15], radius=5000)
83+
84+
gp.compute_model(geo_model)
85+
print(geo_model._interpolator.aesara_graph.lg0.get_value())

0 commit comments

Comments
 (0)