Changeset 3013
- Timestamp:
- May 30, 2006, 11:27:54 AM (19 years ago)
- Location:
- inundation
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
inundation/fit_interpolate/fit.py
r3012 r3013 318 318 319 319 self._build_coefficient_matrix_B(verbose) 320 indexes = range(0,m)321 320 loners = self.mesh.get_lone_vertices() 322 #print "loners",loners 323 loners.sort() 324 loners.reverse() 325 #print "loners",loners 326 for lone_index in loners: 327 indexes.pop(lone_index) 328 #print "fit self.Atz",take(self.Atz,indexes) 321 # FIXME - finish this. 322 #if len(loners)>0: 323 # msg = 'ERROR (least_squares): Too few data points\n' 324 # msg += 'There are only %d data points and alpha == 0. ' %n 325 # msg += 'Need at least %d\n' %m 326 # msg += 'Alternatively, set smoothing parameter alpha to a small ' 327 # msg += 'positive value,\ne.g. 1.0e-3.' 328 # raise ToFewPointsError(msg) 329 329 330 330 331 return conjugate_gradient(self.B, self.Atz, self.Atz, -
inundation/pmesh/mesh.py
r2778 r3013 1308 1308 triangle attribute list: [(T1att), (T2att), ...] 1309 1309 (list of a list of strings) 1310 lone point list:[point1, ...] (list of integers) 1310 1311 """ 1311 1312 #Clear the current generated mesh values … … 1375 1376 ObjectNeighbor[2]) 1376 1377 index += 1 1377 1378 genDict['lonepointlist'].sort() 1379 genDict['lonepointlist'].reverse() 1380 for loner in genDict['lonepointlist']: 1381 # Remove the loner vertex 1382 #print "Removing the loner", loner 1383 self.meshVertices.pop(loner) 1378 1384 1379 1385 def setMesh(self, genDict): … … 1925 1931 load_mesh.loadASCII.export_mesh_file(ofile,dict) 1926 1932 1933 # FIXME(DSG-DSG):Break this into two functions. 1934 #One for the outline points. 1935 #One for the mesh points. 1936 # Note: this function is not in the gui 1927 1937 def exportPointsFile(self,ofile): 1928 1938 """ -
inundation/pmesh/test_mesh.py
r3003 r3013 231 231 232 232 233 def testisUserSegmentNew (self):233 def testisUserSegmentNewII (self): 234 234 mesh = Mesh() 235 235 a = mesh.addUserVertex(0.0, 0.0) … … 943 943 d = Vertex (1,2) 944 944 e = Vertex (3,1) 945 f = Vertex (3,1)945 #f = Vertex (3,1) 946 946 947 947 s1 = Segment(a,b, tag = 50) … … 991 991 lFile[2] == "0.0,3.0" and 992 992 lFile[3] == "3.0,3.0" and 993 lFile[4] == "1.0,2.0" and 994 lFile[5] == "3.0,1.0" 993 lFile[4] == "1.0,2.0" 995 994 , 996 995 'exported Ascii xya file is wrong') … … 1906 1905 1907 1906 1908 def not_ready_test_duplicat_verts_do_what(self):1907 def test_duplicat_verts_are_removed(self): 1909 1908 1910 1909 … … 1913 1912 c = Vertex (4.0,4.0) 1914 1913 d = Vertex (4.0,0.0) 1914 e = Vertex (4.0,0.0) # duplicate point 1915 1915 1916 1916 s1 = Segment(a,b, tag = "50") 1917 1917 s2 = Segment(b,c, tag = "40") 1918 1918 s3 = Segment(c,d, tag = "30") 1919 s4 = Segment(d, a, tag = "20")1920 1921 e = Vertex (4.0,0.0) # duplicate point 1919 s4 = Segment(d,e, tag = "no where seg") 1920 s5 = Segment(e,a, tag = "20") 1921 1922 1922 1923 1923 m = Mesh(userVertices=[a,b,c,d,e], 1924 userSegments=[s1,s2,s3,s4 ])1924 userSegments=[s1,s2,s3,s4,s5]) 1925 1925 1926 1926 seg = m.getUserSegments() … … 1928 1928 holes = m.getHoles() 1929 1929 regions = m.getRegions() 1930 fileName = tempfile.mktemp(".tsh")1930 #fileName = tempfile.mktemp(".tsh") 1931 1931 #fileName = "badmesh.tsh" 1932 m.export_mesh_file(fileName)1932 #m.export_mesh_file(fileName) 1933 1933 #print "***************************fileName", fileName 1934 1934 #new_m = importMeshFromFile(fileName) 1935 os.remove(fileName)1936 1937 m.generateMesh("Q", maxArea = 2 .1 )1938 1939 m.export_mesh_file("from_test_mesh.tsh")1935 #os.remove(fileName) 1936 1937 m.generateMesh("Q", maxArea = 2000.1 ) 1938 1939 #m.export_mesh_file("from_test_mesh.tsh") 1940 1940 seg = m.getMeshSegments() 1941 #print "seg",seg 1942 #print "seg[0].tag" 1943 #print seg[0].tag 1944 #print "seg[0].tag" 1945 1946 self.failUnless(seg[0].tag == 5 and 1947 seg[1].tag == 7 and 1948 seg[2].tag == 9 and 1949 seg[3].tag == 7 and 1950 seg[4].tag == 9, 1951 'seg tags are wrong') 1952 1953 1954 #print '**@@@@@******' 1955 #print "new_m",new_m 1956 #print '**@@@@@******' 1957 #print "m",m 1958 #print '**@@@@@******' 1959 1960 1961 #self.failUnless( new_m == m, 1962 # 'loadASCIITestCase failed. test new 1') 1941 self.failUnless(4==len(seg), 1942 'FAILED!') 1943 1944 vert = m.getMeshVertices() 1945 self.failUnless(4==len(vert), 1946 'FAILED!') 1947 1948 def test_duplicat_verts_are_removedII(self): 1949 1950 1951 a = Vertex ( 0.0 ,0.0) 1952 b = Vertex (0.0, 4.0) 1953 c = Vertex (4.0,4.0) 1954 d = Vertex (4.0,0.0) 1955 e = Vertex (4.0,0.0) # duplicate point 1956 f = Vertex (49.0,0.0) # unused point 1957 1958 s1 = Segment(a,b, tag = "50") 1959 s2 = Segment(b,c, tag = "40") 1960 s3 = Segment(c,d, tag = "30") 1961 s4 = Segment(d,e, tag = "no where seg") 1962 s5 = Segment(e,a, tag = "20") 1963 1964 1965 m = Mesh(userVertices=[a,b,c,d,e,f], 1966 userSegments=[s1,s2,s3,s4,s5]) 1967 1968 seg = m.getUserSegments() 1969 points = m.getUserVertices() 1970 holes = m.getHoles() 1971 regions = m.getRegions() 1972 #fileName = tempfile.mktemp(".tsh") 1973 #fileName = "badmesh.tsh" 1974 #m.export_mesh_file(fileName) 1975 #print "***************************fileName", fileName 1976 #new_m = importMeshFromFile(fileName) 1977 #os.remove(fileName) 1978 1979 m.generateMesh("Q", maxArea = 2000.1 ) 1980 1981 #m.export_mesh_file("from_test_mesh.tsh") 1982 seg = m.getMeshSegments() 1983 self.failUnless(4==len(seg), 1984 'FAILED!') 1985 1986 vert = m.getMeshVertices() 1987 self.failUnless(4==len(vert), 1988 'FAILED!') 1989 1963 1990 def list_comp(A,B): 1964 1991 yes = len(A)==len(B) … … 1973 2000 if __name__ == "__main__": 1974 2001 suite = unittest.makeSuite(meshTestCase,'test') 1975 #suite = unittest.makeSuite(meshTestCase,' not_ready_test_duplicat_verts_do_what')2002 #suite = unittest.makeSuite(meshTestCase,'test_duplicat_verts_do_what') 1976 2003 runner = unittest.TextTestRunner() #verbosity=2) 1977 2004 runner.run(suite) -
inundation/pmesh/test_mesh_interface.py
r2402 r3013 221 221 'FAILED!') 222 222 223 224 def test_create_mesh_from_regions_with_duplicate_verts(self): 225 226 # These are the absolute values 227 228 polygon_absolute = [[0.0,0.0], 229 [0,4.0], 230 [4.0,4.0], 231 [4.0,0.0], 232 [4.0,0.0]] 233 234 x_p = -10 235 y_p = -40 236 zone = 808 237 geo_ref_poly = Geo_reference(zone, x_p, y_p) 238 polygon = geo_ref_poly.change_points_geo_ref(polygon_absolute) 239 240 boundary_tags = {'50':[0], 241 '40':[1], 242 '30':[2], 243 'no where seg':[3], 244 '20':[4] 245 } 246 247 m = create_mesh_from_regions(polygon, 248 boundary_tags, 249 10000000, 250 poly_geo_reference=geo_ref_poly) 251 252 253 fileName = "badmesh.tsh" 254 #m.export_mesh_file(fileName) 255 223 256 #------------------------------------------------------------- 224 257 if __name__ == "__main__": -
inundation/triangle/test_triangmodule.py
r2141 r3013 298 298 'triangleattributelist is wrong!') 299 299 300 300 301 def test_lone_verts(self): 302 303 points = [] 304 seglist = [] 305 holelist = [] 306 regionlist = [] 307 308 points = [(0.0,0.0),(0.0,10.0),(3.0,0.0),(3.0,10.0),(0.0,10.0)] 309 pointattlist = [[],[],[],[],[]] 310 regionlist.append( (1.2,1.2,5.0) ) 311 seglist = [(0,4),(4,1),(1,3),(3,2),(2,0)] 312 segattlist = [0,0,0,0,0] 313 trilist = [] 314 mode = "Qzp" 315 data = triang.genMesh(points,seglist,holelist,regionlist, 316 pointattlist,segattlist,trilist, mode) 317 #print "data['generatedtrianglelist']", data['generatedtrianglelist'] 318 self.failUnless(data['generatedtrianglelist'] ==[(4, 0, 2), (2, 3, 4)], 319 'trianglelist is wrong!') 320 self.failUnless(data['generatedsegmentlist'] ==[(0, 4), (4, 3), 321 (3, 2), (2, 0)], 322 'segmentlist is wrong!') 323 self.failUnless(data['generatedpointlist'] ==[(0.0, 0.0), (0.0, 10.0), 324 (3.0, 0.0), (3.0, 10.0), 325 (0.0,10.0)], 326 ' is wrong!') 327 self.failUnless(data['lonepointlist'] ==[1], 328 'lonepointlist is wrong!') 329 #print "", data['lonepointlist'] 330 331 def test_lone_vertsII(self): 332 333 points = [] 334 seglist = [] 335 holelist = [] 336 regionlist = [] 337 338 points = [(0.0,0.0),(0.0,0.0),(0.0,10.0),(0.0,10.0),(10.0,10.0), 339 (10.0,10.0),(0.0,10.0),(10.0,0.0)] 340 341 pointattlist = [] 342 for point in points: 343 pointattlist.append([]) 344 seglist = [(0,1),(1,2),(2,3),(3,4),(4,5),(5,7),(7,0)] 345 segattlist = [] 346 for seg in seglist: 347 segattlist.append(0) 348 trilist = [] 349 mode = "Qzp" 350 data = triang.genMesh(points,seglist,holelist,regionlist, 351 pointattlist,segattlist,trilist, mode) 352 #print "data['generatedtrianglelist']", data['generatedtrianglelist'] 353 self.failUnless(data['generatedtrianglelist'] ==[(6, 1, 7), (7, 5, 6)], 354 'trianglelist is wrong!') 355 self.failUnless(data['generatedsegmentlist'] ==[(1, 6), (6, 5), 356 (5, 7), (7, 1)], 357 'segmentlist is wrong!') 358 self.failUnless(data['generatedpointlist'] ==[(0.0,0.0),(0.0,0.0), 359 (0.0,10.0),(0.0,10.0), 360 (10.0,10.0), 361 (10.0,10.0),(0.0,10.0), 362 (10.0,0.0)], 363 ' is wrong!') 364 self.failUnless(data['lonepointlist'] ==[0,2,3,4], 365 'lonepointlist is wrong!') 366 301 367 if __name__ == "__main__": 302 368 -
inundation/triangle/triang.c
r2526 r3013 76 76 PyObject *Attrlist; 77 77 REAL Attr; 78 int i, j, iatt, n ;78 int i, j, iatt, n, write_here; 79 79 int a,b,c; 80 80 int marker; … … 90 90 int listsize,attsize ; 91 91 PyObject *ii; 92 92 93 int *points_connected; 94 93 95 if(!PyArg_ParseTuple(args,(char *)"OOOOOOOO",&hull,&seglist,&holelist,®ionlist,&pointattributelist,&segmarkerlist,&trianglelist,&mode)){ 94 96 return NULL; … … 369 371 out.regionlist = (REAL *)NULL; 370 372 373 371 374 /*printf("\n\nTriangulate input args: %s \n\n", mod); */ 372 375 triangulate(mod, &in, &out, (struct triangulateio *)NULL ); … … 379 382 holder = PyDict_New(); 380 383 384 /* list of int's, used to keep track of which verts are connected to 385 triangles. */ 386 points_connected = (int *)malloc(out.numberofpoints*sizeof(int)); 387 381 388 /* Add pointlist */ 382 389 listsize = out.numberofpoints; … … 387 394 out.pointlist[i*2 ], out.pointlist[i*2+1]); 388 395 PyList_SetItem(holderlist,i, mlist); 396 points_connected[i] = 0; 389 397 } 390 398 ii=PyString_FromString("generatedpointlist"); … … 419 427 ii=PyString_FromString("generatedpointattributelist"); 420 428 PyDict_SetItem(holder, ii, holderlist); Py_DECREF(ii); Py_DECREF(holderlist); 429 421 430 422 431 /* Add triangle list */ … … 427 436 out.trianglelist[i*3 ], out.trianglelist [i*3+1], out.trianglelist [i*3+2]); 428 437 PyList_SetItem(holderlist,i, mlist); 438 /* printf(" A vert index %i\n",out.trianglelist[i*3] ); 439 printf(" A vert index %i\n",out.trianglelist[i*3+1] ); 440 printf(" A vert index %i\n",out.trianglelist[i*3+2] ); */ 441 points_connected[out.trianglelist[i*3]] = 1; 442 points_connected[out.trianglelist[i*3+1]] = 1; 443 points_connected[out.trianglelist[i*3+2]] = 1; 429 444 } 430 445 ii=PyString_FromString("generatedtrianglelist"); 431 446 PyDict_SetItem(holder, ii, holderlist); Py_DECREF(ii); Py_DECREF(holderlist); 432 447 448 /* convert the points_connected vector from a true(1) false(0) vector, where 449 index is the vert, to a vector of the lone verts, at the beggining 450 of the vector. */ 451 write_here = 0; 452 for(i=0; i<out.numberofpoints;i++){ 453 if (0 == points_connected[i]) { 454 points_connected[write_here] = i; 455 write_here ++; 456 } 457 } 458 /* printf(" ******************** \n" ); 459 for(i=0; i<write_here;i++){ 460 printf(" A vert index %i\n",points_connected[i] ); 461 } */ 462 463 listsize = write_here; 464 holderlist = PyList_New(listsize); 465 for(i=0; i<listsize;i++){ 466 PyObject *mlist = Py_BuildValue((char *)"i", points_connected[i]); 467 PyList_SetItem(holderlist,i, mlist); 468 } 469 ii=PyString_FromString("lonepointlist"); 470 PyDict_SetItem(holder, ii, holderlist); Py_DECREF(ii); Py_DECREF(holderlist); 433 471 434 472 /* Add triangle attribute list */ … … 531 569 free(out.regionlist); out.regionlist=NULL; 532 570 } 533 571 if(!points_connected ){ 572 free(points_connected ); points_connected =NULL; 573 } 574 575 576 534 577 /* IN */ 535 578
Note: See TracChangeset
for help on using the changeset viewer.