Changeset 1079


Ignore:
Timestamp:
Mar 15, 2005, 3:09:02 PM (20 years ago)
Author:
ole
Message:

Merged and resolved two version of ferret2sww

File:
1 edited

Legend:

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

    r1075 r1079  
    11841184               mint = None, maxt = None, mean_stage = 0,
    11851185               origin = None, zscale = 1,
    1186                mean_bathymetry = -100): #FIXME: Bathymetry should be obtained
    1187                                         #from MOST somehow.
    1188                                         #Alternatively from elsewhere
    1189                                         #or, as a last resort,
    1190                                         #specified here.
    1191                                         #The value of -100 will work
    1192                                         #for the Wollongong tsunami
    1193                                         #scenario but is very hacky
     1186               elevation = -100): #FIXME: Bathymetry should be obtained
     1187                                  #from MOST somehow.
     1188                                  #Alternatively from elsewhere
     1189                                  #or, as a last resort,
     1190                                  #specified here.
     1191                                  #The value of -100 will work
     1192                                  #for the Wollongong tsunami
     1193                                  #scenario but is very hacky
    11941194    """Convert 'Ferret' NetCDF format for wave propagation to
    11951195    sww format native to pyvolution.
     
    12751275    if verbose: print 'cropping'
    12761276    amplitudes = file_h.variables['HA'][jmin:jmax, kmin:kmax, lmin:lmax]
    1277     xspeed = file_u.variables['UA'][jmin:jmax, kmin:kmax, lmin:lmax]
    1278     yspeed = file_v.variables['VA'][jmin:jmax, kmin:kmax, lmin:lmax]   
     1277    uspeed = file_u.variables['UA'][jmin:jmax, kmin:kmax, lmin:lmax] #Lon
     1278    vspeed = file_v.variables['VA'][jmin:jmax, kmin:kmax, lmin:lmax] #Lat
    12791279
    12801280    number_of_times = times.shape[0]
     
    12861286    assert amplitudes.shape[2] == number_of_longitudes         
    12871287
    1288     #print times
    1289     #print latitudes
    1290     #print longitudes
    1291 
    1292     #print 'MIN', min(min(min(amplitudes)))
    1293     #print 'MAX', max(max(max(amplitudes)))   
     1288    if verbose:
     1289        print '------------------------------------------------'
     1290        print 'Statistics:'
     1291        print '  Extent (lat/lon):'
     1292        print '    lat in [%f, %f], len(lat) == %d'\
     1293              %(min(latitudes.flat), max(latitudes.flat),
     1294                len(latitudes.flat))
     1295        print '    lon in [%f, %f], len(lon) == %d'\
     1296              %(min(longitudes.flat), max(longitudes.flat),
     1297                len(longitudes.flat))
     1298        print '    t in [%f, %f], len(t) == %d'\
     1299              %(min(times.flat), max(times.flat), len(times.flat))
     1300       
     1301        q = amplitudes.flat       
     1302        name = 'Amplitudes (ha) [cm]'
     1303        print '  %s in [%f, %f]' %(name, min(q), max(q))
     1304       
     1305        q = uspeed.flat
     1306        name = 'Speeds (ua) [cm/s]'       
     1307        print '  %s in [%f, %f]' %(name, min(q), max(q))
     1308       
     1309        q = vspeed.flat
     1310        name = 'Speeds (va) [cm/s]'               
     1311        print '  %s in [%f, %f]' %(name, min(q), max(q))               
     1312
    12941313
    12951314    #print number_of_latitudes, number_of_longitudes
     
    12971316    number_of_volumes = (number_of_latitudes-1)*(number_of_longitudes-1)*2
    12981317   
    1299     #print file_h.dimensions.keys()
    1300     #print file_h.variables.keys()   
    13011318
    13021319    file_h.close()
     
    13661383    x = zeros(number_of_points, Float)  #Easting
    13671384    y = zeros(number_of_points, Float)  #Northing
    1368     #volumes = zeros(number_of_volumes, Int)
    1369     i = 0
     1385
    13701386
    13711387    #Check zone boundaries
     
    13731389
    13741390    vertices = {}
    1375     for k, lat in enumerate(latitudes):   
    1376         for l, lon in enumerate(longitudes):   
     1391    i = 0   
     1392    for k, lat in enumerate(latitudes):       #Y direction
     1393        for l, lon in enumerate(longitudes):  #X direction
    13771394
    13781395            vertices[l,k] = i
     
    13901407    #Construct 2 triangles per 'rectangular' element
    13911408    volumes = []
    1392     for l in range(number_of_longitudes-1):
    1393         for k in range(number_of_latitudes-1):
     1409    for l in range(number_of_longitudes-1):    #X direction
     1410        for k in range(number_of_latitudes-1): #Y direction
    13941411            v1 = vertices[l,k+1]
    13951412            v2 = vertices[l,k]           
     
    14161433    outfile.zone = zone
    14171434
     1435
     1436    if elevation is not None:
     1437        z = elevation
     1438    else:
     1439        pass
     1440        #FIXME: z should be obtained from MOST and passed in here
     1441       
    14181442    outfile.variables['x'][:] = x - xllcorner
    14191443    outfile.variables['y'][:] = y - yllcorner
    14201444    outfile.variables['z'][:] = 0.0
    1421     outfile.variables['elevation'][:] = 0.0 #Grrrrrrr
    1422     outfile.variables['time'][:] = times       
     1445    outfile.variables['elevation'][:] = z  #FIXME HACK
     1446    outfile.variables['time'][:] = times
    14231447    outfile.variables['volumes'][:] = volumes.astype(Int32) #On Opteron 64
    14241448   
     
    14301454    ymomentum = outfile.variables['ymomentum']       
    14311455
    1432     if mean_bathymetry is not None:
    1433         z = mean_bathymetry
    1434     else:
    1435         pass
    1436         #FIXME: z should be obtained from MOST and passed in here       
     1456
    14371457   
    14381458    for j in range(len(times)):
    14391459        i = 0
    1440         for k in range(number_of_latitudes):
    1441             for l in range(number_of_longitudes):                    
     1460        for k in range(number_of_latitudes):      #Y direction
     1461            for l in range(number_of_longitudes): #X direction
    14421462                w = zscale*amplitudes[j,k,l]/100 + mean_stage
    14431463                stage[j,i] = w
    1444 
    1445                 h = w-z 
    1446    
    1447                 xmomentum[j,i] = xspeed[j,k,l]/100*h
    1448                 ymomentum[j,i] = yspeed[j,k,l]/100*h               
     1464                h = w - z
     1465                xmomentum[j,i] = uspeed[j,k,l]/100*h
     1466                ymomentum[j,i] = vspeed[j,k,l]/100*h
    14491467                i += 1
    14501468       
Note: See TracChangeset for help on using the changeset viewer.