Ignore:
Timestamp:
Oct 21, 2004, 11:54:49 PM (20 years ago)
Author:
steve
Message:

CG tests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • inundation/ga/storm_surge/pyvolution/test_cg_solve.py

    r435 r438  
    22
    33import unittest
    4 #from math import sqrt
    54
    6 from Numeric import allclose, array, transpose, arange, ones, Float
     5from Matrix import *
     6from Numeric import dot, allclose, array, transpose, arange, ones, Float
     7from cg_solve import *
     8from scipy import sparse, mat
    79
    8 from cg_solve import *
    910
    10 from scipy import sparse
    11        
    1211class TestCase(unittest.TestCase):
    1312
    14     def setUp(self):
    15         pass
     13##     def test_solve(self):
     14##         """Small Matrix"""
    1615       
    17     def tearDown(self):
    18         pass
     16##         A = [[2.0, -1.0, 0.0, 0.0 ],
     17##              [-1.0, 2.0, -1.0, 0.0],
     18##              [0.0, -1.0, 2.0, -1.0],
     19##              [0.0, 0.0, -1.0, 2.0]]
    1920
     21##         A = mat(A)
    2022
    21     def test_solve(self):
     23##         xe = asarray([0.0, 1.0, 2.0,  3.0])
     24##         b  = A*xe
     25##         x =  asarray([0.0, 0.0, 0.0, 0.0])
     26
     27##         print A
     28##         print xe
     29##         print b
     30##         print b.shape
     31
     32##         x = conjugate_gradient(A,b,x,iprint=1)
     33
     34##         assert allclose(x,xe)
     35
     36    def test_sparse_solve(self):
     37        """Small Sparse Matrix"""
     38       
    2239        A = [[2.0, -1.0, 0.0, 0.0 ],
    2340             [-1.0, 2.0, -1.0, 0.0],
     
    2744        A = sparse.dok_matrix(A)
    2845
    29         print "A"
    30         print A
    31        
    3246        xe = [0.0, 1.0, 2.0, 3.0]
    3347        b  = A*xe
    3448        x =  [0.0, 0.0, 0.0, 0.0]
    3549
    36         x = conjugate_gradient(A,b,x,iprint=1)
    37 
    38         print "x",x
     50        x = conjugate_gradient(A,b,x,iprint=0)
    3951
    4052        assert allclose(x,xe)
     
    4254
    4355    def test_solve_large(self):
     56        """Standard 1d laplacian """
     57
    4458        A = sparse.dok_matrix()
    4559
     
    5266                A[i,i+1] = -0.5
    5367               
    54 #        print "\n"
    55 #        print "A\n"
    56 #        print A
    57        
    58        
    5968        xe = ones( (n,), Float)
    6069
    61 #        print xe
    6270        b  = A*xe
    63 
    64         x = conjugate_gradient(A,b,b,tol=1.0e-5,iprint=10)
    65 
    66 #        print "x",x
     71        x = conjugate_gradient(A,b,b,tol=1.0e-5,iprint=0)
    6772
    6873        assert allclose(x,xe)
    6974
    7075    def test_solve_large_2d(self):
     76        """Standard 2d laplacian"""
     77       
    7178        A = sparse.dok_matrix()
    7279
    73         n = 30
    74         m = 30
     80        n = 20
     81        m = 10
    7582        for i in arange(0,n):
    7683            for j in arange(0,m):
     
    8693                    A[I,I+1] = -1.0
    8794               
    88 #        print "\n"
    89 #        print "A\n"
    90 #        print A.todense()
    91        
    92        
    9395        xe = ones( (n*m,), Float)
    9496
    95 #        print xe
    9697        b  = A*xe
    97 
    98         x = conjugate_gradient(A,b,b,iprint=10)
    99 
    100 #        print "x",x
     98        x = conjugate_gradient(A,b,b,iprint=0)
    10199
    102100        assert allclose(x,xe)
     101
     102
     103    def test_vector_shape_error(self):
     104        """Raise VectorShapeError"""
     105       
     106        A = [[2.0, -1.0, 0.0, 0.0 ],
     107             [-1.0, 2.0, -1.0, 0.0],
     108             [0.0, -1.0, 2.0, -1.0],
     109             [0.0,0.0, -1.0, 2.0]]
     110       
     111        A = sparse.dok_matrix(A)
     112
     113        xe = [[0.0,2.0], [1.0,3.0], [2.0,4.0], [3.0,2.0]]
     114        b  = A*xe
     115        x =  [0.0, 0.0, 0.0, 0.0]
     116
     117        try:
     118            x = conjugate_gradient(A,b,b,iprint=0)
     119        except:
     120            pass
     121        else:
     122            msg = 'Should have raised exception'
     123            raise msg
    103124
    104125       
    105126#-------------------------------------------------------------
    106127if __name__ == "__main__":
    107     suite = unittest.makeSuite(TestCase,'test')
    108     runner = unittest.TextTestRunner()
    109     runner.run(suite)
     128     suite = unittest.makeSuite(TestCase,'test')
     129     runner = unittest.TextTestRunner(verbosity=2)
     130     runner.run(suite)
    110131
    111132   
Note: See TracChangeset for help on using the changeset viewer.