2016-06-13 14:18:50 +02:00
|
|
|
#ifndef ERT_ECL_KW_MAGIC_H
|
|
|
|
|
#define ERT_ECL_KW_MAGIC_H
|
2012-06-26 16:10:41 +02:00
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
2015-04-14 15:47:22 +02:00
|
|
|
/*
|
2012-06-26 16:10:41 +02:00
|
|
|
This header file contains names and indices of ECLIPSE keywords
|
2012-09-13 11:41:48 +02:00
|
|
|
which have special significance in various files. Observe that many
|
|
|
|
|
of the keywords like e.g. INTEHEAD occur in many different file
|
|
|
|
|
types, with partly overlapping layout and values.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*****************************************************************/
|
|
|
|
|
/* INIT files: */
|
|
|
|
|
/*****************************************************************/
|
|
|
|
|
|
|
|
|
|
#define PORO_KW "PORO"
|
|
|
|
|
#define PORV_KW "PORV"
|
|
|
|
|
#define AQUIFER_KW "AQUIFERN"
|
|
|
|
|
#define INTEHEAD_KW "INTEHEAD"
|
|
|
|
|
#define LOGIHEAD_KW "LOGIHEAD"
|
|
|
|
|
#define DOUBHEAD_KW "DOUBHEAD"
|
|
|
|
|
#define RPORV_KW "RPORV"
|
|
|
|
|
#define PORV_KW "PORV"
|
2015-04-14 15:47:22 +02:00
|
|
|
#define PORMOD_KW "PORV_MOD"
|
2012-09-13 11:41:48 +02:00
|
|
|
|
|
|
|
|
#define PVTNUM_KW "PVTNUM"
|
2013-12-09 15:19:06 +01:00
|
|
|
#define LGRHEADI_KW "LGRHEADI"
|
|
|
|
|
#define LGRHEADI_LGR_NR_INDEX 0
|
2015-04-14 15:47:22 +02:00
|
|
|
#define LGRJOIN_KW "LGRJOIN"
|
2012-09-13 11:41:48 +02:00
|
|
|
|
2017-02-07 13:44:59 +01:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
The table in the INIT file are organized with one large data keyword
|
|
|
|
|
'TAB' and one keyword 'TABDIMS' which describe the layout of the
|
|
|
|
|
data in the TAB keyword.
|
|
|
|
|
|
|
|
|
|
For each of the tables there 'TABDIMS_xxx_OFFSET_ITEM' which points
|
|
|
|
|
to an element in the 'TABDIMS' vector which contains the starting
|
|
|
|
|
address of table 'xxx' in the 'TAB' keyword, then there are one or
|
|
|
|
|
several integer values describing how many values/tables there
|
|
|
|
|
are. In addition there is an assumed number of columns which is not
|
|
|
|
|
explicitly stored in the TABDIMS keyword.
|
|
|
|
|
|
|
|
|
|
The input format is quite flexible with respect to the size of the
|
|
|
|
|
individual tables and subtables, but the representation in the INIT
|
|
|
|
|
file is based on fixed length columns and equal sized tables, where
|
|
|
|
|
all inactive elements have the default value 2e20.
|
|
|
|
|
|
|
|
|
|
Assume the following PVTO input:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PVTO
|
|
|
|
|
1.55203 1.00000 1.15907572 0.64345
|
|
|
|
|
25.00000 1.15319788 0.67619
|
|
|
|
|
50.00000 1.14759314 0.70959 /
|
|
|
|
|
|
|
|
|
|
28.04570 25.00000 1.17415042 0.63294
|
|
|
|
|
50.00000 1.16792401 0.66638
|
|
|
|
|
75.00000 1.16222385 0.69918
|
|
|
|
|
100.00000 1.15212320 0.76297 /
|
|
|
|
|
|
|
|
|
|
35.62113 50.00000 1.19208190 0.61538
|
|
|
|
|
75.00000 1.18568689 0.64790
|
|
|
|
|
100.00000 1.17982339 0.67985
|
|
|
|
|
125.00000 1.17441865 0.71127
|
|
|
|
|
150.00000 1.16941365 0.74217 /
|
|
|
|
|
|
|
|
|
|
/
|
|
|
|
|
20.66588 1.00000 1.15642614 0.57010
|
|
|
|
|
25.00000 1.15051027 0.59831
|
|
|
|
|
50.00000 1.14487540 0.62703 /
|
|
|
|
|
|
|
|
|
|
27.65815 25.00000 1.17402576 0.56928
|
|
|
|
|
50.00000 1.16771923 0.59875
|
|
|
|
|
75.00000 1.16195281 0.62760
|
|
|
|
|
100.00000 1.15665041 0.65588
|
|
|
|
|
/
|
|
|
|
|
|
|
|
|
|
This is the PVTO table, and it is described by the constants
|
|
|
|
|
TABDIMS_IBPVTO_OFFSET_ITEM, TABDIMS_JBPVTO_OFFSET_ITEM,
|
|
|
|
|
TABDIMS_NRPVTO_ITEM, TABDIMS_NPPVTO_ITEM and TABDIMS_NTPVTO_ITEM. Observe the following:
|
|
|
|
|
|
|
|
|
|
1. There are 3 GOR values in the first table and 2 in the second,
|
|
|
|
|
this is the number of composition nodes -
|
|
|
|
|
TABDIMS_NRPVTO_ITEM. Since there are 3 in the first table and 2 in
|
|
|
|
|
the second the value of TABDIMS[ TABDIMS_NRPVTO_ITEM ] >= 3.
|
|
|
|
|
|
|
|
|
|
2. The GOR node values (1.55203, 28.04570, 35.62113) and (20.66588,
|
|
|
|
|
27.65815) are stored separately at offset
|
|
|
|
|
TABDIMS[ TABDIMS_JBPVTO_OFFSET_ITEM ] in the TAB array.
|
|
|
|
|
|
|
|
|
|
3. The length of the longest column is 5 elements so the value of
|
|
|
|
|
TABDIMS[ TABDIMS_NPPVTO_ITEM ] >= 5.
|
|
|
|
|
|
|
|
|
|
4. The actual table data starts at offset TABDIMS[
|
|
|
|
|
TABDIMS_IBPVTO_ITEM] in the TAB table.
|
|
|
|
|
|
|
|
|
|
When packing the actual data into the TAB array the indices are
|
|
|
|
|
running as row,GOR,table,column - with row fastest. All in all the
|
|
|
|
|
linear vector for this PVTO table will look like:
|
|
|
|
|
|
|
|
|
|
1.00000 \ \ \ \
|
|
|
|
|
25.00000 | | | |
|
|
|
|
|
50.00000 | NPPVTO = 5 | | |
|
|
|
|
|
* | | | |
|
|
|
|
|
* | | | |
|
|
|
|
|
-----------/ | | |
|
|
|
|
|
25.00000 | | |
|
|
|
|
|
50.00000 | | |
|
|
|
|
|
75.00000 | NRPVTO = 3 | |
|
|
|
|
|
100.00000 | | |
|
|
|
|
|
* | | |
|
|
|
|
|
----------- | | |
|
|
|
|
|
50.00000 | | |
|
|
|
|
|
75.00000 | | |
|
|
|
|
|
100.00000 | | |
|
|
|
|
|
125.00000 | | |
|
|
|
|
|
150.00000 | | |
|
|
|
|
|
=========== / | NTPVTO = 2 |
|
|
|
|
|
1.00000 | |
|
|
|
|
|
25.00000 | |
|
|
|
|
|
50.00000 | |
|
|
|
|
|
* | |
|
|
|
|
|
* | | Three columns -
|
|
|
|
|
----------- | | (not in TABDIMS)
|
|
|
|
|
25.00000 | |
|
|
|
|
|
50.00000 | |
|
|
|
|
|
75.00000 | |
|
|
|
|
|
100.00000 | |
|
|
|
|
|
* | |
|
|
|
|
|
----------- | |
|
|
|
|
|
* | |
|
|
|
|
|
* | |
|
|
|
|
|
* | |
|
|
|
|
|
* | |
|
|
|
|
|
* | |
|
|
|
|
|
@@@@@@@@@@@ / |
|
|
|
|
|
1.15907572 |
|
|
|
|
|
1.15319788 |
|
|
|
|
|
1.14759314 |
|
|
|
|
|
* |
|
|
|
|
|
* |
|
|
|
|
|
----------- |
|
|
|
|
|
1.17415042 |
|
|
|
|
|
1.16792401 |
|
|
|
|
|
1.16222385 |
|
|
|
|
|
1.15212320 |
|
|
|
|
|
* |
|
|
|
|
|
----------- |
|
|
|
|
|
1.19208190 |
|
|
|
|
|
1.18568689 |
|
|
|
|
|
1.17982339 |
|
|
|
|
|
1.17441865 |
|
|
|
|
|
1.16941365 |
|
|
|
|
|
=========== |
|
|
|
|
|
1.15642614 |
|
|
|
|
|
1.15051027 |
|
|
|
|
|
1.14487540 |
|
|
|
|
|
* |
|
|
|
|
|
* |
|
|
|
|
|
----------- |
|
|
|
|
|
1.17402576 |
|
|
|
|
|
1.16771923 |
|
|
|
|
|
1.16195281 |
|
|
|
|
|
1.15665041 |
|
|
|
|
|
* |
|
|
|
|
|
----------- |
|
|
|
|
|
* |
|
|
|
|
|
* |
|
|
|
|
|
* |
|
|
|
|
|
* |
|
|
|
|
|
* |
|
|
|
|
|
@@@@@@@@@@@ |
|
|
|
|
|
0.64345 |
|
|
|
|
|
0.67619 |
|
|
|
|
|
0.70959 |
|
|
|
|
|
* |
|
|
|
|
|
* |
|
|
|
|
|
----------- |
|
|
|
|
|
0.63294 |
|
|
|
|
|
0.66638 |
|
|
|
|
|
0.69918 |
|
|
|
|
|
0.76297 |
|
|
|
|
|
* |
|
|
|
|
|
----------- |
|
|
|
|
|
0.61538 |
|
|
|
|
|
0.64790 |
|
|
|
|
|
0.67985 |
|
|
|
|
|
0.71127 |
|
|
|
|
|
0.74217 |
|
|
|
|
|
=========== |
|
|
|
|
|
0.57010 |
|
|
|
|
|
0.59831 |
|
|
|
|
|
0.62703 |
|
|
|
|
|
* |
|
|
|
|
|
* |
|
|
|
|
|
----------- |
|
|
|
|
|
0.56928 |
|
|
|
|
|
0.59875 |
|
|
|
|
|
0.62760 |
|
|
|
|
|
0.65588 |
|
|
|
|
|
* |
|
|
|
|
|
----------- |
|
|
|
|
|
* |
|
|
|
|
|
* |
|
|
|
|
|
* |
|
|
|
|
|
* |
|
|
|
|
|
* |
|
|
|
|
|
/
|
|
|
|
|
|
|
|
|
|
In this vector representation the different composition subtable
|
|
|
|
|
columns are separated by '----', the different main tables are
|
|
|
|
|
separated by '======' and the columns are separated by '@@@@'. Default
|
|
|
|
|
values (2e20) are denoted with '*'.
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
#define TABDIMS_SIZE 100
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_TAB_SIZE_ITEM 0
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBROCK_OFFSET_ITEM 1
|
|
|
|
|
#define TABDIMS_NTROCK_ITEM 2
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBROCC_OFFSET_ITEM 3
|
|
|
|
|
#define TABDIMS_NPROCC_ITEM 4
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBPVTO_OFFSET_ITEM 6
|
|
|
|
|
#define TABDIMS_JBPVTO_OFFSET_ITEM 7
|
|
|
|
|
#define TABDIMS_NRPVTO_ITEM 8
|
|
|
|
|
#define TABDIMS_NPPVTO_ITEM 9
|
|
|
|
|
#define TABDIMS_NTPVTO_ITEM 10
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBPVTW_OFFSET_ITEM 11
|
|
|
|
|
#define TABDIMS_NTPVTW_ITEM 12
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBPVTG_OFFSET_ITEM 13
|
|
|
|
|
#define TABDIMS_JBPVTG_OFFSET_ITEM 14
|
|
|
|
|
#define TABDIMS_NRPVTG_ITEM 15
|
|
|
|
|
#define TABDIMS_NPPVTG_ITEM 16
|
|
|
|
|
#define TABDIMS_NTPVTG_ITEM 17
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBDENS_OFFSET_ITEM 18
|
|
|
|
|
#define TABDIMS_NTDENS_ITEM 19
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBSWFN_OFFSET_ITEM 20
|
|
|
|
|
#define TABDIMS_NSSWFN_ITEM 21
|
|
|
|
|
#define TABDIMS_NTSWFN_ITEM 22
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBSGFN_OFFSET_ITEM 23
|
|
|
|
|
#define TABDIMS_NSSGFN_ITEM 24
|
|
|
|
|
#define TABDIMS_NTSGFN_ITEM 25
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBSOFN_OFFSET_ITEM 26
|
|
|
|
|
#define TABDIMS_IBSWCO_OFFSET_ITEM 27
|
|
|
|
|
#define TABDIMS_NSSOFN_ITEM 28
|
|
|
|
|
#define TABDIMS_NTSOFN_ITEM 29
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBVETB_OFFSET_ITEM 40
|
|
|
|
|
#define TABDIMS_NSVETB_ITEM 41
|
|
|
|
|
#define TABDIMS_NTVETB_ITEM 42
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBTHPR_OFFSET_ITEM 43
|
|
|
|
|
#define TABDIMS_IBSLIM_ITEM 44
|
|
|
|
|
#define TABDIMS_NSENDP_ITEM 45
|
|
|
|
|
#define TABDIMS_NTENDP_ITEM 46
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBRTEM_OFFSET_ITEM 47
|
|
|
|
|
#define TABDIMS_IBCTOL_ITEM 48
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBLANG_OFFSET_ITEM 50 // LANGMUIR Table
|
|
|
|
|
#define TABDIMS_NCLANG_ITEM 51 // LANGMUIR Table
|
|
|
|
|
#define TABDIMS_NSLANG_ITEM 52 // LANGMUIR Table
|
|
|
|
|
#define TABDIMS_NTLANG_ITEM 53 // LANGMUIR Table
|
|
|
|
|
|
|
|
|
|
#define TABDIMS_IBLNG2_OFFSET_ITEM 54 // LANGSOLV Table
|
|
|
|
|
#define TABDIMS_IBCADP_OFFSET_ITEM 55 // COALPP Table
|
|
|
|
|
#define TABDIMS_IBCADS_OFFSET_ITEM 56 // COALADS Table
|
|
|
|
|
#define TABDIMS_IBROCP_OFFSET_ITEM 57 // ROCKPAMA Table
|
|
|
|
|
#define TABDIMS_NTRPMA_ITEM 58 // ROCKPAMA Table
|
|
|
|
|
|
|
|
|
|
|
2015-04-14 15:47:22 +02:00
|
|
|
/*
|
2012-09-13 11:41:48 +02:00
|
|
|
Observe that many of the elements in the INTEHEAD keyword is shared
|
|
|
|
|
between the restart and init files. The ones listed below here are
|
|
|
|
|
in both the INIT and the restart files. In addition the restart
|
|
|
|
|
files have many well related items which are only in the restart
|
|
|
|
|
files.
|
2012-06-26 16:10:41 +02:00
|
|
|
*/
|
2015-04-14 15:47:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
#define INTEHEAD_UNIT_INDEX 2
|
|
|
|
|
#define INTEHEAD_NX_INDEX 8
|
|
|
|
|
#define INTEHEAD_NY_INDEX 9
|
|
|
|
|
#define INTEHEAD_NZ_INDEX 10
|
|
|
|
|
#define INTEHEAD_NACTIVE_INDEX 11
|
|
|
|
|
#define INTEHEAD_PHASE_INDEX 14
|
|
|
|
|
#define INTEHEAD_DAY_INDEX 64
|
|
|
|
|
#define INTEHEAD_MONTH_INDEX 65
|
|
|
|
|
#define INTEHEAD_YEAR_INDEX 66
|
|
|
|
|
#define INTEHEAD_IPROG_INDEX 94
|
2012-09-13 11:41:48 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
#define INTEHEAD_METRIC_VALUE 1
|
|
|
|
|
#define INTEHEAD_ECLIPSE100_VALUE 100
|
2015-04-14 15:47:22 +02:00
|
|
|
#define INTEHEAD_ECLIPSE300_VALUE 300
|
2012-09-13 11:41:48 +02:00
|
|
|
#define INTEHEAD_ECLIPSE300THERMAL_VALUE 500
|
2017-02-07 13:44:59 +01:00
|
|
|
#define INTEHEAD_INTERSECT_VALUE 700
|
|
|
|
|
#define INTEHEAD_FRONTSIM_VALUE 800
|
2012-09-13 11:41:48 +02:00
|
|
|
|
|
|
|
|
#define INTEHEAD_INIT_SIZE 95
|
|
|
|
|
#define INTEHEAD_RESTART_SIZE 180
|
|
|
|
|
|
|
|
|
|
#define LOGIHEAD_ECLIPSE300_RADIAL_INDEX 3
|
|
|
|
|
#define LOGIHEAD_ECLIPSE100_RADIAL_INDEX 4
|
|
|
|
|
#define LOGIHEAD_DUALP_INDEX 14
|
2015-04-14 15:47:22 +02:00
|
|
|
#define LOGIHEAD_INIT_SIZE 80
|
2012-09-13 11:41:48 +02:00
|
|
|
#define LOGIHEAD_RESTART_SIZE 15
|
|
|
|
|
|
|
|
|
|
|
2015-04-14 15:47:22 +02:00
|
|
|
#define LOGIHEAD_RS_INDEX 0
|
2012-09-13 11:41:48 +02:00
|
|
|
#define LOGIHEAD_RV_INDEX 1
|
2015-04-14 15:47:22 +02:00
|
|
|
#define LOGIHEAD_DIR_RELPERM_INDEX 2
|
2012-09-13 11:41:48 +02:00
|
|
|
/*-----------------------------------------------------------------*/
|
|
|
|
|
#define LOGIHEAD_REV_RELPERM100_INDEX 3 /* The indices for reversible relperm and */
|
|
|
|
|
#define LOGIHEAD_RADIAL100_INDEX 4 /* use of radial grids is interchanged between */
|
|
|
|
|
#define LOGIHEAD_REV_RELPERM300_INDEX 4 /* ECLIPSE100 and ECLIPSE300. */
|
2015-04-14 15:47:22 +02:00
|
|
|
#define LOGIHEAD_RADIAL300_INDEX 3
|
2012-09-13 11:41:48 +02:00
|
|
|
/*-----------------------------------------------------------------*/
|
|
|
|
|
#define LOGIHEAD_HYSTERISIS_INDEX 6
|
|
|
|
|
#define LOGIHEAD_DUALP_INDEX 14
|
|
|
|
|
#define LOGIHEAD_ENDPOINT_SCALING_INDEX 16
|
|
|
|
|
#define LOGIHEAD_DIR_ENDPOINT_SCALING_INDEX 17
|
|
|
|
|
#define LOGIHEAD_REV_ENDPOINT_SCALING_INDEX 18
|
|
|
|
|
#define LOGIHEAD_ALT_ENDPOINT_SCALING_INDEX 19
|
2015-04-14 15:47:22 +02:00
|
|
|
#define LOGIHEAD_MISC_DISPLACEMENT_INDEX 35
|
2012-09-13 11:41:48 +02:00
|
|
|
#define LOGIHEAD_SCALE_WATER_PC_AT_MAX_SAT_INDEX 55
|
|
|
|
|
#define LOGIHEAD_SCALE_GAS_PC_AT_MAX_SAT_INDEX 56
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define DOUBHEAD_INIT_SIZE 1
|
|
|
|
|
#define DOUBHEAD_RESTART_SIZE 1
|
2012-06-26 16:10:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************************************************/
|
2012-09-13 11:41:48 +02:00
|
|
|
/* RESTART files: */
|
2012-06-26 16:10:41 +02:00
|
|
|
/*****************************************************************/
|
|
|
|
|
|
2012-09-13 11:41:48 +02:00
|
|
|
#define SEQNUM_KW "SEQNUM" /* Contains the report step as the only data; not
|
|
|
|
|
present in non-unified files, where the report
|
|
|
|
|
step must be inferred from the filename. */
|
|
|
|
|
#define STARTSOL_KW "STARTSOL"
|
2015-04-14 15:47:22 +02:00
|
|
|
#define ENDSOL_KW "ENDSOL"
|
2012-06-26 16:10:41 +02:00
|
|
|
|
2017-02-07 13:44:59 +01:00
|
|
|
#define XWEL_KW "XWEL"
|
2012-06-26 16:10:41 +02:00
|
|
|
#define IWEL_KW "IWEL"
|
|
|
|
|
#define ZWEL_KW "ZWEL"
|
|
|
|
|
#define ICON_KW "ICON"
|
2013-12-09 15:19:06 +01:00
|
|
|
#define SCON_KW "SCON"
|
2017-02-07 13:44:59 +01:00
|
|
|
#define XCON_KW "XCON"
|
2012-06-26 16:10:41 +02:00
|
|
|
#define ISEG_KW "ISEG"
|
2013-08-26 13:56:42 +02:00
|
|
|
#define RSEG_KW "RSEG"
|
2012-06-26 16:10:41 +02:00
|
|
|
|
2012-09-13 11:41:48 +02:00
|
|
|
#define ECLIPSE100_OIL_DEN_KW "OIL_DEN"
|
|
|
|
|
#define ECLIPSE100_GAS_DEN_KW "GAS_DEN"
|
|
|
|
|
#define ECLIPSE100_WATER_DEN_KW "WAT_DEN"
|
|
|
|
|
|
|
|
|
|
#define ECLIPSE300_OIL_DEN_KW "DENO"
|
|
|
|
|
#define ECLIPSE300_GAS_DEN_KW "DENG"
|
|
|
|
|
#define ECLIPSE300_WATER_DEN_KW "DENW"
|
|
|
|
|
|
|
|
|
|
#define FIPGAS_KW "FIPGAS"
|
|
|
|
|
#define FIPWAT_KW "FIPWAT"
|
2015-04-14 15:47:22 +02:00
|
|
|
#define FIPOIL_KW "FIPOIL"
|
2012-09-13 11:41:48 +02:00
|
|
|
#define RFIPGAS_KW "RFIPGAS"
|
|
|
|
|
#define RFIPWAT_KW "RFIPWAT"
|
2015-04-14 15:47:22 +02:00
|
|
|
#define RFIPOIL_KW "RFIPOIL"
|
|
|
|
|
|
2012-09-13 11:41:48 +02:00
|
|
|
|
|
|
|
|
#define INTEHEAD_NWELLS_INDEX 16 // Number of wells
|
|
|
|
|
#define INTEHEAD_NIWELZ_INDEX 24 // Number of elements pr. well in the IWEL array.
|
2017-02-07 13:44:59 +01:00
|
|
|
#define INTEHEAD_NXWELZ_INDEX 26 // Number of elements pr. well in the XWEL array.
|
2012-09-13 11:41:48 +02:00
|
|
|
#define INTEHEAD_NZWELZ_INDEX 27 // Number of 8 character words pr. well
|
|
|
|
|
|
|
|
|
|
#define INTEHEAD_NCWMAX_INDEX 17 // Maximum number of completions per well
|
|
|
|
|
#define INTEHEAD_NWGMAX_INDEX 19 // Maximum number of wells in any group
|
|
|
|
|
#define INTEHEAD_NGMAXZ_INDEX 20 // Maximum number of groups in field
|
2016-10-13 13:31:31 +02:00
|
|
|
#define INTEHEAD_NSWELZ_INDEX 25
|
|
|
|
|
#define INTEHEAD_NXWELZ_INDEX 26
|
2013-12-09 15:19:06 +01:00
|
|
|
#define INTEHEAD_NICONZ_INDEX 32 // Number of elements pr completion in the ICON array.
|
2016-10-13 13:31:31 +02:00
|
|
|
#define INTEHEAD_NSCONZ_INDEX 33 // Number of elements pr completion in the SCON array
|
2017-02-07 13:44:59 +01:00
|
|
|
#define INTEHEAD_NXCONZ_INDEX 34 // Number of elements pr completion in the XCON array
|
2012-09-13 11:41:48 +02:00
|
|
|
#define INTEHEAD_NIGRPZ_INDEX 36 // Number of elements pr group in the IGRP array.
|
|
|
|
|
|
2016-10-13 13:31:31 +02:00
|
|
|
|
2012-09-13 11:41:48 +02:00
|
|
|
#define INTEHEAD_NSWLMX_INDEX 175
|
|
|
|
|
#define INTEHEAD_NSEGMX_INDEX 176
|
|
|
|
|
#define INTEHEAD_NLBRMX_INDEX 177
|
|
|
|
|
#define INTEHEAD_NISEGZ_INDEX 178
|
2013-08-26 13:56:42 +02:00
|
|
|
#define INTEHEAD_NRSEGZ_INDEX 179
|
2012-09-13 11:41:48 +02:00
|
|
|
#define INTEHEAD_NILBRZ_INDEX 180
|
|
|
|
|
|
|
|
|
|
#define DOUBHEAD_DAYS_INDEX 0
|
2012-06-26 16:10:41 +02:00
|
|
|
|
|
|
|
|
/*****************************************************************/
|
|
|
|
|
/* Summary files */
|
|
|
|
|
/*****************************************************************/
|
|
|
|
|
|
|
|
|
|
/* Summary header file */
|
2012-09-13 11:41:48 +02:00
|
|
|
#define MINISTEP_KW "MINISTEP"
|
2012-06-26 16:10:41 +02:00
|
|
|
#define STARTDAT_KW "STARTDAT" /* Intgere keyword containing day,month,year. */
|
|
|
|
|
#define WGNAMES_KW "WGNAMES" /* The names of wells/groups for the summary vectors. */
|
2017-05-08 13:37:39 +02:00
|
|
|
#define NAMES_KW "NAMES" /* Alias for WGNAMES_KW. */
|
2012-06-26 16:10:41 +02:00
|
|
|
#define KEYWORDS_KW "KEYWORDS" /* The variable type for the various summary vectors. */
|
|
|
|
|
#define UNITS_KW "UNITS" /* The units, i.e SM^3/DAY the summary vectors. */
|
|
|
|
|
#define DIMENS_KW "DIMENS" /* The dimensions of the grid - also used in the GRID files. */
|
|
|
|
|
#define NUMS_KW "NUMS" /* Extra numeric qualifiers for the summary variables, like cell number. */
|
|
|
|
|
#define LGRS_KW "LGRS" /* The lgr name for a vector originating from an lgr. */
|
|
|
|
|
#define NUMLX_KW "NUMLX" /* For block variables defined in a an lgr this is i coordinate in the lgr. */
|
|
|
|
|
#define NUMLY_KW "NUMLY" /* ... j coordinate in the lgr. */
|
|
|
|
|
#define NUMLZ_KW "NUMLZ" /* ... k coordinate in the lgr. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Magic indices used to locate day,month,year from the STARTDAT keyword. */
|
|
|
|
|
#define STARTDAT_DAY_INDEX 0
|
|
|
|
|
#define STARTDAT_MONTH_INDEX 1
|
|
|
|
|
#define STARTDAT_YEAR_INDEX 2
|
2012-09-13 11:41:48 +02:00
|
|
|
#define STARTDAT_SIZE 3
|
2012-06-26 16:10:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Magic indices uset to locate the grid dimensions from the DIMENS
|
|
|
|
|
keyword in the SMSPEC files. Observe that these magic indices
|
|
|
|
|
differ from the magic indices used to look up grid dimensions from
|
|
|
|
|
the DIMENS keyword in GRID files. */
|
2012-09-13 11:41:48 +02:00
|
|
|
#define DIMENS_SMSPEC_SIZE_INDEX 0
|
2012-06-26 16:10:41 +02:00
|
|
|
#define DIMENS_SMSPEC_NX_INDEX 1
|
|
|
|
|
#define DIMENS_SMSPEC_NY_INDEX 2
|
|
|
|
|
#define DIMENS_SMSPEC_NZ_INDEX 3
|
|
|
|
|
|
2012-09-13 11:41:48 +02:00
|
|
|
#define DIMENS_SIZE 6 // Do not know what the two last items are?
|
|
|
|
|
|
2012-06-26 16:10:41 +02:00
|
|
|
|
|
|
|
|
/* Summary data files: */
|
|
|
|
|
#define SEQHDR_KW "SEQHDR" // Contains a single 'magic' integer - not used in libecl.
|
|
|
|
|
#define PARAMS_KW "PARAMS" // Contains the actual summary data for one timestep.
|
|
|
|
|
#define MINISTEP_KW "MINISTEP" // Scalar integer - contains the timestep number.
|
|
|
|
|
|
2012-09-13 11:41:48 +02:00
|
|
|
#define SEQHDR_SIZE 1
|
|
|
|
|
|
|
|
|
|
#define RESTART_KW "RESTART"
|
|
|
|
|
#define SUMMARY_RESTART_SIZE 8
|
|
|
|
|
|
2015-04-14 15:47:22 +02:00
|
|
|
/*
|
2012-06-26 16:10:41 +02:00
|
|
|
There are no magic indices in the summary data files, for all
|
|
|
|
|
interesting data the table created from the ecl_smspec file must be
|
|
|
|
|
consulted.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************************************************/
|
|
|
|
|
/* RFT Files */
|
|
|
|
|
/*****************************************************************/
|
|
|
|
|
/* The files with extension .RFT can contain three quite different
|
|
|
|
|
types of information: RFT / PLT / SEGMENT, this is indicated by an
|
|
|
|
|
element of the WELLETC keyword. The keywords below are organized in
|
|
|
|
|
common keywords, keywords for RFTs and keywords for PLTs. The
|
|
|
|
|
special information for SEGMENT data is not internalized at all,
|
|
|
|
|
and there are also several additional keywords for the PLTs which
|
|
|
|
|
are not internalized. */
|
2015-04-14 15:47:22 +02:00
|
|
|
|
2012-06-26 16:10:41 +02:00
|
|
|
|
|
|
|
|
/* Common keywords */
|
|
|
|
|
#define TIME_KW "TIME" /* The days since simulation start when
|
|
|
|
|
an RFT is performed, also used as
|
|
|
|
|
block header when splitting an RFT
|
|
|
|
|
file into different wells and timesteps. */
|
|
|
|
|
#define DATE_KW "DATE" /* The date of an RFT as integers: (day,month,year). */
|
|
|
|
|
#define WELLETC_KW "WELLETC" /* The type of date RFT|PLT|SEGMENT and well name are
|
|
|
|
|
extracted from this keyword. */
|
|
|
|
|
#define CONIPOS_KW "CONIPOS" /* The i-index of the connections in the well. */
|
|
|
|
|
#define CONJPOS_KW "CONJPOS" /* The j-index ... */
|
|
|
|
|
#define CONKPOS_KW "CONKPOS" /* The k-index ... */
|
2015-04-14 15:47:22 +02:00
|
|
|
#define HOSTGRID_KW "HOSTGRID"
|
2012-06-26 16:10:41 +02:00
|
|
|
|
|
|
|
|
/* RFT keywords */
|
|
|
|
|
#define SWAT_KW "SWAT" /* The kewyord containing SWAT. */
|
|
|
|
|
#define SGAS_KW "SGAS" /* The kewyord containing SGAS. */
|
|
|
|
|
#define PRESSURE_KW "PRESSURE" /* The kewyord containing PRESSURE. */
|
|
|
|
|
#define DEPTH_KW "DEPTH" /* The depth of the connection. */
|
|
|
|
|
|
|
|
|
|
/* PLT keywords */
|
|
|
|
|
#define CONDEPTH_KW "CONDEPTH" /* The depth of the connection. */
|
|
|
|
|
#define CONWRAT_KW "CONWRAT" /* Water rate in a connection. */
|
|
|
|
|
#define CONGRAT_KW "CONGRAT" /* Gas ... */
|
|
|
|
|
#define CONORAT_KW "CONORAT" /* Oil ... */
|
|
|
|
|
#define CONPRES_KW "CONPRES" /* Pressure ... */
|
2015-04-14 15:47:22 +02:00
|
|
|
#define CONLENST_KW "CONLENST" /* Length along MSW well */
|
|
|
|
|
#define CONLENEN_KW "CONLENEN" /* Length to connection end for MSW well */
|
|
|
|
|
#define CONVTUB_KW "CONVTUB" /* Volumetric flow at tubing head conditions. */
|
|
|
|
|
#define CONOTUB_KW "CONOTUB" /* Volumetric oil flow at tubing head conditions. */
|
|
|
|
|
#define CONGTUB_KW "CONGTUB" /* Volumetric gas flow at tubing head conditions. */
|
|
|
|
|
#define CONWTUB_KW "CONWTUB" /* Volumetric water flow at tubing head conditions. */
|
2012-06-26 16:10:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
#define WELLETC_TYPE_INDEX 5 /* At this keyword the WELLETC keyword contains a string
|
|
|
|
|
containing 'R', 'P' , or 'S' for RFT, PLT or SEGMENT data
|
|
|
|
|
respectively.*/
|
|
|
|
|
#define WELLETC_NAME_INDEX 1 /* The name of well being investigated is on this index of
|
|
|
|
|
the WELLETC keyword. */
|
|
|
|
|
|
|
|
|
|
/* Magic indices used to get day,month,year from the DATE
|
|
|
|
|
keyword. */
|
|
|
|
|
#define DATE_DAY_INDEX 0
|
|
|
|
|
#define DATE_MONTH_INDEX 1
|
|
|
|
|
#define DATE_YEAR_INDEX 2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************************************************/
|
|
|
|
|
/* GRID and EGRID files. */
|
|
|
|
|
/*****************************************************************/
|
|
|
|
|
/* GRID and EGRID files have very different structure, and only a few
|
|
|
|
|
keywords are shared. */
|
|
|
|
|
|
2015-04-14 15:47:22 +02:00
|
|
|
|
2012-06-26 16:10:41 +02:00
|
|
|
/* Common keywords */
|
|
|
|
|
#define SPECGRID_KW "SPECGRID"
|
2015-04-14 15:47:22 +02:00
|
|
|
#define SPECGRID_NX_INDEX 0
|
|
|
|
|
#define SPECGRID_NY_INDEX 1
|
|
|
|
|
#define SPECGRID_NZ_INDEX 2
|
2012-06-26 16:10:41 +02:00
|
|
|
#define MAPAXES_KW "MAPAXES" /* Keyword used to transform from grid coordinates to
|
|
|
|
|
world coordinates. */
|
2015-04-14 15:47:22 +02:00
|
|
|
#define LGR_KW "LGR" /* Name of LGR; for GRID files it can contain two elements,
|
2012-06-26 16:10:41 +02:00
|
|
|
the second element will be the name of the parent. */
|
|
|
|
|
#define MAPUNITS_KW "MAPUNITS"
|
|
|
|
|
#define GRIDUNIT_KW "GRIDUNIT"
|
2015-04-14 15:47:22 +02:00
|
|
|
|
|
|
|
|
#define NNC1_KW "NNC1" /*Upstream cell numbers for non-neighbour connections*/
|
|
|
|
|
#define NNC2_KW "NNC2" /*Downstream cell numbers for non-neighbour connections*/
|
|
|
|
|
#define NNCL_KW "NNCL" /*Cell numbers for LGR cells that are connected to global grid cells*/
|
|
|
|
|
#define NNCG_KW "NNCG" /*Cell numbers for global cells connected to LGR cells*/
|
2016-06-13 14:18:50 +02:00
|
|
|
|
|
|
|
|
#define NNCHEAD_KW "NNCHEAD" /*Non-neighbour connection header*/
|
|
|
|
|
#define NNCHEAD_SIZE 10
|
2013-08-26 14:44:03 +02:00
|
|
|
#define NNCHEAD_NUMNNC_INDEX 0 /*Item 1 in non-neighbour connection header: number of NNCs. Only present for main grid*/
|
|
|
|
|
#define NNCHEAD_LGR_INDEX 1 /*Item 2 in non-neighbour connection header: LGR number (0 for global grid)*/
|
2016-06-13 14:18:50 +02:00
|
|
|
|
2013-08-26 14:44:03 +02:00
|
|
|
#define NNCHEADA_KW "NNCHEADA" /*Header for NNC's between two amalgamated LGRs*/
|
2015-04-14 15:47:22 +02:00
|
|
|
#define NNA1_KW "NNA1" /*Cell numbers in connecting local grid ILOC1*/
|
2013-08-26 14:44:03 +02:00
|
|
|
#define NNA2_KW "NNA2" /*Cell numbers in connecting local grid ILOC2*/
|
|
|
|
|
#define NNCHEADA_ILOC1_INDEX 0 /*ILOC1: Index of first LGR*/
|
|
|
|
|
#define NNCHEADA_ILOC2_INDEX 1 /*ILOC2: Index of second LGR*/
|
2015-04-14 15:47:22 +02:00
|
|
|
#define NNA_NUMNNC_INDEX 0 /*Item 1 in NNA1 or NNA2 is number of NNCs*/
|
2012-06-26 16:10:41 +02:00
|
|
|
|
2013-12-09 15:19:06 +01:00
|
|
|
#define TRANNNC_KW "TRANNNC"
|
|
|
|
|
#define TRANGL_KW "TRANGL"
|
|
|
|
|
#define TRANLL_KW "TRANLL"
|
|
|
|
|
|
2012-06-26 16:10:41 +02:00
|
|
|
/* EGRID keywords */
|
|
|
|
|
#define LGR_PARENT_KW "LGRPARNT" /* The name of the parent for an LGR. */
|
|
|
|
|
#define COORDS_KW "COORDS" /* The (x,y) coordinates of the top and bottom of the pillars constituting the grid. */
|
|
|
|
|
#define ZCORN_KW "ZCORN" /* Z coordinate where pillars cross planes. */
|
|
|
|
|
#define ACTNUM_KW "ACTNUM" /* Integer flag of with active=0,1. */
|
|
|
|
|
#define HOSTNUM_KW "HOSTNUM" /* For cells in LGR - pointing back to cell nr in
|
|
|
|
|
parent grid. */
|
|
|
|
|
#define FILEHEAD_KW "FILEHEAD"
|
|
|
|
|
#define ENDGRID_KW "ENDGRID"
|
|
|
|
|
#define ENDLGR_KW "ENDLGR"
|
2013-01-18 08:53:37 +01:00
|
|
|
#define CORSNUM_KW "CORSNUM"
|
2015-04-14 15:47:22 +02:00
|
|
|
|
2012-06-26 16:10:41 +02:00
|
|
|
/* GRID keywords */
|
|
|
|
|
#define GRIDHEAD_KW "GRIDHEAD" /* Header information for GRID files. */
|
|
|
|
|
#define COORD_KW "COORD" /* Header information for one cell in GRID file. */
|
|
|
|
|
#define CORNERS_KW "CORNERS" /* Vector containing (x,y,z) x 8 elements - all corners in a cell. */
|
|
|
|
|
#define DIMENS_KW "DIMENS" /* The dimensions of the grid. */
|
|
|
|
|
#define RADIAL_KW "RADIAL"
|
|
|
|
|
|
|
|
|
|
#define GLOBAL_STRING "GLOBAL"
|
|
|
|
|
|
|
|
|
|
#define GRIDHEAD_TYPE_INDEX 0
|
|
|
|
|
#define GRIDHEAD_NX_INDEX 1
|
|
|
|
|
#define GRIDHEAD_NY_INDEX 2
|
|
|
|
|
#define GRIDHEAD_NZ_INDEX 3
|
|
|
|
|
#define GRIDHEAD_LGR_INDEX 4
|
|
|
|
|
#define GRIDHEAD_SIZE 100
|
2015-04-14 15:47:22 +02:00
|
|
|
|
2012-06-26 16:10:41 +02:00
|
|
|
/* Observe that these indices are one value lower than the values used
|
|
|
|
|
in the ecl_smspec file. */
|
|
|
|
|
#define DIMENS_NX_INDEX 0
|
|
|
|
|
#define DIMENS_NY_INDEX 1
|
|
|
|
|
#define DIMENS_NZ_INDEX 2
|
|
|
|
|
|
|
|
|
|
#define FILEHEAD_VERSION_INDEX 0
|
|
|
|
|
#define FILEHEAD_YEAR_INDEX 1
|
|
|
|
|
#define FILEHEAD_COMPAT_INDEX 3
|
|
|
|
|
#define FILEHEAD_TYPE_INDEX 4
|
|
|
|
|
#define FILEHEAD_DUALP_INDEX 5
|
|
|
|
|
#define FILEHEAD_ORGFORMAT_INDEX 6
|
|
|
|
|
|
2012-09-13 11:41:48 +02:00
|
|
|
#define GRIDHEAD_GRIDTYPE_CORNERPOINT 1 /* <----\ */
|
|
|
|
|
/* | Fucking hysterical! */
|
|
|
|
|
#define FILEHEAD_GRIDTYPE_CORNERPOINT 0 /* <----/ */
|
2013-01-18 08:53:37 +01:00
|
|
|
|
2012-06-26 16:10:41 +02:00
|
|
|
#define FILEHEAD_ORGTYPE_CORNERPOINT 1
|
2015-04-14 15:47:22 +02:00
|
|
|
#define FILEHEAD_SINGLE_POROSITY 0
|
|
|
|
|
#define FILEHEAD_DUAL_POROSITY 1
|
|
|
|
|
#define FILEHEAD_DUAL_PERMEABILITY 2
|
2013-01-18 08:53:37 +01:00
|
|
|
|
|
|
|
|
|
2015-04-14 15:47:22 +02:00
|
|
|
#define CELL_NOT_ACTIVE 0
|
2014-10-24 11:19:54 +02:00
|
|
|
#define CELL_ACTIVE_MATRIX 1
|
2015-04-14 15:47:22 +02:00
|
|
|
#define CELL_ACTIVE CELL_ACTIVE_MATRIX
|
|
|
|
|
#define CELL_ACTIVE_FRACTURE 2
|
2013-01-18 08:53:37 +01:00
|
|
|
|
|
|
|
|
|
2012-06-26 16:10:41 +02:00
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|