Example #1
0
    def test_NumpyToIVector(self):
        """Implemented in custom_rvalue.cpp."""
        x = np.array(range(-10, 10))
        a = pg.IVector(x)
        self.assertEqual(a.size(), len(x))
        self.assertEqual(pg.sum(a), sum(x))

        x = np.arange(-10, 10, dtype=np.int64)
        a = pg.IVector(x)
        self.assertEqual(a.size(), len(x))
        self.assertEqual(pg.sum(a), sum(x))

        x = np.arange(-10, 10, dtype="int")
        a = pg.IVector(x)
        self.assertEqual(a.size(), len(x))
        self.assertEqual(pg.sum(a), sum(x))

        x = np.array([-10, 100], dtype="int")
        a = pg.IVector(x)
        self.assertEqual(a.size(), len(x))
        self.assertEqual(pg.sum(a), sum(x))

        x = np.arange(10, dtype=np.long)
        a = pg.IVector(x)
        self.assertEqual(a.size(), len(x))
        self.assertEqual(pg.sum(a), sum(x))
        self.assertEqual(pg.sum(x), sum(x))
Example #2
0
    def test_NumpyToIVector(self):
        """Implemented in custom_rvalue.cpp."""
        x = np.array(range(-10, 10))
        a = pg.IVector(x)
        # pg.core.setDeepDebug(1)
        # print(a)
        # pg.core.setDeepDebug(0)
        # sys.exit()
        self.assertEqual(a.size(), len(x))
        self.assertEqual(pg.sum(a), sum(x))

        x = np.arange(-10, 10, dtype=np.int64)
        a = pg.IVector(x)
        self.assertEqual(a.size(), len(x))
        self.assertEqual(pg.sum(a), sum(x))

        x = np.arange(-10, 10, dtype="int")
        a = pg.IVector(x)
        self.assertEqual(a.size(), len(x))
        self.assertEqual(pg.sum(a), sum(x))

        x = np.array([-10, 100], dtype="int")
        a = pg.IVector(x)
        self.assertEqual(a.size(), len(x))
        self.assertEqual(pg.sum(a), sum(x))

        x = np.arange(10, dtype=int)
        a = pg.IVector(x)
        self.assertEqual(a.size(), len(x))
        self.assertEqual(pg.sum(a), sum(x))
        self.assertEqual(pg.sum(x), sum(x))
Example #3
0
    def test_RVectorIndexRW(self):

        v = pg.Vector(5, 2.0)
        np.testing.assert_array_equal(v, [2, 2, 2, 2, 2])

        v += 1.0
        np.testing.assert_array_equal(v, [3, 3, 3, 3, 3])

        v += 1
        np.testing.assert_array_equal(v, [4, 4, 4, 4, 4])

        v[1] = 1.0
        np.testing.assert_array_equal(v, [4, 1, 4, 4, 4])

        v[1] += 1.0
        np.testing.assert_array_equal(v, [4, 2, 4, 4, 4])

        v[[1,2]] = 2.0
        np.testing.assert_array_equal(v, [4, 2, 2, 4, 4])

        v[pg.IVector(1,3)] = 3.0
        np.testing.assert_array_equal(v, [4, 2, 2, 3, 4])

        v[pg.IVector(5,2)] = 1.0
        np.testing.assert_array_equal(v, [4, 2, 1, 3, 4])

        v[pg.find(v==4.0)] = 5.0
        np.testing.assert_array_equal(v, [5, 2, 1, 3, 5])

        v[v==5.0] = 4.0
        np.testing.assert_array_equal(v, [4, 2, 1, 3, 4])

        v[v==4.0] = 5.0
        np.testing.assert_array_equal(v, [5, 2, 1, 3, 5])

        #this will work only if we overwrite __iadd__
        #v[v==4.0] += 1.0
        #np.testing.assert_array_equal(v, [6, 2, 1, 3, 6])

        v.setVal(1.0, 1)
        np.testing.assert_array_equal(v, [5, 1, 1, 3, 5])
