Skip to content

Commit b507ef1

Browse files
authored
Merge branch 'develop' into GEOPY-1729
2 parents c9ae797 + c079c3e commit b507ef1

3 files changed

Lines changed: 58 additions & 16 deletions

File tree

simpeg_drivers/driver.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@
2727

2828
from dask.distributed import get_client, Client, LocalCluster, performance_report
2929
from geoapps_utils.driver.driver import BaseDriver
30-
from geoapps_utils.driver.data import BaseData
30+
from geoapps_utils.utils.importing import GeoAppsError
3131

32-
from geoh5py.data import Data
3332
from geoh5py.groups import SimPEGGroup
3433
from geoh5py.shared.utils import fetch_active_workspace
3534
from geoh5py.ui_json import InputFile
@@ -345,13 +344,23 @@ def run(self):
345344
self.out_group.add_file(self.params.input_file.path_name)
346345

347346
predicted = None
348-
if self.params.forward_only:
349-
print("Running the forward simulation ...")
350-
predicted = simpeg_inversion.invProb.get_dpred(self.models.starting, None)
351-
else:
352-
# Run the inversion
353-
self.start_inversion_message()
354-
simpeg_inversion.run(self.models.starting)
347+
try:
348+
if self.params.forward_only:
349+
print("Running the forward simulation ...")
350+
predicted = simpeg_inversion.invProb.get_dpred(
351+
self.models.starting, None
352+
)
353+
else:
354+
# Run the inversion
355+
self.start_inversion_message()
356+
simpeg_inversion.run(self.models.starting)
357+
358+
except np.core._exceptions._ArrayMemoryError as error: # pylint: disable=protected-access
359+
raise GeoAppsError(
360+
"Memory Error: Sensitivities too large for system. \n"
361+
"Try reducing the number of data, reducing the number of cells in the mesh\n"
362+
"or increase the number of tiles."
363+
) from error
355364

356365
self.logger.end()
357366
sys.stdout = self.logger.terminal

simpeg_drivers/electricals/params.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ class DrapeModelOptions(BaseModel):
5656
:param expansion_factor: Expansion factor for the drape model.
5757
"""
5858

59-
u_cell_size: float = 25.0
60-
v_cell_size: float = 25.0
61-
depth_core: float = 100.0
62-
horizontal_padding: float = 100.0
63-
vertical_padding: float = 100.0
64-
expansion_factor: float = 100.0
59+
u_cell_size: float | None = 25.0
60+
v_cell_size: float | None = 25.0
61+
depth_core: float | None = 100.0
62+
horizontal_padding: float | None = 100.0
63+
vertical_padding: float | None = 100.0
64+
expansion_factor: float | None = 100.0
6565

6666

6767
class FileControlOptions(BaseModel):

tests/run_tests/driver_grav_test.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,12 @@
1111
from __future__ import annotations
1212

1313
from pathlib import Path
14+
from unittest.mock import patch
1415

1516
import numpy as np
17+
from geoapps_utils.utils.importing import GeoAppsError
1618
from geoh5py.workspace import Workspace
19+
from pytest import raises
1720

1821
from simpeg_drivers.params import ActiveCellsOptions
1922
from simpeg_drivers.potential_fields import (
@@ -64,6 +67,37 @@ def test_gravity_fwr_run(
6467
fwr_driver.run()
6568

6669

70+
def test_array_too_large_run(
71+
tmp_path: Path,
72+
):
73+
workpath = tmp_path.parent / "test_gravity_fwr_run0" / "inversion_test.ui.geoh5"
74+
75+
with Workspace(workpath) as geoh5:
76+
gz = geoh5.get_entity("Iteration_0_gz")[0]
77+
mesh = geoh5.get_entity("mesh")[0]
78+
topography = geoh5.get_entity("topography")[0]
79+
80+
# Run the inverse
81+
active_cells = ActiveCellsOptions(topography_object=topography)
82+
params = GravityInversionOptions(
83+
geoh5=geoh5,
84+
mesh=mesh,
85+
active_cells=active_cells,
86+
data_object=gz.parent,
87+
gz_channel=gz,
88+
gz_uncertainty=1e-4,
89+
starting_model=1e-4,
90+
)
91+
92+
with patch(
93+
"simpeg.inversion.BaseInversion.run",
94+
side_effect=np.core._exceptions._ArrayMemoryError((0,), np.dtype("float64")), # pylint: disable=protected-access
95+
):
96+
with raises(GeoAppsError, match="Memory Error"):
97+
driver = GravityInversionDriver(params)
98+
driver.run()
99+
100+
67101
def test_gravity_run(
68102
tmp_path: Path,
69103
max_iterations=1,
@@ -111,7 +145,6 @@ def test_gravity_run(
111145
y_norm=gradient_norms,
112146
z_norm=gradient_norms,
113147
gradient_type="components",
114-
gz_channel_bool=True,
115148
gz_channel=gz,
116149
gz_uncertainty=2e-3,
117150
lower_bound=0.0,

0 commit comments

Comments
 (0)