From 201659654a328f84c229d16fe85d8709a4183957 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Sat, 19 Oct 2019 15:53:42 +0000 Subject: [PATCH] Fixed most problems, some still persists. --- src/vertexmove.c | 31 ++++++++++++++++++++++++++++--- 1 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/vertexmove.c b/src/vertexmove.c index 401dddf..e74fa74 100644 --- a/src/vertexmove.c +++ b/src/vertexmove.c @@ -88,6 +88,14 @@ } } + + // plane confinement check whether the new position of vertex will be out of bounds + if(vesicle->tape->plane_confinement_switch){ + if(vtx->z>vesicle->confinement_plane.z_max || vtx->z<vesicle->confinement_plane.z_min){ + vtx=memcpy((void *)vtx,(void *)&backupvtx[0],sizeof(ts_vertex)); + return TS_FAIL; + } + } //#undef SQ //self avoidance check with distant vertices cellidx=vertex_self_avoidance(vesicle, vtx); @@ -115,10 +123,11 @@ } //stretching energy 1 of 3 if(vesicle->tape->stretchswitch==1){ - for(i=0;i<vtx->tristar_no;i++) dstretchenergy-=vtx->tristar[i]->energy/3.0; + for(i=0;i<vtx->tristar_no;i++) dstretchenergy-=vtx->tristar[i]->energy; } delta_energy=0; - + + // vesicle_volume(vesicle); // fprintf(stderr,"Volume in the beginning=%1.16e\n", vesicle->volume); @@ -199,7 +208,7 @@ if(vesicle->tape->stretchswitch==1){ for(i=0;i<vtx->tristar_no;i++){ stretchenergy(vesicle, vtx->tristar[i]); - dstretchenergy+=vtx->tristar[i]->energy/3.0; + dstretchenergy+=vtx->tristar[i]->energy; } } @@ -212,6 +221,22 @@ pow(sqrt(vtx_distance_sq(&backupvtx[0], vtx->grafted_poly->vlist->vtx[0])-1),2)) *vtx->grafted_poly->k; } */ + +// plane confinement energy due to compressing force + if(vesicle->tape->plane_confinement_switch){ + if(vesicle->confinement_plane.force_switch){ + //substract old energy + if(abs(vesicle->tape->plane_d/2.0-vesicle->confinement_plane.z_max)>1e-10) { + delta_energy-=vesicle->tape->plane_F / pow(vesicle->confinement_plane.z_max-backupvtx[0].z,2); + delta_energy+=vesicle->tape->plane_F / pow(vesicle->confinement_plane.z_max-vtx->z,2); + } + if(abs(-vesicle->tape->plane_d/2.0-vesicle->confinement_plane.z_min)>1e-10) { + delta_energy-=vesicle->tape->plane_F / pow(vesicle->confinement_plane.z_min-backupvtx[0].z,2); + delta_energy+=vesicle->tape->plane_F / pow(vesicle->confinement_plane.z_min-vtx->z,2); + } + } + } + // fprintf(stderr, "DE=%f\n",delta_energy); //MONTE CARLOOOOOOOO // if(vtx->c!=0.0) printf("DE=%f\n",delta_energy); -- Gitblit v1.9.3