Source code for pybamm.parameters.thermal_parameters

#
# Standard thermal parameters
#
import pybamm


[docs]class ThermalParameters: """ Standard thermal parameters Layout: 1. Dimensional Parameters 2. Dimensional Functions 3. Dimensionless Parameters 4. Dimensionless Functions """ def __init__(self): # Get geometric parameters self.geo = pybamm.geometric_parameters # Set parameters self._set_dimensional_parameters() self._set_dimensionless_parameters() def _set_dimensional_parameters(self): """Defines the dimensional parameters""" # Reference temperature self.T_ref = pybamm.Parameter("Reference temperature [K]") # Cooling coefficient self.h_cn_dim = pybamm.Parameter( "Negative current collector surface heat transfer coefficient [W.m-2.K-1]" ) self.h_cp_dim = pybamm.Parameter( "Positive current collector surface heat transfer coefficient [W.m-2.K-1]" ) self.h_tab_n_dim = pybamm.Parameter( "Negative tab heat transfer coefficient [W.m-2.K-1]" ) self.h_tab_p_dim = pybamm.Parameter( "Positive tab heat transfer coefficient [W.m-2.K-1]" ) self.h_edge_dim = pybamm.Parameter("Edge heat transfer coefficient [W.m-2.K-1]") self.h_total_dim = pybamm.Parameter( "Total heat transfer coefficient [W.m-2.K-1]" ) # Typical temperature rise self.Delta_T = pybamm.Scalar(1) # Initial temperature self.T_init_dim = pybamm.Parameter("Initial temperature [K]") # Planar (y,z) thermal diffusion timescale self.tau_th_yz = ( self.rho_eff_dim(self.T_ref) * (self.geo.L_z ** 2) / self.lambda_eff_dim(self.T_ref) ) def T_amb_dim(self, t): """Dimensional ambient temperature""" return pybamm.FunctionParameter("Ambient temperature [K]", {"Times [s]": t}) def rho_cn_dim(self, T): """Negative current collector density [kg.m-3]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter( "Negative current collector density [kg.m-3]", inputs ) def rho_n_dim(self, T): """Negative electrode density [kg.m-3]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter("Negative electrode density [kg.m-3]", inputs) def rho_s_dim(self, T): """Separator density [kg.m-3]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter("Separator density [kg.m-3]", inputs) def rho_p_dim(self, T): """Positive electrode density [kg.m-3]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter("Positive electrode density [kg.m-3]", inputs) def rho_cp_dim(self, T): """Positive current collector density [kg.m-3]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter( "Positive current collector density [kg.m-3]", inputs ) def rho_eff_dim(self, T): """Effective volumetric heat capacity [J.m-3.K-1]""" return ( self.rho_cn_dim(T) * self.c_p_cn_dim(T) * self.geo.L_cn + self.rho_n_dim(T) * self.c_p_n_dim(T) * self.geo.L_n + self.rho_s_dim(T) * self.c_p_s_dim(T) * self.geo.L_s + self.rho_p_dim(T) * self.c_p_p_dim(T) * self.geo.L_p + self.rho_cp_dim(T) * self.c_p_cp_dim(T) * self.geo.L_cp ) / self.geo.L def c_p_cn_dim(self, T): """Negative current collector specific heat capacity [J.kg-1.K-1]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter( "Negative current collector specific heat capacity [J.kg-1.K-1]", inputs ) def c_p_n_dim(self, T): """Negative electrode specific heat capacity [J.kg-1.K-1]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter( "Negative electrode specific heat capacity [J.kg-1.K-1]", inputs ) def c_p_s_dim(self, T): """Separator specific heat capacity [J.kg-1.K-1]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter( "Separator specific heat capacity [J.kg-1.K-1]", inputs ) def c_p_p_dim(self, T): """Positive electrode specific heat capacity [J.kg-1.K-1]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter( "Positive electrode specific heat capacity [J.kg-1.K-1]", inputs ) def c_p_cp_dim(self, T): """Positive current collector specific heat capacity [J.kg-1.K-1]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter( "Positive current collector specific heat capacity [J.kg-1.K-1]", inputs ) def lambda_cn_dim(self, T): """Negative current collector thermal conductivity [W.m-1.K-1]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter( "Negative current collector thermal conductivity [W.m-1.K-1]", inputs ) def lambda_n_dim(self, T): """Negative electrode thermal conductivity [W.m-1.K-1]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter( "Negative electrode thermal conductivity [W.m-1.K-1]", inputs ) def lambda_s_dim(self, T): """Separator thermal conductivity [W.m-1.K-1]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter( "Separator thermal conductivity [W.m-1.K-1]", inputs ) def lambda_p_dim(self, T): """Positive electrode thermal conductivity [W.m-1.K-1]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter( "Positive electrode thermal conductivity [W.m-1.K-1]", inputs ) def lambda_cp_dim(self, T): """Positive current collector thermal conductivity [W.m-1.K-1]""" inputs = { "Temperature [K]": T, } return pybamm.FunctionParameter( "Positive current collector thermal conductivity [W.m-1.K-1]", inputs ) def lambda_eff_dim(self, T): """Effective thermal conductivity [W.m-1.K-1]""" return ( self.lambda_cn_dim(T) * self.geo.L_cn + self.lambda_n_dim(T) * self.geo.L_n + self.lambda_s_dim(T) * self.geo.L_s + self.lambda_p_dim(T) * self.geo.L_p + self.lambda_cp_dim(T) * self.geo.L_cp ) / self.geo.L def _set_dimensionless_parameters(self): """Defines the dimensionless parameters""" # Relative temperature rise self.Theta = self.Delta_T / self.T_ref # Cooling coefficient self.h_cn = self.h_cn_dim * self.geo.L_x / self.lambda_eff_dim(self.T_ref) self.h_cp = self.h_cp_dim * self.geo.L_x / self.lambda_eff_dim(self.T_ref) self.h_tab_n = self.h_tab_n_dim * self.geo.L_x / self.lambda_eff_dim(self.T_ref) self.h_tab_p = self.h_tab_p_dim * self.geo.L_x / self.lambda_eff_dim(self.T_ref) self.h_edge = self.h_edge_dim * self.geo.L_x / self.lambda_eff_dim(self.T_ref) self.h_total = self.h_total_dim * self.geo.L_x / self.lambda_eff_dim(self.T_ref) # Initial temperature self.T_init = (self.T_init_dim - self.T_ref) / self.Delta_T def T_amb(self, t): """Dimensionless ambient temperature""" return (self.T_amb_dim(t) - self.T_ref) / self.Delta_T def rho_cn(self, T): """Dimensionless negative current collector density""" T_dim = self.Delta_T * T + self.T_ref return ( self.rho_cn_dim(T_dim) * self.c_p_cn_dim(T_dim) / self.rho_eff_dim(self.T_ref) ) def rho_n(self, T): """Dimensionless negative electrode density""" T_dim = self.Delta_T * T + self.T_ref return ( self.rho_n_dim(T_dim) * self.c_p_n_dim(T_dim) / self.rho_eff_dim(self.T_ref) ) def rho_s(self, T): """Dimensionless separator density""" T_dim = self.Delta_T * T + self.T_ref return ( self.rho_s_dim(T_dim) * self.c_p_s_dim(T_dim) / self.rho_eff_dim(self.T_ref) ) def rho_p(self, T): """Dimensionless positive electrode density""" T_dim = self.Delta_T * T + self.T_ref return ( self.rho_p_dim(T_dim) * self.c_p_p_dim(T_dim) / self.rho_eff_dim(self.T_ref) ) def rho_cp(self, T): """Dimensionless positive current collector density""" T_dim = self.Delta_T * T + self.T_ref return ( self.rho_cp_dim(T_dim) * self.c_p_cp_dim(T_dim) / self.rho_eff_dim(self.T_ref) ) def lambda_cn(self, T): """Dimensionless negative current collector thermal conductivity""" T_dim = self.Delta_T * T + self.T_ref return self.lambda_cn_dim(T_dim) / self.lambda_eff_dim(self.T_ref) def lambda_n(self, T): """Dimensionless negative electrode thermal conductivity""" T_dim = self.Delta_T * T + self.T_ref return self.lambda_n_dim(T_dim) / self.lambda_eff_dim(self.T_ref) def lambda_s(self, T): """Dimensionless separator thermal conductivity""" T_dim = self.Delta_T * T + self.T_ref return self.lambda_s_dim(T_dim) / self.lambda_eff_dim(self.T_ref) def lambda_p(self, T): """Dimensionless positive electrode thermal conductivity""" T_dim = self.Delta_T * T + self.T_ref return self.lambda_p_dim(T_dim) / self.lambda_eff_dim(self.T_ref) def lambda_cp(self, T): """Dimensionless positive current collector thermal conductivity""" T_dim = self.Delta_T * T + self.T_ref return self.lambda_cp_dim(T_dim) / self.lambda_eff_dim(self.T_ref)
thermal_parameters = ThermalParameters()