Trisurf Monte Carlo simulator
Samo Penic
2012-07-09 919555150e5676cae7f7c471e4bdf30d563bcb12
Fixed centermass functon to move the vertices so cm is always 0
3 files modified
27 ■■■■■ changed files
src/frame.c 7 ●●●●● patch | view | raw | blame | history
src/sh.c 1 ●●●● patch | view | raw | blame | history
src/spherical_trisurf.c 19 ●●●● patch | view | raw | blame | history
src/frame.c
@@ -16,6 +16,13 @@
    vesicle->cm[0]/=(ts_float)n;
    vesicle->cm[1]/=(ts_float)n;
    vesicle->cm[2]/=(ts_float)n;
    for(i=0;i<n;i++){
        vtx[i]->x-=vesicle->cm[0];
        vtx[i]->y-=vesicle->cm[1];
        vtx[i]->z-=vesicle->cm[2];
    }
    return TS_SUCCESS;
}
src/sh.c
@@ -238,6 +238,7 @@
ts_bool preparationSh(ts_vesicle *vesicle, ts_double r0){
//TODO: before calling or during the call calculate area of each triangle! Can
//be also done after vertexmove and bondflip //
//DONE: in energy calculation! //
    ts_uint i,j;
    ts_vertex **vtx=vesicle->vlist->vtx;
    ts_vertex *cvtx;
src/spherical_trisurf.c
@@ -32,6 +32,7 @@
vesicle->bending_rigidity=25.0;
//fprintf(stderr,"xk=%f",vesicle->bending_rigidity);
    centermass(vesicle);
vesicle->sphHarmonics=sph_init(vesicle->vlist, 21);
vesicle_volume(vesicle);
@@ -43,21 +44,21 @@
for(i=0;i<10000;i++){
    centermass(vesicle);
for(i=0;i<5;i++){
    cell_occupation(vesicle);
    for(j=0;j<1000;j++){
        single_timestep(vesicle);
    }    
vesicle_volume(vesicle);
r0=getR0(vesicle);
    centermass(vesicle);
    vesicle_volume(vesicle);
    r0=getR0(vesicle);
preparationSh(vesicle,r0);
calculateYlmi(vesicle);
calculateUlm(vesicle);
    preparationSh(vesicle,r0);
    calculateYlmi(vesicle);
    calculateUlm(vesicle);
storeUlm2(vesicle);
saveAvgUlm2(vesicle);
    storeUlm2(vesicle);
    saveAvgUlm2(vesicle);
    write_vertex_xml_file(vesicle,i);
    fprintf(stderr, "Loop %d completed.\n",i+1);