From 510cf15f280b8d4687963331fd3dac7282072d13 Mon Sep 17 00:00:00 2001 From: donassbr Date: Wed, 4 Nov 2009 12:13:50 +0000 Subject: [PATCH] Add 2 tests to handle problems when using timesteps too big. This part of code will disappear soon, but this commit can be used to retrieve this implementation of trace integration feature (with multi levels). git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6829 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/surf/cpu_ti.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/surf/cpu_ti.c b/src/surf/cpu_ti.c index 0da2860504..8a17197020 100644 --- a/src/surf/cpu_ti.c +++ b/src/surf/cpu_ti.c @@ -1442,6 +1442,12 @@ static double surf_cpu_integrate_exactly(surf_cpu_ti_tgmr_t trace, int index, return (b - a) * (trace->levels[0]->values[index]); while (a > tmgr_date) { + /* too big timestep */ + if (tmgr_index >= + xbt_dynar_length(trace->levels[0]->power_trace->event_list)) { + return (b - a) * (trace->levels[0]->values[index]); + } + xbt_dynar_get_cpy(trace->levels[0]->power_trace->event_list, tmgr_index, &elem); tmgr_date += elem.delta; @@ -1507,6 +1513,12 @@ static double surf_cpu_solve_exactly(surf_cpu_ti_tgmr_t trace, int index, return amount / (trace->levels[0]->values[index]); while (a > tmgr_date) { + /* too big timestep */ + if (tmgr_index >= + xbt_dynar_length(trace->levels[0]->power_trace->event_list)) { + return (amount) * (trace->levels[0]->values[index]); + } + xbt_dynar_get_cpy(trace->levels[0]->power_trace->event_list, tmgr_index, &elem); tmgr_date += elem.delta; -- 2.20.1