def transInvWylliePhi(sat=1, vm=4000, vw=1600, va=330): """Inverse Wyllie transformation function porosity(slowness).""" if va != 330 or sat != 1.0: raise BaseException('TODO') a1 = 1. / vm b1 = 1. / vw - 1. / vm return pg.RTransLin(1. / b1, -a1 / b1)
def __init__(self, **kwargs): self.__verbose = kwargs.pop('verbose', False) self.__debug = kwargs.pop('debug', False) self.dataVals = None self.errorVals = None self.transData = pg.RTransLin() self.inv = pg.Inversion(self.__verbose, self.__debug) self.maxIter = kwargs.pop('maxIter', 20) fop = kwargs.pop('fop', None) if fop is not None: self.setForwardOperator(fop) self.inv.setDeltaPhiAbortPercent(0.5)
def test_Trans(self): """ """ f = pg.RTrans() x = pg.RVector(3, 1.0) np.testing.assert_array_equal(f(x), x) np.testing.assert_array_equal(f.inv(x), x) np.testing.assert_array_equal(f.inv(f(x)), x) self.assertEqual(f.trans(x=1.0), 1.0) self.assertEqual(f(1.0), 1.0) self.assertEqual(f.inv(1.0), 1.0) f = pg.RTransLin(factor=2., offset=4.) np.testing.assert_array_equal(f(x), x*2. + 4.) np.testing.assert_array_equal(f.trans(x), x*2. + 4.) np.testing.assert_array_equal(f.inv(f(x)), x) self.assertEqual(f(1.0), 6.0) self.assertEqual(f.trans(1.0), 6.0) self.assertEqual(f.inv(6.0), 1.0) self.assertEqual(f.invTrans(6.0), 1.0)
def transInvWyllieS(phi, vm=4000, vw=1600, va=330): """Inverse Wyllie transformation function slowness(saturation).""" a2 = 1. / vm * (1 - phi) + phi * 1. / va b2 = phi * (1. / vw - 1. / va) return pg.RTransLin(1. / b2, -a2 / b2)
def transFwdWyllieS(phi, vm=4000, vw=1600, va=330): """Wyllie transformation function slowness(saturation).""" if va != 330.0: print(va, "Air velocity is not 330.0 m/s") raise BaseException('TODO') return pg.RTransLin((1 / vw - 1. / va) * phi, (1 - phi) / vm + phi / va)
def transFwdWylliePhi(sat=1, vm=4000, vw=1600, va=330): """Wyllie transformation function porosity(slowness).""" if va != 330 or sat != 1.0: raise BaseException('TODO') return pg.RTransLin(1. / vw - 1. / vm, 1. / vm)