From 620ba72765eda244ca3f3806b8ad709929e74b3c Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Thu, 21 Jun 2018 10:50:23 +0000
Subject: [PATCH] Isak's proposal for stretching energy calculation,  take 1

---
 src/vertexmove.c |   25 +++++++++++++++++++------
 1 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/vertexmove.c b/src/vertexmove.c
index 45a4b33..1d5d7fa 100644
--- a/src/vertexmove.c
+++ b/src/vertexmove.c
@@ -22,6 +22,7 @@
     ts_bool retval; 
     ts_uint cellidx; 
     ts_double delta_energy, delta_energy_cv,oenergy,dvol=0.0, darea=0.0, dstretchenergy=0.0;
+    ts_double temp_area=0.0; //for stretching
     ts_double costheta,sintheta,phi,r;
 	//This will hold all the information of vtx and its neighbours
 	ts_vertex backupvtx[20], *constvol_vtx_moved=NULL, *constvol_vtx_backup=NULL;
@@ -115,7 +116,13 @@
     }
 	//stretching energy 1 of 3
 	if(vesicle->tape->stretchswitch==1){
-		for(i=0;i<vtx->tristar_no;i++) dstretchenergy-=vtx->tristar[i]->energy;
+		temp_area=vesicle->area;
+		dstretchenergy-=stretchenergy2(vesicle->area,vesicle->tlist->a0*vesicle->tlist->n);
+		for(i=0;i<vtx->tristar_no;i++){
+			temp_area-=vtx->tristar[i]->area;
+		}
+		//0.5*vesicle->tape->xkA0*pow((vesicle->area-vesicle->tlist->a0*vesicle->tlist->n),2)/(vesicle->tlist->a0*vesicle->tlist->n);
+		//for(i=0;i<vtx->tristar_no;i++) dstretchenergy-=vtx->tristar[i]->energy;
 	}
     delta_energy=0;
     
@@ -197,10 +204,12 @@
 
 	//stretching energy 2 of 3
 	if(vesicle->tape->stretchswitch==1){
-		for(i=0;i<vtx->tristar_no;i++){ 
-			stretchenergy(vesicle, vtx->tristar[i]);
-			dstretchenergy+=vtx->tristar[i]->energy;
+		for(i=0;i<vtx->tristar_no;i++){
+			temp_area+=vtx->tristar[i]->area; 
 			}
+		dstretchenergy+=stretchenergy2(temp_area,vesicle->tlist->a0*vesicle->tlist->n);
+		dstretchenergy=0.5*vesicle->tape->xkA0*dstretchenergy;
+		
 	}
 
 	delta_energy+=dstretchenergy;	
@@ -235,13 +244,13 @@
 	
     //update the normals of triangles that share bead i.
    for(i=0;i<vtx->tristar_no;i++) triangle_normal_vector(vtx->tristar[i]);
-	//stretching energy 3 of 3
+/*	//stretching energy 3 of 3
 	if(vesicle->tape->stretchswitch==1){
 		for(i=0;i<vtx->tristar_no;i++){ 
 			stretchenergy(vesicle,vtx->tristar[i]);
 			}
 	}
-
+*/
 //    fprintf(stderr, "before vtx(x,y,z)=%e,%e,%e\n",constvol_vtx_moved->x, constvol_vtx_moved->y, constvol_vtx_moved->z);
     if(vesicle->tape->constvolswitch == 1){
         constvolumerestore(constvol_vtx_moved,constvol_vtx_backup);
@@ -272,6 +281,10 @@
     if(vesicle->tape->constareaswitch==2){
         vesicle->area+=darea;
     }
+	//stretching energy 3 of 3
+	if(vesicle->tape->stretchswitch==1){
+		vesicle->area=temp_area;
+	}
 //	if(oldcellidx);
     //END MONTE CARLOOOOOOO
 //    vesicle_volume(vesicle);

--
Gitblit v1.9.3