void enkf_main_init_case_from_existing(const enkf_main_type * enkf_main, enkf_fs_type * source_case_fs, int source_report_step, state_enum source_state, enkf_fs_type * target_case_fs ) { stringlist_type * param_list = ensemble_config_alloc_keylist_from_var_type( enkf_main_get_ensemble_config(enkf_main) , PARAMETER ); /* Select only paramters - will fail for GEN_DATA of type DYNAMIC_STATE. */ int target_report_step = 0; state_enum target_state = ANALYZED; bool_vector_type * iactive = bool_vector_alloc( 0 , true ); enkf_main_copy_ensemble(enkf_main, source_case_fs, source_report_step, source_state, target_case_fs, target_report_step, target_state , iactive, NULL, param_list); enkf_fs_fsync(target_case_fs); bool_vector_free(iactive); stringlist_free(param_list); }
void enkf_main_init_case_from_existing_custom(const enkf_main_type * enkf_main, enkf_fs_type * source_case_fs, int source_report_step, enkf_fs_type * target_case_fs, stringlist_type * node_list, bool_vector_type * iactive) { int target_report_step = 0; enkf_main_copy_ensemble(enkf_main, source_case_fs, source_report_step, target_case_fs, target_report_step, iactive, NULL, node_list); enkf_fs_fsync(target_case_fs); }
void enkf_fs_close( enkf_fs_type * fs ) { enkf_fs_fsync( fs ); enkf_fs_fwrite_misfit( fs ); enkf_fs_free_driver( fs->dynamic_forecast ); enkf_fs_free_driver( fs->dynamic_analyzed ); enkf_fs_free_driver( fs->parameter ); enkf_fs_free_driver( fs->eclipse_static ); enkf_fs_free_driver( fs->index ); util_safe_free( fs->case_name ); util_safe_free( fs->root_path ); util_safe_free( fs->mount_point ); path_fmt_free( fs->case_fmt ); path_fmt_free( fs->case_member_fmt ); path_fmt_free( fs->case_tstep_fmt ); path_fmt_free( fs->case_tstep_member_fmt ); time_map_free( fs->time_map ); free( fs ); }
static void enkf_fs_umount( enkf_fs_type * fs ) { if (!fs->read_only) { enkf_fs_fsync( fs ); enkf_fs_fwrite_misfit( fs ); } if (fs->lock_fd > 0) { close( fs->lock_fd ); // Closing the lock_file file descriptor - and releasing the lock. util_unlink_existing( fs->lock_file ); } { int refcount = fs->refcount; if (refcount == 0) { enkf_fs_free_driver( fs->dynamic_forecast ); enkf_fs_free_driver( fs->dynamic_analyzed ); enkf_fs_free_driver( fs->parameter ); enkf_fs_free_driver( fs->eclipse_static ); enkf_fs_free_driver( fs->index ); util_safe_free( fs->case_name ); util_safe_free( fs->root_path ); util_safe_free(fs->lock_file); util_safe_free( fs->mount_point ); path_fmt_free( fs->case_fmt ); path_fmt_free( fs->case_member_fmt ); path_fmt_free( fs->case_tstep_fmt ); path_fmt_free( fs->case_tstep_member_fmt ); state_map_free( fs->state_map ); time_map_free( fs->time_map ); cases_config_free( fs->cases_config ); free( fs ); } else util_abort("%s: internal fuckup - tried to umount a filesystem with refcount:%d\n",__func__ , refcount); } }