void ecl_util_append_month_range( time_t_vector_type * date_list , time_t start_date , time_t end_date , bool force_append_end) { start_date = util_make_pure_date( start_date ); end_date = util_make_pure_date( end_date ); if (util_is_first_day_in_month( start_date)) time_t_vector_append( date_list , start_date ); { time_t current_date = start_date; while (true) { int month,year; util_set_date_values( current_date , NULL , &month , &year); if (month == 12) { month = 1; year += 1; } else month += 1; current_date = ecl_util_make_date( 1 , month , year ); if (current_date < end_date) time_t_vector_append( date_list , current_date ); else { if (current_date == end_date) time_t_vector_append( date_list , current_date ); else if (force_append_end) time_t_vector_append( date_list , end_date ); break; } } } }
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_after() { 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,2010 )); time_t_vector_append(t, util_make_date_utc( 11,1,2010 )); 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; }
void ecl_util_init_month_range( time_t_vector_type * date_list , time_t start_date , time_t end_date) { time_t_vector_reset( date_list ); if (!util_is_first_day_in_month( start_date )) time_t_vector_append( date_list , util_make_pure_date(start_date)); ecl_util_append_month_range( date_list , start_date , end_date , true ); }
void ecl_sum_data_init_time_vector( const ecl_sum_data_type * data , time_t_vector_type * time_vector , bool report_only) { time_t_vector_reset( time_vector ); time_t_vector_append( time_vector , ecl_smspec_get_start_time( data->smspec )); if (report_only) { int report_step; for (report_step = data->first_report_step; report_step <= data->last_report_step; report_step++) { int last_index = int_vector_iget(data->report_last_index , report_step); const ecl_sum_tstep_type * ministep = ecl_sum_data_iget_ministep( data , last_index ); time_t_vector_append( time_vector , ecl_sum_tstep_get_sim_time( ministep ) ); } } else { int i; for (i = 0; i < vector_get_size(data->data); i++) { const ecl_sum_tstep_type * ministep = ecl_sum_data_iget_ministep( data , i ); time_t_vector_append( time_vector , ecl_sum_tstep_get_sim_time( ministep )); } } }
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; }
void ensemble_init_time_interp( ensemble_type * ensemble ) { int i; for (i = 0; i < ensemble->num_interp; i++) time_t_vector_append( ensemble->interp_time , ensemble->start_time + i * (ensemble->end_time - ensemble->start_time) / (ensemble->num_interp - 1)); }