CASEGEN_UPCARS

casegen_upcars is a script to generate simple conceptual models at different scales, containing different types of heterogeneity e.g. matrix, fracture, vug, fault, super-K layers etc. The script is developed as part of UpCaRs (Upscaling in complex carbonate reservoirs) project.

Output from casegen_upcars is in the form of Eclipse simulation models. These models can be run to investigate the impact of changing geological properties on fluid flow.

The script can generate various types of grid structures (tilting, dome, and hull) and throws. The input file is in yaml format.

../_images/casegen_upcars_geometry.png

There is an ERT workflow which utilized casegen_upcars for sensitivity study. More information can be found in wiki page

Command line syntax

Case generator for UpCars project

usage: casegen_upcars [-h] [--top TOP_DEPTH] [--radiusX RADIUS_X]
                      [--radiusY RADIUS_Y] [--radiusZ RADIUS_Z]
                      [--centroidX CENTROID_X] [--centroidY CENTROID_Y]
                      [--originX ORIGIN_X] [--originXPos ORIGIN_X_POS]
                      [--originY ORIGIN_Y] [--originYPos ORIGIN_Y_POS]
                      [--originTop ORIGIN_TOP] [--rotation ROTATION]
                      [--tilt TILT] [--matrix_nz BACKGROUND_NZ]
                      [--matrix_dz BACKGROUND_DZ]
                      [--matrix_poro BACKGROUND_PORO]
                      [--matrix_perm BACKGROUND_PERM]
                      [--matrix_multx BACKGROUND_MULTX]
                      [--matrix_multy BACKGROUND_MULTY]
                      [--matrix_multpv BACKGROUND_MULTPV]
                      [--matrix_fipnum BACKGROUND_FIPNUM]
                      [--matrix_satnum BACKGROUND_SATNUM]
                      [--matrix_swatinit BACKGROUND_SWATINIT] [--no_streak]
                      [--streak_k STREAK_K [STREAK_K ...]]
                      [--streak_nz STREAK_NZ [STREAK_NZ ...]]
                      [--streak_dz STREAK_DZ [STREAK_DZ ...]]
                      [--streak_poro STREAK_PORO [STREAK_PORO ...]]
                      [--streak_perm STREAK_PERM [STREAK_PERM ...]]
                      [--streak_multx STREAK_MULTX [STREAK_MULTX ...]]
                      [--streak_multy STREAK_MULTY [STREAK_MULTY ...]]
                      [--streak_multpv STREAK_MULTPV [STREAK_MULTPV ...]]
                      [--streak_fipnum STREAK_FIPNUM [STREAK_FIPNUM ...]]
                      [--streak_satnum STREAK_SATNUM [STREAK_SATNUM ...]]
                      [--streak_swatinit STREAK_SWATINIT [STREAK_SWATINIT ...]]
                      [--streak_box ['i1', 'i2', 'j1', 'j2']
                      [['i1', 'i2', 'j1', 'j2'] ...]]
                      [--throw ['i1', 'i2', 'j1', 'j2', 'shift']
                      [['i1', 'i2', 'j1', 'j2', 'shift'] ...]] [--no_throw]
                      [--debug_model DEBUG_MODEL] [--seed SEED]
                      [--et ECLIPSE_TEMPLATE] [--base BASE_NAME]
                      [--nMatrixX CELL_MATRIX_X [CELL_MATRIX_X ...]]
                      [--nMatrixY CELL_MATRIX_Y [CELL_MATRIX_Y ...]] [--dx DX]
                      [--dy DY] [--version]
                      [--distanceVug1ToFracture VUG1_DISTANCE_TO_FRACTURE]
                      [--vug1Volume ['Min', 'Max'] ['Min', 'Max']]
                      [--vug1Spread VUG1_SPREAD] [--vug1Poro ['Min', 'Max']
                      ['Min', 'Max']] [--vug1perm ['Min', 'Max']
                      ['Min', 'Max']] [--vug1MULTX VUG1_MULTX]
                      [--vug1MULTY VUG1_MULTY] [--vug1MULTPV VUG1_MULTPV]
                      [--vug1SWATINIT VUG1_SWATINIT]
                      [--vug1FIPNUM VUG1_FIPNUM] [--vug1SATNUM VUG1_SATNUM]
                      [--vug2Volume ['Min', 'Max'] ['Min', 'Max']]
                      [--vug2Poro ['Min', 'Max'] ['Min', 'Max']]
                      [--vug2Perm ['Min', 'Max'] ['Min', 'Max']]
                      [--vug2MULTX VUG2_MULTX] [--vug2MULTY VUG2_MULTY]
                      [--vug2MULTPV VUG2_MULTPV]
                      [--vug2SWATINIT VUG2_SWATINIT]
                      [--vug2FIPNUM VUG2_FIPNUM] [--vug2SATNUM VUG2_SATNUM]
                      [--distanceVug3ToStreak VUG3_DISTANCE_TO_STREAK]
                      [--vug3Volume ['Min', 'Max'] ['Min', 'Max']]
                      [--vug3Spread VUG3_SPREAD] [--vug3Poro ['Min', 'Max']
                      ['Min', 'Max']] [--vug3perm ['Min', 'Max']
                      ['Min', 'Max']] [--vug3MULTX VUG3_MULTX]
                      [--vug3MULTY VUG3_MULTY] [--vug3MULTPV VUG3_MULTPV]
                      [--vug3SWATINIT VUG3_SWATINIT]
                      [--vug3FIPNUM VUG3_FIPNUM] [--vug3SATNUM VUG3_SATNUM]
                      [--noBoundaryFracture] [--BoundaryFracture]
                      [--ft FRACTURE_THICKNESS] [--ndz CELLS_DAMAGE_ZONE]
                      [--porf FRACTURE_PORO] [--satnumf FRACTURE_SATNUM]
                      [--fipnumf FRACTURE_FIPNUM] [--multx FRACTURE_MULTX]
                      [--multy FRACTURE_MULTY] [--pvDamage FRACTURE_MULTPV]
                      [--swatinitf FRACTURE_SWATINIT]
                      [--fLengthX FRACTURE_LENGTH_X [FRACTURE_LENGTH_X ...]]
                      [--fOffsetX FRACTURE_OFFSET_X [FRACTURE_OFFSET_X ...]]
                      [--fHeightX FRACTURE_HEIGHT_X [FRACTURE_HEIGHT_X ...]]
                      [--fVertOffsetX FRACTURE_ZOFFSET_X [FRACTURE_ZOFFSET_X ...]]
                      [--fracPermX FRACTURE_PERM_X [FRACTURE_PERM_X ...]]
                      [--fLengthY FRACTURE_LENGTH_Y [FRACTURE_LENGTH_Y ...]]
                      [--fOffsetY FRACTURE_OFFSET_Y [FRACTURE_OFFSET_Y ...]]
                      [--fHeightY FRACTURE_HEIGHT_Y [FRACTURE_HEIGHT_Y ...]]
                      [--fVertOffsetY FRACTURE_ZOFFSET_Y [FRACTURE_ZOFFSET_Y ...]]
                      [--fracPermY FRACTURE_PERM_Y [FRACTURE_PERM_Y ...]]
                      [--var ['Variable', 'Value'] ['Variable', 'Value']]
                      config_file

