Skip to content

Commit 37afe88

Browse files
authored
update to SimPEG 0.23.0 (#78)
* replace SimPEG import with simpeg * use default solver rather than pardiso * update SimPEG version * update the model builder calls, test against python 3.11, drop testing against python 3.8 * add empymod to environment, update setKwargs to set_kwargs * only test on python 3.10 for now
1 parent ad4fcf1 commit 37afe88

33 files changed

+149
-134
lines changed

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
fail-fast: false
1616
matrix:
1717
os: ["ubuntu-latest"]
18-
python-version: ["3.8", "3.10"]
18+
python-version: ["3.10"]
1919
test-file: ["tests/test_dcip.py", "tests/test_em.py", "tests/test_gpr.py tests/test_seismic.py", "tests/test_inversion.py", "tests/test_gravity.py tests/test_mag.py"]
2020

2121
steps:

environment-dev.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ dependencies:
66
- cvxopt
77
- deepdish
88
- discretize
9+
- empymod
910
- ipywidgets>=0.6.0
1011
- jupyter
1112
- matplotlib=3.4.3
1213
- Pillow
1314
- pip
1415
- pymatsolver
1516
- requests
16-
- SimPEG==0.19.0
17+
- SimPEG==0.23.0
1718
- pytest
1819
- flake8
1920
- black

geoscilabs/dcip/DCIP_overburden_PseudoSection.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,16 @@
2525

2626
from discretize import TensorMesh
2727

28-
from SimPEG import maps, SolverLU, utils
29-
from SimPEG.utils import extract_core_mesh
30-
from SimPEG.electromagnetics.static import resistivity as DC
31-
from SimPEG.electromagnetics.static import induced_polarization as IP
32-
from pymatsolver import Pardiso
28+
from simpeg import maps, SolverLU, utils
29+
from simpeg.utils import extract_core_mesh
30+
from simpeg.electromagnetics.static import resistivity as DC
31+
from simpeg.electromagnetics.static import induced_polarization as IP
32+
from simpeg.utils.solver_utils import get_default_solver
3333

3434
from ..base import widgetify
3535

36+
Solver = get_default_solver()
37+
3638
# Mesh, sigmaMap can be globals global
3739
npad = 12
3840
growrate = 2.0
@@ -179,13 +181,13 @@ def model_fields(A, B, mtrue, mhalf, mair, mover, whichprimary="overburden"):
179181
survey = DC.Survey([src])
180182
# Create three simulations so the fields object is accurate
181183
sim_primary = DC.Simulation2DCellCentered(
182-
mesh, survey=survey, sigmaMap=mapping, solver=Pardiso
184+
mesh, survey=survey, sigmaMap=mapping, solver=Solver
183185
)
184186
sim_total = DC.Simulation2DCellCentered(
185-
mesh, survey=survey, sigmaMap=mapping, solver=Pardiso
187+
mesh, survey=survey, sigmaMap=mapping, solver=Solver
186188
)
187189
sim_air = DC.Simulation2DCellCentered(
188-
mesh, survey=survey, sigmaMap=mapping, solver=Pardiso
190+
mesh, survey=survey, sigmaMap=mapping, solver=Solver
189191
)
190192

191193
if whichprimary == "air":
@@ -302,7 +304,7 @@ def getSensitivity(survey, A, B, M, N, model):
302304

303305
survey = DC.Survey([src])
304306
problem = DC.Simulation2DCellCentered(
305-
mesh, sigmaMap=mapping, solver=Pardiso, survey=survey
307+
mesh, sigmaMap=mapping, solver=Solver, survey=survey
306308
)
307309

308310
J = problem.getJ(model)[0]
@@ -458,7 +460,7 @@ def DC2Dsimulation(mtrue, flag="PoleDipole", nmax=8):
458460

459461
survey = DC.Survey(txList)
460462
simulation = DC.Simulation2DCellCentered(
461-
mesh, sigmaMap=mapping, survey=survey, solver=Pardiso
463+
mesh, sigmaMap=mapping, survey=survey, solver=Solver
462464
)
463465

464466
return simulation, xzlocs
@@ -548,7 +550,7 @@ def IP2Dsimulation(miptrue, sigmadc, flag="PoleDipole", nmax=8):
548550
sigma=sigmadc,
549551
etaMap=maps.IdentityMap(mesh),
550552
survey=survey,
551-
solver=Pardiso,
553+
solver=Solver,
552554
)
553555

554556
return simulation, xzlocs

