2013-01-25 10:37:39 -06:00
|
|
|
|
Considerations
|
|
|
|
|
==================================
|
2013-01-25 00:30:30 -06:00
|
|
|
|
|
2013-01-28 00:53:48 -06:00
|
|
|
|
This function interface towards ResInsight is currently a Draft,
|
|
|
|
|
and not addressing some issues. The known issues are :
|
|
|
|
|
|
|
|
|
|
1. How do we address Cases in the future when we have Case Groups ?
|
|
|
|
|
Where do we write/store the generated data ?
|
|
|
|
|
2. Users wants to run octave operations on several cases/groups.
|
|
|
|
|
There are two ways (at least) of doing that. Either from ResInsight:
|
|
|
|
|
1 Command to call a specified Octave Script for each selected Case
|
|
|
|
|
2 Creating Scripts that loops over all selections in ResInsight
|
|
|
|
|
Option 2 is needed if users wants to do cross-case operations
|
|
|
|
|
Option 1 seems intuitive for one case operations
|
|
|
|
|
How does these two relate ?
|
|
|
|
|
|
|
|
|
|
3. Do we need functions to retreive the selected/active cases/groups ?
|
|
|
|
|
4. Do we need functions to retreive info on what Parent cells an LGR occupies ?
|
2013-01-25 00:30:30 -06:00
|
|
|
|
|
2013-01-25 02:49:54 -06:00
|
|
|
|
|
2013-01-25 10:37:39 -06:00
|
|
|
|
Project Information
|
|
|
|
|
==================================
|
2013-01-25 00:30:30 -06:00
|
|
|
|
|
2013-01-25 10:37:39 -06:00
|
|
|
|
Vector[Casenames] riGetCaseNames()
|
|
|
|
|
|
|
|
|
|
Returns a vector of all the case names in the current ResInsight project
|
|
|
|
|
Use this to determine the number of cases as well
|
|
|
|
|
|
2013-01-28 00:53:48 -06:00
|
|
|
|
This probably needs some additions related to Case Groups
|
2013-01-25 10:37:39 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Retreiving Grid Metadata
|
|
|
|
|
==================================
|
2013-01-25 02:49:54 -06:00
|
|
|
|
|
|
|
|
|
Matrix[ActiveCells][8] riGetActiveCellInfo( [CaseName/CaseIndex])
|
2013-01-25 00:30:30 -06:00
|
|
|
|
|
2013-01-28 00:53:48 -06:00
|
|
|
|
Returns a two dimensional matrix: [ActiveCells][8]
|
2013-01-25 00:30:30 -06:00
|
|
|
|
|
2013-01-25 06:46:29 -06:00
|
|
|
|
Containing grid and ijk information about the cells from the Eclipse Case defined.
|
|
|
|
|
The columns contain the following information:
|
|
|
|
|
1: GridIndex: The index of the grid the cell resides in. (Main grid has index 0)
|
|
|
|
|
2, 3, 4: I, J, K: 1-based index address of the cell in the grid.
|
|
|
|
|
5: ParentGridIndex. The index to the grid that this cell's grid is residing in.
|
|
|
|
|
6, 7, 8: PI, PJ, PK address of the parent grid cell that this cell is a part of.
|
|
|
|
|
If the Eclipse Case is not defined, the active View in ResInsight is used.
|
2013-01-25 02:49:54 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Matrix[g0I, g0J, g0K; ... ; gnI, gnJ, gnK] riGetGridDimensions ( [CaseName/CaseIndex])
|
|
|
|
|
|
2013-01-25 06:46:29 -06:00
|
|
|
|
Returns a matrix: [NuberOfGrids][3]
|
2013-01-28 00:53:48 -06:00
|
|
|
|
containing the I, J, K dimensions of the main grid and all the LGR's
|
2013-01-25 10:37:39 -06:00
|
|
|
|
|
|
|
|
|
# Unnecessary ? # Vector(3)[ICount, JCount, KCount] riGetMainGridDimensions( [CaseName/CaseIndex])
|
|
|
|
|
# Unnecessary ? #
|
|
|
|
|
# Unnecessary ? # Returns a vector of size 3: [ICount, JCount, KCount]
|
|
|
|
|
# Unnecessary ? # Containing the dimensions of the main grid in the requested case.
|
|
|
|
|
# Unnecessary ? # If the Eclipse Case is not defined, the active View in ResInsight is used."
|
|
|
|
|
# Unnecessary ? #
|
|
|
|
|
# Unnecessary ? # NumberOfGrids riGetNumLGRs([Casename/CaseIndex])
|
|
|
|
|
# Unnecessary ? #
|
|
|
|
|
# Unnecessary ? # Returns an integer telling the number of LGRS in this case
|
2013-01-25 02:49:54 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vector[Dates] riGetTimestepDates([Casename/CaseIndex])
|
|
|
|
|
|
2013-01-25 06:46:29 -06:00
|
|
|
|
Returns a vector of all the timesteps in a case as dates YYYY.MM.DD
|
2013-01-25 02:49:54 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vector[Days] riGetTimestepDays([Casename/CaseIndex])
|
|
|
|
|
|
2013-01-25 06:46:29 -06:00
|
|
|
|
Returns a vector of all the timesteps in a case as days from start
|
2013-01-25 02:49:54 -06:00
|
|
|
|
|
|
|
|
|
|
2013-01-28 00:53:48 -06:00
|
|
|
|
Retreiving property data
|
|
|
|
|
==================================
|
|
|
|
|
|
|
|
|
|
Matrix[ActiveCells][Timesteps] riGetActiveCellProperty( [CaseName/CaseIndex], PropertyName )
|
|
|
|
|
|
|
|
|
|
Returns a two dimentional matrix: [ActiveCells][Timesteps]
|
|
|
|
|
|
|
|
|
|
Containing the requested property data from the Eclipse Case defined.
|
|
|
|
|
If the Eclipse Case is not defined, the active View in ResInsight is used.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Matrix[numI][numJ][numK][timeSteps] riGetGridProperty( [Casename/CaseIndex], GridIndex , PropertyName )
|
|
|
|
|
Matrix[numI][numJ][numK] riGetGridProperty( [Casename/CaseIndex], GridIndex , PropertyName, TimeStep )
|
|
|
|
|
|
|
|
|
|
Returns a 4D or 3D matrix of the requested property data for all the gridcells in the requested grid.
|
|
|
|
|
Grids are indexed from 0 - main grid to Max num LGR's
|
|
|
|
|
|
|
|
|
|
Writing Back to ResInsight
|
|
|
|
|
==================================
|
|
|
|
|
|
|
|
|
|
riSetActiveCellProperty( Matrix(nActiveCells, nTimesteps), [CaseName/CaseIndex], PropertyName )
|
|
|
|
|
|
|
|
|
|
Interprets the supplied matrix as an eclipse property set, and puts the data into
|
|
|
|
|
ResInsight as a "Generated" property with the name "PropertyName". The property
|
|
|
|
|
is added to the active case if no case specification is given, or to the Eclipse Case
|
|
|
|
|
named "CaseName" or to the case number "CaseIndex". "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
riSetGridProperty( Matrix[numI][numJ][numK][timeSteps] , [CaseName/CaseIndex], GridIndex, PropertyName )
|
|
|
|
|
riSetGridProperty( Matrix[numI][numJ][numK], [CaseName/CaseIndex], GridIndex, PropertyName , TimeStep)
|
|
|
|
|
|
|
|
|
|
Interprets the supplied matrix as an eclipse property set defined for all cells in one of the grids in a case,
|
|
|
|
|
and puts the data into ResInsight as a "Generated" property with the name "PropertyName". The property
|
|
|
|
|
is added to the active case if no case specification is given, or to the Eclipse Case
|
|
|
|
|
named "CaseName" or to the case number "CaseIndex". "
|
|
|
|
|
|
2013-01-25 06:46:29 -06:00
|
|
|
|
Cell geometry functions:
|
|
|
|
|
=================================
|
2013-01-25 02:49:54 -06:00
|
|
|
|
|
2013-01-25 06:46:29 -06:00
|
|
|
|
Matrix[numI*Vector(3)][numJ*Vec(3)] [numK*Vec(3)] riGetCellCenters( [Casename/CaseIndex], GridIndex )
|
2013-01-25 02:49:54 -06:00
|
|
|
|
|
2013-01-25 06:46:29 -06:00
|
|
|
|
Returns the UTM coordinates (X, Y, Z) for centerpoint of all cells
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Matrix[numI*8*Vector(3)][numJ*8*Vec(3)] [numK*8*Vec(3)] riGetCellCorners( [Casename/CaseIndex], GridIndex )
|
|
|
|
|
|
|
|
|
|
Returns the UTM coordinates of the each cells 8 corners
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Well data functions
|
|
|
|
|
=================================
|
|
|
|
|
Vector[WellNames] riGetWellNames([Casename/CaseIndex])
|
|
|
|
|
|
|
|
|
|
Returns the names of all the wells in the case
|
|
|
|
|
|
|
|
|
|
Vector[ I, J, K, GridNr] riGetWellCells([Casename/CaseIndex], WellName/WellIndex, TimeStep, Producing/Injecting/Any)
|
|
|
|
|
|
|
|
|
|
Returns the cells that has the requested production status for the given well and timestep
|
|
|
|
|
|
2013-01-28 00:53:48 -06:00
|
|
|
|
|
2013-01-25 10:37:39 -06:00
|
|
|
|
Comments to remember/consider
|
2013-01-25 06:46:29 -06:00
|
|
|
|
=================================
|
|
|
|
|
<EFBFBD>Execute for all cases within group<75> in script-tree
|
2013-01-25 02:49:54 -06:00
|
|
|
|
|
|
|
|
|
Well trajectories (alternative trajectory like Planned / Drilled /Real Time/ Project ahead?)
|
|
|
|
|
riGetTrajectories(well, case) ? MD, Inc, Az, Norht(X), East(Y), TVD(Z),DLS,BUR,TR,prop/log/connections?
|
2013-01-25 06:46:29 -06:00
|
|
|
|
|
|
|
|
|
Operator to restrict operation to be carried out inside a given polygon object
|
|
|
|
|
riInside(polygon)
|
|
|
|
|
|
|
|
|
|
Set Octave function Case ID as a function parameter (enable for loops)
|
|
|
|
|
Write grid data to file on .grdecl format (and read & append?)
|