Skip to content

Commit

Permalink
Remove IES
Browse files Browse the repository at this point in the history
  • Loading branch information
sondreso committed Jan 22, 2025
1 parent 2839ae7 commit 4af7097
Show file tree
Hide file tree
Showing 29 changed files with 108 additions and 1,278 deletions.
93 changes: 5 additions & 88 deletions docs/ert/reference/configuration/keywords.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,6 @@ Keyword name Required
:ref:`GRID <grid>` NO Provide an ECLIPSE grid for the reservoir model
:ref:`HISTORY_SOURCE <history_source>` NO REFCASE_HISTORY Source used for historical values
:ref:`HOOK_WORKFLOW <hook_workflow>` NO Install a workflow to be run automatically
:ref:`IES_DEC_STEPLENGTH <ies_dec_steplength>` NO 2.5 Gauss-Newton steplength decline
:ref:`IES_MAX_STEPLENGTH <ies_max_steplength>` NO 0.6 Gauss-Newton maximum steplength
:ref:`IES_MIN_STEPLENGTH <ies_min_steplength>` NO 0.3 Gauss-Newton minimum steplength
:ref:`INCLUDE <include>` NO Include contents from another ert config
:ref:`INSTALL_JOB <install_job>` NO Install a job for use in a forward model
:ref:`INVERSION <inversion_algorithm>` NO Set inversion method for analysis module
Expand Down Expand Up @@ -1421,11 +1418,11 @@ ANALYSIS_SET_VAR

The analysis modules can have internal state, like e.g. truncation cutoff
values. These can be manipulated from the config file using the
ANALYSIS_SET_VAR keyword for either the `STD_ENKF` or `IES_ENKF` module.
ANALYSIS_SET_VAR keyword for the `STD_ENKF` module.

::

ANALYSIS_SET_VAR <STD_ENKF|IES_ENKF> ENKF_TRUNCATION 0.98
ANALYSIS_SET_VAR STD_ENKF ENKF_TRUNCATION 0.98



Expand All @@ -1435,111 +1432,32 @@ INVERSION

The analysis modules can specify inversion algorithm used.
These can be manipulated from the config file using the
ANALYSIS_SET_VAR keyword for either the `STD_ENKF` or `IES_ENKF` module.
ANALYSIS_SET_VAR keyword for the `STD_ENKF` module.

**STD_ENKF**


.. list-table:: Inversion Algorithms for Ensemble Smoother
:widths: 50 50 50 50
:widths: 50 50 50
:header-rows: 1

* - Description
- INVERSION
- IES_INVERSION (deprecated)
- Note
* - Exact inversion with diagonal R=I
- EXACT
- 0
-
* - Subspace inversion with exact R
- SUBSPACE_EXACT_R / SUBSPACE
- 1
- Preferred name: SUBSPACE
* - Subspace inversion using R=EE'
- SUBSPACE_EE_R
- 2
- Deprecated, maps to: SUBSPACE
* - Subspace inversion using E
- SUBSPACE_RE
- 3
- Deprecated, maps to: SUBSPACE


**IES_ENKF**


.. list-table:: Inversion Algorithms for IES
:widths: 50 50 50 50
:header-rows: 1

* - Description
- INVERSION
- IES_INVERSION (deprecated)
- Note
* - Exact inversion with diagonal R=I
- EXACT / DIRECT
- 0
- Preferred name: DIRECT
* - Subspace inversion with exact R
- SUBSPACE_EXACT_R / SUBSPACE_EXACT
- 1
- Preferred name: SUBSPACE_EXACT
* - Subspace inversion using R=EE'
- SUBSPACE_EE_R / SUBSPACE_PROJECTED
- 2
- Preferred name: SUBSPACE_PROJECTED
* - Subspace inversion using E
- SUBSPACE_RE
- 3
- Deprecated, maps to: SUBSPACE_PROJECTED

Setting the inversion method
::

-- Example for the `STD_ENKF` module
ANALYSIS_SET_VAR STD_ENKF INVERSION DIRECT


IES_MAX_STEPLENGTH
^^^^^^^^^^^^^^^^^^
.. _ies_max_steplength:

The analysis modules can specify the Gauss-Newton maximum steplength
for the ``IES_ENKF`` module only.
This is default set to ``0.60``, valid values in range ``[0.1, 1.00]``

::

ANALYSIS_SET_VAR IES_ENKF IES_MAX_STEPLENGTH 0.6


IES_MIN_STEPLENGTH
^^^^^^^^^^^^^^^^^^
.. _ies_min_steplength:

The analysis modules can specify the Gauss-Newton minimum steplength
for the ``IES_ENKF`` module only.
This is default set to ``0.30``, valid values in range ``[0.1, 1.00]``

::

ANALYSIS_SET_VAR IES_ENKF IES_MIN_STEPLENGTH 0.3


IES_DEC_STEPLENGTH
^^^^^^^^^^^^^^^^^^
.. _ies_dec_steplength:

The analysis modules can specify the Gauss-Newton steplength decline
for the ``IES_ENKF`` module only.
This is default set to ``2.5``, valid values in range ``[1.1, 10.0]``

::

ANALYSIS_SET_VAR IES_ENKF IES_DEC_STEPLENGTH 2.5


LOCALIZATION
^^^^^^^^^^^^
.. _localization:
Expand Down Expand Up @@ -1615,8 +1533,7 @@ al. 1979).

