Trisurf Monte Carlo simulator
Samo Penic
2015-10-06 b452d7494b80d355809bea9cefb53a8b8a15202d
src/io.c
@@ -21,10 +21,10 @@
    /* save current state with wrong pointers. Will fix that later */
    ts_uint i,j,k;
    FILE *fh=fopen("dump.bin","wb");
    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 */
@@ -180,10 +180,10 @@
/** RESTORE DUMP FROM DISK **/
ts_vesicle *restore_state(ts_uint *iteration){
    ts_uint i,j,k;
    FILE *fh=fopen("dump.bin","rb");
    FILE *fh=fopen(command_line_args.dump_fullfilename,"rb");
    struct stat sb;
    if (stat("dump.bin", &sb) == -1) {
    if (stat(command_line_args.dump_fullfilename, &sb) == -1) {
        //dump file does not exist.
        return NULL;
    }
@@ -201,7 +201,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 */
@@ -418,7 +418,7 @@
                vesicle->filament_list->poly[i]->blist->bond[j]->vtx2=vesicle->filament_list->poly[i]->vlist->vtx[idx];
        }
    }
    vesicle->tape=parsetape("tape");
    vesicle->tape=parsetape(command_line_args.tape_fullfilename);
// recreating space for cells // 
    vesicle->clist=init_cell_list(vesicle->tape->ncxmax, vesicle->tape->ncymax, vesicle->tape->nczmax, vesicle->tape->stepsize);
   vesicle->clist->max_occupancy=8;
@@ -439,6 +439,7 @@
    sprintf(command_line_args.output_fullfilename,"output.pvd");
    sprintf(command_line_args.dump_fullfilename,"dump.bin");
    sprintf(command_line_args.tape_fullfilename,"tape");
    sprintf(command_line_args.tape_templatefull,"./tape");
            FILE *file;
    
while (1)
@@ -452,6 +453,8 @@
           {"directory",  required_argument, 0, 'd'},
           {"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. */
@@ -470,10 +473,17 @@
           /* If this option set a flag, do nothing else now. */
           if (long_options[option_index].flag != 0)
             break;
           printf ("option %s", long_options[option_index].name);
/*           printf ("option %s", long_options[option_index].name);
           if (optarg)
             printf (" with arg %s", optarg);
           printf ("\n");
             printf (" with arg %s", optarg);
           printf ("\n"); */
            //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;
         case 'c':
@@ -534,6 +544,7 @@
    if ((file = fopen(buffer, "w")) == NULL) {
                fprintf(stderr,"Could not create output file %s!\n", buffer);
                fatal("Please specify correct output file or check permissions of the file",1);
                //there is a tape template. make a copy into desired directory
                
            } else {
                fclose(file);
@@ -544,8 +555,15 @@
    strcpy(buffer,command_line_args.path);
    strcat(buffer,command_line_args.tape_fullfilename);
    if (stat(buffer, &sb) == -1) {
                ts_fprintf(stderr,"Tape '%s' does not exist!\n",buffer);
                fatal("Please select correct tape or check permissions of the file",1);
                //tape does not exist. does tape template exist?
                if(stat(command_line_args.tape_templatefull, &sb)==-1){
                    ts_fprintf(stderr,"Tape '%s' does not exist and no tape template was specified (or does not exist)!\n",buffer);
                    fatal("Please select correct tape or check permissions of the file",1);
                } else {
                    //tape template found
                    fatal("Samo did not program template copy yet",1);
                }
            } else {
                strcpy(command_line_args.tape_fullfilename,buffer);
            }
@@ -573,7 +591,6 @@
    return TS_SUCCESS;
}
@@ -745,7 +762,7 @@
        }
   fprintf(fh,"<?xml version=\"1.0\"?>\n<VTKFile type=\"Collection\" version=\"0.1\" byte_order=\"LittleEndian\" compressor=\"vtkZLibDataCompressor\">\n<Collection>");
   DIR *dir = opendir(".");
   DIR *dir = opendir(command_line_args.path);
   if(dir){
      struct dirent *ent;
        tstep=0;
@@ -774,10 +791,13 @@
   ts_bond_list *blist=vesicle->blist;
   ts_vertex **vtx=vlist->vtx;
    ts_uint i,j;
       char filename[255];
       char filename[10000];
        char just_name[255];
   FILE *fh;
        strcpy(filename,command_line_args.path);
       sprintf(just_name,"timestep_%.6u.vtu",timestepno);
        strcat(filename,just_name);
       sprintf(filename,"timestep_%.6u.vtu",timestepno);
   fh=fopen(filename, "w");
   if(fh==NULL){
      err("Cannot open file %s for writing");
@@ -992,6 +1012,7 @@
        CFG_SIMPLE_FLOAT("xk0",&tape->xk0),
   CFG_SIMPLE_INT("pswitch",&tape->pswitch),
   CFG_SIMPLE_INT("constvolswitch",&tape->constvolswitch),
   CFG_SIMPLE_INT("constareaswitch",&tape->constareaswitch),
   CFG_SIMPLE_FLOAT("constvolprecision",&tape->constvolprecision),
   CFG_SIMPLE_FLOAT("pressure",&tape->pressure),
   CFG_SIMPLE_FLOAT("k_spring",&tape->kspring),