コード例 #1
0
ファイル: test_Fields.py プロジェクト: sdevriese/simpeg
 def setUp(self):
     mesh = Mesh.TensorMesh([np.ones(n) * 5 for n in [10, 11, 12]],
                            [0, 0, -30])
     x = np.linspace(5, 10, 3)
     XYZ = Utils.ndgrid(x, x, np.r_[0.])
     srcLoc = np.r_[0., 0., 0.]
     rxList0 = Survey.BaseRx(XYZ, 'exi')
     Src0 = Survey.BaseSrc([rxList0], loc=srcLoc)
     rxList1 = Survey.BaseRx(XYZ, 'bxi')
     Src1 = Survey.BaseSrc([rxList1], loc=srcLoc)
     rxList2 = Survey.BaseRx(XYZ, 'bxi')
     Src2 = Survey.BaseSrc([rxList2], loc=srcLoc)
     rxList3 = Survey.BaseRx(XYZ, 'bxi')
     Src3 = Survey.BaseSrc([rxList3], loc=srcLoc)
     Src4 = Survey.BaseSrc([rxList0, rxList1, rxList2, rxList3], loc=srcLoc)
     srcList = [Src0, Src1, Src2, Src3, Src4]
     survey = Survey.BaseSurvey(srcList=srcList)
     self.D = Survey.Data(survey)
     self.F = Problem.Fields(mesh,
                             survey,
                             knownFields={
                                 'phi': 'CC',
                                 'e': 'E',
                                 'b': 'F'
                             },
                             dtype={
                                 "phi": float,
                                 "e": complex,
                                 "b": complex
                             })
     self.Src0 = Src0
     self.Src1 = Src1
     self.mesh = mesh
     self.XYZ = XYZ
コード例 #2
0
ファイル: SurveyTDEM.py プロジェクト: gitter-badger/simpeg
    def evalDeriv(self, u, v=None, adjoint=False):
        assert v is not None, 'v to multiply must be provided.'

        if not adjoint:
            data = Survey.Data(self)
            for src in self.srcList:
                for rx in src.rxList:
                    data[src, rx] = rx.evalDeriv(src, self.mesh,
                                                 self.prob.timeMesh, u, v)
            return data
        else:
            f = FieldsTDEM(self.mesh, self)
            for src in self.srcList:
                for rx in src.rxList:
                    Ptv = rx.evalDeriv(src,
                                       self.mesh,
                                       self.prob.timeMesh,
                                       u,
                                       v,
                                       adjoint=True)
                    Ptv = Ptv.reshape((-1, self.prob.timeMesh.nN), order='F')
                    if rx.projField not in f:  # first time we are projecting
                        f[src, rx.projField, :] = Ptv
                    else:  # there are already fields, so let's add to them!
                        f[src, rx.projField, :] += Ptv
            return f
コード例 #3
0
ファイル: Base.py プロジェクト: micheal6474/simpeg
    def eval(self, f):
        """Project fields to receiver locations

        :param Fields u: fields object
        :rtype: numpy.ndarray
        :return: data
        """
        data = Survey.Data(self)
        for src in self.srcList:
            for rx in src.rxList:
                data[src, rx] = rx.eval(src, self.mesh, f)
        return data
コード例 #4
0
    def test_data(self):
        V = []
        for src in self.D.survey.srcList:
            for rx in src.rxList:
                v = np.random.rand(rx.nD)
                V += [v]
                self.D[src, rx] = v
                self.assertTrue(np.all(v == self.D[src, rx]))
        V = np.concatenate(V)
        self.assertTrue(np.all(V == Utils.mkvc(self.D)))

        D2 = Survey.Data(self.D.survey, V)
        self.assertTrue(np.all(Utils.mkvc(D2) == Utils.mkvc(self.D)))
コード例 #5
0
ファイル: test_SurveyAndData.py プロジェクト: mpgriff/simpeg
 def setUp(self):
     mesh = Mesh.TensorMesh([np.ones(n)*5 for n in [10,11,12]],[0,0,-30])
     x = np.linspace(5,10,3)
     XYZ = Utils.ndgrid(x,x,np.r_[0.])
     srcLoc = np.r_[0,0,0.]
     rxList0 = Survey.BaseRx(XYZ, 'exi')
     Src0 = Survey.BaseSrc([rxList0], loc=srcLoc)
     rxList1 = Survey.BaseRx(XYZ, 'bxi')
     Src1 = Survey.BaseSrc([rxList1], loc=srcLoc)
     rxList2 = Survey.BaseRx(XYZ, 'bxi')
     Src2 = Survey.BaseSrc([rxList2], loc=srcLoc)
     rxList3 = Survey.BaseRx(XYZ, 'bxi')
     Src3 = Survey.BaseSrc([rxList3], loc=srcLoc)
     Src4 = Survey.BaseSrc([rxList0, rxList1, rxList2, rxList3], loc=srcLoc)
     srcList = [Src0,Src1,Src2,Src3,Src4]
     survey = Survey.BaseSurvey(srcList=srcList)
     self.D = Survey.Data(survey)
コード例 #6
0
    def test_standard_dev(self):
        V = []
        for src in self.D.survey.srcList:
            for rx in src.rxList:
                v = np.random.rand(rx.nD)
                V += [v]
                self.D.standard_deviation[src, rx] = v
                self.assertTrue(np.all(v == self.D.standard_deviation[src,
                                                                      rx]))
        V = np.concatenate(V)
        self.assertTrue(np.all(V == Utils.mkvc(self.D.standard_deviation)))

        D2 = Survey.Data(self.D.survey, standard_deviation=V)
        self.assertTrue(
            np.all(
                Utils.mkvc(D2.standard_deviation) == Utils.mkvc(
                    self.D.standard_deviation)))
コード例 #7
0
    def test_projectAdjoint(self):
        prb = self.prb
        survey = prb.survey
        mesh = self.mesh

        # Generate random fields and data
        f = EM.TDEM.FieldsTDEM(prb.mesh, prb.survey)
        for i in range(prb.nT):
            f[:, 'b', i] = np.random.rand(mesh.nF, 1)
            f[:, 'e', i] = np.random.rand(mesh.nE, 1)
        d_vec = np.random.rand(survey.nD)
        d = Survey.Data(survey, v=d_vec)

        # Check that d.T*Q*f = f.T*Q.T*d
        V1 = d_vec.dot(survey.evalDeriv(None, v=f).tovec())
        V2 = f.tovec().dot(survey.evalDeriv(None, v=d, adjoint=True).tovec())

        self.assertTrue((V1 - V2) / np.abs(V1) < tol)
コード例 #8
0
ファイル: SurveyTDEM.py プロジェクト: gitter-badger/simpeg
 def eval(self, u):
     data = Survey.Data(self)
     for src in self.srcList:
         for rx in src.rxList:
             data[src, rx] = rx.eval(src, self.mesh, self.prob.timeMesh, u)
     return data