smbinterp/bin/resolution.2D.py

59 lines
1.3 KiB
Python

import sys
import pickle
import time
from progressbar import *
from interp.grid.DD import *
from interp.tools import *
from interp import bootstrap
EXTRA_POINTS = 64
RES_START = 10
RES_END = 100
RES_DELTA = 10
ORDER_START = 1
ORDER_END = 8
dest_verts, output_filename = sys.argv[1:]
dest_verts = pickle.load(open(dest_verts, 'r'))
output_file = open(output_filename, 'w')
count = len(dest_verts) * len(xrange(RES_START,RES_END + 1, RES_DELTA)) * len(xrange(ORDER_START, ORDER_END + 1))
widgets = ['submit jobs: ', Percentage(), ' ', Bar(), ' ', ETA()]
pbar = ProgressBar(widgets = widgets, maxval = count)
pbar.start()
i=0
for resolution in xrange(RES_START,RES_END + 1, RES_DELTA):
r = rect_grid(resolution, resolution)
for v in xrange(len(r.verts)):
r.q[v] = baker_exact_2D(r.verts[v])
output_file.write("%f" % (1.0 / resolution))
for order in xrange(ORDER_START, ORDER_END + 1):
errors = []
start = time.time()
for X in dest_verts:
a = r.run_baker(X, order, EXTRA_POINTS)
cur_exact = baker_exact_2D(X)
e = a['final'] - cur_exact
errors.append(e)
i+=1
pbar.update(i)
end = time.time()
rmserror = rms(errors)
output_file.write(" %e" % rmserror)
output_file.write("\n")
output_file.flush()
pbar.finish()