History matching with ERT and Everest#

Overview#

Set --mode to ert or everest to run history matching. These modes require additional TOML variables, including the parameters to history match, the number of parallel runs, resource limits, and a random seed when reproducibility is required.

Refer to the external references for the underlying configuration keywords:

Everest example#

The following command runs the final history-matching iteration used in the pofff paper with everest_iter_3.toml:

pofff -i everest_iter_3.toml -o everest_iter_3 -m everest -t 24,48,72,96,120 -f all

Warning

The publication configuration uses cores = 50 and max_function_evaluations = 200000. When running it locally, decrease the number of parallel runs and maximum function evaluations to match the CPU, memory, and time available on your system.

History-matching parameters#

The possible history-matching variables include the supported facies properties for facies 1 through 6, for example permx2 and pen5. The current configuration model supports the numbered properties poroN, permN, permxN, permyN, permzN, dispercN, swiN, sniN, penN, nkrwN, nkrnN, npeN, threN, and npntN where applicable. Isotropic permeability can be selected with a variable such as perm3. The thicknessmult variable scales the thickness map.

Note

History-matching values use different layouts for the two workflows. ERT parameters contain a distribution name and two parameters. Everest parameters contain [initial, minimum, maximum, scale]. See Configuration reference for the maintained TOML reference.

Additional examples#

Additional ERT and Everest examples are available in the pofff repository:

Generated configurations and direct execution#

pofff exposes the most commonly used ERT and Everest options through TOML. After pofff generates everest.yml or ert.txt, you may add supported keywords that are not yet exposed by pofff and then run the corresponding Everest or ERT command-line executable directly.

Please raise a pofff issue when a useful TOML keyword is missing, so it can be considered for the maintained configuration model.

Separate generation, execution, and postprocessing#

After ERT or Everest has run, pofff can postprocess the existing results and generate figures without starting another history-matching study:

pofff -o HISTORY_MATCHING_OUTPUT -m none -t 24,48,72,96,120 -f all

The publication profiling.py workflow demonstrates how to separate file generation, Everest execution, and postprocessing:

Outputs#

ERT and Everest produce different runtime directories, but both postprocessing workflows create a figures/best_simulation folder containing the closest or optimal simulation and its benchmark tables and figures. See Output folder for the output layouts.

Back to examples gallery