From bd826de2f539f2e48c8c01d2d7f9f34c7e97104a Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Fri, 13 May 2016 07:43:27 +0000
Subject: [PATCH] Fix in trisurf output, inhibiting print of successful reconstruction. Multiple fixes and improvements in python module. Added symlinking of tapes into the running directories and dumping tapes from snapshots into tape files.

---
 src/initial_distribution.c |   58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 55 insertions(+), 3 deletions(-)

diff --git a/src/initial_distribution.c b/src/initial_distribution.c
index 7601f13..7dfd23d 100644
--- a/src/initial_distribution.c
+++ b/src/initial_distribution.c
@@ -1,3 +1,4 @@
+/* vim: set ts=4 sts=4 sw=4 noet : */
 #include<stdlib.h>
 #include<math.h>
 #include<stdio.h>
@@ -11,6 +12,8 @@
 #include "energy.h"
 #include "poly.h"
 #include "io.h"
+#include "sh.h"
+#include "shcomplex.h"
 
 ts_vesicle *initial_distribution_dipyramid(ts_uint nshell, ts_uint ncmax1, ts_uint ncmax2, ts_uint ncmax3, ts_double stepsize){
 	ts_fprintf(stdout,"Starting initial_distribution on vesicle with %u shells!...\n",nshell);
@@ -37,10 +40,54 @@
 
 ts_vesicle *create_vesicle_from_tape(ts_tape *tape){
 	ts_vesicle *vesicle;
+
 	vesicle=initial_distribution_dipyramid(tape->nshell,tape->ncxmax,tape->ncymax,tape->nczmax,tape->stepsize);
-	vesicle->poly_list=init_poly_list(tape->npoly,tape->nmono, vesicle->vlist);
+    	vesicle->tape=tape;
+	set_vesicle_values_from_tape(vesicle);
+	return vesicle;
+}
+
+ts_bool set_vesicle_values_from_tape(ts_vesicle *vesicle){
+	// Nucleus:
+	ts_vertex *vtx;
+	ts_tape *tape=vesicle->tape;
+	vesicle->R_nucleus=tape->R_nucleus*tape->R_nucleus;
+
+	vesicle->clist->dmin_interspecies = tape->dmin_interspecies*tape->dmin_interspecies;
+
+	//Initialize grafted polymers (brush):
+	vesicle->poly_list=init_poly_list(tape->npoly,tape->nmono, vesicle->vlist, vesicle);
 	vesicle->spring_constant=tape->kspring;
 	poly_assign_spring_const(vesicle);
+
+	//Initialize filaments (polymers inside the vesicle):
+	vesicle->filament_list=init_poly_list(tape->nfil,tape->nfono, NULL, vesicle);
+	poly_assign_filament_xi(vesicle,tape);
+
+	ts_uint i,j;
+	for(i=0;i<vesicle->filament_list->n;i++){
+		for(j=0;j<vesicle->filament_list->poly[i]->blist->n;j++){
+			bond_vector(vesicle->filament_list->poly[i]->blist->bond[j]);
+			vesicle->filament_list->poly[i]->blist->bond[j]->bond_length = sqrt(vtx_distance_sq(vesicle->filament_list->poly[i]->blist->bond[j]->vtx1,vesicle->filament_list->poly[i]->blist->bond[j]->vtx2));
+		}
+	}
+
+	for(i=0;i<vesicle->filament_list->n;i++){
+		for(j=0;j<vesicle->filament_list->poly[i]->vlist->n;j++){
+			vtx = vesicle->filament_list->poly[i]->vlist->vtx[j];
+			if(vtx->bond_no == 2){
+			vtx->energy = -(vtx->bond[0]->x*vtx->bond[1]->x + vtx->bond[0]->y*vtx->bond[1]->y + vtx->bond[0]->z*vtx->bond[1]->z)/vtx->bond[0]->bond_length/vtx->bond[1]->bond_length;
+			}
+		}
+	}
+
+	for(i=0;i<vesicle->filament_list->n;i++){
+		vertex_list_assign_id(vesicle->filament_list->poly[i]->vlist,TS_ID_FILAMENT);
+	}
+
+//	vesicle->spring_constant=tape->kspring;
+//	poly_assign_spring_const(vesicle);
+
 	
 	vesicle->nshell=tape->nshell;
 	vesicle->dmax=tape->dmax*tape->dmax; /* dmax^2 in the vesicle dmax variable */
@@ -55,8 +102,13 @@
 
 	vesicle->pressure= tape->pressure;
 	vesicle->pswitch=tape->pswitch;
-
-    return vesicle;
+    if(tape->shc>0){
+	    vesicle->sphHarmonics=complex_sph_init(vesicle->vlist,tape->shc);
+    }
+    else {
+        vesicle->sphHarmonics=NULL;
+    }
+    return TS_SUCCESS;
 
 }
 

--
Gitblit v1.9.3