@@ -216,7 +216,7 @@ struct AffineOperator{T,AType,BType,bType,cType,F} <: AbstractSciMLOperator{T}
216216 typeof (cache),
217217 typeof (update_func),
218218 }(
219- A, B, b, cache,
219+ A, B, b, cache, update_func,
220220 )
221221 end
222222end
@@ -236,19 +236,26 @@ function AffineOperator(A::Union{AbstractMatrix,AbstractSciMLOperator},
236236 AffineOperator (A, B, b, cache, update_func)
237237end
238238
239+ """
240+ L = AddVector(b[; update_func])
241+ L(u) = u + b
242+ """
239243function AddVector (b:: AbstractVecOrMat ; update_func= DEFAULT_UPDATE_FUNC)
240244 N = size (b, 1 )
241- Z = NullOperator {N} ()
242245 Id = IdentityOperator {N} ()
243246
244- AffineOperator (Id, B , b; update_func= update_func)
247+ AffineOperator (Id, Id , b; update_func= update_func)
245248end
246249
250+ """
251+ L = AddVector(B, b[; update_func])
252+ L(u) = u + B*b
253+ """
247254function AddVector (B, b:: AbstractVecOrMat ; update_func= DEFAULT_UPDATE_FUNC)
248255 N = size (B, 1 )
249- Z = NullOperator {N} ()
256+ Id = IdentityOperator {N} ()
250257
251- AffineOperator (Z , B, b; update_func= update_func)
258+ AffineOperator (Id , B, b; update_func= update_func)
252259end
253260
254261getops (L:: AffineOperator ) = (L. A, L. B, L. b)
@@ -265,8 +272,7 @@ has_ldiv!(L::AffineOperator) = has_ldiv!(L.A)
265272
266273function cache_internals (L:: AffineOperator , u:: AbstractVecOrMat )
267274 @set! L. A = cache_operator (L. A, u)
268- @set! L. B = cache_operator (L. B, u)
269- @set! L. b = cache_operator (L. b, u)
275+ @set! L. B = cache_operator (L. B, L. b)
270276 L
271277end
272278
0 commit comments