geoscilabs/dcip/DCLayers.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@
99

1010
from discretize import TensorMesh
1111

12-
from SimPEG import maps, utils
13-
from pymatsolver import Pardiso
12+
from simpeg import maps, utils
13+
from simpeg.utils.solver_utils import get_default_solver
1414

1515
from ..base import widgetify
1616

17+
Solver = get_default_solver()
18+
1719
rcParams["font.size"] = 16
1820

1921
# Mesh parameters
@@ -153,7 +155,7 @@ def rho_a(VM, VN, A, B, M, N):
153155

154156
def solve_2D_potentials(rho1, rho2, h, A, B):
155157
"""
156-
Here we solve the 2D DC problem for potentials (using SimPEG Mesg Class)
158+
Here we solve the 2D DC problem for potentials (using simpeg Mesg Class)
157159
"""
158160
sigma = 1.0 / rho2 * np.ones(mesh.nC)
159161
sigma[mesh.gridCC[:, 1] >= -h] = 1.0 / rho1 # since the model is 2D
@@ -172,7 +174,7 @@ def solve_2D_potentials(rho1, rho2, h, A, B):
172174
* utils.sdiag(1.0 / (mesh.dim * mesh.aveF2CC.T * (1.0 / sigma)))
173175
* mesh.cell_gradient
174176
)
175-
Ainv = Pardiso(A)
177+
Ainv = Solver(A)
176178

177179
V = Ainv * q
178180
return V

geoscilabs/dcip/DCWidgetPlate2_5D.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@
1212
from matplotlib.path import Path
1313
import matplotlib.patches as patches
1414

15-
from pymatsolver import Pardiso
15+
from simpeg.utils.solver_utils import get_default_solver
1616

1717
from discretize import TensorMesh
18-
from SimPEG import maps, SolverLU, utils
19-
from SimPEG.utils import extract_core_mesh
20-
from SimPEG.electromagnetics.static import resistivity as DC
18+
from simpeg import maps, SolverLU, utils
19+
from simpeg.utils import extract_core_mesh
20+
from simpeg.electromagnetics.static import resistivity as DC
2121
from ..base import widgetify
2222

23+
Solver = get_default_solver()
24+
2325
# Mesh, mapping can be globals global
2426
npad = 15
2527
growrate = 2.0
@@ -88,10 +90,10 @@ def plate_fields(A, B, dx, dz, xc, zc, rotAng, sigplate, sighalf):
8890
src = DC.sources.Dipole([], np.r_[A, 0.0], np.r_[B, 0.0])
8991
survey = DC.survey.Survey([src])
9092
problem = DC.Simulation2DCellCentered(
91-
mesh, survey=survey, sigmaMap=mapping, solver=Pardiso
93+
mesh, survey=survey, sigmaMap=mapping, solver=Solver
9294
)
9395
problem_prim = DC.Simulation2DCellCentered(
94-
mesh, survey=survey, sigmaMap=mapping, solver=Pardiso
96+
mesh, survey=survey, sigmaMap=mapping, solver=Solver
9597
)
9698

9799
total_field = problem.fields(mtrue)
@@ -272,7 +274,7 @@ def sumPlateCharges(xc, zc, dx, dz, rotAng, qSecondary):
272274
return qPosSum, qNegSum, qPosAvgLoc, qNegAvgLoc
273275

274276

275-
# The only thing we need to make it work is a 2.5D field object in SimPEG
277+
# The only thing we need to make it work is a 2.5D field object in simpeg
276278

277279

278280
def getSensitivity(survey, A, B, M, N, model):
@@ -292,7 +294,7 @@ def getSensitivity(survey, A, B, M, N, model):
292294

293295
survey = DC.Survey([src])
294296
sim = DC.Simulation3DCellCentered(
295-
mesh, sigmaMap=mapping, solver=Pardiso, survey=survey
297+
mesh, sigmaMap=mapping, solver=Solver, survey=survey
296298
)
297299
J = sim.getJ(model)[0]
298300

geoscilabs/dcip/DCWidgetPlate_2D.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,17 @@
1111
from matplotlib.ticker import LogFormatter
1212
from matplotlib.path import Path
1313
import matplotlib.patches as patches
14-
from pymatsolver import Pardiso
14+
from simpeg.utils.solver_utils import get_default_solver
1515