Positional Arguments

config_file

Configuration file with all default values

Named Arguments

--top, --depth

Top of the model

--radiusX, --radius_x

Curvature radius in x-direction, for dome/hull shape

--radiusY, --radius_y

Curvature radius in y-direction, for dome/hull shape

--radiusZ, --radius_z

Curvature radius in z-direction, for dome/hull shape, set to zero for slab

--centroidX, --centroid_x

Fractional number to specify center of curvature in X-direction

--centroidY, --centroid_y

Fractional number to specify center of curvature in Y-direction

--originX, --origin_x

Origin coordinate of model in X-direction

--originXPos, --origin_x_pos

Origin position as fraction of model size in X-direction

--originY, --origin_y

Origin coordinate of model in Y-direction

--originYPos, --origin_y_pos

Origin position as fraction of model size in Y-direction

--originTop, --origin_top

Origin top depth

--rotation

Cell coordinate rotation in degree

--tilt

Tilting angle in degree

--matrix_nz

Total number of cells in z-direction, including streaks

--matrix_dz

Cell size in z-direction

--matrix_poro

Porosity for background matrix.

--matrix_perm

Permeability for background matrix.

--matrix_multx

X-direction transmissibility multiplier for background matrix.

--matrix_multy

Y-direction transmissibility multiplier for background matrix.

