@@ -94,17 +94,12 @@ Base.eltype(::AbstractSciMLOperator{T}) where T = T
9494Base. oneunit (L:: AbstractSciMLOperator ) = one (L)
9595Base. oneunit (LType:: Type{<:AbstractSciMLOperator} ) = one (LType)
9696
97- issquare (L:: AbstractSciMLOperator ) = isequal (size (L)... )
98-
99- Base. iszero (:: AbstractSciMLOperator ) = false
100-
101- islinear (:: AbstractSciMLOperator ) = false
102- islinear (:: AbstractSciMLLinearOperator ) = true
97+ Base. iszero (:: AbstractSciMLOperator ) = false # TODO
10398
10499has_adjoint (L:: AbstractSciMLOperator ) = false # L', adjoint(L)
105100has_expmv! (L:: AbstractSciMLOperator ) = false # expmv!(v, L, t, u)
106101has_expmv (L:: AbstractSciMLOperator ) = false # v = exp(L, t, u)
107- has_exp (L:: AbstractSciMLOperator ) = false # v = exp(L, t)*u
102+ has_exp (L:: AbstractSciMLOperator ) = islinear (L)
108103has_mul (L:: AbstractSciMLOperator ) = true # du = L*u
109104has_mul! (L:: AbstractSciMLOperator ) = false # mul!(du, L, u)
110105has_ldiv (L:: AbstractSciMLOperator ) = false # du = L\u
@@ -116,7 +111,9 @@ isconstant(L) = true
116111isconstant (L:: AbstractSciMLOperator ) = all (isconstant, getops (L))
117112# isconstant(L::AbstractSciMLOperator) = L.update_func = DEFAULT_UPDATE_FUNC
118113
119- islinear (L) = false
114+ # islinear(L) = false
115+ islinear (:: AbstractSciMLOperator ) = false
116+
120117islinear (:: Union {
121118 # LinearAlgebra
122119 AbstractMatrix,
@@ -125,23 +122,20 @@ islinear(::Union{
125122
126123 # Base
127124 Number,
128-
129- # SciMLOperators
130- AbstractSciMLLinearOperator,
131125 }
132126 ) = true
133127
134128has_mul (L) = false
135129has_mul (:: Union {
136- # LinearAlgebra
137- AbstractVecOrMat,
138- AbstractMatrix,
139- UniformScaling,
130+ # LinearAlgebra
131+ AbstractVecOrMat,
132+ AbstractMatrix,
133+ UniformScaling,
140134
141- # Base
142- Number,
143- }
144- ) = true
135+ # Base
136+ Number,
137+ }
138+ ) = true
145139
146140has_mul! (L) = false
147141has_mul! (:: Union {
@@ -171,7 +165,7 @@ has_ldiv!(::Union{
171165 }
172166 ) = true
173167
174- has_adjoint (L) = false
168+ has_adjoint (L) = islinear (L)
175169has_adjoint (:: Union {
176170 # LinearAlgebra
177171 AbstractMatrix,
@@ -180,13 +174,10 @@ has_adjoint(::Union{
180174
181175 # Base
182176 Number,
183-
184- # SciMLOperators
185- AbstractSciMLLinearOperator,
186177 }
187178 ) = true
188179
189- issquare (A ) = size (A, 1 ) === size (A, 2 )
180+ issquare (L ) = isequal ( size (L) ... )
190181issquare (:: Union {
191182 # LinearAlgebra
192183 UniformScaling,
@@ -201,7 +192,6 @@ Base.isreal(L::AbstractSciMLOperator{T}) where{T} = T <: Real
201192Base. Matrix (L:: AbstractSciMLOperator ) = Matrix (convert (AbstractMatrix, L))
202193
203194LinearAlgebra. exp (L:: AbstractSciMLOperator ,t) = exp (t* L)
204- has_exp (L:: AbstractSciMLLinearOperator ) = true
205195expmv (L:: AbstractSciMLOperator ,u,p,t) = exp (L,t)* u
206196expmv! (v,L:: AbstractSciMLOperator ,u,p,t) = mul! (v,exp (L,t),u)
207197
0 commit comments