From 142a67fe82b830e5c7816914afa62445959c87ca Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@fe.uni-lj.si>
Date: Tue, 05 Nov 2013 14:04:21 +0000
Subject: [PATCH] changes in bondflip call. No need to bondflip all the bonds, but only as many bonds as there are vertices. Also, rnvec seems to be not needed for bondflip, so it is commented out

---
 src/general.h |  116 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 90 insertions(+), 26 deletions(-)

diff --git a/src/general.h b/src/general.h
index f0b42e8..f3328f6 100644
--- a/src/general.h
+++ b/src/general.h
@@ -2,6 +2,7 @@
 #define _GENERAL_H
 
 #include<stdarg.h>
+#include<stdio.h>
 
 /* @brief This is a header file, defining general constants and structures.
   * @file header.h
@@ -109,77 +110,137 @@
 
 /* STRUCTURES */
 
+
+/** @brief Data structure for keeping the coordinates in selected coordinate
+ * system
+ */
+#define TS_COORD_CARTESIAN 0
+#define TS_COORD_SPHERICAL 1
+#define TS_COORD_CYLINDRICAL 2
+
+typedef struct {
+    ts_double e1;
+    ts_double e2;
+    ts_double e3;
+    ts_uint coord_type;
+} ts_coord;
+
+
+
 /** @brief Data structure of all data connected to a vertex
  *
- *  ts_vertex holds the data for one single point (bead, vertex) in the space. To understand how to use it
+ *  ts_vertex holds the data for one single point (bead, vertex). To understand how to use it
  *  here is a detailed description of the fields in the data structure. */
 struct ts_vertex {
-        ts_uint idx; /**< Represents index of the vertex point. Should become obsolete in C. */        
-        ts_double x; /**< The x coordinate of vertex. */        
+        ts_uint idx;
+        ts_double x; /**< The x coordinate of vertex. */
         ts_double y; /**< The y coordinate of vertex. */
         ts_double z; /**< The z coordinate of vertex. */
         ts_uint neigh_no; /**< The number of neighbours. */
-        struct ts_vertex ***neigh; /**< The pointer that holds neigh_no pointers to this structure. Careful when using pointers to pointers! Also developers do mistakes here.  */
-        ts_double *bond_length;
-        ts_double *bond_length_dual;
+        struct ts_vertex **neigh; /**< The pointer that holds neigh_no pointers to this structure. */
+        ts_double *bond_length; /**< Obsolete! The bond lenght is moved to ts_bond */
+        ts_double *bond_length_dual; /**< Obsolete! Bond length in dual lattice is moved to ts_bond! */
         ts_double curvature;
         ts_double energy;
         ts_double energy_h;
         ts_uint tristar_no;
-        struct ts_triangle ***tristar;
-        struct ts_bond ***bond;
-        struct ts_cell *cell;
+        struct ts_triangle **tristar; /**< The list of triangles this vertex belongs to. This is an array of pointers to ts_triangle structure of tristar_no length */
+        ts_uint bond_no;
+        struct ts_bond **bond; /**< Array of pointers of lenght bond_no that stores information on bonds. */
+        struct ts_cell *cell; /**< Which cell do we belong to? */
         ts_double xk;
         ts_double c;
         ts_uint id;
+        ts_double projArea;
+        ts_double relR;
+        ts_double solAngle;
 };
 typedef struct ts_vertex ts_vertex;
 
-/** ts_bond is a structure that describes a bond */
 typedef struct {
+    ts_uint n;
+    ts_vertex **vtx;
+
+} ts_vertex_list;
+
+struct ts_bond {
+    ts_uint idx;
 	ts_vertex *vtx1;
 	ts_vertex *vtx2;
     ts_double bond_length;
     ts_double bond_length_dual;
-} ts_bond;
+	ts_bool tainted;
+};
+typedef struct ts_bond ts_bond;
+
+struct ts_bond_list {
+    ts_uint n;
+    ts_bond **bond;
+};
+typedef struct ts_bond_list ts_bond_list;
 
 struct ts_triangle {
-	ts_uint idx;
+    ts_uint idx;
 	ts_vertex *vertex[3];
 	ts_uint neigh_no;
 	struct ts_triangle **neigh;
 	ts_double xnorm;
 	ts_double ynorm;
 	ts_double znorm;
-	
+    ts_double area; // firstly needed for sh.c
+    ts_double volume; // firstly needed for sh.c
 };
 typedef struct ts_triangle ts_triangle;
+
+struct ts_triangle_list{
+    ts_uint n;
+    ts_triangle **tria;
+};
+typedef struct ts_triangle_list ts_triangle_list;
+
 
 typedef struct ts_cell {
     ts_uint idx;
     ts_vertex **vertex;
     ts_uint nvertex;
-} ts_cell;
+} ts_cell; 
 
-typedef struct {
-	ts_vertex **vlist;
-	ts_bond **blist;
-	ts_triangle **tlist;
-    ts_cell **clist;
-	ts_uint nshell;
-    ts_uint nvertex;
-    ts_uint nbond;
-    ts_uint ntria;
-    ts_cell ncell;
+typedef struct ts_cell_list{
+    ts_uint ncmax[3];
+    ts_uint cellno;
+    ts_cell **cell;
     ts_double dcell;
     ts_double shift;
     ts_double max_occupancy;
-    ts_uint ncmax[3];
+} ts_cell_list;
+
+
+typedef struct {
+    ts_uint l;
+    ts_double **ulm;
+    ts_double **sumUlm2;
+    ts_uint N;
+    ts_double **co;
+    ts_double ***Ylmi;
+} ts_spharm;
+
+
+
+typedef struct {
+	ts_vertex_list *vlist;
+	ts_bond_list *blist;
+	ts_triangle_list *tlist;
+    ts_cell_list *clist;
+	ts_uint nshell;
     ts_double bending_rigidity;
     ts_double dmax;
     ts_double stepsize;
     ts_double cm[3];
+    ts_double volume;
+    ts_spharm *sphHarmonics;
 } ts_vesicle;
+
+
 
 
 /* GLOBAL VARIABLES */
@@ -202,6 +263,9 @@
 */
 void fatal(char *text, ts_int errcode);
 
-//ts_uint ts_fprintf(FILE *fd, char *fmt, va_list ap);
+ts_uint ts_fprintf(FILE *fd, char *fmt, ...);
+
+#define VTX(n) &(vlist->vtx[n])
+#define VTX_DATA(n) vlist->vtx[n].data
 
 #endif

--
Gitblit v1.9.3