--matrix_multpv

Pore volume multiplier for background matrix.

--matrix_fipnum

FIPNUM for background matrix.

--matrix_satnum

SATNUM for background matrix.

--matrix_swatinit

Initial water saturation for background matrix.

--no_streak

Remove all streaks setting

Default: False

--streak_k

Streak starting location (k-index). Specify for each streak

--streak_nz

Number of cells in z-direction for each streak. Can be one value for all streaks or specified for each streak

--streak_dz

Cell size in z-direction for each streak. Can be one value for all streaks or specified for each streak

--streak_poro

Porosity for each streak. Can be one value for all streaks or specified for each streak

--streak_perm

Permeability for each streak. Can be one value for all streaks or specified for each streak

--streak_multx

X-direction transmissibility multiplier for each streak. Can be one value for all streaks or specified for each streak

--streak_multy

Y-direction transmissibility multiplier for each streak. Can be one value for all streaks or specified for each streak

--streak_multpv

Pore volume multiplier for each streak. Can be one value for all streaks or specified for each streak

--streak_fipnum

FIPNUM for each streak. Can be one value for all streaks or specified for each streak

--streak_satnum

SATNUM for each streak. Can be one value for all streaks or specified for each streak

--streak_swatinit

Initial water saturation for each streak. Can be one value for all streaks or specified for each streak

--streak_box

Specify streak region (i1, i2, j1, j2)

--throw

Specify throw region and shift in z-direction (i1, i2, j1, j2, shift)

--no_throw

Remove all throws setting

--debug_model

Create a consolidated grid model to be used for debugging in ResInsight

--seed, --SEED, --Seed

Seed for random number generation

--et, --ET, --eclTemplate

Eclipse template data file

--base, --BASE

Base name of generated simulation data file

--nMatrixX, --NMATRIXX, --nMatrixX

Number of matrix/main element grid cells, x-direction. Specify for each block

--nMatrixY, --NMATRIXY, --nMatrixY

Number of matrix/main element grid cells, x-direction. Specify for each block

--dx, --DX, --incX

Increment in x-direction

--dy, --DY, --incY

Increment in y-direction

--version

show program’s version number and exit

--distanceVug1ToFracture

Number of cells between fracture and vugs, put 0 to allow connection to fracture

--vug1Volume, --VUG1VOLUME, --vug1volume

Volume fraction of near fracture vugs, between 0 and 1

--vug1Spread, --VUG1SPREAD, --vug1_spread

Spreading factor of near fracture vug

--vug1Poro, --VUG1PORO, --vug1Poro

Near fracture vugs porosity, min-max

--vug1perm, --VUG1PERM, --vug1Perm

Near fracture vugs permeability, min-max

--vug1MULTX, --vug1multx

Near fracture vugs transmissibility multiplier in x- direction

--vug1MULTY, --vug1multy

Near fracture vugs transmissibility multiplier in y- direction

--vug1MULTPV, --vug1multpv

Near fracture vugs pore volume multiplier

--vug1SWATINIT, --vug1swatinit

Near fracture vugs initial water saturation

--vug1FIPNUM, --vug1fipnum

near fracture vugs FIPNUM

--vug1SATNUM, --vug1satnum

near fracture vugs SATNUM

--vug2Volume, --vug2VOLUME, --vug2volume

