Changeset 2212
- Timestamp:
- Jan 16, 2006, 5:44:22 PM (19 years ago)
- Location:
- inundation/pyvolution
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
inundation/pyvolution/netherlands.py
r2207 r2212 12 12 #rpdb.set_active() 13 13 14 from shallow_water import Domain, Reflective_boundary, Dirichlet_boundary,\14 from shallow_water_vtk import Domain, Reflective_boundary, Dirichlet_boundary,\ 15 15 Transmissive_boundary, Constant_height, Constant_stage 16 16 … … 83 83 N = 130 #size = 33800 84 84 N = 600 #Size = 720000 85 N = 2085 N = 100 86 86 87 87 … … 171 171 172 172 173 for t in domain.evolve(yieldstep = 0.0 5, finaltime = 1.0):173 for t in domain.evolve(yieldstep = 0.005, finaltime = 1.0): 174 174 domain.write_time() 175 175 #domain.write_boundary() -
inundation/pyvolution/shallow_water_vtk.py
r2207 r2212 76 76 if self.visualise is True: 77 77 self.visualiser.start() 78 # Things go haywire if we start evolving before the vis is ready 79 self.visualiser.idle.wait() 80 self.visualiser.idle.clear() 78 81 79 82 #Store model data, e.g. for visualisation … … 89 92 #Real time viz 90 93 if self.visualise is True: 91 #pass 92 #Obseleted by the VTK-Visualiser 93 #self.visualiser.update_all() 94 #self.visualiser.update_timer() 95 self.visualiser.request_redraw() 96 if first: 97 time.sleep(5.0) 98 first = False 99 else: 100 time.sleep(1.0) 94 print 'start vtk update' 95 self.visualiser.redraw_ready.set() 96 self.visualiser.idle.wait() 97 self.visualiser.idle.clear() 98 print 'end vtk update' 101 99 102 100 #Store model data, e.g. for subsequent visualisation … … 109 107 #Pass control on to outer loop for more specific actions 110 108 yield(t) 111 import pypar112 profiler.dump_stats("distrib_profile." + str(pypar.size()) + "." + str(pypar.rank()) + ".dat")113 114 115 109 116 110 #==================================== End of Updated Shallow Water VTK domain ============= -
inundation/pyvolution/vtk_realtime_visualiser.py
r2196 r2212 3 3 4 4 import threading 5 from Queue import Queue, Empty6 5 import Tkinter 7 6 import vtk … … 49 48 self.vertices = domain.vertex_coordinates 50 49 51 # Message queue52 self. messages = Queue()53 50 self.idle = threading.Event() 51 self.redraw_ready = threading.Event() 52 54 53 # Internal use - storage of vtk objects 55 54 self.grids = {} … … 83 82 self.add_axes() 84 83 self.setup_all() 84 self.root.after(100, self.idle.set) 85 85 self.root.mainloop() 86 86 … … 95 95 96 96 # Message handling with after 97 self.root.after(100, self. handle_messages)97 self.root.after(100, self.redraw) 98 98 99 99 self.renderWidget = vtkTkRenderWidget(self.root, width=400, height=400) … … 183 183 self.renderer.AddActor(actor) 184 184 185 def handle_messages(self): 186 # Expandable to include more kinds of messages if need be 187 # This lookup table is copied because it is modified later 188 handlers = {'redraw': self.message_redraw}.copy() 189 try: 190 while True: 191 message = self.messages.get_nowait() 192 try: 193 handlers[message]() 194 # Guard against redrawing more than once per 195 # call to handle_messages. 196 if message == 'redraw': 197 del handlers[message] 198 except KeyError: 199 pass 200 except Empty: 201 pass 202 self.root.after(100, self.handle_messages) 203 204 def message_redraw(self): 205 """Re-render and repaint the rendered image. 206 This function should only be called from the message handler. 207 Use request_redraw to ask for a redraw""" 208 209 for q in self.domain.quantities: 210 if self.updating[q]: 211 self.draw_quantity(q) 185 def redraw(self): 186 if self.redraw_ready.isSet(): 187 self.redraw_ready.wait() 188 self.redraw_ready.clear() 189 for q in self.domain.quantities: 190 if self.updating[q]: 191 self.draw_quantity(q) 212 192 213 self.renderWindow.Render() 214 self.root.update_idletasks() 215 216 def request_redraw(self): 217 self.messages.put('redraw') 218 193 self.renderWindow.Render() 194 self.root.update_idletasks() 195 self.idle.set() 196 self.root.after(100, self.redraw)
Note: See TracChangeset
for help on using the changeset viewer.