From 42641cde38cfd1d27a2031604cc1397b5bd2849b Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Fri, 21 Mar 2014 20:57:24 +0000
Subject: [PATCH] Merge with trout-rnc.

---
 src/triangle.c |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/src/triangle.c b/src/triangle.c
index bcd074b..311e138 100644
--- a/src/triangle.c
+++ b/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;
 }
 

--
Gitblit v1.9.3