partially implemented using new data structure in point lookup

I spoke with Dr. Gorrell about first trying to call the nearest-neighbor routine, releasing the trapped exception where the matrix ends up being singular, and trapping it in the grid object's run_baker, where I could then call the connectivity-based lookup routine. Those are my next steps, as well as starting to think about pushing the 3D front ahead this week.
This commit is contained in:
smcquay@cfdviz2 2010-02-26 14:44:29 -07:00
parent 2792329eaa
commit a25e6d03d1
2 changed files with 32 additions and 14 deletions

View File

@ -10,19 +10,26 @@ qfile = '/tmp/grid_regular.txt'
if __name__ == '__main__': if __name__ == '__main__':
try: try:
resolution = int(sys.argv[1]) rx = int(sys.argv[1])
if resolution > 200: ry = int(sys.argv[2])
raise Exception except ValueError as e:
except: print e
resolution = 3 rx = 4
ry = 4 * rx
source_mesh = simple_rect_grid(resolution, resolution)
X = [0.4, 0.001]
(R, S) = source_mesh.get_points_conn(X)
source_mesh = simple_rect_grid(rx, ry)
print source_mesh print source_mesh
print R
print S
X = [0.1, 0.1]
(R, S) = source_mesh.get_simplex_and_nearest_points(X, extra_points=4)
print "R for nearest-neighbor:\n", R
print "S for nearest-neighbor:\n", S
print run_baker(X, R, S) print run_baker(X, R, S)
(R, S) = source_mesh.get_points_conn(X)
print "R for connectivity:\n", R
print "S for connectivity:\n", S
print run_baker(X, R, S)
open(qfile, 'w').write(source_mesh.for_qhull()) open(qfile, 'w').write(source_mesh.for_qhull())

View File

@ -111,6 +111,13 @@ class grid(object):
""" """
this returns two grid objects: R and S. this returns two grid objects: R and S.
this function differes from the get_simplex_and_nearest_points
function in that it builds up the extra points based on
connectivity information, not just nearest-neighbor.
in theory, this will work much better for situations like
points near a short edge in a boundary layer cell where the
nearest points would all be colinear
R is a grid object that is the (a) containing simplex around point X R is a grid object that is the (a) containing simplex around point X
S is a connectivity-based nearest-neighbor lookup, limited to 3 extra points S is a connectivity-based nearest-neighbor lookup, limited to 3 extra points
""" """
@ -128,7 +135,7 @@ class grid(object):
if not simplex: if not simplex:
raise AssertionError('no containing simplex found') raise AssertionError('no containing simplex found')
simplex_set = set(simplex.verts)
R = self.create_mesh(simplex.verts) R = self.create_mesh(simplex.verts)
@ -139,8 +146,12 @@ class grid(object):
return R, S return R, S
def run_baker(self, X): def run_baker(self, X, connectivity_based = False):
(R, S) = self.get_simplex_and_nearest_points(X) print >>sys.stderr, "suxor"
if connectivity_based:
(R, S) = self.get_points_conn(X)
else:
(R, S) = self.get_simplex_and_nearest_points(X)
return run_baker(X, R, S) return run_baker(X, R, S)
def construct_connectivity(self): def construct_connectivity(self):