def test_EM1DTDfwd_CirLoop_ComplexCond(self):

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

        self.prob = EM1D.EM1D(self.mesh1D, self.modelComplex, **self.options)
        self.prob.chi = np.zeros(self.survey.nlay)
        self.prob.pair(self.survey)

        self.prob.CondType = 'Complex'
        self.prob.survey.srcType = 'CircularLoop'
        self.prob.survey.offset = 10.
        sig_half = 0.01
        I = 1e0
        a = 1e1
        self.prob.survey.I = I
        self.prob.survey.a = a



        m_1D = np.log(np.ones(self.prob.survey.nlay)*sig_half)
        Hz = self.prob.fields(m_1D)
        BzTD = self.prob.survey.projectFields(u=Hz)

        sigCole = EM1DAnal.ColeCole(self.survey.frequency, sig_half, self.eta, self.tau, self.c)
        Bzanal = EM1DAnal.BzAnalCircTCole(a, self.survey.time, sigCole)

        if self.showIt == True:

            plt.loglog(self.survey.time, abs(BzTD), 'b')
            plt.loglog(self.survey.time, abs(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.rxType = 'dBzdt'
        dBzdtTD = self.prob.survey.projectFields(u=Hz)
        dBzdtanal = EM1DAnal.dBzdtAnalCircTCole(a, self.survey.time, sigCole)

        if self.showIt == True:

            plt.loglog(self.survey.time, abs(dBzdtTD), 'b')
            plt.loglog(self.survey.time, abs(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"
    def test_EM1DFDJvec_Half(self):
        self.prob.CondType = 'Real'
        self.prob.survey.srcType = 'CircularLoop'

        I = 1e0
        a = 1e1
        self.prob.survey.I = I
        self.prob.survey.a = a

        sig_half = np.r_[0.01]
        m_1D = np.log(np.ones(self.prob.survey.nlay)*sig_half)
        self.prob.jacSwitch = True

        Hz, dHzdsig = self.prob.fields(m_1D)
        dHzdsig = Utils.mkvc(dHzdsig)
        dHzdsiganal = EM1DAnal.dHzdsiganalCirc(sig_half, self.prob.survey.frequency, I, a, 'secondary')

        def fwdfun(m):
            self.prob.jacSwitch = False
            Hz = self.prob.fields(m)
            resp = self.prob.survey.projectFields(u=Hz)
            return resp

            # return Hz

        def jacfun(m, dm):
            self.prob.jacSwitch = True
            u = self.prob.fields(m)
            drespdmv = self.prob.Jvec(m, dm, u = u)
            return drespdmv


        if self.showIt == True:
            plt.loglog(self.prob.survey.frequency, abs(dHzdsig.imag), 'r')
            plt.loglog(self.prob.survey.frequency, abs(dHzdsig.real), 'b')
            plt.loglog(self.prob.survey.frequency, abs(dHzdsiganal.imag), 'r*')
            plt.loglog(self.prob.survey.frequency, abs(dHzdsiganal.real), 'b*')
            plt.show()

        dm = m_1D*0.1
        derChk = lambda m: [fwdfun(m), lambda mx: jacfun(m, mx)]
        passed = Tests.checkDerivative(derChk, m_1D, num=4, dx = dm, plotIt=False, eps = 1e-15)
        if passed:
            print "EM1DFD-half Jvec works"
    def test_EM1DTDfwd_CirLoop_RealCond(self):
        self.prob.CondType = 'Real'
        self.prob.survey.srcType = 'CircularLoop'
        self.prob.survey.offset = 10.
        sig_half = 0.01
        I = 1e0
        a = 1e1
        self.prob.survey.I = I
        self.prob.survey.a = a

        m_1D = np.log(np.ones(self.prob.survey.nlay) * sig_half)
        Hz = self.prob.fields(m_1D)
        BzTD = self.prob.survey.projectFields(u=Hz)
        Bzanal = EM1DAnal.BzAnalCircT(a, self.survey.time, sig_half)

        if self.showIt == 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.rxType = 'dBzdt'
        dBzdtTD = self.prob.survey.projectFields(u=Hz)
        dBzdtanal = EM1DAnal.dBzdtAnalCircT(a, self.survey.time, sig_half)

        if self.showIt == True:

            plt.loglog(self.survey.time, abs(dBzdtTD), 'b')
            plt.loglog(self.survey.time, abs(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"