Geology, Petrel and Static Modeling Training.
Topic 8: Uncertainty
We now have completed our first pass workflow covering the Base Case modelling for our two zones.
We have modelled the structure, facies, porosity, permeability and Water Saturation based on our Base
Case information that we have from the Petrophysicist and Reservoir Engineering. The STOIIP and
GIIP histograms show us that there is a variation in the volumes however these variations are purely
based on changing the seeds for facies and porosity processes. These differences only relate to the
uncertainty in the two seeds.
The next step we need to complete is to assess the effects of uncertainty in our input data on the STOIIP
and GIIP within each reservoir. There is uncertainty in all our data input categories however we need
to find out which data category has the greatest effect (sensitivity) on our STOIIP so that we can focus
our attention on reducing these uncertainties. Possible uncertainties are listed below:
Structure. Due to limited well data our depth maps may or may not be correct. We have Base
Case depth surfaces/horizons, however different velocity models will result in different
structures, depths, and thicknesses of our reservoir zones. What effects on the volumes will
these have? Varying the structure will have an effect on the GBV and ultimately all other
volumetrics (Net, Pore Volume, STOIIP etc.)
Zones. There are uncertainties in our isopachs, layering, cell size, and layering methods. What
effects on the volumes will these have?
Facies. Global sand proportions may vary across the field and thus affect the Net to Gross
distributions. Lateral and Vertical connectivity of these sands may vary, and thus we need to
assess out variogram ranges and their effects. What effects on the volumes will these have?
Porosity. Porosities may vary across the field and thus affect the Pore Volumes. Lateral and
Vertical changes may occur, and thus we need to assess out variogram ranges and their effects.
Well porosity may or may not be representative of the porosities across the field. What effects
on the volumes will these have?
Permeability. When permeability is used in the Water Saturation it is important to understand
the uncertainties and variations in the permeability. The fitting of the poroperm function to
the core data is not exact and thus we have to assess what are the effects of the permeability
uncertainties on the STOIIP.
Water Saturation. The creation of our J Function is based on an SW above the contacts. We
could be too optimistic or pessimistic with this function and thus have to assess the
uncertainty in the J Function and the effects on the STOIIP.
Contacts. Do we have real ‘contacts’ or are they ‘down toos’ or ‘up toos’? What are the effects
on the reservoir STOIIP and ‘sweet spots’?
All the above will have an effect on the volumes we have in each reservoir. We have to assess all of
them and determine which ones are the most important. By identifying the variable that has the largest
effect on the STOIIP we can then make recommendations on further data collection or analysis to
reduce this uncertainty.
For example if we have a shallow marine sheet sand that is laterally continuous with good core and
well data showing us that the porosities are between 26% and 30% with the mean porosity in each
well of 28% we would believe that there is only a small amount of uncertainty in the porosity data
in our modelling. The porosity range would be very small and thus have little effect on the STOIIP
if we run our models at the higher or lower porosity boundaries. In these same wells however, we
might have very poor VSP data and thus a poor velocity model being used in the depth conversion
process. Uncertainty would be high in the GBV calculations and this focus should be on improving
the depth conversion process (more VSP’s) rather than porosity analysis (ie. No need for more
cores).
The best way to assess the uncertainties of each of these variables is to keep all the variables fixed and only change
one variable at a time. Changing all the variables at the same time is complex and can create confusing results. It
is suggested that we fix all variables in the workflow at the start and then change one variable at a time and assess
the effects. Then change a second variable and so on until we have assessed all the uncertain variables. I always
prefer to assess the uncertainties in reverse order of how the workflow was created, ie. Keep all variables fixed
and change the contacts first. Assess these effects and then make adjustments to the FVF, Water Saturation and
so on. However it must be stressed that it is only worth changing the settings for a variable that you believe will
have an effect on the STOIIP distribution compared to the BASECASE.
The Petrel modeling software allows for uncertainty analysis through the creation of multiple uncertainty ‘loops’
within the workflows. Uncertainty workflows can either be created using an ‘automated’ tool called uncertainty
optimization, or the user can manually build and edit their own workflow to achieve the same results. Creating
your own uncertainty workflow gives the user more flexibility and trust in the software rather than trusting the
software to create its own uncertainty workflow, however it is a time consuming and complex process.
Topic 8 will cover the ‘automated’ uncertainty workflow creation. During these discussions I will only focus on
the STOIIP however the GIIP will also change during these uncertainty workflows.
Our current Base Case Volumetric Analysis gives us the following results with the Facies seed = 10,000, and the
porosity seed = 20,000.
GBV Net Vol Pore Vol HCPV STOIIP GIIP
Zone
(m3) (m3) (mmstb) (mmstb) (mmstb) (bcf)
Diamond 57.6 22.3 29.0 20.0 17.77 0.8
Ruby 116.8 41.2 47.5 30.0 26.48 14.9
Total 174.5 63.6 76.4 51 44.25 15.7
Automated Uncertainty
1. Initial set up of uncertainty workflow.
► Create a new folder in the Cases tab called ‘Uncertainty’
► Process Tab ► Utilities ► Uncertainty and optimization
► Create New ► New Name ‘UncertaintyWF_v1’
► Change the ‘Task’ to Uncertainty
► Cases Tab ► Select the BASECASE Case ► Click on Blue arrow ► Click on ‘Edit Workflow’
► Click on ‘Edit workflow’ and Disable
► Make Horizons, Layering, Geometrical Modeling, Scale up well logs.
► Remove any loops, net maps, average maps and messages in the workflow.
Open the BaseCaseWF and copy the lines that are missing in the Uncertainty workflow so that the Uncertainty
Workflow has all the same process lines as the original BaseCaseWF and in the same order.
► The last line of the Uncertainty workflow should be the ‘Move’ line to move the Volumetric analysis results
(cases) to the new folder in the cases Tab.
► Check the facies modeling process and ensure that it contains all the internal processes required, ie. Global
proportions, LVA, Probability Map, and the Variograms etc. Global Seed should be fixed at 10000.
► Check the porosity modeling process and ensure that it contains all the internal processes required, ie. Global
proportions, LVA, Probability Map, and the Variograms etc. Global Seed should be set at 20000.
► Save the workflow AND the Project.
2. Contacts Uncertainty
Although we have visible OWC and GOC contacts in our wells, for the purpose of training we will assume that
we have some uncertainty on the OWC contact in the Diamond and Ruby Zones. We will assess the effects of
having a +/- 6 meter change in the Diamond OWC and GOC and +/- 3 meters for the Ruby OWC and GOC.
► Open the Make contacts process and change the following:
► Diamond GOC to $DGOC, Ruby GOC to $RGOC
► Diamond OWC to $DOWC, Ruby OWC to $ROWC
Since we are adjusting the OWC’s the Water Saturation (& transition zone) will also change as a result of the
change in the contact due to the Height above contact in the J Function. When the contact changes then the
HAFWL will change, which in turn changes the Water Saturation. As a result for each time we change the contact
to the low or high case contacts, we have to adjust the SW so that the Water Saturation represents the adjusted
contact. With the contacts changing we thus have to change the HAFWL property (HAFWLD, HAFWLR) for
each zone
We are NOT changing the method of calculating the SW, ie. J Function uncertainty, at this stage, but we are
addressing the changes in the Water Saturation as a result purely of the change in the HAFWL above the
new/uncertainty contacts.
This requires us to edit the workflow so that the HAFWL is re-calculated, separately for each zone, each time a
new contact is used for Diamond. The HAFWL property is created using the Geometrical Modeling process. We
have to add in a Geometrical Modeling process line to change the HAFWLD for Diamond based on the new
$DOWC and a new GM for the HAFWLR (for Ruby).
► Add in two Geometrical Modeling (GM) process lines from the processes tab after the Make contacts process
line. ► Edit Workflow ►Process ► Geometrical Modeling
► Edit the first GM process by adding in the $DOWC in to the Constant option, and the second GM process
by adding the $ROWC into the Constant option.
The Uncertainty workflow should look like the image below ….
The 4 variables set in the Make contacts line and the two variables in the Geometrical Modeling line.
► Click on the Variables tab
► Change the distribution for each variable to Triangular.
► Set the variables as per the table below.
Name Base value Distribution Min Mode Max Uncertainty
$DGOC -2236 Triangular -2242 -2236 -2230 +/- 6m
$RGOC -2296 Triangular -2299 -2296 -2293 +/- 3m
$DOWC -2289 Triangular -2295 -2289 -2283 +/- 6m
$ROWC -2369 Triangular -2372 -2369 -2366 +/- 3m
► Click on the uncertainty tab ► Task set to Sensitivity by variable ► Set No. of samples to 5 ► Sampling
Method to Equal spacing sampler.
► Click on the ‘show variables tab’.
The spreadsheet window will show the values that will be used for each realisation, equally spaced between the
Minimum and Maximum depth values. Close this window.
► Run the workflow.
► Create a new Histogram window that we will use specifically during the uncertainty analysis
► View the STOIIP distribution for each zone by selecting all the cases in the Uncertainty Folder. You will see a
variation in the STOIIP purely based on the OWC and GOC uncertainties.
► Diamond STOIIP distribution: P10 = 13.4 mmstb, P50 = 18.3 mmstb, p90 = 21.3 mmstb
► Ruby STOIIP distribution: P10 = 26.6 mmstb, P50 = 30.1 mmstb, p90 = 33.2 mmstb
► Rename the Cases Tab to Contacts_Triangular
We have set the distribution of the contacts between the High and Low case because we have a belief that our
current Base Case contacts are correct but there is a reducing probability of the contacts being the High and Low
Cases.
If, however we have no idea the distribution of the contacts between the High and Low case and all depth values
between the High and the Low are equiprobable , we would set the contacts distribution to Uniform.
► Create a new Cases tab named Contacts_Uniform
We will now change the contacts distribution to ‘Uniform’ the uncertainty Workflow.
► Edit the Uncertainty Workflow
► Variables tab ► Change the Distribution for each contact to Uniform ► Input the minimum and maximum
values for each contact.
► Base Case tab ► Change the output directory for the Volume Calculation to the ‘Contacts_Uniform’ Cases
folder.
► View the STOIIP distribution for each zone by selecting all the cases in the Uncertainty Folder. You will see
that the STOIIP distribution have NOT changed because we are using equal spacing in our sampling, ie. Only 5
‘equally spaced’ samples for both Triangular and Uniform settings. The purpose of this is to show the effects of
equally sampled space between the contact depths, irrespectively of how the Distribution is used, ie. Normal and
Triangular will produce the same if equal spacing is selected.
► Delete all the cases in the ‘Contacts_Uniform’ cases folder.
► Edit the Uncertainty Workflow
► Variables tab ► Keep the Distribution as Uniform
► Uncertainty Tab ► Change sampling method to Monte-Carlo sampler ► Set the number of samples to 50.
The sampling of the variables will be random
► Save your Project
► Run the workflow.
► View the STOIIP distribution for each zone by selecting all the cases in the Uncertainty Folder. You will see a
variation in the STOIIP purely based on the OWC and GOC uncertainties.
► Diamond STOIIP distribution: P10 = 14.0 mmstb, P50 = 18.3 mmstb, p90 = 21.3 mmstb
► Ruby STOIIP distribution: P10 = 26.9 mmstb, P50 = 30.3 mmstb, p90 = 33.0 mmstb
► In the Cases Tab ► RMB on the Contacts_Uniform Folder ► Show variables spreadsheet.
The variables spreadsheet shows you the different run names, numbers, and variables used in each volumetric
case.
► Click on Add columns
► Volumetrics Tab ► STOIIP ► Add
► Click on the header for the STOIIP column and order the rows based on STOIIP.
With changing the contacts the newly created SW property will NOT match the original well log SW due to the
changed OWC. Commonly the SW log from the RE/Petrophysicist is very difficult to match, however the primary
purpose is to try to match the SW. If we have no contacts identified then we have to run uncertainty on the
contacts. If we have contacts we try to adjust other properties to get a better fit to the SW log.
3. Formation Volume Factors Uncertainty
Currently the Bo is set to 1.15 and the Bg is set to 0.0054. Oil and Gas expansion factors are usually obtained
from the Reservoir Engineer based on sample data. Bo is affected by oil API and depth/pressure of the reservoir
and relates to how much the hydrocarbon expands as it is brought to the surface. The expansion of the oil is based
on the oil density (API) and the depth from which it is brought up from. There are levels of uncertainties in these
values also. In this example we will adjust the Bo by a factor of +/- 10%.
► Create a new folder in the Cases tab called ‘Uncertainty_Bo’
► Workflows Tab
► Edit the Uncertainty Workflow ► Change the output Folder for the Volume Calculation
► Edit the Volume Calculation process
► Oil Tab ► Change the Bo to the variable $BO
► Gas Tab ► Change the Bg to the variable $BG
► Variables tab ► The two new variables, $BO and $BG are now listed
Edit these variable with the values below.
Name Base value Distribution Min Mode Max Uncertainty
$BO 1.15 Triangular 1.035 1.15 1.265 +/- 10%
$BG 0.00554 Triangular 0.004966 0.00554 0.006094 +/- 10%
► Uncertainty Tab ► Set the number of samples to 30.
The sampling of the variables will be random
► Run the Workflow
► View the STOIIP distribution for each zone by selecting all the cases in the Uncertainty Folder.
4. Water Saturation Uncertainty
The Water Saturation has been calculated using the ‘J Function’. Due to uncertainties in the calculation method
again we will have uncertainty in the SW. In this case we will adjust the SW based on a normal distribution with a
standard deviation of 3%. The SW will thus have a 99% chance of being between +/- 9% of the calculated SW.
► Create a new folder in the Cases tab called SW Uncertainty
► Workflows Tab
► Edit the Uncertainty Workflow ► Change the output Folder for the Volume Calculation
► Edit the Volume Calculation process
In the Workflow we need to create a variable that will be used to adjust the SW by +/- 10%.
► Add a Property Calculator line in after the SWJ calculation, but before the capping of the SW values.
SWJ = $SW * SWJ
► Variables Tab ► Set the $SW variable to Normal distribution, Mean = 1, and Std = 0.03
Name Base value Distribution Mean Std
$SW 1 Normal 1 0.003
► Uncertainty Tab ► Set the number of samples to 40.
The sampling of the variables will be random
► Save your Project
► Run the Workflow
► View the STOIIP distribution for each zone by selecting all the cases in the Uncertainty Folder.
Commonly the Petrophysicist will supply 3 J functions based on Base, Low and High case Water Saturation. These
3 functions will have different constants and components in the equation. These components can be used for the
uncertainty analysis by varying these numerical values in the J Function.
These realisations so far are using uncertainties on OWC, GOC, Bo, Bg, and SW. With adding these uncertainties
to the analysis, ie. Including the high and low values, we expect that the STOIIP distribution will become ‘wider’
as we are including the high and low boundaries. The more realisations we run the more chance that all the low
values for one variable will be run with the low value of another(s) variable giving what is called a low-low-low-
low value with the same applying for a combination of all the high values (high-high-high). With a very large
number of realisations the STOIIP distribution would be the widest.
► Diamond STOIIP distribution: P10 = 14.0 mmstb, P50 = 18.1 mmstb, p90 = 21.2 mmstb
► Ruby STOIIP distribution: P10 = 25.9 mmstb, P50 = 30.4 mmstb, p90 = 33.1 mmstb
Note the STOIIP distribution becomes wider, with some effect on the P10 and P90’s.
5. Permeability Uncertainty
The Water Saturation has been calculated using the ‘J Function’ that uses permeability as one of the components.
As can be seen from the poroperm transforms there can be a significant difference in the permeability values at
any given porosity. Remember however that we are only using a single poroperm transform and that ultimately
permeability is ‘controlled’ by porosity. One common method is to use 3 different poroperm transforms, a Base,
High and Low poroperm transforms each with a slightly different equation.
Instead of using 3 poroperm transforms we are going to use a random number generator with a normal
distribution with the Base Case poroperm transform as the ‘Midline’ and a multiplier to generate some higher
permeabilities and some lower permeabilities in each of our realisations. We will do this on both zones.
When analysing the core data in the Diamond zone at the porosity of 0.23 the permeability could
reasonably range from 40mD, to 160mD (Mean = 80mD), while in the Ruby at a porosity of 0.32 the permeability
could range from 120mD to 560mD (480mD) (Mean = 240mD). Using a ‘factor’ of 2 based on the Midline and
multiplying by or dividing by this factor, should give us a ‘reasonable’ distribution for the variability in the
permeability distribution. We will create a $K variable that defines a triangular distribution (Mode = 1, Max = 2,
and Min = 0.5) that will be used to multiply the permeability in the model. Due to the logarithmic natur of
Permeability with the Maximum set to 2, the distribution will not be Normal. It will be skewed to the high side.
Name Base value Distribution Min Mode Max
$K 1 Triangular 0.5 1 2
► Create a new folder in the Cases tab called K_Uncertainty
► Workflows Tab
► Edit the Uncertainty Workflow ► Change the output Folder for the Volume Calculation
► Add in a Property Calculator line after the current permeability property calculation lines as follows
PERM = $K * PERM
► Uncertainty Tab ► Set the number of samples to 20.
The sampling of the variables will be random
► Save your Project
► Run the Workflow
► View the STOIIP distribution for each zone by selecting all the cases in the Uncertainty Folder.
► Open the Ruby Zone poroperm crossplot and view the distribution of the perm in the model compared to
the core data. Here are a couple of examples ……
These show the poroperm relationship in the model for the Ruby Zone compared to the core data. One may have
relatively high permeabilities, and the other relatively low permeabilities, however they both generally fit within
the core data permeability distributions. The third poroperm crossplot above is the Base Case transform used in
the Base Case volumetrics created from the original core data.
6. Porosity Uncertainty
The Porosity modeling has a lot more potential uncertain variables than those discussed before. There are several
dimensions of the porosity modeling that we have uncertainty in and could adjust. These include variogram
azimuth (which would require an adjustment of the LVA maps), R1, R2, and R3 lengths. Maximum, Minimum
and Mean porosities could also be uncertain. This would require us to decide if the well data is representative of
the reservoir characteristics. Is the well data a reasonable sample of the sands in the fans? Is the mean porosity
value and the standard deviation of the data representative of the sands across all the fan? All these variables could
be different and adjusted for the Diamond and the Ruby zones.
Diamond Zone: The workflow uses the LVA Map. We will not vary the porosity dimensions in the uncertainty
workflow.
Ruby Zone: With the porosity modeling not using the LVA we will adjust the variogram lengths and see if changing
these have any effect on the volumetrics in the zone.
► Create a new folder in the Cases tab called P_Uncertainty
► Workflows Tab ► Edit the Uncertainty Workflow
► Change the output Folder for the Volume Calculation to the P_Uncertainty folder
► Open the Petrophysical modeling process for PHIE
► Select the Ruby Zone ► Select the Sand ► Turn off the button linking the Data Analysis variogram to this
process.
► Change the numerical values for the Major, Minor, Vertical, and Azimuth to the variables of $RR1, $RR2,
$RR3, $RAz
► Close the Porosity modeling process.
► Variables Tab ► Change the Ruby Zone porosity Variable to the following.
Name Base value Distribution Mode Std
$RR1 3800 Normal 3800 300
$RR2 2400 Normal 2400 100
Name Base value Distribution Min Mode Max
$RR3 6 Triangular 4 6 12
$RAz 315 Triangular 290 315 340
$RR1: The Major direction of the Ruby Sand. Analysis has suggested a length of 3,800m. Our uncertainty
distribution will adjust the length from 2,900 to 4,700 99% of the time since we are using a Standard Deviation of
300. (3 SD = 99% thus 3 x 300m = 900m ). Set to Integer
$RR2: The Minor range will normally be set in relation to the $RR1 as it is commonly a ratio between R1 and R2
(ratio of 1.6 to 1), however in this case we will use a Normal distribution and Std as with $R1
$RR3: Base Case is 4m, however we will make the range, 4m, 6m, 12m . Set to Integer
$RAz: Base case is 315degN. We will set the uncertainty to +/- 25 degrees of the Base Case. Set to Integer
The variables Tab should look like this now …. (Apart from the last line)
► Uncertainty Tab ► Set the number of samples to 20, the sampling of the variables will be random
► Run the Workflow and view STOIIP distribution for the Ruby zone by selecting all the cases in the
P_Uncertainty Folder.
The distribution of the porosity values in each zone will also have potential uncertainty. This could be the width
of the range of porosities, or the mean of the distribution. In this case we will not change the ‘width’ of the
distribution but simply consider that the porosity could be +/- 10% of the modelled value. To do this we will
multiply the porosity value by a value ranging from 0.9 to 1.1 similar to that which we did with the permeability
variable which will ‘shift’ the porosity distribution ‘up’ or ‘down’ by 10%.
► Delete all the Volumetric Cases in the P_Uncertainty Folder.
► Workflows Tab ► Edit the Uncertainty Workflow
► Add a Property Calculation line after the Petrophysical Modeling of PHIE.
PHIE = PHIE * $P
► Variables Tab ► Change the settings for $P to these below…….
Name Base value Distribution Min Mode Max
$P 1 Triangular 0.9 1 1.1
► Uncertainty Tab ► Set the number of samples to 20, the sampling of the variables will be random
► Run the Workflow and view STOIIP distribution by selecting all the cases in the P_Uncertainty Folder.
Currently we are running the porosity modeling on a ‘fixed’ seed in the workflow. If we allow the modeling process
to use a random seed then this will introduce additional uncertainty. We may assess the effects of varying the Seed
later.
► Diamond STOIIP distribution: P10 = 12.9 mmstb, P50 = 16.2 mmstb, p90 = 20.1 mmstb
► Ruby STOIIP distribution: P10 = 19.7 mmstb, P50 = 24.2 mmstb, p90 = 26.4 mmstb
► Save your Project
6. Facies Uncertainty
The Facies modeling also has a lot more potential uncertain variables than the others discussed before.
There are several variables of the facies modeling that we have uncertainty in and could adjust. These include the
Global proportion of the Sand/Shale, the vertical proportion of the sands, the probability Map (fans), the
size/shape/width of the fan apron, the variogram azimuth (which would require an adjustment of the LVA maps),
and the R1, R2, and R3 lengths.
Our Current ‘Base Case’ is what we believe is ‘the most likely’ scenario regarding our variables and the resulting
STOIIP. Assessing each variable and its uncertainty is a time consuming process, however it will give us an idea
of what is important, and what is not. It will also allow us to possibly consider adjusting the variables in our Base
Case later.
Changing Fan polygons, LVA’s, and Probability Maps is possible during uncertainty analysis, however it would
require us to change the Uncertainty Workflow significantly and include remapping the probability Map if we
changed the Fan polygons and possibly recreating the LVA Map.
In this example we will adjust Global proportion of the sand in both zones and the variograms in the same way
as in the porosity uncertainty modeling.
► Create a new folder in the Cases tab called F_Uncertainty
► Workflows Tab ► Edit the Uncertainty Workflow
► Change the output Folder for the Volume Calculation to the F_Uncertainty folder
► Open the Facies modeling process for SAND_SIS_Prob
► Diamond Zone ► Sand Fraction ► Change the Manual fraction to the variable $DSF
► Ruby Zone ► Sand Fraction ► Change the Manual fraction to the variable $RSF
► Variables Tab ► Change the $DSF and the $RSF to the following ► Set them to integers for simplicity
Name Base value Distribution Min Mode Max
$DSF 75 Triangular 65 75 85
$RSF 25 Triangular 15 25 35
► Uncertainty Tab ► Set the number of samples to 20.
► Run the Workflow and view STOIIP distributions by selecting all the cases in the F_Uncertainty Folder.
We have now completed setting the uncertainty variables for a number of the variables including the contacts,
permeability, porosity, sand percentages, and porosity.
See the table below that shows which uncertainties we have analysed and the uncertainty distribution.
Uncertainty Variable Base value Distribution Mode Std
Water Saturation $SW 1 Normal 1 0.003
Ruby Porosity R1 $RR1 3800 Normal 3800 300
Ruby Porosity R2 $RR2 2400 Normal 2400 100
Uncertainty Variable Base value Distribution Min Mode Max
Diamond GOC $DGOC -2236 Triangular -2242 -2236 -2230
Ruby GOC $RGOC -2296 Triangular -2299 -2296 -2293
Diamond OWC $DOWC -2289 Triangular -2295 -2289 -2283
Ruby GOC $RGOC -2369 Triangular -2372 -2369 -2366
Oil FVF $BO 1.15 Triangular 1.035 1.15 1.265
Gas FVF $BG 0.00554 Triangular 0.004966 0.00554 0.006094
Permeability $K 1 Triangular 0.5 1 2
Ruby Porosity R3 $RR3 6 Triangular 4 6 12
Ruby Porosity Azimuth $RAz 315 Triangular 290 315 340
Porosity $P 1 Triangular 0.9 1 1.1
Diamond sand % $DSF 75 Triangular 65 75 85
Ruby sand % $RSF 25 Triangular 15 25 35
We have not assessed the possible effects on STOIIP for uncertainties in zonation, layering or structure. Although
layering and zones may have an effect of STOIIP distribution it is hardly, if ever, analysed.
Structure is probably the uncertainty that would have the highest effect on the STOIIP. Normally the way we
would assess this would be to build two further grids, one with horizons that would create a higher GBV and one
that would produce a lower GBV. We would then run all our property modeling in both these models using the
identical workflow parameters.
We will now run a large number of realisations across all the uncertainties we have created and see the effect on
the STOIIP distribution.
► Create a new folder in the Cases tab called Full_Uncertainty
► Delete the unwanted uncertainty folders, eg. SW_Uncertainty, Uncertainty_Bo, K_Uncertainty, P_Uncertainty,
and the two contacts_Uncertainty folders.
► Workflows Tab ► Edit the Uncertainty Workflow
► Change the output Folder for the Volume Calculation to the Full_Uncertainty folder
The Variables table should look something like this.
The Uncertainty workflow should look something like this.
You should have a good idea of how long it takes for the workflow runs now. Check all the variables.
► Uncertainty Tab ► Set the number of samples to 300.
The Monte Carlo sampler will randomly sample values from each variable within the variables dimensions. We
have 15 variables that we are adjusting for uncertainty.
► Run the Workflow and view STOIIP distributions by selecting all the cases in the Full_Uncertainty Folder.
The STOIIP distribution for the Diamond and Ruby zones should have values similar to these …
► Diamond STOIIP distribution: P10 = 12.25 mmstb, P50 = 15.33 mmstb, p90 = 18.04 mmstb
► Ruby STOIIP distribution: P10 = 18.55 mmstb, P50 = 22.18 mmstb, p90 = 26.75 mmstb
► Combined STOIIP distribution: P10 = 31.93 mmstb, P50 = 37.33 mmstb, p90 = 43.83 mmstb
► Rename the Cases directory to Uncertainty_Fixed_Seed
► Save your Project
When compared to the Base Case we can see that the P50 STOIIP is less than the Base Case. The reason for this
is that the P50 value is calculated using the high and low values for each variable and represents the statistical
average of all the variables effect on the STOIIP. The Base Case represents our ‘Geological’ Case in the sense that
it uses the values for each variable that we believe is correct. Remember however that still these realisations are
run using a specified seed for the facies modeling and the porosity modeling.
GBV Net Vol Pore Vol HCPV STOIIP GIIP
Zone
(m3) (m3) (mmstb) (mmstb) (mmstb) (bcf)
Diamond 57.6 22.3 29.0 20.0 17.77 0.8
Ruby 116.8 41.2 47.5 30.0 26.48 14.9
Total 174.5 63.6 76.4 51 44.25 15.7
Base Case Volumetrics
The combined STOIIP distribution for Diamond and Ruby are shown above.
We will now run our final uncertainty run that will allow us to see the effects of using a random seed for the facies
modeling and the porosity modeling.
► Create a new folder in the Cases tab called Final_Uncertainty
► Workflows Tab ► Edit the Uncertainty Workflow
► Change the output Folder for the Volume Calculation to the Full_Uncertainty folder
► Select the Facies Modeling process and change the Global seed to $Fseed
► Select the Porosity Modeling process and change the Global seed to $Pseed
► Variables Tab ► Change the $Fseed and $Pseed variables to those shown below and set to Integer.
Name Base value Distribution Min Max
$Fseed 10000 Uniform 1 20000
$Pseed 20000 Uniform 20000 40000
► Uncertainty Tab ► Set the number of samples to 300.
► Run the Workflow and view STOIIP distributions by selecting all the cases in the Final_Uncertainty Folder.
The STOIIP distribution for the Diamond and Ruby zones should have values similar to these …
► Diamond STOIIP distribution: P10 = 9.85 mmstb, P50 = 13.05 mmstb, p90 = 17.22 mmstb
► Ruby STOIIP distribution: P10 = 16.65 mmstb, P50 = 19.98 mmstb, p90 = 23.67 mmstb
► Combined STOIIP distribution: P10 = 27.73 mmstb, P50 = 33.04 mmstb, p90 = 39.43 mmstb
► Rename the Cases directory to Uncertainty_Variable_Seed
► Save your Project