Skip to content

Commit

Permalink
#933 debugging
Browse files Browse the repository at this point in the history
  • Loading branch information
valentinsulzer committed Apr 14, 2020
1 parent ef04516 commit e0fce7d
Show file tree
Hide file tree
Showing 11 changed files with 67 additions and 79 deletions.
26 changes: 14 additions & 12 deletions pybamm/models/full_battery_models/lead_acid/basic_full.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,18 +276,20 @@ def __init__(self, name="Full model"):
pot = param.potential_scale

self.variables = {
"Electrolyte concentration": c_e,
"Current [A]": I,
"Negative electrode potential [V]": pot * phi_s_n,
"Electrolyte potential [V]": -param.U_n_ref + pot * phi_e,
"Positive electrode potential [V]": param.U_p_ref
- param.U_n_ref
+ pot * phi_s_p,
"Terminal voltage [V]": param.U_p_ref - param.U_n_ref + pot * voltage,
"x [m]": pybamm.standard_spatial_vars.x * param.L_x,
"x": pybamm.standard_spatial_vars.x,
"Volume-averaged velocity": v,
"X-averaged separator transverse volume-averaged velocity": div_V_s,
# "Electrolyte concentration": c_e,
# "Current [A]": I,
# "Negative electrode potential [V]": pot * phi_s_n,
# "Electrolyte potential [V]": -param.U_n_ref + pot * phi_e,
# "Positive electrode potential [V]": param.U_p_ref
# - param.U_n_ref
# + pot * phi_s_p,
# "Terminal voltage [V]": param.U_p_ref - param.U_n_ref + pot * voltage,
# "x [m]": pybamm.standard_spatial_vars.x * param.L_x,
# "x": pybamm.standard_spatial_vars.x,
# "Porosity": eps,
"Interfacial current density": j,
# "Volume-averaged velocity": v,
# "X-averaged separator transverse volume-averaged velocity": div_V_s,
}
self.events.extend(
[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,18 @@ def setUp(self):
"Negative particle surface concentration": self.c_s_n_surf,
"Positive particle surface concentration": self.c_s_p_surf,
"Current collector current density": pybamm.Scalar(1),
"Negative electrode temperature": 0,
"Positive electrode temperature": 0,
"Sum of electrolyte reaction source terms": pybamm.Scalar(1),
"Sum of interfacial current densities": pybamm.Scalar(1),
"Sum of negative electrode interfacial current densities": pybamm.Scalar(1),
"Sum of positive electrode interfacial current densities": pybamm.Scalar(1),
"Sum of x-averaged negative electrode interfacial current densities": 1,
"Sum of x-averaged positive electrode interfacial current densities": 1,
"Sum of negative electrode electrolyte reaction source terms": 1,
"Sum of positive electrode electrolyte reaction source terms": 1,
"Sum of x-averaged negative electrode electrolyte reaction source terms": 1,
"Sum of x-averaged positive electrode electrolyte reaction source terms": 1,
}

def tearDown(self):
Expand All @@ -45,11 +57,11 @@ def tearDown(self):

def test_creation(self):
param = pybamm.standard_parameters_lithium_ion
model_n = pybamm.interface.lithium_ion.ButlerVolmer(param, "Negative")
model_n = pybamm.interface.ButlerVolmer(param, "Negative", "lithium-ion main")
j_n = model_n.get_coupled_variables(self.variables)[
"Negative electrode interfacial current density"
]
model_p = pybamm.interface.lithium_ion.ButlerVolmer(param, "Positive")
model_p = pybamm.interface.ButlerVolmer(param, "Positive", "lithium-ion main")
j_p = model_p.get_coupled_variables(self.variables)[
"Positive electrode interfacial current density"
]
Expand All @@ -64,11 +76,11 @@ def test_creation(self):

def test_set_parameters(self):
param = pybamm.standard_parameters_lithium_ion
model_n = pybamm.interface.lithium_ion.ButlerVolmer(param, "Negative")
model_n = pybamm.interface.ButlerVolmer(param, "Negative", "lithium-ion main")
j_n = model_n.get_coupled_variables(self.variables)[
"Negative electrode interfacial current density"
]
model_p = pybamm.interface.lithium_ion.ButlerVolmer(param, "Positive")
model_p = pybamm.interface.ButlerVolmer(param, "Positive", "lithium-ion main")
j_p = model_p.get_coupled_variables(self.variables)[
"Positive electrode interfacial current density"
]
Expand All @@ -86,11 +98,11 @@ def test_set_parameters(self):

def test_discretisation(self):
param = pybamm.standard_parameters_lithium_ion
model_n = pybamm.interface.lithium_ion.ButlerVolmer(param, "Negative")
model_n = pybamm.interface.ButlerVolmer(param, "Negative", "lithium-ion main")
j_n = model_n.get_coupled_variables(self.variables)[
"Negative electrode interfacial current density"
]
model_p = pybamm.interface.lithium_ion.ButlerVolmer(param, "Positive")
model_p = pybamm.interface.ButlerVolmer(param, "Positive", "lithium-ion main")
j_p = model_p.get_coupled_variables(self.variables)[
"Positive electrode interfacial current density"
]
Expand Down Expand Up @@ -136,8 +148,8 @@ def test_diff_c_e_lead_acid(self):

# With intercalation
param = pybamm.standard_parameters_lead_acid
model_n = pybamm.interface.lead_acid.ButlerVolmer(param, "Negative")
model_p = pybamm.interface.lead_acid.ButlerVolmer(param, "Positive")
model_n = pybamm.interface.ButlerVolmer(param, "Negative", "lead-acid main")
model_p = pybamm.interface.ButlerVolmer(param, "Positive", "lead-acid main")
parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values

def j_n(c_e):
Expand Down Expand Up @@ -181,8 +193,8 @@ def test_diff_delta_phi_e_lead_acid(self):

# With intercalation
param = pybamm.standard_parameters_lead_acid
model_n = pybamm.interface.lead_acid.ButlerVolmer(param, "Negative")
model_p = pybamm.interface.lead_acid.ButlerVolmer(param, "Positive")
model_n = pybamm.interface.ButlerVolmer(param, "Negative", "lead-acid main")
model_p = pybamm.interface.ButlerVolmer(param, "Positive", "lead-acid main")
parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values

def j_n(delta_phi):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,19 @@ def tearDown(self):
def test_creation_main_reaction(self):
# With intercalation
param = pybamm.standard_parameters_lead_acid
model_n = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Negative")
model_n = pybamm.interface.BaseInterface(param, "Negative", "lead-acid main")
j0_n = model_n._get_exchange_current_density(self.variables)
model_p = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Positive")
model_p = pybamm.interface.BaseInterface(param, "Positive", "lead-acid main")
j0_p = model_p._get_exchange_current_density(self.variables)
self.assertEqual(j0_n.domain, ["negative electrode"])
self.assertEqual(j0_p.domain, ["positive electrode"])

def test_set_parameters_main_reaction(self):
# With intercalation
param = pybamm.standard_parameters_lead_acid
model_n = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Negative")
model_n = pybamm.interface.BaseInterface(param, "Negative", "lead-acid main")
j0_n = model_n._get_exchange_current_density(self.variables)
model_p = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Positive")
model_p = pybamm.interface.BaseInterface(param, "Positive", "lead-acid main")
j0_p = model_p._get_exchange_current_density(self.variables)
# Process parameters
parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values
Expand All @@ -52,9 +52,9 @@ def test_set_parameters_main_reaction(self):
def test_discretisation_main_reaction(self):
# With intercalation
param = pybamm.standard_parameters_lead_acid
model_n = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Negative")
model_n = pybamm.interface.BaseInterface(param, "Negative", "lead-acid main")
j0_n = model_n._get_exchange_current_density(self.variables)
model_p = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Positive")
model_p = pybamm.interface.BaseInterface(param, "Positive", "lead-acid main")
j0_p = model_p._get_exchange_current_density(self.variables)
# Process parameters and discretise
parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values
Expand All @@ -79,8 +79,8 @@ def test_discretisation_main_reaction(self):
def test_diff_main_reaction(self):
# With intercalation
param = pybamm.standard_parameters_lead_acid
model_n = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Negative")
model_p = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Positive")
model_n = pybamm.interface.BaseInterface(param, "Negative", "lead-acid main")
model_p = pybamm.interface.BaseInterface(param, "Positive", "lead-acid main")
parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values

def j0_n(c_e):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ def setUp(self):
"Positive electrolyte concentration": c_e_p,
"Negative particle surface concentration": self.c_s_n_surf,
"Positive particle surface concentration": self.c_s_p_surf,
"Negative electrode temperature": 0,
"Positive electrode temperature": 0,
}

