From 3d0247677949505858b0b947fc3b216bb2a7bc80 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Fri, 13 May 2016 19:09:59 +0000 Subject: [PATCH] Added many fixes for reruning the simulations, starting from tapes, added Completed status, etc. --- src/io.c | 26 ++++++++++++++++++++++---- 1 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/io.c b/src/io.c index f913762..51ef836 100644 --- a/src/io.c +++ b/src/io.c @@ -1,3 +1,4 @@ +/* vim: set ts=4 sts=4 sw=4 noet : */ #include "general.h" #include<stdio.h> #include "io.h" @@ -15,6 +16,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){ @@ -454,7 +456,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}, + {"restore-from-vtk",required_argument,0,0}, {0, 0, 0, 0} }; /* getopt_long stores the option index here. */ @@ -481,7 +483,7 @@ 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){ + if(strcmp(long_options[option_index].name,"restore-from-vtk")==0){ strcpy(command_line_args.dump_from_vtk,optarg); } break; @@ -824,7 +826,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++){ @@ -997,6 +1001,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)); @@ -1035,7 +1053,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