Beispiel #1
0
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;
      }
    }
  }
}
Beispiel #2
0
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);
}
Beispiel #3
0
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);
}
Beispiel #4
0
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;
}
Beispiel #5
0
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 );
}
Beispiel #6
0
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 ));
    }
  }
}
Beispiel #7
0
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;
}
Beispiel #8
0
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));
}