]> SALOME platform Git repositories - modules/adao.git/blob - src/tests/daComposant/Plateforme/test013_EnsembleBlue.py
Salome HOME
- Nouvelle version de Jean-Philippe ARGAUD
[modules/adao.git] / src / tests / daComposant / Plateforme / test013_EnsembleBlue.py
1 #-*-coding:iso-8859-1-*-
2 __doc__ = """
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
7     est de 0.1*0.1).
8 """
9 __author__ = "Jean-Philippe ARGAUD - Novembre 2008"
10
11 import sys ; sys.path.insert(0, "../../Sources/daCore")
12
13 import numpy
14 from daCore.AssimilationStudy import AssimilationStudy
15 from daCore.Persistence       import OneVector
16
17 import logging
18 # logging.getLogger().setLevel(logging.DEBUG)
19
20 #===============================================================================
21 def test(precision = 1.e-2):
22     """
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
27     est de 0.1*0.1).
28     """
29     #
30     # Définition de l'étude d'assimilation
31     # ------------------------------------
32     ADD = AssimilationStudy("Ma premiere etude")
33     #
34     Xb = OneVector("Ebauche", basetype=numpy.matrix)
35     for i in range(100):
36         Xb.store( numpy.matrix( [0,10,20], numpy.float ).T )
37     #
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")
43     #
44     ADD.setControls()
45     ADD.setAlgorithm(choice="EnsembleBlue")
46     #
47     ADD.analyze()
48     #
49     Xa = ADD.get("Analysis")
50     Analyse_moyenne = numpy.matrix( Xa.valueserie() ).mean(axis=0).A1
51     print
52     print "    Ebauche            :",[0,1,2]
53     print "    Analyse moyenne    :",Analyse_moyenne
54     print "    Nombre d'analyses  :",Xa.stepnumber()
55     #
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é")
60     else:
61         print test.__doc__
62         print "    Test correct, erreur maximale inférieure à %s"%precision
63         print
64
65 #===============================================================================
66 if __name__ == "__main__":
67
68     print
69     print "AUTODIAGNOSTIC"
70     print "=============="
71     numpy.random.seed(1000)
72     
73     test()