示例#1
0
    def test_write_vm(self):
        """
        Should write in the native VM format
        """
        sl = np.random.rand(512, 1, 64)
        vm = VM(sl=sl)

        self.assertEqual(vm.grid.shape, sl.shape)
        self.assertAlmostEqual(vm.sl[0, 0, 0], sl[0, 0, 0], 7)

        fname = "temp_out.vm"
        if os.path.isfile(fname):
            os.remove(fname)

        # should write to VM format
        vm.write(fname)
        self.assertTrue(os.path.isfile(fname))

        # should have the same data
        vm1 = VM(fname)
        self.assertEqual(vm1.sl.shape, vm.sl.shape)
        self.assertEqual(vm1.sl[0, 0, 0], vm.sl[0, 0, 0])
        self.assertEqual(vm1.sl[-1, -1, -1], vm.sl[-1, -1, -1])

        # clean up
        if os.path.isfile(fname):
            os.remove(fname)
示例#2
0
    def test_write_vm(self):
        """
        Should write in the native VM format
        """
        sl = np.random.rand(512, 1, 64)
        vm = VM(sl=sl)

        self.assertEqual(vm.grid.shape, sl.shape)
        self.assertAlmostEqual(vm.sl[0, 0, 0], sl[0, 0, 0], 7)

        fname = 'temp_out.vm'
        if os.path.isfile(fname):
            os.remove(fname)

        # should write to VM format
        vm.write(fname)
        self.assertTrue(os.path.isfile(fname))

        # should have the same data
        vm1 = VM(fname)
        self.assertEqual(vm1.sl.shape, vm.sl.shape)
        self.assertEqual(vm1.sl[0, 0, 0], vm.sl[0, 0, 0])
        self.assertEqual(vm1.sl[-1, -1, -1], vm.sl[-1, -1, -1])

        # clean up
        if os.path.isfile(fname):
            os.remove(fname)
示例#3
0
    def test_write_bin(self):
        """
        Should write grid to headerless binary format
        """
        sl = np.random.rand(512, 1, 64)
        vm = VM(sl=sl)

        fname = "temp_out.bin"
        if os.path.isfile(fname):
            os.remove(fname)

        vm.write(fname)

        f = open(fname, "r")
        dat = np.fromstring(f.read(), dtype="float32").reshape(sl.shape)

        for v1, v2 in zip(dat.flatten(), vm.sl.flatten()):
            self.assertEqual(v1, v2)

        if os.path.isfile(fname):
            os.remove(fname)
示例#4
0
    def test_write_bin(self):
        """
        Should write grid to headerless binary format
        """
        sl = np.random.rand(512, 1, 64)
        vm = VM(sl=sl)

        fname = 'temp_out.bin'
        if os.path.isfile(fname):
            os.remove(fname)

        vm.write(fname)

        f = open(fname, 'rb')
        dat = np.fromstring(f.read(), dtype='float32').reshape(sl.shape)

        for v1, v2 in zip(dat.flatten(), vm.sl.flatten()):
            self.assertEqual(v1, v2)

        if os.path.isfile(fname):
            os.remove(fname)
示例#5
0
    def dev_readwrite_interface_flags(self):
        """
        Should handle Fortran vs. Python indexing for interface flags
        """
        sl = np.random.rand(8, 1, 12)
        vm = VM(sl=sl)

        vm.insert_interface(1)

        vm.ir = np.zeros((1, vm.nx, vm.ny))
        vm.ij = np.zeros((1, vm.nx, vm.ny))

        fname = 'temp_out.vm'
        if os.path.isfile(fname):
            os.remove(fname)

        vm.write(fname)

        # writing should not change flags
        for ilyr in range(vm.nr):
            for ix in range(vm.nx):
                for iy in range(vm.ny):
                    self.assertEqual(vm.ir[ilyr, ix, iy], 0)
                    self.assertEqual(vm.ij[ilyr, ix, iy], 0)

        # read should handle -1 for indexing
        vm1 = VM(fname)
        for ilyr in range(vm1.nr):
            for ix in range(vm1.nx):
                for iy in range(vm1.ny):
                    self.assertEqual(vm1.ir[ilyr, ix, iy], 0)
                    self.assertEqual(vm1.ij[ilyr, ix, iy], 0)

        # clean up
        if os.path.isfile(fname):
            os.remove(fname)
示例#6
0
    z[ix] = z0 + m * (x - x[0])
    z0 = z[ix[-1]]

# expand into 3D
n = np.ones((vm.nx, 1))
for i in range(0, ny):
    n[i] = z[i]

s = np.ones((vm.nx, vm.ny))
for i in range(0, ny):
    #s = np.hstack((n,n))
    s[i, :] = n[i]

z = np.array(s)

# add the boundary
vm.insert_interface(np.reshape(z, (vm.nx, vm.ny)))

##

# add some velocities
vm.define_constant_layer_velocity(0, 4.0)  #surface
vm.define_constant_layer_velocity(1, 6.0)  #ocean

print(vm)
# plot
vm.plot()

# write
vm.write('11.11.vm')