const int_vector_type * nnc_info_iget_grid_index_list(const nnc_info_type * nnc_info, int lgr_index) { nnc_vector_type * nnc_vector = nnc_info_iget_vector( nnc_info , lgr_index ); if (nnc_vector) return nnc_vector_get_grid_index_list( nnc_vector ); else return NULL; }
static void ecl_nnc_geometry_add_pairs( const ecl_nnc_geometry_type * nnc_geo , const ecl_grid_type * grid ) { int lgr_nr1 = ecl_grid_get_lgr_nr( grid ); const ecl_grid_type * global_grid = ecl_grid_get_global_grid( grid ); if (!global_grid) global_grid = grid; for (int global_index1 = 0; global_index1 < ecl_grid_get_global_size( grid ); global_index1++) { const nnc_info_type * nnc_info = ecl_grid_get_cell_nnc_info1( grid , global_index1 ); if (!nnc_info) continue; for (int lgr_index2 = 0; lgr_index2 < nnc_info_get_size( nnc_info ); lgr_index2++) { const nnc_vector_type * nnc_vector = nnc_info_iget_vector( nnc_info , lgr_index2 ); const int_vector_type * grid2_index_list = nnc_vector_get_grid_index_list( nnc_vector ); const int_vector_type * nnc_index_list = nnc_vector_get_nnc_index_list( nnc_vector ); int lgr_nr2 = nnc_vector_get_lgr_nr( nnc_vector ); for (int index2 = 0; index2 < nnc_vector_get_size( nnc_vector ); index2++) { ecl_nnc_pair_type pair; pair.grid_nr1 = lgr_nr1; pair.global_index1 = global_index1; pair.grid_nr2 = lgr_nr2; pair.global_index2 = int_vector_iget( grid2_index_list , index2 ); pair.input_index = int_vector_iget( nnc_index_list, index2 ); struct_vector_append( nnc_geo->data , &pair); } } } }
static int ecl_nnc_export__( const ecl_grid_type * grid , int lgr_index1 , const ecl_file_type * init_file , ecl_nnc_type * nnc_data, int * nnc_offset) { int nnc_index = *nnc_offset; int lgr_nr1 = ecl_grid_get_lgr_nr( grid ); int global_index1; int valid_trans = 0 ; const ecl_grid_type * global_grid = ecl_grid_get_global_grid( grid ); if (!global_grid) global_grid = grid; for (global_index1 = 0; global_index1 < ecl_grid_get_global_size( grid ); global_index1++) { const nnc_info_type * nnc_info = ecl_grid_get_cell_nnc_info1( grid , global_index1 ); if (nnc_info) { int lgr_index2; for (lgr_index2=0; lgr_index2 < nnc_info_get_size( nnc_info ); lgr_index2++) { const nnc_vector_type * nnc_vector = nnc_info_iget_vector( nnc_info , lgr_index2 ); const int_vector_type * grid2_index_list = nnc_vector_get_grid_index_list( nnc_vector ); const int_vector_type * nnc_index_list = nnc_vector_get_nnc_index_list( nnc_vector ); int lgr_nr2 = nnc_vector_get_lgr_nr( nnc_vector ); const ecl_kw_type * tran_kw = ecl_nnc_export_get_tranx_kw(global_grid , init_file , lgr_nr1 , lgr_nr2 ); int index2; ecl_nnc_type nnc; nnc.grid_nr1 = lgr_nr1; nnc.grid_nr2 = lgr_nr2; nnc.global_index1 = global_index1; for (index2 = 0; index2 < nnc_vector_get_size( nnc_vector ); index2++) { nnc.global_index2 = int_vector_iget( grid2_index_list , index2 ); nnc.input_index = int_vector_iget( nnc_index_list, index2 ); if(tran_kw) { nnc.trans = ecl_kw_iget_as_double(tran_kw, nnc.input_index); valid_trans++; }else{ nnc.trans = ERT_ECL_DEFAULT_NNC_TRANS; } nnc_data[nnc_index] = nnc; nnc_index++; } } } } *nnc_offset = nnc_index; return valid_trans; }
int main(int argc , char ** argv) { int lgr_nr = 77; nnc_info_type * nnc_info = nnc_info_alloc(lgr_nr); test_assert_int_equal( 0 , nnc_info_get_total_size( nnc_info )); test_assert_int_equal( lgr_nr , nnc_info_get_lgr_nr( nnc_info )); test_assert_true(nnc_info_is_instance(nnc_info)); test_assert_not_NULL(nnc_info); nnc_info_add_nnc(nnc_info, lgr_nr, 110 , 0); test_assert_int_equal( 1, nnc_info_get_total_size( nnc_info )); nnc_info_add_nnc(nnc_info, 1, 110 , 1); nnc_info_add_nnc(nnc_info, 1, 111 , 2); test_assert_int_equal( 3, nnc_info_get_total_size( nnc_info )); nnc_vector_type * nnc_vector = nnc_info_get_vector( nnc_info , 1); const int_vector_type * nnc_cells = nnc_info_get_grid_index_list(nnc_info, 1); test_assert_int_equal(int_vector_size(nnc_cells), 2); test_assert_ptr_equal( nnc_cells , nnc_vector_get_grid_index_list( nnc_vector )); nnc_vector_type * nnc_vector_null = nnc_info_get_vector( nnc_info , 2); const int_vector_type * nnc_cells_null = nnc_info_get_grid_index_list(nnc_info, 2); test_assert_NULL(nnc_cells_null); test_assert_NULL(nnc_vector_null); nnc_vector_type * nnc_vector_self = nnc_info_get_self_vector( nnc_info ); const nnc_vector_type * nnc_vector_77 = nnc_info_get_vector( nnc_info , lgr_nr ); test_assert_ptr_equal( nnc_vector_77 , nnc_vector_self ); const int_vector_type * nnc_cells_77 = nnc_info_get_grid_index_list(nnc_info, lgr_nr); const int_vector_type * nnc_cells_self = nnc_info_get_self_grid_index_list(nnc_info); test_assert_ptr_equal( nnc_cells_77 , nnc_cells_self ); test_assert_int_equal( 2 , nnc_info_get_size( nnc_info )); test_assert_ptr_equal( nnc_info_get_vector( nnc_info , 1 ) , nnc_info_iget_vector( nnc_info , 1 )); nnc_info_free(nnc_info); exit(0); }