1616
from discretize import TensorMesh
17-
from SimPEG import maps, SolverLU, utils
18-
from SimPEG.utils import extract_core_mesh
19-
from SimPEG.electromagnetics.static import resistivity as DC
17+
from simpeg import maps, SolverLU, utils
18+
from simpeg.utils import extract_core_mesh
19+
from simpeg.electromagnetics.static import resistivity as DC
2020

2121
from ..base import widgetify
2222

23+
Solver = get_default_solver()
24+
2325
# Mesh, mapping can be globals global
2426
npad = 15
2527
growrate = 2.0
@@ -91,10 +93,10 @@ def plate_fields(A, B, dx, dz, xc, zc, rotAng, sigplate, sighalf):
9193
survey = DC.survey.Survey([src])
9294

9395
problem = DC.Simulation3DCellCentered(
94-
mesh, survey=survey, sigmaMap=mapping, solver=Pardiso
96+
mesh, survey=survey, sigmaMap=mapping, solver=Solver
9597
)
9698
problem_prim = DC.Simulation3DCellCentered(
97-
mesh, survey=survey, sigmaMap=mapping, solver=Pardiso
99+
mesh, survey=survey, sigmaMap=mapping, solver=Solver
98100
)
99101

100102
primary_field = problem_prim.fields(mhalf)
@@ -293,7 +295,7 @@ def getSensitivity(survey, A, B, M, N, model):
293295

294296
survey = DC.Survey([src])
295297
sim = DC.Simulation3DCellCentered(
296-
mesh, sigmaMap=mapping, solver=Pardiso, survey=survey
298+
mesh, sigmaMap=mapping, solver=Solver, survey=survey
297299
)
298300
J = sim.getJ(model)[0]
299301

geoscilabs/dcip/DCWidgetResLayer2D.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from discretize import TensorMesh
2-
from SimPEG import maps, SolverLU, utils
3-
from SimPEG.utils import extract_core_mesh
2+
from simpeg import maps, SolverLU, utils
3+
from simpeg.utils import extract_core_mesh
44
import numpy as np
5-
from SimPEG.electromagnetics.static import resistivity as DC
5+
from simpeg.electromagnetics.static import resistivity as DC
66
import matplotlib
77
import matplotlib.pyplot as plt
88
import matplotlib.pylab as pylab
@@ -11,12 +11,14 @@
1111
import matplotlib.patches as patches
1212
from scipy.constants import epsilon_0
1313
import copy
14-
from pymatsolver import Pardiso
14+
from simpeg.utils.solver_utils import get_default_solver
1515

1616
from ipywidgets import interact, IntSlider, FloatSlider, FloatText, ToggleButtons
1717

1818
from ..base import widgetify
1919

