예제 #1
0
class StdEnKFTest(ResTest):

    def setUp(self):
        self.rng = RandomNumberGenerator(RngAlgTypeEnum.MZRAN, RngInitModeEnum.INIT_DEFAULT)
        self.module = AnalysisModule(name = "STD_ENKF" )

    def toggleKey(self, key):
        self.assertTrue( self.module.hasVar( key ))

        # check it is true
        self.assertTrue( self.module.setVar( key , True ) )
        self.assertTrue( self.module.getBool(key) )

        # set it to false
        self.assertTrue( self.module.setVar( key , False ) )
        self.assertFalse( self.module.getBool(key) )

    def test_EE_option(self):
        self.toggleKey( 'USE_EE' )

    def test_GE_option(self):
        self.toggleKey( 'USE_GE' )


    def test_scaledata_option(self):
        self.toggleKey( 'ANALYSIS_SCALE_DATA' )
예제 #2
0
 def setUp(self):
     self.rng = RandomNumberGenerator(RngAlgTypeEnum.MZRAN,
                                      RngInitModeEnum.INIT_DEFAULT)
     if sys.platform.lower() == 'darwin':
         self.libname = res.res_lib_path + "/std_enkf_debug.dylib"
     else:
         self.libname = res.res_lib_path + "/std_enkf_debug.so"
     self.module = AnalysisModule(lib_name=self.libname)
예제 #3
0
 def setUp(self):
     self.rng = RandomNumberGenerator(RngAlgTypeEnum.MZRAN,
                                      RngInitModeEnum.INIT_DEFAULT)
     if sys.platform.lower() == 'darwin':
         lib_name = "std_enkf_debug.dylib"
     else:
         lib_name = "std_enkf_debug.so"
     self.libname = find_file(self.SOURCE_ROOT, lib_name)
     if self.libname:
         self.module = AnalysisModule(lib_name=self.libname)
     else:
         pytest.skip('Debug library not found')
예제 #4
0
    def test_initX_enkf_linalg_lowrankCinv(self):
        """Test AnalysisModule.initX with EE=False and GE=False"""
        mod = AnalysisModule(name="STD_ENKF")
        A, S, R, dObs, E, D = self._n_identity_mcs()
        self.assertFalse(mod.getBool("USE_EE"))
        self.assertFalse(mod.getBool("USE_GE"))

        elt_a, elt_b = 1.222, -0.111
        vals = (elt_a, elt_b, elt_b, elt_b, elt_a, elt_b, elt_b, elt_b, elt_a)
        expected = self.construct_matrix(3, vals)

        X = mod.initX(A, S, R, dObs, E, D, self.rng)
        self._matrix_close(X, expected)
예제 #5
0
class StdEnKFDebugTest(ResTest):
    def setUp(self):
        self.rng = RandomNumberGenerator(RngAlgTypeEnum.MZRAN,
                                         RngInitModeEnum.INIT_DEFAULT)
        if sys.platform.lower() == 'darwin':
            self.libname = res.res_lib_path + "/std_enkf_debug.dylib"
        else:
            self.libname = res.res_lib_path + "/std_enkf_debug.so"
        self.module = AnalysisModule(lib_name=self.libname)

    def toggleKey(self, key):
        self.assertTrue(self.module.hasVar(key))

        # check it is true
        self.assertTrue(self.module.setVar(key, True))
        self.assertTrue(self.module.getBool(key))

        # set it to false
        self.assertTrue(self.module.setVar(key, False))
        self.assertFalse(self.module.getBool(key))

    def test_EE_option(self):
        self.toggleKey('USE_EE')

    def test_scaledata_option(self):
        self.toggleKey('ANALYSIS_SCALE_DATA')

    def test_prefix(self):
        self.assertTrue(self.module.hasVar("PREFIX"))
        self.assertTrue(self.module.setVar("PREFIX", "Path"))
예제 #6
0
class StdEnKFDebugTest(ResTest):
    def setUp(self):
        self.rng = RandomNumberGenerator(RngAlgTypeEnum.MZRAN,
                                         RngInitModeEnum.INIT_DEFAULT)
        if sys.platform.lower() == "darwin":
            lib_name = "std_enkf_debug.dylib"
        else:
            lib_name = "std_enkf_debug.so"
        self.libname = find_file(self.SOURCE_ROOT, lib_name)
        if self.libname:
            self.module = AnalysisModule(lib_name=self.libname)
        else:
            pytest.skip("Debug library not found")

    def toggleKey(self, key):
        self.assertTrue(self.module.hasVar(key))

        # check it is true
        self.assertTrue(self.module.setVar(key, True))
        self.assertTrue(self.module.getBool(key))

        # set it to false
        self.assertTrue(self.module.setVar(key, False))
        self.assertFalse(self.module.getBool(key))

    def test_EE_option(self):
        self.toggleKey("USE_EE")

    def test_scaledata_option(self):
        self.toggleKey("ANALYSIS_SCALE_DATA")

    def test_prefix(self):
        self.assertTrue(self.module.hasVar("PREFIX"))
        self.assertTrue(self.module.setVar("PREFIX", "Path"))
예제 #7
0
    def test_set_get_var(self):
        mod = AnalysisModule(name="STD_ENKF")
        with self.assertRaises(KeyError):
            mod.setVar("NO-NOT_THIS_KEY", 100)

        with self.assertRaises(KeyError):
            mod.getInt("NO-NOT_THIS_KEY")
