@@ -17,6 +17,7 @@ def get_size_distribution_parameters(
1717 R_min_p = None ,
1818 R_max_n = None ,
1919 R_max_p = None ,
20+ electrode = "both" ,
2021):
2122 """
2223 A convenience method to add standard area-weighted particle-size distribution
@@ -54,50 +55,70 @@ def get_size_distribution_parameters(
5455 R_max_p : float (optional)
5556 Maximum radius in positive electrode, scaled by the mean radius R_p_av.
5657 Default is 5 standard deviations above the mean.
58+ electrode : str (optional)
59+ Which electrode to add parameters for. If "both" (default), size distribution
60+ parameters are added for both electrodes. Otherwise can be "negative" or
61+ "positive" to indicate a half-cell model, in which case size distribution
62+ parameters are only added for a single electrode.
5763 """
58-
59- # Radii from given parameter set
60- R_n_typ = param ["Negative particle radius [m]" ]
61- R_p_typ = param ["Positive particle radius [m]" ]
62-
63- # Set the mean particle radii for each electrode
64- R_n_av = R_n_av or R_n_typ
65- R_p_av = R_p_av or R_p_typ
66-
67- # Minimum radii
68- R_min_n = R_min_n or np .max ([0 , 1 - sd_n * 5 ])
69- R_min_p = R_min_p or np .max ([0 , 1 - sd_p * 5 ])
70-
71- # Max radii
72- R_max_n = R_max_n or (1 + sd_n * 5 )
73- R_max_p = R_max_p or (1 + sd_p * 5 )
74-
75- # Area-weighted particle-size distributions
76- def f_a_dist_n_dim (R ):
77- return lognormal (R , R_n_av , sd_n * R_n_av )
78-
79- def f_a_dist_p_dim (R ):
80- return lognormal (R , R_p_av , sd_p * R_p_av )
81-
82- param .update (
83- {
84- "Negative area-weighted mean particle radius [m]" : R_n_av ,
85- "Positive area-weighted mean particle radius [m]" : R_p_av ,
86- "Negative area-weighted particle-size "
87- + "standard deviation [m]" : sd_n * R_n_av ,
88- "Positive area-weighted particle-size "
89- + "standard deviation [m]" : sd_p * R_p_av ,
90- "Negative minimum particle radius [m]" : R_min_n * R_n_av ,
91- "Positive minimum particle radius [m]" : R_min_p * R_p_av ,
92- "Negative maximum particle radius [m]" : R_max_n * R_n_av ,
93- "Positive maximum particle radius [m]" : R_max_p * R_p_av ,
94- "Negative area-weighted "
95- + "particle-size distribution [m-1]" : f_a_dist_n_dim ,
96- "Positive area-weighted "
97- + "particle-size distribution [m-1]" : f_a_dist_p_dim ,
98- },
99- check_already_exists = False ,
100- )
64+ if electrode in ["both" , "negative" ]:
65+ # Radii from given parameter set
66+ R_n_typ = param ["Negative particle radius [m]" ]
67+
68+ # Set the mean particle radii
69+ R_n_av = R_n_av or R_n_typ
70+
71+ # Minimum radii
72+ R_min_n = R_min_n or np .max ([0 , 1 - sd_n * 5 ])
73+
74+ # Max radii
75+ R_max_n = R_max_n or (1 + sd_n * 5 )
76+
77+ # Area-weighted particle-size distribution
78+ def f_a_dist_n_dim (R ):
79+ return lognormal (R , R_n_av , sd_n * R_n_av )
80+
81+ param .update (
82+ {
83+ "Negative area-weighted mean particle radius [m]" : R_n_av ,
84+ "Negative area-weighted particle-size "
85+ + "standard deviation [m]" : sd_n * R_n_av ,
86+ "Negative minimum particle radius [m]" : R_min_n * R_n_av ,
87+ "Negative maximum particle radius [m]" : R_max_n * R_n_av ,
88+ "Negative area-weighted "
89+ + "particle-size distribution [m-1]" : f_a_dist_n_dim ,
90+ },
91+ check_already_exists = False ,
92+ )
93+ if electrode in ["both" , "positive" ]:
94+ # Radii from given parameter set
95+ R_p_typ = param ["Positive particle radius [m]" ]
96+
97+ # Set the mean particle radii
98+ R_p_av = R_p_av or R_p_typ
99+
100+ # Minimum radii
101+ R_min_p = R_min_p or np .max ([0 , 1 - sd_p * 5 ])
102+
103+ # Max radii
104+ R_max_p = R_max_p or (1 + sd_p * 5 )
105+
106+ # Area-weighted particle-size distribution
107+ def f_a_dist_p_dim (R ):
108+ return lognormal (R , R_p_av , sd_p * R_p_av )
109+
110+ param .update (
111+ {
112+ "Positive area-weighted mean particle radius [m]" : R_p_av ,
113+ "Positive area-weighted particle-size "
114+ + "standard deviation [m]" : sd_p * R_p_av ,
115+ "Positive minimum particle radius [m]" : R_min_p * R_p_av ,
116+ "Positive maximum particle radius [m]" : R_max_p * R_p_av ,
117+ "Positive area-weighted "
118+ + "particle-size distribution [m-1]" : f_a_dist_p_dim ,
119+ },
120+ check_already_exists = False ,
121+ )
101122 return param
102123
103124
0 commit comments