Trisurf Monte Carlo simulator
Samo Penic
2019-03-09 60c2b879f26c5f008af0df7d7f159d33077225ac
src/poly.c
@@ -135,7 +135,7 @@
               k++;
               if(k>1000){
                  //undo changes to the cell
                  for(l=0;l<j-1;l++){
                  for(l=0;l<j;l++){
                     cellidx=vertex_self_avoidance(vesicle, poly_list->poly[i]->vlist->vtx[l]);
                     cell_remove_vertex(vesicle->clist->cell[cellidx],poly_list->poly[i]->vlist->vtx[l]);
                  }
@@ -161,9 +161,9 @@
   ts_double dphi,dh;
   cell_occupation(vesicle); //needed for evading the membrane
   // Grafting polymers:
   int tries=0;
   if (vlist!=NULL){
      if (n_poly > vlist->n){fatal("Number of polymers larger than numbero f vertices on a vesicle.",310);}
      while(i<n_poly){
         gvtxi = rand() % vlist->n;
         if (vlist->vtx[gvtxi]->grafted_poly == NULL){
@@ -171,9 +171,15 @@
            retval=poly_initial_distribution(poly_list, i, vesicle);
            if(retval==TS_FAIL){
               ts_fprintf(stdout,"Found new potential grafting vertex %d for poly %d\n",gvtxi,i);
               poly_free(poly_list->poly[i]);
               tries++;
            }
            else {
               tries=0;
               i++;
            }
            if(tries>5000){
               fatal("Cannot find space for inner polymeres",1001);
            }
         }
      }
@@ -236,9 +242,9 @@
ts_bool poly_free(ts_poly *poly){
   if (poly->grafted_vtx!=NULL){
      poly->grafted_vtx->grafted_poly=NULL;
   }
//   if (poly->grafted_vtx!=NULL){
//      poly->grafted_vtx->grafted_poly=NULL;
//   }
   vtx_list_free(poly->vlist);
   bond_list_free(poly->blist);
   free(poly);
@@ -248,8 +254,9 @@
ts_bool poly_list_free(ts_poly_list *poly_list){
   ts_uint i;
   //fprintf(stderr,"no. of polys=%d\n", poly_list->n);
   for(i=0;i<poly_list->n;i++){
   //   fprintf(stderr,"%d poly address in mem=%ld\n",i+1,(long)&(poly_list->poly[i]));
      poly_free(poly_list->poly[i]);
   }
   free(poly_list->poly);