示例#1
0
    def test_save_load(self):
        model = pybamm.lead_acid.LOQS()
        model.use_jacobian = True
        sim = pybamm.Simulation(model)

        sim.save("test.pickle")
        sim_load = pybamm.load_sim("test.pickle")
        self.assertEqual(sim.model.name, sim_load.model.name)

        # save after solving
        sim.solve([0, 600])
        sim.save("test.pickle")
        sim_load = pybamm.load_sim("test.pickle")
        self.assertEqual(sim.model.name, sim_load.model.name)

        # with python formats
        model.convert_to_format = None
        sim = pybamm.Simulation(model)
        sim.solve([0, 600])
        sim.save("test.pickle")
        model.convert_to_format = "python"
        sim = pybamm.Simulation(model)
        sim.solve([0, 600])
        with self.assertRaisesRegex(
                NotImplementedError,
                "Cannot save simulation if model format is python"):
            sim.save("test.pickle")
示例#2
0
    def test_save_load_dae(self):
        model = pybamm.lead_acid.LOQS({"surface form": "algebraic"})
        model.use_jacobian = True
        sim = pybamm.Simulation(model)

        # save after solving
        sim.solve([0, 600])
        sim.save("test.pickle")
        sim_load = pybamm.load_sim("test.pickle")
        self.assertEqual(sim.model.name, sim_load.model.name)

        # with python format
        model.convert_to_format = None
        sim = pybamm.Simulation(model)
        sim.solve([0, 600])
        sim.save("test.pickle")

        # with Casadi solver
        model.convert_to_format = "casadi"
        sim = pybamm.Simulation(model, solver=pybamm.CasadiSolver())
        sim.solve([0, 600])
        sim.save("test.pickle")
        sim_load = pybamm.load_sim("test.pickle")
        self.assertEqual(sim.model.name, sim_load.model.name)
示例#3
0
    def test_load_param(self):
        # Test load_sim for parameters imports
        filename = f"{uuid.uuid4()}.p"
        save_sim = f"import pybamm; model = pybamm.lithium_ion.SPM(); params = pybamm.ParameterValues(chemistry=pybamm.parameter_sets.Chen2020); sim = pybamm.Simulation(model, parameter_values=params); sim.solve([0, 3600]); sim.save('{filename}')"  # noqa
        subprocess.run([sys.executable, "-c", save_sim])

        try:
            pkl_obj = pybamm.load_sim(os.path.join(filename))
        except Exception as excep:
            os.remove(filename)
            raise excep

        self.assertEqual(
            "graphite_LGM50_electrolyte_exchange_current_density_Chen2020",
            pkl_obj.parameter_values[
                "Negative electrode exchange-current density [A.m-2]"].
            __name__,
        )
        os.remove(filename)