Trisurf Monte Carlo simulator
Samo Penic
2016-06-02 fab2ad6a75f1a05fd043f7ef1da62bb722175063
Changed define in initial_distribution.h from A0 to DEF_A0 to avoid possible confusion with global variable A0. The defined value is used in initial_distribution.c only and were renamed everywhere in the file (except in one comment).
3 files modified
19 ■■■■■ changed files
src/initial_distribution.c 14 ●●●● patch | view | raw | blame | history
src/initial_distribution.h 2 ●●● patch | view | raw | blame | history
src/main.c 3 ●●●●● patch | view | raw | blame | history
src/initial_distribution.c
@@ -126,15 +126,15 @@
    const ts_double c2= cos(4.0*M_PI/5.0);
    /* Calculates projection lenght of an edge bond to pentagram plane */
    const ts_double xl0=A0/(2.0*sin(M_PI/5.0));
    const ts_double xl0=DEF_A0/(2.0*sin(M_PI/5.0));
#ifdef TS_DOUBLE_DOUBLE
    const ts_double z0=sqrt(pow(A0,2)-pow(xl0,2));
    const ts_double z0=sqrt(pow(DEF_A0,2)-pow(xl0,2));
#endif
#ifdef TS_DOUBLE_FLOAT
    const ts_double z0=sqrtf(powf(A0,2)-powf(xl0,2));
    const ts_double z0=sqrtf(powf(DEF_A0,2)-powf(xl0,2));
#endif
#ifdef TS_DOUBLE_LONGDOUBLE
    const ts_double z0=sqrtl(powl(A0,2)-powl(xl0,2));
    const ts_double z0=sqrtl(powl(DEF_A0,2)-powl(xl0,2));
#endif
//    const z0=sqrt(A0*A0 -xl0*xl0); /* I could use pow function but if pow is used make a check on the float type. If float then powf, if long double use powl */
@@ -226,7 +226,7 @@
    for(i=1;i<=vlist->n;i++){
        for(j=1;j<=vlist->n;j++){
            dist2=vtx_distance_sq(vtx[i],vtx[j]);
            if( (dist2>eps) && (dist2<(A0*A0+eps))){
            if( (dist2>eps) && (dist2<(DEF_A0*DEF_A0+eps))){
    //if it is close enough, but not too much close (solves problem of comparing when i==j)
                vtx_add_neighbour(vtx[i],vtx[j]);
            }
@@ -259,7 +259,7 @@
                   dist2=vtx_distance_sq(vtx[i]->neigh[j-1],vtx[i]->neigh[jj-1]);
                   direct=vtx_direct(vtx[i],vtx[i]->neigh[j-1],vtx[i]->neigh[jj-1]);
// TODO: check if fabs can be used with all floating point types!!
                   if( (fabs(dist2-A0*A0)<=eps) && (direct>0.0) && (j!=jjj) ){
                   if( (fabs(dist2-DEF_A0*DEF_A0)<=eps) && (direct>0.0) && (j!=jjj) ){
                       vtx_add_cneighbour(blist,tvtx[k],tvtx[vtx[i]->neigh[j-1]->idx+1]);
                       jjj=jj;
                       jj=j;
@@ -325,7 +325,7 @@
                dist=vtx_distance_sq(vtx[i]->neigh[j-1],vtx[i]->neigh[jj-1]);
                direct=vtx_direct(vtx[i],vtx[i]->neigh[j-1],vtx[i]->neigh[jj-1]);                
// TODO: same as above                
                if(fabs(dist-A0*A0)<=eps && direct < 0.0 && vtx[i]->neigh[j-1]->idx+1 > i && vtx[i]->neigh[jj-1]->idx+1 >i){
                if(fabs(dist-DEF_A0*DEF_A0)<=eps && direct < 0.0 && vtx[i]->neigh[j-1]->idx+1 > i && vtx[i]->neigh[jj-1]->idx+1 >i){
                    triangle_add(tlist,vtx[i],vtx[i]->neigh[j-1],vtx[i]->neigh[jj-1]);
                }    
            }    
src/initial_distribution.h
@@ -3,7 +3,7 @@
/** @brief initial bond length */
#define A0 1.2
#define DEF_A0 1.2
/** @brief Creates initial distribution of vertices
  *
src/main.c
@@ -30,6 +30,9 @@
    ts_tape *tape;
    ts_uint start_iteration=0;
    force_from_tape=0;
    /* Area and volume for constant area and constant volume are initialized to be zero */
    A0=0;
    V0=0;
    /* create lock file */
    createPidFile("ts_trisurf",".lock",0);
    parse_args(argv,argc); // sets global variable command_line_args (defined in io.h)