@@ -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
@@ -106,7 +101,9 @@ isconstant(::Union{
106101 ) = true
107102isconstant (L:: AbstractSciMLOperator ) = all (isconstant, getops (L))
108103
109- islinear (L) = false
104+ # islinear(L) = false
105+ islinear (:: AbstractSciMLOperator ) = false
106+
110107islinear (:: Union {
111108 # LinearAlgebra
112109 AbstractMatrix,
@@ -115,23 +112,20 @@ islinear(::Union{
115112
116113 # Base
117114 Number,
118-
119- # SciMLOperators
120- AbstractSciMLLinearOperator,
121115 }
122116 ) = true
123117
124118has_mul (L) = false
125119has_mul (:: Union {
126- # LinearAlgebra
127- AbstractVecOrMat,
128- AbstractMatrix,
129- UniformScaling,
120+ # LinearAlgebra
121+ AbstractVecOrMat,
122+ AbstractMatrix,
123+ UniformScaling,
130124
131- # Base
132- Number,
133- }
134- ) = true
125+ # Base
126+ Number,
127+ }
128+ ) = true
135129
136130has_mul! (L) = false
137131has_mul! (:: Union {
@@ -161,7 +155,7 @@ has_ldiv!(::Union{
161155 }
162156 ) = true
163157
164- has_adjoint (L) = false
158+ has_adjoint (L) = islinear (L)
165159has_adjoint (:: Union {
166160 # LinearAlgebra
167161 AbstractMatrix,
@@ -170,13 +164,10 @@ has_adjoint(::Union{
170164
171165 # Base
172166 Number,
173-
174- # SciMLOperators
175- AbstractSciMLLinearOperator,
176167 }
177168 ) = true
178169
179- issquare (A ) = size (A, 1 ) === size (A, 2 )
170+ issquare (L ) = isequal ( size (L) ... )
180171issquare (:: Union {
181172 # LinearAlgebra
182173 UniformScaling,
@@ -191,7 +182,6 @@ Base.isreal(L::AbstractSciMLOperator{T}) where{T} = T <: Real
191182Base. Matrix (L:: AbstractSciMLOperator ) = Matrix (convert (AbstractMatrix, L))
192183
193184LinearAlgebra. exp (L:: AbstractSciMLOperator ,t) = exp (t* L)
194- has_exp (L:: AbstractSciMLLinearOperator ) = true
195185expmv (L:: AbstractSciMLOperator ,u,p,t) = exp (L,t)* u
196186expmv! (v,L:: AbstractSciMLOperator ,u,p,t) = mul! (v,exp (L,t),u)
197187
0 commit comments