Trisurf Monte Carlo simulator
Samo Penic
2016-07-11 80f2a33e4b55c7259bdb4bff66a0ce12b96edd80
src/io.c
@@ -612,11 +612,17 @@
   fprintf(fd,"Flags:\n\n");
   fprintf(fd,"--force-from-tape\t\t makes initial shape of the vesicle from tape. Ignores already existing binary dump and possible simulation results.\n");
   fprintf(fd,"--restore-from-vtk\t\t VTK's file ending with '.vtu' are preferred way to make state snapshots for restoration. With this flag the restoration of the vesicle from vtk is possible. The simulation will continue if hidden '.status' file with last iteration done is present. Otherwise it will start simulation from timestep 0.\n");
   fprintf(fd,"--reset-iteration-count\t\t starts simulation from the beginning (using binary dump or tape).\n");
   fprintf(fd,"--reset-iteration-count\t\t starts simulation from the beginning (using binary dump).\n");
   fprintf(fd,"--tape (or -t)\t\t specifies tape filename. For --force-from-tape and restoring from binary dump. Defaults to 'tape'.\n");
   fprintf(fd,"--version (or -v)\t\t Prints version information.\n");
   fprintf(fd,"--output-file (or -o)\t\t Specifies filename of .PVD file. Defaults to 'output.pvd'\n");
   fprintf(fd,"--dump-filename (or -f)\t\t specifies filename for binary dump&restore. Defaults to 'dump.bin'\n\n");
   fprintf(fd,"--dump-filename (or -f)\t\t specifies filename for binary dump&restore. Defaults to 'dump.bin'\n\n\n");
   fprintf(fd,"Examples:\n\n");
   fprintf(fd,"trisurf --force-from-tape\n");
   fprintf(fd,"trisurf --reset-iteration-count\n");
   fprintf(fd,"trisurf --restore-from-vtk filename.vtu\n");
   fprintf(fd,"\n\n");
   return TS_SUCCESS;
}
@@ -855,7 +861,7 @@
   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, "<Piece NumberOfPoints=\"%u\" NumberOfCells=\"%u\">\n",vlist->n+monono*polyno+fonono*filno, blist->n+monono*polyno+filno*(fonono-1)+vesicle->tlist->n);
    fprintf(fh,"<PointData Scalars=\"scalars\">\n<DataArray type=\"Int64\" Name=\"scalars\" format=\"ascii\">");
      for(i=0;i<vlist->n;i++){
      fprintf(fh,"%u ",vtx[i]->idx);
@@ -880,7 +886,9 @@
      }
   }
    fprintf(fh,"</DataArray>\n</PointData>\n<CellData>\n</CellData>\n<Points>\n<DataArray type=\"Float64\" Name=\"Koordinate tock\" NumberOfComponents=\"3\" format=\"ascii\">\n");
       fprintf(fh,"</DataArray>\n");
   fprintf(fh,"</PointData>\n<CellData>\n</CellData>\n<Points>\n<DataArray type=\"Float64\" Name=\"Koordinate tock\" NumberOfComponents=\"3\" format=\"ascii\">\n");
   for(i=0;i<vlist->n;i++){
      fprintf(fh,"%.17e %.17e %.17e\n",vtx[i]->x,vtx[i]->y, vtx[i]->z);
   }
@@ -931,17 +939,24 @@
      }
   }
   for(i=0;i<vesicle->tlist->n;i++){
      fprintf(fh,"%u %u %u\n", vesicle->tlist->tria[i]->vertex[0]->idx, vesicle->tlist->tria[i]->vertex[1]->idx, vesicle->tlist->tria[i]->vertex[2]->idx);
   }
    fprintf(fh,"</DataArray>\n<DataArray type=\"Int64\" Name=\"offsets\" format=\"ascii\">");
    for (i=2;i<(blist->n+monono*polyno+(fonono-1)*filno)*2+1;i+=2){
    fprintf(fh,"%u ",i);
    }
   for(j=i+1;j<i+3*(vesicle->tlist->n);j+=3){ //let's continue counting from where we left of
      fprintf(fh,"%u ", j);
   }
    fprintf(fh,"\n");
    fprintf(fh,"</DataArray>\n<DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n");
     for (i=0;i<blist->n+monono*polyno+fonono*filno;i++){
     for (i=0;i<blist->n+monono*polyno+(fonono-1)*filno;i++){
        fprintf(fh,"3 ");
    }
   for(i=0;i<vesicle->tlist->n;i++){
      fprintf(fh,"5 ");
   }
    fprintf(fh,"</DataArray>\n</Cells>\n</Piece>\n</UnstructuredGrid>\n</VTKFile>\n");
    fclose(fh);
    return TS_SUCCESS;
@@ -1050,6 +1065,7 @@
        CFG_SIMPLE_INT("nmono", &tape->nmono),
   CFG_SIMPLE_INT("nfil",&tape->nfil),
   CFG_SIMPLE_INT("nfono",&tape->nfono),
   CFG_SIMPLE_INT("internal_poly",&tape->internal_poly),
   CFG_SIMPLE_INT("R_nucleus",&tape->R_nucleus),
   CFG_SIMPLE_FLOAT("R_nucleusX",&tape->R_nucleusX),
   CFG_SIMPLE_FLOAT("R_nucleusY",&tape->R_nucleusY),