Skip to content
13 changes: 8 additions & 5 deletions simpeg_drivers-assets/uijson/fdem1d_forward.ui.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,28 +49,28 @@
"main": true,
"enabled": true,
"label": "Vertical core cell size (m)",
"value": 25.0
"value": 10.0
},
"depth_core": {
"min": 0.0,
"group": "1D mesh",
"main": true,
"enabled": true,
"label": "Depth of core (m)",
"value": 500.0
"value": 100.0
},
"horizontal_padding": {
"visible": false,
"label": "Horizontal padding (m)",
"value": 1000.0
"value": 100.0
},
"vertical_padding": {
"min": 0.0,
"group": "1D mesh",
"main": true,
"dependencyType": "disabled",
"label": "Vertical padding (m)",
"value": 1000.0
"value": 100.0
},
"expansion_factor": {
"main": true,
Expand All @@ -82,7 +82,10 @@
"group": "Mesh and models",
"main": true,
"label": "Mesh",
"meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}",
"meshType": [
"{c94968ea-cf7d-11eb-b8bc-0242ac130003}",
"{4ea87376-3ece-438b-bf12-3479733ded46}"
],
"value": "",
"optional": true,
"enabled": false,
Expand Down
13 changes: 8 additions & 5 deletions simpeg_drivers-assets/uijson/fdem1d_inversion.ui.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,28 +99,28 @@
"main": true,
"enabled": true,
"label": "Vertical core cell size (m)",
"value": 25.0
"value": 10.0
},
"depth_core": {
"min": 0.0,
"group": "1D mesh",
"main": true,
"enabled": true,
"label": "Depth of core (m)",
"value": 500.0
"value": 100.0
},
"horizontal_padding": {
"visible": false,
"label": "Horizontal padding (m)",
"value": 1000.0
"value": 100.0
},
"vertical_padding": {
"min": 0.0,
"group": "1D mesh",
"main": true,
"dependencyType": "disabled",
"label": "Vertical padding (m)",
"value": 1000.0
"value": 100.0
},
"expansion_factor": {
"main": true,
Expand All @@ -132,7 +132,10 @@
"group": "Mesh and models",
"main": true,
"label": "Mesh",
"meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}",
"meshType": [
"{c94968ea-cf7d-11eb-b8bc-0242ac130003}",
"{4ea87376-3ece-438b-bf12-3479733ded46}"
],
"value": "",
"optional": true,
"enabled": false,
Expand Down
13 changes: 8 additions & 5 deletions simpeg_drivers-assets/uijson/tdem1d_forward.ui.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,28 +54,28 @@
"main": true,
"enabled": true,
"label": "Vertical core cell size (m)",
"value": 25.0
"value": 10.0
},
"depth_core": {
"min": 0.0,
"group": "1D mesh",
"main": true,
"enabled": true,
"label": "Depth of core (m)",
"value": 500.0
"value": 100.0
},
"horizontal_padding": {
"visible": false,
"label": "Vertical padding (m)",
"value": 0.0
"value": 100.0
},
"vertical_padding": {
"min": 0.0,
"group": "1D mesh",
"main": true,
"dependencyType": "disabled",
"label": "Vertical padding (m)",
"value": 1000.0
"value": 100.0
},
"expansion_factor": {
"main": true,
Expand All @@ -87,7 +87,10 @@
"group": "Mesh and models",
"main": true,
"label": "Mesh",
"meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}",
"meshType": [
"{c94968ea-cf7d-11eb-b8bc-0242ac130003}",
"{4ea87376-3ece-438b-bf12-3479733ded46}"
],
"value": "",
"optional": true,
"enabled": false,
Expand Down
13 changes: 8 additions & 5 deletions simpeg_drivers-assets/uijson/tdem1d_inversion.ui.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,28 +78,28 @@
"main": true,
"enabled": true,
"label": "Vertical core cell size (m)",
"value": 25.0
"value": 10.0
},
"depth_core": {
"min": 0.0,
"group": "1D mesh",
"main": true,
"enabled": true,
"label": "Depth of core (m)",
"value": 500.0
"value": 100.0
},
"horizontal_padding": {
"visible": false,
"label": "Vertical padding (m)",
"value": 0.0
"value": 100.0
},
"vertical_padding": {
"min": 0.0,
"group": "1D mesh",
"main": true,
"dependencyType": "disabled",
"label": "Vertical padding (m)",
"value": 1000.0
"value": 100.0
},
"expansion_factor": {
"main": true,
Expand All @@ -111,7 +111,10 @@
"group": "Mesh and models",
"main": true,
"label": "Mesh",
"meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}",
"meshType": [
"{c94968ea-cf7d-11eb-b8bc-0242ac130003}",
"{4ea87376-3ece-438b-bf12-3479733ded46}"
],
"value": "",
"optional": true,
"enabled": false,
Expand Down
30 changes: 24 additions & 6 deletions simpeg_drivers/electromagnetics/base_1d_driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from discretize.utils import mesh_utils
from geoapps_utils.utils.locations import topo_drape_elevation
from geoh5py import Workspace
from geoh5py.objects import Surface
from geoh5py.objects import DrapeModel, Octree, Surface
from geoh5py.shared.merging.drape_model import DrapeModelMerger
from geoh5py.ui_json.ui_json import fetch_active_workspace
from numpy import ndarray
Expand All @@ -29,6 +29,7 @@
from simpeg_drivers.components.meshes import InversionMesh
from simpeg_drivers.driver import BaseDriver
from simpeg_drivers.utils.utils import (
drape_2_tensor,
get_default_parallelization_params,
xyz_2_drape_model,
)
Expand Down Expand Up @@ -82,9 +83,23 @@ def inversion_mesh(self) -> InversionMesh:
return self._inversion_mesh

def get_1d_mesh(self) -> TensorMesh:
"""
Get a 1D mesh template from input parameters.

If the input mesh is a DrapeModel, it is converted to a TensorMesh and extract the vertical cell sizes.
Otherwise, a new TensorMesh is created based on the drape model parameters.
"""
if isinstance(self.params.mesh, DrapeModel):
tensor = drape_2_tensor(self.params.mesh)
return TensorMesh([tensor.h[1]])

cell_size = self.params.drape_model.v_cell_size
if isinstance(self.params.mesh, Octree):
cell_size = self.params.mesh.w_cell_size

layers_mesh = mesh_utils.mesh_builder_xyz(
np.c_[0],
np.r_[self.params.drape_model.v_cell_size],
np.r_[cell_size],
padding_distance=[
[self.params.drape_model.vertical_padding, 0],
],
Expand Down Expand Up @@ -140,10 +155,13 @@ def simulation(self):
return self._simulation

@classmethod
def start_dask_run(
cls, json_path: Path, n_workers: int | None = None, n_threads: int | None = None
):
def start_dask_run(cls, json_path: Path, **kwargs):
Comment thread
domfournier marked this conversation as resolved.
"""Overload configurations of BaseDriver Dask config settings."""
n_workers, n_threads = get_default_parallelization_params(json_path)

super().start_dask_run(json_path, n_workers=n_workers, n_threads=n_threads)
if kwargs.get("n_workers") is None:
kwargs["n_workers"] = n_workers
if kwargs.get("n_threads") is None:
kwargs["n_threads"] = n_threads

super().start_dask_run(json_path, **kwargs)
14 changes: 7 additions & 7 deletions tests/run_tests/driver_airborne_fem_1d_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@
# To test the full run and validate the inversion.
# Move this file out of the test directory and run.

target_run = {"data_norm": 381.0495293422212, "phi_d": 33400, "phi_m": 198}
target_run = {"data_norm": 5.5379e02, "phi_d": 4.5220e04, "phi_m": 2.2230e02}


def test_fem_fwr_1d_run(
tmp_path: Path,
n_grid_points=3,
refinement=(2,),
cell_size=(20.0, 20.0, 20.0),
cell_size=(10.0, 10.0, 10.0),
):
# Run the forward
opts = SyntheticsComponentsOptions(
Expand All @@ -68,7 +68,7 @@ def test_fem_fwr_1d_run(
),
model=ModelOptions(background=1e-4, anomaly=0.1),
)
with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5:
with get_workspace(tmp_path / "inversion_test.geoh5") as geoh5:
components = SyntheticsComponents(geoh5=geoh5, options=opts)
params = FDEM1DForwardOptions.build(
geoh5=geoh5,
Expand All @@ -85,9 +85,9 @@ def test_fem_fwr_1d_run(


def test_fem_1d_run(tmp_path: Path, max_iterations=1, pytest=True):
workpath = tmp_path / "inversion_test.ui.geoh5"
workpath = tmp_path / "inversion_test.geoh5"
if pytest:
workpath = tmp_path.parent / "test_fem_fwr_1d_run0" / "inversion_test.ui.geoh5"
workpath = tmp_path.parent / "test_fem_fwr_1d_run0" / "inversion_test.geoh5"

with Workspace(workpath) as geoh5:
components = SyntheticsComponents(geoh5)
Expand All @@ -97,7 +97,7 @@ def test_fem_1d_run(tmp_path: Path, max_iterations=1, pytest=True):
"real": "real",
"imag": "imag",
}

mesh = geoh5.get_entity("Draped Model")[0]
for chan, cname in channels.items():
data[cname] = []
uncertainties[f"{cname} uncertainties"] = []
Expand Down Expand Up @@ -136,7 +136,7 @@ def test_fem_1d_run(tmp_path: Path, max_iterations=1, pytest=True):
# Run the inverse
params = FDEM1DInversionOptions.build(
geoh5=geoh5,
mesh=components.mesh,
mesh=mesh,
topography_object=components.topography,
data_object=components.survey,
starting_model=1e-3,
Expand Down
Loading
Loading