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