Trisurf Monte Carlo simulator
Samo Penic
2012-07-13 672ae43d88ba88cf1f4183511bd56f90c7c4d2ed
merged
2 files modified
22 ■■■■ changed files
src/spherical_trisurf.c 4 ●●●● patch | view | raw | blame | history
src/vertexmove.c 18 ●●●● patch | view | raw | blame | history
src/spherical_trisurf.c
@@ -58,8 +58,8 @@
calculateUlm(vesicle);
for(i=0;i<1;i++){
    for(j=0;j<20;j++){
for(i=0;i<10;i++){
    for(j=0;j<200;j++){
        cell_occupation(vesicle);
        for(k=0;k<5;k++){
        single_timestep(vesicle);
src/vertexmove.c
@@ -20,6 +20,7 @@
    ts_bool retval; 
    ts_uint cellidx; 
    ts_double delta_energy,oenergy;
    ts_double costheta,sintheta,phi,r;
    //This will hold all the information of vtx and its neighbours
    ts_vertex backupvtx[20];
    memcpy((void *)&backupvtx[0],(void *)vtx,sizeof(ts_vertex));
@@ -35,9 +36,20 @@
*/
        //temporarly moving the vertex
    vtx->x=vtx->x+vesicle->stepsize*(2.0*rn[0]-1.0);
        vtx->y=vtx->y+vesicle->stepsize*(2.0*rn[1]-1.0);
        vtx->z=vtx->z+vesicle->stepsize*(2.0*rn[2]-1.0);
//    vtx->x=vtx->x+vesicle->stepsize*(2.0*rn[0]-1.0);
//        vtx->y=vtx->y+vesicle->stepsize*(2.0*rn[1]-1.0);
//        vtx->z=vtx->z+vesicle->stepsize*(2.0*rn[2]-1.0);
    //random move in a sphere with radius stepsize:
    r=vesicle->stepsize*rn[0];
    phi=rn[1]*2*M_PI;
    costheta=2*rn[2]-1;
    sintheta=sqrt(1-pow(costheta,2));
    vtx->x=vtx->x+r*sintheta*cos(phi);
    vtx->y=vtx->y+r*sintheta*sin(phi);
    vtx->z=vtx->z+r*costheta;
        //distance with neighbours check
    for(i=0;i<vtx->neigh_no;i++){
        dist=vtx_distance_sq(vtx,vtx->neigh[i]);