ecl_smspec.hpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2011 Equinor ASA, Norway.
3
4 The file 'ecl_smspec.h' is part of ERT - Ensemble based Reservoir Tool.
5
6 ERT is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 ERT is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE.
14
15 See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
16 for more details.
17*/
18
19#ifndef ERT_ECL_SMSPEC
20#define ERT_ECL_SMSPEC
21
22
23#include <time.h>
24#include <stdbool.h>
25
26#include <ert/util/float_vector.hpp>
28
29#include <ert/ecl/ecl_util.hpp>
31
32typedef struct ecl_smspec_struct ecl_smspec_type;
33
34#ifdef __cplusplus
35#include <vector>
36const std::vector<float>& ecl_smspec_get_params_default( const ecl_smspec_type * ecl_smspec );
37const ecl::smspec_node& ecl_smspec_get_well_var_node( const ecl_smspec_type * smspec , const char * well , const char * var);
38const ecl::smspec_node& ecl_smspec_get_group_var_node( const ecl_smspec_type * smspec , const char * group , const char * var);
39const ecl::smspec_node& ecl_smspec_get_field_var_node( const ecl_smspec_type * smspec , const char * var);
40const ecl::smspec_node& ecl_smspec_get_region_var_node(const ecl_smspec_type * ecl_smspec , const char *region_var , int region_nr);
41const ecl::smspec_node& ecl_smspec_get_misc_var_node(const ecl_smspec_type * ecl_smspec , const char *var);
42const ecl::smspec_node& ecl_smspec_get_block_var_node(const ecl_smspec_type * ecl_smspec , const char * block_var , int block_nr);
43const ecl::smspec_node& ecl_smspec_get_block_var_node_ijk(const ecl_smspec_type * ecl_smspec , const char * block_var , int i , int j , int k);
44const ecl::smspec_node& ecl_smspec_get_well_completion_var_node(const ecl_smspec_type * ecl_smspec , const char * well , const char *var, int cell_nr);
45const ecl::smspec_node& ecl_smspec_get_general_var_node( const ecl_smspec_type * smspec , const char * lookup_kw );
46const ecl::smspec_node& ecl_smspec_iget_node_w_node_index( const ecl_smspec_type * smspec , int node_index );
47const ecl::smspec_node& ecl_smspec_iget_node_w_params_index( const ecl_smspec_type * smspec , int params_index );
48const ecl::smspec_node& ecl_smspec_iget_node(const ecl_smspec_type * smspec, int index);
49#endif
50
51#ifdef __cplusplus
52extern "C" {
53#endif
54
55
66 int * ecl_smspec_alloc_mapping( const ecl_smspec_type * self, const ecl_smspec_type * other);
67 const int * ecl_smspec_get_index_map( const ecl_smspec_type * smspec );
73 ecl_smspec_type * ecl_smspec_alloc_empty(bool write_mode , const char * key_join_string);
74
75 ecl_smspec_type * ecl_smspec_alloc_restart_writer( const char * key_join_string , const char * restart_case, int restart_step, time_t sim_start , bool time_in_days , int nx , int ny , int nz);
76
77 ecl_smspec_type * ecl_smspec_alloc_writer( const char * key_join_string , time_t sim_start , bool time_in_days , int nx , int ny , int nz);
78 void ecl_smspec_fwrite( const ecl_smspec_type * smspec , const char * ecl_case , bool fmt_file );
79
80 ecl_smspec_type * ecl_smspec_fread_alloc(const char *header_file, const char * key_join_string , bool include_restart);
82
86
87
88 int ecl_smspec_get_well_var_params_index(const ecl_smspec_type * ecl_smspec , const char * well , const char *var);
89 bool ecl_smspec_has_well_var(const ecl_smspec_type * ecl_smspec , const char * well , const char *var);
90
91 int ecl_smspec_get_group_var_params_index(const ecl_smspec_type * ecl_smspec , const char * group , const char *var);
92 bool ecl_smspec_has_group_var(const ecl_smspec_type * ecl_smspec , const char * group , const char *var);
93
94 int ecl_smspec_get_field_var_params_index(const ecl_smspec_type * ecl_smspec , const char *var);
95 bool ecl_smspec_has_field_var(const ecl_smspec_type * ecl_smspec , const char *var);
96
97 int ecl_smspec_get_region_var_params_index(const ecl_smspec_type * ecl_smspec , const char * region_var , int region_nr);
98 bool ecl_smspec_has_region_var(const ecl_smspec_type * ecl_smspec , const char * region_var , int region_nr);
99
100 int ecl_smspec_get_misc_var_params_index(const ecl_smspec_type * ecl_smspec , const char *var);
101 bool ecl_smspec_has_misc_var(const ecl_smspec_type * ecl_smspec , const char *var);
102
103 int ecl_smspec_get_block_var_params_index(const ecl_smspec_type * ecl_smspec , const char * block_var , int block_nr);
104 bool ecl_smspec_has_block_var(const ecl_smspec_type * ecl_smspec , const char * block_var , int block_nr);
105
106 int ecl_smspec_get_block_var_params_index_ijk(const ecl_smspec_type * ecl_smspec , const char * block_var , int i , int j , int k);
107 bool ecl_smspec_has_block_var_ijk(const ecl_smspec_type * ecl_smspec , const char * block_var , int i , int j , int k);
108
109 int ecl_smspec_get_well_completion_var_params_index(const ecl_smspec_type * ecl_smspec , const char * well , const char *var, int cell_nr);
110 bool ecl_smspec_has_well_completion_var(const ecl_smspec_type * ecl_smspec , const char * well , const char *var, int cell_nr);
111
112 int ecl_smspec_get_general_var_params_index(const ecl_smspec_type * ecl_smspec , const char * lookup_kw);
113 bool ecl_smspec_has_general_var(const ecl_smspec_type * ecl_smspec , const char * lookup_kw);
114 const char * ecl_smspec_get_general_var_unit( const ecl_smspec_type * ecl_smspec , const char * lookup_kw);
115
116
117 //bool ecl_smspec_general_is_total(const ecl_smspec_type * ecl_smspec , const char * gen_key);
118 //bool ecl_smspec_is_rate(const ecl_smspec_type * smspec , int kw_index);
119 //ecl_smspec_var_type ecl_smspec_iget_var_type( const ecl_smspec_type * smspec , int index );
120 //const char * ecl_smspec_iget_unit( const ecl_smspec_type * smspec , int index );
121 //int ecl_smspec_iget_num( const ecl_smspec_type * smspec , int index );
122 //const char * ecl_smspec_iget_wgname( const ecl_smspec_type * smspec , int index );
123 //const char * ecl_smspec_iget_keyword( const ecl_smspec_type * smspec , int index );
124
125
126
127
128 void ecl_smspec_select_matching_general_var_list( const ecl_smspec_type * smspec , const char * pattern , stringlist_type * keys);
130
134 /*****************************************************************/
135 bool ecl_smspec_get_formatted( const ecl_smspec_type * ecl_smspec);
136 const char * ecl_smspec_get_header_file( const ecl_smspec_type * ecl_smspec );
137 stringlist_type * ecl_smspec_alloc_well_list( const ecl_smspec_type * smspec , const char * pattern);
138 stringlist_type * ecl_smspec_alloc_group_list( const ecl_smspec_type * smspec , const char * pattern);
140 const char * ecl_smspec_get_simulation_path(const ecl_smspec_type * ecl_smspec);
143 const char * ecl_smspec_get_restart_case( const ecl_smspec_type * ecl_smspec);
144 const char * ecl_smspec_get_join_string( const ecl_smspec_type * smspec);
145
146 const int * ecl_smspec_get_grid_dims( const ecl_smspec_type * smspec );
149
150 char * ecl_smspec_alloc_well_key( const ecl_smspec_type * smspec , const char * keyword , const char * wgname);
151 bool ecl_smspec_equal( const ecl_smspec_type * self , const ecl_smspec_type * other);
152
153 // void ecl_smspec_sort( ecl_smspec_type * smspec );
155
156
157#ifdef __cplusplus
158}
159#endif
160
162const ecl::smspec_node * ecl_smspec_add_node(ecl_smspec_type * ecl_smspec, const char * keyword, int num, const char * unit, float default_value);
163const ecl::smspec_node * ecl_smspec_add_node(ecl_smspec_type * ecl_smspec, const char * keyword, const char * unit, float default_value);
164const ecl::smspec_node * ecl_smspec_add_node(ecl_smspec_type * ecl_smspec, const char * keyword, const char * wgname, const char * unit, float default_value);
165const ecl::smspec_node * ecl_smspec_add_node(ecl_smspec_type * ecl_smspec, const char * keyword, const char * wgname, int num, const char * unit, float default_value);
166const ecl::smspec_node * ecl_smspec_add_node(ecl_smspec_type * ecl_smspec, const char * keyword, int num, const char * unit, float default_value);
167
169 int params_index,
170 const char * keyword,
171 const char * wgname,
172 int num,
173 const char * unit,
174 float default_value);
175
177 int params_index,
178 const char * keyword,
179 const char * wgname,
180 int num,
181 const char * unit,
182 const char * lgr,
183 int lgr_i, int lgr_j, int lgr_k,
184 float default_value);
185
186
187
188
189#endif
int index
Definition: cJSON.h:168
Definition: smspec_node.hpp:36
void ecl_smspec_select_matching_general_var_list(const ecl_smspec_type *smspec, const char *pattern, stringlist_type *keys)
int ecl_smspec_get_block_var_params_index_ijk(const ecl_smspec_type *ecl_smspec, const char *block_var, int i, int j, int k)
const char * ecl_smspec_get_header_file(const ecl_smspec_type *ecl_smspec)
struct ecl_smspec_struct ecl_smspec_type
Definition: ecl_smspec.hpp:32
int ecl_smspec_get_first_step(const ecl_smspec_type *ecl_smspec)
ecl_smspec_type * ecl_smspec_alloc_empty(bool write_mode, const char *key_join_string)
time_t ecl_smspec_get_start_time(const ecl_smspec_type *)
int ecl_smspec_get_date_month_index(const ecl_smspec_type *smspec)
bool ecl_smspec_has_block_var(const ecl_smspec_type *ecl_smspec, const char *block_var, int block_nr)
int ecl_smspec_get_well_var_params_index(const ecl_smspec_type *ecl_smspec, const char *well, const char *var)
int ecl_smspec_num_nodes(const ecl_smspec_type *smspec)
const char * ecl_smspec_get_join_string(const ecl_smspec_type *smspec)
bool ecl_smspec_has_field_var(const ecl_smspec_type *ecl_smspec, const char *var)
const char * ecl_smspec_get_restart_case(const ecl_smspec_type *ecl_smspec)
stringlist_type * ecl_smspec_alloc_well_list(const ecl_smspec_type *smspec, const char *pattern)
int ecl_smspec_get_date_year_index(const ecl_smspec_type *smspec)
bool ecl_smspec_has_group_var(const ecl_smspec_type *ecl_smspec, const char *group, const char *var)
bool ecl_smspec_has_block_var_ijk(const ecl_smspec_type *ecl_smspec, const char *block_var, int i, int j, int k)
int ecl_smspec_get_general_var_params_index(const ecl_smspec_type *ecl_smspec, const char *lookup_kw)
bool ecl_smspec_get_formatted(const ecl_smspec_type *ecl_smspec)
bool ecl_smspec_needs_num(ecl_smspec_var_type var_type)
int ecl_smspec_get_date_day_index(const ecl_smspec_type *smspec)
int ecl_smspec_get_time_index(const ecl_smspec_type *ecl_smspec)
ecl_smspec_type * ecl_smspec_fread_alloc(const char *header_file, const char *key_join_string, bool include_restart)
bool ecl_smspec_needs_wgname(ecl_smspec_var_type var_type)
bool ecl_smspec_has_misc_var(const ecl_smspec_type *ecl_smspec, const char *var)
const int * ecl_smspec_get_index_map(const ecl_smspec_type *smspec)
ecl_smspec_var_type ecl_smspec_iget_var_type(const ecl_smspec_type *smspec, int index)
bool ecl_smspec_has_general_var(const ecl_smspec_type *ecl_smspec, const char *lookup_kw)
void ecl_smspec_free(ecl_smspec_type *)
const char * ecl_smspec_get_simulation_path(const ecl_smspec_type *ecl_smspec)
int * ecl_smspec_alloc_mapping(const ecl_smspec_type *self, const ecl_smspec_type *other)
ert_ecl_unit_enum ecl_smspec_get_unit_system(const ecl_smspec_type *smspec)
bool ecl_smspec_has_region_var(const ecl_smspec_type *ecl_smspec, const char *region_var, int region_nr)
int ecl_smspec_get_region_var_params_index(const ecl_smspec_type *ecl_smspec, const char *region_var, int region_nr)
int ecl_smspec_get_field_var_params_index(const ecl_smspec_type *ecl_smspec, const char *var)
const char * ecl_smspec_get_var_type_name(ecl_smspec_var_type var_type)
int ecl_smspec_get_restart_step(const ecl_smspec_type *ecl_smspec)
int ecl_smspec_get_group_var_params_index(const ecl_smspec_type *ecl_smspec, const char *group, const char *var)
stringlist_type * ecl_smspec_alloc_matching_general_var_list(const ecl_smspec_type *smspec, const char *pattern)
void ecl_smspec_fwrite(const ecl_smspec_type *smspec, const char *ecl_case, bool fmt_file)
ecl_smspec_var_type ecl_smspec_identify_var_type(const char *var)
ecl_smspec_type * ecl_smspec_alloc_restart_writer(const char *key_join_string, const char *restart_case, int restart_step, time_t sim_start, bool time_in_days, int nx, int ny, int nz)
int ecl_smspec_get_time_seconds(const ecl_smspec_type *ecl_smspec)
int ecl_smspec_get_block_var_params_index(const ecl_smspec_type *ecl_smspec, const char *block_var, int block_nr)
const int * ecl_smspec_get_grid_dims(const ecl_smspec_type *smspec)
bool ecl_smspec_has_well_completion_var(const ecl_smspec_type *ecl_smspec, const char *well, const char *var, int cell_nr)
bool ecl_smspec_has_well_var(const ecl_smspec_type *ecl_smspec, const char *well, const char *var)
stringlist_type * ecl_smspec_alloc_well_var_list(const ecl_smspec_type *smspec)
const char * ecl_smspec_get_general_var_unit(const ecl_smspec_type *ecl_smspec, const char *lookup_kw)
stringlist_type * ecl_smspec_alloc_group_list(const ecl_smspec_type *smspec, const char *pattern)
ecl_smspec_type * ecl_smspec_alloc_writer(const char *key_join_string, time_t sim_start, bool time_in_days, int nx, int ny, int nz)
bool ecl_smspec_equal(const ecl_smspec_type *self, const ecl_smspec_type *other)
int ecl_smspec_get_well_completion_var_params_index(const ecl_smspec_type *ecl_smspec, const char *well, const char *var, int cell_nr)
const ecl::smspec_node * ecl_smspec_add_node(ecl_smspec_type *ecl_smspec, const ecl::smspec_node &node)
char * ecl_smspec_alloc_well_key(const ecl_smspec_type *smspec, const char *keyword, const char *wgname)
int ecl_smspec_get_params_size(const ecl_smspec_type *smspec)
int ecl_smspec_get_misc_var_params_index(const ecl_smspec_type *ecl_smspec, const char *var)
ert_ecl_unit_enum
Definition: ecl_util.hpp:99
UDAKeyword keyword(UDAControl control)
ecl_smspec_var_type
Definition: smspec_node.h:28
struct stringlist_struct stringlist_type
Definition: stringlist.hpp:34