Esempio n. 1
0
static void enkf_tui_analysis_update_title( enkf_main_type * enkf_main , menu_type * menu ) {
  const analysis_config_type * analysis_config = enkf_main_get_analysis_config( enkf_main );
  analysis_module_type * analysis_module = analysis_config_get_active_module( analysis_config );
  char * title = util_alloc_sprintf("Analysis menu [Current module:%s]" , analysis_module_get_name( analysis_module ));
  menu_set_title( menu , title );
  free( title );
}
Esempio n. 2
0
void enkf_tui_analysis_update_module__(void * arg) {
  enkf_main_type * enkf_main = enkf_main_safe_cast( arg );
  int prompt_len = 50;
  {
    const analysis_config_type * analysis_config = enkf_main_get_analysis_config( enkf_main );
    analysis_module_type * analysis_module = analysis_config_get_active_module( analysis_config );
    char var_name[256];
    char value[256];
    
    util_printf_prompt("Variable to modify" , prompt_len , '=' , "=> "); 
    scanf("%s", var_name);
    {
      char * value_prompt = util_alloc_sprintf("New value for %s" , var_name);
      util_printf_prompt(value_prompt , prompt_len , '=' , "=> "); 
      free( value_prompt );
    }
    scanf("%s", value);

    if (analysis_module_set_var( analysis_module , var_name , value))
      printf("\'%s\' successfully set to \'%s\' \n",var_name , value);
    else
      printf("** Variable/type combination: %s/%s not recognized \n", var_name , value);
    
  }
}
Esempio n. 3
0
void enkf_tui_run_iterated_ES(void * arg) {
  enkf_main_type * enkf_main  = enkf_main_safe_cast( arg );
  const analysis_config_type * analysis_config = enkf_main_get_analysis_config(enkf_main);
  analysis_iter_config_type * iter_config = analysis_config_get_iter_config(analysis_config);
  int num_iter = analysis_iter_config_get_num_iterations(iter_config);
  enkf_main_run_iterated_ES(enkf_main , 0 , num_iter );  
}
Esempio n. 4
0
void * enkf_main_select_module_JOB( void * self , const stringlist_type * args ) {
  enkf_main_type   * enkf_main = enkf_main_safe_cast( self );
  analysis_config_type * analysis_config = enkf_main_get_analysis_config( enkf_main );

  analysis_config_select_module( analysis_config , stringlist_iget( args , 0 ));

  return NULL;
}
Esempio n. 5
0
void * enkf_main_iterated_smoother_JOB( void * self , const stringlist_type * args ) {
  enkf_main_type   * enkf_main = enkf_main_safe_cast( self );
  const analysis_config_type * analysis_config = enkf_main_get_analysis_config(enkf_main);
  analysis_iter_config_type * iter_config = analysis_config_get_iter_config(analysis_config);
  int num_iter = analysis_iter_config_get_num_iterations(iter_config);

  enkf_main_run_iterated_ES( enkf_main , num_iter);
  return NULL;
}
Esempio n. 6
0
void * enkf_main_scale_obs_std_JOB(void * self, const stringlist_type * args ) {
  enkf_main_type   * enkf_main = enkf_main_safe_cast( self );

  double scale_factor;
  if (util_sscanf_double(stringlist_iget(args, 0), &scale_factor)) {
    analysis_config_type * analysis_config = enkf_main_get_analysis_config( enkf_main );
    analysis_config_set_global_std_scaling( analysis_config , scale_factor );
  }
  return NULL;
}
Esempio n. 7
0
void enkf_tui_analysis_list_modules__(void * arg) {
  enkf_main_type * enkf_main = enkf_main_safe_cast( arg );
  const analysis_config_type * analysis_config = enkf_main_get_analysis_config( enkf_main );

  printf("Available modules: ");
  {
    stringlist_type * modules = analysis_config_alloc_module_names( analysis_config );
    stringlist_fprintf( modules , " " , stdout );
    printf("\n");
    stringlist_free( modules );
  }
}
Esempio n. 8
0
void enkf_tui_analysis_select_module__(void * arg) {
  int prompt_len = 50;
  arg_pack_type * arg_pack = arg_pack_safe_cast( arg );
  enkf_main_type * enkf_main = arg_pack_iget_ptr( arg_pack , 0 );
  menu_type * menu = arg_pack_iget_ptr( arg_pack , 1 );

  const analysis_config_type * analysis_config = enkf_main_get_analysis_config(enkf_main);
  char module_name[256];
  util_printf_prompt("Name module to select" , prompt_len , '=' , "=> ");
  scanf("%s", module_name);
  if (analysis_config_select_module( analysis_config , module_name ))
    enkf_tui_analysis_update_title( enkf_main , menu );
}
Esempio n. 9
0
void * enkf_main_export_runpath_file_JOB(void * self, const stringlist_type * args)  {
  enkf_main_type * enkf_main              = enkf_main_safe_cast( self );
  int ensemble_size                       = enkf_main_get_ensemble_size(enkf_main);
  analysis_config_type * analysis_config  = enkf_main_get_analysis_config(enkf_main);
  analysis_iter_config_type * iter_config = analysis_config_get_iter_config(analysis_config);
  int num_iterations                      = analysis_iter_config_get_num_iterations(iter_config);
  const model_config_type * model_config  = enkf_main_get_model_config(enkf_main);
  int_vector_type * realizations          = int_vector_alloc(1, 0);
  int_vector_init_range(realizations, 0, ensemble_size, 1);
  int_vector_type * iterations            = int_vector_alloc(1, 0);


  if (stringlist_get_size(args) > 0) {
    int offset = 0;
    while (true) {
      if (offset == stringlist_get_size( args ))
        break;
      if (0 == strcmp("|" , stringlist_iget( args, offset )))
        break;
       ++offset;
    }

    if (0 != strcmp("*", stringlist_iget(args,0))) {
      char * range_str = stringlist_alloc_joined_substring( args, 0, offset, "");
      string_util_init_value_list(range_str, realizations);
      free(range_str);
    }

    if ((offset < stringlist_get_size(args)) && model_config_runpath_requires_iter(model_config)) {
      if (0 == strcmp("*", stringlist_iget(args, (offset+1))))
        int_vector_init_range(iterations, 0, num_iterations, 1);
      else {
        char * range_str = stringlist_alloc_joined_substring( args, offset+1, stringlist_get_size(args), "");
        string_util_init_value_list(range_str, iterations);
        free(range_str);
       }
    }
  }

  enkf_main_export_runpath_file(enkf_main, realizations, iterations);

  int_vector_free(realizations);
  int_vector_free(iterations);

  return NULL;
}
Esempio n. 10
0
void enkf_tui_analysis_reload_module__(void * arg) {
  enkf_main_type * enkf_main = enkf_main_safe_cast( arg );
  analysis_config_type * analysis_config = (analysis_config_type *) enkf_main_get_analysis_config( enkf_main );
  analysis_config_reload_module( analysis_config , NULL );
}
Esempio n. 11
0
void enkf_tui_run_menu(void * arg) {
  enkf_main_type  * enkf_main  = enkf_main_safe_cast( arg );
  model_config_type * model_config = enkf_main_get_model_config( enkf_main );
  path_fmt_type     * runpath_fmt  = model_config_get_runpath_fmt( model_config );
  menu_type       * menu;

  {
    char   * title = util_alloc_sprintf("Run menu [case:%s  Runpath:%s]" , enkf_main_get_current_fs( enkf_main ) , path_fmt_get_fmt ( runpath_fmt ));
    menu = menu_alloc(title , "Back" , "bB");
    free(title);
  }
  menu_add_item(menu , "Ensemble run: history"                , "xX" , enkf_tui_run_exp         , enkf_main , NULL);
  menu_add_separator( menu );
  {
    const ecl_config_type * ecl_config = enkf_main_get_ecl_config( enkf_main );
    const model_config_type * model_config = enkf_main_get_model_config( enkf_main );
    const analysis_config_type * analysis_config = enkf_main_get_analysis_config(enkf_main);
    
    menu_item_type * enkf_item         = menu_add_item(menu , "Start EnKF run from beginning"          , "sS" , enkf_tui_run_start         , enkf_main , NULL);
    menu_item_type * restart_enkf_item = menu_add_item(menu , "Restart EnKF run from arbitrary state"  , "rR" , enkf_tui_run_restart__       , enkf_main , NULL);
    menu_item_type * ES_item           = menu_add_item(menu , "Integrated smoother update"             , "iI" , enkf_tui_run_smoother      , enkf_main , NULL);
    menu_item_type * it_ES_item        = menu_add_item(menu , "Iterated smoother [RML-EnKF]"           , "tT" , enkf_tui_run_iterated_ES   , enkf_main , NULL);
    menu_item_type * one_more_item     = menu_add_item(menu , "One more iteration (disabled)"          , "mM" , enkf_tui_run_one_more_iteration , enkf_main , NULL);
              
    if (!ecl_config_has_schedule( ecl_config )) {
      menu_item_disable( enkf_item );
      menu_item_disable( restart_enkf_item );
    }
    
    if (!ecl_config_has_init_section( ecl_config )) 
      menu_item_disable( enkf_item );

    menu_item_disable( one_more_item );
    if (!analysis_config_get_module_option(analysis_config , ANALYSIS_ITERABLE)) {
      menu_item_disable( it_ES_item );
      menu_item_disable( one_more_item );
    } else {
      menu_item_disable( enkf_item );
      menu_item_disable( restart_enkf_item );
      menu_item_disable( ES_item );
    }
      
    if (!model_config_has_history( model_config )) {
      menu_item_disable( it_ES_item );
      menu_item_disable( ES_item );
      menu_item_disable( one_more_item );
    }
  }
  menu_add_separator(menu);
  menu_add_item(menu , "Create runpath directories - NO simulation" , "cC" , enkf_tui_run_create_runpath__ , enkf_main , NULL );
  menu_add_item(menu , "Load results manually"                               , "lL"  , enkf_tui_run_manual_load__ , enkf_main , NULL);
  menu_add_separator(menu);
  {
    menu_item_type * analysis_item = menu_add_item(menu , "Analysis menu"             , "aA" , enkf_tui_analysis_menu , enkf_main , NULL);
    
    if (!enkf_main_have_obs( enkf_main )) 
      menu_item_disable( analysis_item );
  }
  /*
    Option to set runpath runtime - currently dismantled.
    
    menu_add_separator(menu);
    {
    model_config_type * model_config = enkf_main_get_model_config( enkf_main );
    path_fmt_type     * runpath_fmt  = model_config_get_runpath_fmt( model_config );
    arg_pack_type * arg_pack = arg_pack_alloc();  
    char * runpath_label = util_alloc_sprintf("Set new value for RUNPATH:%s" , path_fmt_get_fmt ( runpath_fmt ));
    
    arg_pack_append_ptr(arg_pack , model_config);
    arg_pack_append_ptr(arg_pack , menu_add_item(menu , runpath_label , "dD" , enkf_tui_run_set_runpath , arg_pack , arg_pack_free__));
    
    free(runpath_label);
    }
  */
  menu_add_item(menu , "Help"                                  , "hH" , enkf_tui_help_menu_run   , enkf_main , NULL); 
  menu_run(menu);
  menu_free(menu);
}