def test_default_target_case_name_format_mode(self): config_file = self.createTestPath('local/poly_example/poly.ert') with ErtTestContext('test_default_target_case_name_format_mode', config_file) as work_area: ert = work_area.getErt() notifier = ErtCliNotifier(ert, config_file) ERT.adapt(notifier) args = Namespace(target_case=None) res = cli._target_case_name(args, format_mode=True) self.assertEqual("default_%d", res)
def test_setup_ensemble_experiment(self): config_file = self.createTestPath('local/poly_example/poly.ert') with ErtTestContext('test_single_test_run', config_file) as work_area: ert = work_area.getErt() notifier = ErtCliNotifier(ert, config_file) ERT.adapt(notifier) model, argument = cli._setup_single_test_run() self.assertTrue(isinstance(model, EnsembleExperiment)) self.assertEquals(1, len(argument.keys())) self.assertTrue("active_realizations" in argument)
def test_custom_target_case_name(self): config_file = self.createTestPath('local/poly_example/poly.ert') with ErtTestContext('test_custom_target_case_name', config_file) as work_area: ert = work_area.getErt() notifier = ErtCliNotifier(ert, config_file) ERT.adapt(notifier) custom_name = "test" args = Namespace(target_case=custom_name) res = cli._target_case_name(args) self.assertEqual(custom_name, res)
def test_custom_realizations(self): config_file = self.createTestPath('local/poly_example/poly.ert') with ErtTestContext('test_custom_realizations', config_file) as work_area: ert = work_area.getErt() notifier = ErtCliNotifier(ert, config_file) ERT.adapt(notifier) args = Namespace(realizations="0-4,7,8") res = cli._realizations(args) ensemble_size = ERT.ert.getEnsembleSize() mask = BoolVector(default_value=False, initial_size=ensemble_size) mask.updateActiveMask("0-4,7,8") self.assertEqual(mask, res)
def test_setup_ensemble_smoother(self): config_file = self.createTestPath('local/poly_example/poly.ert') with ErtTestContext('test_single_test_run', config_file) as work_area: ert = work_area.getErt() notifier = ErtCliNotifier(ert, config_file) ERT.adapt(notifier) args = Namespace(realizations="0-4,7,8", target_case="test_case") model, argument = cli._setup_ensemble_smoother(args) self.assertTrue(isinstance(model, EnsembleSmoother)) self.assertEquals(3, len(argument.keys())) self.assertTrue("active_realizations" in argument) self.assertTrue("target_case" in argument) self.assertTrue("analysis_module" in argument)
def test_setup_multiple_data_assimilation(self): config_file = self.createTestPath('local/poly_example/poly.ert') with ErtTestContext('test_single_test_run', config_file) as work_area: ert = work_area.getErt() notifier = ErtCliNotifier(ert, config_file) ERT.adapt(notifier) args = Namespace(realizations="0-4,7,8", weights="6,4,2", target_case="test_case") model, argument = cli._setup_multiple_data_assimilation(args) self.assertTrue(isinstance(model, MultipleDataAssimilation)) self.assertEquals(4, len(argument.keys())) self.assertTrue("active_realizations" in argument) self.assertTrue("target_case" in argument) self.assertTrue("analysis_module" in argument) self.assertTrue("weights" in argument)
def run_cli(args): res_config = ResConfig(args.config) os.chdir(res_config.config_path) ert = EnKFMain(res_config, strict=True, verbose=args.verbose) notifier = ErtCliNotifier(ert, args.config) ERT.adapt(notifier) # Setup model if args.mode == 'test_run': model, argument = _setup_single_test_run() elif args.mode == 'ensemble_experiment': model, argument = _setup_ensemble_experiment(args) elif args.mode == 'ensemble_smoother': model, argument = _setup_ensemble_smoother(args) elif args.mode == 'es_mda': model, argument = _setup_multiple_data_assimilation(args) else: raise NotImplementedError("Run type not supported {}".format( args.mode)) model.runSimulations(argument)