881 |
else: |
else: |
882 |
r2=1*r |
r2=1*r |
883 |
x2=x*1. |
x2=x*1. |
884 |
x,stopped=__GMRESm(r2, Aprod, x, bilinearform, atol2, iter_max=iter_max-iter, iter_restart=m, verbose=verbose) |
x,stopped=_GMRESm(r2, Aprod, x, bilinearform, atol2, iter_max=iter_max-iter, iter_restart=m, verbose=verbose) |
885 |
iter+=iter_restart |
iter+=iter_restart |
886 |
if stopped: break |
if stopped: break |
887 |
if verbose: print "GMRES: restart." |
if verbose: print "GMRES: restart." |
889 |
if verbose: print "GMRES: tolerance has reached." |
if verbose: print "GMRES: tolerance has reached." |
890 |
return x |
return x |
891 |
|
|
892 |
def __GMRESm(r, Aprod, x, bilinearform, atol, iter_max=100, iter_restart=20, verbose=False): |
def _GMRESm(r, Aprod, x, bilinearform, atol, iter_max=100, iter_restart=20, verbose=False): |
893 |
iter=0 |
iter=0 |
894 |
|
|
895 |
h=numarray.zeros((iter_restart+1,iter_restart),numarray.Float64) |
h=numarray.zeros((iter_restart+1,iter_restart),numarray.Float64) |