]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Improvement of EnKF algorithm internals
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Sun, 31 Jan 2021 16:19:02 +0000 (17:19 +0100)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Sun, 31 Jan 2021 16:19:02 +0000 (17:19 +0100)
src/daComposant/daAlgorithms/EnsembleKalmanFilter.py
src/daComposant/daCore/NumericObjects.py

index 9716d2ceed80fef2688bf67fd83b1f47af3105af..a7e178e1d15d4465ba876e8c9b596485dbd90616 100644 (file)
@@ -50,6 +50,8 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
                 "MLEF-T",
                 "MLEF-B",
                 "IEnKF-T",
+                "IEnKF-B",
+                "IEKF",
                 ],
             )
         self.defineRequiredParameter(
@@ -204,6 +206,10 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
         elif self._parameters["Minimizer"] in ["IEnKF-T", "IEnKF"]:
             NumericObjects.ienkf(self, Xb, Y, U, HO, EM, CM, R, B, Q, BnotT=False)
         #
+        elif self._parameters["Minimizer"] in ["IEnKF-B", "IEKF"]:
+            NumericObjects.ienkf(self, Xb, Y, U, HO, EM, CM, R, B, Q, BnotT=True)
+        #
+        #--------------------------
         else:
             raise ValueError("Error in Minimizer name: %s"%self._parameters["Minimizer"])
         #
index 095a51c2069429ea2d0ab385f906e37ec7164f8c..1e97bf69663fa98eca045901abaf3bf4b6b3693b 100644 (file)
@@ -1594,6 +1594,10 @@ def ienkf(selfA, Xb, Y, U, HO, EM, CM, R, B, Q, VariantM="IEnKF12",
             #
             A2 = EnsembleCenteredAnomalies( E2 )
             #
+            if BnotT:
+                Ta = numpy.real(scipy.linalg.sqrtm(numpy.linalg.inv( mH )))
+                A2 = numpy.sqrt(__m-1) * A2 @ Ta / _epsilon
+            #
             Xn = vx2 + A2
         #--------------------------
         else: