Trisurf Monte Carlo simulator
mihaf
2014-03-10 152052a93b7e7b5151c42992c79d8e3667471a3e
src/triangle.c
@@ -147,11 +147,14 @@
        //fatal("In triangle_remove_neighbour: Specified neighbour does not exist for given triangle",3);
    }
    tria->neigh_no--;
//   fprintf(stderr,"*** tria_number=%d\n",tria->neigh_no);
    tria->neigh=(ts_triangle **)realloc(tria->neigh,tria->neigh_no*sizeof(ts_triangle *));
   if(tria->neigh == NULL){
      fprintf(stderr,"Ooops: tria->neigh_no=%d\n",tria->neigh_no);
      fatal("Reallocation of memory failed during removal of vertex neighbour in triangle_remove_neighbour",100);
   }
/* we repeat the procedure for neighbour */
   j=0;
    for(i=0;i<ntria->neigh_no;i++){
        if(ntria->neigh[i]!=tria){
            ntria->neigh[j]=ntria->neigh[i];
@@ -163,8 +166,10 @@
        //fatal("In triangle_remove_neighbour: Specified neighbour does not exist for given triangle",3);
    }
    ntria->neigh_no--;
//   fprintf(stderr,"*** ntria_number=%d\n",ntria->neigh_no);
    ntria->neigh=(ts_triangle **)realloc(ntria->neigh,ntria->neigh_no*sizeof(ts_triangle *));
   if(ntria->neigh == NULL){
      fprintf(stderr,"Ooops: ntria->neigh_no=%d\n",ntria->neigh_no);
      fatal("Reallocation of memory failed during removal of vertex neighbour in triangle_remove_neighbour",100);
   }
    return TS_SUCCESS;
@@ -219,6 +224,18 @@
   tria->xnorm=tria->xnorm/xden;
   tria->ynorm=tria->ynorm/xden;
   tria->znorm=tria->znorm/xden;   
/*  Here it is an excellent point to recalculate volume of the triangle and
 *  store it into datastructure. Volume is required at least by constant volume
 *  calculation of vertex move and bondflip and spherical harmonics. */
    tria->volume=(tria->vertex[0]->x+ tria->vertex[1]->x + tria->vertex[2]->x) * tria->xnorm +
       (tria->vertex[0]->y+ tria->vertex[1]->y + tria->vertex[2]->y) * tria->ynorm +
    (tria->vertex[0]->z+ tria->vertex[1]->z + tria->vertex[2]->z) * tria->znorm;
    tria->volume=-xden*tria->volume/18.0;
/*  Also, area can be calculated in each triangle */
    tria->area=xden/2;
   return TS_SUCCESS;
}