From 86f5e72cbecb70197e77fb5e411874d6b015ebdd Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Thu, 06 Mar 2014 08:45:36 +0000
Subject: [PATCH] Dump and restore complete and debugged. Still, use with caution

---
 src/io.c |   26 +++++++++++++++++++-------
 1 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/src/io.c b/src/io.c
index 262e482..547c51c 100644
--- a/src/io.c
+++ b/src/io.c
@@ -22,7 +22,7 @@
     FILE *fh=fopen("dump.bin","wb");
 
     /* dump vesicle */
-    fwrite(vesicle, sizeof(vesicle),1,fh);
+    fwrite(vesicle, sizeof(ts_vesicle),1,fh);
     /* dump vertex list */
     fwrite(vesicle->vlist, sizeof(ts_vertex_list),1,fh);
     /* dump bond list */
@@ -127,6 +127,8 @@
         poly_list->poly->bond
 */
 
+	fwrite(vesicle->clist, sizeof(ts_cell_list),1,  fh);
+
     fclose(fh);
     return TS_SUCCESS;
 }
@@ -142,7 +144,9 @@
 /* we restore all the data from the dump */
     /* restore vesicle */
     ts_vesicle *vesicle=(ts_vesicle *)calloc(1,sizeof(ts_vesicle));
-    retval=fread(vesicle, sizeof(vesicle),1,fh);
+    retval=fread(vesicle, sizeof(ts_vesicle),1,fh);
+//	fprintf(stderr,"was here! %e\n",vesicle->dmax);
+
     /* restore vertex list */
     vesicle->vlist=(ts_vertex_list *)malloc(sizeof(ts_vertex_list));
     retval=fread(vesicle->vlist, sizeof(ts_vertex_list),1,fh);
@@ -170,11 +174,13 @@
     for(i=0;i<vesicle->tlist->n;i++){
         vesicle->tlist->tria[i]=(ts_triangle *)malloc(sizeof(ts_triangle));
 }
-
-  /*restore vertices*/
+/* prerequisity. Vertices must be malloced before vertexes are recreated */
     vesicle->vlist->vtx=(ts_vertex **)calloc(vesicle->vlist->n,sizeof(ts_vertex *));
-    for(i=0;i<vesicle->vlist->n;i++){
+ for(i=0;i<vesicle->vlist->n;i++){
         vesicle->vlist->vtx[i]=(ts_vertex *)malloc(sizeof(ts_vertex));
+ }
+  /*restore vertices*/
+    for(i=0;i<vesicle->vlist->n;i++){
         retval=fread(vesicle->vlist->vtx[i],sizeof(ts_vertex),1,fh);
         /*restore neigh, bond, tristar. Ignoring cell */
         vesicle->vlist->vtx[i]->neigh=(ts_vertex **)calloc(vesicle->vlist->vtx[i]->neigh_no, sizeof(ts_vertex *));
@@ -298,8 +304,14 @@
         }
     }
 
-  
-
+// recreating space for cells // 
+	vesicle->clist=(ts_cell_list *)malloc(sizeof(ts_cell_list));
+	retval=fread(vesicle->clist, sizeof(ts_cell_list), 1,fh); 
+	vesicle->clist->cell=(ts_cell **)malloc(sizeof(ts_cell *)*vesicle->clist->ncmax[0]*vesicle->clist->ncmax[1]*vesicle->clist->ncmax[2]);
+	for(i=0;i<vesicle->clist->ncmax[0]*vesicle->clist->ncmax[1]*vesicle->clist->ncmax[2];i++){
+        	vesicle->clist->cell[i]=(ts_cell *)calloc(1,sizeof(ts_cell));
+        	vesicle->clist->cell[i]->idx=i+1; // We enumerate cells! Probably never required!
+    	}
 
     if(retval); 
     fclose(fh);

--
Gitblit v1.9.3