Trisurf Monte Carlo simulator
Samo Penic
2010-11-27 73771431acbfbd1ffa2f3aeabb21fed9016fca42
src/vertex.c
@@ -16,21 +16,20 @@
      return vlist;
   }
   
    vlist->vtx=(ts_vertex **)malloc(N*sizeof(ts_vertex *));
    vlist->vtx=(ts_vertex *)malloc(N*sizeof(ts_vertex));
    if(vlist->vtx==NULL)
        fatal("Fatal error reserving memory space for vertex list! Could number of requsted vertices be too large?", 100);
    for(i=0;i<N;i++) vlist->vtx[i]=init_vertex(i);
    for(i=0;i<N;i++) vlist->vtx[i].data=init_vertex_data();
    vlist->n=N;
   return vlist;
}
ts_vertex *init_vertex(ts_uint idx){
    ts_vertex *vtx;
    vtx=(ts_vertex *)malloc(sizeof(ts_vertex));
    if(vtx==NULL)
ts_vertex_data *init_vertex_data(){
    ts_vertex_data *data;
    data=(ts_vertex_data *)malloc(sizeof(ts_vertex_data));
    if(data==NULL)
        fatal("Fatal error reserving memory space for ts_vertex! Memory full?", 100);
    vtx->idx=idx;
    return vtx;
    return data;
}
/*
@@ -46,27 +45,27 @@
ts_bool vtx_add_neighbour(ts_vertex **vtx, ts_vertex **nvtx){
ts_bool vtx_add_neighbour(ts_vertex *vtx, ts_vertex *nvtx){
    ts_uint i;
    /* no neighbour can be null! */
    if(vtx==NULL || nvtx==NULL) return TS_FAIL;
    
    /*if it is already a neighbour don't add it to the list */
    for(i=0; i<(*vtx)->neigh_no;i++){
        if((*vtx)->neigh[i]==nvtx) return TS_FAIL;
    for(i=0; i<vtx->data->neigh_no;i++){
        if(vtx->data->neigh[i]==nvtx) return TS_FAIL;
    }
    ts_uint nn=(*vtx)->neigh_no++;
    (*vtx)->neigh=(ts_vertex ***)realloc((*vtx)->neigh, nn*sizeof(ts_vertex **));
    (*vtx)->neigh[nn]=nvtx;
    ts_uint nn=vtx->data->neigh_no++;
    vtx->data->neigh=(ts_vertex **)realloc(vtx->data->neigh, nn*sizeof(ts_vertex *));
    vtx->data->neigh[nn]=nvtx;
    /* pa se sosedu dodamo vertex */
    /*if it is already a neighbour don't add it to the list */
    for(i=0; i<(*nvtx)->neigh_no;i++){
        if((*nvtx)->neigh[i]==vtx) return TS_FAIL;
    for(i=0; i<nvtx->data->neigh_no;i++){
        if(nvtx->data->neigh[i]==vtx) return TS_FAIL;
    } 
    nn=(*nvtx)->neigh_no++;
    (*nvtx)->neigh=(ts_vertex ***)realloc((*nvtx)->neigh, nn*sizeof(ts_vertex **));
    (*nvtx)->neigh[nn]=vtx;
    nn=nvtx->data->neigh_no++;
    nvtx->data->neigh=(ts_vertex **)realloc(nvtx->data->neigh, nn*sizeof(ts_vertex *));
    nvtx->data->neigh[nn]=vtx;
/* Ustvari bond in doloci dolzino */
@@ -75,28 +74,35 @@
}
ts_bool vtx_free(ts_vertex **vtx){
    if((*vtx)->neigh!=NULL)   free((*vtx)->neigh);
    if((*vtx)->tristar!=NULL) free((*vtx)->tristar);
    if((*vtx)->bond!=NULL)    free((*vtx)->bond);
    if((*vtx)->cell!=NULL)    free((*vtx)->cell);
    free(*vtx);
ts_bool vtx_data_free(ts_vertex_data *data){
    if(data->neigh!=NULL)   free(data->neigh);
    if(data->tristar!=NULL) free(data->tristar);
    if(data->bond!=NULL)    free(data->bond);
    if(data->cell!=NULL)    free(data->cell);
    free(data);
    return TS_SUCCESS;
}
ts_bool vtx_free(ts_vertex  *vtx){
    vtx_data_free(vtx->data);
    free(vtx);
    return TS_SUCCESS;
}
ts_bool vtx_list_free(ts_vertex_list *vlist){
    int i;
    for(i=0;i<vlist->n;i++){
        vtx_free(VTX(vlist,i));
        vtx_data_free(vlist->vtx[i].data);
    }
    free(vlist->vtx);
    free(vlist);
    return TS_SUCCESS;
}
inline ts_double vtx_distance_sq(ts_vertex **vtx1, ts_vertex **vtx2){
/* rewrite for additional structure in chain */
/*inline ts_double vtx_distance_sq(ts_vertex *vtx1, ts_vertex *vtx2){
    ts_double dist;
#ifdef TS_DOUBLE_DOUBLE
    dist=pow((*vtx1)->x-(*vtx2)->x,2) + pow((*vtx1)->y-(*vtx2)->y,2) + pow((*vtx1)->z-(*vtx2)->z,2);
@@ -109,4 +115,4 @@
#endif
    return(dist);
}
*/