Skip to content

Commit

Permalink
#692 simulation runs
Browse files Browse the repository at this point in the history
  • Loading branch information
Scottmar93 committed Nov 9, 2019
1 parent 99aa4ea commit a283442
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 4 deletions.
5 changes: 3 additions & 2 deletions pybamm/solvers/base_solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ def step(self, model, dt, npts=2, log=True, external_variables=None):
set_up_time = timer.time()

# create a y_pad vector of the correct size:
self.y_pad = np.zeros((model.external_start))
self.y_pad = np.zeros((model.y_length - model.external_start, 1))

else:
set_up_time = None
Expand Down Expand Up @@ -272,8 +272,9 @@ def get_termination_reason(self, solution, events):
# Get final event value
final_event_values = {}
for name, event in events.items():
y_event = self.add_external(solution.y_event)
final_event_values[name] = abs(
event.evaluate(solution.t_event, solution.y_event)
event.evaluate(solution.t_event, y_event)
)
termination_event = min(final_event_values, key=final_event_values.get)
# Add the event to the solution object
Expand Down
8 changes: 7 additions & 1 deletion pybamm/solvers/ode_solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ def compute_solution(self, model, t_eval):
mass_matrix=model.mass_matrix.entries,
jacobian=self.jacobian,
)

solve_time = timer.time() - solve_start_time

# Identify the event that caused termination
Expand Down Expand Up @@ -121,14 +122,15 @@ def set_up(self, model):
# Create function to evaluate rhs
def dydt(t, y):
pybamm.logger.debug("Evaluating RHS for {} at t={}".format(model.name, t))
y = self.add_external(y)
y = y[:, np.newaxis]
y = self.add_external(y)
dy = concatenated_rhs.evaluate(t, y, known_evals={})[0]
return dy[:, 0]

# Create event-dependent function to evaluate events
def event_fun(event):
def eval_event(t, y):
y = y[:, np.newaxis]
y = self.add_external(y)
return event.evaluate(t, y)

Expand All @@ -140,6 +142,7 @@ def eval_event(t, y):
if jac_rhs is not None:

def jacobian(t, y):
y = y[:, np.newaxis]
y = self.add_external(y)
return jac_rhs.evaluate(t, y, known_evals={})[0]

Expand Down Expand Up @@ -196,6 +199,7 @@ def set_up_casadi(self, model):

def dydt(t, y):
pybamm.logger.debug("Evaluating RHS for {} at t={}".format(model.name, t))
y = y[:, np.newaxis]
y = self.add_external(y)
dy = concatenated_rhs_fn(t, y).full()
return dy[:, 0]
Expand All @@ -205,6 +209,7 @@ def event_fun(event):
casadi_event_fn = casadi.Function("event", [t_casadi, y_casadi], [event])

def eval_event(t, y):
y = y[:, np.newaxis]
y = self.add_external(y)
return casadi_event_fn(t, y)

Expand All @@ -221,6 +226,7 @@ def eval_event(t, y):
)

def jacobian(t, y):
y = y[:, np.newaxis]
y = self.add_external(y)
return casadi_jac_fn(t, y)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ def test_external_temperature(self):

model = pybamm.lithium_ion.SPMe(model_options)

# model.convert_to_format = False

neg_pts = 5
sep_pts = 3
pos_pts = 5
Expand All @@ -35,7 +37,7 @@ def test_external_temperature(self):

t_eval = np.linspace(0, 0.17, 100)

for i, t in enumerate(t_eval):
for i in np.arange(1, len(t_eval) - 1):
dt = t_eval[i + 1] - t_eval[i]
T = np.zeros((tot_pts, 1))
external_variables = {"Cell temperature": T}
Expand Down

0 comments on commit a283442

Please sign in to comment.