Changeset 8080
- Timestamp:
- Nov 20, 2010, 10:18:51 AM (14 years ago)
- Location:
- trunk/anuga_core/source/anuga/structures
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/anuga_core/source/anuga/structures/inlet.py
r8073 r8080 216 216 217 217 self.domain.quantities['elevation'].centroid_values.put(self.triangle_indices, elevation) 218 219 def set_stages_evenly(self,volume): 220 """ Distribute volume of water over 221 inlet exchange region so that stage is level 222 """ 223 224 areas = self.get_areas() 225 stages = self.get_stages() 226 227 stages_order = stages.argsort() 228 229 summed_areas = num.zeros_like(areas) 230 summed_volume = num.zeros_like(areas) 231 #diff_stage = num.zeros_like(areas) 232 233 for i,a in enumerate(areas[stages_order]): 234 #print i,a, stages[stages_order[i]] 235 if i == 0: 236 summed_areas[i] = a 237 summed_volume[i] = 0.0 238 #diff_stage[i] = 0.0 239 else: 240 summed_areas[i] = summed_areas[i-1] + a 241 242 summed_volume[i] = summed_volume[i-1] + summed_areas[i-1]*\ 243 (stages[stages_order[i]] - stages[stages_order[i-1]]) 244 245 #diff_stage[i] = stages[stages_order[i]] - stages[stages_order[i-1]] 246 247 #print 'amount ',amount 248 #print summed_areas 249 #print summed_amount 250 #print diff_stage 251 252 253 #index = len(summed_amount) 254 for i,a in enumerate(summed_volume): 255 #print 'a ',a 256 if volume > a : 257 index = i 258 259 #print index 260 261 #print stages_order 262 #print stages 263 264 depth = (volume - summed_volume[index])/summed_areas[index] 265 266 stages[stages_order[0:index+1]] = stages[stages_order[index]]+depth 267 268 self.set_stages(stages) 269 270 def set_depths_evenly(self,volume): 271 """ Distribute volume over all exchange 272 cells with equal depth of water 273 """ 274 275 new_depth = self.get_average_depth() + (volume/self.get_area()) 276 self.set_depths(new_depth) 277 -
trunk/anuga_core/source/anuga/structures/inlet_operator.py
r8079 r8080 69 69 Q = self.Q 70 70 71 amount= Q*timestep71 volume = Q*timestep 72 72 73 assert Q >= 0.0, ' removing waterfrom an inlet!'73 assert Q >= 0.0, 'Q < 0: Water to be removed from an inlet!' 74 74 75 75 76 # FIXME (SR): Might be nice to spread the over the inlet so that it is flat 77 78 79 # Spread Q*timestep amount of water evenly over the inlet region 80 81 areas = self.inlet.get_areas() 82 stages = self.inlet.get_stages() 83 84 stages_order = stages.argsort() 85 86 summed_areas = numpy.zeros_like(areas) 87 summed_amount = numpy.zeros_like(areas) 88 diff_stage = numpy.zeros_like(areas) 89 90 for i,a in enumerate(areas[stages_order]): 91 #print i,a, stages[stages_order[i]] 92 if i == 0: 93 summed_areas[i] = a 94 summed_amount[i] = 0.0 95 diff_stage[i] = 0.0 96 else: 97 summed_areas[i] = summed_areas[i-1] + a 98 99 summed_amount[i] = summed_amount[i-1] + summed_areas[i-1]*\ 100 (stages[stages_order[i]] - stages[stages_order[i-1]]) 101 102 diff_stage[i] = stages[stages_order[i]] - stages[stages_order[i-1]] 103 104 #print 'amount ',amount 105 #print summed_areas 106 #print summed_amount 107 #print diff_stage 108 109 110 #index = len(summed_amount) 111 for i,a in enumerate(summed_amount): 112 #print 'a ',a 113 if amount > a : 114 index = i 115 116 #print index 117 118 #print stages_order 119 #print stages 76 # Distribute volume so as to obtain flat surface 77 self.inlet.set_stages_evenly(volume) 120 78 121 amount = (amount - summed_amount[index])/summed_areas[index] 122 123 stages[stages_order[0:index+1]] = stages[stages_order[index]]+amount 124 125 126 #print stages 127 #print areas 128 #print stages[stages_order] 129 130 131 #new_inlet_depth = self.inlet.get_average_depth() + (amount/self.inlet.get_area()) 132 #self.inlet.set_depths(new_inlet_depth) 133 134 self.inlet.set_stages(stages) 79 # Distribute volume evenly over all cells 80 #self.inlet.set_depths_evenly(volume) 81 135 82 136 83 def statistics(self):
Note: See TracChangeset
for help on using the changeset viewer.