def tearDown(self):
Expand All @@ -35,26 +37,18 @@ def tearDown(self):

def test_creation_lithium_ion(self):
param = pybamm.standard_parameters_lithium_ion
model_n = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
param, "Negative"
)
model_n = pybamm.interface.BaseInterface(param, "Negative", "lithium-ion main")
j0_n = model_n._get_exchange_current_density(self.variables)
model_p = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
param, "Positive"
)
model_p = pybamm.interface.BaseInterface(param, "Positive", "lithium-ion main")
j0_p = model_p._get_exchange_current_density(self.variables)
self.assertEqual(j0_n.domain, ["negative electrode"])
self.assertEqual(j0_p.domain, ["positive electrode"])

def test_set_parameters_lithium_ion(self):
param = pybamm.standard_parameters_lithium_ion
model_n = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
param, "Negative"
)
model_n = pybamm.interface.BaseInterface(param, "Negative", "lithium-ion main")
j0_n = model_n._get_exchange_current_density(self.variables)
model_p = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
param, "Positive"
)
model_p = pybamm.interface.BaseInterface(param, "Positive", "lithium-ion main")
j0_p = model_p._get_exchange_current_density(self.variables)
# Process parameters
parameter_values = pybamm.lithium_ion.BaseModel().default_parameter_values
Expand All @@ -68,13 +62,9 @@ def test_set_parameters_lithium_ion(self):

