Skip to content

Commit 03dc355

Browse files
committed
fix merge
1 parent 08c65bc commit 03dc355

File tree

1 file changed

+0
-81
lines changed

1 file changed

+0
-81
lines changed

src/basic.jl

Lines changed: 0 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -168,87 +168,6 @@ for op in (
168168
end
169169
end
170170

171-
"""
172-
ScalarOperator(val[; update_func])
173-
174-
(α::ScalarOperator)(a::Number) = α * a
175-
176-
Represents a time-dependent scalar/scaling operator. The update function
177-
is called by `update_coefficients!` and is assumed to have the following
178-
signature:
179-
180-
update_func(oldval,u,p,t) -> newval
181-
"""
182-
struct ScalarOperator{T<:Number,F} <: AbstractSciMLLinearOperator{T}
183-
val::T
184-
update_func::F
185-
ScalarOperator(val::T; update_func=DEFAULT_UPDATE_FUNC) where{T} =
186-
new{T,typeof(update_func)}(val, update_func)
187-
end
188-
189-
# constructors
190-
Base.convert(::Type{Number}, α::ScalarOperator) = α.val
191-
Base.convert(::Type{ScalarOperator}, α::Number) = ScalarOperator(α)
192-
193-
ScalarOperator::ScalarOperator) = α
194-
ScalarOperator::UniformScaling) = ScalarOperator.λ)
195-
196-
# traits
197-
Base.size::ScalarOperator) = ()
198-
function Base.adjoint::ScalarOperator) # TODO - test this thoroughly
199-
val = α.val'
200-
update_func = (oldval,u,p,t) -> α.update_func(oldval',u,p,t)'
201-
ScalarOperator(val; update_func=update_func)
202-
end
203-
Base.transpose::ScalarOperator) = α
204-
205-
Base.one(::ScalarOperator{T}) where{T} = ScalarOperator(one(T))
206-
Base.zero(::ScalarOperator{T}) where{T} = ScalarOperator(zero(T))
207-
208-
Base.one(::Type{<:AbstractSciMLOperator}) = ScalarOperator(true)
209-
Base.zero(::Type{<:AbstractSciMLOperator}) = ScalarOperator(false)
210-
211-
getops::ScalarOperator) =.val,)
212-
islinear(L::ScalarOperator) = true
213-
issquare(L::ScalarOperator) = true
214-
isconstant::ScalarOperator) = α.update_func == DEFAULT_UPDATE_FUNC
215-
Base.iszero::ScalarOperator) = iszero.val)
216-
has_adjoint(::ScalarOperator) = true
217-
has_mul(::ScalarOperator) = true
218-
has_mul!(::ScalarOperator) = true
219-
has_ldiv::ScalarOperator) = iszero.val)
220-
has_ldiv!::ScalarOperator) = iszero.val)
221-
222-
for op in (
223-
:*, :/, :\,
224-
)
225-
for T in (
226-
:Number,
227-
:AbstractVecOrMat,
228-
)
229-
@eval Base.$op::ScalarOperator, x::$T) = $op.val, x)
230-
@eval Base.$op(x::$T, α::ScalarOperator) = $op(x, α.val)
231-
end
232-
@eval Base.$op(x::ScalarOperator, y::ScalarOperator) = $op(x.val, y.val) # TODO - lazy compose instead?
233-
end
234-
235-
for op in (:-, :+)
236-
@eval Base.$op::ScalarOperator, x::Number) = $op.val, x)
237-
@eval Base.$op(x::Number, α::ScalarOperator) = $op(x, α.val)
238-
@eval Base.$op(x::ScalarOperator, y::ScalarOperator) = $op(x.val, y.val) # TODO - lazy sum instead?
239-
end
240-
241-
LinearAlgebra.lmul!::ScalarOperator, u::AbstractVecOrMat) = lmul!.val, u)
242-
LinearAlgebra.rmul!(u::AbstractVecOrMat, α::ScalarOperator) = rmul!(u, α.val)
243-
LinearAlgebra.mul!(v::AbstractVecOrMat, α::ScalarOperator, u::AbstractVecOrMat) = mul!(v, α.val, u)
244-
LinearAlgebra.mul!(v::AbstractVecOrMat, α::ScalarOperator, u::AbstractVecOrMat, a, b) = mul!(v, α.val, u, a, b)
245-
LinearAlgebra.axpy!::ScalarOperator, x::AbstractVecOrMat, y::AbstractVecOrMat) = axpy!.val, x, y)
246-
LinearAlgebra.axpby!::ScalarOperator, x::AbstractVecOrMat, β::ScalarOperator, y::AbstractVecOrMat) = axpby!.val, x, β.val, y)
247-
Base.abs::ScalarOperator) = abs.val)
248-
249-
LinearAlgebra.ldiv!(v::AbstractVecOrMat, α::ScalarOperator, u::AbstractVecOrMat) = ldiv!(v, α.val, u)
250-
LinearAlgebra.ldiv!::ScalarOperator, u::AbstractVecOrMat) = ldiv!.val, u)
251-
252171
"""
253172
ScaledOperator
254173

0 commit comments

Comments
 (0)