/[escript]/trunk/escript/test/python/test_pdetools.py
ViewVC logotype

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1877 by ksteube, Thu Sep 25 06:43:44 2008 UTC revision 1878 by gross, Tue Oct 14 03:39:13 2008 UTC
# Line 48  __author__="Lutz Gross, l.gross@uq.edu.a Line 48  __author__="Lutz Gross, l.gross@uq.edu.a
48  import unittest  import unittest
49  from esys.escript import *  from esys.escript import *
50  from esys.escript.pdetools import Locator,Projector,TimeIntegrationManager,NoPDE,PCG, IterationHistory, ArithmeticTuple, GMRES  from esys.escript.pdetools import Locator,Projector,TimeIntegrationManager,NoPDE,PCG, IterationHistory, ArithmeticTuple, GMRES
51    from esys.escript.pdetools import Defect, NewtonGMRES
52    
53  class Test_pdetools_noLumping(unittest.TestCase):  class Test_pdetools_noLumping(unittest.TestCase):
54      DEBUG=False      DEBUG=False
# Line 480  class Test_pdetools_noLumping(unittest.T Line 481  class Test_pdetools_noLumping(unittest.T
481        x=GMRES(b*1.,Ap,Ms,dot, IterationHistory(tol).stoppingcriterium2,x=x_ref*1.5, iter_max=12)        x=GMRES(b*1.,Ap,Ms,dot, IterationHistory(tol).stoppingcriterium2,x=x_ref*1.5, iter_max=12)
482        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")
483    
484        def testNewtonGMRES(self):
485          from numarray import array,matrixmultiply, zeros, dot, size, Float64
486          from math import sqrt
487          class LL(Defect):
488               def __init__(self,*kwargs):
489                    super(LL, self).__init__(*kwargs)
490                    self.A=array([[  4.752141253159452e+02, -2.391895572674098e-01,
491                                5.834798554135237e-01, -3.704394311709722e+00,
492                                5.765369186984777e+00, -1.309786358737351e+01,
493                                2.522087134507148e+01, -3.393956279045637e+01,
494                                1.046856914770830e+02, -2.447764190849540e+02],
495                             [ -2.391895572674098e-01,  1.256797283910693e+02,
496                               -9.188270412920813e-01,  1.300169538880688e+00,
497                               -5.353714719231424e-01,  2.674709444667012e+00,
498                               -1.116097841269580e+01,  2.801193427514478e+01,
499                               -3.877806125898224e+01,  3.063505753648256e+01],
500                             [  5.834798554135237e-01, -9.188270412920813e-01,
501                                6.240841811806843e+01, -8.176289504109282e-01,
502                                1.447935098417076e-01, -9.721424148655324e-01,
503                                6.713551574117577e-01, -3.656297654168375e+00,
504                                7.015141656913973e+00, -4.195525932156250e+01],
505                             [ -3.704394311709722e+00,  1.300169538880688e+00,
506                               -8.176289504109282e-01,  3.604980536782198e+01,
507                               -6.241238423759328e-01,  1.142345320047869e+00,
508                               -3.438816797096519e+00,  5.854857481367470e+00,
509                               -4.524311288596452e+00,  1.136590280389803e+01],
510                             [  5.765369186984777e+00, -5.353714719231424e-01,
511                                1.447935098417076e-01, -6.241238423759328e-01,
512                                2.953997190215862e+01, -9.474729233464712e-01,
513                                1.883516378345809e+00, -1.906274765704230e+00,
514                                4.401859671778645e+00, -1.064573816075257e+01],
515                             [ -1.309786358737351e+01,  2.674709444667012e+00,
516                               -9.721424148655324e-01,  1.142345320047869e+00,
517                               -9.474729233464712e-01,  2.876998216302979e+01,
518                               -4.853065259692995e-01,  7.088596468102618e-01,
519                               -8.972224295152829e-01,  5.228606946522749e+00],
520                             [  2.522087134507148e+01, -1.116097841269580e+01,
521                                6.713551574117577e-01, -3.438816797096519e+00,
522                                1.883516378345809e+00, -4.853065259692995e-01,
523                                5.121175860935919e+01, -3.523133115905478e-01,
524                                1.782136702229135e+00, -1.560849559916187e+00],
525                             [ -3.393956279045637e+01,  2.801193427514478e+01,
526                               -3.656297654168375e+00,  5.854857481367470e+00,
527                               -1.906274765704230e+00,  7.088596468102618e-01,
528                               -3.523133115905478e-01,  8.411681423853814e+01,
529                               -5.238590858177903e-01,  1.515872114883926e+00],
530                             [  1.046856914770830e+02, -3.877806125898224e+01,
531                                7.015141656913973e+00, -4.524311288596452e+00,
532                                4.401859671778645e+00, -8.972224295152829e-01,
533                                1.782136702229135e+00, -5.238590858177903e-01,
534                                1.797889693808014e+02, -8.362340479938084e-01],
535                             [ -2.447764190849540e+02,  3.063505753648256e+01,
536                               -4.195525932156250e+01,  1.136590280389803e+01,
537                               -1.064573816075257e+01,  5.228606946522749e+00,
538                               -1.560849559916187e+00,  1.515872114883926e+00,
539                               -8.362340479938084e-01,  3.833719335346630e+02]])
540                    self.x_ref=array([ 0.41794207085296,   0.031441086046563,  0.882801683420401,
541                         0.807186823427233,  0.48950999450145,   0.995486532098031,
542                         0.351243009576568,  0.704352576819321,  0.850648989740204,
543                         0.314596738052894])
544                    self.b=array([ 182.911023960262952,   -1.048322041992754,   44.181293875206201,
545                         30.344553414038817,   15.247917439094513,   24.060664905403492,
546                         27.210293789825833,   47.122067744075842,  199.267136417856847,
547                         -8.7934289814322  ])
548               def eval(self,x):
549                  out=matrixmultiply(self.A,x)-self.b
550                  for i in xrange(size(self.b)):
551                    out[i]/=self.A[i,i]
552                  return out
553               def bilinearform(self,x0,x1):
554                  return dot(x0,x1)
555                  
556          tol=1.e-8
557          ll=LL()
558          x=NewtonGMRES(LL(),ll.x_ref*0., iter_max=100, sub_iter_max=20, atol=0,rtol=tol, verbose=self.VERBOSE)
559          self.failUnless(Lsup(x-ll.x_ref)<=Lsup(ll.x_ref)*tol*10.,"wrong solution")
560    
561      def testArithmeticTuple(self):      def testArithmeticTuple(self):
562          a=ArithmeticTuple(1.,2.)          a=ArithmeticTuple(1.,2.)
563          self.failUnless(len(a)==2,"wrong length")          self.failUnless(len(a)==2,"wrong length")

Legend:
Removed from v.1877  
changed lines
  Added in v.1878

  ViewVC Help
Powered by ViewVC 1.1.26