Volume fraction of random vugs, between 0 and 1

--vug2Poro, --vug2PORO, --vug2Poro

Random vugs porosity, min-max

--vug2Perm, --vug2PERM, --vug2Perm

Random vugs permeability, min-max

--vug2MULTX, --vug2multx

Random vugs transmissibility multiplier in x- direction

--vug2MULTY, --vug2multy

Random vugs transmissibility multiplier in y- direction

--vug2MULTPV, --vug2multpv

Random vugs pore volume multiplier

--vug2SWATINIT, --vug2swatinit

Random vugs initial water saturation

--vug2FIPNUM, --vug2fipnum

Random vugs FIPNUM

--vug2SATNUM, --vug2satnum

Random vugs SATNUM

--distanceVug3ToStreak

Number of cells between streak and vugs, put 0 to allow connection to streak

--vug3Volume, --VUG3VOLUME, --vug3volume

Volume fraction of near fracture vugs, between 0 and 1

--vug3Spread, --VUG3SPREAD, --vug3_spread

Spreading factor of near streak vug

--vug3Poro, --VUG3PORO, --vug3Poro

Near streak vugs porosity, min-max

--vug3perm, --VUG3PERM, --vug3Perm

Near streak vugs permeability, min-max

--vug3MULTX, --vug3multx

Near streak vugs transmissibility multiplier in x- direction

--vug3MULTY, --vug3multy

Near streak vugs transmissibility multiplier in y- direction

--vug3MULTPV, --vug3multpv

Near streak vugs pore volume multiplier

--vug3SWATINIT, --vug3swatinit

Near streak vugs initial water saturation

--vug3FIPNUM, --vug3fipnum

Near streak vugs FIPNUM

--vug3SATNUM, --vug3satnum

Near streak vugs SATNUM

--noBoundaryFracture

No fracture around the model

--BoundaryFracture

Put fracture around the model

--ft, --FT, --fractureThickness

Fracture thickness

--ndz, --NDZ, --cellsDamageZone

Number of cells in damage zone

--porf, --PORF, --poroFracture

Fracture porosity

--satnumf, --SATNUMF, --satnumF

Fracture SATNUM

--fipnumf, --FIPNUMF, --fipnumF

Fracture FIPNUM

--multx, --MULTX, --multx

MULTX for faults

--multy, --MULTY, --multy

MULTY for faults

--pvDamage, --PVDAMAGE, --pvDamage

Pore volume multiplier inside damage zone

--swatinitf, --swatinitF, --SWATINITF

Initial water saturation inside damage zone

--fLengthX, --FLENGTHX, --flengthx

Fault length for faults in x-dir. Has to be specified for each faults

--fOffsetX, --FOFFSETX, --foffsetx

Fracture/fault offset location for x-dir faults. Has to be specified for each faults

--fHeightX, --FHEIGHTX, --fheightx

Fracture/fault height for x-dir faults. Has to be specified for each faults

--fVertOffsetX, --FVERTOFFSETX, --fvertoffsetx

Fracture/fault z-offset for x-dir faults. Has to be specified for each faults

--fracPermX, --FRACPERMX, --fracpermx

Fracture/fault permeability for x-dir faults. Has to be specified for each faults

--fLengthY, --FLENGTHY, --flengthy

Fault length for faults in y-dir. Has to be specified for each faults

--fOffsetY, --FOFFSETY, --foffsety

Fracture/fault offset location for y-dir faults. Has to be specified for each faults

--fHeightY, --FHEIGHTY, --fheighty

Fracture/fault height for y-dir faults. Has to be specified for each faults

--fVertOffsetY, --FVERTOFFSETY, --fvertoffsety

Fracture/fault z-offset for y-dir faults. Has to be specified for each faults

--fracPermY, --FRACPERMY, --fracpermy

Fracture/fault permeability for y-dir faults. Has to be specified for each faults

--var, --VAR, --Var

Assign optional variables

For more information, check https://wiki.equinor.com/wiki/index.php/UpCaRs_Upscaling_casegen