예제 #8
0
    def test_set_get_var(self):
        mod = AnalysisModule(100, AnalysisModeEnum.ENSEMBLE_SMOOTHER)
        with self.assertRaises(KeyError):
            mod.setVar("NO-NOT_THIS_KEY", 100)

        with self.assertRaises(KeyError):
            mod.getInt("NO-NOT_THIS_KEY")
예제 #9
0
    def test_analysis_module(self):
        am = AnalysisModule(100, AnalysisModeEnum.ITERATED_ENSEMBLE_SMOOTHER)

        self.assertTrue(am.setVar("ITER", "1"))

        self.assertEqual(am.name(), "IES_ENKF")

        self.assertTrue(
            am.checkOption(AnalysisModuleOptionsEnum.ANALYSIS_ITERABLE))

        self.assertTrue(am.hasVar("ITER"))

        self.assertIsInstance(am.getDouble("ENKF_TRUNCATION"), float)

        self.assertIsInstance(am.getInt("ITER"), int)
예제 #10
0
def test_set_get_var():
    mod = AnalysisModule(100, 1)

    with pytest.raises(KeyError):
        mod.setVar("NO-NOT_THIS_KEY", 100)

    with pytest.raises(KeyError):
        mod.getInt("NO-NOT_THIS_KEY")
예제 #11
0
def test_analysis_module():
    am = AnalysisModule(100, 2)

    assert am.setVar("ITER", "1")

    assert am.name() == "IES_ENKF"

    assert am.hasVar("ITER")

    assert isinstance(am.getDouble("ENKF_TRUNCATION"), float)

    assert isinstance(am.getInt("ITER"), int)
예제 #12
0
    def test_initX_enkf_linalg_lowrank_EE(self):
        """Test AnalysisModule.initX with EE=True and GE=False"""
        mod = AnalysisModule(name="STD_ENKF")
        A, S, R, dObs, E, D = self._n_identity_mcs()
        mod.setVar('USE_EE', True)
        self.assertTrue(mod.getBool('USE_EE'))
        self.assertFalse(mod.getBool('USE_GE'))

        elt_a, elt_b = 1.33, -0.167
        vals = (elt_a, elt_b, elt_b, elt_b, elt_a, elt_b, elt_b, elt_b, elt_a)
        expected = self.construct_matrix(3, vals)
        X = mod.initX(A, S, R, dObs, E, D, self.rng)
        self._matrix_close(X, expected)
예제 #13
0
    def test_initX_subspace_inversion_algorithm(self):
        """Test AnalysisModule.initX with EE=True and GE=True, the subspace inversion algorithm"""
        mod = AnalysisModule(name="STD_ENKF")
        A, S, R, dObs, E, D = self._n_identity_mcs()

        mod.setVar("USE_EE", True)
        mod.setVar("USE_GE", True)
        self.assertTrue(mod.getBool("USE_EE"))
        self.assertTrue(mod.getBool("USE_GE"))

        elt_a, elt_b = 1.33, -0.167
        vals = (elt_a, elt_b, elt_b, elt_b, elt_a, elt_b, elt_b, elt_b, elt_a)
        expected = self.construct_matrix(3, vals)
        X = mod.initX(A, S, R, dObs, E, D, self.rng)
        self._matrix_close(X, expected)
예제 #14
0
    def test_initX_subspace_inversion_algorithm(self):
        """Test AnalysisModule.initX with EE=True and GE=True, the subspace inversion algorithm"""
        mod = AnalysisModule(name="STD_ENKF")
        A, S, R, dObs, E, D = self._n_identity_mcs()

        mod.setVar('USE_EE', True)
        mod.setVar('USE_GE', True)
        self.assertTrue(mod.getBool('USE_EE'))
        self.assertTrue(mod.getBool('USE_GE'))

        vals = (1.39, -0.111, -0.278, -0.111, 1.39, -0.278, -0.278, -0.278,
                1.56)
        expected = self.construct_matrix(3, vals)
        X = mod.initX(A, S, R, dObs, E, D, self.rng)
        self._matrix_close(X, expected)
예제 #15
0
파일: test_rml.py 프로젝트: ManInFez/ert
 def createAnalysisModule(self):
     rng = RandomNumberGenerator(RngAlgTypeEnum.MZRAN,
                                 RngInitModeEnum.INIT_DEFAULT)
     return AnalysisModule(lib_name=self.libname)
예제 #16
0
 def setUp(self):
     self.rng = RandomNumberGenerator(RngAlgTypeEnum.MZRAN,
                                      RngInitModeEnum.INIT_DEFAULT)
     self.libname = res.res_lib_path + "/std_enkf_debug.so"
     self.module = AnalysisModule(lib_name=self.libname)
예제 #17
0
 def setUp(self):
     self.rng = RandomNumberGenerator(RngAlgTypeEnum.MZRAN, RngInitModeEnum.INIT_DEFAULT)
     self.module = AnalysisModule(name = "STD_ENKF" )
예제 #18
0
    def test_create_internal(self):
        with self.assertRaises(KeyError):
            mod = AnalysisModule(name="STD_ENKFXXX")

        mod = AnalysisModule(name="STD_ENKF")
예제 #19
0
 def createAnalysisModule(self):
     return AnalysisModule(lib_name=self.libname)