Example #1
0
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);
}
Example #2
0
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);
}
Example #3
0
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 );
}
Example #4
0
File: enkf_fs.c Project: shulNN/ert
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);
  }
}