# Diff of /trunk/escript/test/python/test_pdetools.py

revision 2263 by gross, Fri Feb 6 06:50:39 2009 UTC revision 2264 by gross, Wed Feb 11 06:48:28 2009 UTC
# Line 404  class Test_pdetools_noLumping(unittest.T Line 404  class Test_pdetools_noLumping(unittest.T
404            return out            return out
405
406        tol=1.e-4        tol=1.e-4
407        x,r=PCG(b*1.,Ap,x_ref*0.,Ms,dot, atol=0, rtol=tol, iter_max=12)        x,r,a_norm=PCG(b*1.,Ap,x_ref*0.,Ms,dot, atol=0, rtol=tol, iter_max=12)
408        self.failUnless(Lsup(x-x_ref)<=Lsup(x_ref)*tol*10.,"wrong solution")        self.failUnless(Lsup(x-x_ref)<=Lsup(x_ref)*tol*10.,"wrong solution")
409        self.failUnless(Lsup(r-(b-matrixmultiply(A,x)))<=Lsup(b)*EPSILON*100.,"wrong solution")        self.failUnless(Lsup(r-(b-matrixmultiply(A,x)))<=Lsup(b)*EPSILON*100.,"wrong solution")
410
# Line 628  class Test_pdetools_noLumping(unittest.T Line 628  class Test_pdetools_noLumping(unittest.T
628        x=GMRES(b,Ap,x_ref*0,dot,atol=0, rtol=tol, iter_max=12)        x=GMRES(b,Ap,x_ref*0,dot,atol=0, rtol=tol, iter_max=12)
629        self.failUnless(Lsup(x-x_ref)<=Lsup(x_ref)*tol*10.,"wrong solution")        self.failUnless(Lsup(x-x_ref)<=Lsup(x_ref)*tol*10.,"wrong solution")
630
631        def testGMRES_P_R(self):
632          from numarray import array,matrixmultiply, zeros, dot, size, Float64
633          from math import sqrt
634          A=array([[  4.752141253159452e+02, -2.391895572674098e-01,
635                      5.834798554135237e-01, -3.704394311709722e+00,
636                      5.765369186984777e+00, -1.309786358737351e+01,
637                      2.522087134507148e+01, -3.393956279045637e+01,
638                      1.046856914770830e+02, -2.447764190849540e+02],
639                   [ -2.391895572674098e-01,  1.256797283910693e+02,
640                     -9.188270412920813e-01,  1.300169538880688e+00,
641                     -5.353714719231424e-01,  2.674709444667012e+00,
642                     -1.116097841269580e+01,  2.801193427514478e+01,
643                     -3.877806125898224e+01,  3.063505753648256e+01],
644                   [  5.834798554135237e-01, -9.188270412920813e-01,
645                      6.240841811806843e+01, -8.176289504109282e-01,
646                      1.447935098417076e-01, -9.721424148655324e-01,
647                      6.713551574117577e-01, -3.656297654168375e+00,
648                      7.015141656913973e+00, -4.195525932156250e+01],
649                   [ -3.704394311709722e+00,  1.300169538880688e+00,
650                     -8.176289504109282e-01,  3.604980536782198e+01,
651                     -6.241238423759328e-01,  1.142345320047869e+00,
652                     -3.438816797096519e+00,  5.854857481367470e+00,
653                     -4.524311288596452e+00,  1.136590280389803e+01],
654                   [  5.765369186984777e+00, -5.353714719231424e-01,
655                      1.447935098417076e-01, -6.241238423759328e-01,
656                      2.953997190215862e+01, -9.474729233464712e-01,
657                      1.883516378345809e+00, -1.906274765704230e+00,
658                      4.401859671778645e+00, -1.064573816075257e+01],
659                   [ -1.309786358737351e+01,  2.674709444667012e+00,
660                     -9.721424148655324e-01,  1.142345320047869e+00,
661                     -9.474729233464712e-01,  2.876998216302979e+01,
662                     -4.853065259692995e-01,  7.088596468102618e-01,
663                     -8.972224295152829e-01,  5.228606946522749e+00],
664                   [  2.522087134507148e+01, -1.116097841269580e+01,
665                      6.713551574117577e-01, -3.438816797096519e+00,
666                      1.883516378345809e+00, -4.853065259692995e-01,
667                      5.121175860935919e+01, -3.523133115905478e-01,
668                      1.782136702229135e+00, -1.560849559916187e+00],
669                   [ -3.393956279045637e+01,  2.801193427514478e+01,
670                     -3.656297654168375e+00,  5.854857481367470e+00,
671                     -1.906274765704230e+00,  7.088596468102618e-01,
672                     -3.523133115905478e-01,  8.411681423853814e+01,
673                     -5.238590858177903e-01,  1.515872114883926e+00],
674                   [  1.046856914770830e+02, -3.877806125898224e+01,
675                      7.015141656913973e+00, -4.524311288596452e+00,
676                      4.401859671778645e+00, -8.972224295152829e-01,
677                      1.782136702229135e+00, -5.238590858177903e-01,
678                      1.797889693808014e+02, -8.362340479938084e-01],
679                   [ -2.447764190849540e+02,  3.063505753648256e+01,
680                     -4.195525932156250e+01,  1.136590280389803e+01,
681                     -1.064573816075257e+01,  5.228606946522749e+00,
682                     -1.560849559916187e+00,  1.515872114883926e+00,
683                     -8.362340479938084e-01,  3.833719335346630e+02]])
684          x_ref=array([ 0.41794207085296,   0.031441086046563,  0.882801683420401,
685                         0.807186823427233,  0.48950999450145,   0.995486532098031,
686                         0.351243009576568,  0.704352576819321,  0.850648989740204,
687                         0.314596738052894])
688          b=array([ 182.911023960262952,   -1.048322041992754,   44.181293875206201,
689                    30.344553414038817,   15.247917439094513,   24.060664905403492,
690                    27.210293789825833,   47.122067744075842,  199.267136417856847,
691                    -8.7934289814322  ])
692
693          def Ap(x):
694              return matrixmultiply(A,x)
695          def P_Rp(x):
696              out=zeros(size(x))
697              for i in xrange(size(b)):
698                out[i]=x[i]/A[i,i]
699              return out
700
701          tol=1.e-4
702          x=GMRES(b,Ap,x_ref*0,dot,atol=0, rtol=tol, iter_max=12,P_R=P_Rp)
703          self.failUnless(Lsup(x-x_ref)<=Lsup(x_ref)*tol*10.,"wrong solution")
704
705      def testNewtonGMRES(self):      def testNewtonGMRES(self):
706        from numarray import array,matrixmultiply, zeros, dot, size, Float64        from numarray import array,matrixmultiply, zeros, dot, size, Float64
707        from math import sqrt        from math import sqrt

Legend:
 Removed from v.2263 changed lines Added in v.2264