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