DC-IP upgrades
- from PR 650
- commits from sgkang, thast, micmitch, fourndo
- review from lheagy, rowanc1
This release is motivated by enhancing DC/IP packages in SimPEG, and several contributors have sweated on this release for the past several months. There are four main categories that developments have been carried out:
- Physics
- Utilities
- Inversion Directives
Highlights of each development is summarized below.
Physics
**Handling Pole-Pole data**
- Mixed boundary condition for `Problem2D_CC` and `Problem3D_CC`
**Easy import for DC and IP problems**
- Now DC and IP can be easily imported:
python
from SimPEG import DC, IP
**Storing Sensitivity**
- Sensitivity can be stored, and this option can be used in the inversion:
python
problem = DC.Problem3D_CC(mesh, storeJ=True, ...)
J = problem.getJ(m)
**Working DC octree inversion** (thanks to fourndo and micmitch)
- This is limited in a specific branch of discretize package: `discretize/TreeMesh_CellGrad`
- Regularization and DC problems have been improved to handle octree and working!
- Mesh generation utility has not been updated in this branch, but will be included in the next release.
- IP problem has not been tested for octree yet.
Utilities for DC and IP problems (thanks to thast )
**Updated StaticUtils**
- IO functions for UBC-GIF codes DCIP2D and DCIP3D
- add Utils such `electrode_separations` or `geometric_factor`
- Utils are now compatible with all types of survey
**Survey and I/O**
- IO class for DC problem is initiated, but still requires further developments.
- Synthetic DC survey can be easily generated using `StaticUtils` + `DC.IO` + `DC.Survey`
python
Initiate I/O class for DC
IO = DC.IO()
endl = np.array([[xmin, ymin, zmin], [xmax, ymax, zmax]])
Generate DC survey object
survey = DC.Utils.gen_DCIPsurvey(endl, survey_type=survey_type, dim=2,
a=10, b=10, n=10)
Obtain ABMN locations
survey.getABMN_locations()
Obtain 2D TensorMesh
mesh, actind = IO.set_mesh()
Generate Topography
topo, mesh1D = DC.Utils.genTopography(mesh, -10, 0, its=100)
Generate active cells
actind = Utils.surface2ind_topo(mesh, np.c_[mesh1D.vectorCCx, topo])
Drape electrode locations to topography
survey.drapeTopo(mesh, actind, option="top")
Inversion Directives (thanks to fourndo!)
- Add sensitivity weighting directive
- Update IRLS directive
- Change to Directive to convert regularization, misfit to ComboObjective