diff --git a/bin/resolution.py b/bin/resolution.py index 0cfe5dd..619ab95 100644 --- a/bin/resolution.py +++ b/bin/resolution.py @@ -1,45 +1,58 @@ import sys -import numpy as np -from interp.grid.delaunay import dgrid -from interp.tools import baker_exact_3D -from interp.tools import rms -from progressbar import * +import pickle + +import time + +from progressbar import * + +from interp.grid.DD import * +from interp.tools import * +from interp import bootstrap + +EXTRA_POINTS = 95 + +RES_START = 10 +RES_END = 100 +RES_DELTA = 10 + +ORDER_START = 5 +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)) -attempts = 1000 widgets = ['submit jobs: ', Percentage(), ' ', Bar(), ' ', ETA()] -results = {} +pbar = ProgressBar(widgets = widgets, maxval = count) +pbar.start() -for r in xrange(2,8): - resolution = float("1e%d" % r) +i=0 +for resolution in xrange(RES_START,RES_END + 1, RES_DELTA): + r = rect_grid(resolution, resolution) - v = np.random.random((resolution,3)) - q = [baker_exact_3D(x) for x in v] - g = dgrid(v,q) + for v in xrange(len(r.verts)): + r.q[v] = baker_exact_2D(r.verts[v]) + output_file.write("%f" % (1.0 / resolution)) - pbar = ProgressBar(widgets = widgets, maxval = attempts) - pbar.start() - start = time.time() + for order in xrange(ORDER_START, ORDER_END + 1): + errors = [] - errors = [] - i = 0 - outside = 0 - while i < attempts: - try: - X = np.random.random((1,3))[0] - e = g.run_baker(X)['final'] - baker_exact_3D(X) + 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) - pbar.update(i+1) - i += 1 - except Exception as e: - # print X, i, resolution - outside += 1 + i+=1 + pbar.update(i) + end = time.time() - pbar.finish() - print "\n" - end = time.time() - - rmserror = rms(errors) - results[resolution] = rmserror - - print resolution, rmserror, outside, end - start + rmserror = rms(errors) + output_file.write(" %e" % rmserror) + output_file.write("\n") + output_file.flush() +pbar.finish()