Modern tools

EssRisk uses the latest Java 8 tools, including JavaFX, for a modern user interface which can take full advantage of the desk top, including OpenGL 3D graphics.

Multi processing

EssRisk has been designed from bottom up to use the full power of multi threading, taking advantage of the Java concurrency utilities and Java 8 functional programming.

Designing concurrency at the correct level is key. Fortunately the EssRisk algorithms are highly suited to parallelism, and separate threads handle:

  • individual simulation runs
  • initialising individual estimator points (proxy models)
  • Calculating likelihood function for individual estimator points

Lightening graphics

2D well plots can be time consuming. For 100 wells, 200 simulation runs, 1000 time steps and 20 output variables, there are potentially 400,000,000 points to be plotted.

EssRisk implements various methods to make this lightening fast.

  • Tabular display of plots, using the full detail and specially written rendering engines
  • Cache plots as images
  • Render images in background, using LIFO (last in first out) queue so that as the user scrolls around plots, the last one is rendered
  • Multithreaded rendering. Each plot is rendered in a separate thread, so multiple plots can be rendered simultaneously.

Data management

A pure Java database management system H2 is used, which is ideally suited to performant desktop applications. It comes with all the caching, security and robustness expected in a modern DBMS. It supports SQL standards for array data, and is implemented with a Hibernate layer. Large projects are no longer a problem.

Plots

All plots can easily be customised to change titles, axes, fonts, colours, and background colours. Plot types include:

  • well plots showing simulation results and history data, for standard data and RFT data
  • quality plot showing evolution of history match quality
  • sensitivity plots, showing tornado and spider plots
  • uncertainty plots, showing calculated S curves, for both proxy-based S curves and simulation run S curves
  • modifier values, showing for each run the modifier values, and an indication of whether modifier values cluster for high quality history match runs.

Plot filters

Plots can be filtered, where appropriate, with simulation run filters. Also, wells and variables can be filtered and reordered.

Modern user interface

The latest user interface tools and application desktop frameworks from JIDE software are used. This includes a docking framework and a clear concise user experience.

JavaFX

JavaFX, a new user interface toolkit provided as part of standard Java 8, is used for 3d graphics.

Matrix algebra

All matrix algebra has been written from scratch in Java, which is surprisingly close to the best Fortran or C performance. No third party libraries such as R or Python are used, as these have been shown to be very inefficient.

Utilities

Approximate methods are used to avoid the overhead for various complex functions. Special approximation techniques have been specially designed, and can handle a very wide range of input values. These are used for:

  • Matern correlation functions
  • Cumulative normal probability functions.