From e86357faa6caf28f5032c624fa0cba24e5dc4686 Mon Sep 17 00:00:00 2001
From: mihaf <miha.fosnaric@gmail.com>
Date: Fri, 07 Mar 2014 12:13:21 +0000
Subject: [PATCH] Many fixes, before changing bondflip. triangles are still calculated in ts_bond_flip

---
 src/io.c                   |    9 +++-
 src/tape                   |   14 +++++--
 src/bondflip.c             |   37 ++++++++++++------
 src/initial_distribution.c |    3 -
 src/general.h              |    1 
 5 files changed, 43 insertions(+), 21 deletions(-)

diff --git a/src/bondflip.c b/src/bondflip.c
index 478027d..2d41849 100644
--- a/src/bondflip.c
+++ b/src/bondflip.c
@@ -79,10 +79,7 @@
   oldenergy+=kp->xk* kp->energy;
   oldenergy+=km->xk* km->energy;
   oldenergy+=it->xk* it->energy;
-//  for(i=0;i<k->neigh_no;i++) oldenergy+=k->neigh[i]->xk*k->neigh[i]->energy;
-//  for(i=0;i<kp->neigh_no;i++) oldenergy+=kp->neigh[i]->xk*kp->neigh[i]->energy;
-//  for(i=0;i<km->neigh_no;i++) oldenergy+=km->neigh[i]->xk*km->neigh[i]->energy;
-//  for(i=0;i<it->neigh_no;i++) oldenergy+=it->neigh[i]->xk*it->neigh[i]->energy;
+	//Neigbours don't change its energy.
 /*
 fprintf(stderr,"*** Naslov k=%ld\n",(long)k);
 fprintf(stderr,"*** Naslov it=%ld\n",(long)it);
@@ -107,18 +104,34 @@
 
 /* Calculating the new energy */
   delta_energy=0;
-  for(i=0;i<k->neigh_no;i++) energy_vertex(k->neigh[i]);
-  for(i=0;i<kp->neigh_no;i++) energy_vertex(kp->neigh[i]);
-  for(i=0;i<km->neigh_no;i++) energy_vertex(km->neigh[i]);
-  for(i=0;i<it->neigh_no;i++) energy_vertex(it->neigh[i]);
+/*	ts_double dbg_energy=0.0;
+  for(i=0;i<k->neigh_no;i++) {
+	dbg_energy=k->neigh[i]->energy;
+	energy_vertex(k->neigh[i]);
+	if(abs(dbg_energy-k->neigh[i]->energy)>1e-100) fatal("Energy changes!",1);
+  }
+  for(i=0;i<kp->neigh_no;i++) {
+	dbg_energy=kp->neigh[i]->energy;
+	energy_vertex(kp->neigh[i]);
+	if(abs(dbg_energy-kp->neigh[i]->energy)>1e-100) fatal("Energy changes!",1);
+  }
+  for(i=0;i<km->neigh_no;i++){
+	dbg_energy=km->neigh[i]->energy;
+	 energy_vertex(km->neigh[i]);
+	if(abs(dbg_energy-km->neigh[i]->energy)>1e-100) fatal("Energy changes!",1);
+  }
+
+  for(i=0;i<it->neigh_no;i++){
+	dbg_energy=it->neigh[i]->energy;
+	 energy_vertex(it->neigh[i]);
+	if(abs(dbg_energy-it->neigh[i]->energy)>1e-100) fatal("Energy changes!",1);
+  }
+*/
   delta_energy+=k->xk* k->energy;
   delta_energy+=kp->xk* kp->energy;
   delta_energy+=km->xk* km->energy;
   delta_energy+=it->xk* it->energy;
-//  for(i=0;i<k->neigh_no;i++) delta_energy+=k->neigh[i]->xk*k->neigh[i]->energy;
-//  for(i=0;i<kp->neigh_no;i++) delta_energy+=kp->neigh[i]->xk*kp->neigh[i]->energy;
-//  for(i=0;i<km->neigh_no;i++) delta_energy+=km->neigh[i]->xk*km->neigh[i]->energy;
-//  for(i=0;i<it->neigh_no;i++) delta_energy+=it->neigh[i]->xk*it->neigh[i]->energy;
+	//Neigbours don't change its energy.
   delta_energy-=oldenergy;
  // fprintf(stderr,"I WAS HERE! Got energy!\n");
 /* MONTE CARLO */
