From 1121faa13a2038facad22073f0fc610903d98691 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo@CAE-linux.(none)>
Date: Fri, 05 Sep 2014 20:18:05 +0000
Subject: [PATCH] First variant of constant volume constrant (a new one proposed by Miha after reading his article). It seems to work, however there are still some things to be done, such as Miha's derivation of the epsvol (0.003% is used at the moment) and solving the problem of additional global variables.

---
 src/vesicle.c |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 50 insertions(+), 9 deletions(-)

diff --git a/src/vesicle.c b/src/vesicle.c
index c87ead1..f63eb12 100644
--- a/src/vesicle.c
+++ b/src/vesicle.c
@@ -1,21 +1,62 @@
 #include<general.h>
 #include "vesicle.h"
+#include "vertex.h"
+#include "triangle.h"
+#include "bond.h"
+#include "cell.h"
+#include "stdlib.h"
+#include "poly.h"
+#include "sh.h"
+#include "shcomplex.h"
+
+ts_vesicle *init_vesicle(ts_uint N, ts_uint ncmax1, ts_uint ncmax2, ts_uint
+ncmax3, ts_double stepsize){
+    ts_vesicle *vesicle=(ts_vesicle *)calloc(1,sizeof(ts_vesicle));
+    vesicle->vlist=init_vertex_list(N);
+    vesicle->blist=init_bond_list();
+    vesicle->tlist=init_triangle_list();
+    vesicle->clist=init_cell_list(ncmax1, ncmax2, ncmax3, stepsize);
+    return vesicle;
+}
+
 ts_bool vesicle_translate(ts_vesicle *vesicle,ts_double x, ts_double y, ts_double z){
 	ts_uint i;
-	ts_vertex *vtx=vesicle->vlist.vertex;
-	ts_uint nn=vesicle->vlist.n;
+	ts_vertex **vtx=vesicle->vlist->vtx;
+	ts_uint nn=vesicle->vlist->n;
 	for(i=0;i<nn;i++){
-		vtx[i].x+=x;
-		vtx[i].y+=y;
-		vtx[i].z+=z;
+		vtx[i]->x+=x;
+		vtx[i]->y+=y;
+		vtx[i]->z+=z;
 	}
 	return TS_SUCCESS;
 }
 
 ts_bool vesicle_free(ts_vesicle *vesicle){
-    vertex_list_free(&vesicle->vlist);
-    bond_list_free(&vesicle->blist);
-    triangle_list_free(&vesicle->tlist);
-    cell_list_free(&vesicle->clist);
+    vtx_list_free(vesicle->vlist);
+    bond_list_free(vesicle->blist);
+    triangle_list_free(vesicle->tlist);
+    cell_list_free(vesicle->clist);
+    poly_list_free(vesicle->poly_list);
+    complex_sph_free(vesicle->sphHarmonics);
+    free(vesicle);
+    return TS_SUCCESS;
+}
+
+/* @brief Function makes a sum of partial volumes of each triangle. Volumes of
+ *
+ * Partial volumes are calculated when we calculate normals of triangles. It is
+ * relatively easy to calculate the volume of vesicle if we take into account
+ * that the volume of the whole vertex is simply sum of all partial volumes of
+ * all the triangles.
+ */
+ts_bool vesicle_volume(ts_vesicle *vesicle){
+    ts_double volume;
+    ts_uint i;
+    ts_triangle **tria=vesicle->tlist->tria;
+    volume=0;
+    for(i=0; i<vesicle->tlist->n;i++){
+    volume=volume+tria[i]->volume;
+    }
+    vesicle->volume=volume;
     return TS_SUCCESS;
 }

--
Gitblit v1.9.3