Changeset 8875 for trunk/anuga_core/source/anuga_parallel
- Timestamp:
- May 27, 2013, 7:33:37 PM (12 years ago)
- Location:
- trunk/anuga_core/source/anuga_parallel
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/anuga_core/source/anuga_parallel/parallel_boyd_box_operator.py
r8833 r8875 104 104 105 105 106 # def debug_discharge_routine(self):107 # local_debug ='false'108 #109 # if self.use_velocity_head:110 # self.delta_total_energy = self.inlets[0].get_enquiry_total_energy() - self.inlets[1].get_enquiry_total_energy()111 # else:112 # self.delta_total_energy = self.inlets[0].get_enquiry_stage() - self.inlets[1].get_enquiry_stage()113 #114 # self.inflow = self.inlets[0]115 # self.outflow = self.inlets[1]116 #117 # self.inflow_index = 0118 # self.outflow_index = 1119 #120 # if self.delta_total_energy < 0:121 # self.inflow = self.inlets[1]122 # self.outflow = self.inlets[0]123 # self.delta_total_energy = -self.delta_total_energy124 # self.inflow_index = 1125 # self.outflow_index = 0126 #127 #128 # if self.inflow.get_enquiry_depth() > 0.01: #this value was 0.01:129 # if local_debug =='true':130 # anuga.log.critical('Specific E & Deltat Tot E = %s, %s'131 # % (str(self.inflow.get_enquiry_specific_energy()),132 # str(self.delta_total_energy)))133 # anuga.log.critical('culvert type = %s' % str(culvert_type))134 # # Water has risen above inlet135 #136 #137 # msg = 'Specific energy at inlet is negative'138 # assert self.inflow.get_enquiry_specific_energy() >= 0.0, msg139 #140 # if self.use_velocity_head :141 # self.driving_energy = self.inflow.get_enquiry_specific_energy()142 # else:143 # self.driving_energy = self.inflow.get_enquiry_depth()144 #145 # depth = self.culvert_height146 # width = self.culvert_width147 # flow_width = self.culvert_width148 # # intially assume the culvert flow is controlled by the inlet149 # # check unsubmerged and submerged condition and use Min Q150 # # but ensure the correct flow area and wetted perimeter are used151 # Q_inlet_unsubmerged = 0.544*anuga.g**0.5*width*self.driving_energy**1.50 # Flow based on Inlet Ctrl Inlet Unsubmerged152 # Q_inlet_submerged = 0.702*anuga.g**0.5*width*depth**0.89*self.driving_energy**0.61 # Flow based on Inlet Ctrl Inlet Submerged153 #154 # # FIXME(Ole): Are these functions really for inlet control?155 # if Q_inlet_unsubmerged < Q_inlet_submerged:156 # Q = Q_inlet_unsubmerged157 # dcrit = (Q**2/anuga.g/width**2)**0.333333158 # if dcrit > depth:159 # dcrit = depth160 # flow_area = width*dcrit161 # perimeter= 2.0*(width+dcrit)162 # else: # dcrit < depth163 # flow_area = width*dcrit164 # perimeter= 2.0*dcrit+width165 # outlet_culvert_depth = dcrit166 # self.case = 'Inlet unsubmerged Box Acts as Weir'167 # else: # Inlet Submerged but check internal culvert flow depth168 # Q = Q_inlet_submerged169 # dcrit = (Q**2/anuga.g/width**2)**0.333333170 # if dcrit > depth:171 # dcrit = depth172 # flow_area = width*dcrit173 # perimeter= 2.0*(width+dcrit)174 # else: # dcrit < depth175 # flow_area = width*dcrit176 # perimeter= 2.0*dcrit+width177 # outlet_culvert_depth = dcrit178 # self.case = 'Inlet submerged Box Acts as Orifice'179 #180 # dcrit = (Q**2/anuga.g/width**2)**0.333333181 # # May not need this .... check if same is done above182 # outlet_culvert_depth = dcrit183 # if outlet_culvert_depth > depth:184 # outlet_culvert_depth = depth # Once again the pipe is flowing full not partfull185 # flow_area = width*depth # Cross sectional area of flow in the culvert186 # perimeter = 2*(width+depth)187 # self.case = 'Inlet CTRL Outlet unsubmerged PIPE PART FULL'188 # else:189 # flow_area = width * outlet_culvert_depth190 # perimeter = width+2*outlet_culvert_depth191 # self.case = 'INLET CTRL Culvert is open channel flow we will for now assume critical depth'192 # # Initial Estimate of Flow for Outlet Control using energy slope193 # #( may need to include Culvert Bed Slope Comparison)194 # hyd_rad = flow_area/perimeter195 # culvert_velocity = math.sqrt(self.delta_total_energy/((self.sum_loss/2/anuga.g)+(self.manning**2*self.culvert_length)/hyd_rad**1.33333))196 # Q_outlet_tailwater = flow_area * culvert_velocity197 #198 #199 # if self.delta_total_energy < self.driving_energy:200 # # Calculate flows for outlet control201 #202 # # Determine the depth at the outlet relative to the depth of flow in the Culvert203 # if self.outflow.get_enquiry_depth() > depth: # The Outlet is Submerged204 # outlet_culvert_depth=depth205 # flow_area=width*depth # Cross sectional area of flow in the culvert206 # perimeter=2.0*(width+depth)207 # self.case = 'Outlet submerged'208 # else: # Here really should use the Culvert Slope to calculate Actual Culvert Depth & Velocity209 # dcrit = (Q**2/anuga.g/width**2)**0.333333210 # outlet_culvert_depth=dcrit # For purpose of calculation assume the outlet depth = Critical Depth211 # if outlet_culvert_depth > depth:212 # outlet_culvert_depth=depth213 # flow_area=width*depth214 # perimeter=2.0*(width+depth)215 # self.case = 'Outlet is Flowing Full'216 # else:217 # flow_area=width*outlet_culvert_depth218 # perimeter=(width+2.0*outlet_culvert_depth)219 # self.case = 'Outlet is open channel flow'220 #221 # hyd_rad = flow_area/perimeter222 #223 #224 #225 # # Final Outlet control velocity using tail water226 # culvert_velocity = math.sqrt(self.delta_total_energy/((self.sum_loss/2/anuga.g)+(self.manning**2*self.culvert_length)/hyd_rad**1.33333))227 # Q_outlet_tailwater = flow_area * culvert_velocity228 #229 # Q = min(Q, Q_outlet_tailwater)230 # else:231 #232 # pass233 # #FIXME(Ole): What about inlet control?234 #235 # culv_froude=math.sqrt(Q**2*flow_width/(anuga.g*flow_area**3))236 #237 # if local_debug =='true':238 # anuga.log.critical('FLOW AREA = %s' % str(flow_area))239 # anuga.log.critical('PERIMETER = %s' % str(perimeter))240 # anuga.log.critical('Q final = %s' % str(Q))241 # anuga.log.critical('FROUDE = %s' % str(culv_froude))242 #243 # # Determine momentum at the outlet244 # barrel_velocity = Q/(flow_area + anuga.velocity_protection/flow_area)245 #246 # # END CODE BLOCK for DEPTH > Required depth for CULVERT Flow247 #248 # else: # self.inflow.get_enquiry_depth() < 0.01:249 # Q = barrel_velocity = outlet_culvert_depth = 0.0250 #251 # # Temporary flow limit252 # if barrel_velocity > self.max_velocity:253 # barrel_velocity = self.max_velocity254 # Q = flow_area * barrel_velocity255 #256 # return Q, barrel_velocity, outlet_culvert_depth257 106 258 107 def discharge_routine(self): … … 381 230 self.driving_energy = inflow_enq_depth 382 231 383 #print "ZZZZZ: driving energy = %f" %(self.driving_energy)384 385 # depth = self.culvert_height386 # width = self.culvert_width387 # flow_width = self.culvert_width388 # driving_energy = self.driving_energy389 # sum_loss = self.sum_loss390 # culvert_length= self.culvert_length391 # manning = self.manning392 # delta_total_energy = self.delta_total_energy393 394 395 232 396 233 Q, barrel_velocity, outlet_culvert_depth, flow_area, case = \ -
trunk/anuga_core/source/anuga_parallel/parallel_inlet.py
r8833 r8875 26 26 """ 27 27 28 def __init__(self, domain, line, master_proc = 0, procs = None, verbose=False):28 def __init__(self, domain, poly, master_proc = 0, procs = None, verbose=False): 29 29 30 30 self.domain = domain 31 self. line = line31 self.poly = num.asarray(poly, dtype=num.float64) 32 32 self.verbose = verbose 33 34 self.line = True 35 if len(self.poly) > 2: 36 self.line = False 37 33 38 self.master_proc = master_proc 34 39 … … 43 48 self.compute_triangle_indices() 44 49 self.compute_area() 45 self.compute_inlet_length()50 #self.compute_inlet_length() 46 51 47 52 … … 49 54 def compute_triangle_indices(self): 50 55 51 # Get boundary of full triangles (in absolute coordinates) 56 57 domain_centroids = self.domain.get_centroid_coordinates(absolute=True) 52 58 vertex_coordinates = self.domain.get_full_vertex_coordinates(absolute=True) 53 59 54 # PETE: we can assume that the ghost triangles in this domain exist in another 55 # domain, therefore any part of the inlet corresponding to them are accounted for. 56 57 self.triangle_indices = line_intersect(vertex_coordinates, self.line) 60 61 if self.line: # poly is a line 62 self.triangle_indices = line_intersect(vertex_coordinates, self.poly) 63 64 else: # poly is a polygon 65 66 self.triangle_indices = inside_polygon(domain_centroids, self.poly) 67 58 68 59 69 for i in self.triangle_indices: 60 70 assert self.domain.tri_full_flag[i] == 1 71 61 72 62 73 def compute_area(self): … … 150 161 local_stage = num.sum(self.get_stages()*self.get_areas()) 151 162 global_area = self.get_global_area() 163 164 165 152 166 global_stage = local_stage 153 167 … … 162 176 163 177 164 return global_stage/global_area 178 if global_area > 0.0: 179 return global_stage/global_area 180 else: 181 return 0.0 165 182 166 183 def get_elevations(self): … … 170 187 def get_average_elevation(self): 171 188 # LOCAL 172 return num.sum(self.get_elevations()*self.get_areas())/self.area 189 190 if self.area > 0: 191 return num.sum(self.get_elevations()*self.get_areas())/self.area 192 else: 193 return 0.0 173 194 174 195 … … 180 201 def get_average_xmom(self): 181 202 # LOCAL 182 return num.sum(self.get_xmoms()*self.get_areas())/self.area 203 204 if self.area > 0: 205 return num.sum(self.get_xmoms()*self.get_areas())/self.area 206 else: 207 return 0.0 183 208 184 209 def get_global_average_xmom(self): … … 202 227 203 228 204 return global_xmoms/global_area 229 if global_area > 0.0: 230 return global_xmoms/global_area 231 else: 232 return 0.0 233 205 234 206 235 def get_ymoms(self): … … 233 262 234 263 235 return global_ymoms/global_area 264 if global_area > 0.0: 265 return global_ymoms/global_area 266 else: 267 return 0.0 236 268 237 269 def get_depths(self): … … 267 299 def get_average_depth(self): 268 300 # LOCAL 269 return self.get_total_water_volume()/self.area 301 302 if self.area > 0.0: 303 return self.get_total_water_volume()/self.area 304 else: 305 return 0.0 270 306 271 307 def get_global_average_depth(self): … … 277 313 total_water_volume = self.get_global_total_water_volume() 278 314 279 return total_water_volume / area 315 316 if area > 0.0: 317 return total_water_volume / area 318 else: 319 return 0.0 280 320 281 321 282 322 def get_velocities(self): 283 323 #LOCAL 284 285 u = self.get_xmoms()/(depths + velocity_protection/depths)286 v = self.get_ymoms()/(depths + velocity_protection/depths)287 288 324 depths = self.get_depths() 325 u = depths*self.get_xmoms()/(depths**2 + velocity_protection) 326 v = depths*self.get_ymoms()/(depths**2 + velocity_protection) 327 328 return u, v 289 329 290 330 291 331 def get_xvelocities(self): 292 332 #LOCAL 293 294 return self.get_xmoms()/(depths + velocity_protection/depths)333 depths = self.get_depths() 334 return depth*self.get_xmoms()/(depths**2 + velocity_protection) 295 335 296 336 def get_yvelocities(self): 297 337 #LOCAL 298 299 return self.get_ymoms()/(depths + velocity_protection/depths)338 depths = self.get_depths() 339 return depths*self.get_ymoms()/(depths**2 + velocity_protection) 300 340 301 341 302 342 def get_average_speed(self): 303 343 #LOCAL 304 305 306 307 308 309 344 u, v = self.get_velocities() 345 346 average_u = num.sum(u*self.get_areas())/self.area 347 average_v = num.sum(v*self.get_areas())/self.area 348 349 return math.sqrt(average_u**2 + average_v**2) 310 350 311 351 -
trunk/anuga_core/source/anuga_parallel/parallel_inlet_enquiry.py
r8833 r8875 18 18 """ 19 19 20 def __init__(self, domain, polyline, enquiry_pt, master_proc = 0, procs = None, enquiry_proc = -1, 21 outward_culvert_vector=None, verbose=False): 20 def __init__(self, domain, polyline, enquiry_pt, 21 invert_elevation = None, 22 outward_culvert_vector=None, 23 master_proc = 0, 24 procs = None, 25 enquiry_proc = -1, 26 verbose=False): 22 27 23 28 … … 28 33 29 34 self.enquiry_pt = enquiry_pt 35 self.invert_elevation = invert_elevation 30 36 self.outward_culvert_vector = outward_culvert_vector 31 37 self.master_proc = master_proc … … 123 129 124 130 if self.enquiry_index >= 0: 131 return max(self.get_enquiry_stage() - self.get_enquiry_invert_elevation(), 0.0) 132 else: 133 return None 134 135 def get_enquiry_water_depth(self): 136 # WARNING: Must be called by processor containing inlet enquiry point to have effect 137 138 if self.enquiry_index >= 0: 125 139 return self.get_enquiry_stage() - self.get_enquiry_elevation() 126 140 else: 127 141 return None 128 142 143 def get_enquiry_invert_elevation(self): 144 # WARNING: Must be called by processor containing inlet enquiry point to have effect 145 146 if self.enquiry_index >= 0: 147 if self.invert_elevation is None: 148 return self.get_enquiry_elevation() 149 else: 150 return self.invert_elevation 151 else: 152 return None 129 153 130 154 def get_enquiry_velocity(self): … … 132 156 133 157 if self.enquiry_index >= 0: 134 depth = self.get_enquiry_ depth()135 u = self.get_enquiry_xmom()/(depth + velocity_protection/depth)136 v = self.get_enquiry_ymom()/(depth + velocity_protection/depth)158 depth = self.get_enquiry_water_depth() 159 u = depth*self.get_enquiry_xmom()/(depth**2 + velocity_protection) 160 v = depth*self.get_enquiry_ymom()/(depth**2 + velocity_protection) 137 161 138 162 return u, v … … 145 169 146 170 if self.enquiry_index >= 0: 147 depth = self.get_enquiry_ depth()148 return self.get_enquiry_xmom()/(depth + velocity_protection/depth)171 depth = self.get_enquiry_water_depth() 172 return depth*self.get_enquiry_xmom()/(depth**2 + velocity_protection) 149 173 else: 150 174 return None … … 154 178 155 179 if self.enquiry_index >= 0: 156 depth = self.get_enquiry_ depth()157 return self.get_enquiry_ymom()/(depth + velocity_protection/depth)180 depth = self.get_enquiry_water_depth() 181 return depth*self.get_enquiry_ymom()/(depth**2 + velocity_protection) 158 182 else: 159 183 return None -
trunk/anuga_core/source/anuga_parallel/parallel_inlet_operator.py
r8833 r8875 33 33 def __init__(self, 34 34 domain, 35 line,35 poly, 36 36 Q = 0.0, 37 37 velocity = None, … … 47 47 self.domain = domain 48 48 self.domain.set_fractional_step_operator(self) 49 self. line = numpy.array(line, dtype='d')49 self.poly = numpy.array(poly, dtype='d') 50 50 self.master_proc = master_proc 51 51 … … 80 80 Inlet_operator.counter += 1 81 81 82 self.enquiry_point = 0.5*(self.line[0] + self.line[1]) 83 84 self.outward_vector = self.line 85 self.inlet = parallel_inlet.Parallel_Inlet(self.domain, self.line, master_proc = master_proc, 82 83 n = len(self.poly) 84 self.enquiry_point = numpy.sum(self.poly,axis=1)/float(n) 85 86 87 #self.outward_vector = self.poly 88 self.inlet = parallel_inlet.Parallel_Inlet(self.domain, self.poly, master_proc = master_proc, 86 89 procs = procs, verbose= verbose) 90 91 if velocity is not None: 92 assert len(velocity)==2 93 94 self.velocity = velocity 95 96 self.applied_Q = 0.0 97 87 98 self.set_logging(logging) 88 99 89 90 100 self.set_default(default) 91 92 self.velocity = velocity93 94 self.applied_Q = 0.095 101 96 102 def __call__(self): -
trunk/anuga_core/source/anuga_parallel/parallel_operator_factory.py
r8833 r8875 41 41 42 42 def Inlet_operator(domain, 43 line,43 poly, 44 44 Q, 45 45 velocity = None, … … 56 56 if verbose: print "Allocating non parallel inlet operator ....." 57 57 return anuga.structures.inlet_operator.Inlet_operator(domain, 58 line,58 poly, 59 59 Q, 60 60 velocity = velocity, … … 71 71 myid = pypar.rank() 72 72 73 line = num.array(line, dtype='d')73 poly = num.array(poly, dtype='d') 74 74 75 75 alloc, inlet_master_proc, inlet_procs, enquiry_proc = allocate_inlet_procs(domain, 76 line,76 poly, 77 77 master_proc = master_proc, 78 78 procs = procs, … … 90 90 91 91 return Parallel_Inlet_operator(domain, 92 line,92 poly, 93 93 Q, 94 94 velocity = velocity, -
trunk/anuga_core/source/anuga_parallel/parallel_structure_operator.py
r8833 r8875 154 154 155 155 if self.myid in self.inlet_procs[0]: 156 line0 = self.exchange_lines[0] 156 line0 = self.exchange_lines[0] 157 158 if self.invert_elevations is None: 159 invert_elevation0 = None 160 else: 161 invert_elevation0 = self.invert_elevations[0] 162 157 163 enquiry_point0 = self.enquiry_points[0] 158 164 outward_vector0 = self.culvert_vector 159 165 160 self.inlets.append(parallel_inlet_enquiry.Parallel_Inlet_enquiry(self.domain, line0, 161 enquiry_point0, self.inlet_master_proc[0], self.inlet_procs[0], 162 self.enquiry_proc[0], outward_vector0, self.verbose)) 166 self.inlets.append(parallel_inlet_enquiry.Parallel_Inlet_enquiry( 167 self.domain, 168 line0, 169 enquiry_point0, 170 invert_elevation = invert_elevation0, 171 outward_culvert_vector = outward_vector0, 172 master_proc = self.inlet_master_proc[0], 173 procs = self.inlet_procs[0], 174 enquiry_proc = self.enquiry_proc[0], 175 verbose = self.verbose)) 163 176 else: 164 177 self.inlets.append(None) … … 166 179 if self.myid in self.inlet_procs[1]: 167 180 line1 = self.exchange_lines[1] 181 182 if self.invert_elevations is None: 183 invert_elevation1 = None 184 else: 185 invert_elevation1 = self.invert_elevations[1] 186 187 168 188 enquiry_point1 = self.enquiry_points[1] 169 189 outward_vector1 = - self.culvert_vector 170 190 171 self.inlets.append(parallel_inlet_enquiry.Parallel_Inlet_enquiry(self.domain, line1, 172 enquiry_point1, self.inlet_master_proc[1], 173 self.inlet_procs[1], self.enquiry_proc[1], outward_vector1, self.verbose)) 191 192 self.inlets.append(parallel_inlet_enquiry.Parallel_Inlet_enquiry( 193 self.domain, 194 line1, 195 enquiry_point1, 196 invert_elevation = invert_elevation1, 197 outward_culvert_vector = outward_vector1, 198 master_proc = self.inlet_master_proc[1], 199 procs = self.inlet_procs[1], 200 enquiry_proc = self.enquiry_proc[1], 201 verbose = self.verbose)) 202 174 203 else: 175 204 self.inlets.append(None) … … 508 537 def get_culvert_length(self): 509 538 return self.culvert_length 510 511 539 540 512 541 def get_culvert_width(self): 513 542 return self.width … … 534 563 535 564 # Get id of processors associated with first and second inlet enquiry points 536 def get_enquiry_proc(self): 537 return self.enquiry_proc 538 565 def get_enquiry_proc(self, id=None): 566 567 if id is none: 568 return self.enquiry_proc 569 else: 570 return self.enquiry_proc[id] 571 572 573 def set_culvert_height(self, height): 574 575 self.culvert_height = height 576 577 def set_culvert_width(self, width): 578 579 self.culvert_width = width 580 581 539 582 540 583 def parallel_safe(self): … … 542 585 543 586 544 587 def get_enquiry_stages(self): 588 # Should be called from all processors associated with operator 589 590 import pypar 591 592 593 get0 = 'self.inlets[0].get_enquiry_stage()' 594 get1 = 'self.inlets[1].get_enquiry_stage()' 595 596 if self.myid == self.master_proc: 597 598 if self.myid == self.enquiry_proc[0]: 599 enq0 = eval(get0) 600 else: 601 enq0 = pypar.receive(self.enquiry_proc[0]) 602 603 604 if self.myid == self.enquiry_proc[1]: 605 enq1 = eval(get1) 606 else: 607 enq1 = pypar.receive(self.enquiry_proc[1]) 608 609 else: 610 if self.myid == self.enquiry_proc[0]: 611 enq0 = eval(get0) 612 pypar.send(enq0, self.master_proc) 613 614 if self.myid == self.enquiry_proc[1]: 615 enq1 = eval(get1) 616 pypar.send(enq1, self.master_proc) 617 618 619 return [enq0, enq1] 620 621 def get_enquiry_depths(self): 622 # Should be called from all processors associated with operator 623 624 import pypar 625 626 627 get0 = 'self.inlets[0].get_enquiry_depth()' 628 get1 = 'self.inlets[1].get_enquiry_depth()' 629 630 if self.myid == self.master_proc: 631 632 if self.myid == self.enquiry_proc[0]: 633 enq0 = eval(get0) 634 else: 635 enq0 = pypar.receive(self.enquiry_proc[0]) 636 637 638 if self.myid == self.enquiry_proc[1]: 639 enq1 = eval(get1) 640 else: 641 enq1 = pypar.receive(self.enquiry_proc[1]) 642 643 else: 644 if self.myid == self.enquiry_proc[0]: 645 enq0 = eval(get0) 646 pypar.send(enq0, self.master_proc) 647 648 if self.myid == self.enquiry_proc[1]: 649 enq1 = eval(get1) 650 pypar.send(enq1, self.master_proc) 651 652 653 return [enq0, enq1] 654 655 656 657 def get_enquiry_positions(self): 658 659 import pypar 660 661 get0 = 'self.inlets[0].get_enquiry_position()' 662 get1 = 'self.inlets[1].get_enquiry_position()' 663 664 665 if self.myid == self.master_proc: 666 667 if self.myid == self.enquiry_proc[0]: 668 enq0 = eval(get0) 669 else: 670 enq0 = pypar.receive(self.enquiry_proc[0]) 671 672 673 if self.myid == self.enquiry_proc[1]: 674 enq1 = eval(get1) 675 else: 676 enq1 = pypar.receive(self.enquiry_proc[1]) 677 678 else: 679 if self.myid == self.enquiry_proc[0]: 680 enq0 = eval(get0) 681 pypar.send(enq0, self.master_proc) 682 683 if self.myid == self.enquiry_proc[1]: 684 enq1 = eval(get1) 685 pypar.send(enq1, self.master_proc) 686 687 688 return [enq0, enq1] 689 690 691 def get_enquiry_xmoms(self): 692 693 get0 = 'self.inlets[0].get_enquiry_xmom()' 694 get1 = 'self.inlets[1].get_enquiry_xmom()' 695 696 import pypar 697 698 699 if self.myid == self.master_proc: 700 701 if self.myid == self.enquiry_proc[0]: 702 enq0 = eval(get0) 703 else: 704 enq0 = pypar.receive(self.enquiry_proc[0]) 705 706 707 if self.myid == self.enquiry_proc[1]: 708 enq1 = eval(get1) 709 else: 710 enq1 = pypar.receive(self.enquiry_proc[1]) 711 712 else: 713 if self.myid == self.enquiry_proc[0]: 714 enq0 = eval(get0) 715 pypar.send(enq0, self.master_proc) 716 717 if self.myid == self.enquiry_proc[1]: 718 enq1 = eval(get1) 719 pypar.send(enq1, self.master_proc) 720 721 722 return [enq0, enq1] 723 724 def get_enquiry_ymoms(self): 725 726 get0 = 'self.inlets[0].get_enquiry_ymom()' 727 get1 = 'self.inlets[1].get_enquiry_ymom()' 728 729 import pypar 730 731 732 if self.myid == self.master_proc: 733 734 if self.myid == self.enquiry_proc[0]: 735 enq0 = eval(get0) 736 else: 737 enq0 = pypar.receive(self.enquiry_proc[0]) 738 739 740 if self.myid == self.enquiry_proc[1]: 741 enq1 = eval(get1) 742 else: 743 enq1 = pypar.receive(self.enquiry_proc[1]) 744 745 else: 746 if self.myid == self.enquiry_proc[0]: 747 enq0 = eval(get0) 748 pypar.send(enq0, self.master_proc) 749 750 if self.myid == self.enquiry_proc[1]: 751 enq1 = eval(get1) 752 pypar.send(enq1, self.master_proc) 753 754 755 return [enq0, enq1] 756 757 758 def get_enquiry_elevations(self): 759 760 get0 = 'self.inlets[0].get_enquiry_elevation()' 761 get1 = 'self.inlets[1].get_enquiry_elevation()' 762 763 import pypar 764 765 766 if self.myid == self.master_proc: 767 768 if self.myid == self.enquiry_proc[0]: 769 enq0 = eval(get0) 770 else: 771 enq0 = pypar.receive(self.enquiry_proc[0]) 772 773 774 if self.myid == self.enquiry_proc[1]: 775 enq1 = eval(get1) 776 else: 777 enq1 = pypar.receive(self.enquiry_proc[1]) 778 779 else: 780 if self.myid == self.enquiry_proc[0]: 781 enq0 = eval(get0) 782 pypar.send(enq0, self.master_proc) 783 784 if self.myid == self.enquiry_proc[1]: 785 enq1 = eval(get1) 786 pypar.send(enq1, self.master_proc) 787 788 789 return [enq0, enq1] 790 791 792 793 def get_enquiry_water_depths(self): 794 795 get0 = 'self.inlets[0].get_enquiry_water_depth()' 796 get1 = 'self.inlets[1].get_enquiry_water_depth()' 797 798 import pypar 799 800 801 if self.myid == self.master_proc: 802 803 if self.myid == self.enquiry_proc[0]: 804 enq0 = eval(get0) 805 else: 806 enq0 = pypar.receive(self.enquiry_proc[0]) 807 808 809 if self.myid == self.enquiry_proc[1]: 810 enq1 = eval(get1) 811 else: 812 enq1 = pypar.receive(self.enquiry_proc[1]) 813 814 else: 815 if self.myid == self.enquiry_proc[0]: 816 enq0 = eval(get0) 817 pypar.send(enq0, self.master_proc) 818 819 if self.myid == self.enquiry_proc[1]: 820 enq1 = eval(get1) 821 pypar.send(enq1, self.master_proc) 822 823 824 return [enq0, enq1] 825 826 827 def get_enquiry_invert_elevations(self): 828 829 get0 = 'self.inlets[0].get_enquiry_invert_elevation()' 830 get1 = 'self.inlets[1].get_enquiry_invert_elevation()' 831 832 import pypar 833 834 835 if self.myid == self.master_proc: 836 837 if self.myid == self.enquiry_proc[0]: 838 enq0 = eval(get0) 839 else: 840 enq0 = pypar.receive(self.enquiry_proc[0]) 841 842 843 if self.myid == self.enquiry_proc[1]: 844 enq1 = eval(get1) 845 else: 846 enq1 = pypar.receive(self.enquiry_proc[1]) 847 848 else: 849 if self.myid == self.enquiry_proc[0]: 850 enq0 = eval(get0) 851 pypar.send(enq0, self.master_proc) 852 853 if self.myid == self.enquiry_proc[1]: 854 enq1 = eval(get1) 855 pypar.send(enq1, self.master_proc) 856 857 858 return [enq0, enq1] 859 860 861 def get_enquiry_velocitys(self): 862 863 get0 = 'self.inlets[0].get_enquiry_velocity()' 864 get1 = 'self.inlets[1].get_enquiry_velocity()' 865 866 import pypar 867 868 869 if self.myid == self.master_proc: 870 871 if self.myid == self.enquiry_proc[0]: 872 enq0 = eval(get0) 873 else: 874 enq0 = pypar.receive(self.enquiry_proc[0]) 875 876 877 if self.myid == self.enquiry_proc[1]: 878 enq1 = eval(get1) 879 else: 880 enq1 = pypar.receive(self.enquiry_proc[1]) 881 882 else: 883 if self.myid == self.enquiry_proc[0]: 884 enq0 = eval(get0) 885 pypar.send(enq0, self.master_proc) 886 887 if self.myid == self.enquiry_proc[1]: 888 enq1 = eval(get1) 889 pypar.send(enq1, self.master_proc) 890 891 892 return [enq0, enq1] 893 894 895 def get_enquiry_xvelocitys(self): 896 897 get0 = 'self.inlets[0].get_enquiry_xvelocity()' 898 get1 = 'self.inlets[1].get_enquiry_xvelocity()' 899 900 import pypar 901 902 903 if self.myid == self.master_proc: 904 905 if self.myid == self.enquiry_proc[0]: 906 enq0 = eval(get0) 907 else: 908 enq0 = pypar.receive(self.enquiry_proc[0]) 909 910 911 if self.myid == self.enquiry_proc[1]: 912 enq1 = eval(get1) 913 else: 914 enq1 = pypar.receive(self.enquiry_proc[1]) 915 916 else: 917 if self.myid == self.enquiry_proc[0]: 918 enq0 = eval(get0) 919 pypar.send(enq0, self.master_proc) 920 921 if self.myid == self.enquiry_proc[1]: 922 enq1 = eval(get1) 923 pypar.send(enq1, self.master_proc) 924 925 926 return [enq0, enq1] 927 928 def get_enquiry_yvelocitys(self): 929 930 get0 = 'self.inlets[0].get_enquiry_yvelocity()' 931 get1 = 'self.inlets[1].get_enquiry_yvelocity()' 932 933 import pypar 934 935 if self.myid == self.master_proc: 936 937 if self.myid == self.enquiry_proc[0]: 938 enq0 = eval(get0) 939 else: 940 enq0 = pypar.receive(self.enquiry_proc[0]) 941 942 943 if self.myid == self.enquiry_proc[1]: 944 enq1 = eval(get1) 945 else: 946 enq1 = pypar.receive(self.enquiry_proc[1]) 947 948 else: 949 if self.myid == self.enquiry_proc[0]: 950 enq0 = eval(get0) 951 pypar.send(enq0, self.master_proc) 952 953 if self.myid == self.enquiry_proc[1]: 954 enq1 = eval(get1) 955 pypar.send(enq1, self.master_proc) 956 957 958 return [enq0, enq1] 959 960 961 def get_enquiry_speeds(self): 962 963 get0 = 'self.inlets[0].get_enquiry_speed()' 964 get1 = 'self.inlets[1].get_enquiry_speed()' 965 966 import pypar 967 968 969 if self.myid == self.master_proc: 970 971 if self.myid == self.enquiry_proc[0]: 972 enq0 = eval(get0) 973 else: 974 enq0 = pypar.receive(self.enquiry_proc[0]) 975 976 977 if self.myid == self.enquiry_proc[1]: 978 enq1 = eval(get1) 979 else: 980 enq1 = pypar.receive(self.enquiry_proc[1]) 981 982 else: 983 if self.myid == self.enquiry_proc[0]: 984 enq0 = eval(get0) 985 pypar.send(enq0, self.master_proc) 986 987 if self.myid == self.enquiry_proc[1]: 988 enq1 = eval(get1) 989 pypar.send(enq1, self.master_proc) 990 991 992 return [enq0, enq1] 993 994 995 def get_enquiry_velocity_heads(self): 996 997 get0 = 'self.inlets[0].get_enquiry_velocity_head()' 998 get1 = 'self.inlets[1].get_enquiry_velocity_head()' 999 1000 import pypar 1001 1002 1003 if self.myid == self.master_proc: 1004 1005 if self.myid == self.enquiry_proc[0]: 1006 enq0 = eval(get0) 1007 else: 1008 enq0 = pypar.receive(self.enquiry_proc[0]) 1009 1010 1011 if self.myid == self.enquiry_proc[1]: 1012 enq1 = eval(get1) 1013 else: 1014 enq1 = pypar.receive(self.enquiry_proc[1]) 1015 1016 else: 1017 if self.myid == self.enquiry_proc[0]: 1018 enq0 = eval(get0) 1019 pypar.send(enq0, self.master_proc) 1020 1021 if self.myid == self.enquiry_proc[1]: 1022 enq1 = eval(get1) 1023 pypar.send(enq1, self.master_proc) 1024 1025 1026 return [enq0, enq1] 1027 1028 1029 def get_enquiry_total_energys(self): 1030 1031 get0 = 'self.inlets[0].get_enquiry_total_energy()' 1032 get1 = 'self.inlets[1].get_enquiry_total_energy()' 1033 1034 import pypar 1035 1036 1037 if self.myid == self.master_proc: 1038 1039 if self.myid == self.enquiry_proc[0]: 1040 enq0 = eval(get0) 1041 else: 1042 enq0 = pypar.receive(self.enquiry_proc[0]) 1043 1044 1045 if self.myid == self.enquiry_proc[1]: 1046 enq1 = eval(get1) 1047 else: 1048 enq1 = pypar.receive(self.enquiry_proc[1]) 1049 1050 else: 1051 if self.myid == self.enquiry_proc[0]: 1052 enq0 = eval(get0) 1053 pypar.send(enq0, self.master_proc) 1054 1055 if self.myid == self.enquiry_proc[1]: 1056 enq1 = eval(get1) 1057 pypar.send(enq1, self.master_proc) 1058 1059 1060 return [enq0, enq1] 1061 1062 1063 def get_enquiry_specific_energys(self): 1064 1065 get0 = 'self.inlets[0].get_enquiry_specific_energy()' 1066 get1 = 'self.inlets[1].get_enquiry_specific_energy()' 1067 1068 import pypar 1069 1070 1071 if self.myid == self.master_proc: 1072 1073 if self.myid == self.enquiry_proc[0]: 1074 enq0 = eval(get0) 1075 else: 1076 enq0 = pypar.receive(self.enquiry_proc[0]) 1077 1078 1079 if self.myid == self.enquiry_proc[1]: 1080 enq1 = eval(get1) 1081 else: 1082 enq1 = pypar.receive(self.enquiry_proc[1]) 1083 1084 else: 1085 if self.myid == self.enquiry_proc[0]: 1086 enq0 = eval(get0) 1087 pypar.send(enq0, self.master_proc) 1088 1089 if self.myid == self.enquiry_proc[1]: 1090 enq1 = eval(get1) 1091 pypar.send(enq1, self.master_proc) 1092 1093 1094 return [enq0, enq1] 1095 1096
Note: See TracChangeset
for help on using the changeset viewer.