52 lines
981 B
Python
Executable File
52 lines
981 B
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import sys
|
|
import cProfile
|
|
|
|
import numpy as np
|
|
|
|
import interp.bootstrap
|
|
from interp.grid.gmsh import gmsh_grid3D
|
|
from interp.tools import improved_answer, log
|
|
|
|
from interp.grid import grid
|
|
|
|
def exact(X):
|
|
x = X[0]
|
|
y = X[1]
|
|
z = X[2]
|
|
return 1+ x*x + y*y + z*z
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
if len(sys.argv) != 2:
|
|
print >> sys.stderr, "usage: %s <gmsh file>" % sys.argv[0]
|
|
sys.exit(1)
|
|
|
|
g = gmsh_grid3D(sys.argv[1])
|
|
g.q = np.array([exact(x) for x in g.verts])
|
|
|
|
X = np.array([0.2, 0.5, 0.01])
|
|
R = g.get_containing_simplex(X)
|
|
R, S = g.get_simplex_and_nearest_points(X, 10)
|
|
print R
|
|
print "r", R
|
|
print "s", S
|
|
|
|
results = {True:0, False:0}
|
|
# import pdb; pdb.set_trace()
|
|
for i in xrange(1000):
|
|
X = np.random.random((1,3))[0]
|
|
|
|
a = g.run_baker(X, order = 3, extra_points = 32)
|
|
e = exact(X)
|
|
|
|
results[improved_answer(a, e)] += 1
|
|
|
|
print results
|
|
# g.normalize_q()
|
|
# print g.toxml()
|
|
|
|
igg = grid(g.verts, g.q)
|