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:
+1002
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+3
-3
@@ -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
|
||||
|
||||
Executable
+42
@@ -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
|
||||
Executable
+36
@@ -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
|
||||
Executable
+49
@@ -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
|
||||
Reference in New Issue
Block a user