Changeset 2212


Ignore:
Timestamp:
Jan 16, 2006, 5:44:22 PM (19 years ago)
Author:
steve
Message:

Added Jake's new vtk viewer

Location:
inundation/pyvolution
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • inundation/pyvolution/netherlands.py

    r2207 r2212  
    1212#rpdb.set_active()
    1313
    14 from shallow_water import Domain, Reflective_boundary, Dirichlet_boundary,\
     14from shallow_water_vtk import Domain, Reflective_boundary, Dirichlet_boundary,\
    1515     Transmissive_boundary, Constant_height, Constant_stage
    1616
     
    8383N = 130 #size = 33800
    8484N = 600 #Size = 720000
    85 N = 20
     85N = 100
    8686
    8787
     
    171171
    172172
    173 for t in domain.evolve(yieldstep = 0.05, finaltime = 1.0):
     173for t in domain.evolve(yieldstep = 0.005, finaltime = 1.0):
    174174    domain.write_time()
    175175    #domain.write_boundary()
  • inundation/pyvolution/shallow_water_vtk.py

    r2207 r2212  
    7676        if self.visualise is True:
    7777            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()
    7881
    7982        #Store model data, e.g. for visualisation
     
    8992            #Real time viz
    9093            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'
    10199
    102100            #Store model data, e.g. for subsequent visualisation
     
    109107            #Pass control on to outer loop for more specific actions
    110108            yield(t)
    111         import pypar
    112         profiler.dump_stats("distrib_profile." + str(pypar.size()) + "." + str(pypar.rank()) + ".dat")
    113 
    114 
    115109
    116110#==================================== End of Updated Shallow Water VTK domain =============
  • inundation/pyvolution/vtk_realtime_visualiser.py

    r2196 r2212  
    33
    44import threading
    5 from Queue import Queue, Empty
    65import Tkinter
    76import vtk
     
    4948        self.vertices = domain.vertex_coordinates
    5049
    51         # Message queue
    52         self.messages = Queue()
    53 
     50        self.idle = threading.Event()
     51        self.redraw_ready = threading.Event()
     52       
    5453        # Internal use - storage of vtk objects
    5554        self.grids = {}
     
    8382        self.add_axes()
    8483        self.setup_all()
     84        self.root.after(100, self.idle.set)
    8585        self.root.mainloop()
    8686
     
    9595
    9696        # Message handling with after
    97         self.root.after(100, self.handle_messages)
     97        self.root.after(100, self.redraw)
    9898       
    9999        self.renderWidget = vtkTkRenderWidget(self.root, width=400, height=400)
     
    183183            self.renderer.AddActor(actor)
    184184
    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)
    212192       
    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.