Skip to content

Commit

Permalink
#846 windows test and skipping non-time discontinuities
Browse files Browse the repository at this point in the history
  • Loading branch information
valentinsulzer committed Feb 25, 2020
1 parent c5542a9 commit da91cd9
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 14 deletions.
19 changes: 14 additions & 5 deletions pybamm/solvers/base_solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,22 +238,31 @@ def report(string):
model.concatenated_algebraic.pre_order(),
):
if isinstance(symbol, pybamm.Heaviside):
found_t = False
# Dimensionless
if symbol.right.id == pybamm.t.id:
expr = symbol.left
found_t = True
elif symbol.left.id == pybamm.t.id:
expr = symbol.right
found_t = True
# Dimensional
elif symbol.right.id == (pybamm.t * model.timescale).id:
expr = symbol.left.new_copy() / symbol.right.right.new_copy()
found_t = True
elif symbol.left.id == (pybamm.t * model.timescale).id:
expr = symbol.right.new_copy() / symbol.left.right.new_copy()

model.events.append(
pybamm.Event(
str(symbol), expr.new_copy(), pybamm.EventType.DISCONTINUITY
found_t = True

# Update the events if the heaviside function depended on t
if found_t:
model.events.append(
pybamm.Event(
str(symbol),
expr.new_copy(),
pybamm.EventType.DISCONTINUITY,
)
)
)

# Process rhs, algebraic and event expressions
rhs, rhs_eval, jac_rhs = process(model.concatenated_rhs, "RHS")
Expand Down
10 changes: 8 additions & 2 deletions tests/unit/test_parameters/test_parameter_values.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,14 @@ def test_init(self):

# from file
param = pybamm.ParameterValues(
values="input/parameters/lithium-ion/cathodes/lico2_Marquis2019/"
+ "parameters.csv"
values=os.path.join(
"input",
"parameters",
"lithium-ion",
"cathodes",
"lico2_Marquis2019",
"parameters.csv",
)
)
self.assertEqual(param["Reference temperature [K]"], 298.15)

Expand Down
12 changes: 5 additions & 7 deletions tests/unit/test_solvers/test_scikits_solvers.py
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,9 @@ def nonsmooth_mult(t):

rate = pybamm.Function(nonsmooth_rate, pybamm.t)
mult = pybamm.Function(nonsmooth_mult, pybamm.t)
model.rhs = {var1: rate * var1}
# put in an extra heaviside with no time dependence, this should be ignored by
# the solver i.e. no extra discontinuities added
model.rhs = {var1: rate * var1 + (var1 < 0)}
model.algebraic = {var2: mult * var1 - var2}
model.initial_conditions = {var1: 1, var2: 2}
model.events = [
Expand Down Expand Up @@ -630,19 +632,15 @@ def nonsmooth_rate(t):
model2.rhs = {var1: (0.1 * (pybamm.t < discontinuity) + 0.1) * var1}
model2.algebraic = {var2: var2}
model2.initial_conditions = {var1: 1, var2: 0}
model2.events = [
pybamm.Event("var1 = 1.5", pybamm.min(var1 - 1.5)),
]
model2.events = [pybamm.Event("var1 = 1.5", pybamm.min(var1 - 1.5))]

# third model implicitly adds a discontinuity event via another heaviside
# function
model3 = pybamm.BaseModel()
model3.rhs = {var1: (-0.1 * (discontinuity < pybamm.t) + 0.2) * var1}
model3.algebraic = {var2: var2}
model3.initial_conditions = {var1: 1, var2: 0}
model3.events = [
pybamm.Event("var1 = 1.5", pybamm.min(var1 - 1.5)),
]
model3.events = [pybamm.Event("var1 = 1.5", pybamm.min(var1 - 1.5))]

for model in [model1, model2, model3]:

Expand Down

0 comments on commit da91cd9

Please sign in to comment.