Trisurf Monte Carlo simulator
Samo Penic
2013-11-27 0652ee2715994b48a9bbfd1132bf0b65ad206289
src/spherical_trisurf.c
@@ -19,11 +19,14 @@
*/
ts_bool saveAvgUlm2(ts_vesicle *vesicle);
int main(int argv, char *argc[]){
ts_uint i,j;
ts_uint i,j,k;
ts_vesicle *vesicle;
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;
@@ -32,6 +35,22 @@
vesicle->bending_rigidity=25.0;
//fprintf(stderr,"xk=%f",vesicle->bending_rigidity);
   centermass(vesicle);
cell_occupation(vesicle);
//test if the structure is internally organized into cells correctly
ts_uint cind;
for(i=0;i<vesicle->vlist->n;i++){
   cind=vertex_self_avoidance(vesicle, vesicle->vlist->vtx[i]);
   if(vesicle->clist->cell[cind]==vesicle->vlist->vtx[i]->cell){
      //fprintf(stdout,"(T) Idx match!\n");
   } else {
      fprintf(stderr,"(T) ***** Idx don't match!\n");
   }
}
//end test
vesicle->sphHarmonics=sph_init(vesicle->vlist, 21);
vesicle_volume(vesicle);
@@ -41,27 +60,40 @@
calculateYlmi(vesicle);
calculateUlm(vesicle);
for(i=0;i<10;i++){
   centermass(vesicle);
//preloop:
for(i=0;i<1000;i++){
   cell_occupation(vesicle);
   for(j=0;j<1000;j++){
      single_timestep(vesicle);
   }   
vesicle_volume(vesicle);
r0=getR0(vesicle);
   centermass(vesicle);
   fprintf(stderr, "Preloop %d completed.\n",i+1);
}
preparationSh(vesicle,r0);
calculateYlmi(vesicle);
calculateUlm(vesicle);
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);
      }
      centermass(vesicle);
   }
    vesicle_volume(vesicle);
    r0=getR0(vesicle);
storeUlm2(vesicle);
saveAvgUlm2(vesicle);
    preparationSh(vesicle,r0);
    calculateYlmi(vesicle);
    calculateUlm(vesicle);
    storeUlm2(vesicle);
    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);
}
write_master_xml_file("test.pvd");
write_dout_fcompat_file(vesicle,"dout");
vesicle_free(vesicle);
@@ -89,6 +121,7 @@
      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;