Changeset 1079
- Timestamp:
- Mar 15, 2005, 3:09:02 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
inundation/ga/storm_surge/pyvolution/data_manager.py
r1075 r1079 1184 1184 mint = None, maxt = None, mean_stage = 0, 1185 1185 origin = None, zscale = 1, 1186 mean_bathymetry= -100): #FIXME: Bathymetry should be obtained1187 1188 1189 1190 1191 1192 1193 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 1194 1194 """Convert 'Ferret' NetCDF format for wave propagation to 1195 1195 sww format native to pyvolution. … … 1275 1275 if verbose: print 'cropping' 1276 1276 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 1279 1279 1280 1280 number_of_times = times.shape[0] … … 1286 1286 assert amplitudes.shape[2] == number_of_longitudes 1287 1287 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 1294 1313 1295 1314 #print number_of_latitudes, number_of_longitudes … … 1297 1316 number_of_volumes = (number_of_latitudes-1)*(number_of_longitudes-1)*2 1298 1317 1299 #print file_h.dimensions.keys()1300 #print file_h.variables.keys()1301 1318 1302 1319 file_h.close() … … 1366 1383 x = zeros(number_of_points, Float) #Easting 1367 1384 y = zeros(number_of_points, Float) #Northing 1368 #volumes = zeros(number_of_volumes, Int) 1369 i = 0 1385 1370 1386 1371 1387 #Check zone boundaries … … 1373 1389 1374 1390 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 1377 1394 1378 1395 vertices[l,k] = i … … 1390 1407 #Construct 2 triangles per 'rectangular' element 1391 1408 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 1394 1411 v1 = vertices[l,k+1] 1395 1412 v2 = vertices[l,k] … … 1416 1433 outfile.zone = zone 1417 1434 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 1418 1442 outfile.variables['x'][:] = x - xllcorner 1419 1443 outfile.variables['y'][:] = y - yllcorner 1420 1444 outfile.variables['z'][:] = 0.0 1421 outfile.variables['elevation'][:] = 0.0 #Grrrrrrr1422 outfile.variables['time'][:] = times 1445 outfile.variables['elevation'][:] = z #FIXME HACK 1446 outfile.variables['time'][:] = times 1423 1447 outfile.variables['volumes'][:] = volumes.astype(Int32) #On Opteron 64 1424 1448 … … 1430 1454 ymomentum = outfile.variables['ymomentum'] 1431 1455 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 1437 1457 1438 1458 for j in range(len(times)): 1439 1459 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 1442 1462 w = zscale*amplitudes[j,k,l]/100 + mean_stage 1443 1463 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 1449 1467 i += 1 1450 1468
Note: See TracChangeset
for help on using the changeset viewer.