Unable to solve the model after Discretisation #3525
Replies: 2 comments 1 reply
-
Can you share a minimum working example to reproduce this error? |
Beta Was this translation helpful? Give feedback.
-
import numpy as np Define the parametersQ = pybamm.Variable("Discharge capacity [A.h]") D = pybamm.Parameter("Diffusion coefficient [m2.s-1]") F = pybamm.Parameter("Faraday constant [C.mol-1]") a = pybamm.Parameter("Surface area per unit volume [m-1]") #j = pybamm.InputParameter("Interfacial current density [A.m-2]") sigma_p = pybamm.Parameter("Positive electrode conductivity [S.m-1]") phi_n = pybamm.Variable("Negative electrode potential [V]",domain ="negative electrode") phi_e_n = pybamm.Variable("Negative electrolyte potential [V]", domain ="negative electrode") phi_e = pybamm.concatenation(phi_e_s, phi_e_p) c_surf_p = pybamm.surf(c_s_p) # Positive surface concentration input_n = {"Negative particle surface concentration [mol.m-3]": c_surf_n} j0_n = pybamm.FunctionParameter("Negative electrode exchange-current density [A.m-2]",input_n) U_n = pybamm.FunctionParameter("Negative electrode OCP [V]", input_n) j_n = 2 * j0_n * pybamm.sinh((F / 2 / R / T) * (phi_n - phi_e_n - U_n)) model = pybamm.BaseModel() charge conservation equationsi_n = -sigma_n * pybamm.grad(phi_n) #Govering Equations - Negative electrode charge conservation equationsi_p = -sigma_p * pybamm.grad(phi_p) #Govering Equations - Positive electrode model.rhs = {c_s_n: dcndt,c_s_p: dcpdt} lbc_n = pybamm.Scalar(0) #Boundary Conditions - Positive electrode lbc_p = pybamm.Scalar(0) model.boundary_conditions = {phi_n: {"left": (pybamm.Scalar(0), "Neumann"), "right": (-I_app / a / sigma_n, "Neumann")}, phi_e: {"left": (pybamm.Scalar(0), "Dirichlet"), "right": (pybamm.Scalar(0), "Neumann")}, phi_p: {"left": (pybamm.Scalar(0), "Neumann"), "right": (I_app / a / sigma_p, "Neumann")}, c_s_n: {"left": (lbc_n, "Neumann"), "right": (rbc_n, "Neumann")}, input_p = {"Initial concentration [mol.m-3]": c0_p} input_n = {"Initial concentration [mol.m-3]": c0_n} model.initial_conditions = { phi_n: U_init_n, phi_p: U_init_p, c_s_n: c0_n, c_s_p: c0_p} model.variables = { from pybamm import tanh both functions will depend on the maximum concentrationc_max_p = pybamm.Parameter("Maximum concentration in positive electrode [mol.m-3]") def exchange_current_density_negative(c_surf_n):
def exchange_current_density_positive(c_surf_p):
def open_circuit_potential_negative(c_surf_n):
def open_circuit_potential_positive(c_surf_p):
param = pybamm.ParameterValues(
}) r_n = pybamm.SpatialVariable("r_n", domain=["negative particle"], auxiliary_domains={ geometry = {
} submesh_types = { disc = pybamm.Discretisation(mesh,spatial_methods) |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I am trying to solve single particle model using PyBamm and when I simulate the model, I get the following error message. Any idea on how to solve the issue.
KeyError Traceback (most recent call last)
Cell In [189], line 1
----> 1 disc.process_model(model)
File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\pybamm\discretisations\discretisation.py:206, in Discretisation.process_model(self, model, inplace, check_model, remove_independent_variables_from_rhs)
203 model_disc.bcs = self.bcs
205 pybamm.logger.verbose("Discretise initial conditions for {}".format(model.name))
--> 206 ics, concat_ics = self.process_initial_conditions(model)
207 model_disc.initial_conditions = ics
208 model_disc.concatenated_initial_conditions = concat_ics
File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\pybamm\discretisations\discretisation.py:425, in Discretisation.process_initial_conditions(self, model)
419 processed_initial_conditions = self.process_dict(
420 model.initial_conditions, ics=True
421 )
423 # Concatenate initial conditions into a single vector
424 # check that all initial conditions are set
--> 425 processed_concatenated_initial_conditions = self._concatenate_in_order(
426 processed_initial_conditions, check_complete=True
427 )
429 return processed_initial_conditions, processed_concatenated_initial_conditions
File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\pybamm\discretisations\discretisation.py:984, in Discretisation._concatenate_in_order(self, var_eqn_dict, check_complete, sparse)
982 else:
983 unpacked_variables.append(symbol)
--> 984 slices.append(self.y_slices[symbol][0])
986 if check_complete:
987 # Check keys from the given var_eqn_dict against self.y_slices
988 unpacked_variables_set = set(unpacked_variables)
KeyError: Variable(-0x7786521cf4ca09d6, Negative electrode potential [V], children=[], domains={'primary': ['negative electrode']})
Beta Was this translation helpful? Give feedback.
All reactions