diff --git a/src/general.h b/src/general.h
index e7e9545..f4e5833 100644
--- a/src/general.h
+++ b/src/general.h
@@ -260,6 +260,7 @@
 
 	ts_poly_list *poly_list;
 	ts_double spring_constant;
+	ts_double pressure;
 } ts_vesicle;
 
 
diff --git a/src/initial_distribution.c b/src/initial_distribution.c
index 382750b..b8f5965 100644
--- a/src/initial_distribution.c
+++ b/src/initial_distribution.c
@@ -19,9 +19,6 @@
 	
     ts_vesicle *vesicle=init_vesicle(no_vertices,ncmax1,ncmax2,ncmax3,stepsize);
 
-//TODO: debugging only. Please remove ASAP!
-	vesicle->bending_rigidity=25.0;
-
     vesicle->nshell=nshell;
     retval = vtx_set_global_values(vesicle);
     retval = pentagonal_dipyramid_vertex_distribution(vesicle->vlist);
diff --git a/src/io.c b/src/io.c
index 8b51793..4db7f56 100644
--- a/src/io.c
+++ b/src/io.c
@@ -341,7 +341,7 @@
     long int brezveze0=1;
     long int brezveze1=1;
     long int brezveze2=1;
-    ts_double xk0=25.0, dmax=1.67,stepsize=0.15,kspring=800.0;
+    ts_double xk0=25.0, dmax=1.67,stepsize=0.15,kspring=800.0,pressure=0.0;
 	long int iter=1000, init=1000, mcsw=1000;
 
 
@@ -351,7 +351,8 @@
         CFG_SIMPLE_INT("nmono", &nmono),
         CFG_SIMPLE_FLOAT("dmax", &dmax),
         CFG_SIMPLE_FLOAT("xk0",&xk0),
-        CFG_SIMPLE_FLOAT("k_spring",&kspring),
+	CFG_SIMPLE_FLOAT("pressure",&pressure),
+	CFG_SIMPLE_FLOAT("k_spring",&kspring),
         CFG_SIMPLE_FLOAT("stepsize",&stepsize),
         CFG_SIMPLE_INT("nxmax", &ncxmax),
         CFG_SIMPLE_INT("nymax", &ncymax),
@@ -389,11 +390,15 @@
     vesicle->nshell=nshell;
     vesicle->dmax=dmax*dmax;
     vesicle->bending_rigidity=xk0;
+    vtx_set_global_values(vesicle); //copies xk0 to every vertex
+
+
     vesicle->stepsize=stepsize;
     vesicle->clist->ncmax[0]=ncxmax;
     vesicle->clist->ncmax[1]=ncymax;
     vesicle->clist->ncmax[2]=nczmax;
     vesicle->clist->max_occupancy=8;
+	vesicle->pressure=pressure/vesicle->bending_rigidity;	//all energy contributions need to be divided by bending_rigidity!
 
     cfg_free(cfg);
 	free(buf);
diff --git a/src/tape b/src/tape
index 9a44ef3..1c0d279 100644
--- a/src/tape
+++ b/src/tape
@@ -1,12 +1,18 @@
 ####### Vesicle definitions ###########
 # nshell is a number of divisions of dipyramid
 nshell=17
-# dmax is the max. bond length 
+# dmax is the max. bond length (in units l_min)
 dmax=1.7
-# bending rigidity of the membrane 
+# bending rigidity of the membrane (in units kT)
 xk0=25.0
-# max step size 
+# max step size (in units l_min)
 stepsize=0.15
+
+# Pressure calculations
+# (pswitch=1: calc. p*dV energy contribution)
+pswitch = 1
+# pressure difference: p_inside - p_outside (in units l_min^3/kT):
+pressure=0.0
 
 ####### Polymer definitions ###########
 # npoly is a number of polymers attached to npoly distinct vertices on vesicle
@@ -28,7 +34,7 @@
 #how many initial mcsweeps*inititer MC sweeps before recording to disk?
 inititer=1
 #how many records do you want on the disk iteration are there in a run?
-iterations=10000
+iterations=2000
 
 
 #shut up if we are using cluster!!!

--
Gitblit v1.9.3