Example #4
0
    def setMesh(self, mesh, **kwargs):  # secondaryNodes=3):
        """Set mesh and create additional secondary Nodes in cell centers."""
        super().setMesh(mesh, **kwargs)  # ignoreRegionManager=True)
        print(self.mesh(), self.mesh().secondaryNodeCount())
        self.mids = pg.IVector()
        self.nnodes = self.mesh().nodeCount()
        for c in self.mesh().cells():
            n = self.mesh().createSecondaryNode(c.center())
            c.addSecondaryNode(n)
            self.mids.push_back(n.id())

        print(self.mesh())
Example #5
0
    def test_IVectorOP(self):
        v = pg.IVector(5, 1)

        # print(v + 2)
        # print(v - 2)
        # print(2 * v)
        #print(v * 2)
        #self.assertEqual(sum(v * 2), 10)

        self.assertEqual(sum(v + 1), 10)
        self.assertEqual(sum(v - 2), -5)
        #self.assertEqual(sum(v * 2), 10)
        self.assertEqual(sum(v / 1), 5)
        self.assertEqual(sum(1 + v), 10)
        self.assertEqual(sum(-1 - v), -10)
        self.assertEqual(sum(2 * v), 10)
        self.assertEqual(sum(1 / v), 5)
Example #6
0
    def test_XVectorBasics(self):
        def testVector(v):

            for t in v:
                self.assertEqual(t, 1.0)

            self.assertEqual(sum(v), 5.0)
            self.assertFalse(pg.haveInfNaN(v))

            v[1] = 0
            self.assertEqual(v[1], 0)

            v[1] = 1
            self.assertEqual(v[1], 1)
            #print(v/v)

        testVector(pg.RVector(5, 1.0))
        testVector(pg.CVector(5, 1.0))
        testVector(pg.BVector(5, True))
        testVector(pg.IVector(5, 1))
Example #7
0
    def test_IVectorOP(self):
        v = pg.IVector(5, 1)

        # print(v + 2)
        # print(v - 2)
        # print(2 * v)
        #print(v * 2)
        #self.assertEqual(sum(v * 2), 10)

        self.assertEqual(sum(v + 1), 10)
        self.assertEqual(sum(v - 2), -5)
        self.assertEqual(sum(v / 1), 5)
        self.assertEqual(sum(1 + v), 10)
        self.assertEqual(sum(-1 - v), -10)
        self.assertEqual(sum(1 / v), 5)
        # no clue why this doesnt work .. we might could hack them if someone need it
        #self.assertEqual(sum(v * 2), 10)

        self.assertEqual(sum(v + v), 10)
        self.assertEqual(sum(v * v), 5)
        self.assertEqual(sum(v - v), 0)
        self.assertEqual(sum(v / v), 5)
        self.assertEqual(sum(2 * v), 10)
Example #8
0
                              schemeName='dd')

meshERT = mt.createParaMesh(ertScheme,
                            quality=33,
                            paraMaxCellSize=0.2,
                            boundaryMaxCellSize=50,
                            smooth=[1, 2])
pg.show(meshERT)

################################################################################
# Use simulated concentrations to calculate bulk resistivity using Archie's Law
# and fill matrix with apparent resistivity ratios with respect to a background
# model:

# Select 10 time frame to simulate ERT data
timesERT = pg.IVector(np.floor(np.linspace(0, len(c) - 1, 10)))

# Create conductivity of fluid for salt concentration $c$
sigmaFluid = c[timesERT] * 0.1 + 0.01

# Calculate bulk resistivity based on Archie's Law
resBulk = petro.resistivityArchie(rFluid=1. / sigmaFluid,
                                  porosity=0.3,
                                  m=1.3,
                                  mesh=mesh,
                                  meshI=meshERT,
                                  fill=1)

# apply background resistivity model
rho0 = np.zeros(meshERT.cellCount()) + 1000.
for c in meshERT.cells():