1 #-*-coding:iso-8859-1-*-
3 Cas-test vérifiant les relations d'ordre attendues sur les écarts RMS entre
4 les valeurs analysees et la valeur vraie, pour 3 analyses BLUE réalisées
5 avec des poids extrêmes dans R et B
7 __author__ = "Sophie RICCI, Jean-Philippe ARGAUD - Septembre 2008"
10 from daCore.AssimilationStudy import AssimilationStudy
12 #===============================================================================
13 def test(dimension = 3):
15 Cas-test vérifiant les relations d'ordre attendues sur les écarts RMS entre
16 les valeurs analysees et la valeur vraie, pour 3 analyses BLUE réalisées
17 avec des poids extrêmes dans R et B
21 # Définition des données
22 # ----------------------
23 xt = numpy.matrix(numpy.random.normal(0.,1.,size=(dimension,))).T
24 Eb = numpy.matrix(numpy.random.normal(0.,1.,size=(dimension,))).T
25 H = numpy.matrix(numpy.core.identity(dimension))
26 B = numpy.matrix(numpy.core.identity(dimension)).T
35 ADD = AssimilationStudy()
36 ADD.setBackground (asVector = xb )
37 ADD.setObservation (asVector = yo )
38 ADD.setBackgroundError (asCovariance = B )
39 ADD.setObservationOperator(asMatrix = H )
41 ADD.setAlgorithm(choice="Blue")
43 # Définition des matrices de covariances d'erreur : ébauche parfaite
44 # ------------------------------------------------------------------
47 ADD.setObservationError (asCovariance = R )
49 x1 = ADD.get("Analysis").valueserie(0)
51 # Définition des matrices de covariances d'erreurs : poids identiques
52 # -------------------------------------------------------------------
55 ADD.setObservationError (asCovariance = R )
57 x2 = ADD.get("Analysis").valueserie(1)
59 # Définition des matrices de covariances d'erreurs : observations parfaites
60 # -------------------------------------------------------------------------
63 ADD.setObservationError (asCovariance = R )
65 x3 = ADD.get("Analysis").valueserie(2)
67 # Calcul des écarts RMS
68 # ---------------------
69 ADD.setDiagnostic("RMS", "Calcul de la RMS entre analyse et yo")
70 RMS = ADD.get("Calcul de la RMS entre analyse et yo")
75 RMS_yo_x1 = RMS.valueserie(0)
76 RMS_yo_x2 = RMS.valueserie(1)
77 RMS_yo_x3 = RMS.valueserie(2)
79 print " Cas ébauche parfaite : R/B = %.1e"%alpha1,"RMS = %.7f"%RMS_yo_x1
80 print " Cas poids identiques : R/B = %.1e"%alpha2,"RMS = %.7f"%RMS_yo_x2
81 print " Cas observations parfaites : R/B = %.1e"%alpha3,"RMS = %.7f"%RMS_yo_x3
82 if ( (RMS_yo_x3 <= RMS_yo_x2) and (RMS_yo_x2 <= RMS_yo_x1) ) :
83 print " La reponse de l'assimilation est cohérente avec la modification du rapport B/R."
88 raise ValueError("Résultat du test erroné")
90 #===============================================================================
91 if __name__ == "__main__":
94 print "AUTODIAGNOSTIC"
95 print "=============="
96 numpy.random.seed(1000)