Ejemplo n.º 1
0
void * enkf_main_std_scale_correlated_obs_JOB(void * self, const stringlist_type * args)  {

  if (stringlist_get_size(args) > 0) {
    enkf_main_type * enkf_main              = enkf_main_safe_cast( self );
    int ensemble_size                       = enkf_main_get_ensemble_size(enkf_main);
    enkf_fs_type * fs                       = enkf_main_get_fs( enkf_main );
    enkf_obs_type * obs                     = enkf_main_get_obs( enkf_main );
    int_vector_type * realizations          = int_vector_alloc(1, 0);
    local_obsdata_type * obsdata = local_obsdata_alloc( "OBS-JOB" );

    int_vector_init_range(realizations, 0, ensemble_size, 1);

    for (int iarg = 0; iarg < stringlist_get_size(args); iarg++) {
      const char * arg_key = stringlist_iget( args , iarg );
      stringlist_type * key_list = enkf_obs_alloc_matching_keylist(obs, arg_key);
      for (int iobs=0; iobs < stringlist_get_size( key_list ); iobs++) {
        const char * obs_key = stringlist_iget( key_list , iobs);
        const obs_vector_type * obs_vector = enkf_obs_get_vector(obs, obs_key);
        local_obsdata_add_node( obsdata , obs_vector_alloc_local_node(obs_vector) );
      }
      stringlist_free( key_list );
    }

    if (local_obsdata_get_size(obsdata) > 0)
      enkf_obs_scale_correlated_std(obs, fs, realizations, obsdata );

    local_obsdata_free( obsdata );
  }

  return NULL;
}
Ejemplo n.º 2
0
local_ministep_type * local_ministep_alloc(const char * name, analysis_module_type* analysis_module) {
  local_ministep_type * ministep = util_malloc( sizeof * ministep );

  ministep->name         = util_alloc_string_copy( name );

  char* obsdata_name = "OBSDATA_";
  char* result = malloc(strlen(obsdata_name)+strlen(name)+1);
  strcpy(result, obsdata_name);
  strcat(result, name);
  ministep->observations = local_obsdata_alloc(result);


  ministep->datasets     = hash_alloc();
  ministep->analysis_module = analysis_module;
  UTIL_TYPE_ID_INIT( ministep , LOCAL_MINISTEP_TYPE_ID);

  return ministep;
}
Ejemplo n.º 3
0
int main(int argc , char ** argv) {
  local_obsdata_type * obsdata;

  obsdata = local_obsdata_alloc( "KEY");
  test_assert_true( local_obsdata_is_instance( obsdata ));
  test_assert_int_equal( 0 , local_obsdata_get_size( obsdata ));
  test_assert_string_equal( "KEY" , local_obsdata_get_name( obsdata ));

  {
    local_obsdata_node_type * obsnode = local_obsdata_node_alloc( "KEY" );
    test_assert_true( local_obsdata_add_node( obsdata , obsnode ) );
    test_assert_false( local_obsdata_add_node( obsdata , obsnode ) );
    test_assert_int_equal( 1 , local_obsdata_get_size( obsdata ));
    test_assert_ptr_equal( obsnode , local_obsdata_iget( obsdata , 0));
  }

  local_obsdata_free( obsdata );

  test_wrapper();
  exit(0);
}
Ejemplo n.º 4
0
void testS( ert_test_context_type * test_context ) {
  {
    enkf_main_type * enkf_main = ert_test_context_get_main( test_context );
    enkf_obs_type * enkf_obs = enkf_main_get_obs( enkf_main );
    enkf_fs_type * fs = enkf_main_get_fs( enkf_main );
    int_vector_type * active_list = int_vector_alloc(0,0);
    obs_data_type * obs_data = obs_data_alloc(1.0);
    local_obsdata_type * obs_set = local_obsdata_alloc( "KEY" );
    bool_vector_type * ens_mask;
    meas_data_type * meas_data;


    for (int i= 0; i < enkf_main_get_ensemble_size( enkf_main); i++)
      int_vector_append( active_list , i );
    ens_mask = int_vector_alloc_mask( active_list);

    obs_data = obs_data_alloc(1.0);
    meas_data = meas_data_alloc( ens_mask );

    enkf_obs_add_local_nodes_with_data( enkf_obs  , obs_set , fs , ens_mask );
    enkf_obs_get_obs_and_measure_data( enkf_obs , fs , obs_set, FORECAST , active_list , meas_data , obs_data);

    {
      FILE * stream = util_fopen("analysis/Smatrix" , "r");
      matrix_type * S = meas_data_allocS( meas_data );
      matrix_type * S0 = matrix_fread_alloc( stream );

      test_assert_true( matrix_equal( S0 , S ));

      matrix_free( S );
      matrix_free( S0 );
      fclose( stream );
    }
    int_vector_free( active_list );
    meas_data_free( meas_data );
    obs_data_free( obs_data );
    local_obsdata_free( obs_set );
    bool_vector_free( ens_mask );
  }
}
Ejemplo n.º 5
0
local_obsdata_type * local_obsdata_alloc_wrapper( local_obsdata_node_type * node ) {
  local_obsdata_type * data = local_obsdata_alloc( local_obsdata_node_get_key( node ));
  local_obsdata_add_node( data , node );
  return data;
}