From 8c91d2bcad7df7c647f1379483673183329ddfe8 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@fe.uni-lj.si> Date: Tue, 05 Jul 2016 10:53:31 +0000 Subject: [PATCH] Fixed some bugs in cluster.c, added a line in cluster.h --- src/io.c | 88 ++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 80 insertions(+), 8 deletions(-) diff --git a/src/io.c b/src/io.c index 7cb0d62..7066657 100644 --- a/src/io.c +++ b/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,8 +861,8 @@ 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\">"); + 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=\"vertices_idx\">\n<DataArray type=\"Int64\" Name=\"vertices_idx\" format=\"ascii\">"); for(i=0;i<vlist->n;i++){ fprintf(fh,"%u ",vtx[i]->idx); } @@ -880,7 +886,63 @@ } } - 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"); + + //here comes additional data as needed. Currently only spontaneous curvature + fprintf(fh,"<DataArray type=\"Float64\" Name=\"spontaneous_curvature\" format=\"ascii\">"); + for(i=0;i<vlist->n;i++){ + fprintf(fh,"%.17e ",vtx[i]->c); + } + //polymeres + if(poly){ + poly_idx=vlist->n; + for(i=0;i<vesicle->poly_list->n;i++){ + for(j=0;j<vesicle->poly_list->poly[i]->vlist->n;j++,poly_idx++){ + fprintf(fh,"%.17e ", vesicle->poly_list->poly[i]->vlist->vtx[j]->c); + } + } + } + //filaments + if(fil){ + poly_idx=vlist->n+monono*polyno; + for(i=0;i<vesicle->filament_list->n;i++){ + for(j=0;j<vesicle->filament_list->poly[i]->vlist->n;j++,poly_idx++){ + // fprintf(stderr,"was here\n"); + fprintf(fh,"%.17e ", vesicle->filament_list->poly[i]->vlist->vtx[j]->c); + } + } + } + fprintf(fh,"</DataArray>\n"); + + //here comes additional data. Energy! + fprintf(fh,"<DataArray type=\"Float64\" Name=\"bending_energy\" format=\"ascii\">"); + for(i=0;i<vlist->n;i++){ + fprintf(fh,"%.17e ",vtx[i]->energy*vtx[i]->xk); + } + //polymeres + if(poly){ + poly_idx=vlist->n; + for(i=0;i<vesicle->poly_list->n;i++){ + for(j=0;j<vesicle->poly_list->poly[i]->vlist->n;j++,poly_idx++){ + fprintf(fh,"%.17e ", vesicle->poly_list->poly[i]->vlist->vtx[j]->energy* vesicle->poly_list->poly[i]->k); + } + } + } + //filaments + if(fil){ + poly_idx=vlist->n+monono*polyno; + for(i=0;i<vesicle->filament_list->n;i++){ + for(j=0;j<vesicle->filament_list->poly[i]->vlist->n;j++,poly_idx++){ + // fprintf(stderr,"was here\n"); + fprintf(fh,"%.17e ", vesicle->filament_list->poly[i]->vlist->vtx[j]->energy* vesicle->filament_list->poly[i]->k); + } + } + } + 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 +993,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; @@ -1077,6 +1146,9 @@ CFG_SIMPLE_INT("cluster_nodes",&tape->brezveze1), CFG_SIMPLE_INT("distributed_processes",&tape->brezveze2), CFG_SIMPLE_INT("spherical_harmonics_coefficients",&tape->shc), + CFG_SIMPLE_INT("number_of_vertices_with_c0", &tape->number_of_vertices_with_c0), + CFG_SIMPLE_FLOAT("c0",&tape->c0), + CFG_SIMPLE_FLOAT("w",&tape->w), CFG_END() }; cfg_t *cfg; -- Gitblit v1.9.3