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 ); }
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); } }
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 ); }
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; }
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; }
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; }
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 ); } }
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 ); }
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; }
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 ); }
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); }