Optimization on 3D DC inversion

Hello, I am using SimPEG to invert 16 dipole-dipole profiles for 3D structure. I basically work on the tutorial script: 3D Least-Squares Inversion of DC Resistivity Data — SimPEG 0.24.0 documentation My problem is that the inversion is too slow on my data (a lot of them). Is there a way to optimize it? (Of course I can play around the mesh, but data are many. is there a better solver or a way to ue a not python-native one)? thank you

Hi @fabioca. First I would make sure that you are using a fast solver, such as Pardiso or MUMPS.

You can pass a solver class to the DC simulation (dc.simulation.Simulation3DNodal). And you can obtain the default solver based on your system and the ones you have installed through the get_default_solver function. For example:

from simpeg.utils.solver_utils import get_default_solver

solver = get_default_solver()
print(solver)

dc_simulation = dc.simulation.Simulation3DNodal(
    mesh, survey=dc_survey, sigmaMap=conductivity_map, storeJ=True, solver=solver
)

If the solver you are using is pymatsolver.SolverLU or pymatsolver.Solver, your simulation will definitely have a poor performance. Using Pardiso or MUMPS should greatly improve that.

Hope that helps!