From 86b69b3803b1b31c040cede6b47bf617561b3b81 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@fe.uni-lj.si>
Date: Tue, 01 Mar 2016 08:36:37 +0000
Subject: [PATCH] Polymeres are restored

---
 src/io.c |   29 +++++++++++++++++++++++++----
 1 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/src/io.c b/src/io.c
index acc61c3..0a6cd57 100644
--- a/src/io.c
+++ b/src/io.c
@@ -15,6 +15,7 @@
 #include <sys/types.h>
 #include <dirent.h>
 #include <errno.h>
+#include <snapshot.h>
 /** DUMP STATE TO DISK DRIVE **/
 
 ts_bool dump_state(ts_vesicle *vesicle, ts_uint iteration){
@@ -24,7 +25,7 @@
     FILE *fh=fopen(command_line_args.dump_fullfilename,"wb");
 
     /* dump vesicle */
-    fwrite(vesicle, sizeof(ts_vesicle),1,fh);
+    fwrite(vesicle, sizeof(ts_vesicle)-sizeof(ts_double),1,fh);
     /* dump vertex list */
     fwrite(vesicle->vlist, sizeof(ts_vertex_list),1,fh);
     /* dump bond list */
@@ -201,7 +202,7 @@
 /* we restore all the data from the dump */
     /* restore vesicle */
     ts_vesicle *vesicle=(ts_vesicle *)calloc(1,sizeof(ts_vesicle));
-    retval=fread(vesicle, sizeof(ts_vesicle),1,fh);
+    retval=fread(vesicle, sizeof(ts_vesicle)-sizeof(ts_double),1,fh);
 //	fprintf(stderr,"was here! %e\n",vesicle->dmax);
 
     /* restore vertex list */
@@ -454,6 +455,7 @@
            {"dump-filename", required_argument,0, 'f'},
            {"tape-options",required_argument,0,'c'},
            {"tape-template", required_argument,0,0},
+            {"dump-from-vtk",required_argument,0,0},
            {0, 0, 0, 0}
          };
        /* getopt_long stores the option index here. */
@@ -479,6 +481,9 @@
             //TODO: find a better way.
             if(strcmp(long_options[option_index].name,"tape-template")==0){
                 strcpy(command_line_args.tape_templatefull,optarg);
+            }
+            if(strcmp(long_options[option_index].name,"dump-from-vtk")==0){
+                strcpy(command_line_args.dump_from_vtk,optarg);
             }
            break;
 
@@ -820,7 +825,9 @@
 		}
 	}
 
-	fprintf(fh, "<?xml version=\"1.0\"?>\n<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" compressor=\"vtkZLibDataCompressor\">\n <UnstructuredGrid>\n");
+	fprintf(fh, "<?xml version=\"1.0\"?>\n<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" compressor=\"vtkZLibDataCompressor\">\n");
+	xml_trisurf_data(fh,vesicle);
+	fprintf(fh, " <UnstructuredGrid>\n");
     fprintf(fh, "<Piece NumberOfPoints=\"%u\" NumberOfCells=\"%u\">\n",vlist->n+monono*polyno+fonono*filno, blist->n+monono*polyno+filno*(fonono-1));
     fprintf(fh,"<PointData Scalars=\"scalars\">\n<DataArray type=\"Int64\" Name=\"scalars\" format=\"ascii\">");
    	for(i=0;i<vlist->n;i++){
@@ -993,6 +1000,20 @@
 
 
 ts_tape *parsetape(char *filename){
+	FILE *fd = fopen (filename, "r");
+	long length;
+	size_t size;
+	fseek (fd, 0, SEEK_END);
+  	length = ftell (fd);
+	fseek (fd, 0, SEEK_SET);
+	size=fread (tapetxt, 1, length, fd);
+	fclose(fd);
+	if(size);
+	ts_tape *tape=parsetapebuffer(tapetxt);
+	return tape;
+}
+
+ts_tape *parsetapebuffer(char *buffer){
     ts_tape *tape=(ts_tape *)calloc(1,sizeof(ts_tape));
     tape->multiprocessing=calloc(255,sizeof(char));
 
@@ -1031,7 +1052,7 @@
     cfg_t *cfg;    
     ts_uint retval;
     cfg = cfg_init(opts, 0);
-    retval=cfg_parse(cfg, filename);
+    retval=cfg_parse_buf(cfg, buffer);
     if(retval==CFG_FILE_ERROR){
 	fatal("No tape file.",100);
 	}

--
Gitblit v1.9.3