@@ -86,6 +86,26 @@ def test_check_and_update_parameter_values(self):
86
86
param = pybamm .ParameterValues (values )
87
87
self .assertEqual (param ["C-rate" ](5 ).evaluate (), np .exp (5 ) / 10 )
88
88
89
+ # With data
90
+ # if only C-rate and capacity provided, update current
91
+ x = np .linspace (0 , 10 )[:, np .newaxis ]
92
+ linear = np .hstack ([x , 2 * x ])
93
+ values = {"C-rate" : ("linear" , linear ), "Cell capacity [A.h]" : 10 }
94
+ param = pybamm .ParameterValues (values )
95
+ self .assertEqual (param ["Current function [A]" ][0 ], "linear_to_Crate" )
96
+ np .testing .assert_array_equal (
97
+ param ["Current function [A]" ][1 ], np .hstack ([x , 20 * x ])
98
+ )
99
+ # if only current and capacity provided, update C-rate
100
+ x = np .linspace (0 , 10 )[:, np .newaxis ]
101
+ linear = np .hstack ([x , 2 * x ])
102
+ values = {"Current function [A]" : ("linear" , linear ), "Cell capacity [A.h]" : 10 }
103
+ param = pybamm .ParameterValues (values )
104
+ self .assertEqual (param ["C-rate" ][0 ], "linear_to_current" )
105
+ np .testing .assert_array_almost_equal (
106
+ param ["C-rate" ][1 ], np .hstack ([x , 0.2 * x ])
107
+ )
108
+
89
109
def test_process_symbol (self ):
90
110
parameter_values = pybamm .ParameterValues ({"a" : 1 , "b" : 2 , "c" : 3 })
91
111
# process parameter
@@ -226,6 +246,11 @@ def test_process_symbol(self):
226
246
with self .assertRaises (NotImplementedError ):
227
247
parameter_values .process_symbol (sym )
228
248
249
+ # not found
250
+ with self .assertRaises (KeyError ):
251
+ x = pybamm .Parameter ("x" )
252
+ parameter_values .process_symbol (x )
253
+
229
254
def test_process_input_parameter (self ):
230
255
parameter_values = pybamm .ParameterValues ({"a" : "[input]" , "b" : 3 })
231
256
# process input parameter
@@ -461,6 +486,14 @@ def test_process_model(self):
461
486
isinstance (model .variables ["d_var1" ].children [1 ], pybamm .Variable )
462
487
)
463
488
489
+ # bad boundary conditions
490
+ model = pybamm .BaseModel ()
491
+ model .algebraic = {var1 : var1 }
492
+ x = pybamm .Parameter ("x" )
493
+ model .boundary_conditions = {var1 : {"left" : (x , "Dirichlet" )}}
494
+ with self .assertRaises (KeyError ):
495
+ parameter_values .process_model (model )
496
+
464
497
def test_process_empty_model (self ):
465
498
model = pybamm .BaseModel ()
466
499
parameter_values = pybamm .ParameterValues ({"a" : 1 , "b" : 2 , "c" : 3 , "d" : 42 })
0 commit comments