20+
Solver = get_default_solver()
21+
2022
# Mesh, sigmaMap can be globals global
2123
npad = 15
2224
growrate = 2.0
@@ -94,10 +96,10 @@ def model_fields(A, B, zcLayer, dzLayer, xc, zc, r, sigLayer, sigTarget, sigHalf
9496
survey = DC.Survey([src])
9597

9698
problem = DC.Simulation3DCellCentered(
97-
mesh, sigmaMap=sigmaMap, solver=Pardiso, survey=survey
99+
mesh, sigmaMap=sigmaMap, solver=Solver, survey=survey
98100
)
99101
problem_prim = DC.Simulation3DCellCentered(
100-
mesh, sigmaMap=sigmaMap, solver=Pardiso, survey=survey
102+
mesh, sigmaMap=sigmaMap, solver=Solver, survey=survey
101103
)
102104

103105
primary_field = problem_prim.fields(mhalf)
@@ -335,7 +337,7 @@ def getSensitivity(survey, A, B, M, N, model):
335337

336338
survey = DC.survey.Survey([src])
337339
problem = DC.Simulation3DCellCentered(
338-
mesh, survey=survey, sigmaMap=sigmaMap, solver=Pardiso
340+
mesh, survey=survey, sigmaMap=sigmaMap, solver=Solver
339341
)
340342
J = problem.getJ(model)
341343

geoscilabs/dcip/DCWidgetResLayer2_5D.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,19 @@
1010
from matplotlib.path import Path
1111
import matplotlib.patches as patches
1212

13-
from SimPEG import maps, SolverLU, utils
14-
from SimPEG.utils import extract_core_mesh
15-
from SimPEG.electromagnetics.static import resistivity as DC
16-
from pymatsolver import Pardiso
13+
from simpeg import maps, SolverLU, utils
14+
from simpeg.utils import extract_core_mesh
15+
from simpeg.electromagnetics.static import resistivity as DC
16+
from simpeg.utils.solver_utils import get_default_solver
1717

1818
from discretize import TensorMesh
1919

2020
from ipywidgets import interact, IntSlider, FloatSlider, FloatText, ToggleButtons
2121

2222
from ..base import widgetify
2323

24+
Solver = get_default_solver()
25+
2426
# Mesh, sigmaMap can be globals global
2527
npad = 15
2628
growrate = 2.0
@@ -99,11 +101,11 @@ def model_fields(A, B, zcLayer, dzLayer, xc, zc, r, sigLayer, sigTarget, sigHalf
99101
src = DC.sources.Dipole([], np.r_[A, 0.0], np.r_[B, 0.0])
100102
survey = DC.Survey([src])
101103
sim = DC.Simulation2DCellCentered(
102-
mesh, survey=survey, sigmaMap=mapping, solver=Pardiso
104+
mesh, survey=survey, sigmaMap=mapping, solver=Solver
103105
)
104106
total_field = sim.fields(mtrue)
105107
sim_prim = DC.Simulation2DCellCentered(
106-
mesh, survey=survey, sigmaMap=mapping, solver=Pardiso
108+
mesh, survey=survey, sigmaMap=mapping, solver=Solver
107109
)
108110
primary_field = sim_prim.fields(mhalf)
109111

@@ -331,7 +333,7 @@ def sumCylinderCharges(xc, zc, r, qSecondary):
331333
return qPosSum, qNegSum, qPosAvgLoc, qNegAvgLoc
332334

333335

334-
# The only thing we need to make it work is a 2.5D field object in SimPEG
336+
# The only thing we need to make it work is a 2.5D field object in simpeg
335337

336338

337339
def getSensitivity(survey, A, B, M, N, model):
@@ -347,7 +349,7 @@ def getSensitivity(survey, A, B, M, N, model):
347349

348350
Src = DC.Survey([src])
349351
sim = DC.Simulation2DCellCentered(
350-
mesh, survey=Src, sigmaMap=mapping, solver=Pardiso
352+
mesh, survey=Src, sigmaMap=mapping, solver=Solver
351353
)
352354
J = sim.getJ(model)
353355

geoscilabs/dcip/DCWidget_Overburden_2_5D.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,16 @@
2121
)
2222

2323
from discretize import TensorMesh
24-
from SimPEG import maps, utils
25-
from SimPEG.utils import extract_core_mesh
26-
from SimPEG.electromagnetics.static import resistivity as DC
24+
from simpeg import maps, utils
25+
from simpeg.utils import extract_core_mesh
26+
from simpeg.electromagnetics.static import resistivity as DC
2727

28-
from pymatsolver import Pardiso
28+
from simpeg.utils.solver_utils import get_default_solver
2929

3030
from ..base import widgetify
3131

32+
Solver = get_default_solver()
33+
3234
# Mesh, sigmaMap can be globals global
3335
npad = 12
3436
growrate = 2.0
@@ -165,13 +167,13 @@ def model_fields(A, B, mtrue, mhalf, mair, mover, whichprimary="air"):
165167
src = DC.sources.Dipole([], np.r_[A, surfaceA], np.r_[B, surfaceB])
166168
survey = DC.survey.Survey([src])
167169
problem = DC.Simulation2DCellCentered(
168-
mesh, survey=survey, sigmaMap=mapping, solver=Pardiso
170+
mesh, survey=survey, sigmaMap=mapping, solver=Solver
169171
)
170172
problem_prim = DC.Simulation2DCellCentered(
171-
mesh, survey=survey, sigmaMap=mapping, solver=Pardiso
173+
mesh, survey=survey, sigmaMap=mapping, solver=Solver
172174
)
173175
problem_air = DC.Simulation2DCellCentered(
174-
mesh, survey=survey, sigmaMap=mapping, solver=Pardiso
176+
mesh, survey=survey, sigmaMap=mapping, solver=Solver
175177
)
176178

177179
if whichprimary == "air":
@@ -307,7 +309,7 @@ def getSensitivity(survey, A, B, M, N, model):
307309

308310
Src = DC.Survey([src])
309311
sim = DC.Simulation2DCellCentered(
310-
mesh, survey=Src, sigmaMap=mapping, solver=Pardiso
312+
mesh, survey=Src, sigmaMap=mapping, solver=Solver
311313
)
312314
J = sim.getJ(model)[0]
313315

0 commit comments

Comments
 (0)