]> SALOME platform Git repositories - modules/adao.git/blob - src/tests/daComposant/Plateforme/test001_Blue.py
Salome HOME
- Nouvelle version de Jean-Philippe ARGAUD
[modules/adao.git] / src / tests / daComposant / Plateforme / test001_Blue.py
1 #-*-coding:iso-8859-1-*-
2 __doc__ = """
3     Cas-test vérifiant sur le Blue que si l'erreur est nulle, l'incrément
4     d'analyse est nul.
5 """
6 __author__ = "Jean-Philippe ARGAUD - Mars 2008"
7
8 import numpy
9 from daCore.AssimilationStudy import AssimilationStudy
10
11 #===============================================================================
12 def test(precision = 1.e-13, dimension = 3):
13     """
14     Cas-test vérifiant sur le Blue que si l'erreur est nulle, l'incrément
15     d'analyse est nul.
16     """
17     #
18     # Définition des données
19     # ----------------------
20     xt = numpy.matrix(numpy.arange(dimension)).T
21     Eo = numpy.matrix(numpy.zeros((dimension,))).T
22     Eb = numpy.matrix(numpy.zeros((dimension,))).T
23     #
24     H  = numpy.matrix(numpy.core.identity(dimension))
25     #
26     xb = xt + Eb
27     yo = H * xt + Eo
28     #
29     xb = xb.A1
30     yo = yo.A1
31     #
32     # Définition des matrices de covariances d'erreurs
33     # ------------------------------------------------
34     R  = numpy.matrix(numpy.core.identity(dimension)).T
35     B  = numpy.matrix(numpy.core.identity(dimension)).T
36     #
37     # Analyse
38     # -------
39     ADD = AssimilationStudy()
40     ADD.setBackground         (asVector     = xb )
41     ADD.setBackgroundError    (asCovariance = B )
42     ADD.setObservation        (asVector     = yo )
43     ADD.setObservationError   (asCovariance = R )
44     ADD.setObservationOperator(asMatrix     = H )
45     #
46     ADD.setControls()
47     ADD.setAlgorithm(choice="Blue")
48     #
49     ADD.analyze()
50     #
51     xa = numpy.array(ADD.get("Analysis").valueserie(0))
52     d  = numpy.array(ADD.get("Innovation").valueserie(0))
53     #
54     # Vérification du résultat
55     # ------------------------
56     if max(abs(xa - xb)) > precision:
57         raise ValueError("Résultat du test erroné (1)")
58     elif max(abs(d)) > precision:
59         raise ValueError("Résultat du test erroné (2)")
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(dimension = 100)