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); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- std::string RifReaderEclipseSummary::unitName(const RifEclipseSummaryAddress& resultAddress) { int variableIndex = indexFromAddress(resultAddress); if(variableIndex < 0) return ""; const smspec_node_type * ertSumVarNode = ecl_smspec_iget_node(eclSmSpec, variableIndex); return smspec_node_get_unit(ertSumVarNode); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RifReaderEclipseSummary::buildMetaData() { if(m_allResultAddresses.size() == 0) { int varCount = ecl_smspec_num_nodes(eclSmSpec); for(int i = 0; i < varCount; i++) { const smspec_node_type * ertSumVarNode = ecl_smspec_iget_node(eclSmSpec, i); RifEclipseSummaryAddress addr = addressFromErtSmSpecNode(ertSumVarNode); m_allResultAddresses.push_back(addr); m_resultAddressToErtNodeIdx[addr] = i; } } }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- bool RifReaderEclipseSummary::values(const RifEclipseSummaryAddress& resultAddress, std::vector<double>* values) { assert(ecl_sum != NULL); int variableIndex = indexFromAddress(resultAddress); if ( variableIndex < 0 ) return false; values->clear(); int tsCount = timeStepCount(); values->reserve(timeStepCount()); const smspec_node_type * ertSumVarNode = ecl_smspec_iget_node(eclSmSpec, variableIndex); int paramsIndex = smspec_node_get_params_index(ertSumVarNode); for(int time_index = 0; time_index < tsCount; time_index++) { double value = ecl_sum_iget(ecl_sum, time_index, paramsIndex); values->push_back(value); } return true; }