From 2a1e3d528265c3d366dab9ad4b0c4d3d65e1c4ed Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Mon, 13 Apr 2020 12:13:50 +0000
Subject: [PATCH] Storing previously debugged version

---
 src/cell.c |   25 +++++++++++++++----------
 1 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/src/cell.c b/src/cell.c
index 246866b..3df15ea 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -1,3 +1,4 @@
+/* vim: set ts=4 sts=4 sw=4 noet : */
 #include<stdlib.h>
 #include "general.h"
 #include "vertex.h"
@@ -5,7 +6,7 @@
 ts_cell_list  *init_cell_list(ts_uint ncmax1, ts_uint ncmax2, ts_uint ncmax3, ts_double stepsize){
     ts_uint i;
     ts_uint nocells=ncmax1*ncmax2*ncmax3;
-    ts_cell_list *clist=(ts_cell_list *)malloc(sizeof(ts_cell_list));
+    ts_cell_list *clist=(ts_cell_list *)calloc(1,sizeof(ts_cell_list));
     if(clist==NULL) fatal("Error while allocating memory for cell list!",100);
 
     clist->ncmax[0]=ncmax1;
@@ -14,8 +15,8 @@
     clist->cellno=nocells;
     clist->dcell=1.0/(1.0 + stepsize);
     clist->shift=(ts_double) clist->ncmax[0]/2;
-
-    clist->cell=(ts_cell **)malloc(nocells*sizeof(ts_cell *));
+    clist->max_occupancy=16; /* hard coded max occupancy? */
+    clist->cell=(ts_cell **)calloc(nocells,sizeof(ts_cell *));
     if(clist->cell==NULL) fatal("Error while allocating memory for cell list! ncmax too large?",101);
 
     for(i=0;i<nocells;i++){
@@ -44,7 +45,6 @@
 }
 
 
-//TODO: not debugged at all!
 inline ts_uint vertex_self_avoidance(ts_vesicle *vesicle, ts_vertex *vtx){
     ts_uint cellidx;
     ts_uint ncx, ncy,ncz;
@@ -68,7 +68,6 @@
 }
 
 
-//TODO: looks ok, but debug anyway in the future
 inline ts_bool cell_add_vertex(ts_cell *cell, ts_vertex *vtx){
 	ts_uint i;
 	for(i=0;i<cell->nvertex;i++){
@@ -124,7 +123,7 @@
     return TS_SUCCESS;
 }
 
-// TODO: compiles ok, but it is completely untested and undebugged. It was debugged before rewrite, but this was long time ago.
+
 ts_bool cell_occupation_number_and_internal_proximity(ts_cell_list *clist, ts_uint cellidx, ts_vertex *vtx){
     ts_uint ncx,ncy,ncz,remainder,cell_occupation;
     ts_uint i,j,k,l,neigh_cidx;
@@ -143,19 +142,25 @@
                 cell_occupation=clist->cell[neigh_cidx]->nvertex;
           //      fprintf(stderr, "cell_occupation=%i\n",cell_occupation);
                 if(cell_occupation>clist->max_occupancy){
+			ts_fprintf(stderr,"max occupancy= %d, cell occupation= %d", clist->max_occupancy, cell_occupation);
                     fatal("Neighbouring cell occupation more than set max_occupancy value.",2000);
                 }
 // Now we check whether we didn't come close to some other vertices in the same
 // cell!
-                if(cell_occupation>1){
+                if(cell_occupation>0){
                     for(l=0;l<cell_occupation;l++){
 
 				//carefull with this checks!
-                        if(clist->cell[neigh_cidx]->vertex[l]->idx!=vtx->idx){
+                        if(clist->cell[neigh_cidx]->vertex[l]!=vtx){
                     //        fprintf(stderr,"calling dist on vertex %i\n",l);
                            dist=vtx_distance_sq(clist->cell[neigh_cidx]->vertex[l],vtx);
-                    //        fprintf(stderr,"dist was %f\n",dist);
-                            if(dist<=1.0) return TS_FAIL;
+
+//				if(vtx->idx==1)
+//				fprintf(stderr,"VTX(0) ima bliznji vertex z indeksom, %d, tipa %d \n", clist->cell[neigh_cidx]->vertex[l]->idx, clist->cell[neigh_cidx]->vertex[l]->id);
+//				if(vtx->idx==0 && clist->cell[neigh_cidx]->vertex[l]->idx==0)
+//                            fprintf(stderr,"*** dist was %f\n",dist);
+				
+                            if(dist<=1.0 || (dist<=clist->dmin_interspecies && (clist->cell[neigh_cidx]->vertex[l]->id != vtx->id))) return TS_FAIL;
                         }
                     }
                 }

--
Gitblit v1.9.3