equinor / ert

ERT - Ensemble based Reservoir Tool - is designed for running ensembles of dynamical models such as reservoir models, in order to do sensitivity analysis and data assimilation. ERT supports data assimilation using the Ensemble Smoother (ES), Ensemble Smoother with Multiple Data Assimilation (ES-MDA) and Iterative Ensemble Smoother (IES).
https://ert.readthedocs.io/en/latest/
GNU General Public License v3.0
103 stars 107 forks source link

Sensitivity analysis in ERT #8457

Open xjules opened 3 months ago

xjules commented 3 months ago

This issue is a work in progress!

Description

Sensitivity analysis is the study of how the uncertainty in the output of a mathematical model or system (numerical or otherwise) can be divided and allocated to different sources of uncertainty in its inputs. This is usually achieved by varying the input parameters and analyzing how much the model response changes.

Current usage

The input usually starts with the design of the analysis case that contains different scenarios introduced in an <design_input.xlsx> file, which is sequentially processed by fmudesign tool to produce an output matrix <output_matrix.xlsl> containing list of parameter realizations.

Forward model DESIGN2PARAMS reads this file and appends the parameter values into <parameters.txt> which is then read by ert.

flowchart LR
    USER((User)) -->|design_input.xlsx| fmudesign(fmudesign)
    ERT -->|parameters.txt| DESIGN2PARAMS
    USER -.->|design_output.xlsx| DESIGN2PARAMS(DESIGN2PARAMS)
    fmudesign -->|design_output.xlsx| DESIGN2PARAMS(DESIGN2PARAMS)
    subgraph fom [Forward Model]
    DESIGN2PARAMS -->|parameters.txt| DESIGN_KW[DESIGN_KW]
    DESIGN2PARAMS -->|parameters.txt| DESIGN_KW1[DESIGN_KW]
    DESIGN2PARAMS -->|parameters.txt| DESIGN_KW2[DESIGN_KW]
    DESIGN2PARAMS -->|parameters.txt| DESIGN_KW3[DESIGN_KW]
    DESIGN_KW -->|global_variables.yaml| RMS
    DESIGN_KW1 -->|RMS_SEED| RMS
    DESIGN_KW2 -->|drogon.multregt| Simulator
    DESIGN_KW3 -->|rate_scaling.yml| RMS
    end

Step 1: Making ERT capable of reading, storing and outputting sensitivity parameters

flowchart LR
    USER((User)) -->|design_input.xlsx| fmudesign(fmudesign)
    ERT --> parameters[parameters.txt]
    fmudesign -->|design_output.xlsx| ERT
    USER -.->|design_output.xlsx| ERT
    subgraph fom [Forward Model]
    parameters --> DESIGN_KW[DESIGN_KW]
    parameters --> DESIGN_KW1[DESIGN_KW]
    parameters --> DESIGN_KW2[DESIGN_KW]
    parameters --> DESIGN_KW3[DESIGN_KW]
    DESIGN_KW -->|global_variables.yaml| RMS
    DESIGN_KW1 -->|RMS_SEED| RMS
    DESIGN_KW2 -->|drogon.multregt| Simulator
    DESIGN_KW3 -->|rate_scaling.yml| RMS
    end

Step 2: Sensitivity analysis in ERT

This milestone should alleviate running and using the fmudesign tool by providing a dedicated sensitivity wizard (GUI) in ert capable of specifying custom analysis scenarios yielding parameter specification for ert.


Definition of done

Step 1:

Step 2:


Issues

This should also include validation of the setup such that as many as possible of the following errors should not occur when running the forward models on the compute cluster:

jonathan-eq commented 2 months ago

Just to clarify after some discussion with @sondreso: The first step of the milestone is to have the xlsx file read and analyse logic from semeio's DESIGN2PARAMS in ert, and instead of writing to parameters.txt, we want to write to ert storage.

xjules commented 1 month ago

Minutes from today's meeting related to mainly step 2 in the current milestone.

xjules commented 1 month ago

More minutes after discussion with @oyvindeide (just unsorted ideas, not necessarily action points) :

xjules commented 3 weeks ago

Minutes from the meeting: Present: Feda, Jonathan, Sondre, Øyvind, Julius, Lars

The topics were (among others) parameter group names and merging strategies of GEN_KW and DESIGN_MATRIX