From 62681163a4c47fc6dbd6b2b96f84171b20cba3ed Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Sat, 08 Mar 2014 16:43:55 +0000 Subject: [PATCH] continuation s working. now reset counter is needed --- src/main.c | 9 +++++++-- src/timestep.c | 6 +++--- src/timestep.h | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main.c b/src/main.c index 44d90e2..506bd37 100644 --- a/src/main.c +++ b/src/main.c @@ -21,7 +21,7 @@ int main(int argv, char *argc[]){ ts_vesicle *vesicle; ts_tape *tape; - ts_uint start_iteration=0; + ts_uint start_iteration=-1; parse_args(argv,argc); ts_fprintf(stdout,"\nStarting program...\n\n"); if(force_from_tape){ @@ -37,9 +37,14 @@ ts_fprintf(stdout,"**********************************************************************\n\n"); tape=parsetape("tape"); vesicle=restore_state(&start_iteration); + +if(start_iteration>=tape->iterations){ + ts_fprintf(stdout, "Simulation already completed. if you want to rerun it try with --force-from-tape or --reset-iteration-count\n\n"); + return 0; +} } -run_simulation(vesicle, tape->mcsweeps, tape->inititer, tape->iterations); +run_simulation(vesicle, tape->mcsweeps, tape->inititer, tape->iterations, start_iteration+1); write_master_xml_file("test.pvd"); write_dout_fcompat_file(vesicle,"dout"); vesicle_free(vesicle); diff --git a/src/timestep.c b/src/timestep.c index 4ac20be..92a4a25 100644 --- a/src/timestep.c +++ b/src/timestep.c @@ -9,13 +9,13 @@ #include "frame.h" #include "io.h" -ts_bool run_simulation(ts_vesicle *vesicle, ts_uint mcsweeps, ts_uint inititer, ts_uint iterations){ +ts_bool run_simulation(ts_vesicle *vesicle, ts_uint mcsweeps, ts_uint inititer, ts_uint iterations, ts_uint start_iteration){ ts_uint i, j; centermass(vesicle); cell_occupation(vesicle); - ts_fprintf(stdout, "Starting simulation (first %d x %d MC sweeps will not be recorded on disk)\n", inititer, mcsweeps); - for(i=0;i<inititer+iterations;i++){ + if(start_iteration<inititer) ts_fprintf(stdout, "Starting simulation (first %d x %d MC sweeps will not be recorded on disk)\n", inititer, mcsweeps); + for(i=start_iteration;i<inititer+iterations;i++){ for(j=0;j<mcsweeps;j++){ single_timestep(vesicle); } diff --git a/src/timestep.h b/src/timestep.h index e25234d..dd18481 100644 --- a/src/timestep.h +++ b/src/timestep.h @@ -1,5 +1,5 @@ #ifndef _TIMESTEP_H #define _TIMESTEP_H ts_bool single_timestep(ts_vesicle *vesicle); -ts_bool run_simulation(ts_vesicle *vesicle, ts_uint mcsweeps, ts_uint inititer, ts_uint iterations); +ts_bool run_simulation(ts_vesicle *vesicle, ts_uint mcsweeps, ts_uint inititer, ts_uint iterations, ts_uint start_simulation); #endif -- Gitblit v1.9.3