1 #-*-coding:iso-8859-1-*-
3 Cas-test vérifiant que si les covariances d'erreur B et R sont identiques et
4 unitaires, l'analyse est située au milieu de l'ébauche [0,1,2] et de
5 l'observation [0.5,1.5,2.5], avec une erreur d'un ordre inférieur à celle
6 introduite dans R (si l'erreur est de 1 dans R, la précision de vérification
9 __author__ = "Jean-Philippe ARGAUD - Novembre 2008"
11 import sys ; sys.path.insert(0, "../../Sources/daCore")
14 from daCore.AssimilationStudy import AssimilationStudy
15 from daCore.Persistence import OneVector
18 # logging.getLogger().setLevel(logging.DEBUG)
20 #===============================================================================
21 def test(precision = 1.e-2):
23 Cas-test vérifiant que si les covariances d'erreur B et R sont identiques et
24 unitaires, l'analyse est située au milieu de l'ébauche [0,1,2] et de
25 l'observation [0.5,1.5,2.5], avec une erreur d'un ordre inférieur à celle
26 introduite dans R (si l'erreur est de 1 dans R, la précision de vérification
30 # Définition de l'étude d'assimilation
31 # ------------------------------------
32 ADD = AssimilationStudy("Ma premiere etude")
34 Xb = OneVector("Ebauche", basetype=numpy.matrix)
36 Xb.store( numpy.matrix( [0,10,20], numpy.float ).T )
38 ADD.setBackground (asPersistentVector = Xb )
39 ADD.setBackgroundError (asCovariance = "1 0 0;0 1 0;0 0 1")
40 ADD.setObservation (asVector = [0.5,10.5,20.5])
41 ADD.setObservationError (asCovariance = "1 0 0;0 1 0;0 0 1")
42 ADD.setObservationOperator(asMatrix = "1 0 0;0 1 0;0 0 1")
45 ADD.setAlgorithm(choice="EnsembleBlue")
49 Xa = ADD.get("Analysis")
50 Analyse_moyenne = numpy.matrix( Xa.valueserie() ).mean(axis=0).A1
52 print " Ebauche :",[0,1,2]
53 print " Analyse moyenne :",Analyse_moyenne
54 print " Nombre d'analyses :",Xa.stepnumber()
56 # Vérification du résultat
57 # ------------------------
58 if max(Analyse_moyenne-numpy.array([0.25, 10.25, 20.25]))/10 > precision:
59 raise ValueError("Résultat du test erroné")
62 print " Test correct, erreur maximale inférieure à %s"%precision
65 #===============================================================================
66 if __name__ == "__main__":
69 print "AUTODIAGNOSTIC"
70 print "=============="
71 numpy.random.seed(1000)