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