]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Minor documentation and code review corrections (41)
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Wed, 15 Nov 2023 15:47:01 +0000 (16:47 +0100)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Wed, 15 Nov 2023 15:47:01 +0000 (16:47 +0100)
doc/en/ref_algorithm_EnsembleKalmanFilter.rst
doc/fr/ref_algorithm_EnsembleKalmanFilter.rst
src/daComposant/daCore/PlatformInfo.py

index a32589e254d0891babbec6004d91a5b42e8fdf57..9391b9b0c1eb8f1f88b33d7af1a2d983b8fdd99b 100644 (file)
@@ -81,8 +81,8 @@ following stable and robust formulations are proposed here:
 - "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),
 - "ETKF-N" (Ensemble-Transform Kalman Filter of finite size N), ETKF algorithm of "finite size N", that doesn't need inflation that is often required with the other algorithms,
 - "MLEF" (Maximum Likelihood Kalman Filter, see [Zupanski05]_), deterministic EnKF algorithm, allowing in addition the consistent treatment of non-linear observation operator,
-- "IEnKF" (Iterative EnKF), deterministic EnKF algorithm, improving treament of operators non-linearities
-- "E3DVAR" (EnKF 3DVAR, or 3D-Var-Ben), algorithm coupling ensemble and variational assimilation, which uses in parallel a 3DVAR variational assimilation for a single best estimate and an EnKF ensemble algorithm to improve the estimation of *a posteriori* error covariances
+- "IEnKF" (Iterative EnKF), deterministic EnKF algorithm, improving treament of operators non-linearities,
+- "E3DVAR" (EnKF 3DVAR, or 3D-Var-Ben), algorithm coupling ensemble and variational assimilation, which uses in parallel a 3DVAR variational assimilation for a single best estimate and an EnKF ensemble algorithm to improve the estimation of *a posteriori* error covariances,
 - "EnKS" (Ensemble Kalman Smoother), smoothing algorithm with a fixed time lag L.
 
 Without being a universal recommendation, one recommend to use "EnKF"
index cc2d20d3f442a195342f69c86e2c041b1cafc1d1..bc46e37ba4c676429b72440b1dc412d12ef4a2b2 100644 (file)
@@ -83,10 +83,10 @@ la littérature. On propose ici les formulations stables et robustes suivantes :
 - "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),
 - "ETKF-N" (Ensemble-Transform Kalman Filter of finite size N), algorithme d'ETKF dit de "taille finie N", évitant de recourir à une inflation souvent nécessaire avec les autres algorithmes,
-- "MLEF" (Maximum Likelihood Kalman Filter, voir [Zupanski05]_), algorithme déterministe d'EnKF, permettant en plus de traiter de manière consistante un opérateur d'observation non-linéaire),
+- "MLEF" (Maximum Likelihood Kalman Filter, voir [Zupanski05]_), algorithme déterministe d'EnKF, permettant en plus de traiter de manière consistante un opérateur d'observation non-linéaire,
 - "IEnKF" (Iterative EnKF), algorithme déterministe d'EnKF, améliorant le traitement des non-linéarités des opérateurs,
 - "E3DVAR" (EnKF 3DVAR, ou 3D-Var-Ben), algorithme couplant assimilation d'ensemble et variationnelle, qui utilise en parallèle une assimilation variationnelle 3DVAR pour l'estimation d'un unique meilleur état et un algorithme d'ensemble EnKF pour améliorer l'estimation des covariances d'erreurs *a posteriori*,
-- "EnKS" (Ensemble Kalman Smoother), algorithme de lissage avec un décalage fixe.
+- "EnKS" (Ensemble Kalman Smoother), algorithme de lissage avec un décalage temporel fixe de taille L.
 
 Sans pouvoir prétendre à l'universalité, on recommande d'utiliser la
 formulation "EnKF" comme référence, **la formulation "ETKF-N" ou "IEnKF" pour
index 8f1db00fd03ebc5c779c8b048d43b1a87c600520..ae60ea523e2598dd349806fef1fe9a409b4f3121 100644 (file)
@@ -33,7 +33,7 @@
 
     La classe "PathManagement" permet de mettre à jour les chemins système pour
     ajouter les outils numériques, matrices... On l'utilise en instanciant
-    simplement cette classe, sans meme récupérer d'objet :
+    simplement cette classe, sans même récupérer d'objet :
         PathManagement()
 
     La classe "SystemUsage" permet de  sous Unix les différentes tailles
