int ecl_sum_data_get_report_step_from_time(const ecl_sum_data_type * data , time_t sim_time) { if ((sim_time < data->data_start_time) || (sim_time > data->sim_end)) return -1; { int report_step = -1; time_t_vector_type * time_map = time_t_vector_alloc( 0 , 0 ); int_vector_type * report_map = int_vector_alloc( 0 , 0 ); int i; for (i=1; i < int_vector_size( data->report_last_index ); i++) { int ministep_index = int_vector_iget( data->report_last_index , i ); const ecl_sum_tstep_type * ministep = vector_iget_const( data->data , ministep_index ); time_t_vector_iset( time_map , i , ecl_sum_tstep_get_sim_time( ministep )); int_vector_iset( report_map , i , ecl_sum_tstep_get_report( ministep )); } { int index = time_t_vector_index_sorted( time_map , sim_time ); if (index >= 0) report_step = int_vector_iget( report_map , index ); } int_vector_free( report_map ); time_t_vector_free( time_map ); return report_step; } }
void test_correct_time_vector() { ecl_sum_type * ecl_sum = test_alloc_ecl_sum(); time_t_vector_type * t = time_t_vector_alloc( 0 , 0 ); time_t_vector_append(t, util_make_date_utc( 2,1,2010 )); time_t_vector_append(t, util_make_date_utc( 4,1,2010 )); time_t_vector_append(t, util_make_date_utc( 6,1,2010 )); time_t_vector_append(t, util_make_date_utc( 8,1,2010 )); ecl_sum_type * ecl_sum_resampled = ecl_sum_alloc_resample(ecl_sum, "kk", t); test_assert_int_equal( ecl_sum_get_report_time(ecl_sum_resampled, 2) , util_make_date_utc( 6,1,2010 )); const ecl_smspec_type * smspec_resampled = ecl_sum_get_smspec(ecl_sum_resampled); const smspec_node_type * node1 = ecl_smspec_iget_node(smspec_resampled, 1); const smspec_node_type * node2 = ecl_smspec_iget_node(smspec_resampled, 2); const smspec_node_type * node3 = ecl_smspec_iget_node(smspec_resampled, 3); test_assert_string_equal( "BPR" , smspec_node_get_keyword(node2) ); test_assert_string_equal( "BARS" , smspec_node_get_unit(node2) ); test_assert_double_equal(3.33333, ecl_sum_get_from_sim_time( ecl_sum_resampled, util_make_date_utc( 6,1,2010 ), node1) ); test_assert_double_equal(3.33333, ecl_sum_get_from_sim_time( ecl_sum_resampled, util_make_date_utc( 2,1,2010 ), node2) ); test_assert_double_equal(10.0000, ecl_sum_get_from_sim_time( ecl_sum_resampled, util_make_date_utc( 4,1,2010 ), node3) ); ecl_sum_free(ecl_sum_resampled); time_t_vector_free(t); ecl_sum_free(ecl_sum); }
void test_time_before() { ecl_sum_type * ecl_sum = test_alloc_ecl_sum(); time_t_vector_type * t = time_t_vector_alloc( 0 , 0 ); time_t_vector_append(t, util_make_date_utc( 1,1,2009 )); test_assert_NULL( ecl_sum_alloc_resample(ecl_sum, "kk", t) ); time_t_vector_free(t); ecl_sum_free(ecl_sum); }
time_t_vector_type * sched_file_alloc_time_t_vector( const sched_file_type * sched_file ) { time_t_vector_type * vector = time_t_vector_alloc(0,0); int i; time_t_vector_append( vector , sched_file->start_time ); for (i=1; i < vector_get_size( sched_file->blocks ); i++) { const sched_block_type * block = vector_iget_const( sched_file->blocks , i ); time_t_vector_append( vector , block->block_end_time ); } return vector; }
ensemble_type * ensemble_alloc( ) { ensemble_type * ensemble = util_malloc( sizeof * ensemble ); ensemble->num_interp = DEFAULT_NUM_INTERP; ensemble->start_time = -1; ensemble->end_time = -1; ensemble->data = vector_alloc_new(); ensemble->interp_time = time_t_vector_alloc( 0 , -1 ); pthread_rwlock_init( &ensemble->rwlock , NULL ); return ensemble; }
time_t_vector_type * ecl_sum_alloc_time_solution( const ecl_sum_type * ecl_sum , const char * gen_key , double cmp_value , bool rates_clamp_lower) { time_t_vector_type * solution = time_t_vector_alloc( 0 , 0); { double_vector_type * seconds = ecl_sum_alloc_seconds_solution( ecl_sum , gen_key , cmp_value , rates_clamp_lower ); time_t start_time = ecl_sum_get_start_time(ecl_sum); for (int i=0; i < double_vector_size( seconds ); i++) { time_t t = start_time; util_inplace_forward_seconds( &t , double_vector_iget( seconds , i )); time_t_vector_append( solution , t ); } double_vector_free( seconds ); } return solution; }
static void sched_history_realloc( sched_history_type * sched_history ) { if (sched_history->well_history != NULL) hash_free( sched_history->well_history ); sched_history->well_history = hash_alloc(); if (sched_history->group_history != NULL) hash_free( sched_history->group_history ); sched_history->group_history = hash_alloc(); if (sched_history->historical != NULL) bool_vector_free( sched_history->historical ); sched_history->historical = bool_vector_alloc( 0 , true ); if (sched_history->time != NULL) time_t_vector_free(sched_history->time); sched_history->time = time_t_vector_alloc( 0 , 0 ); sched_history->last_history_step = 0; }
time_t_vector_type * ecl_sum_data_alloc_time_vector( const ecl_sum_data_type * data , bool report_only) { time_t_vector_type * time_vector = time_t_vector_alloc(0,0); ecl_sum_data_init_time_vector( data , time_vector , report_only); return time_vector; }