From 6415a3e0127eb4278e0975f0ba280840ceb1ef95 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Wed, 13 Jul 2016 16:02:06 +0000 Subject: [PATCH] Merge branch 'master' of bitbucket.org:samop/trisurf-ng --- src/poly.c | 4 ++ src/io.c | 2 src/tape | 14 ++++-- src/general.h | 1 python/trisurf/VTKRendering.py | 85 +++++++++++++++++++++++++++++++++++++++++- 5 files changed, 97 insertions(+), 9 deletions(-) diff --git a/python/trisurf/VTKRendering.py b/python/trisurf/VTKRendering.py index 213d959..5e72b98 100644 --- a/python/trisurf/VTKRendering.py +++ b/python/trisurf/VTKRendering.py @@ -4,6 +4,80 @@ from vtk import * + +class MultiRender: + def __init__(self,args,host): + target_runs=getRargetRunIdxList(args) + if target_runs==None: + target_runs=list(range(1,len(host['runs'])+1)) + nruns=len(target_runs) + #prepare rendering window + self.renderer_window = vtkRenderWindow() + self.renderer_window.AddRenderer(self.renderer) + self.renderer_window.SetSize(1200,600) + interactor = vtkRenderWindowInteractor() + interactor.SetRenderWindow(self.renderer_window) + interactor.Initialize() + interactor.AddObserver("TimerEvent", self.RenderUpdate) + timerIDR = interactor.CreateRepeatingTimer(1000) + self.filename=[] + self.renderer=[] + i=0 + for run in target_runs: + #for each target run calculate renderer location + r.vtkRenderer() + r.SetBackground(0,0,0) + p=1.0/float(nruns) + x1=i*p + x2=(i+1)*p + r.SetViewport(x1,0.0,x2,1.0) + self.renderer.Append(r) + self.renderer_window.AddRenderer(r) + i=i+1 + #call Renderer object with Run, renderer + #start endless loop of interactor + interactor.Start() + + def lastVTU(self,run): + Dir=trisurf.Directory(maindir=run.maindir,simdir=run.subdir) + filename=os.path.join("./",Dir.fullpath(),run.getLastVTU()) + return filename + + def lastActorForRun(self,run): + filename=self.lastVTU(run) + reader=vtkXMLUnstructuredGridReader() + reader.SetFileName(self.filename) + reader.Update() # Needed because of GetScalarRange + output = reader.GetOutput() + scalar_range = output.GetScalarRange() + mapper = vtkDataSetMapper() + mapper.SetInput(output) + mapper.SetScalarRange(scalar_range) + + # Create the Actor + actor = vtkActor() + actor.SetMapper(mapper) + return actor + + + + def RenderUpdate(self, obj, event): + i=0 + for run in runs: + if(self.lastVTU(run)!=self.filename[i]): + #print("updejt") + self.renderer.RemoveActor(self.actor) + self.renderer.RemoveActor(self.textactor) + self.actor=self.lastActor() + self.textactor=self.textActor() + self.renderer.AddActor(self.actor) + self.renderer.AddActor(self.textactor) + self.renderer_window.Render() + #self.render.RemoveActor(self.actor) + i=i+1 + return + + class Renderer: def __init__(self,args,host): self.host=host @@ -14,11 +88,16 @@ self.renderer.AddActor(self.actor) self.renderer.AddActor(self.textactor) self.renderer.SetBackground(0, 0, 0) # Set background to white - # Create the RendererWindow self.renderer_window = vtkRenderWindow() self.renderer_window.AddRenderer(self.renderer) - + self.renderer_window.SetSize(1200,600) + + self.renderer.SetViewport(0.0,0.0,0.5,1.0) + rend=vtk.vtkRenderer() + rend.AddActor(self.actor) + rend.SetViewport(0.5,0.0,1.0,1.0) + self.renderer_window.AddRenderer(rend) # Set up a check for aborting rendering. # Create the RendererWindowInteractor and display the vtk_file interactor = vtkRenderWindowInteractor() @@ -40,7 +119,7 @@ textactor.SetInput(self.filename) tp=textactor.GetTextProperty() tp.SetColor(1,1,1) - tp.SetFontSize(18) + tp.SetFontSize(11) textactor.SetDisplayPosition(20,30) return textactor diff --git a/src/general.h b/src/general.h index a6f5114..4eab674 100644 --- a/src/general.h +++ b/src/general.h @@ -257,6 +257,7 @@ long int nczmax; long int npoly; long int nmono; + long int internal_poly; long int nfil; long int nfono; long int R_nucleus; diff --git a/src/io.c b/src/io.c index 147b655..2c76fd2 100644 --- a/src/io.c +++ b/src/io.c @@ -888,7 +888,6 @@ fprintf(fh,"</DataArray>\n"); - fprintf(fh,"</PointData>\n<CellData>\n</CellData>\n<Points>\n<DataArray type=\"Float64\" Name=\"Koordinate tock\" NumberOfComponents=\"3\" format=\"ascii\">\n"); for(i=0;i<vlist->n;i++){ fprintf(fh,"%.17e %.17e %.17e\n",vtx[i]->x,vtx[i]->y, vtx[i]->z); @@ -1066,6 +1065,7 @@ CFG_SIMPLE_INT("nmono", &tape->nmono), CFG_SIMPLE_INT("nfil",&tape->nfil), CFG_SIMPLE_INT("nfono",&tape->nfono), + CFG_SIMPLE_INT("internal_poly",&tape->internal_poly), CFG_SIMPLE_INT("R_nucleus",&tape->R_nucleus), CFG_SIMPLE_FLOAT("R_nucleusX",&tape->R_nucleusX), CFG_SIMPLE_FLOAT("R_nucleusY",&tape->R_nucleusY), diff --git a/src/poly.c b/src/poly.c index 3c93d0c..252b1c6 100644 --- a/src/poly.c +++ b/src/poly.c @@ -83,6 +83,7 @@ if (vlist!=NULL){ /* Make straight grafted poylmers normal to membrane (polymer brush). Dist. between poly vertices put to 1*/ + ts_int intpoly=vesicle->tape->internal_poly; for (i=0;i<poly_list->n;i++){ xnorm=0.0; @@ -94,6 +95,9 @@ znorm-=poly_list->poly[i]->grafted_vtx->tristar[j]->znorm; } normlength=sqrt(xnorm*xnorm+ynorm*ynorm+znorm*znorm); + if(intpoly && i%2){ + normlength=-normlength; + } xnorm=xnorm/normlength; ynorm=ynorm/normlength; znorm=znorm/normlength; diff --git a/src/tape b/src/tape index 50b4272..a7baa73 100644 --- a/src/tape +++ b/src/tape @@ -1,6 +1,6 @@ ####### Vesicle definitions ########### # nshell is a number of divisions of dipyramid -nshell=5 +nshell=17 # dmax is the max. bond length (in units l_min) dmax=1.7 # dmin_interspecies in the min. dist. between different vertex species (in units l_min) @@ -14,7 +14,7 @@ # (pswitch=1: calc. p*dV energy contribution) pswitch = 0 # pressure difference: p_inside - p_outside (in units kT/l_min^3): -pressure=-10.0 +pressure=10.0 #Constant volume constraint (0 disable constant volume, 1 enable wiht additional vertex move, 2 enable with epsvol) constvolswitch=0 @@ -25,11 +25,13 @@ ####### Polymer (brush) definitions ########### # npoly is a number of polymers attached to npoly distinct vertices on vesicle -npoly=0 +npoly=800 # nmono is a number of monomers in each polymer -nmono=2 +nmono=6 # Spring constant between monomers of the polymer k_spring=800 +#set to 1 if half of the polymeres are inside the vesicle +internal_poly=1 ####### Filament (inside the vesicle) definitions ########### # nfil is a number of filaments inside the vesicle @@ -37,7 +39,7 @@ # nfono is a number of monomers in each filament nfono=3 # Persistence lenght of the filaments (in units l_min) -xi=0 +xi=100 ####### Nucleus (inside the vesicle) ########### # Radius of an impenetrable hard sphere inside the vesicle @@ -69,6 +71,8 @@ #shut up if we are using cluster!!! quiet=false + + #what type of multiprocessing? (*none, smp, cluster, distributed, cuda, auto) #currently only none makes sense. -- Gitblit v1.9.3