Changeset 2639
- Timestamp:
- Mar 31, 2006, 12:38:27 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
inundation/pyvolution/test_data_manager.py
r2555 r2639 2213 2213 long_name = 'LON' 2214 2214 lat_name = 'LAT' 2215 time_name = 'TIME' 2215 2216 2216 2217 nx = 3 … … 2230 2231 fid.variables[lat_name].assignValue(h2_list) 2231 2232 2232 fid.createDimension( 'TIME',2)2233 fid.createVariable( 'TIME','d',('TIME',))2234 fid.variables[ 'TIME'].point_spacing='uneven'2235 fid.variables[ 'TIME'].units='seconds'2236 fid.variables[ 'TIME'].assignValue([0.,1.])2233 fid.createDimension(time_name,2) 2234 fid.createVariable(time_name,'d',(time_name,)) 2235 fid.variables[time_name].point_spacing='uneven' 2236 fid.variables[time_name].units='seconds' 2237 fid.variables[time_name].assignValue([0.,1.]) 2237 2238 if fid == fid3: break 2238 2239 … … 2270 2271 2271 2272 for fid in [fid1,fid2,fid3]: 2272 fid.createVariable(name[fid],'d',('TIME',lat_name,long_name)) 2273 fid.createVariable(name[fid],'d',(time_name,lat_name,long_name)) 2274 fid.variables[name[fid]].point_spacing='uneven' 2275 fid.variables[name[fid]].units=units[fid] 2276 fid.variables[name[fid]].assignValue(values[fid]) 2277 fid.variables[name[fid]].missing_value = -99999999. 2278 if fid == fid3: break 2279 2280 for fid in [fid4]: 2281 fid.createVariable(name[fid],'d',(lat_name,long_name)) 2282 fid.variables[name[fid]].point_spacing='uneven' 2283 fid.variables[name[fid]].units=units[fid] 2284 fid.variables[name[fid]].assignValue(values[fid]) 2285 fid.variables[name[fid]].missing_value = -99999999. 2286 2287 2288 fid1.sync(); fid1.close() 2289 fid2.sync(); fid2.close() 2290 fid3.sync(); fid3.close() 2291 fid4.sync(); fid4.close() 2292 2293 fid1 = NetCDFFile('test_ha.nc','r') 2294 fid2 = NetCDFFile('test_e.nc','r') 2295 fid3 = NetCDFFile('test_va.nc','r') 2296 2297 2298 first_amp = fid1.variables['HA'][:][0,0,0] 2299 third_amp = fid1.variables['HA'][:][0,0,2] 2300 first_elevation = fid2.variables['ELEVATION'][0,0] 2301 third_elevation= fid2.variables['ELEVATION'][:][0,2] 2302 first_speed = fid3.variables['VA'][0,0,0] 2303 third_speed = fid3.variables['VA'][:][0,0,2] 2304 2305 fid1.close() 2306 fid2.close() 2307 fid3.close() 2308 2309 #Call conversion (with zero origin) 2310 ferret2sww('test', verbose=False, 2311 origin = (56, 0, 0)) 2312 2313 os.remove('test_va.nc') 2314 os.remove('test_ua.nc') 2315 os.remove('test_ha.nc') 2316 os.remove('test_e.nc') 2317 2318 #Read output file 'test.sww' 2319 fid = NetCDFFile('test.sww') 2320 2321 2322 #Check first value 2323 elevation = fid.variables['elevation'][:] 2324 stage = fid.variables['stage'][:] 2325 xmomentum = fid.variables['xmomentum'][:] 2326 ymomentum = fid.variables['ymomentum'][:] 2327 2328 #print ymomentum 2329 first_height = first_amp/100 - first_elevation 2330 third_height = third_amp/100 - third_elevation 2331 first_momentum=first_speed*first_height/100 2332 third_momentum=third_speed*third_height/100 2333 2334 assert allclose(ymomentum[0][0],first_momentum) #Meters 2335 assert allclose(ymomentum[0][2],third_momentum) #Meters 2336 2337 fid.close() 2338 2339 #Cleanup 2340 os.remove('test.sww') 2341 2342 2343 2344 def test_ferret2sww4(self): 2345 """Like previous but with augmented variable names as 2346 in files produced by ferret as opposed to MOST 2347 """ 2348 from Scientific.IO.NetCDF import NetCDFFile 2349 2350 #The test file has 2351 # LON = 150.66667, 150.83334, 151, 151.16667 2352 # LAT = -34.5, -34.33333, -34.16667, -34 ; 2353 # ELEVATION = [-1 -2 -3 -4 2354 # -5 -6 -7 -8 2355 # ... 2356 # ... -16] 2357 # where the top left corner is -1m, 2358 # and the ll corner is -13.0m 2359 # 2360 # First value (index=0) in small_ha.nc is 0.3400644 cm, 2361 # Fourth value (index==3) is -6.50198 cm 2362 2363 from coordinate_transforms.redfearn import redfearn 2364 import os 2365 fid1 = NetCDFFile('test_ha.nc','w') 2366 fid2 = NetCDFFile('test_ua.nc','w') 2367 fid3 = NetCDFFile('test_va.nc','w') 2368 fid4 = NetCDFFile('test_e.nc','w') 2369 2370 h1_list = [150.66667,150.83334,151.] 2371 h2_list = [-34.5,-34.33333] 2372 2373 long_name = 'LON961_1261' 2374 lat_name = 'LAT481_841' 2375 time_name = 'TIME1' 2376 2377 nx = 3 2378 ny = 2 2379 2380 for fid in [fid1,fid2,fid3]: 2381 fid.createDimension(long_name,nx) 2382 fid.createVariable(long_name,'d',(long_name,)) 2383 fid.variables[long_name].point_spacing='uneven' 2384 fid.variables[long_name].units='degrees_east' 2385 fid.variables[long_name].assignValue(h1_list) 2386 2387 fid.createDimension(lat_name,ny) 2388 fid.createVariable(lat_name,'d',(lat_name,)) 2389 fid.variables[lat_name].point_spacing='uneven' 2390 fid.variables[lat_name].units='degrees_north' 2391 fid.variables[lat_name].assignValue(h2_list) 2392 2393 fid.createDimension(time_name,2) 2394 fid.createVariable(time_name,'d',(time_name,)) 2395 fid.variables[time_name].point_spacing='uneven' 2396 fid.variables[time_name].units='seconds' 2397 fid.variables[time_name].assignValue([0.,1.]) 2398 if fid == fid3: break 2399 2400 2401 for fid in [fid4]: 2402 fid.createDimension(long_name,nx) 2403 fid.createVariable(long_name,'d',(long_name,)) 2404 fid.variables[long_name].point_spacing='uneven' 2405 fid.variables[long_name].units='degrees_east' 2406 fid.variables[long_name].assignValue(h1_list) 2407 2408 fid.createDimension(lat_name,ny) 2409 fid.createVariable(lat_name,'d',(lat_name,)) 2410 fid.variables[lat_name].point_spacing='uneven' 2411 fid.variables[lat_name].units='degrees_north' 2412 fid.variables[lat_name].assignValue(h2_list) 2413 2414 name = {} 2415 name[fid1]='HA' 2416 name[fid2]='UA' 2417 name[fid3]='VA' 2418 name[fid4]='ELEVATION' 2419 2420 units = {} 2421 units[fid1]='cm' 2422 units[fid2]='cm/s' 2423 units[fid3]='cm/s' 2424 units[fid4]='m' 2425 2426 values = {} 2427 values[fid1]=[[[5., 10.,15.], [13.,18.,23.]],[[50.,100.,150.],[130.,180.,230.]]] 2428 values[fid2]=[[[1., 2.,3.], [4.,5.,6.]],[[7.,8.,9.],[10.,11.,12.]]] 2429 values[fid3]=[[[13., 12.,11.], [10.,9.,8.]],[[7.,6.,5.],[4.,3.,2.]]] 2430 values[fid4]=[[-3000,-3100,-3200],[-4000,-5000,-6000]] 2431 2432 for fid in [fid1,fid2,fid3]: 2433 fid.createVariable(name[fid],'d',(time_name,lat_name,long_name)) 2273 2434 fid.variables[name[fid]].point_spacing='uneven' 2274 2435 fid.variables[name[fid]].units=units[fid]
Note: See TracChangeset
for help on using the changeset viewer.