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/vesicle.c | 36 ++++++++++++++++++++++++++++-------- 1 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/vesicle.c b/src/vesicle.c index e294f93..d2caf4b 100644 --- a/src/vesicle.c +++ b/src/vesicle.c @@ -4,34 +4,54 @@ #include "triangle.h" #include "bond.h" #include "cell.h" - +#include "stdlib.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 *vesicle=(ts_vesicle *)malloc(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 TS_SUCCESS; + 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_vertex **vtx=vesicle->vlist->vtx; ts_uint nn=vesicle->vlist->n; for(i=0;i<nn;i++){ - vtx[i]->data->x+=x; - vtx[i]->data->y+=y; - vtx[i]->data->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); + vtx_list_free(vesicle->vlist); bond_list_free(vesicle->blist); triangle_list_free(vesicle->tlist); cell_list_free(vesicle->clist); + 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