fleshed out the resolution study script

This commit is contained in:
Stephen McQuay 2011-05-20 11:14:33 -06:00
parent b952a4a0c8
commit c85164769d

View File

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