@@ -114,12 +114,17 @@ end
114
114
function perform_step! (cache:: PseudoTransientCache{true} )
115
115
@unpack u, u_prev, fu1, f, p, alg, J, linsolve, du, alpha, tc_storage = cache
116
116
jacobian!! (J, cache)
117
- J_new = J - (1 / alpha) * I
117
+ if J isa SciMLBase. AbstractSciMLOperator
118
+ J = J - (1 / alpha) * I
119
+ else
120
+ J .= J - (1 / alpha) * I
121
+ end
122
+ # J_new = J - (1 / alpha) * I
118
123
119
124
termination_condition = cache. termination_condition (tc_storage)
120
125
121
126
# u = u - J \ fu
122
- linres = dolinsolve (alg. precs, linsolve; A = J_new , b = _vec (fu1), linu = _vec (du),
127
+ linres = dolinsolve (alg. precs, linsolve; A = J , b = _vec (fu1), linu = _vec (du),
123
128
p, reltol = cache. abstol)
124
129
cache. linsolve = linres. cache
125
130
@. u = u - du
@@ -147,11 +152,13 @@ function perform_step!(cache::PseudoTransientCache{false})
147
152
termination_condition = cache. termination_condition (tc_storage)
148
153
149
154
cache. J = jacobian!! (cache. J, cache)
155
+
156
+ cache. J = cache. J - (1 / alpha) * I
150
157
# u = u - J \ fu
151
158
if linsolve === nothing
152
- cache. du = fu1 / (cache. J - ( 1 / alpha) * I )
159
+ cache. du = fu1 / (cache. J)
153
160
else
154
- linres = dolinsolve (alg. precs, linsolve; A = cache. J - ( 1 / alpha) * I ,
161
+ linres = dolinsolve (alg. precs, linsolve; A = cache. J,
155
162
b = _vec (fu1),
156
163
linu = _vec (cache. du), p, reltol = cache. abstol)
157
164
cache. linsolve = linres. cache
0 commit comments