Trisurf Monte Carlo simulator
Samo Penic
2016-07-05 0334070e91966e5bb11b34b462491353a188e128
src/tspoststat.c
@@ -18,6 +18,7 @@
#include "shcomplex.h"
#include "dumpstate.h"
#include "restore.h"
#include "cluster.h"
#include <string.h>
#include <getopt.h>
#include <sys/stat.h>
@@ -27,7 +28,7 @@
#include <snapshot.h>
#include<gsl/gsl_complex.h>
#include<gsl/gsl_complex_math.h>
#include<stdio.h>
ts_vesicle *restoreVesicle(char *filename){
   ts_vesicle *vesicle = parseDump(filename);
@@ -62,6 +63,38 @@
   }
   return cnt;
}
ts_bool write_histogram_data(ts_uint timestep_no, ts_vesicle *vesicle){
   ts_cluster_list *cstlist=init_cluster_list();
   clusterize_vesicle(vesicle,cstlist);
   //printf("No clusters=%d\n",cstlist->n);
   int k,i,cnt;
   int max_nvtx=0;
   char filename[255];
   sprintf(filename,"histogram_%.6u.csv",timestep_no);
   FILE *fd=fopen(filename,"w");
   fprintf(fd,"Number_of_vertices_in cluster Number_of_clusters\n");
   for(k=0;k<cstlist->n;k++)
      if(cstlist->cluster[k]->nvtx>max_nvtx) max_nvtx=cstlist->cluster[k]->nvtx;
   //printf("Max. number of vertices in cluster: %d\n",max_nvtx);
   for(i=1;i<=max_nvtx;i++){
      cnt=0;
      for(k=0;k<cstlist->n;k++)
         if(cstlist->cluster[k]->nvtx==i) cnt++;
      fprintf(fd,"%d %d\n",i,cnt);
   }
   //for(k=0;k<cstlist->n;k++){
//      printf("*Cluster %d has %d vertices\n",k,cstlist->cluster[k]->nvtx);
//   }
   fclose(fd);
   cluster_list_free(cstlist);
   return TS_SUCCESS;
}
int main(){
   ts_vesicle *vesicle;
@@ -102,7 +135,7 @@
         gyration_eigen(vesicle,&l1,&l2,&l3);
         fprintf(stdout,"%d %.17e %.17e %.17e %.17e %.17e %.17e\n",atoi(number),vesicle->volume, vesicle->area,l1,l2,l3, (ts_double)count_bonds_with_energy(vesicle->blist)/(ts_double)vesicle->blist->n),
                       tstep++;
         write_histogram_data(atoi(number), vesicle);
                    free(number);
         tape_free(vesicle->tape);
         vesicle_free(vesicle);