#!/usr/local/other/Python-2.5.4/bin/python import numpy import time import sys import math import solverOrder2 # number of grid points numPoints = int(sys.argv[1]) j=numpy.complex(0,1) pi_c = 4.0*math.atan(1.0) ################################## # Setting of the initial condition ################################## u=numpy.zeros((numPoints,numPoints),dtype=float) ################################ # Setting the boundary condition ################################ x=numpy.r_[0.0:pi_c:numPoints*j] u[0,:]=numpy.sin(x) u[numPoints-1,:]=numpy.sin(x)*numpy.exp(-pi_c) def regularSolver(u): iter =0 err = 2 while(iter <100000 and err>1e-6): (u,err)=solverOrder2.slowTimeStep(u) iter+=1 return (u,err,iter) begTime1 = time.time() (u,err,iter) = regularSolver(u) # endTime1 = time.time() print "Regular solver 2nd-order scheme: " print " Elapsed time: ", endTime1 - begTime1,"(s)" print " Number of iterations: ", iter print " Error:", err # Fast Solver v=numpy.zeros((numPoints,numPoints),dtype=float) x=numpy.r_[0.0:pi_c:numPoints*j] v[0,:]=numpy.sin(x) v[numPoints-1,:]=numpy.sin(x)*numpy.exp(-pi_c) def fastSolver(v): iter =0 err = 2 while(iter <100000 and err>1e-6): (v,err)=solverOrder2.numpyTimeStep(v) iter+=1 return (v,err,iter) begTime2 = time.time() (v,err,iter) = fastSolver(v) endTime2 = time.time() print " " print "Fast solver 2nd-order scheme: " print " Elapsed time: ", endTime2 - begTime2,"(s)" print " Number of iterations: ", iter print " Error:", err