Synthetic example
This synthetic case follows the paper of Günther & Martin (2016) using a Cole-Cole model. A slag heap consists of two different bodies with different time constants.
import numpy as np
from fdip import FDIP
import pygimli as pg
from pygimli.physics import ert
import pygimli.meshtools as mt
data = ert.createData(41, "dd")
print(data)
poly = mt.createParaMeshPLC(data, paraDX=0.2, paraDepth=8,
paraBoundary=10, boundary=0.3)
topsoil = [[-10, -1], [25, -1], [30, 0], [-10, 0]]
poly += mt.createPolygon(topsoil, isClosed=True, marker=3)
slag1 = [[5, -1], [5, -4], [20, -4], [20, -1]]
poly += mt.createPolygon(slag1, isClosed=True, marker=4)
slag2 = [[20, -4], [25, -4], [45, 0], [30, 0], [25, -1], [20, -1]]
poly += mt.createPolygon(slag2, isClosed=True, marker=5)
poly.show();
mesh = mt.createMesh(poly)
mesh.show(markers=True, showMesh=True);
frvec = [0.156, 0.312, 0.625, 1.25, 2.5, 5, 10, 20, 40, 80, 125,
250, 500, 1000]
pro = FDIP(data=data, f=frvec)
pro.simulate(mesh,
rhovec=np.array([200, 200, 500., 100., 200., 200.]),
mvec=np.array([1e-3, 1e-3, 1e-3, 1e-3, 0.1, 1.0]),
tauvec=np.array([0, 0, 1e-5, 1e-5, 0.8, 0.7]),
cvec=np.array([0, 0, 0.25, 0.25, 0.5, 0.5]));
pro.showSingleFrequencyData(5);
# pro.createERTManager()#paraDepth=13)
pro.singleInversion()
ax = pro.showSingleResult()
ply = mt.createPolygon(slag1, isClosed=True) + mt.createPolygon(slag2, isClosed=True)
for a in ax: ply.show(ax=a, fillRegion=False, fitView=False)
pro.simultaneousInversion()
pro.fitAllRhoPhi()
pro.showModelSpectra([[12, -3], [23, -3], [30, -2]]);
ax = pro.showColeColeParameters(rlim=[100, 500], mlim=[0, 1], tlim=[0.03, 3], coverage=1)
for a in ax: ply.show(ax=a, fillRegion=False, fitView=False)