::

-- Example for the `IES_ENKF` module
ANALYSIS_SET_VAR IES_ENKF ENKF_TRUNCATION 0.98
ANALYSIS_SET_VAR STD_ENKF ENKF_TRUNCATION 0.98

The default value of ENKF_TRUNCATION is 0.98. If ensemble collapse is a big
problem, a smaller value should be used (e.g 0.90 or smaller). However, this
Expand Down
9 changes: 0 additions & 9 deletions docs/ert/reference/running_ert.rst
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,6 @@ Ensemble Smoother
:prog: ert
:path: ensemble_smoother

Iterative Ensemble Smoother
~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. argparse::
:module: ert.__main__
:func: get_ert_parser
:prog: ert
:path: iterative_ensemble_smoother

ES MDA
~~~~~~

Expand Down
5 changes: 0 additions & 5 deletions docs/ert/theory/ensemble_based_methods.rst
Original file line number Diff line number Diff line change
Expand Up @@ -384,11 +384,6 @@ In plain English, the ES MDA consists of several consecutive smoother updates wi
error bars. The ES MDA with one iteration is identical to the Ensemble smoother.


Iterative ensemble smoother - Ensemble subspace version
-------------------------------------------------------

The algorithm implemented is described in the article `Efficient Implementation of an Iterative Ensemble Smoother for Data Assimilation and Reservoir History Matching <https://www.frontiersin.org/articles/10.3389/fams.2019.00047/full>`_.

Kalman posterior properties
---------------------------

Expand Down
69 changes: 0 additions & 69 deletions src/ert/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
ENSEMBLE_EXPERIMENT_MODE,
ENSEMBLE_SMOOTHER_MODE,
ES_MDA_MODE,
ITERATIVE_ENSEMBLE_SMOOTHER_MODE,
TEST_RUN_MODE,
WORKFLOW_MODE,
)
Expand Down Expand Up @@ -421,73 +420,6 @@ def get_ert_parser(parser: ArgumentParser | None = None) -> ArgumentParser:
help="Name of the experiment",
)

# iterative_ensemble_smoother_parser
iterative_ensemble_smoother_description = (
"Run experiments in cli while performing updates"
" on the parameters using the iterative ensemble smoother algorithm."
)
iterative_ensemble_smoother_parser = subparsers.add_parser(
ITERATIVE_ENSEMBLE_SMOOTHER_MODE,
description=iterative_ensemble_smoother_description,
help=iterative_ensemble_smoother_description,
)
iterative_ensemble_smoother_parser.add_argument(
"--current-case",
type=valid_name,
default="default",
action=DeprecatedAction,
alternative_option="--current-ensemble",
dest="current_ensemble",
help="Deprecated: This argument is deprecated and will be "
"removed in future versions. Use --current-ensemble instead.",
)
iterative_ensemble_smoother_parser.add_argument(
"--current-ensemble",
type=valid_name,
default="default",
help="Name of the ensemble where the results for the experiment "
"using the prior parameters will be stored.",
)
iterative_ensemble_smoother_parser.add_argument(
"--target-case",
type=valid_name_format,
default="iter-%d",
action=DeprecatedAction,
dest="target_ensemble",
alternative_option="--target--ensemble",
help="Deprecated: This argument is deprecated and will be "
"removed in future versions. Use --target-ensemble instead.",
)
iterative_ensemble_smoother_parser.add_argument(
"--target-ensemble",
type=valid_name_format,
default="iter-%d",
help="The iterative ensemble smoother creates multiple ensembles for the different "
"iterations. The ensemble names will follow the specified format. "
"For example, 'Target ensemble format: iter_%%d' will generate "
"ensembles with the names iter_0, iter_1, iter_2, iter_3, ....",
)
iterative_ensemble_smoother_parser.add_argument(
"--realizations",
type=valid_realizations,
help="These are the realizations that will be used to perform experiments."
"For example, if 'Number of realizations:50 and active realizations are 0-9', "
"then only realizations 0,1,2,3,...,9 will be used to perform experiments "
"while realizations 10,11, 12,...,49 will be excluded.",
)
iterative_ensemble_smoother_parser.add_argument(
"--num-iterations",
type=valid_num_iterations,
required=False,
help="The number of iterations to run.",
)
iterative_ensemble_smoother_parser.add_argument(
"--experiment-name",
type=str,
default="ies",
help="Name of the experiment",
)

# es_mda_parser
es_mda_description = f"Run '{ES_MDA_MODE}' in cli"
es_mda_parser = subparsers.add_parser(
Expand Down Expand Up @@ -574,7 +506,6 @@ def get_ert_parser(parser: ArgumentParser | None = None) -> ArgumentParser:
test_run_parser,
ensemble_experiment_parser,
ensemble_smoother_parser,
iterative_ensemble_smoother_parser,
es_mda_parser,
workflow_parser,
]:
Expand Down
2 changes: 0 additions & 2 deletions src/ert/analysis/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from ._es_update import (
ErtAnalysisError,
iterative_smoother_update,
smoother_update,
)
from .event import (
Expand All @@ -26,6 +25,5 @@
"ObservationAndResponseSnapshot",
"ObservationStatus",
"SmootherSnapshot",
"iterative_smoother_update",
"smoother_update",
]
Loading

0 comments on commit 4af7097

Please sign in to comment.