Example #1
0
    def _setup_sim(self, sim_id, controls, file_system):
        def _set_ext_param(ext_param, key, assignment):
            if isinstance(assignment, dict):  # handle suffixes
                suffixes = ext_param.config[key]
                if len(assignment) != len(suffixes):
                    raise KeyError(
                        "Key {} is missing values for these suffixes: {}".
                        format(
                            key,
                            set(suffixes).difference(set(assignment.keys()))))
                for suffix, value in assignment.items():
                    ext_node[key, suffix] = value
            else:  # assume assignment is a single numerical value
                ext_node[key] = assignment

        node_id = NodeId(0, sim_id)
        if set(controls.keys()) != self.control_keys:
            err_msg = "Mismatch between initialized and provided control names."
            raise KeyError(err_msg)

        for control_name, control in controls.items():
            ens_config = self.res_config.ensemble_config
            node = EnkfNode(ens_config[control_name])
            ext_node = node.as_ext_param()
            if len(ext_node) != len(control.keys()):
                raise KeyError(("Expected {} variables for control {}, "
                                "received {}.").format(len(ext_node),
                                                       control_name,
                                                       len(control.keys())))
            for var_name, var_setting in control.items():
                _set_ext_param(ext_node, var_name, var_setting)
            node.save(file_system, node_id)
Example #2
0
    def test_config(self):
        keys = ["Key1", "Key2", "Key3"]
        with TestAreaContext("enkf_node"):
            config = EnkfConfigNode.create_ext_param("key", keys)
            node = EnkfNode(config)
            ext_node = node.as_ext_param()
            ext_config = config.getModelConfig()

            ext_node.set_vector([1, 2, 3])
            node.ecl_write("path")
            d = json.load(open("path/key.json"))
            self.assertEqual(d["Key1"], 1)
            self.assertEqual(d["Key3"], 3)