Fixed centermass functon to move the vertices so cm is always 0
| | |
| | | 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; |
| | | } |
| | | |
| | |
| | | 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; |
| | |
| | | vesicle->bending_rigidity=25.0; |
| | | //fprintf(stderr,"xk=%f",vesicle->bending_rigidity); |
| | | |
| | | centermass(vesicle); |
| | | vesicle->sphHarmonics=sph_init(vesicle->vlist, 21); |
| | | |
| | | vesicle_volume(vesicle); |
| | |
| | | |
| | | |
| | | |
| | | 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); |