@@ -47,6 +47,7 @@ __all__ = []
 import os
 import sys
 import platform
+import socket
 import locale
 import logging
 import re
@@ -97,21 +98,33 @@ class PlatformInfo(object):
                 __msg += "\n%s%30s : %s" %(__prefix,
                     "platform.linux_distribution",str(platform.linux_distribution()))
             elif hasattr(platform, 'dist'):
-                __msg += "\n%s%30s : %s" %(__prefix,"platform.dist",str(platform.dist()))
+                __msg += "\n%s%30s : %s" %(__prefix,
+                    "platform.dist",str(platform.dist()))
         elif sys.platform.startswith('darwin'):
             if hasattr(platform, 'mac_ver'):
-                __macosxv = {
+                # https://fr.wikipedia.org/wiki/MacOS
+                __macosxv10 = {
                     '0' : 'Cheetah',      '1' : 'Puma',        '2' : 'Jaguar',
                     '3' : 'Panther',      '4' : 'Tiger',       '5' : 'Leopard',
                     '6' : 'Snow Leopard', '7' : 'Lion',        '8' : 'Mountain Lion',
                     '9' : 'Mavericks',    '10': 'Yosemite',    '11': 'El Capitan',
                     '12': 'Sierra',       '13': 'High Sierra', '14': 'Mojave',
-                    '15': 'Catalina',     '16': 'Big Sur',     '17': 'Monterey',
+                    '15': 'Catalina',
                     }
-                for key in __macosxv:
-                    if (platform.mac_ver()[0].split('.')[1] == key):
+                for key in __macosxv10:
+                    __details = platform.mac_ver()[0].split('.')
+                    if (len(__details)>0) and (__details[1] == key):
                         __msg += "\n%s%30s : %s" %(__prefix,
-                            "platform.mac_ver",str(platform.mac_ver()[0]+"(" + __macosxv[key]+")"))
+                            "platform.mac_ver",str(platform.mac_ver()[0]+"(" + __macosxv10[key]+")"))
+                __macosxv11 = {
+                    '11': 'Big Sur',      '12': 'Monterey',    '13': 'Ventura',
+                    '14': 'Sonoma',
+                    }
+                for key in __macosxv11:
+                    __details = platform.mac_ver()[0].split('.')
+                    if (__details[0] == key):
+                        __msg += "\n%s%30s : %s" %(__prefix,
+                            "platform.mac_ver",str(platform.mac_ver()[0]+"(" + __macosxv11[key]+")"))
             elif hasattr(platform, 'dist'):
                 __msg += "\n%s%30s : %s" %(__prefix,"platform.dist",str(platform.dist()))
         elif os.name == 'nt':
@@ -134,6 +147,7 @@ class PlatformInfo(object):
             __msg += "\n%s%30s : %s" %(__prefix,"len(os.sched_getaffinity(0))","Unsupported on this platform")
         __msg += "\n"
         __msg += "\n%s%30s : %s" %(__prefix,"platform.node",platform.node())
+        __msg += "\n%s%30s : %s" %(__prefix,"socket.getfqdn",socket.getfqdn())
         __msg += "\n%s%30s : %s" %(__prefix,"os.path.expanduser",os.path.expanduser('~'))
         return __msg
     #
@@ -256,6 +270,8 @@ class PlatformInfo(object):
         return "%s %s (%s)"%(dav.name,dav.version,dav.date)
 
 # ==============================================================================
+# Tests d'importation de modules système
+
 try:
     import numpy
     has_numpy = True
@@ -276,12 +292,6 @@ try:
 except ImportError:
     has_matplotlib = False
 
-try:
-    import Gnuplot
-    has_gnuplot = True
-except ImportError:
-    has_gnuplot = False
-
 try:
     import sphinx
     has_sphinx = True
@@ -564,6 +574,16 @@ class SystemUsage(object):
         "Renvoie la mémoire totale maximale mesurée"
         return self._VmB('VmPeak:', unit)
 
+# ==============================================================================
+# Tests d'importation de modules locaux
+
+PathManagement()
+try:
+    import Gnuplot
+    has_gnuplot = True
+except ImportError:
+    has_gnuplot = False
+
 # ==============================================================================
 if __name__ == "__main__":
     print("\n AUTODIAGNOSTIC\n")