Changeset 7562 for anuga_core/source/anuga/shallow_water/data_manager.py
- Timestamp:
- Nov 19, 2009, 5:23:52 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
anuga_core/source/anuga/shallow_water/data_manager.py
r7520 r7562 644 644 fid.close() 645 645 646 647 ## 648 # @brief Class to open an sww file so that domain can be populated with quantity values 649 class Read_sww: 650 651 def __init__(self, source): 652 """The source parameter is assumed to be a NetCDF sww file. 653 """ 654 655 self.source = source 656 657 self.frame_number = 0 658 659 fin = NetCDFFile(self.source, 'r') 660 661 self.time = num.array(fin.variables['time'], num.float) 662 self.last_frame_number = self.time.shape[0] - 1 663 664 self.frames = num.arange(self.last_frame_number+1) 665 666 fin.close() 667 668 self.read_mesh() 669 670 self.quantities = {} 671 672 self.read_quantities() 673 674 675 def read_mesh(self): 676 fin = NetCDFFile(self.source, 'r') 677 678 self.vertices = num.array(fin.variables['volumes'], num.int) 679 680 self.x = x = num.array(fin.variables['x'], num.float) 681 self.y = y = num.array(fin.variables['y'], num.float) 682 683 assert len(self.x) == len(self.y) 684 685 self.xmin = num.min(x) 686 self.xmax = num.max(x) 687 self.ymin = num.min(y) 688 self.ymax = num.max(y) 689 690 691 692 fin.close() 693 694 def read_quantities(self, frame_number=0): 695 696 assert frame_number >= 0 and frame_number <= self.last_frame_number 697 698 self.frame_number = frame_number 699 700 M = len(self.x)/3 701 702 fin = NetCDFFile(self.source, 'r') 703 704 for q in filter(lambda n:n != 'x' and n != 'y' and n != 'z' and n != 'time' and n != 'volumes' and \ 705 '_range' not in n, \ 706 fin.variables.keys()): 707 if len(fin.variables[q].shape) == 1: # Not a time-varying quantity 708 self.quantities[q] = num.ravel(num.array(fin.variables[q], num.float)).reshape(M,3) 709 else: # Time-varying, get the current timestep data 710 self.quantities[q] = num.array(fin.variables[q][self.frame_number], num.float).reshape(M,3) 711 fin.close() 712 return self.quantities 713 714 def get_bounds(self): 715 return [self.xmin, self.xmax, self.ymin, self.ymax] 716 717 def get_last_frame_number(self): 718 return self.last_frame_number 719 720 def get_time(self): 721 return self.time[self.frame_number] 646 722 647 723 … … 2530 2606 verbose = False, 2531 2607 origin = None): 2608 2532 2609 log.critical('sww2asc will soon be obsoleted - please use sww2dem') 2533 2610 sww2dem(basename_in, … … 2540 2617 verbose = verbose, 2541 2618 origin = origin, 2542 datum = 'WGS84',2543 format = 'asc')2619 datum = 'WGS84', 2620 format = 'asc') 2544 2621 2545 2622 … … 6379 6456 6380 6457 6458 6459 6381 6460 ## 6382 6461 # @brief A class to write STS files.
Note: See TracChangeset
for help on using the changeset viewer.