Changeset 1396


Ignore:
Timestamp:
May 16, 2005, 11:23:35 AM (20 years ago)
Author:
duncan
Message:

load_mesh refactoring

Location:
inundation/ga/storm_surge/pyvolution
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • inundation/ga/storm_surge/pyvolution/interpolate_sww.py

    r1379 r1396  
    7272        file_name - the xya file
    7373        """
    74         self.point_coordinates = self.read_xya(file_name)
     74       
     75        from load_mesh.loadASCII import import_points_file
     76       
     77        point_dict = import_points_file(file_name)
     78        self.point_coordinates = point_dict['pointlist']
    7579        self.interp.build_interpolation_matrix_A(self.point_coordinates)
    76         self.interpolated_quantity = self.interp.interpolate(transpose(self.quantity))
     80        self.interpolated_quantity_raw = self.interp.interpolate(transpose(self.quantity))
     81        self.interpolated_quantity = {}
     82        for i,time_slice in enumerate(self.time):
     83            self.interpolated_quantity[str(time_slice)] = self.interpolated_quantity_raw[:,i]
    7784       
     85           
    7886    def read_sww(self,file_name, quantity_name):
    7987        """
     
    121129        return x, y, volumes, time, quantity
    122130
    123     def read_xya(self,point_file):
    124         """
    125         Read in an xya file.
    126 
    127         Input;
    128         point_file - the xya file
    129 
    130         Output;
    131         point_coordinates - the points (x,y) where the depth values
    132                              (w.r.t. time) are needed
    133         """
    134         from load_mesh.loadASCII import import_points_file
    135        
    136         point_dict = import_points_file(point_file)
    137         return point_dict['pointlist']
    138 
    139 
    140131    def write_depth_xya(self,point_file, delimiter = ','):
    141132        """
     
    145136        The time list is defined
    146137        """
    147         from load_mesh.loadASCII import  export_xya_file
     138        from load_mesh.loadASCII import  export_points_file
    148139
    149         #create the first line, giving the times
    150         if len(self.time) != 0:
    151             for i in range(len(self.time)):
    152                 if i == 0:
    153                     title = str(self.time[0])
    154                 else:
    155                     title = title + delimiter + str(self.time[i])
    156         else:
    157             title  = ""
    158        
    159         #print ">" +  str(self.time) + "<"
    160         #print ">" + title + "<"
    161140       
    162141        xya_dict = {}
    163142        xya_dict['pointlist'] = self.point_coordinates
    164         xya_dict['pointattributelist'] = self.interpolated_quantity
    165        
    166         export_xya_file(point_file, xya_dict, title, delimiter = delimiter)
     143        xya_dict['attributelist'] = self.interpolated_quantity
     144        export_points_file(point_file, xya_dict)
    167145       
    168146#-------------------------------------------------------------
  • inundation/ga/storm_surge/pyvolution/test_interpolate_sww.py

    r1379 r1396  
    1818class Test_Interpolate_sww(unittest.TestCase):
    1919    def setUp(self):
     20
    2021        import time
    2122        from mesh_factory import rectangular
     
    164165        assert allclose(interp.time,[0.0,2.0])
    165166
    166         #answer = [ 0.15, 0.1, 0., -0.3, -0.35, -0.4, -0.7, -0.8, -0.850]
    167         #print "answer",answer
    168         #print interp.stage[0]
    169         #stage_t = transpose(interp.stage)
    170         #assert allclose(stage_t[0], answer)
    171         #assert allclose(stage_t[1],stage_t[0])
    172 
    173167        # create an .xya file
    174168        point_file = tempfile.mktemp(".xya")
     
    179173        interp.interpolate_xya(point_file)
    180174
    181         answer = [[0.08, 0.08], [0.02, 0.02], [0.14, 0.14], [.08,.08]]
     175        answer = {}
     176        answer['0.0'] =  [ 0.08, 0.02, 0.14,0.08]
     177        answer['2.0'] =  [ 0.08, 0.02, 0.14,0.08]
     178       
    182179        #print "answer",answer
    183         assert allclose(interp.interpolated_quantity,answer)
     180        #print "interp.interpolated_quantity",interp.interpolated_quantity
     181        assert allclose(interp.interpolated_quantity['0.0'],answer['0.0'])
     182        assert allclose(interp.interpolated_quantity['2.0'],answer['2.0'])
    184183
    185184        # create an output .xya file
     
    189188        #check the output file
    190189        xya_dict = import_points_file(point_file_out)
    191         #print "xya_dict", xya_dict
    192         title_list,point_attributes = concatinate_attributelist(xya_dict['attributelist'])
    193         assert allclose(interp.point_coordinates, xya_dict['pointlist'])
    194         assert allclose(interp.interpolated_quantity,
    195                         point_attributes )
    196 
    197         # FIXME -remove
    198         #title = xya_dict['title'].split('\n')
    199         #print "title",title
    200         #string_list = title[0].split(',') # assume a title has only one line
    201         #time_list = []
     190        assert allclose(xya_dict['attributelist']['0.0'],answer['0.0'])
     191        assert allclose(xya_dict['attributelist']['2.0'],answer['2.0'])
     192        assert allclose(xya_dict['pointlist'],[[ 0.0, 0.6],[0.0, 0.9],[ 0.0,0.1],[ 0.4,1.0]])
    202193
    203194        # Try another quantity
     
    205196        interp.interpolate_xya(point_file)
    206197
    207         answer = [[0.08, 0.08], [0.02, 0.02], [0.14, 0.14], [-.32,-.32]]
     198        answer['0.0'] =  [ 0.08, 0.02, 0.14,-0.32]
     199        answer['2.0'] =  [ 0.08, 0.02, 0.14,-0.32]       
    208200        #print "answer",answer
    209         assert allclose(interp.interpolated_quantity,answer)
    210 
     201        #print "interp.interpolated_quantity",interp.interpolated_quantity
     202        assert allclose(interp.interpolated_quantity['0.0'],answer['0.0'])
     203        assert allclose(interp.interpolated_quantity['2.0'],answer['2.0'])
    211204
    212205        # look at error catching
Note: See TracChangeset for help on using the changeset viewer.