From d43116b7d609fa9cabae4068d037c1af3a20dae8 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Thu, 08 Aug 2019 17:42:46 +0000
Subject: [PATCH] An attempt to fix polymer error while recreating vesicle from vtu.

---
 src/poly.c                 |   14 +++++++++++++-
 src/initial_distribution.c |    4 +++-
 src/restore.c              |    9 ++++-----
 src/poly.h                 |    1 +
 4 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/src/initial_distribution.c b/src/initial_distribution.c
index 4956900..87cfb68 100644
--- a/src/initial_distribution.c
+++ b/src/initial_distribution.c
@@ -43,6 +43,8 @@
 
 	vesicle=initial_distribution_dipyramid(tape->nshell,tape->ncxmax,tape->ncymax,tape->nczmax,tape->stepsize);
     	vesicle->tape=tape;
+	vesicle->clist->dmin_interspecies = tape->dmin_interspecies*tape->dmin_interspecies;
+	vesicle->poly_list=init_poly_list(tape->npoly,tape->nmono, vesicle->vlist, vesicle);
 	set_vesicle_values_from_tape(vesicle);
 		initial_population_with_c0(vesicle,tape);
 	return vesicle;
@@ -59,7 +61,7 @@
 	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->poly_list=init_poly_list(tape->npoly,tape->nmono, vesicle->vlist, vesicle);
 	vesicle->spring_constant=tape->kspring;
 	poly_assign_spring_const(vesicle);
 
diff --git a/src/poly.c b/src/poly.c
index bcf01e5..cf416b5 100644
--- a/src/poly.c
+++ b/src/poly.c
@@ -126,7 +126,6 @@
 							m++;
 							if(m>1000) {
 								k=9999; //break also ot of the outer loop
-								printf("was here\n");
 								break;
 							}
 						}
@@ -159,6 +158,7 @@
 	ts_uint gvtxi;
 	ts_bool retval;
 	ts_double dphi,dh;
+
 	cell_occupation(vesicle); //needed for evading the membrane
 	// Grafting polymers:
 	int tries=0;
@@ -303,3 +303,15 @@
 	return TS_SUCCESS;
 }
 
+
+
+ts_poly_list *init_empty_poly_list(ts_uint n_poly, ts_uint n_mono){
+	ts_poly_list *poly_list=(ts_poly_list *)calloc(1,sizeof(ts_poly_list));
+	poly_list->poly=(ts_poly **)calloc(n_poly,sizeof(ts_poly *));
+	ts_uint i;
+	for (i=0; i<n_poly;i++){
+		poly_list->poly[i]=init_poly(n_mono, NULL);
+	}
+	poly_list->n = n_poly;
+	return poly_list;
+}
diff --git a/src/poly.h b/src/poly.h
index 33f3be8..4a5e1fd 100644
--- a/src/poly.h
+++ b/src/poly.h
@@ -19,4 +19,5 @@
 
 ts_poly *remove_poly_with_index(ts_poly_list *poly_list, ts_uint idx);
 ts_bool remove_random_polymeres(ts_poly_list *poly_list, ts_uint number);
+ts_poly_list *init_empty_poly_list(ts_uint n_poly, ts_uint n_mono);
 #endif
diff --git a/src/restore.c b/src/restore.c
index 989a87b..6e12c1e 100644
--- a/src/restore.c
+++ b/src/restore.c
@@ -79,11 +79,10 @@
 		// END Point Position data & Bonds
 	cur = cur->next;
 	}
-	
 	xmlFreeDoc(doc);
 
 //	vesicle->poly_list=init_poly_list(0, 0, vesicle->vlist, vesicle);
-
+	set_vesicle_values_from_tape(vesicle);
 	init_normal_vectors(vesicle->tlist);
 	mean_curvature_and_energy(vesicle);
 	sweep_attraction_bond_energy(vesicle);
@@ -157,7 +156,8 @@
 	//fprintf(stderr,"nvtx=%u\n",atoi((char *)nvtx));
 	//TODO: check if nvtx is in agreement with nshell from tape
 	ts_vesicle *vesicle=init_vesicle(atoi((char *)nvtx),tape->ncxmax,tape->ncymax,tape->nczmax,tape->stepsize);
-	//vesicle->poly_list=init_poly_list(atoi((char *)npoly),atoi((char *)nmono), vesicle->vlist, vesicle);
+//	vesicle->poly_list=init_poly_list(atoi((char *)npoly),atoi((char *)nmono), vesicle->vlist, vesicle);
+	vesicle->poly_list=init_empty_poly_list(atoi((char *)npoly),atoi((char *)nmono));
 	xmlFree(nvtx);
 	xmlFree(npoly);
 	xmlFree(nmono);
@@ -190,9 +190,8 @@
 	child = child->next;
 	}
 
-
 	vesicle->tape=tape;
-	set_vesicle_values_from_tape(vesicle);
+//	set_vesicle_values_from_tape(vesicle);
 	return vesicle;
 }
 

--
Gitblit v1.9.3