]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Documentation and code update for Tests and versions
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Thu, 16 Feb 2023 18:53:43 +0000 (19:53 +0100)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Thu, 16 Feb 2023 18:53:43 +0000 (19:53 +0100)
33 files changed:
doc/en/advanced.rst
doc/en/index.rst
doc/en/ref_algorithm_EnsembleKalmanFilter.rst
doc/en/ref_algorithm_GradientTest.rst
doc/en/ref_algorithm_LinearityTest.rst
doc/en/scripts/simple_AdjointTest.res
doc/en/scripts/simple_ControledFunctionTest1.res
doc/en/scripts/simple_ControledFunctionTest2.res
doc/en/scripts/simple_FunctionTest1.res
doc/en/scripts/simple_FunctionTest2.res
doc/en/scripts/simple_KalmanFilter1.py
doc/en/scripts/simple_KalmanFilter1.res
doc/en/scripts/simple_KalmanFilter2.py
doc/en/scripts/simple_KalmanFilter2.res
doc/en/scripts/simple_ParallelFunctionTest.res
doc/en/versions.rst [new file with mode: 0644]
doc/fr/advanced.rst
doc/fr/index.rst
doc/fr/notations.rst
doc/fr/ref_algorithm_EnsembleKalmanFilter.rst
doc/fr/ref_algorithm_GradientTest.rst
doc/fr/ref_algorithm_LinearityTest.rst
doc/fr/scripts/simple_AdjointTest.res
doc/fr/scripts/simple_ControledFunctionTest1.res
doc/fr/scripts/simple_ControledFunctionTest2.res
doc/fr/scripts/simple_FunctionTest1.res
doc/fr/scripts/simple_FunctionTest2.res
doc/fr/scripts/simple_KalmanFilter1.py
doc/fr/scripts/simple_KalmanFilter1.res
doc/fr/scripts/simple_KalmanFilter2.py
doc/fr/scripts/simple_KalmanFilter2.res
doc/fr/scripts/simple_ParallelFunctionTest.res
doc/fr/versions.rst [new file with mode: 0644]

index d77d1fa70158cbd0d1c67aa444904eae3fae703e..c8cf3a8ae461c39995c728022f6669b9acabc899 100644 (file)
@@ -24,7 +24,7 @@
 .. _section_advanced:
 
 ================================================================================
-**[DocU]** Advanced usage of the ADAO module
+**[DocU]** Advanced usage of the ADAO module and interoperability
 ================================================================================
 
 This section presents advanced methods to use the ADAO module, how to get more
@@ -582,151 +582,4 @@ convergence, even if they exist. These parameter adjustments are simple to
 implement, and it is favorable to try them (in twin experiments or not) because
 they solve many problems encountered in practice.
 
