Exemplo n.º 1
0
    def test_EM1DTDfwd_CirLoop_RealCond(self):
        BzTD = self.prob.survey.dpred(self.m_1D)
        Bzanal = EM1DAnalytics.BzAnalCircT(
            self.survey.a, self.survey.time, self.sig_half
        )

        if self.showIt is True:

            plt.loglog(self.survey.time, (BzTD), 'b')
            plt.loglog(self.survey.time, (Bzanal), 'b.')
            plt.show()

        err = np.linalg.norm(BzTD-Bzanal)/np.linalg.norm(Bzanal)
        print ('Bz error = ', err)
        self.assertTrue(err < 1e-2)

        self.survey.rx_type = 'dBzdt'
        dBzdtTD = self.prob.survey.dpred(self.m_1D)
        dBzdtanal = EM1DAnalytics.dBzdtAnalCircT(
            self.survey.a, self.survey.time, self.sig_half
        )

        if self.showIt is True:

            plt.loglog(self.survey.time, -(dBzdtTD), 'b-')
            plt.loglog(self.survey.time, -(dBzdtanal), 'b.')
            plt.show()

        err = np.linalg.norm(dBzdtTD-dBzdtanal)/np.linalg.norm(dBzdtanal)
        print ('dBzdt error = ', err)
        self.assertTrue(err < 1e-2)

        print ("EM1DTD-CirculurLoop for real conductivity works")
Exemplo n.º 2
0
    def test_EM1DFDfwd_VMD_ComplexCond(self):

        if self.prob.ispaired:
            self.prob.unpair()
        if self.survey.ispaired:
            self.survey.unpair()

        self.prob = EM1D(self.mesh1D,
                         sigmaMap=Maps.IdentityMap(self.mesh1D),
                         chi=np.zeros(self.survey.n_layer),
                         eta=self.eta,
                         tau=self.tau,
                         c=self.c)
        self.prob.pair(self.survey)
        self.prob.survey.src_type = 'VMD'
        sig_half = 0.01
        m_1D = np.ones(self.prob.survey.n_layer) * sig_half
        Hz = self.prob.forward(m_1D)
        sigCole = EM1DAnalytics.ColeCole(self.survey.frequency, sig_half,
                                         self.eta, self.tau, self.c)
        Hzanal = EM1DAnalytics.Hzanal(sigCole, self.prob.survey.frequency,
                                      self.prob.survey.offset, 'secondary')

        if self.showIt is True:

            plt.loglog(self.prob.survey.frequency, abs(Hz.real), 'b')
            plt.loglog(self.prob.survey.frequency, abs(Hzanal.real), 'b*')
            plt.loglog(self.prob.survey.frequency, abs(Hz.imag), 'r')
            plt.loglog(self.prob.survey.frequency, abs(Hzanal.imag), 'r*')
            plt.show()

        err = np.linalg.norm(Hz - Hzanal) / np.linalg.norm(Hzanal)
        self.assertTrue(err < 1e-5)
        print("EM1DFD-VMD for complex conductivity works")
Exemplo n.º 3
0
    def test_EM1DTDfwd_CirLoop_ComplexCond(self):

        if self.prob.ispaired:
            self.prob.unpair()
        if self.survey.ispaired:
            self.survey.unpair()

        self.prob = EM1D(
            self.mesh1D, sigmaMap=self.expmap, chi=self.chi,
            eta=self.eta, tau=self.tau, c=self.c
        )
        self.prob.pair(self.survey)

        BzTD = self.prob.survey.dpred(self.m_1D)

        w_, _, omega_int = setFrequency(self.survey.time)
        sigCole = EM1DAnalytics.ColeCole(
            omega_int/(2*np.pi), self.sig_half,
            self.eta[0], self.tau[0], self.c[0]
        )

        Bzanal = EM1DAnalytics.BzAnalCircTCole(
            self.survey.a, self.survey.time, sigCole
        )

        if self.showIt is True:

            plt.loglog(self.survey.time, (BzTD), 'b')
            plt.loglog(self.survey.time, (Bzanal), 'b*')
            plt.show()

        err = np.linalg.norm(BzTD-Bzanal)/np.linalg.norm(Bzanal)
        print ('Bz error = ', err)
        self.assertTrue(err < 1e-2)

        self.survey.rx_type = 'dBzdt'
        dBzdtTD = self.survey.dpred(self.m_1D)
        dBzdtanal = EM1DAnalytics.dBzdtAnalCircTCole(
            self.survey.a, self.survey.time, sigCole
        )

        if self.showIt is True:

            plt.loglog(self.survey.time, - dBzdtTD, 'b')
            plt.loglog(self.survey.time, - dBzdtanal, 'b*')
            plt.show()

        err = np.linalg.norm(dBzdtTD-dBzdtanal)/np.linalg.norm(dBzdtanal)
        print ('dBzdt error = ', err)
        self.assertTrue(err < 1e-2)
        print ("EM1DTD-CirculurLoop for Complex conductivity works")
Exemplo n.º 4
0
    def test_EM1DFDfwd_VMD_RealCond(self):
        self.prob.survey.src_type = 'VMD'
        self.prob.survey.offset = np.ones(self.prob.survey.n_frequency) * 10.
        sig_half = 0.01
        m_1D = np.log(np.ones(self.prob.survey.n_layer) * sig_half)
        Hz = self.prob.forward(m_1D)
        Hzanal = EM1DAnalytics.Hzanal(sig_half, self.prob.survey.frequency,
                                      self.prob.survey.offset, 'secondary')

        if self.showIt is True:

            plt.loglog(self.prob.survey.frequency, abs(Hz.real), 'b')
            plt.loglog(self.prob.survey.frequency, abs(Hzanal.real), 'b*')
            plt.loglog(self.prob.survey.frequency, abs(Hz.imag), 'r')
            plt.loglog(self.prob.survey.frequency, abs(Hzanal.imag), 'r*')
            plt.show()

        err = np.linalg.norm(Hz - Hzanal) / np.linalg.norm(Hzanal)
        self.assertTrue(err < 1e-5)
        print("EM1DFD-VMD for real conductivity works")
Exemplo n.º 5
0
    def test_EM1DFDfwd_CircularLoop_RealCond(self):
        self.prob.survey.src_type = 'CircularLoop'
        I = 1e0
        a = 1e1
        self.prob.survey.I = I
        self.prob.survey.a = a
        sig_half = 0.01
        m_1D = np.log(np.ones(self.prob.survey.n_layer) * sig_half)
        Hz = self.prob.forward(m_1D)
        Hzanal = EM1DAnalytics.HzanalCirc(sig_half, self.prob.survey.frequency,
                                          I, a, 'secondary')

        if self.showIt is True:

            plt.loglog(self.prob.survey.frequency, abs(Hz.real), 'b')
            plt.loglog(self.prob.survey.frequency, abs(Hzanal.real), 'b*')
            plt.loglog(self.prob.survey.frequency, abs(Hz.imag), 'r')
            plt.loglog(self.prob.survey.frequency, abs(Hzanal.imag), 'r*')
            plt.show()

        err = np.linalg.norm(Hz - Hzanal) / np.linalg.norm(Hzanal)
        self.assertTrue(err < 1e-5)
        print("EM1DFD-CircularLoop for real conductivity works")
 def step_func_dBzdt(time):
     return EM1DAnalytics.dBzdtAnalCircT(self.survey.a, time,
                                         self.sig_half)
 def step_func_dBzdt(time):
     return EM1DAnalytics.dBzdtAnalCircT(
         self.survey.a, time, self.sig_half
     )