Additional functionality in VTU renderer. Added capability to specify optional timestep within the run
| | |
| | | #if return False or no return statement, the analysis will continue with next running instance in the list. if return True, the analysis will stop after this run. |
| | | return False |
| | | |
| | | def plotrunningavg(run, **kwargs): |
| | | def plotrunningavginteractive(run, **kwargs): |
| | | import matplotlib.pyplot as plt |
| | | from trisurf import VTKRendering as vtk |
| | | import math |
| | | table=trisurf.Statistics(run.Dir.fullpath(),filename='data_tspoststat.csv').getTable() |
| | | def running_avg(col): |
| | | import numpy as np |
| | |
| | | for i in range(0,len(col)): |
| | | avg.append(np.average(col[:-i])) |
| | | return avg |
| | | fig=plt.figure(1) |
| | | ra=running_avg(table['hbar']) |
| | | plt.plot(ra) |
| | | plt.title('Running average') |
| | | plt.ylabel('1/n sum_i=niter^n(hbar_i)') |
| | | plt.xlabel('n') |
| | | def onclick(event): |
| | | print('button=%d, x=%d, y=%d, xdata=%f, ydata=%f' % (event.button, event.x, event.y, event.xdata, event.ydata)) |
| | | vtk.Renderer(kwargs.get('args', None),kwargs.get('host',None),run, math.floor(event.xdata)) |
| | | cid = fig.canvas.mpl_connect('button_press_event', onclick) |
| | | plt.show() |
| | | |
| | | plt.close(1) |
| | | #start manager with configured runs |
| | | tsmgr.start(Runs, analyses={'analyze1':analyze, 'plotrunningavg':plotrunningavg, 'plothbar':plothbar}) |
| | | tsmgr.start(Runs, analyses={'analyze1':analyze, 'plotrunningavg':plotrunningavginteractive, 'plothbar':plothbar}) |
| | | |
| | | #statistics.combine(Runs) |
| | | #statistics.combine([Runs[1],Runs[2]]) |
| | |
| | | |
| | | |
| | | class Renderer: |
| | | def __init__(self,args,host,run): |
| | | def __init__(self,args,host,run, timestep=-1): |
| | | self.host=host |
| | | self.args=args |
| | | self.run=run |
| | | self.timestep=timestep |
| | | self.renderer = vtkRenderer() |
| | | self.actor=self.lastActor() |
| | | self.textactor=self.textActor() |
| | |
| | | return textactor |
| | | |
| | | def lastActor(self): |
| | | self.filename=self.lastVTU() |
| | | if(self.timestep<0): |
| | | self.filename=self.lastVTU() |
| | | else: |
| | | self.filename=os.path.join("./",self.run.Dir.fullpath(),'timestep_{:06d}.vtu'.format(self.timestep)) |
| | | reader=vtkXMLUnstructuredGridReader() |
| | | reader.SetFileName(self.filename) |
| | | reader.Update() # Needed because of GetScalarRange |