예제 #1
0
void test_create_from_field(ecl_grid_type * grid) {
  field_config_type * field_config = field_config_alloc_empty( "PRESSURE" , grid , NULL );
  block_obs_type * block_obs = block_obs_alloc( "ObsKey" , field_config , grid );
  
  test_assert_true( block_obs_is_instance( block_obs ));
  test_assert_int_equal(0 , block_obs_get_size( block_obs ));
  block_obs_append_field_obs( block_obs , 10 , 12 , 8  , 100 , 25);
  test_assert_int_equal(1 , block_obs_get_size( block_obs ));
  block_obs_append_field_obs( block_obs , 10 , 12 , 9  , 100 , 25);
  test_assert_int_equal(2 , block_obs_get_size( block_obs ));
  block_obs_free( block_obs );
  field_config_free( field_config );
}
예제 #2
0
/**
   This will create a new gen_kw_config instance which is NOT yet
   valid. Mainly support code for the GUI.
*/
enkf_config_node_type * enkf_config_node_new_field( const char * key , ecl_grid_type * ecl_grid, field_trans_table_type * trans_table) {
  enkf_config_node_type * config_node = enkf_config_node_alloc__( INVALID , FIELD , key );
  config_node->data = field_config_alloc_empty( key , ecl_grid , trans_table );
  return config_node;
}
예제 #3
0
void check_exported_data(const char * exported_file,
                                const char * init_file,
                                field_file_format_type file_type,
                                const field_config_type * field_config,
                                const field_type * field,
                                int nx,
                                int ny,
                                int nz) {

  FILE * original_stream                    = NULL;
  ecl_kw_type * kw_original                 = NULL;
  FILE * exported_stream                    = NULL;
  ecl_kw_type * kw_exported                 = NULL;
  field_type * exported_field               = NULL;
  field_config_type * exported_field_config = NULL;

  {
    if (init_file) {
      original_stream = util_fopen( init_file , "r");
      kw_original = ecl_kw_fscanf_alloc_grdecl_dynamic( original_stream , field_config_get_key(field_config) , ECL_DOUBLE_TYPE );
    }

    if (ECL_GRDECL_FILE == file_type) {
      exported_stream = util_fopen( exported_file , "r");
      kw_exported     = ecl_kw_fscanf_alloc_grdecl_dynamic( exported_stream , field_config_get_key(field_config) , ECL_DOUBLE_TYPE );
    } else if (RMS_ROFF_FILE == file_type) {
      ecl_grid_type * grid  = field_config_get_grid(field_config);
      exported_field_config = field_config_alloc_empty(field_config_get_key(field_config), grid, NULL, true);
      exported_field        = field_alloc(exported_field_config);

      bool keep_inactive = true;
      field_fload_rms(exported_field, exported_file, keep_inactive);
    }
  }


  {
    int k, j, i = 0;

    for (k=0; k < nz; k++) {
      for (j=0; j < ny; j++) {
        for (i=0; i < nx; i++) {
          bool active           = field_config_active_cell(field_config, i, j, k);
          double field_value    = active ? field_ijk_get_double(field, i, j, k) : 0.0;
          int global_index      = field_config_global_index(field_config , i , j , k);
          double exported_value = 0.0;
          if (ECL_GRDECL_FILE == file_type)
            exported_value = ecl_kw_iget_as_double(kw_exported, global_index);
          else if (RMS_ROFF_FILE == file_type) {
            exported_value = field_ijk_get_double(exported_field, i, j, k);
          }
          double initial_value  = init_file ? ecl_kw_iget_as_double(kw_original, global_index) : 0.0;

          if (active)
            test_assert_double_equal(field_value, exported_value);
          else if (init_file)
            test_assert_double_equal(initial_value, exported_value);
          else if (file_type == RMS_ROFF_FILE)
            test_assert_double_equal(RMS_INACTIVE_DOUBLE, exported_value);
          else
            test_assert_double_equal(0.0, exported_value);
        }
      }
    }
  }


  if (init_file) {
    util_fclose(original_stream);
    ecl_kw_free(kw_original);
  }

  if (ECL_GRDECL_FILE == file_type) {
    util_fclose(exported_stream);
    ecl_kw_free(kw_exported);
  } else
    field_free(exported_field);
}