working on the guarantee simplex routine. I have a test case to try it out against, and need to look at visiting neighbors of faces adjacent to points.

This commit is contained in:
Stephen Mardson McQuay
2010-04-23 16:29:31 -06:00
parent 0a388ff1b5
commit cfcd1e15a2
12 changed files with 11081 additions and 19 deletions
+1002
View File
File diff suppressed because it is too large Load Diff
+9887
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -3,7 +3,7 @@
import sys
from grid.DDD import random_grid
from baker import get_phis_3D, run_baker_3D
from baker.tools import exact_func_3D, smberror, evaluate_answer
from baker.tools import exact_func_3D, smberror, improved_answer
try:
total_points = int(sys.argv[1])
except:
@@ -32,13 +32,13 @@ if [i for i in phis if i < 0.0]:
try:
r = run_baker_3D(X, R, S)
evaluate_answer(r, exact)
improved_answer(r, exact)
except smberror as e:
print e
try:
answer = g.run_baker(X)
evaluate_answer(answer, exact)
improved_answer(answer, exact)
except smberror as e:
print e
+42
View File
@@ -0,0 +1,42 @@
#!/usr/bin/python2.6
import sys
from grid.DD import random_grid
from baker import get_phis, run_baker
from baker.tools import exact_func, smberror, improved_answer
from glob import glob
from os import remove
FILE_PREFIX='/tmp/qhull-'
for g in glob('%s*' % FILE_PREFIX):
remove(g)
try:
total_points = int(sys.argv[1])
total_tries = int(sys.argv[2])
except:
print "usage: app.py total_points total_tries"
sys.exit(1)
print "total points", total_points
d = {True: 0, False: 0}
for i in xrange(total_tries):
g = random_grid(total_points)
open('%s%0.3d.txt' % (FILE_PREFIX, i), 'w').write(g.for_qhull())
X = [0.3, 0.3]
exact = exact_func(X)
try:
answer = g.run_baker(X)
d[improved_answer(answer, exact)] += 1
except smberror as e:
print e
print d
+36
View File
@@ -0,0 +1,36 @@
#!/usr/bin/python2.6
import sys
from grid.DD import grid
from grid.qhull import parse_qhull_file
from baker import get_phis, run_baker
from baker.tools import exact_func, smberror, improved_answer
from glob import glob
from os import remove
FILE_PREFIX='/tmp/qhull-'
for g in glob('%s*' % FILE_PREFIX):
remove(g)
try:
verts = parse_qhull_file(sys.argv[1], verbose=True)
except:
print "usage: app.py qhullinputfile"
sys.exit(1)
q = [exact_func(i) for i in verts]
g = grid(verts,q)
X = [0.3, 0.3]
g.get_containing_simplex(X)
exact = exact_func(X)
try:
answer = g.run_baker(X)
d[improved_answer(answer, exact)] += 1
except smberror as e:
print e
+49
View File
@@ -0,0 +1,49 @@
#!/usr/bin/python
import math
from baker import run_baker
from grid.DD import grid
from grid.simplex import contains
def exact_func(X):
x = X[0]
y = X[0]
return 1 - math.sin((x-0.5)**2 + (y-0.5)**2)
if __name__ == '__main__':
points = [
[ 0.25, 0.40], # 0
[ 0.60, 0.80], # 1
[ 0.65, 0.28], # 2
[ 0.28, 0.65], # 3
[ 1.00, 0.75], # 4
[ 0.30, 0.95], # 5
[ 0.80, 0.50], # 6
[ 0.35, 0.15], # 7
]
q = [exact_func(p) for p in points]
X = [0.55, 0.45]
g = grid(points, q)
g.construct_connectivity()
R = g.create_mesh(range(3))
print contains(X, R.points)
extra = 3
S = g.create_mesh(range(3, 3 + extra))
answer = run_baker(X, R, S, 3)
answer['exact'] = exact_func(X)
t = ('qlin', 'error', 'exact')
for i in t:
print "%s %s" % (
i.ljust(10),
("%0.4f" % answer[i]),
)
lin_err = abs(answer['exact'] - answer['qlin'])
final_err = abs(answer['exact'] - answer['final'])
print lin_err >= final_err