Changeset 5832 for anuga_work/development/anuga_1d/domain.py
- Timestamp:
- Oct 11, 2008, 12:38:18 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
anuga_work/development/anuga_1d/domain.py
r5742 r5832 7 7 Geoscience Australia 8 8 """ 9 9 10 from generic_boundary_conditions import * 10 #from coordinate_transforms.geo_reference import Geo_reference 11 11 12 12 13 class Domain: 13 14 14 def __init__(self, coordinates, boundary = None, 15 conserved_quantities = None, other_quantities = None, 15 def __init__(self, 16 coordinates, 17 boundary = None, 18 conserved_quantities = None, 19 evolved_quantities = None, 20 other_quantities = None, 16 21 tagged_elements = None): 17 22 """ … … 23 28 from config import timestepping_method 24 29 from config import CFL 25 26 27 30 28 31 #Store Points 29 32 self.coordinates = array(coordinates) 30 33 31 # # if geo_reference is None:32 # # self. = Geo_reference() #Use defaults33 # # else:34 # # self.geo_reference = geo_reference35 34 36 35 #Register number of Elements … … 38 37 39 38 self.beta = 1.0 40 self. limiter = "minmod_kurganov"41 self. CFL = CFL39 self.set_limiter("minmod_kurganov") 40 self.set_CFL(CFL) 42 41 self.set_timestepping_method(timestepping_method) 43 42 … … 124 123 self.conserved_quantities = conserved_quantities 125 124 125 if evolved_quantities is None: 126 self.evolved_quantities = self.conserved_quantities 127 else: 128 self.evolved_quantities = evolved_quantities 129 126 130 if other_quantities is None: 127 131 self.other_quantities = [] … … 133 137 self.quantities = {} 134 138 139 #print self.conserved_quantities 140 #print self.evolved_quantities 141 142 135 143 #FIXME: remove later - maybe OK, though.... 136 for name in self. conserved_quantities:144 for name in self.evolved_quantities: 137 145 self.quantities[name] = Quantity(self) 138 146 for name in self.other_quantities: … … 160 168 self.number_of_steps = 0 161 169 self.number_of_first_order_steps = 0 162 self.CFL = CFL163 170 164 171 #Model time … … 169 176 #Checkpointing and storage 170 177 from config import default_datadir 171 self. datadir = default_datadir178 self.set_datadir(default_datadir) 172 179 self.filename = 'domain' 173 180 self.checkpoint = False … … 490 497 491 498 return q 499 500 501 def get_evolved_quantities(self, vol_id, vertex=None):#, edge=None): 502 """Get evolved quantities at volume vol_id 503 504 If vertex is specified use it as index for vertex values 505 If edge is specified use it as index for edge values 506 If neither are specified use centroid values 507 If both are specified an exeception is raised 508 509 Return value: Vector of length == number_of_evolved quantities 510 511 """ 512 513 from Numeric import zeros, Float 514 515 #if not (vertex is None):# or edge is None): 516 # msg = 'Values for both vertex and edge was specified.' 517 # msg += 'Only one (or none) is allowed.' 518 # raise msg 519 520 q = zeros( len(self.evolved_quantities), Float) 521 522 for i, name in enumerate(self.evolved_quantities): 523 Q = self.quantities[name] 524 if vertex is not None: 525 q[i] = Q.vertex_values[vol_id, vertex] 526 #elif edge is not None: 527 # q[i] = Q.edge_values[vol_id, edge] 528 else: 529 q[i] = Q.centroid_values[vol_id] 530 531 return q 492 532 493 533 … … 677 717 def check_integrity(self): 678 718 #Mesh.check_integrity(self) 719 720 #print self.quantities 721 #print self.conserved_quantities 679 722 680 723 for quantity in self.conserved_quantities: 681 724 msg = 'Conserved quantities must be a subset of all quantities' 682 725 assert quantity in self.quantities, msg 726 727 for quantity in self.evolved_quantities: 728 msg = 'Evolved quantities must be a subset of all quantities' 729 assert quantity in self.quantities, msg 683 730 684 731 # #assert hasattr(self, 'boundary_objects') … … 720 767 self.datadir = name 721 768 722 769 def set_CFL(self, cfl): 770 if cfl > 1.0: 771 print 'WARNING: Setting CFL condition to %f which is greater than 1' % cfl 772 self.CFL = cfl 773 774 def get_CFL(self): 775 return self.CFL 776 777 def set_filename(self, name): 778 self.filename = name 779 780 def get_filename(self): 781 return self.filename 782 783 def get_limiter(self): 784 return self.limiter 785 786 def set_limiter(self,limiter): 787 788 possible_limiters = \ 789 ['pyvolution', 'steve_minmod', 'minmod', 'minmod_kurganov', 'superbee', 'vanleer', 'vanalbada'] 790 791 if limiter in possible_limiters: 792 self.limiter = limiter 793 return 794 795 msg = '%s is an incorrect limiter type.\n'% limiter 796 msg += 'Possible types are: '+ ", ".join(["%s" % el for el in possible_limiters]) 797 raise Exception, msg 798 799 723 800 #-------------------------- 724 801 # Main components of evolve … … 915 992 """ 916 993 917 # Save initial initialconserved quantities values994 # Save initial conserved quantities values 918 995 self.backup_conserved_quantities() 919 996 … … 1382 1459 q = B.evaluate(vol_id, vertex_id) 1383 1460 1384 for j, name in enumerate(self. conserved_quantities):1461 for j, name in enumerate(self.evolved_quantities): 1385 1462 Q = self.quantities[name] 1386 1463 Q.boundary_values[i] = q[j]
Note: See TracChangeset
for help on using the changeset viewer.