def test_discretisation_lithium_ion(self):
param = pybamm.standard_parameters_lithium_ion
model_n = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
param, "Negative"
)
model_n = pybamm.interface.BaseInterface(param, "Negative", "lithium-ion main")
j0_n = model_n._get_exchange_current_density(self.variables)
model_p = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
param, "Positive"
)
model_p = pybamm.interface.BaseInterface(param, "Positive", "lithium-ion main")
j0_p = model_p._get_exchange_current_density(self.variables)
# Process parameters and discretise
parameter_values = pybamm.lithium_ion.BaseModel().default_parameter_values
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,7 @@ def test_public_functions(self):
variables = {
"Electrolyte tortuosity": a,
"Electrolyte concentration": a,
"Interfacial current density": pybamm.FullBroadcast(
a,
["negative electrode", "separator", "positive electrode"],
"current collector",
),
"Oxygen interfacial current density": pybamm.FullBroadcast(
"Sum of interfacial current densities": pybamm.FullBroadcast(
a,
["negative electrode", "separator", "positive electrode"],
"current collector",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ def test_public_functions(self):
"Negative electrolyte tortuosity": a_n,
"Negative electrode tortuosity": a_n,
"Negative electrolyte concentration": a_n,
"Negative electrode interfacial current density": a_n,
"Negative electrode oxygen interfacial current density": a_n,
"Sum of negative electrode interfacial current densities": a_n,
"Electrolyte potential": pybamm.Concatenation(a_n, a_s, a_p),
"Negative electrode temperature": a_n,
"Separator temperature": a_s,
Expand Down Expand Up @@ -56,8 +55,7 @@ def test_public_functions(self):
"Positive electrolyte tortuosity": a_p,
"Positive electrode tortuosity": a_p,
"Positive electrolyte concentration": a_p,
"Positive electrode interfacial current density": a_p,
"Positive electrode oxygen interfacial current density": a_p,
"Sum of positive electrode interfacial current densities": a_p,
"Positive electrode temperature": a_p,
"Negative electrode potential": a_n,
"Positive electrode potential": a_p,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@ def test_public_functions(self):
"Current collector current density": a,
"Negative electrode porosity": a_n,
"Negative electrolyte concentration": a_n,
"Negative electrode interfacial current density": a_n,
"X-averaged negative electrode interfacial current density": a,
"X-averaged negative electrode oxygen interfacial current density": a,
"Sum of x-averaged negative electrode interfacial current densities": a_n,
"X-averaged negative electrode total interfacial current density": a,
}
spf = pybamm.electrolyte_conductivity.surface_potential_form
Expand All @@ -39,8 +37,7 @@ def test_public_functions(self):
"Separator electrolyte current density": a_s,
"Positive electrode porosity": a_p,
"Positive electrolyte concentration": a_p,
"X-averaged positive electrode interfacial current density": a,
"X-averaged positive electrode oxygen interfacial current density": a,
"Sum of x-averaged positive electrode interfacial current densities": a,
"X-averaged positive electrode total interfacial current density": a,
}
submodel = spf.LeadingOrderAlgebraic(param, "Positive")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,9 @@ def test_public_functions(self):
"Volume-averaged velocity": a,
"Electrolyte concentration": a,
"Electrolyte current density": full,
"Interfacial current density": full,
"Oxygen interfacial current density": full,
"Cell temperature": pybamm.FullBroadcast(
a,
["negative electrode", "separator", "positive electrode"],
"current collector",
),
"Transverse volume-averaged acceleration": pybamm.FullBroadcast(
a,
["negative electrode", "separator", "positive electrode"],
"current collector",
),
"Sum of electrolyte reaction source terms": full,
"Cell temperature": full,
"Transverse volume-averaged acceleration": full,
}
submodel = pybamm.electrolyte_diffusion.Full(param)
std_tests = tests.StandardSubModelTests(submodel, variables)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ def test_public_functions(self):
"X-averaged negative electrode porosity change": a,
"X-averaged separator porosity change": a,
"X-averaged positive electrode porosity change": a,
"X-averaged negative electrode interfacial current density": a,
"X-averaged positive electrode interfacial current density": a,
"X-averaged negative electrode oxygen interfacial current density": a,
"X-averaged positive electrode oxygen interfacial current density": a,
"Sum of x-averaged negative electrode interfacial current densities": a,
"Sum of x-averaged positive electrode interfacial current densities": a,
"Sum of x-averaged negative electrode electrolyte reaction source terms": a,
"Sum of x-averaged positive electrode electrolyte reaction source terms": a,
"X-averaged separator transverse volume-averaged acceleration": a,
}
submodel = pybamm.electrolyte_diffusion.LeadingOrder(param)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ def test_public_functions(self):
"Negative electrolyte concentration": a,
"Negative particle surface concentration": a,
"Negative electrode temperature": a,
"X-averaged negative electrode interfacial current density": a,
}
submodel = pybamm.interface.ButlerVolmer(param, "Negative", "lithium-ion main")
std_tests = tests.StandardSubModelTests(submodel, variables)
Expand All @@ -38,6 +39,8 @@ def test_public_functions(self):
"Negative electrode interfacial current density": a_n,
"Negative electrode exchange current density": a_n,
"Positive electrode temperature": a_p,
"X-averaged negative electrode interfacial current density": a_n,
"Sum of electrolyte reaction source terms": a,
}
submodel = pybamm.interface.ButlerVolmer(param, "Positive", "lithium-ion main")
std_tests = tests.StandardSubModelTests(submodel, variables)
Expand Down

0 comments on commit e0fce7d

Please sign in to comment.