@@ -75,17 +75,12 @@ Base.eltype(::AbstractSciMLOperator{T}) where T = T
7575Base. oneunit (L:: AbstractSciMLOperator ) = one (L)
7676Base. oneunit (LType:: Type{<:AbstractSciMLOperator} ) = one (LType)
7777
78- issquare (L:: AbstractSciMLOperator ) = isequal (size (L)... )
79-
80- Base. iszero (:: AbstractSciMLOperator ) = false
81-
82- islinear (:: AbstractSciMLOperator ) = false
83- islinear (:: AbstractSciMLLinearOperator ) = true
78+ Base. iszero (:: AbstractSciMLOperator ) = false # TODO
8479
8580has_adjoint (L:: AbstractSciMLOperator ) = false # L', adjoint(L)
8681has_expmv! (L:: AbstractSciMLOperator ) = false # expmv!(v, L, t, u)
8782has_expmv (L:: AbstractSciMLOperator ) = false # v = exp(L, t, u)
88- has_exp (L:: AbstractSciMLOperator ) = false # v = exp(L, t)*u
83+ has_exp (L:: AbstractSciMLOperator ) = islinear (L)
8984has_mul (L:: AbstractSciMLOperator ) = true # du = L*u
9085has_mul! (L:: AbstractSciMLOperator ) = false # mul!(du, L, u)
9186has_ldiv (L:: AbstractSciMLOperator ) = false # du = L\u
@@ -97,7 +92,9 @@ isconstant(L) = true
9792isconstant (L:: AbstractSciMLOperator ) = all (isconstant, getops (L))
9893# isconstant(L::AbstractSciMLOperator) = L.update_func = DEFAULT_UPDATE_FUNC
9994
100- islinear (L) = false
95+ # islinear(L) = false
96+ islinear (:: AbstractSciMLOperator ) = false
97+
10198islinear (:: Union {
10299 # LinearAlgebra
103100 AbstractMatrix,
@@ -106,23 +103,20 @@ islinear(::Union{
106103
107104 # Base
108105 Number,
109-
110- # SciMLOperators
111- AbstractSciMLLinearOperator,
112106 }
113107 ) = true
114108
115109has_mul (L) = false
116110has_mul (:: Union {
117- # LinearAlgebra
118- AbstractVecOrMat,
119- AbstractMatrix,
120- UniformScaling,
111+ # LinearAlgebra
112+ AbstractVecOrMat,
113+ AbstractMatrix,
114+ UniformScaling,
121115
122- # Base
123- Number,
124- }
125- ) = true
116+ # Base
117+ Number,
118+ }
119+ ) = true
126120
127121has_mul! (L) = false
128122has_mul! (:: Union {
@@ -152,7 +146,7 @@ has_ldiv!(::Union{
152146 }
153147 ) = true
154148
155- has_adjoint (L) = false
149+ has_adjoint (L) = islinear (L)
156150has_adjoint (:: Union {
157151 # LinearAlgebra
158152 AbstractMatrix,
@@ -161,13 +155,10 @@ has_adjoint(::Union{
161155
162156 # Base
163157 Number,
164-
165- # SciMLOperators
166- AbstractSciMLLinearOperator,
167158 }
168159 ) = true
169160
170- issquare (A ) = size (A, 1 ) === size (A, 2 )
161+ issquare (L ) = isequal ( size (L) ... )
171162issquare (:: Union {
172163 # LinearAlgebra
173164 UniformScaling,
@@ -182,7 +173,6 @@ Base.isreal(L::AbstractSciMLOperator{T}) where{T} = T <: Real
182173Base. Matrix (L:: AbstractSciMLOperator ) = Matrix (convert (AbstractMatrix, L))
183174
184175LinearAlgebra. exp (L:: AbstractSciMLOperator ,t) = exp (t* L)
185- has_exp (L:: AbstractSciMLLinearOperator ) = true
186176expmv (L:: AbstractSciMLOperator ,u,p,t) = exp (L,t)* u
187177expmv! (v,L:: AbstractSciMLOperator ,u,p,t) = mul! (v,exp (L,t),u)
188178
0 commit comments