From 41a0355002fda513dbf8d878b6793e1f21a20ef1 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Thu, 23 Feb 2012 14:37:22 +0000
Subject: [PATCH] triangle data removed

---
 src/main.c                 |    8 -
 src/timestep.c             |    2 
 src/io.c                   |   13 +-
 src/energy.c               |    6 
 src/initial_distribution.c |   45 +++++-----
 src/triangle.h             |    1 
 src/general.h              |   12 --
 src/frame.c                |    2 
 src/triangle.c             |   95 +++++++++--------------
 9 files changed, 77 insertions(+), 107 deletions(-)

diff --git a/src/energy.c b/src/energy.c
index 4f37474..97e7315 100644
--- a/src/energy.c
+++ b/src/energy.c
@@ -89,9 +89,9 @@
         xh+=tot*(j->data->x - data->x);
         yh+=tot*(j->data->y - data->y);
         zh+=tot*(j->data->z - data->z);
-        txn+=jt->data->xnorm;
-        tyn+=jt->data->ynorm;
-        tzn+=jt->data->znorm;
+        txn+=jt->xnorm;
+        tyn+=jt->ynorm;
+        tzn+=jt->znorm;
     }
     
     h=xh*xh+yh*yh+zh*zh;
diff --git a/src/frame.c b/src/frame.c
index aa3c6e5..faa1db8 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -52,5 +52,7 @@
     }
 
 */
+	if(dcell);
+	if(shift);
     return TS_SUCCESS;
 }
diff --git a/src/general.h b/src/general.h
index 8bfdf73..b90dcbc 100644
--- a/src/general.h
+++ b/src/general.h
@@ -170,22 +170,14 @@
 };
 typedef struct ts_bond_list ts_bond_list;
 
-/** ts_triangle_data is a structure that describes a triangle */
-struct ts_triangle_data {
-	ts_uint idx;
+struct ts_triangle {
+    ts_uint idx;
 	ts_vertex *vertex[3];
 	ts_uint neigh_no;
 	struct ts_triangle **neigh;
 	ts_double xnorm;
 	ts_double ynorm;
 	ts_double znorm;
-	
-};
-typedef struct ts_triangle_data ts_triangle_data;
-
-struct ts_triangle {
-    ts_uint idx;
-    ts_triangle_data *data;
 };
 typedef struct ts_triangle ts_triangle;
 
diff --git a/src/initial_distribution.c b/src/initial_distribution.c
index a88014b..0f59aec 100644
--- a/src/initial_distribution.c
+++ b/src/initial_distribution.c
@@ -28,6 +28,7 @@
     retval = init_normal_vectors(vesicle->tlist);
     retval = mean_curvature_and_energy(vesicle);
  ts_fprintf(stderr,"initial_distribution finished!\n");
+	if(retval);
 	return vesicle;
 } 
 
