Changeset 4480
- Timestamp:
- May 23, 2007, 5:07:40 PM (18 years ago)
- Location:
- anuga_core/source/anuga
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
anuga_core/source/anuga/abstract_2d_finite_volumes/test_util.py
r4473 r4480 1324 1324 1325 1325 1326 def test_remove_lone_verts_d(self): 1327 verts = [[0,0],[1,0],[0,1]] 1328 tris = [[0,1,2]] 1329 new_verts, new_tris = remove_lone_verts(verts, tris) 1330 assert new_verts == verts 1331 assert new_tris == tris 1326 1332 1327 1333 1334 def test_remove_lone_verts_e(self): 1335 verts = [[0,0],[1,0],[0,1],[99,99]] 1336 tris = [[0,1,2]] 1337 new_verts, new_tris = remove_lone_verts(verts, tris) 1338 assert new_verts == verts[0:3] 1339 assert new_tris == tris 1340 1341 def test_remove_lone_verts_a(self): 1342 verts = [[99,99],[0,0],[1,0],[99,99],[0,1],[99,99]] 1343 tris = [[1,2,4]] 1344 new_verts, new_tris = remove_lone_verts(verts, tris) 1345 #print "new_verts", new_verts 1346 assert new_verts == [[0,0],[1,0],[0,1]] 1347 assert new_tris == [[0,1,2]] 1348 1349 def test_remove_lone_verts_c(self): 1350 verts = [[0,0],[1,0],[99,99],[0,1]] 1351 tris = [[0,1,3]] 1352 new_verts, new_tris = remove_lone_verts(verts, tris) 1353 #print "new_verts", new_verts 1354 assert new_verts == [[0,0],[1,0],[0,1]] 1355 assert new_tris == [[0,1,2]] 1356 1357 def test_remove_lone_verts_b(self): 1358 verts = [[0,0],[1,0],[0,1],[99,99],[99,99],[99,99]] 1359 tris = [[0,1,2]] 1360 new_verts, new_tris = remove_lone_verts(verts, tris) 1361 assert new_verts == verts[0:3] 1362 assert new_tris == tris 1363 1364 1365 def test_remove_lone_verts_e(self): 1366 verts = [[0,0],[1,0],[0,1],[99,99]] 1367 tris = [[0,1,2]] 1368 new_verts, new_tris = remove_lone_verts(verts, tris) 1369 assert new_verts == verts[0:3] 1370 assert new_tris == tris 1328 1371 1329 1372 #------------------------------------------------------------- 1330 1373 if __name__ == "__main__": 1331 1374 suite = unittest.makeSuite(Test_Util,'test') 1332 #suite = unittest.makeSuite(Test_Util,'test_ get_revision_number')1375 #suite = unittest.makeSuite(Test_Util,'test_remove_lone_verts') 1333 1376 runner = unittest.TextTestRunner() 1334 1377 runner.run(suite) -
anuga_core/source/anuga/abstract_2d_finite_volumes/util.py
r4473 r4480 14 14 from shutil import copy 15 15 16 from anuga.utilities.numerical_tools import ensure_numeric 17 from Numeric import arange, choose 18 16 19 from anuga.geospatial_data.geospatial_data import ensure_absolute 17 20 … … 1567 1570 raise msg 1568 1571 1569 1570 1571 1572 1573 1574 1575 1576 1577 1572 1573 def remove_lone_verts(verts, triangles): 1574 verts = ensure_numeric(verts) 1575 triangles = ensure_numeric(triangles) 1576 N = len(verts) 1577 # initialise the array to easily find the index of the first loner 1578 loners=arange(2*N, N, -1) # if N=3 [6,5,4] 1579 1580 for i,t in enumerate(triangles): 1581 for vert in t: 1582 loners[vert]= vert # all non-loners will have loners[i]=i 1583 #print loners 1584 1585 lone_start = 2*N - max(loners) # The index of the first loner 1586 1587 if lone_start-1 == N: 1588 # no loners 1589 pass 1590 elif min(loners[lone_start:N]) > N: 1591 # All the loners are at the end of the vert array 1592 verts = verts[0:lone_start] 1593 else: 1594 # change the loners list so it can be used to modify triangle 1595 # Remove the loners from verts 1596 # Could've used X=compress(less(loners,N),loners) 1597 # verts=take(verts,X) to Remove the loners from verts 1598 # but I think it would use more memory 1599 new_i = 0 1600 for i in range(lone_start, N): 1601 if loners[i] >= N: 1602 # Loner! 1603 pass 1604 else: 1605 loners[i] = new_i 1606 verts[new_i] = verts[i] 1607 new_i += 1 1608 verts = verts[0:new_i] 1609 1610 # Modify the triangles 1611 #print "loners", loners 1612 #print "triangles before", triangles 1613 triangles = choose(triangles,loners) 1614 #print "triangles after", triangles 1615 return verts, triangles 1616 -
anuga_core/source/anuga/shallow_water/data_manager.py
r4463 r4480 85 85 from anuga.abstract_2d_finite_volumes.pmesh2domain import \ 86 86 pmesh_to_domain_instance 87 from anuga.abstract_2d_finite_volumes.util import get_revision_number 87 from anuga.abstract_2d_finite_volumes.util import get_revision_number, \ 88 remove_lone_verts 88 89 89 90 # formula mappings … … 1930 1931 from anuga.fit_interpolate.interpolate import Interpolate 1931 1932 1933 # Remove loners from vertex_points, volumes here 1934 vertex_points, volumes = remove_lone_verts(vertex_points, volumes) 1935 1932 1936 interp = Interpolate(vertex_points, volumes, verbose = verbose) 1933 1937
Note: See TracChangeset
for help on using the changeset viewer.