@@ -48,9 +48,9 @@ def _evaluate_for_shape(self):
48
48
)
49
49
50
50
def _jac (self , variable ):
51
- if variable == self :
51
+ if variable . id == self . id :
52
52
return pybamm .Scalar (1 )
53
- elif variable == pybamm .t :
53
+ elif variable . id == pybamm .t . id :
54
54
return pybamm .VariableDot (self .name + "'" ,
55
55
domain = self .domain ,
56
56
auxiliary_domains = self .auxiliary_domains )
@@ -99,6 +99,14 @@ def get_variable(self):
99
99
domain = self ._domain ,
100
100
auxiliary_domains = self ._auxiliary_domains )
101
101
102
+ def _jac (self , variable ):
103
+ if variable .id == self .id :
104
+ return pybamm .Scalar (1 )
105
+ elif variable .id == pybamm .t .id :
106
+ raise pybamm .ModelError ("cannot take second time derivative of a Variable" )
107
+ else :
108
+ return pybamm .Scalar (0 )
109
+
102
110
103
111
class ExternalVariable (Variable ):
104
112
"""A node in the expression tree representing an external variable variable
@@ -161,3 +169,13 @@ def _base_evaluate(self, t=None, y=None, y_dot=None, u=None):
161
169
# raise more informative error if can't find name in dict
162
170
except KeyError :
163
171
raise KeyError ("External variable '{}' not found" .format (self .name ))
172
+
173
+ def _jac (self , variable ):
174
+ if variable .id == self .id :
175
+ return pybamm .Scalar (1 )
176
+ elif variable .id == pybamm .t .id :
177
+ raise pybamm .ModelError ("cannot take time derivative of an external variable" )
178
+ else :
179
+ return pybamm .Scalar (0 )
180
+
181
+
0 commit comments