From 5eefcc281fda031d322599fd7094da4fc8450948 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Tue, 25 Sep 2018 13:55:53 +0000 Subject: [PATCH] Debugged --- src/timestep.c | 29 ++++++++++++++++++++++++----- src/tape | 4 ++-- src/vertexmove.c | 7 ++++--- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/tape b/src/tape index 8e4cc9a..83b9c27 100644 --- a/src/tape +++ b/src/tape @@ -99,6 +99,6 @@ #plane confinement plane_confinement_switch=1 #final plane distance (float in lmin) -plane_d=10.0 +plane_d=10 #plane to vesicle repulsion force while closing -plane_F=10 +plane_F=0 diff --git a/src/timestep.c b/src/timestep.c index 204e9ba..767a675 100644 --- a/src/timestep.c +++ b/src/timestep.c @@ -24,7 +24,7 @@ ts_double r0,kc1=0,kc2=0,kc3=0,kc4=0; ts_double l1,l2,l3,vmsr,bfsr, vmsrt, bfsrt; ts_ulong epochtime; - ts_double max_z, min_z; + ts_double max_z=0, min_z=0; FILE *fd1,*fd2=NULL,*fd3=NULL; char filename[10000]; //struct stat st; @@ -72,7 +72,21 @@ ts_fprintf(stdout,"Setting area A0=%.17f\n",A0); epsvol=4.0*sqrt(2.0*M_PI)/pow(3.0,3.0/4.0)*V0/pow(vesicle->tlist->n,3.0/2.0); epsarea=A0/(ts_double)vesicle->tlist->n; - + if(vesicle->tape->plane_confinement_switch){ + min_z=1e10; + max_z=-1e10; + for(k=0;k<vesicle->vlist->n;k++){ + if(vesicle->vlist->vtx[k]->z > max_z) max_z=vesicle->vlist->vtx[k]->z; + if(vesicle->vlist->vtx[k]->z < min_z) min_z=vesicle->vlist->vtx[k]->z; + } + if(max_z-min_z<=vesicle->tape->plane_d) { + vesicle->confinement_plane.z_max=max_z; + vesicle->confinement_plane.z_min=max_z-vesicle->tape->plane_d; + } else { + vesicle->confinement_plane.z_min=min_z;//-1e-5; + vesicle->confinement_plane.z_max=max_z;//+1e-5; + } + } // fprintf(stderr, "DVol=%1.16f (%1.16f), V0=%1.16f\n", epsvol,0.003e-2*V0,V0); if(start_iteration<inititer) ts_fprintf(stdout, "Starting simulation (first %d x %d MC sweeps will not be recorded on disk)\n", inititer, mcsweeps); @@ -83,6 +97,10 @@ // plane confinement if(vesicle->tape->plane_confinement_switch){ if(vesicle->confinement_plane.z_max-vesicle->confinement_plane.z_min<=vesicle->tape->plane_d){ + ts_fprintf(stdout,"Force is off\n"); + } else { + ts_fprintf(stdout,"Force is on\n"); + min_z=1e10; max_z=-1e10; for(k=0;k<vesicle->vlist->n;k++){ @@ -93,10 +111,11 @@ vesicle->confinement_plane.z_max=max_z; vesicle->confinement_plane.z_min=max_z-vesicle->tape->plane_d; } else { - vesicle->confinement_plane.z_min=min_z-1e-5; - vesicle->confinement_plane.z_max=max_z+1e-5; + vesicle->confinement_plane.z_min=min_z;//-1e-5; + vesicle->confinement_plane.z_max=max_z;//+1e-5; } - } + } + ts_fprintf(stdout,"Planes (zmin, zmax)=(%e,%e)\n",vesicle->confinement_plane.z_min,vesicle->confinement_plane.z_max); } /* vesicle_volume(vesicle); diff --git a/src/vertexmove.c b/src/vertexmove.c index a6fb0e2..d2bac09 100644 --- a/src/vertexmove.c +++ b/src/vertexmove.c @@ -101,7 +101,7 @@ // plane confinement test if(vesicle->tape->plane_confinement_switch){ - if(vtx->z >= vesicle->confinement_plane.z_max || vtx->z <= vesicle->confinement_plane.z_min){ + 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; } @@ -211,8 +211,9 @@ if(vesicle->tape->plane_confinement_switch){ //if planes are not close enough, then repusion force is on if(vesicle->confinement_plane.z_max-vesicle->confinement_plane.z_min > vesicle->tape->plane_d){ - delta_energy+=vesicle->tape->plane_F * 1.0/( (backupvtx->z-vesicle->confinement_plane.z_min) + (backupvtx->z-vesicle->confinement_plane.z_max) ); - delta_energy+=-(vesicle->tape->plane_F * 1.0/( (vtx->z-vesicle->confinement_plane.z_min) + (vtx->z-vesicle->confinement_plane.z_max) ) ); + //ts_fprintf(stderr,"force!!!\n"); + delta_energy-=vesicle->tape->plane_F * ( 1.0/pow(backupvtx->z-vesicle->confinement_plane.z_min,2) + 1.0/pow(-backupvtx->z+vesicle->confinement_plane.z_max,2) ); + delta_energy+=vesicle->tape->plane_F * ( 1.0/pow(vtx->z-vesicle->confinement_plane.z_min,2) + +1.0/pow(-vtx->z+vesicle->confinement_plane.z_max,2) ); } } -- Gitblit v1.9.3