Changeset 8757


Ignore:
Timestamp:
Mar 13, 2013, 5:19:52 PM (11 years ago)
Author:
steve
Message:

Speed up the check_integrity procedure of neighbour_mesh

Location:
trunk/anuga_core/source
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/anuga_core/source/anuga/__init__.py

    r8699 r8757  
    2727# Make selected classes available directly
    2828#-----------------------------------------------------
     29
     30
    2931from anuga.__metadata__ import __version__, __date__, __author__
    3032
  • trunk/anuga_core/source/anuga/abstract_2d_finite_volumes/neighbour_mesh.py

    r8713 r8757  
    858858
    859859
    860         #print 'check neighbours'
     860        # check that neighbour of neighbour is self
    861861
    862862        # 0 neighbours
    863863        neighs = self.neighbours
    864         nids = neighs[:,0]
    865         eids = self.neighbour_edges[:,0]
    866 
    867         ids = num.arange(len(nids))
    868         nnid = num.where(nids>-1, 3*nids+eids, 0)
    869        
    870         #assert num.all(num.where(nids>-1, neighs[nnid]-ids, 0)==0)
    871 
    872 
    873 
    874 
    875 
    876 
    877 
    878         # Check neighbour structure
    879         for i in xrange(N):
    880             # For each triangle
    881 
    882             for k, neighbour_id in enumerate(self.neighbours[i,:]):
    883 
    884                 #Assert that my neighbour's neighbour is me
    885                 #Boundaries need not fulfill this
    886                 if neighbour_id >= 0:
    887                     edge = self.neighbour_edges[i, k]
    888                     msg = 'Triangle %d has neighbour %d but it does not point back. \n' %(i,neighbour_id)
    889                     msg += 'Only points to (%s)' %(self.neighbours[neighbour_id,:])
    890                     assert self.neighbours[neighbour_id, edge] == i ,msg
     864        ids = num.arange(len(neighs))
     865
     866        # 0 neighbours
     867        nid = neighs[:,0]
     868        eid = self.neighbour_edges[:,0]
     869        nnid = num.argwhere(nid>-1).reshape(-1,)
     870        nid = nid[nnid]
     871        eid = eid[nnid]
     872        id  = ids[nnid]
     873
     874        assert num.all(neighs[nid,eid] == id)
     875
     876        # 1 neighbours
     877        nid = neighs[:,1]
     878        eid = self.neighbour_edges[:,1]
     879        nnid = num.argwhere(nid>-1).reshape(-1,)
     880        nid = nid[nnid]
     881        eid = eid[nnid]
     882        id  = ids[nnid]
     883
     884        assert num.all(neighs[nid,eid] == id)
     885
     886        # 2 neighbours
     887        nid = neighs[:,2]
     888        eid = self.neighbour_edges[:,2]
     889        nnid = num.argwhere(nid>-1).reshape(-1,)
     890        nid = nid[nnid]
     891        eid = eid[nnid]
     892        id  = ids[nnid]
     893
     894        assert num.all(neighs[nid,eid] == id)
     895
     896
     897
     898
     899#        # Check neighbour structure
     900#        for i in xrange(N):
     901#            # For each triangle
     902#
     903#            for k, neighbour_id in enumerate(self.neighbours[i,:]):
     904#
     905#                #Assert that my neighbour's neighbour is me
     906#                #Boundaries need not fulfill this
     907#                if neighbour_id >= 0:
     908#                    edge = self.neighbour_edges[i, k]
     909#                    msg = 'Triangle %d has neighbour %d but it does not point back. \n' %(i,neighbour_id)
     910#                    msg += 'Only points to (%s)' %(self.neighbours[neighbour_id,:])
     911#                    assert self.neighbours[neighbour_id, edge] == i ,msg
    891912
    892913
  • trunk/anuga_core/source/anuga/abstract_2d_finite_volumes/test_neighbour_mesh.py

    r8708 r8757  
    18491849
    18501850if __name__ == "__main__":
    1851     suite = unittest.makeSuite(Test_Mesh, 'test_')
     1851    suite = unittest.makeSuite(Test_Mesh, 'test_mesh_and_neighbours')
    18521852    runner = unittest.TextTestRunner()#verbosity=2)
    18531853    runner.run(suite)
  • trunk/anuga_core/source/anuga/file/sww.py

    r8726 r8757  
    722722        outfile.variables['tri_l2g'][:] = tri_l2g.astype(num.int32)
    723723
    724         print node_l2g.shape
     724        #print node_l2g.shape
    725725        #print node_l2g
    726         print outfile.variables['node_l2g'].shape
     726        #print outfile.variables['node_l2g'].shape
    727727
    728728        outfile.variables['node_l2g'][:] = node_l2g.astype(num.int32)
  • trunk/anuga_core/source/anuga/file_conversion/file_conversion.py

    r8150 r8757  
    2222                            netcdf_float
    2323
     24from anuga.anuga_exceptions import *
     25
    2426
    2527#shallow water imports
  • trunk/anuga_core/source/anuga/file_conversion/test_file_conversion.py

    r8124 r8757  
    1212from anuga.config import netcdf_float, epsilon, g
    1313from Scientific.IO.NetCDF import NetCDFFile
    14 from anuga.file_conversion.file_conversion import tsh2sww, \
    15                         pmesh_to_domain_instance
     14
     15from anuga.file_conversion.file_conversion import tsh2sww
     16from anuga.file_conversion.file_conversion import timefile2netcdf
    1617
    1718
     
    888889        os.remove(sww.filename)
    889890
    890 
     891    def test_timefile2netcdf_seconds(self):
     892
     893        pass
     894        #Write txt time file
     895        root = 'timefile2netcdf_seconds'
     896
     897        file_text = root+'.txt'
     898        fid = open(file_text, 'w')
     899        fid.write(
     900"""0.0, 1.328223 0 0
     9010.1, 1.292912 0
     9020.2, 1.292912 0 0
     903""")
     904        fid.flush()
     905        fid.close()
     906
     907        # Expecting error to be raised
     908        try:
     909            timefile2netcdf(file_text)
     910        except:
     911            pass
     912
     913        # Should pass
     914        timefile2netcdf(file_text, time_as_seconds=True)
     915       
     916        #os.remove(root+'.tms')
     917        os.remove(root+'.txt')
     918       
     919
     920    def test_timefile2netcdf(self):
     921
     922        #Write txt time file
     923        root = 'timefile2netcdf'
     924
     925        file_text = root+'.txt'
     926        fid = open(file_text, 'w')
     927        fid.write(
     928"""31/08/04 00:00:00, 1.328223 0 0
     92931/08/04 00:15:00, 1.292912 0 0
     93031/08/04 00:30:00, 1.292912 0 0
     931""")
     932        fid.flush()
     933        fid.close()
     934
     935        # Expecting error to be raised
     936        try:
     937            timefile2netcdf(file_text,time_as_seconds=True)
     938        except:
     939            pass
     940
     941        # Should pass
     942        timefile2netcdf(file_text)
     943
     944        #os.remove(root+'.tms')
     945        os.remove(root+'.txt')
    891946
    892947#-------------------------------------------------------------
  • trunk/anuga_core/source/anuga/fit_interpolate/fit.py

    r8699 r8757  
    576576
    577577        if verbose:
    578             log.critical('FitInterpolate: Building mesh')
     578            log.critical('_fit_to_mesh: Building mesh')
    579579        mesh = Mesh(vertex_coordinates, triangles)
    580580
    581         # This is very slow!
    582         mesh.check_integrity()
     581        # Don't need this as we have just created the mesh
     582        #mesh.check_integrity()
    583583
    584584    interp = Fit(mesh=mesh,
  • trunk/anuga_core/source/anuga/fit_interpolate/general_fit_interpolate.py

    r8709 r8757  
    100100                if verbose:
    101101                    log.critical('FitInterpolate: Building mesh')
     102                                       
     103
    102104                self.mesh = Mesh(vertex_coordinates, triangles)
     105
    103106                #self.mesh.check_integrity() # Time consuming
    104107            else:
  • trunk/anuga_core/source/anuga_parallel/test_parallel_file_boundary.py

    r8115 r8757  
    421421        Br = Reflective_boundary(domain_drchlt)
    422422        #Bd = Dirichlet_boundary([2.0+tide,220+10*tide,-220-10*tide])
    423         Bd = Time_boundary(domain=domain_drchlt, f=lambda t: [2.0+t/finaltime+tide,220.+10.*tide+10.*t/finaltime,-220.-10.*tide-10.*t/finaltime])
    424         #Bd = Time_boundary(domain=domain_drchlt,f=lambda t: [2.0+num.sin(t)+tide,10.*(2+20.+num.sin(t)+tide),-10.*(2+20.+num.sin(t)+tide)])
     423        Bd = Time_boundary(domain=domain_drchlt, function=lambda t: [2.0+t/finaltime+tide,220.+10.*tide+10.*t/finaltime,-220.-10.*tide-10.*t/finaltime])
     424        #Bd = Time_boundary(domain=domain_drchlt,function=lambda t: [2.0+num.sin(t)+tide,10.*(2+20.+num.sin(t)+tide),-10.*(2+20.+num.sin(t)+tide)])
    425425        domain_drchlt.set_boundary({'ocean': Bd,'otherocean': Br})
    426426       
Note: See TracChangeset for help on using the changeset viewer.