Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add BatchStudy class #1455

Merged
merged 14 commits into from
Apr 9, 2021
51 changes: 51 additions & 0 deletions pybamm/batch_study.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#
# BatchStudy class
#
import pickle
import pybamm
from itertools import product


class BatchStudy:
"""
comparison class
"""

def __init__(
self, models, solvers=None, experiments=None, repeats=1, permutations=False
):

self.models = models
self.solvers = solvers
self.experiments = experiments
self.repeats = repeats
self.permutations = permutations

def solve(self):
self.sims = []
for num in range(self.repeats):
if self.permutations is False:
for model, solver, experiment in zip(
self.models.values(),
self.solvers.values(),
self.experiments.values(),
):
sim = pybamm.Simulation(model, solver=solver, experiment=experiment)
sim.solve([0, 3600])
self.sims.append(sim)
else:
for values in product(
self.models.values(),
self.solvers.values(),
self.experiments.values(),
):
model, solver, experiment = values
sim = pybamm.Simulation(model, solver=solver, experiment=experiment)
sim.solve([0, 3600])
self.sims.append(sim)

def plot(self, output_variables=None, quick_plot_vars=None, **kwargs):
pybamm.dynamic_plot(self.sims)

def save(self, filename): #TODO
return pybamm.Simulation().save(filename)