]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Minor internal modifications
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Fri, 1 Oct 2021 18:50:38 +0000 (20:50 +0200)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Fri, 1 Oct 2021 18:50:38 +0000 (20:50 +0200)
src/daComposant/daAlgorithms/NonLinearLeastSquares.py
src/daComposant/daCore/Aidsm.py
src/daComposant/daCore/Interfaces.py
src/daComposant/daCore/NumericObjects.py

index d0afe68cb1debd0e80fcefe08cb09e84c1ca255e..61a2613be5aa62340983bbf33b1ed8a7a455cade 100644 (file)
@@ -107,8 +107,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             message  = "État initial imposé (par défaut, c'est l'ébauche si None)",
             )
         self.requireInputArguments(
-            mandatory= ("Xb", "Y", "HO"),
-            optional = ("R"),
+            mandatory= ("Xb", "Y", "HO", "R"),
             )
         self.setAttributes(tags=(
             "Optimization",
@@ -136,13 +135,9 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
         if max(Y.shape) != max(HXb.shape):
             raise ValueError("The shapes %s of observations Y and %s of observed calculation H(X) are different, they have to be identical."%(Y.shape,HXb.shape))
         #
-        if R is None:
-            RI = 1.
-            RdemiI = 1.
-        else:
-            RI = R.getI()
-            if self._parameters["Minimizer"] == "LM":
-                RdemiI = R.choleskyI()
+        RI = R.getI()
+        if self._parameters["Minimizer"] == "LM":
+            RdemiI = R.choleskyI()
         #
         # Définition de la fonction-coût
         # ------------------------------
index 79ddef25c1c5e5507d76078c734340055ada8027..6937f322460d7292926156a7fa9d873abe33eebc 100644 (file)
@@ -78,6 +78,10 @@ class Aidsm(object):
             self.__adaoObject[ename] = None
         for ename in ("ObservationOperator", "EvolutionModel", "ControlModel"):
             self.__adaoObject[ename] = {}
+        for ename in ("BackgroundError", "ObservationError"):
+            self.__adaoObject[ename] = Covariance(ename, asEyeByScalar = 1.)
+        for ename in ("EvolutionError",):
+            self.__adaoObject[ename] = Covariance(ename, asEyeByScalar = 1.e-16)
         for ename in ("Observer", "UserPostAnalysis"):
             self.__adaoObject[ename]   = []
             self.__StoredInputs[ename] = [] # Vide par defaut
index f567763bda1a880e15f560b81e5f4ba3026579ab..3a6895ce4677f277cb58fa70de19f82257356091 100644 (file)
@@ -66,7 +66,7 @@ class GenericCaseViewer(object):
         if __hasNotExecute:
             self._lineSerie.append("%s.execute()"%(self._objname,))
         if __upa is not None and len(__upa)>0:
-            __upa = __upa.replace("ADD.",str(self._objname)+".")
+            __upa = __upa.replace("ADD",str(self._objname))
             self._lineSerie.append(__upa)
     def _addLine(self, line=""):
         "Ajoute un enregistrement individuel"
@@ -233,7 +233,7 @@ class _COMViewer(GenericCaseViewer):
             #
             elif __command == "UserPostAnalysis" and type(r) is dict:
                 if 'STRING' in r:
-                    __UserPostAnalysis = r['STRING'].replace("ADD.",str(self._objname)+".")
+                    __UserPostAnalysis = r['STRING'].replace("ADD",str(self._objname))
                     __commands.append( "set( Concept='UserPostAnalysis', String=\"\"\"%s\"\"\" )"%(__UserPostAnalysis,) )
                 elif 'SCRIPT_FILE' in r and os.path.exists(r['SCRIPT_FILE']):
                     __UserPostAnalysis = open(r['SCRIPT_FILE'],'r').read()
index 85ecff2048846829367362bc70444f4bf66b1b06..1a34b32df7bf25af0c3c9a85ce24f9218f62bd68 100644 (file)
@@ -2171,15 +2171,11 @@ def incr3dvar(selfA, Xb, Y, U, HO, EM, CM, R, B, Q):
     #
     # Initialisations
     # ---------------
-    #
-    # Opérateur non-linéaire pour la boucle externe
     Hm = HO["Direct"].appliedTo
     #
-    # Précalcul des inversions de B et R
     BI = B.getI()
     RI = R.getI()
     #
-    # Point de démarrage de l'optimisation
     Xini = selfA._parameters["InitializationPoint"]
     #
     HXb = numpy.asmatrix(numpy.ravel( Hm( Xb ) )).T
@@ -2729,6 +2725,7 @@ def multi3dvar(selfA, Xb, Y, U, HO, EM, CM, R, B, Q, oneCycle):
     """
     #
     # Initialisation
+    # --------------
     if selfA._parameters["EstimationOf"] == "State":
         M = EM["Direct"].appliedTo
         #
@@ -2784,11 +2781,8 @@ def psas3dvar(selfA, Xb, Y, U, HO, EM, CM, R, B, Q):
     #
     # Initialisations
     # ---------------
-    #
-    # Opérateurs
     Hm = HO["Direct"].appliedTo
     #
-    # Utilisation éventuelle d'un vecteur H(Xb) précalculé
     if HO["AppliedInX"] is not None and "HXb" in HO["AppliedInX"]:
         HXb = Hm( Xb, HO["AppliedInX"]["HXb"] )
     else:
@@ -2809,7 +2803,6 @@ def psas3dvar(selfA, Xb, Y, U, HO, EM, CM, R, B, Q):
     HBHTpR = R + Ht * BHT
     Innovation = Y - HXb
     #
-    # Point de démarrage de l'optimisation
     Xini = numpy.zeros(Xb.shape)
     #
     # Définition de la fonction-coût
@@ -3255,12 +3248,9 @@ def std3dvar(selfA, Xb, Y, U, HO, EM, CM, R, B, Q):
     #
     # Initialisations
     # ---------------
-    #
-    # Opérateurs
     Hm = HO["Direct"].appliedTo
     Ha = HO["Adjoint"].appliedInXTo
     #
-    # Utilisation éventuelle d'un vecteur H(Xb) précalculé
     if HO["AppliedInX"] is not None and "HXb" in HO["AppliedInX"]:
         HXb = Hm( Xb, HO["AppliedInX"]["HXb"] )
     else:
@@ -3276,11 +3266,9 @@ def std3dvar(selfA, Xb, Y, U, HO, EM, CM, R, B, Q):
         HtMb = HtMb.reshape(Y.size,Xb.size) # ADAO & check shape
         selfA.StoredVariables["JacobianMatrixAtBackground"].store( HtMb )
     #
-    # Précalcul des inversions de B et R
     BI = B.getI()
     RI = R.getI()
     #
-    # Point de démarrage de l'optimisation
     Xini = selfA._parameters["InitializationPoint"]
     #
     # Définition de la fonction-coût
@@ -4138,16 +4126,12 @@ def van3dvar(selfA, Xb, Y, U, HO, EM, CM, R, B, Q):
     #
     # Initialisations
     # ---------------
-    #
-    # Opérateurs
     Hm = HO["Direct"].appliedTo
     Ha = HO["Adjoint"].appliedInXTo
     #
-    # Précalcul des inversions de B et R
     BT = B.getT()
     RI = R.getI()
     #
-    # Point de démarrage de l'optimisation
     Xini = numpy.zeros(Xb.shape)
     #
     # Définition de la fonction-coût