- "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"
- "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
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
import os
import sys
import platform
+import socket
import locale
import logging
import re
__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':
__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
#
return "%s %s (%s)"%(dav.name,dav.version,dav.date)
# ==============================================================================
+# Tests d'importation de modules système
+
try:
import numpy
has_numpy = True
except ImportError:
has_matplotlib = False
-try:
- import Gnuplot
- has_gnuplot = True
-except ImportError:
- has_gnuplot = False
-
try:
import sphinx
has_sphinx = True
"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")