@@ -249,7 +250,7 @@
 	for(i=0;i<tlist->n;i++){
         k=0;
 		for(j=0;j<3;j++){
-			if(tlist->tria[i]->data->vertex[j]!=NULL)
+			if(tlist->tria[i]->vertex[j]!=NULL)
             k++;
 		}
             if(k!=3){
@@ -273,14 +274,14 @@
     ts_triangle **tria=tlist->tria -1;
     nobo=0;
     for(i=1;i<=tlist->n;i++){
-        i1=tria[i]->data->vertex[0]; 
-        i2=tria[i]->data->vertex[1]; 
-        i3=tria[i]->data->vertex[2]; 
+        i1=tria[i]->vertex[0]; 
+        i2=tria[i]->vertex[1]; 
+        i3=tria[i]->vertex[2]; 
         for(j=1;j<=tlist->n;j++){
             if(j==i) continue;
-            j1=tria[j]->data->vertex[0]; 
-            j2=tria[j]->data->vertex[1]; 
-            j3=tria[j]->data->vertex[2]; 
+            j1=tria[j]->vertex[0]; 
+            j2=tria[j]->vertex[1]; 
+            j3=tria[j]->vertex[2]; 
             if((i1==j1 && i3==j2) || (i1==j2 && i3==j3) || (i1==j3 && i3==j1)){
                     triangle_add_neighbour(tria[i],tria[j]);
                     nobo++;
@@ -288,14 +289,14 @@
         }
     }
     for(i=1;i<=tlist->n;i++){
-        i1=tria[i]->data->vertex[0]; 
-        i2=tria[i]->data->vertex[1]; 
-        i3=tria[i]->data->vertex[2]; 
+        i1=tria[i]->vertex[0]; 
+        i2=tria[i]->vertex[1]; 
+        i3=tria[i]->vertex[2]; 
         for(j=1;j<=tlist->n;j++){
             if(j==i) continue;
-            j1=tria[j]->data->vertex[0]; 
-            j2=tria[j]->data->vertex[1]; 
-            j3=tria[j]->data->vertex[2]; 
+            j1=tria[j]->vertex[0]; 
+            j2=tria[j]->vertex[1]; 
+            j3=tria[j]->vertex[2]; 
             if((i1==j1 && i2==j3) || (i1==j3 && i2==j2) || (i1==j2 && i2==j1)){
                 triangle_add_neighbour(tria[i],tria[j]);
                 nobo++;
@@ -303,14 +304,14 @@
         }
     }
     for(i=1;i<=tlist->n;i++){
-        i1=tria[i]->data->vertex[0]; 
-        i2=tria[i]->data->vertex[1]; 
-        i3=tria[i]->data->vertex[2]; 
+        i1=tria[i]->vertex[0]; 
+        i2=tria[i]->vertex[1]; 
+        i3=tria[i]->vertex[2]; 
         for(j=1;j<=tlist->n;j++){
             if(j==i) continue;
-            j1=tria[j]->data->vertex[0]; 
-            j2=tria[j]->data->vertex[1]; 
-            j3=tria[j]->data->vertex[2]; 
+            j1=tria[j]->vertex[0]; 
+            j2=tria[j]->vertex[1]; 
+            j3=tria[j]->vertex[2]; 
             if((i2==j1 && i3==j3) || (i2==j3 && i3==j2) || (i2==j2 && i3==j1)){
                 triangle_add_neighbour(tria[i],tria[j]);
                 nobo++;
@@ -339,9 +340,9 @@
             if(j == vtx[i]->data->neigh_no) jp=1;
             k2=vtx[i]->data->neigh[jp-1];
             for(k=1;k<=tlist->n;k++){		// VERY NON-OPTIMAL!!! too many loops (vlist.n * vtx.neigh * tlist.n )!
-                k3=tria[k]->data->vertex[0];
-                k4=tria[k]->data->vertex[1];
-                k5=tria[k]->data->vertex[2];
+                k3=tria[k]->vertex[0];
+                k4=tria[k]->vertex[1];
+                k5=tria[k]->vertex[2];
 //                ts_fprintf(stderr,"%u %u: k=(%u %u %u)\n",k1,k2,k3,k4,k5);
                 if((vtx[i]==k3 && k1==k4 && k2==k5) ||
                 (vtx[i]==k4 && k1==k5 && k2==k3) ||
diff --git a/src/io.c b/src/io.c
index 1a7a527..d062137 100644
--- a/src/io.c
+++ b/src/io.c
@@ -85,17 +85,17 @@
         ts_triangle_list *tlist=vesicle->tlist;
       ts_uint i,j;
 	for(i=0;i<tlist->n;i++){
-        fprintf(fh,"\t%u",tlist->tria[i]->data->neigh_no);
-	    for(j=0;j<tlist->tria[i]->data->neigh_no;j++){
-    		fprintf(fh,"\t%u",(ts_uint)(tlist->tria[i]->data->neigh[j]->idx));//-tlist->tria+1)); 
+        fprintf(fh,"\t%u",tlist->tria[i]->neigh_no);
+	    for(j=0;j<tlist->tria[i]->neigh_no;j++){
+    		fprintf(fh,"\t%u",(ts_uint)(tlist->tria[i]->neigh[j]->idx));//-tlist->tria+1)); 
         }
         fprintf(fh,"\n");
             for(j=0;j<3;j++){
-    		fprintf(fh,"\t%u",(ts_uint)(tlist->tria[i]->data->vertex[j]->idx));//-vesicle->vlist->vtx+1)); 
+    		fprintf(fh,"\t%u",(ts_uint)(tlist->tria[i]->vertex[j]->idx));//-vesicle->vlist->vtx+1)); 
             }
         fprintf(fh,"\n");
-		fprintf(fh,"%.17E\t%.17E\t%.17E\n",tlist->tria[i]->data->xnorm,
-tlist->tria[i]->data->ynorm,tlist->tria[i]->data->znorm);
+		fprintf(fh,"%.17E\t%.17E\t%.17E\n",tlist->tria[i]->xnorm,
+tlist->tria[i]->ynorm,tlist->tria[i]->znorm);
         fprintf(fh,"0.00000000000000000\n0.00000000000000000\n");
     }
     return TS_SUCCESS;
@@ -373,6 +373,7 @@
         
     }
     */
+	if(retval);
 	fclose(fh);	
 
 
diff --git a/src/main.c b/src/main.c
index e4e1027..c402ebf 100644
--- a/src/main.c
+++ b/src/main.c
@@ -65,12 +65,10 @@
 centermass(vesicle);
 cell_occupation(vesicle);
 
-for(i=0;i<100;i++)
+for(i=0;i<100;i++){
 single_timestep(vesicle);
-
-
-
-write_vertex_xml_file(vesicle,0);
+write_vertex_xml_file(vesicle,i);
+}
 write_master_xml_file("test.pvd");
 write_dout_fcompat_file(vesicle,"dout");
 vesicle_free(vesicle);
diff --git a/src/timestep.c b/src/timestep.c
index 829faec..1e1ffff 100644
--- a/src/timestep.c
+++ b/src/timestep.c
@@ -26,7 +26,7 @@
 //        retval=single_bondflip_timestep(vesicle,&vesicle->blist.bond[i],rnvec);
         
     } 
-
+	if(retval);
     return TS_SUCCESS;
 }
 
diff --git a/src/triangle.c b/src/triangle.c
index a41f3b5..f842130 100644
--- a/src/triangle.c
+++ b/src/triangle.c
@@ -57,13 +57,13 @@
 
         tlist->tria[tlist->n-1]=(ts_triangle *)calloc(1,sizeof(ts_triangle));
         if(tlist->tria[tlist->n-1]==NULL) fatal("Cannot reallocate memory for additional ts_triangle.",5);
-        tlist->tria[tlist->n-1]->data=(ts_triangle_data *)calloc(1,sizeof(ts_triangle_data));
+  //      tlist->tria[tlist->n-1]->data=(ts_triangle_data *)calloc(1,sizeof(ts_triangle_data));
 
         //NOW insert vertices!
         tlist->tria[tlist->n - 1]->idx=tlist->n-1;
-        tlist->tria[tlist->n - 1]->data->vertex[0]=vtx1;
-        tlist->tria[tlist->n - 1]->data->vertex[1]=vtx2;
-        tlist->tria[tlist->n - 1]->data->vertex[2]=vtx3;
+        tlist->tria[tlist->n - 1]->vertex[0]=vtx1;
+        tlist->tria[tlist->n - 1]->vertex[1]=vtx2;
+        tlist->tria[tlist->n - 1]->vertex[2]=vtx3;
         return tlist->tria[tlist->n-1];
 }
 
@@ -94,11 +94,11 @@
     if(tria==NULL || ntria==NULL) return TS_FAIL;
 /*TODO: check if the neighbour already exists! Now there is no such check
  * because of the performance issue. */
-	tria->data->neigh_no++;
-	tria->data->neigh=realloc(tria->data->neigh,tria->data->neigh_no*sizeof(ts_triangle *));
-	if(tria->data->neigh == NULL)
+	tria->neigh_no++;
+	tria->neigh=realloc(tria->neigh,tria->neigh_no*sizeof(ts_triangle *));
+	if(tria->neigh == NULL)
 			fatal("Reallocation of memory failed during insertion of triangle neighbour in triangle_add_neighbour",3);
-	tria->data->neigh[tria->data->neigh_no-1]=ntria;
+	tria->neigh[tria->neigh_no-1]=ntria;
   
  
 /* we repeat the procedure for the neighbour */  
@@ -136,9 +136,9 @@
     ts_uint i,j=0; 
     if(tria==NULL || ntria==NULL) return TS_FAIL;
 
-    for(i=0;i<tria->data->neigh_no;i++){
-        if(tria->data->neigh[i]!=ntria){
-            tria->data->neigh[j]=tria->data->neigh[i];
+    for(i=0;i<tria->neigh_no;i++){
+        if(tria->neigh[i]!=ntria){
+            tria->neigh[j]=tria->neigh[i];
             j++;
         } 
     }
@@ -146,15 +146,15 @@
         return TS_FAIL; 
         //fatal("In triangle_remove_neighbour: Specified neighbour does not exist for given triangle",3);
     }
-    tria->data->neigh_no--;
-    tria->data->neigh=(ts_triangle **)realloc(tria->data->neigh,tria->data->neigh_no*sizeof(ts_triangle *));
-	if(tria->data->neigh == NULL){
+    tria->neigh_no--;
+    tria->neigh=(ts_triangle **)realloc(tria->neigh,tria->neigh_no*sizeof(ts_triangle *));
+	if(tria->neigh == NULL){
 		fatal("Reallocation of memory failed during removal of vertex neighbour in triangle_remove_neighbour",100);
 	}
 /* we repeat the procedure for neighbour */
-    for(i=0;i<ntria->data->neigh_no;i++){
-        if(ntria->data->neigh[i]!=tria){
-            ntria->data->neigh[j]=ntria->data->neigh[i];
+    for(i=0;i<ntria->neigh_no;i++){
+        if(ntria->neigh[i]!=tria){
+            ntria->neigh[j]=ntria->neigh[i];
             j++;
         } 
     }
@@ -162,9 +162,9 @@
         return TS_FAIL; 
         //fatal("In triangle_remove_neighbour: Specified neighbour does not exist for given triangle",3);
     }
-    ntria->data->neigh_no--;
-    ntria->data->neigh=(ts_triangle **)realloc(ntria->data->neigh,ntria->data->neigh_no*sizeof(ts_triangle *));
-	if(ntria->data->neigh == NULL){
+    ntria->neigh_no--;
+    ntria->neigh=(ts_triangle **)realloc(ntria->neigh,ntria->neigh_no*sizeof(ts_triangle *));
+	if(ntria->neigh == NULL){
 		fatal("Reallocation of memory failed during removal of vertex neighbour in triangle_remove_neighbour",100);
 	}
     return TS_SUCCESS;
@@ -194,19 +194,19 @@
   */
 ts_bool triangle_normal_vector(ts_triangle *tria){
 	ts_double x21,x31,y21,y31,z21,z31,xden;
-	x21=tria->data->vertex[1]->data->x - tria->data->vertex[0]->data->x;
-	x31=tria->data->vertex[2]->data->x - tria->data->vertex[0]->data->x;
-	y21=tria->data->vertex[1]->data->y - tria->data->vertex[0]->data->y;
-	y31=tria->data->vertex[2]->data->y - tria->data->vertex[0]->data->y;
-	z21=tria->data->vertex[1]->data->z - tria->data->vertex[0]->data->z;
-	z31=tria->data->vertex[2]->data->z - tria->data->vertex[0]->data->z;
+	x21=tria->vertex[1]->data->x - tria->vertex[0]->data->x;
+	x31=tria->vertex[2]->data->x - tria->vertex[0]->data->x;
+	y21=tria->vertex[1]->data->y - tria->vertex[0]->data->y;
+	y31=tria->vertex[2]->data->y - tria->vertex[0]->data->y;
+	z21=tria->vertex[1]->data->z - tria->vertex[0]->data->z;
+	z31=tria->vertex[2]->data->z - tria->vertex[0]->data->z;
 
-	tria->data->xnorm=y21*z31 - z21*y31;
-	tria->data->ynorm=z21*x31 - x21*z31;
-	tria->data->znorm=x21*y31 - y21*x31;
-	xden=tria->data->xnorm*tria->data->xnorm +
-         tria->data->ynorm*tria->data->ynorm + 
-         tria->data->znorm*tria->data->znorm;
+	tria->xnorm=y21*z31 - z21*y31;
+	tria->ynorm=z21*x31 - x21*z31;
+	tria->znorm=x21*y31 - y21*x31;
+	xden=tria->xnorm*tria->xnorm +
+         tria->ynorm*tria->ynorm + 
+         tria->znorm*tria->znorm;
 #ifdef TS_DOUBLE_DOUBLE
 	xden=sqrt(xden);
 #endif
@@ -216,9 +216,9 @@
 #ifdef TS_DOUBLE_LONGDOUBLE
 	xden=sqrtl(xden);
 #endif
-	tria->data->xnorm=tria->data->xnorm/xden;
-	tria->data->ynorm=tria->data->ynorm/xden;
-	tria->data->znorm=tria->data->znorm/xden;	
+	tria->xnorm=tria->xnorm/xden;
+	tria->ynorm=tria->ynorm/xden;
+	tria->znorm=tria->znorm/xden;	
 	return TS_SUCCESS;
 }
 
@@ -226,29 +226,6 @@
 
 
 
-/** @brief Frees the memory allocated for data structure of triangle data
- * (ts_triangle_data)
-  *
-  * Function frees the memory of ts_triangle_data previously allocated. It
-  * accepts one argument, the address of data structure. It destroys all
-  * pointers the structure might have (currently only neigh -- the pointer to
-  * list of neighbouring triangles) and data structure itself. The return value
-  * is always TS_SUCCESS.
-  *
-  * WARNING: The function doesn't check whether the pointer is NULL or invalid. It is the
-  * job of programmer to make sure the pointer is valid.
-  *
-  * Example of usage:
-  *		triangle_data_free(tlist->tria[3]->data);
-  *
-  *	    Clears the data structure with all pointers.
-  *		
-  */
-ts_bool triangle_data_free(ts_triangle_data *data){
-    if(data->neigh!=NULL) free(data->neigh);
-    free(data);
-    return TS_SUCCESS;
-}
 
 /** @brief Frees the memory allocated for data structure of triangle list
  * (ts_triangle_list)
@@ -277,7 +254,7 @@
 ts_bool triangle_list_free(ts_triangle_list *tlist){
     ts_uint i;
     for(i=0;i<tlist->n;i++){
-        triangle_data_free(tlist->tria[i]->data);
+    	if(tlist->tria[i]->neigh!=NULL) free(tlist->tria[i]->neigh);
         free(tlist->tria[i]);
     }
     free(tlist->tria);
diff --git a/src/triangle.h b/src/triangle.h
index 5735581..a3d8184 100644
--- a/src/triangle.h
+++ b/src/triangle.h
@@ -5,7 +5,6 @@
 ts_triangle *triangle_add(ts_triangle_list *tlist, ts_vertex *vtx1, ts_vertex *vtx2, ts_vertex *vtx3);
 ts_bool triangle_add_neighbour(ts_triangle *tria, ts_triangle *ntria);
 ts_bool triangle_normal_vector(ts_triangle *tria);
-ts_bool triangle_data_free(ts_triangle_data *triang);
 ts_bool triangle_list_free(ts_triangle_list *tlist);
 
 #endif

--
Gitblit v1.9.3