/usr/lib/petscdir/3.7.7/x86_64-linux-gnu-complex-debug/bin/PetscBinaryIO_tests.py is in libpetsc-complex-3.7.7-dbg 3.7.7+dfsg1-2build5.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | import unittest
from petsc4py import PETSc
import os
from PetscBinaryIO import *
class TestPetscBinaryIO(unittest.TestCase):
def setUp(self):
try:
os.remove('test.dat')
except OSError:
pass
try:
os.remove('test.dat.info')
except OSError:
pass
def test_VecRead(self):
"""Test reading a Vec"""
array = np.array([1.1, 2.2, 3.3])
vec = PETSc.Vec().createSeq(3)
vec[...] = array
viewer = PETSc.Viewer().createBinary('test.dat', PETSc.Viewer.Mode.W)
vec.view(viewer)
viewer.destroy()
vec.destroy()
result, = PetscBinaryIO().readBinaryFile('test.dat')
self.assertTrue(np.allclose(array, result))
def test_VecWrite(self):
"""Test writing a Vec"""
array = np.array([1.1, 2.2, 3.3])
PetscBinaryIO().writeBinaryFile('test.dat', [array.view(Vec),])
vec = PETSc.Vec().createSeq(3)
vec.set(0.)
viewer = PETSc.Viewer().createBinary('test.dat', PETSc.Viewer.Mode.R)
vec.load(viewer)
viewer.destroy()
self.assertTrue(np.allclose(array, vec[...]))
vec.destroy()
def test_ISRead(self):
"""Test reading an IS"""
indices = np.array([3,4,5])
anis = PETSc.IS().createGeneral(list(indices))
viewer = PETSc.Viewer().createBinary('test.dat', PETSc.Viewer.Mode.W)
anis.view(viewer)
viewer.destroy()
anis.destroy()
result, = PetscBinaryIO().readBinaryFile('test.dat')
self.assertTrue((indices == result).all())
def test_MatRead(self):
"""Test reading a Mat"""
mat = PETSc.Mat().createAIJ(2)
mat[0,0] = 1.1
mat[0,1] = 2.1
mat[1,1] = 3.1
mat.assemble()
vals = np.array([1.1,2.1,3.1])
counts = np.array([0,2,3])
cols = np.array([0,1,1])
viewer = PETSc.Viewer().createBinary('test.dat', PETSc.Viewer.Mode.W)
mat.view(viewer)
viewer.destroy()
mat.destroy()
result, = PetscBinaryIO().readBinaryFile('test.dat')
self.assertTrue(np.allclose(vals, result[1][2]))
self.assertTrue((counts == result[1][0]).all())
self.assertTrue((cols == result[1][1]).all())
self.assertTrue((2,2) == result[0])
def test_MatWrite(self):
"""Test writing a Mat"""
vals = np.array([1.1,2.1,3.1])
counts = np.array([0,2,3])
cols = np.array([0,1,1])
mat = MatSparse(((2,2),(counts,cols,vals)))
dense = np.array([1.1,2.1,0.0,3.1])
PetscBinaryIO().writeBinaryFile('test.dat', [mat,])
mat = PETSc.Mat().createAIJ(2)
viewer = PETSc.Viewer().createBinary('test.dat', PETSc.Viewer.Mode.R)
mat.load(viewer)
viewer.destroy()
self.assertTrue(np.allclose(dense, mat[:,:].ravel()))
mat.destroy()
if __name__ == '__main__':
unittest.main()
try:
os.remove('test.dat')
except OSError:
pass
try:
os.remove('test.dat.info')
except OSError:
pass
|