@@ -23,7 +23,7 @@ def test_multi_var_function_cube(arg1, arg2):
23
23
class TestFunction (unittest .TestCase ):
24
24
def test_number_input (self ):
25
25
# with numbers
26
- log = pybamm .log ( 10 )
26
+ log = pybamm .Function ( np . log , 10 )
27
27
self .assertIsInstance (log .children [0 ], pybamm .Scalar )
28
28
self .assertEqual (log .evaluate (), np .log (10 ))
29
29
@@ -127,27 +127,29 @@ def test_function_unnamed(self):
127
127
128
128
class TestSpecificFunctions (unittest .TestCase ):
129
129
def test_arcsinh (self ):
130
- a = pybamm .Scalar ( 3 )
130
+ a = pybamm .InputParameter ( "a" )
131
131
fun = pybamm .arcsinh (a )
132
132
self .assertIsInstance (fun , pybamm .Arcsinh )
133
- self .assertEqual (fun .evaluate (), np .arcsinh (3 ))
133
+ self .assertEqual (fun .evaluate (u = { "a" : 3 } ), np .arcsinh (3 ))
134
134
h = 0.0000001
135
135
self .assertAlmostEqual (
136
- fun .diff (a ).evaluate (),
137
- (pybamm .arcsinh (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate ()) / h ,
136
+ fun .diff (a ).evaluate (u = {"a" : 3 }),
137
+ (pybamm .arcsinh (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate (u = {"a" : 3 }))
138
+ / h ,
138
139
places = 5 ,
139
140
)
140
141
141
142
def test_cos (self ):
142
- a = pybamm .Scalar ( 3 )
143
+ a = pybamm .InputParameter ( "a" )
143
144
fun = pybamm .cos (a )
144
145
self .assertIsInstance (fun , pybamm .Cos )
145
146
self .assertEqual (fun .children [0 ].id , a .id )
146
- self .assertEqual (fun .evaluate (), np .cos (3 ))
147
+ self .assertEqual (fun .evaluate (u = { "a" : 3 } ), np .cos (3 ))
147
148
h = 0.0000001
148
149
self .assertAlmostEqual (
149
- fun .diff (a ).evaluate (),
150
- (pybamm .cos (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate ()) / h ,
150
+ fun .diff (a ).evaluate (u = {"a" : 3 }),
151
+ (pybamm .cos (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate (u = {"a" : 3 }))
152
+ / h ,
151
153
places = 5 ,
152
154
)
153
155
@@ -157,110 +159,120 @@ def test_cos(self):
157
159
self .assertEqual (fun .id , fun .simplify ().id )
158
160
159
161
def test_cosh (self ):
160
- a = pybamm .Scalar ( 3 )
162
+ a = pybamm .InputParameter ( "a" )
161
163
fun = pybamm .cosh (a )
162
164
self .assertIsInstance (fun , pybamm .Cosh )
163
165
self .assertEqual (fun .children [0 ].id , a .id )
164
- self .assertEqual (fun .evaluate (), np .cosh (3 ))
166
+ self .assertEqual (fun .evaluate (u = { "a" : 3 } ), np .cosh (3 ))
165
167
h = 0.0000001
166
168
self .assertAlmostEqual (
167
- fun .diff (a ).evaluate (),
168
- (pybamm .cosh (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate ()) / h ,
169
+ fun .diff (a ).evaluate (u = {"a" : 3 }),
170
+ (pybamm .cosh (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate (u = {"a" : 3 }))
171
+ / h ,
169
172
places = 5 ,
170
173
)
171
174
172
175
def test_exp (self ):
173
- a = pybamm .Scalar ( 3 )
176
+ a = pybamm .InputParameter ( "a" )
174
177
fun = pybamm .exp (a )
175
178
self .assertIsInstance (fun , pybamm .Exponential )
176
179
self .assertEqual (fun .children [0 ].id , a .id )
177
- self .assertEqual (fun .evaluate (), np .exp (3 ))
180
+ self .assertEqual (fun .evaluate (u = { "a" : 3 } ), np .exp (3 ))
178
181
h = 0.0000001
179
182
self .assertAlmostEqual (
180
- fun .diff (a ).evaluate (),
181
- (pybamm .exp (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate ()) / h ,
183
+ fun .diff (a ).evaluate (u = {"a" : 3 }),
184
+ (pybamm .exp (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate (u = {"a" : 3 }))
185
+ / h ,
182
186
places = 5 ,
183
187
)
184
188
185
189
def test_log (self ):
186
- a = pybamm .Scalar ( 3 )
190
+ a = pybamm .InputParameter ( "a" )
187
191
fun = pybamm .log (a )
188
- self .assertEqual (fun .evaluate (), np .log (3 ))
192
+ self .assertEqual (fun .evaluate (u = { "a" : 3 } ), np .log (3 ))
189
193
h = 0.0000001
190
194
self .assertAlmostEqual (
191
- fun .diff (a ).evaluate (),
192
- (pybamm .log (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate ()) / h ,
195
+ fun .diff (a ).evaluate (u = {"a" : 3 }),
196
+ (pybamm .log (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate (u = {"a" : 3 }))
197
+ / h ,
193
198
places = 5 ,
194
199
)
195
200
196
201
# Base 10
197
202
fun = pybamm .log10 (a )
198
- self .assertEqual (fun .evaluate (), np .log10 (3 ))
203
+ self .assertEqual (fun .evaluate (u = { "a" : 3 } ), np .log10 (3 ))
199
204
h = 0.0000001
200
205
self .assertAlmostEqual (
201
- fun .diff (a ).evaluate (),
202
- (pybamm .log10 (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate ()) / h ,
206
+ fun .diff (a ).evaluate (u = {"a" : 3 }),
207
+ (pybamm .log10 (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate (u = {"a" : 3 }))
208
+ / h ,
203
209
places = 5 ,
204
210
)
205
211
206
212
def test_max (self ):
207
- a = pybamm .Vector (np .array ([1 , 2 , 3 ]))
213
+ a = pybamm .StateVector (slice (0 , 3 ))
214
+ y_test = np .array ([1 , 2 , 3 ])
208
215
fun = pybamm .max (a )
209
216
self .assertIsInstance (fun , pybamm .Function )
210
- self .assertEqual (fun .evaluate (), 3 )
217
+ self .assertEqual (fun .evaluate (y = y_test ), 3 )
211
218
212
219
def test_min (self ):
213
- a = pybamm .Vector (np .array ([1 , 2 , 3 ]))
220
+ a = pybamm .StateVector (slice (0 , 3 ))
221
+ y_test = np .array ([1 , 2 , 3 ])
214
222
fun = pybamm .min (a )
215
223
self .assertIsInstance (fun , pybamm .Function )
216
- self .assertEqual (fun .evaluate (), 1 )
224
+ self .assertEqual (fun .evaluate (y = y_test ), 1 )
217
225
218
226
def test_sin (self ):
219
- a = pybamm .Scalar ( 3 )
227
+ a = pybamm .InputParameter ( "a" )
220
228
fun = pybamm .sin (a )
221
229
self .assertIsInstance (fun , pybamm .Sin )
222
230
self .assertEqual (fun .children [0 ].id , a .id )
223
- self .assertEqual (fun .evaluate (), np .sin (3 ))
231
+ self .assertEqual (fun .evaluate (u = { "a" : 3 } ), np .sin (3 ))
224
232
h = 0.0000001
225
233
self .assertAlmostEqual (
226
- fun .diff (a ).evaluate (),
227
- (pybamm .sin (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate ()) / h ,
234
+ fun .diff (a ).evaluate (u = {"a" : 3 }),
235
+ (pybamm .sin (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate (u = {"a" : 3 }))
236
+ / h ,
228
237
places = 5 ,
229
238
)
230
239
231
240
def test_sinh (self ):
232
- a = pybamm .Scalar ( 3 )
241
+ a = pybamm .InputParameter ( "a" )
233
242
fun = pybamm .sinh (a )
234
243
self .assertIsInstance (fun , pybamm .Sinh )
235
244
self .assertEqual (fun .children [0 ].id , a .id )
236
- self .assertEqual (fun .evaluate (), np .sinh (3 ))
245
+ self .assertEqual (fun .evaluate (u = { "a" : 3 } ), np .sinh (3 ))
237
246
h = 0.0000001
238
247
self .assertAlmostEqual (
239
- fun .diff (a ).evaluate (),
240
- (pybamm .sinh (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate ()) / h ,
248
+ fun .diff (a ).evaluate (u = {"a" : 3 }),
249
+ (pybamm .sinh (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate (u = {"a" : 3 }))
250
+ / h ,
241
251
places = 5 ,
242
252
)
243
253
244
254
def test_sqrt (self ):
245
- a = pybamm .Scalar ( 3 )
255
+ a = pybamm .InputParameter ( "a" )
246
256
fun = pybamm .sqrt (a )
247
257
self .assertIsInstance (fun , pybamm .Sqrt )
248
- self .assertEqual (fun .evaluate (), np .sqrt (3 ))
258
+ self .assertEqual (fun .evaluate (u = { "a" : 3 } ), np .sqrt (3 ))
249
259
h = 0.0000001
250
260
self .assertAlmostEqual (
251
- fun .diff (a ).evaluate (),
252
- (pybamm .sqrt (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate ()) / h ,
261
+ fun .diff (a ).evaluate (u = {"a" : 3 }),
262
+ (pybamm .sqrt (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate (u = {"a" : 3 }))
263
+ / h ,
253
264
places = 5 ,
254
265
)
255
266
256
267
def test_tanh (self ):
257
- a = pybamm .Scalar ( 3 )
268
+ a = pybamm .InputParameter ( "a" )
258
269
fun = pybamm .tanh (a )
259
- self .assertEqual (fun .evaluate (), np .tanh (3 ))
270
+ self .assertEqual (fun .evaluate (u = { "a" : 3 } ), np .tanh (3 ))
260
271
h = 0.0000001
261
272
self .assertAlmostEqual (
262
- fun .diff (a ).evaluate (),
263
- (pybamm .tanh (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate ()) / h ,
273
+ fun .diff (a ).evaluate (u = {"a" : 3 }),
274
+ (pybamm .tanh (pybamm .Scalar (3 + h )).evaluate () - fun .evaluate (u = {"a" : 3 }))
275
+ / h ,
264
276
places = 5 ,
265
277
)
266
278
0 commit comments