-
-.. _subsection_version_compatibility:
-.. index::
-    pair: Version ; SALOME
-    pair: Version ; EFICAS
-    pair: Version ; Python
-    pair: Version ; Numpy
-    pair: Version ; Scipy
-    pair: Version ; MatplotLib
-    pair: Version ; Gnuplot
-    pair: Version ; NLopt
-
-Versions of ADAO compatibility with support tools
--------------------------------------------------
-
-.. include:: snippets/ModuleValidation.rst
-
-.. include:: snippets/ModuleCompatibility.rst
-
-.. _subsection_new_adao_version:
-.. index::
-    pair: Version of ADAO ; Switching
-
-Switching from a version of ADAO to a newer one
------------------------------------------------
-
-The ADAO module and its ".comm" case files are identified by versions, with
-"Major", "Minor", "Revision" and optionally "Installation" characteristics. A
-particular version is numbered as "Major.Minor.Revision", with strong link with
-the numbering of the SALOME platform. The optional indication of a fourth
-number indicates a difference in the installation method, not in the content of
-the version.
-
-Each version "Major.Minor.Revision" of the ADAO module can read ADAO case files
-of the previous minor version "Major.Minor-1.*". In general, it can also read
-ADAO case files of all the previous minor versions for one major branch, but it
-is not guaranteed for all the commands or keywords. In general also, an ADAO
-case file for one version can not be read by a previous minor or major version
-of the ADAO module.
-
-Switching from 9.x to 9.y with y > x
-++++++++++++++++++++++++++++++++++++
-
-There is no known incompatibility for the ADAO case files. The upgrade procedure
-is to read the old ADAO case file with the new SALOME/ADAO module, and save it
-with a new name.
-
-However, there may be incompatibilities from user cases written directly in TUI
-interface. It is advisable to review the syntax and arguments in the TUI
-scripts at each version change. In particular, it is advisable to check that
-the algorithm parameters are still adequate and active, knowing that it has
-been explicitly chosen that there is no message when a parameter becomes
-inactive (for the example, we quote the parameter "*MaximumNumberOfSteps*" as
-having changed its name to "*MaximumNumberOfIterations*", for homogeneity with
-the variables that can be displayed).
-
-Switching from 8.5 to 9.2
-+++++++++++++++++++++++++
-
-There is no known incompatibility for the ADAO case files. The upgrade procedure
-is to read the old ADAO case file with the new SALOME/ADAO module, and save it
-with a new name.
-
-However, there may be incompatibilities from user script files that would not
-have a syntax compatible with Python 3. The most immediate error is the use of
-printing "*print*" with "*command*" syntax instead of functional syntax
-"*print(...)*". In this case, it is suggested to correct the syntax of user
-files in environment 8 before switching to environment 9.
-
-Switching from 8.x to 8.y with y > x
-++++++++++++++++++++++++++++++++++++
-
-There is no known incompatibility for the ADAO case files. The upgrade procedure
-is to read the old ADAO case file with the new SALOME/ADAO module, and save it
-with a new name.
-
-To make future developments easier, it is strongly recommended to ensure that
-your user scripts files use a Python 2 and a Python 3 compatible syntax. In
-particular, it is recommended to use the functional syntax for "*print*" and not
-the "*command*" syntax, for example::
-
-    # Python 2 & 3
-    x, unit = 1., "cm"
-    print( "x = %s %s"%(str(x),str(unit)) )
-
-or::
-
-    # Python 2 & 3
-    x, unit = 1., "cm"
-    print( "x = {0} {1}".format(str(x),str(unit)) )
-
-rather than::
-
-    # Python 2 only
-    x, unit = 1., "cm"
-    print "x =", x, unit
-
-Switching from 7.8 to 8.1
-+++++++++++++++++++++++++
-
-There is no known incompatibility for the ADAO case files. The upgrade procedure
-is to read the old ADAO case file with the new SALOME/ADAO module, and save it
-with a new name.
-
-Switching from 7.x to 7.y with y > x
-++++++++++++++++++++++++++++++++++++
-
-There is no known incompatibility for the ADAO case files. The upgrade procedure
-is to read the old ADAO case file with the new SALOME/ADAO module, and save it
-with a new name.
-
-Switching from 6.6 to 7.2
-+++++++++++++++++++++++++
-
-There is no known incompatibility for the ADAO case files. The upgrade procedure
-is to read the old ADAO case file with the new SALOME/ADAO module, and save it
-with a new name.
-
-There is one incompatibility introduced for the post-processing or observer
-script files. The old syntax to call a result object, such as the "*Analysis*"
-one (in a script provided through the "*UserPostAnalysis*" keyword), was for
-example::
-
-    Analysis = ADD.get("Analysis").valueserie(-1)
-    Analysis = ADD.get("Analysis").valueserie()
-
-The new syntax is entirely similar to the (classical) one of a list or tuple
-object::
-
-    Analysis = ADD.get("Analysis")[-1]
-    Analysis = ADD.get("Analysis")[:]
-
-The post-processing scripts has to be modified.
-
-Switching from 6.x to 6.y with y > x
-++++++++++++++++++++++++++++++++++++
-
-There is no known incompatibility for the ADAO case file. The upgrade procedure
-is to read the old ADAO case file with the new SALOME/ADAO module, and save it
-with a new name.
-
-There is one incompatibility introduced for the operator script files, in the
-naming of operators used to for the observation operator. The new mandatory
-names are "*DirectOperator*", "*TangentOperator*" and "*AdjointOperator*", as
-described in the last subsection of the chapter :ref:`section_reference`. The
-operator script files has to be modified.
-
 .. [#] For more information on YACS, see the *YACS module* and its integrated help available from the main menu *Help* of the SALOME platform.
index 40e21b6ce32d6b7f899b886114c42797ede2a452..1bda6185e619c0c502868b58fb98cd134ee42ef6 100644 (file)
@@ -69,9 +69,9 @@ returning to these parts regularly. The following parts describe
 detailed :ref:`section_reference`, with three essential main sub-parts
 describing the details of commands and options of the algorithms. A
 :ref:`section_glossary`, some :ref:`section_notations`, a
-:ref:`section_bibliography` and an extensive index are included in the
-document. And, to comply with the module requirements, be sure to read the part
-:ref:`section_license`.
+:ref:`section_bibliography`, some elements about :ref:`section_versions`, and
+an extensive index are included in the document. And, to comply with the module
+requirements, be sure to read the part :ref:`section_license`.
 
 .. toctree::
    :caption: Table of contents
@@ -89,9 +89,10 @@ document. And, to comply with the module requirements, be sure to read the part
    gui_in_salome
    tui
    reference
+   versions
+   notations
    license
    bibliography
-   notations
    glossary
    genindex
 
index 0c9ce5097dd710f1a40b969d7795a597323fb898..77cf15f8d6f7ec2b74021a4ceb72f6ada5ed8f47 100644 (file)
@@ -37,6 +37,8 @@ or extended Kalman filters.
 
 It applies to non-linear observation and incremental evolution (process)
 operators with excellent robustness and performance qualities. It can be
+interpreted as an order reduction of the classical Kalman filter, with a
+remarkable assimilation quality of this filtering for large problems. It can be
 compared to the :ref:`section_ref_algorithm_UnscentedKalmanFilter`, whose
 qualities are similar for non-linear systems.
 
@@ -52,8 +54,14 @@ In case of linear of "slightly" non-linear operators, one can easily use the
 to evaluate on small systems. One can verify the linearity of the operators
 with the help of the :ref:`section_ref_algorithm_LinearityTest`.
 
-There exists a lot of variants of this algorithm. The following stable and
-robust formulations are proposed here:
+There are many deterministic or stochastic variants of this algorithm, allowing
+in particular to perform size reduction of algebraic problems at different
+levels (by using reduced rank methods, dimension reduction, changes of
+computational space, leading to schemes of type Ensemble Square Root Kalman
+Filters (EnSRKF) or Reduced-Rank Square Root Filters (RRSQRT), to deterministic
+transformations...). We do not go into the complex details of classifications
+and algorithmic equivalences, which are available in the literature. The
+following stable and robust formulations are proposed here:
 
 .. index::
     pair: Variant ; EnKF
@@ -63,6 +71,8 @@ robust formulations are proposed here:
     pair: Variant ; IEnKF
     pair: Variant ; E3DVAR
     pair: Variant ; EnKS
+    pair: Variant ; EnSRKF
+    pair: Variant ; RRSQRT
 
 - "EnKF" (Ensemble Kalman Filter, see [Evensen94]_), original stochastic algorithm, allowing consistent treatment of non-linear evolution operator,
 - "ETKF" (Ensemble-Transform Kalman Filter), deterministic EnKF algorithm, allowing treatment of non-linear evolution operator with a lot less members (one recommends to use a number of members on the order of 10 or even sometimes less),
@@ -73,9 +83,9 @@ robust formulations are proposed here:
 - "EnKS" (Ensemble Kalman Smoother), smoothing algorithm with a fixed time lag L.
 
 Without being a universal recommandation, one recommend to use "EnKF"
-formulation as a reference algorithm, "ETKF-N" ou "IEnKF" formulation for
-robust performance, and the other algorithms (in this order) as means to obtain
-a less costly data assimilation with (hopefully) the same quality.
+formulation as a reference algorithm, **"ETKF-N" ou "IEnKF" formulation for
+robust performance**, and the other algorithms (in this order) as means to
+obtain a less costly data assimilation with (hopefully) the same quality.
 
 .. ------------------------------------ ..
 .. include:: snippets/Header2Algo02.rst
index ad705d9c10db73d3260c9528cbbf3807dc4aa5d0..70de4678c08a233b3c7b65996662bad3108cc06d 100644 (file)
@@ -106,6 +106,8 @@ which has to remain stable until the calculation precision is reached.
 
 .. include:: snippets/InitialDirection.rst
 
+.. include:: snippets/NumberOfPrintedDigits.rst
+
 .. include:: snippets/ResiduFormula_GradientTest.rst
 
 .. include:: snippets/SetSeed.rst
index ffca299242d4de65990933cd242b4b07bd9d745d..9d113074f6313deb6ed25c1749df4c2ed066d1b2 100644 (file)
@@ -127,6 +127,8 @@ If it is equal to 0 only on part of the variation domain of increment
 
 .. include:: snippets/InitialDirection.rst
 
+.. include:: snippets/NumberOfPrintedDigits.rst
+
 .. include:: snippets/ResiduFormula_LinearityTest.rst
 
 .. include:: snippets/SetSeed.rst
index 237d27df53f6cf981808709e0b14996a8d7b7743..00b1ea1e3487edeabbe45c1bfdb03bd8d0d9e346 100644 (file)
@@ -55,7 +55,7 @@
        12  1e-12   2.236e+00   1.910e+01   3.536e-12   0.000e+00
      -------------------------------------------------------------
 
-     End of the verification by "ScalarProduct" formula
+     End of the "ADJOINTTEST" verification by the "ScalarProduct" formula.
 
      ---------------------------------------------------------------------------
 
index a5c93dfbf2bb062ca60f82b4c72353c502e59807..0d5a4ca34fa8773a1c88a968fde4f03ad1447db1 100644 (file)
@@ -72,3 +72,7 @@
 
      ---------------------------------------------------------------------------
 
+     End of the "CONTROLEDFUNCTIONTEST" verification
+
+     ---------------------------------------------------------------------------
+
index 46e700be4cfffa67e97da3e6bea913241e112aed..d8338607d5dce140a385a070386943514beb4099 100644 (file)
@@ -72,3 +72,7 @@
 
      ---------------------------------------------------------------------------
 
+     End of the "CONTROLEDFUNCTIONTEST" verification
+
+     ---------------------------------------------------------------------------
+
index bdc93efb45be5461627f67e60ac4a10f62699f65..086b065c4ccc0bfadcd65fe22cec7661d2723526 100644 (file)
@@ -63,3 +63,7 @@
 
      ---------------------------------------------------------------------------
 
+     End of the "FUNCTIONTEST" verification
+
+     ---------------------------------------------------------------------------
+
index 0f09af24c494dc733432d27a67d33676109d30a5..9bf7401e3ffee7338559b557dbbb36590de7910c 100644 (file)
@@ -63,3 +63,7 @@
 
      ---------------------------------------------------------------------------
 
+     End of the "FUNCTIONTEST" verification
+
+     ---------------------------------------------------------------------------
+
index eba52d52c7d86d6a36fed1988cf22bcf879e424f..3c5af8e3f12d1324c8fd6e3b66e703fc25ba2953 100644 (file)
@@ -7,8 +7,8 @@ Yobs = []
 for i in range(51):
     Yobs.append([random.normal(Xtrue, 0.1, size=(1,)),])
 #
-print("Estimation of a constant variable by filtering")
-print("----------------------------------------------")
+print("Estimation by filtering of a time trajectory")
+print("--------------------------------------------")
 print("  Noisy measurements acquired on %i time steps"%(len(Yobs)-1,))
 print("")
 from adao import adaoBuilder
index b9aaf66d483f269fb0f772d8a46f7600670905d2..b4d67a99b63a9762135a1d2569b21ddcded739b2 100644 (file)
@@ -1,5 +1,5 @@
-Estimation of a constant variable by filtering
-----------------------------------------------
+Estimation by filtering of a time trajectory
+--------------------------------------------
   Noisy measurements acquired on 50 time steps
 
   Analyzed state at current observation: [0.]
index cc30384b0af390c49f094bcd909817f56560acf4..bcd683d73fdb814a6873cf3611e55deecf0d2c83 100644 (file)
@@ -7,8 +7,8 @@ Yobs = []
 for i in range(51):
     Yobs.append([random.normal(Xtrue, 0.1, size=(1,)),])
 #
-print("Estimation of a constant variable by filtering")
-print("----------------------------------------------")
+print("Estimation by filtering of a time trajectory")
+print("--------------------------------------------")
 print("  Noisy measurements acquired on %i time steps"%(len(Yobs)-1,))
 print("")
 from adao import adaoBuilder
index a5c459dd2f01d3d112db765e4ab6aaed2aa3632c..dad3a8ddb6252bd5121a97d4990ceea9c1e1ad41 100644 (file)
@@ -1,5 +1,5 @@
-Estimation of a constant variable by filtering
-----------------------------------------------
+Estimation by filtering of a time trajectory
+--------------------------------------------
   Noisy measurements acquired on 50 time steps
 
   Analyzed state at final observation: [-0.37725236]
index dc5fe5baf81dd95155a78d2d091b1e175afc1b45..296b30887e6087d312052fc99a1879a21f8acb50 100644 (file)
@@ -74,3 +74,7 @@
 
      ---------------------------------------------------------------------------
 
+     End of the "PARALLELFUNCTIONTEST" verification
+
+     ---------------------------------------------------------------------------
+
diff --git a/doc/en/versions.rst b/doc/en/versions.rst
new file mode 100644 (file)
index 0000000..997b8d3
--- /dev/null
@@ -0,0 +1,176 @@
+..
+   Copyright (C) 2008-2023 EDF R&D
+
+   This file is part of SALOME ADAO module.
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+
+   See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+
+   Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
+
+.. _section_versions:
+
+================================================================================
+Versions of ADAO and external compatibility
+================================================================================
+
+.. _subsection_new_adao_version:
+.. index::
+    pair: Version ; ADAO
+    pair: Version of ADAO ; Switching
+
+Switching from a version of ADAO to a newer one
+-----------------------------------------------
+
+The ADAO module and its ".comm" case files are identified by versions, with
+"Major", "Minor", "Revision" and optionally "Installation" characteristics. A
+particular version is numbered as "Major.Minor.Revision", with strong link with
+the numbering of the SALOME platform. The optional indication of a fourth
+number indicates a difference in the installation method, not in the content of
+the version.
+
+Each version "Major.Minor.Revision" of the ADAO module can read ADAO case files
+of the previous minor version "Major.Minor-1.*". In general, it can also read
+ADAO case files of all the previous minor versions for one major branch, but it
+is not guaranteed for all the commands or keywords. In general also, an ADAO
+case file for one version can not be read by a previous minor or major version
+of the ADAO module.
+
+Switching from 9.x to 9.y with y > x
+++++++++++++++++++++++++++++++++++++
+
+There is no known incompatibility for the ADAO case files. The upgrade procedure
+is to read the old ADAO case file with the new SALOME/ADAO module, and save it
+with a new name.
+
+However, there may be incompatibilities from user cases written directly in TUI
+interface. It is advisable to review the syntax and arguments in the TUI
+scripts at each version change. In particular, it is advisable to check that
+the algorithm parameters are still adequate and active, knowing that it has
+been explicitly chosen that there is no message when a parameter becomes
+inactive (for the example, we quote the parameter "*MaximumNumberOfSteps*" as
+having changed its name to "*MaximumNumberOfIterations*", for homogeneity with
+the variables that can be displayed).
+
+Switching from 8.5 to 9.2
++++++++++++++++++++++++++
+
+There is no known incompatibility for the ADAO case files. The upgrade procedure
+is to read the old ADAO case file with the new SALOME/ADAO module, and save it
+with a new name.
+
+However, there may be incompatibilities from user script files that would not
+have a syntax compatible with Python 3. The most immediate error is the use of
+printing "*print*" with "*command*" syntax instead of functional syntax
+"*print(...)*". In this case, it is suggested to correct the syntax of user
+files in environment 8 before switching to environment 9.
+
+Switching from 8.x to 8.y with y > x
+++++++++++++++++++++++++++++++++++++
+
+There is no known incompatibility for the ADAO case files. The upgrade procedure
+is to read the old ADAO case file with the new SALOME/ADAO module, and save it
+with a new name.
+
+To make future developments easier, it is strongly recommended to ensure that
+your user scripts files use a Python 2 and a Python 3 compatible syntax. In
+particular, it is recommended to use the functional syntax for "*print*" and not
+the "*command*" syntax, for example::
+
+    # Python 2 & 3
+    x, unit = 1., "cm"
+    print( "x = %s %s"%(str(x),str(unit)) )
+
+or::
+
+    # Python 2 & 3
+    x, unit = 1., "cm"
+    print( "x = {0} {1}".format(str(x),str(unit)) )
+
+rather than::
+
+    # Python 2 only
+    x, unit = 1., "cm"
+    print "x =", x, unit
+
+Switching from 7.8 to 8.1
++++++++++++++++++++++++++
+
+There is no known incompatibility for the ADAO case files. The upgrade procedure
+is to read the old ADAO case file with the new SALOME/ADAO module, and save it
+with a new name.
+
+Switching from 7.x to 7.y with y > x
+++++++++++++++++++++++++++++++++++++
+
+There is no known incompatibility for the ADAO case files. The upgrade procedure
+is to read the old ADAO case file with the new SALOME/ADAO module, and save it
+with a new name.
+
+Switching from 6.6 to 7.2
++++++++++++++++++++++++++
+
+There is no known incompatibility for the ADAO case files. The upgrade procedure
+is to read the old ADAO case file with the new SALOME/ADAO module, and save it
+with a new name.
+
+There is one incompatibility introduced for the post-processing or observer
+script files. The old syntax to call a result object, such as the "*Analysis*"
+one (in a script provided through the "*UserPostAnalysis*" keyword), was for
+example::
+
+    Analysis = ADD.get("Analysis").valueserie(-1)
+    Analysis = ADD.get("Analysis").valueserie()
+
+The new syntax is entirely similar to the (classical) one of a list or tuple
+object::
+
+    Analysis = ADD.get("Analysis")[-1]
+    Analysis = ADD.get("Analysis")[:]
+
+The post-processing scripts has to be modified.
+
+Switching from 6.x to 6.y with y > x
+++++++++++++++++++++++++++++++++++++
+
+There is no known incompatibility for the ADAO case file. The upgrade procedure
+is to read the old ADAO case file with the new SALOME/ADAO module, and save it
+with a new name.
+
+There is one incompatibility introduced for the operator script files, in the
+naming of operators used to for the observation operator. The new mandatory
+names are "*DirectOperator*", "*TangentOperator*" and "*AdjointOperator*", as
+described in the last subsection of the chapter :ref:`section_reference`. The
+operator script files has to be modified.
+
+.. _subsection_version_compatibility:
+.. index::
+    pair: Version ; ADAO
+    pair: Version ; SALOME
+    pair: Version ; EFICAS
+    pair: Version ; Python
+    pair: Version ; Numpy
+    pair: Version ; Scipy
+    pair: Version ; MatplotLib
+    pair: Version ; Gnuplot
+    pair: Version ; NLopt
+
+Versions of ADAO compatibility with support tools
+-------------------------------------------------
+
+.. include:: snippets/ModuleValidation.rst
+
+.. include:: snippets/ModuleCompatibility.rst
index d811a770df8692812e597a277d6f86e356ce8008..3ace83a9c41e6b713a843efc5a56db9420acc065 100644 (file)
@@ -24,7 +24,7 @@
 .. _section_advanced:
 
 ================================================================================
-**[DocU]** Usages avancés du module ADAO
+**[DocU]** Usages avancés du module ADAO et interopérabilité
 ================================================================================
 
 Cette section présente des méthodes avancées d'usage du module ADAO, comment
@@ -634,160 +634,4 @@ sont simples à mettre en œuvre, et il est favorable de les essayer (en
 expériences jumelles ou pas) car ils résolvent de nombreux problèmes rencontrés
 en pratique.
 
-.. _subsection_version_compatibility:
-.. index::
-    pair: Version ; SALOME
-    pair: Version ; EFICAS
-    pair: Version ; Python
-    pair: Version ; Numpy
-    pair: Version ; Scipy
-    pair: Version ; MatplotLib
-    pair: Version ; Gnuplot
-    pair: Version ; NLopt
-
-Versions de compatibilité d'ADAO avec les outils support
---------------------------------------------------------
-
-.. include:: snippets/ModuleValidation.rst
-
-.. include:: snippets/ModuleCompatibility.rst
-
-.. _subsection_new_adao_version:
-.. index::
-    pair: Version d'ADAO ; Changement de
-
-Passer d'une version d'ADAO à une nouvelle
-------------------------------------------
-
-Le module ADAO et ses fichiers de cas ".comm" sont identifiés par des versions,
-avec des caractéristiques "Major", "Minor", "Revision" et optionnellement
-"Installation". Une version particulière est numérotée "Major.Minor.Revision",
-avec un lien fort avec la numérotation de la plateforme SALOME. L'indication
-optionnelle d'un quatrième numéro désigne une différence dans le mode
-d'installation, pas dans le contenu de la version.
-
-Chaque version "Major.Minor.Revision" du module ADAO peut lire les fichiers de
-cas ADAO de la précédente version mineure "Major.Minor-1.*". En général, elle
-peut aussi lire les fichiers de cas de toutes les versions mineures "Major.*.*"
-d'une branche majeure, mais ce n'est pas obligatoirement vrai pour toutes les
-commandes ou tous les mots-clés. En général aussi, un fichier de cas ADAO d'une
-version ne peut pas être lu par une précédente version mineure ou majeure du
-module ADAO.
-
-Passer de la version 9.x à la 9.y avec y > x
-++++++++++++++++++++++++++++++++++++++++++++
-
-Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
-procédure de montée en version consiste à lire l'ancien fichier de cas ADAO
-avec le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
-
-Cependant, il peut se présenter des incompatibilités provenant de cas
-utilisateurs écrits directement en interface TUI. Il est conseillé de revoir la
-syntaxe et les arguments dans les scripts TUI à chaque changement de version.
-En particulier, il convient de vérifier que les paramètres d'algorithme sont
-toujours adéquats et actifs, sachant qu'il a été explicitement choisi qu'il n'y
-ait pas de message lorsqu'un paramètre devient inactif (pour l'exemple, on cite
-le paramètre "*MaximumNumberOfSteps*" comme ayant changé de nom pour devenir
-"*MaximumNumberOfIterations*", par homogénéité avec les variables pouvant être
-affichées).
-
-Passer de la version 8.5 à la 9.2
-+++++++++++++++++++++++++++++++++
-
-Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
-procédure de montée en version consiste à lire l'ancien fichier de cas ADAO
-avec le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
-
-Cependant, il peut se présenter des incompatibilités provenant de fichiers
-scripts utilisateurs qui n'auraient pas une syntaxe compatible avec Python 3.
-L'erreur la plus immédiate est l'usage de l'impression "*print*" avec la
-syntaxe "*commande*" au lieu de la syntaxe fonctionnelle "*print(...)*". Dans
-ce cas, il est suggéré de corriger la syntaxe des fichiers utilisateurs dans
-l'environnement 8 avant de passer en environnement 9.
-
-Passer de la version 8.x à la 8.y avec y > x
-++++++++++++++++++++++++++++++++++++++++++++
-
-Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
-procédure de montée en version consiste à lire l'ancien fichier de cas ADAO
-avec le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
-
-Pour faciliter les futures évolutions, il est fortement recommandé de veiller à
-ce que vos fichiers scripts utilisateurs utilisent une syntaxe compatible avec
-Python 2 et avec Python 3. En particulier, on recommande d'utiliser la syntaxe
-fonctionnelle pour les "*print*" et non pas la syntaxe "*commande*", comme par
-exemple :
-::
-
-    # Python 2 & 3
-    x, unit = 1., "cm"
-    print( "x = %s %s"%(str(x),str(unit)) )
-
-ou :
-::
-
-    # Python 2 & 3
-    x, unit = 1., "cm"
-    print( "x = {0} {1}".format(str(x),str(unit)) )
-
-plutôt que :
-::
-
-    # Python 2 uniquement
-    x, unit = 1., "cm"
-    print "x =", x, unit
-
-Passer de la version 7.8 à la 8.1
-+++++++++++++++++++++++++++++++++
-
-Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
-procédure de montée en version consiste à lire l'ancien fichier de cas ADAO
-avec le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
-
-Passer de la version 7.x à la 7.y avec y > x
-++++++++++++++++++++++++++++++++++++++++++++
-
-Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
-procédure de montée en version consiste à lire l'ancien fichier de cas ADAO
-avec le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
-
-Passer de la version 6.6 à la 7.2
-+++++++++++++++++++++++++++++++++
-
-Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
-procédure de montée en version consiste à lire l'ancien fichier de cas ADAO avec
-le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
-
-Il y a une incompatibilité introduite dans les fichiers de script de
-post-processing ou d'observers. L'ancienne syntaxe pour interroger un objet
-résultat, comme celui d'analyse "*Analysis*" (fourni dans un script à travers le
-mot-clé "*UserPostAnalysis*"), était par exemple :
-::
-
-    Analysis = ADD.get("Analysis").valueserie(-1)
-    Analysis = ADD.get("Analysis").valueserie()
-
-La nouvelle syntaxe est entièrement compatible avec celle (classique) pour les
-objets de type liste ou tuple :
-::
-
-    Analysis = ADD.get("Analysis")[-1]
-    Analysis = ADD.get("Analysis")[:]
-
-Les scripts de post-processing doivent être modifiés.
-
-Passer de la version 6.x à la 6.y avec y > x
-++++++++++++++++++++++++++++++++++++++++++++
-
-Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
-procédure de montée en version consiste à lire l'ancien fichier de cas ADAO avec
-le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
-
-Il y a une incompatibilité introduite dans les fichiers de script d'opérateur,
-lors de la dénomination des opérateurs élémentaires utilisés pour l'opérateur
-d'observation par script. Les nouveaux noms requis sont "*DirectOperator*",
-"*TangentOperator*" et "*AdjointOperator*", comme décrit dans la quatrième
-partie du chapitre :ref:`section_reference`. Les fichiers de script d'opérateur
-doivent être modifiés.
-
 .. [#] Pour de plus amples informations sur YACS, voir le *module YACS* et son aide intégrée disponible dans le menu principal *Aide* de l'environnement SALOME.
index 3a8c20d6f221c98f64f9695a3ebc29972cfd836d..5b1c87dd8183e97cf3bb9ef76e3d698bc27e2c13 100644 (file)
@@ -72,9 +72,10 @@ comment utiliser une :ref:`section_gui_in_salome` ou une :ref:`section_tui`. La
 dernière grande partie détaille la :ref:`section_reference`, avec trois
 sous-parties essentielles qui la composent et qui décrivent les commandes et
 des options d'algorithmes. Un :ref:`section_glossary`, des
-:ref:`section_notations`, une :ref:`section_bibliography` et un index développé
-complètent le document. Enfin, pour respecter les exigences de licence du
-module, n'oubliez pas de lire la partie :ref:`section_license`.
+:ref:`section_notations`, une :ref:`section_bibliography`, des éléments de
+changement des :ref:`section_versions`, et un index développé complètent le
+document. Enfin, pour respecter les exigences de licence du module, n'oubliez
+pas de lire la partie :ref:`section_license`.
 
 .. toctree::
    :caption: Table des matières
@@ -92,9 +93,10 @@ module, n'oubliez pas de lire la partie :ref:`section_license`.
    gui_in_salome
    tui
    reference
+   versions
+   notations
    license
    bibliography
-   notations
    glossary
    genindex
 
index fe7f36ca31247bb0e24ef0b49c1f1841925815b1..9bae183d4aec062e87857278b256f248fcbe474d 100644 (file)
 Notations et conventions communes
 =================================
 
+.. index:: single: Fichier (nommage)
+.. index:: single: Fichier (type)
+
 Dans cette documentation, on utilise les notations standards de l'algèbre
 linéaire, de l'assimilation de données (comme décrit dans [Ide97]_) et de
 l'optimisation.
 
-Pour les formulations algébriques, les vecteurs sont écrits horizontalement ou
-verticalement sans faire la différence. Les matrices sont écrites soit
-normalement, ou avec une notation condensée, consistant à utiliser un espace
-pour séparer les valeurs, et un "``;``" pour séparer les lignes de la matrice,
-de façon continue sur une ligne.
+Pour les formulations algébriques, les **vecteurs** sont écrits horizontalement
+ou verticalement sans faire la différence. Les **matrices** peuvent s'écrire
+soit normalement comme une série de série de chiffres, soit en notation
+condensée en texte, consistant à utiliser un espace pour séparer les valeurs,
+et un "``;``" pour séparer les lignes de la matrice, de façon continue sur une
+ligne.
 
-Les fichiers peuvent être indiqués grâce à un chemin absolu ou relatif. Pour
-certains systèmes de fichiers anciens ou partagés, le nom complet avec le
-chemin ne doit pas contenir plus de 256 caractères. Dans le cas où ce sont des
-fichiers de type Python, il est judicieux de ne pas utiliser de points dans le
-nom à part pour l'extension, pour éviter des difficultés d'utilisation
-compliquées à diagnostiquer.
+Les **fichiers** peuvent être indiqués grâce à un chemin absolu ou relatif.
+Pour certains systèmes de fichiers anciens ou partagés, le nom complet, y
+compris le chemin, ne doit pas contenir plus de 256 caractères. Dans le cas où
+ce sont des fichiers de type Python, il est judicieux de ne pas utiliser de
+points dans le nom à part pour l'extension, pour éviter des difficultés
+d'utilisation qui sont ensuite compliquées à diagnostiquer.
 
-Les conventions de type et de nommage des fichiers s'appuient fortement sur les
-extensions des fichiers eux-mêmes. On en précise brièvement certaines ici, sans
-être exhaustifs :
+Les **conventions de type et de nommage des fichiers** s'appuient fortement sur
+les extensions des fichiers eux-mêmes. On en précise brièvement certaines ici,
+sans être exhaustifs :
 
-- extension ``.py``   : fichier texte de données ou commandes de type source Python
+- extension ``.py``   : fichier texte de données ou de commandes de type Python
 - extension ``.comm`` : fichier texte de données de commandes EFICAS d'ADAO
 - extension ``.xml``  : fichier texte de données de type XML (pour YACS, non exclusif)
 - extension ``.txt``  : fichier texte de données à séparateur espace
@@ -58,6 +62,9 @@ extensions des fichiers eux-mêmes. On en précise brièvement certaines ici, sa
 - extension ``.npz``  : fichier binaire de données de type Numpy multi-variables
 - extension ``.sdf``  : fichier binaire de données de type Scientific Data Format
 
+Pour l'usage de certains de ces fichiers, on pourra se reporter au mot-clé
+"*DataFile*" comme :ref:`section_ref_entry_types_info`.
+
 .. ------------------------------------ ..
 .. include:: snippets/Header2Algo07.rst
 
index d219ea16df0caf674802d459c9f35a95a487e1bd..7f7e4d3f4c4d188927f6b657b91e66f53d09a167 100644 (file)
@@ -37,7 +37,9 @@ comme dans les filtres de Kalman simple ou étendu.
 
 Il s'applique aux cas d'opérateurs d'observation et d'évolution incrémentale
 (processus) non-linéaires et présente d'excellentes qualités de robustesse et
-de performances. Il peut être rapproché de
+de performances. Il peut être interprété comme une réduction d'ordre du filtre
+de Kalman classique, avec une remarquable qualité d'assimilation de ce
+filtrage pour les problèmes de grande taille. Il peut être rapproché de
 l':ref:`section_ref_algorithm_UnscentedKalmanFilter` dont les qualités sont
 similaires pour les systèmes non-linéaires.
 
@@ -53,8 +55,15 @@ l':ref:`section_ref_algorithm_KalmanFilter`, qui sont souvent largement moins
 coûteux en évaluations sur de petits systèmes. On peut vérifier la linéarité
 des opérateurs à l'aide de l':ref:`section_ref_algorithm_LinearityTest`.
 
-Il existe de nombreuses variantes de cet algorithme. On propose ici des
-formulations stables et robustes suivantes :
+Il existe de nombreuses variantes déterministes ou stochastiques de cet
+algorithme, permettant en particulier d'effectuer de la réduction de taille des
+problèmes algébriques à différents niveaux (en utilisant des méthodes de rang
+réduit, de la réduction de dimension, des changements d'espace de calcul,
+conduisant à des schémas de type Ensemble Square Root Kalman Filters (EnSRKF)
+ou Reduced-Rank Square Root Filters (RRSQRT), à des transformations
+déterministes...). On ne rentre pas ici dans le détail complexe des
+classifications et des équivalences algorithmiques, qui sont disponibles dans
+la littérature. On propose ici les formulations stables et robustes suivantes :
 
 .. index::
     pair: Variant ; EnKF
@@ -64,6 +73,8 @@ formulations stables et robustes suivantes :
     pair: Variant ; IEnKF
     pair: Variant ; E3DVAR
     pair: Variant ; EnKS
+    pair: Variant ; EnSRKF
+    pair: Variant ; RRSQRT
 
 - "EnKF" (Ensemble Kalman Filter, voir [Evensen94]_), algorithme stochastique original, permettant de traiter de manière consistante un opérateur d'évolution non-linéaire,
 - "ETKF" (Ensemble-Transform Kalman Filter), algorithme déterministe d'EnKF, permettant de traiter un opérateur d'évolution non-linéaire avec beaucoup moins de membres (on recommande d'utiliser un nombre de membres de l'ordre de 10 ou même parfois moins),
@@ -74,9 +85,9 @@ formulations stables et robustes suivantes :
 - "EnKS" (Ensemble Kalman Smoother), algorithme de lissage avec un décalage fixe.
 
 Sans pouvoir prétendre à l'universalité, on recommande d'utiliser la
-formulation "EnKF" comme référence, la formulation "ETKF-N" ou "IEnKF" pour une
-performance robuste, et les autres algorithmes (dans l'ordre) comme des moyens
-pour obtenir une assimilation de données plus économique et de qualité
+formulation "EnKF" comme référence, **la formulation "ETKF-N" ou "IEnKF" pour
+une performance robuste**, et les autres algorithmes (dans l'ordre) comme des
+moyens pour obtenir une assimilation de données plus économique et de qualité
 (éventuellement) similaire.
 
 .. ------------------------------------ ..
index 2c904d4319f3ce030a295193bc54b6b5bced646e..7f22d9aa9d1c05cf463b2adda0a66c184d912115 100644 (file)
@@ -108,6 +108,8 @@ qui doit rester constant jusqu'à ce que l'on atteigne la précision du calcul.
 
 .. include:: snippets/InitialDirection.rst
 
+.. include:: snippets/NumberOfPrintedDigits.rst
+
 .. include:: snippets/ResiduFormula_GradientTest.rst
 
 .. include:: snippets/SetSeed.rst
index 8d0878a087a844db28d4a3fa8b99ab99ee8ed0bf..9e8938e4ae41130ca98b5cfa1da284ed25b88ea6 100644 (file)
@@ -132,6 +132,8 @@ de F est vérifiée.
 
 .. include:: snippets/InitialDirection.rst
 
+.. include:: snippets/NumberOfPrintedDigits.rst
+
 .. include:: snippets/ResiduFormula_LinearityTest.rst
 
 .. include:: snippets/SetSeed.rst
index 237d27df53f6cf981808709e0b14996a8d7b7743..00b1ea1e3487edeabbe45c1bfdb03bd8d0d9e346 100644 (file)
@@ -55,7 +55,7 @@
        12  1e-12   2.236e+00   1.910e+01   3.536e-12   0.000e+00
      -------------------------------------------------------------
 
-     End of the verification by "ScalarProduct" formula
+     End of the "ADJOINTTEST" verification by the "ScalarProduct" formula.
 
      ---------------------------------------------------------------------------
 
index a5c93dfbf2bb062ca60f82b4c72353c502e59807..0d5a4ca34fa8773a1c88a968fde4f03ad1447db1 100644 (file)
@@ -72,3 +72,7 @@
 
      ---------------------------------------------------------------------------
 
+     End of the "CONTROLEDFUNCTIONTEST" verification
+
+     ---------------------------------------------------------------------------
+
index 46e700be4cfffa67e97da3e6bea913241e112aed..d8338607d5dce140a385a070386943514beb4099 100644 (file)
@@ -72,3 +72,7 @@
 
      ---------------------------------------------------------------------------
 
+     End of the "CONTROLEDFUNCTIONTEST" verification
+
+     ---------------------------------------------------------------------------
+
index bdc93efb45be5461627f67e60ac4a10f62699f65..086b065c4ccc0bfadcd65fe22cec7661d2723526 100644 (file)
@@ -63,3 +63,7 @@
 
      ---------------------------------------------------------------------------
 
+     End of the "FUNCTIONTEST" verification
+
+     ---------------------------------------------------------------------------
+
index 0f09af24c494dc733432d27a67d33676109d30a5..9bf7401e3ffee7338559b557dbbb36590de7910c 100644 (file)
@@ -63,3 +63,7 @@
 
      ---------------------------------------------------------------------------
 
+     End of the "FUNCTIONTEST" verification
+
+     ---------------------------------------------------------------------------
+
index b8425a7fabfb7e4215576c664c3f181c4ab61a72..dc4a09eb137ff7461436c7dff31f46470d4678cd 100644 (file)
@@ -7,8 +7,8 @@ Yobs = []
 for i in range(51):
     Yobs.append([random.normal(Xtrue, 0.1, size=(1,)),])
 #
-print("Estimation par filtrage d'une variable constante")
-print("------------------------------------------------")
+print("Estimation par filtrage d'une trajectoire temporelle")
+print("----------------------------------------------------")
 print("  Observations bruitées acquises sur %i pas de temps"%(len(Yobs)-1,))
 print("")
 from adao import adaoBuilder
index ab3621bcfa01313b5d0838aabbc545a2d14d4d42..9d7c8bac7ad55dd353fa34c4b0490b2e5d3b8ce9 100644 (file)
@@ -1,5 +1,5 @@
-Estimation par filtrage d'une variable constante
-------------------------------------------------
+Estimation par filtrage d'une trajectoire temporelle
+----------------------------------------------------
   Observations bruitées acquises sur 50 pas de temps
 
   État analysé à l'observation courante : [0.]
index a7b4de8cc722f204fd819891b78ba1a2da882ad6..b2a5001223d49d33d1013b99f213f5444a4feeb4 100644 (file)
@@ -7,8 +7,8 @@ Yobs = []
 for i in range(51):
     Yobs.append([random.normal(Xtrue, 0.1, size=(1,)),])
 #
-print("Estimation par filtrage d'une variable constante")
-print("------------------------------------------------")
+print("Estimation par filtrage d'une trajectoire temporelle")
+print("----------------------------------------------------")
 print("  Observations bruitées acquises sur %i pas de temps"%(len(Yobs)-1,))
 print("")
 from adao import adaoBuilder
index 66ec11000929b53c417f6a4dcb8682c83a6cb960..7eb1b1d0fbb800b6657916c670b535c14292fe72 100644 (file)
@@ -1,5 +1,5 @@
-Estimation par filtrage d'une variable constante
-------------------------------------------------
+Estimation par filtrage d'une trajectoire temporelle
+----------------------------------------------------
   Observations bruitées acquises sur 50 pas de temps
 
   État analysé à l'observation finale : [-0.37725236]
index dc5fe5baf81dd95155a78d2d091b1e175afc1b45..296b30887e6087d312052fc99a1879a21f8acb50 100644 (file)
@@ -74,3 +74,7 @@
 
      ---------------------------------------------------------------------------
 
+     End of the "PARALLELFUNCTIONTEST" verification
+
+     ---------------------------------------------------------------------------
+
diff --git a/doc/fr/versions.rst b/doc/fr/versions.rst
new file mode 100644 (file)
index 0000000..faa1d90
--- /dev/null
@@ -0,0 +1,186 @@
+..
+   Copyright (C) 2008-2023 EDF R&D
+
+   This file is part of SALOME ADAO module.
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+
+   See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+
+   Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
+
+.. _section_versions:
+
+================================================================================
+Versions d'ADAO et compatibilités externes
+================================================================================
+
+.. _subsection_new_adao_version:
+.. index::
+    pair: Version ; ADAO
+    pair: Version d'ADAO ; Changement de
+
+Passer d'une version d'ADAO à une nouvelle
+------------------------------------------
+
+Le module ADAO et ses fichiers de cas ".comm" sont identifiés par des versions,
+avec des caractéristiques "Major", "Minor", "Revision" et optionnellement
+"Installation". Une version particulière est numérotée "Major.Minor.Revision",
+avec un lien fort avec la numérotation de la plateforme SALOME. L'indication
+optionnelle d'un quatrième numéro désigne une différence dans le mode
+d'installation, pas dans le contenu de la version.
+
+Chaque version "Major.Minor.Revision" du module ADAO peut lire les fichiers de
+cas ADAO de la précédente version mineure "Major.Minor-1.*". En général, elle
+peut aussi lire les fichiers de cas de toutes les versions mineures "Major.*.*"
+d'une branche majeure, mais ce n'est pas obligatoirement vrai pour toutes les
+commandes ou tous les mots-clés. En général aussi, un fichier de cas ADAO d'une
+version ne peut pas être lu par une précédente version mineure ou majeure du
+module ADAO.
+
+Passer de la version 9.x à la 9.y avec y > x
+++++++++++++++++++++++++++++++++++++++++++++
+
+Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
+procédure de montée en version consiste à lire l'ancien fichier de cas ADAO
+avec le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
+
+Cependant, il peut se présenter des incompatibilités provenant de cas
+utilisateurs écrits directement en interface TUI. Il est conseillé de revoir la
+syntaxe et les arguments dans les scripts TUI à chaque changement de version.
+En particulier, il convient de vérifier que les paramètres d'algorithme sont
+toujours adéquats et actifs, sachant qu'il a été explicitement choisi qu'il n'y
+ait pas de message lorsqu'un paramètre devient inactif (pour l'exemple, on cite
+le paramètre "*MaximumNumberOfSteps*" comme ayant changé de nom pour devenir
+"*MaximumNumberOfIterations*", par homogénéité avec les variables pouvant être
+affichées).
+
+Passer de la version 8.5 à la 9.2
++++++++++++++++++++++++++++++++++
+
+Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
+procédure de montée en version consiste à lire l'ancien fichier de cas ADAO
+avec le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
+
+Cependant, il peut se présenter des incompatibilités provenant de fichiers
+scripts utilisateurs qui n'auraient pas une syntaxe compatible avec Python 3.
+L'erreur la plus immédiate est l'usage de l'impression "*print*" avec la
+syntaxe "*commande*" au lieu de la syntaxe fonctionnelle "*print(...)*". Dans
+ce cas, il est suggéré de corriger la syntaxe des fichiers utilisateurs dans
+l'environnement 8 avant de passer en environnement 9.
+
+Passer de la version 8.x à la 8.y avec y > x
+++++++++++++++++++++++++++++++++++++++++++++
+
+Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
+procédure de montée en version consiste à lire l'ancien fichier de cas ADAO
+avec le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
+
+Pour faciliter les futures évolutions, il est fortement recommandé de veiller à
+ce que vos fichiers scripts utilisateurs utilisent une syntaxe compatible avec
+Python 2 et avec Python 3. En particulier, on recommande d'utiliser la syntaxe
+fonctionnelle pour les "*print*" et non pas la syntaxe "*commande*", comme par
+exemple :
+::
+
+    # Python 2 & 3
+    x, unit = 1., "cm"
+    print( "x = %s %s"%(str(x),str(unit)) )
+
+ou :
+::
+
+    # Python 2 & 3
+    x, unit = 1., "cm"
+    print( "x = {0} {1}".format(str(x),str(unit)) )
+
+plutôt que :
+::
+
+    # Python 2 uniquement
+    x, unit = 1., "cm"
+    print "x =", x, unit
+
+Passer de la version 7.8 à la 8.1
++++++++++++++++++++++++++++++++++
+
+Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
+procédure de montée en version consiste à lire l'ancien fichier de cas ADAO
+avec le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
+
+Passer de la version 7.x à la 7.y avec y > x
+++++++++++++++++++++++++++++++++++++++++++++
+
+Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
+procédure de montée en version consiste à lire l'ancien fichier de cas ADAO
+avec le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
+
+Passer de la version 6.6 à la 7.2
++++++++++++++++++++++++++++++++++
+
+Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
+procédure de montée en version consiste à lire l'ancien fichier de cas ADAO avec
+le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
+
+Il y a une incompatibilité introduite dans les fichiers de script de
+post-processing ou d'observers. L'ancienne syntaxe pour interroger un objet
+résultat, comme celui d'analyse "*Analysis*" (fourni dans un script à travers le
+mot-clé "*UserPostAnalysis*"), était par exemple :
+::
+
+    Analysis = ADD.get("Analysis").valueserie(-1)
+    Analysis = ADD.get("Analysis").valueserie()
+
+La nouvelle syntaxe est entièrement compatible avec celle (classique) pour les
+objets de type liste ou tuple :
+::
+
+    Analysis = ADD.get("Analysis")[-1]
+    Analysis = ADD.get("Analysis")[:]
+
+Les scripts de post-processing doivent être modifiés.
+
+Passer de la version 6.x à la 6.y avec y > x
+++++++++++++++++++++++++++++++++++++++++++++
+
+Il n'y a pas d'incompatibilité connue pour les fichiers de cas ADAO. La
+procédure de montée en version consiste à lire l'ancien fichier de cas ADAO avec
+le nouveau module SALOME/ADAO, et à l'enregistrer avec un nouveau nom.
+
+Il y a une incompatibilité introduite dans les fichiers de script d'opérateur,
+lors de la dénomination des opérateurs élémentaires utilisés pour l'opérateur
+d'observation par script. Les nouveaux noms requis sont "*DirectOperator*",
+"*TangentOperator*" et "*AdjointOperator*", comme décrit dans la quatrième
+partie du chapitre :ref:`section_reference`. Les fichiers de script d'opérateur
+doivent être modifiés.
+
+.. _subsection_version_compatibility:
+.. index::
+    pair: Version ; ADAO
+    pair: Version ; SALOME
+    pair: Version ; EFICAS
+    pair: Version ; Python
+    pair: Version ; Numpy
+    pair: Version ; Scipy
+    pair: Version ; MatplotLib
+    pair: Version ; Gnuplot
+    pair: Version ; NLopt
+
+Versions de compatibilité d'ADAO avec les outils support
+--------------------------------------------------------
+
+.. include:: snippets/ModuleValidation.rst
+
+.. include:: snippets/ModuleCompatibility.rst