.. _GRDECL-grids: :index:`GRDECL grids` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ The GRDECL conventions and the supported keywords are described below: .. contents:: :backlinks: top :depth: 2 :local: .. _conv_grdecl_sec: Conventions within Grdecl input files ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Within a GRDECL file the data syntax and conventions are those of Eclipse rather than |pftogs|, in the following respects: * The data is placed on a new line, after the keyword. The values are normally delimited by spaces (although tabs are accepted), and may be split across a number of lines. Data will be read until either the correct number of items have been processed, or a / terminating character is encountered. If all the expected values are present, a / character may still be added and will do no harm. * Repeat counts may be used – for example, 3000*0.44 implies 3000 values of 0.44. * Defaults may be used – for example, 3000* implies 3000 default values. For MULTX, for example the default value is 1.0, so 5* would be the same as 5*1.0 which would be the same as 1.0 1.0 1.0 1.0 1.0. * Depths are measured downwards. * Permabilities are measured in milliDarcies (mD) * The basic ordering scheme is natural ordering – with the I-index changing fastest, then the J-index, and with the K-index changing slowest. The K-order is down the columns of cells. .. _dimens_sec: :index:`DIMENS` ^^^^^^^^^^^^^^^^ This keyword sets the basic dimensions of the (I,J,K) grid, the three arguments being Nx, Ny, and Nz. The following example specifies a 130 by 187 by 34 grid. :: DIMENS 130 187 34 / .. _coord_sec: :index:`COORD` ^^^^^^^^^^^^^^^^ This keyword, combined wth ZCORN, allows a grid with dip and displacement faults to be entered. COORD consists of :math:`(N_x+1)\cdot(N_y+1)` sets of ‘coordinate lines’ each specified by a lower and an upper point, each of which is defined by an x,y,z triplet. In almost every case, COORD/ZCORN data is produced by a pre-processor. However, here is a very simple example, which could be used to set up a 1x1x2 cell grid. It defines cells with an areal extent of 10m by 10m: :: COORD 0 0 0 0 0 10000 10 0 0 10 0 10000 0 10 0 0 10 10000 10 10 0 10 10 10000 / :index:`ZCORN` ^^^^^^^^^^^^^^^^ This keyword specifies the depth of each cell node in the grid defined by DIMENS and COORD. As mentioned under COORD, COORD/ZCORN data is usually generated by a pre-processor. However, here is an example for the 1x1x2 grid considered in the COORD example above: :: ZCORN 4*2003 8*2015 4*2032 / Note that there are 8*Nx*Ny*Nz depths present, setting the four top corner depths of the top cell to 2003 m, the four corners at the bottom of the top cell to 2015, the four corners of the top of the bottom cell to 2015 m and the four corners at the bottom of the bottom cell to 2032 m. It is important to be aware that the arguments of ZCORN are depths, as positive numbers measured downwards. It would be common to include a file of COORD/ZCORN data using EXTERNAL_FILE, as in: :: EXTERNAL_FILE gridgeo/geometry_a.grdecl Units: note that the units of ZCORN are always meters unless GRIDUNITS has selected feet. .. _dx_sec: :index:`DX` ^^^^^^^^^^^^^^^^ To enter a simple regular grid, DX, DY and DZ may be used. This is an alternative to COORD/ZCORN. This keyword specifies the dimension of each cell in the grid x-direction. It is very common to enter this data with a repeat count, such as: :: DX 1122000*6.096 Units: the units of DX are always meters unless GRIDUNITS has selected feet. Note that the order of values is the GRDECL default natural order, with the x-index changing fastest, the z-index changing most slowly, starting from the top layer of the reservoir. .. _dy_sec: :index:`DY` ^^^^^^^^^^^^^^^^ This keyword specifies the dimension of each cell in the grid y-direction. It is analogous to DX. Units: the units of DY are always meters unless GRIDUNITS has selected feet. Note that the order of values is the GRDECL default natural order. .. _dz_sec: :index:`DZ` ^^^^^^^^^^^^^^^^ This keyword specifies the dimension of each cell in the grid z-direction. It is analogous to DX and DY. As reservoirs commonly have a different thickness for each layer, it is common to enter repeated values by layer, for example, for a 10x10x3 grid: :: DZ 100*6.096 100*9.144 100*15.24 / Units: the units of DZ are always meters unless GRIDUNITS has selected feet. Note that the order of values is the GRDECL default natural order. Note that the layers count down from the top layer. Note that the terminating / character is not required if a full set of values has been entered. :index:`PERMX` ^^^^^^^^^^^^^^^^ Specify the permeability for each cell in the grid in the x-direction. An example is for a 10x10x3 grid, in which the top layer has an x-permeability of 50 mD, the middle layer has a permeability of 50 mD and the bottom layer has a permeability of 200 mD. :: PERMX 100*500.0 100*50.0 100*200.0 Units are mD. Default: The default is 0. Note that the order of values is the GRDECL default natural order. Note that in the above example a full set of Nx.Ny.Nz values has been provided, so the terminating / character is not required (although it may be added). If the terminator is used before all the values have been entered, the remaining values will be set to the default of zero. :index:`PERMY` ^^^^^^^^^^^^^^^^ Specify the permeability for each cell in the grid in the y-direction. This keyword is analogous to PERMX. Units are mD. Default: The default is 0. :index:`PERMZ` ^^^^^^^^^^^^^^^^ Specify the permeability for each cell in the grid in the z-direction. analogous to PERMX. Units are mD. Default: The default is 0. :index:`MULTV` ^^^^^^^^^^^^^^^^ Specify the volume multipliers for each cell in the grid. The default is 1.0 The volume multiplier acts on the pore volume and the bulk volume of a cell (so that the amount of fluid and the rock thermal capacity are increased by the same factor. :index:`MULTX` ^^^^^^^^^^^^^^^^ Specify the x-direction transmissibility multipliers for each cell in the grid. The default is 1.0 The x-direction transmissibility multiplier acts on the flow between a cell and its x-direction neighbour in the positive direction. So a MULTX value of 0.5 for cell (1,1,1) in a regular grid would halve the transmissibility between cell (1,1,1) and (2,1,1). :index:`MULTY` ^^^^^^^^^^^^^^^^ Specify the y-direction transmissibility multipliers for each cell in the grid. The default is 1.0 The y-direction transmissibility multiplier acts on the flow between a cell and its y-direction neighbour in the positive direction. So a MULTY value of 0.5 for cell (1,1,1) in a regular grid would halve the transmissibility between cell (1,1,1) and (1,2,1). :index:`MULTZ` ^^^^^^^^^^^^^^^^ Specify the z-direction transmissibility multipliers for each cell in the grid. The default is 1.0 The z-direction transmissibility multiplier acts on the flow between a cell and its z-direction neighbour in the positive z-direction (that is, its downwards neighbour). So a MULTZ value of 0.5 for cell (1,1,1) in a regular grid would halve the transmissibility between cell (1,1,1) and (1,1,2). As an example, for a 100x100x10 grid, the following MULTZ data would prevent flow between the 6 th and 7 th layers, counting from the top: :: MULTZ 50000*1.0 10000*0.0 40000*1.0 / .. _multx_m_grdecl_sec: :index:`MULTX-` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Specify negative x-direction transmissibility multipliers for each cell in the grid. The default is 1.0 The negative x-direction transmissibility multiplier acts on the flow between a cell and its x-direction neighbour in the **negative** direction. So a MULTX- value of 0.5 for cell (3,1,1) in a regular grid would halve the transmissibility between cell (3,1,1) and (2,1,1). .. _multy_m_grdecl_sec: :index:`MULTY-` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Specify negative y-direction transmissibility multipliers for each cell in the grid. The default is 1.0 The negative y-direction transmissibility multiplier acts on the flow between a cell and its y-direction neighbour in the **negative** direction. So a MULTY- value of 0.5 for cell (1,3,1) in a regular grid would halve the transmissibility between cell (1,3,1) and (1,2,1). .. _multz_m_grdecl_sec: :index:`MULTZ-` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Specify negative z-direction transmissibility multipliers for each cell in the grid. The default is 1.0 The negative z-direction transmissibility multiplier acts on the flow between a cell and its z-direction neighbour in the **negative** z-direction (that is, its upwards neighbour). So a MULTZ- value of 0.5 for cell (1,1,3) in a regular grid would halve the transmissibility between cell (1,1,3) and (1,1,2). .. _tranx_sec: :index:`TRANX` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Overwrites the transmissibilities in the X-direction computed internally by the code. The values must be entered in the GRDECL default natural order. Only non-negative entries are accepted. It applies to the I+ direction, for example a value entered for the block (I,J,K), is the transmissibility between the (I,J,K) and (I+1,J,K) blocks. Units are cP.m3/day/bar. Below an example for a model with 100 grid blocks: :: TRANX 100*40.5 / .. _trany_sec: :index:`TRANY` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Overwrites the transmissibilities in the Y-direction computed internally by the code. The values must be entered in the GRDECL default natural order. Only non-negative entries are accepted. It applies to the J+ direction, for example a value entered for the block (I,J,K), is the transmissibility between the (I,J,K) and (I,J+1,K) blocks. Units are cP.m3/day/bar. .. _tranz_sec: :index:`TRANZ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Overwrites the transmissibilities in the Z-direction computed internally by the code. The values must be entered in the GRDECL default natural order. Only non-negative entries are accepted. It applies to the K+ direction, for example a value entered for the block (I,J,K), is the transmissibility between the (I,J,K) and (I,J,K+1) blocks. Units are cP.m3/day/bar. :index:`PORO` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Specify the rock porosities as fractions. The default is 0.0. When a cell is given a zero porosity, it will be made inactive and excluded from the simulation. An example is a 100x100x10 grid, with the entire 5 th layer being removed and made inactive: :: PORO 40000*0.35 10000*0.0 50000*0.23 / :index:`TOPS` ^^^^^^^^^^^^^^^^ Specify the cell top depth. Normally, only the top layer need be specified, and cells below the top layer will be placed underneath that layer at depths which honor the DZ values of the cells. However, it is possible to specify the TOPS depths of all the cells. If this results in the cells being separated in space, then it is possible that the gap between two cells would result in a zero flow between them. The separation required to cause such a zeroing of the flow is controlled by the :ref:`PINCH` keyword. Units: the units of TOPS are always meters unless GRIDUNITS has selected feet. :index:`NTG` ^^^^^^^^^^^^^^^^ Specify the net-to-gross ratios as fractions. The default is 1.0. Net-to-gross ratios represent the fraction of the material in a cell which has the given porosity value. The remaining fraction is assumed to have zero porosity and permeability. It is also assumed that the impermeable material is arranged in layers. The NTG fraction is applied to the pore volume and to permeabilities for flows in the x and y directions. Note that the material which is not in the NTG fraction is assumed to play no role in the simulation. In a thermal simulation in which heat may conduct into impermeable rock, it may be better to include the NTG value in the porosity, and set the rock properties to reflect those of both the rock in the porous fraction and the rock in the non-porous fraction of the cell. Note that the order of values is the GRDECL default natural order. .. _actnum_in_grdecl: :index:`ACTNUM` ^^^^^^^^^^^^^^^^ Specify the active cell status for each cell. :math:`N_x\cdot N_y\cdot N_z` integer values are expected, which should each be 0, 1, 2 or 3, the default being 1. The order of values is the GRDECL default natural order. * A value of 0 will render the cell inactive. * A value of 1 implies that the cell is active, subject to the MINPV criterion. * A value of 2 will set the porosity to 0.000001, so that the cell is rock-filled, which can be useful in some thermal runs. * A value of 3 will set the pore volume to the bulk volume (i.e. porosity of 100%). .. _satnum_in_grdecl: :index:`SATNUM` ^^^^^^^^^^^^^^^^ Specify the set of :ref:`CHARACTERISTIC_CURVES` to be used for each cell. :math:`N_x\cdot N_y\cdot N_z` integer values are expected, which should each be in the range :math:`1` to :math:`N_{cc}`, where :math:`N_{cc}` is the number of sets of CHARACTERISTIC_CURVES provided. The order of values is the GRDECL default natural order. An example is given below: :: SATNUM 300*1 / A set of saturation table function is normally supplied, each one enclosed by the :ref:`CHARACTERISTIC_CURVES` block. The sets of saturation table functions are assigned numbers based on the order in which they appear in the input data – the names under CHARACTERISTIC_CURVES are not used. Sets of saturation functions are then assigned to cells using the SATNUM grid array. .. _imbnum_sec: :index:`IMBNUM` ^^^^^^^^^^^^^^^^ Specify the set of :ref:`CHARACTERISTIC_CURVES` to be used for imbibition processes. :math:`N_x\cdot N_y\cdot N_z` integer values are expected, which should each be in the range :math:`1` to :math:`N_{cc}`, where :math:`N_{cc}` is the number of sets of CHARACTERISTIC_CURVES provided. The order of values is the GRDECL default natural order. An example is given below: :: IMBNUM 300*2 / A set of saturation table function is normally supplied, each one enclosed by the :ref:`CHARACTERISTIC_CURVES` block. The sets of saturation table functions are assigned numbers based on the order in which they appear in the input data – the names under CHARACTERISTIC_CURVES are not used. Sets of saturation functions are then assigned to cells using the IMBNUM grid array. .. _krnumxyz_sec: :index:`KRNUMX`, :index:`KRNUMY`, :index:`KRNUMZ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Specifies the set of :ref:`CHARACTERISTIC_CURVES` (saturation functions) to be used for each cell in the X, Y and Z directions (directional relative permeabilities). :math:`N_x \cdot N_y \cdot N_z` integer values are expected, which should each be in the range :math:`1` to :math:`N_{cc}`, where :math:`N_{cc}` is the number of sets of CHARACTERISTIC_CURVES provided. The order of values is the GRDECL default natural order. An example is given below: :: KRNUMX 200*2 / A set of saturation table functions is normally supplied, each one enclosed by the :ref:`CHARACTERISTIC_CURVES` block. The sets of saturation table functions are assigned numbers based on the order in which they appear in the input data – the names under CHARACTERISTIC_CURVES are not used. Sets of saturation functions are then assigned to cells using the SATNUM grid array. In the absence of directional relative permeabilities the same saturation functions are used for flow in any direction. Directional relative permeabilities will be used if ``KRNUMX``, ``KRNUMY``, ``KRNUMZ`` are used. For more details, see :ref:`Directional Relative Permeability`. :index:`IMBNUMX`, :index:`IMBNUMY`, :index:`IMBNUMZ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Specifies the set of :ref:`CHARACTERISTIC_CURVES` (saturation functions) to be used for each cell in the X, Y and Z directions for imbibition processes (directional relative permeabilities). :math:`N_x \cdot N_y \cdot N_z` integer values are expected, which should each be in the range :math:`1` to :math:`N_{cc}`, where :math:`N_{cc}` is the number of sets of CHARACTERISTIC_CURVES provided. The order of values is the GRDECL default natural order. An example is given below: :: IMBNUMX 200*3 / A set of saturation table functions is normally supplied, each one enclosed by the :ref:`CHARACTERISTIC_CURVES` block. The sets of saturation table functions are assigned numbers based on the order in which they appear in the input data – the names under CHARACTERISTIC_CURVES are not used. Sets of saturation functions for the imbibition process are then assigned to cells using the IMBNUM grid array. In the absence of directional relative permeabilities the same saturation functions are used for flow in any direction. Directional relative permeabilities will be used for imbibition if ``IMBNUMX``, ``IMBNUMY``, ``IMBNUMZ`` are used. For more details, see :ref:`Directional Relative Permeability`. :index:`MINPV` ^^^^^^^^^^^^^^^^ Set the criteria for a cell to be made inactive on the basis of a low or zero pore volume. This keyword takes a single argument, the pore volume below which a cell is deemed to be inactive and excluded from the simulation. The default value is 0.001 rm^3 (reservoir cubic meters). Larger values can be used to exclude cells with small volumes which may create problems for the simulator. An example is: :: MINPV 1000 / This will exclude any cell with a pore volume of less than 1000 rm^3 from the simulation. .. _PINCH-section: :index:`PINCH` ^^^^^^^^^^^^^^^^ Define how pinch-outs (inactive layers between active cells) are to be handled. This keyword takes a single value, which is the maximum distance between two cells in non- neighboring layers with intervening inactive cells, such that a pinch-out connection will be generated between them. The separation distance is the largest of the four corner separation distances. If this separation distance exceeds the pinch-out distance no connection will be generated. An example is: :: PINCH 0.1 / The default value is 0.001 meters. Units: the units of PINCH are always meters unless GRIDUNITS has selected feet. :index:`NEWTRAN` ^^^^^^^^^^^^^^^^ Use a transmissibility calculation which allows displacement faults. This is the default for COORD/ZCORN. :index:`OLDTRAN` ^^^^^^^^^^^^^^^^ Use a transmissibility calculation which only connects neighbors in the IJK grid. This is the default for DX/DY/DZ. .. _dpcf_in_grdecl_sec: :index:`DPCF` ^^^^^^^^^^^^^^^^ Generates a heterogeneous permeability distribution using a Dystra-Parsons standard distribution in ln(K) around the user-specified values. An example is given below: :: dpcf 0.3 1 / The first argument is the Dykstra-Parsons coefficient :cite:`dykstra1950prediction`, which is the reservoir heterogeneity index (:math:`\mbox{RHI}`). The range of this index is between 0 and 1: +---------------------------------+-----------------------------------------------------------------------+ | :math:`\mbox{RHI} = 0` | Homogenous reservoir | +---------------------------------+-----------------------------------------------------------------------+ | :math:`0.0 < \mbox{RHI} < 0.25` | Slightly heterogeneous reservoir | +---------------------------------+-----------------------------------------------------------------------+ | :math:`0.25 < \mbox{RHI} < 0.5` | Heterogeneous reservoir | +---------------------------------+-----------------------------------------------------------------------+ | :math:`0.5 < \mbox{RHI} < 0.75` | Very heterogeneous reservoir | +---------------------------------+-----------------------------------------------------------------------+ | :math:`0.75 < \mbox{RHI} < 1.0` | Extremely heterogeneous reservoir | +---------------------------------+-----------------------------------------------------------------------+ | :math:`\mbox{RHI} = 1` | Perfectly heterogeneous reservoir; unlikely this exists in reality | +---------------------------------+-----------------------------------------------------------------------+ The second optional argument is the integer random number seed value. The default, 0 or 1 will all give the same pseudo-random sequence (i.e. the same consistent heterogeneity will be obtained in successive runs). Positive values 2, 3, 4 etc. will give different pseudo-random sequences. The DPCF option introduces heterogeneity generating relative permeabilities that are not correlated and not representative of any real field. In general, larger values of RHI make the problem harder to solve, especially for values above 0.5. .. _add_sec: :index:`ADD` ^^^^^^^^^^^^^^^^ Define an addition to a grid quantity in some box of cells in the I,J,K grid. This is the first of a set of four keywords (ADD, COPY, EQUALS and MULTIPLY) which allow changes to be made to the grid data. The syntax is typically as in the example below: :: ADD / / ... / where values are one of the set: dx,dy,dz, permx,permy,permz, multx,multy,multz, poro, tops, ntg, actnum, satnum = value to be added to the grid array = box of cells in Cartesian indexing space which selects the cells to which the operation applies. If these values are omitted the initial default the entire reservoir. If entered, the operation applies to cells with coordinates i,j,k such that :math:`il\leq i\leq iu`; :math:`jl\leq j\leq ju` and :math:`kl\leq k\leq ku`. When a series of operations is defined under a single ADD keyword, the default of cell limits for each record are the values used in the previous record. il,jl and kl default to 1, iu defaults to Nx, ju defaults to Ny and ku defaults to Nz. The list of addition operations is terminated when a null record (just a / character on a new line) is encountered. An example is an addition to the permeability in the region :math:`1\leq I\leq 45`, :math:`8\leq J\leq 67`, :math:`15\leq K\leq 16`: :: ADD PERMX 105.2 1 45 8 67 15 16 / / Note that the BOX is defined using the GRDECL convention that layers are counted down from the top of the reservoir. .. _copy_sec: :index:`COPY` ^^^^^^^^^^^^^^^^ Copy the contents of one grid array to another in some box of cells. The syntax is typically: :: COPY / / ... / where and are both from the set dx,dy,dz, permx,permy,permz, multx,multy,multz, poro, tops, ntg, actnum, satnum. The limits of the operation are defined by the box of coordinate limits in the same way as for the :ref:`ADD` keyword. A common example of the use of COPY is setting the PERMY values equal to the PERMX values: :: COPY PERMX PERMY / / .. _equals_sec: :index:`EQUALS` ^^^^^^^^^^^^^^^^ Set the contents of a grid array to a value in some box of cells. The syntax is typically: :: EQUALS / / ... / where is one of the set: dx,dy,dz, permx,permy,permz, multx,multy,multz, poro, tops, ntg, actnum, satnum, tranx, trany, or tranz. is the value to be assigned to the grid array The limits of the operation are defined by the box of coordinate limits in the same way as for the ADD keyword. A common usage of the EQUALS keyword is to assign a single value to an array over the whole reservoir: :: EQUALS PORO 0.132 / / :index:`MULTIPLY` ^^^^^^^^^^^^^^^^^^^ Multiply the values of a grid quantity in some box of cells. The syntax is typically: :: MULTIPLY / / ... / Where is one of the set: dx,dy,dz, permx,permy,permz, multx,multy,multz, poro, tops, ntg, actnum, satnum; or of the set: porv, tranx, trany, tranz. is the value by which the grid array is to be multiplied The limits of the operation are defined by the box of coordinate limits in the same way as for the :ref:`ADD` keyword. A common usage of the MULTIPLY keyword is to multiply an array over the whole reservoir: :: MULTIPLY PERMZ 0.2 / / Internally, PORV multiplication is applied to PORO, and TRANX multiplications are applied to MULTX etc. .. _faults_grdecl_sec: :index:`FAULTS` ^^^^^^^^^^^^^^^^ Define the path of a barrier fault across the reservoir. This type of fault defines a transmissibility barrier in the reservoir. :: FAULTS ‘FAULTA’ 1 5 6 6 1 10 Y / ‘FAULTA’ 5 5 6 8 1 10 X / ‘FAULTA’ 6 10 8 8 1 10 Y / ‘FAULTB’ 1 10 9 9 1 10 Y / / In each fault record the six integers define a box of cells, and the last value (which can be X, Y, Z, X-, Y- or Z-) defines a cell face. In the case of X, Y or Z this is the ‘upper’ cell face in the GRDECL indexing convention – i.e., X implies from the cell to its positive x-index neighbour, Y implies from the cell to its positive y-index neighbour, and Z implies from the cell to the cell below it. In the case of X-, Y- or Z- this is the ‘lower’ cell face in the GRDECL indexing convention – i.e., X- implies from the cell to its negative x-index neighbour, Y- implies from the cell to its negative y-index neighbour, and Z- implies from the cell to the cell above it. Note that the X, Y and Z cases operate by making changes to the MULTX, MULTY and MULTZ transmissibility multiplier arrays, whilst the X-, Y- and Z- cases operate by making changes to the MULTX-, MULTY- and MULTZ- transmissibility arrays. The series of fault records is teminated when an empty record (a single / character) is encountered. Note: Quotes are accepted but are not required. The name can be up to 32 characters and case is not significant. :index:`MULTFLT` ^^^^^^^^^^^^^^^^ Set the multiplier for a fault defined with FAULTS. This multiplier is applied to all the cell faces defined in the corresponding FAULTS track. :: MULTFLT FAULTA 0.5 / FAULTB 0.0 / ! Sealing fault / Note: Quotes are accepted but are not required. The name can be up to 32 characters and case is not significant. :index:`GRIDUNIT` ^^^^^^^^^^^^^^^^^^^^^ Set the units being used for the grid data to metres or feet. :: GRIDUNIT feet / The default is metres. Note that the required conversion is applied from when the GRIDUNIT keyword is read, and can be changed back. In any event the GRIDUNIT selection only applies within the GRDECL file. :index:`GDORIENT` ^^^^^^^^^^^^^^^^^^^^^ Specifies the ordering of the fields (x, y and z direction), the z-direction convention and the orientation of the mesh. :: GDORIENT INC INC INC DOWN LEFT / At present only INC is accepted for the ordering of the fields and DOWN for the z-direction. The orientation of the mesh can either be LEFT or RIGHT and it is passed down to be used by the post-processor. :index:`GRIDFILE` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This keyword is read, but the data is not used. :index:`SPECGRID` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Confirm the dimensions of the grid – these must match the DIMENS values. :index:`MAPUNITS` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This keyword is read, and passed through to the Eclipse format output files. :index:`MAPAXES` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Define the location of the grid in the true space (e.g. a UTM coordinate set). This keyword is read, and passed through to the Eclipse format output files. .. _carfin_sec: :index:`CARFIN` (local grid refinement) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Opens a new cartesian refinement. Takes the following arguments: * refinement name * box of cells to be refined (ixl,ixu,iyl,iyu,izl,izu) * dimension of refinement: nxref,nyref,nzref. For example: :: carfin xxx 1 4 1 4 1 1 16 16 1 / nxfin 5 5 3 3 / nyfin 5 5 3 3 / endfin Within the block from CARFIN to ENDFIN, can set cell properties as for a grid with dimension nxref by nyref by nzref. Here is an example of a visualisation of a model with local grid refinement: .. figure:: ../../images/lgr1.jpg :scale: 100 % :alt: localGridRef1 Here is an example of setting up a simple LGR with the following keywords in the file included as TYPE GRDECL: :: carfin lgrxxx 2 3 2 3 1 1 4 4 2 / endfin This will refine the domain from I=2 to I=3, J=2 to J=3, and K=1 by a factor of 2, into a 4 by 4 by 2 local grid, which should appear on the output as: .. figure:: ../../images/carfin_example.png :scale: 70 % :alt: localGridRef2 :index:`HXFIN`, :index:`HYFIN`, :index:`HZFIN` ======================================================= Specify the relative sizes of the refinement cells in X, Y and Z directions within a LGR data block. HXFIN, HYFIN and HZFIN expect a number of entries equal to the number of refinement cells in X, Y and Z directions in the LGR block, with each entry being the ratio between the cell size and the previous cell size (I-1, J-1, K-1), in a given global cell. Note that the number of cells and indices (I,J,K) being referred to, are those relative to the specific LGR block, not the global ones. Default values specified by the special asterisk character (e.g. 2*) are given a value equal to 1, which means no size change with respect to the previous cell. HXFIN, HYFIN and HZFIN are normally used in conjunction with NXFIN, NYFIN and NZFIN. See example below: :: CARFIN XXX 1 5 1 5 1 3 20 20 10 NXFIN 8 4 4 2 2 / NYFIN 8 4 4 2 2 / NZFIN 2 2 6 / HXFIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 / HYFIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 / HZFIN 2* 2* 1 2 3 4 5 6 / ENDFIN .. figure:: ../../images/hxfin_pic.jpg :scale: 100 % :alt: localGridRef1 :index:`NXFIN`, :index:`NYFIN`, :index:`NZFIN` ===================================================== Specify how the refined cells are to be split between global cells. So for ``NXFIN`` with ixu-ixl+1=4, four global cells refined in x-direction expect 4 arguments, the arguments sum to nxref, the refinement dimension. :index:`EQLNUM` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Specify the EQUILIBRATION data to be used for each cell. Nx⋅Ny⋅Nz integer values are expected, which should each be in the range 1 to Neq, where Neq is the number of EQUILIBRATION data blocks provided in the input. The order of values is the GRDECL default natural order. EQLNUM associates each cell to an EQUILIBRATION data set, with the EQLNUM integer indices referring to the order in which EQUILIBRATION data sets are found in the input. That is, an EQLNUM value of 1 associates the cell with the first EQUILIBRATION block, 2 with the second and so on. .. _gdfile_sec: :index:`GDFILE` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ It allows to read an Eclipse grid in .EGRID format. See example below: :: GDFILE base.EGRID / GDFILE is followed by a new line containing the grid file name. The card must be terminated by a forward slash. The filename may be enclosed with quotes: :: GDFILE "base.EGRID" / Note that when using an absolute path for the filename, then quotes are mandatory, for example: :: GDFILE "/home/me/grid_fikes/base.EGRID" / .. _fip_sec: :index:`FIPNUM`, :index:`FIPXXX` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FIP arrays are needed to compute fluid in place, flow rates and totals by region, and inter regions flows, which are all reported to the summary file. Multiple FIP arrays can be defined (currently up to 6), and each of them divides the reservoir in regions, labelling each region with an integer, and assigning to each grid block the region number it belongs to. If only one partitioning by regions is required, the standard FIPNUM array can be used. FIPNUM expects :math:`N_x \cdot N_y \cdot N_z` integer values, which should each be in the range :math:`1` to :math:`N_{reg}`, where :math:`N_{reg}` is the number of regions introduced by FIPNUM. The order of values is the GRDECL default natural order. An example is given below: :: FIPNUM 500*1 500*2 / In this example the first 500 grid blocks are assigned to region number 1, the remaining 500 grid blocks are assigned to region 2. If more than one partitioning by region is needed, the user defines the FIP arrays names, adding arbitrary letters to the FIP prefix. A name with 8 or fewer characters is recommended, to retain compatibility with the Eclipse output mnemonics. An example using the EQUALS operator to define FIPXXX is given below: :: EQUALS FIPXXX 1 1 15 4* / FIPXXX 2 16 30 4* / / In this example ‘XXX’ is added to FIP to define the FIPXXX array, and :ref:`EQUALS` is used to define region 1 as the first half of the domain in the I-direction, and region 2 as the second half. The use of FIP arrays will add region reports to the summary file, see :ref:`Line Graphic Mnemonic`, and will output also the FIP arrays to the static properties associated with the grid. .. _nnc_sec: :index:`NNC` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ It specifies one or more non-neighbour connections, beyond those already generated internally for faults. Each user-defined connection between two non-neighbours cells requires the specification of the (I,J,K) logical coordinates of the two grid blocks being connected, followed by a transmissibility value. Each connection must be defined in a new line terminated by a slash, and a NNC data block is terminated by a line containing only a forward slash. More NNC data blocks can be specified for the same GRDECL grid. The transmissibility units are cP.m3/day/bar. See below an example defining two non-neighbour connections: :: NNC 1 1 1 1 1 3 32.5 / 1 1 1 2 1 3 45.1 / /