Trisurf Monte Carlo simulator
Samo Penic
2019-09-25 d5d78a49c6b51fb1f6f0661d063034eaf65e02f7
src/spherical_trisurf.c
@@ -1,3 +1,4 @@
/* vim: set ts=4 sts=4 sw=4 noet : */
#include<stdio.h>
#include<math.h>
#include "general.h"
@@ -24,6 +25,9 @@
ts_double r0;
vesicle=initial_distribution_dipyramid(17,60,60,60,0.15);
//parsetape(vesicle,&i);
//similar to nmax in fortran code
ts_uint nmax;
//these four must come from parsetype!
vesicle->dmax=1.67*1.67;
@@ -57,12 +61,23 @@
calculateYlmi(vesicle);
calculateUlm(vesicle);
//preloop:
ts_double vmsr, bfsr;
for(i=0;i<1000;i++){
   cell_occupation(vesicle);
   for(j=0;j<1000;j++){
      single_timestep(vesicle, &vmsr, &bfsr);
   }
   centermass(vesicle);
   fprintf(stderr, "Preloop %d completed.\n",i+1);
}
for(i=0;i<1;i++){
   for(j=0;j<20;j++){
nmax=1000;
for(i=0;i<nmax;i++){
   for(j=0;j<200;j++){
      cell_occupation(vesicle);
      for(k=0;k<5;k++){
      single_timestep(vesicle);
      single_timestep(vesicle, &vmsr, &bfsr);
      }
      centermass(vesicle);
   }   
@@ -77,7 +92,7 @@
    saveAvgUlm2(vesicle);
   write_vertex_xml_file(vesicle,i);
   fprintf(stderr, "Loop %d completed.\n",i+1);
   fprintf(stderr, "Loop %d out of %d completed.\n",i+1,nmax);
}
@@ -90,26 +105,3 @@
ts_bool saveAvgUlm2(ts_vesicle *vesicle){
   FILE *fh;
   fh=fopen("sph2out.dat", "w");
   if(fh==NULL){
      err("Cannot open file %s for writing");
      return TS_FAIL;
   }
   ts_spharm *sph=vesicle->sphHarmonics;
   ts_int i,j;
   fprintf(fh,"l,\tm,\tulm^2avg\n");
   for(i=0;i<sph->l;i++){
          for(j=0;j<2*i+1;j++){
      fprintf(fh,"%d,\t%d,\t%e\n", i, j-i, sph->sumUlm2[i][j]/(ts_double)sph->N);
          }
    fprintf(fh,"\n");
   }
   fclose(fh);
   return TS_SUCCESS;
}