Beispiel #1
0
def test_empy_hankel():

    # 1. Simple test to compare ['j0', 'j1'] with 'j0' and 'j1'
    out1 = fdesign.empy_hankel(['j0', 'j1'], 50, 100, [2e14, 1], 1, 0)
    out2 = fdesign.empy_hankel('j0', 50, 100, [2e14, 1], 1, 0)
    out3 = fdesign.empy_hankel('j1', 50, 100, [2e14, 1], 1, 0)
    assert out1[0].name == out2.name
    assert out1[1].name == out3.name

    # 2. Check J0, J1 with analytical, wavenumber
    zsrc = -50
    zrec = 0
    r = np.arange(1, 101)
    f = 100
    model1 = {'res': 100,
              'aniso': 2,
              'epermH': 15,
              'epermV': 30,
              'mpermH': 1,
              'mpermV': 5}
    out4a = fdesign.empy_hankel(['j0', 'j1'], zsrc, zrec, freqtime=f, depth=[],
                                **model1)
    out4b = model.analytical([0, 0, zsrc], [r/np.sqrt(2), r/np.sqrt(2), zrec],
                             freqtime=f, verb=0, **model1)
    out4c = model.analytical([0, 0, zsrc], [r, r*0, zrec], freqtime=f, verb=0,
                             ab=31, **model1)
    out4d, _ = model.dipole_k(src=[0, 0, zsrc],
                              rec=[1/np.sqrt(2), 1/np.sqrt(2), zrec],
                              freq=f, depth=[], wavenumber=1/r, **model1)
    _, out4e = model.dipole_k(src=[0, 0, zsrc], ab=31, rec=[1, 0, zrec],
                              freq=f, depth=[], wavenumber=1/r, **model1)
    assert_allclose(out4a[0].rhs(r), out4b)
    assert_allclose(out4a[1].rhs(r), out4c)
    assert_allclose(out4a[0].lhs(1/r), out4d)
    assert_allclose(out4a[1].lhs(1/r), out4e)

    # 2. Check J2 with dipole, wavenumber
    zsrc = 950
    zrec = 1000
    r = np.arange(1, 101)*20
    f = 0.1
    model2 = {'depth': [0, 1000],
              'res': [2e14, 0.3, 1],
              'aniso': [1, 1, 1.5],
              'epermH': [1, 15, 1],
              'epermV': [1, 1, 30],
              'mpermH': [1, 1, 10],
              'mpermV': [1, 1, 5]}
    out5a = fdesign.empy_hankel('j2', zsrc, zrec, freqtime=f, **model2)
    out5b = model.dipole([0, 0, zsrc], [r/np.sqrt(2), r/np.sqrt(2), zrec],
                         freqtime=f, verb=0, ab=12, **model2)
    out5c, out5d = model.dipole_k(src=[0, 0, zsrc],
                                  rec=[1/np.sqrt(2), 1/np.sqrt(2), zrec],
                                  ab=12, freq=f, wavenumber=1/r, **model2)
    assert_allclose(out5a.rhs(r), out5b)
    assert_allclose(out5a.lhs(1/r)[0], out5c)
    assert_allclose(out5a.lhs(1/r)[1], out5d)
Beispiel #2
0
 def time_analytical(self, solution):
     model.analytical(**self.hsfs_inp)