Skip to content

Commit 4f623eb

Browse files
authored
Merge pull request #189 from vpuri3/sca
scalar op multiplcation fix when arguments are numbers
2 parents 83335a0 + f54e101 commit 4f623eb

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

src/interface.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ end
1919
(L::AbstractSciMLOperator)(du, u, p, t) = (update_coefficients!(L, u, p, t); mul!(du, L, u))
2020
(L::AbstractSciMLOperator)(du, u, p, t, α, β) = (update_coefficients!(L, u, p, t); mul!(du, L, u, α, β))
2121

22+
function (L::AbstractSciMLOperator)(du::Number, u::Number, p, t, args...)
23+
msg = """Nonallocating L(v, u, p, t) type methods are not available for
24+
subtypes of `Number`."""
25+
throw(ArgumentError(msg))
26+
end
27+
2228
###
2329
# caching interface
2430
###

src/scalar.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
# AbstractSciMLScalarOperator interface
44
###
55

6+
function (L::AbstractSciMLScalarOperator)(u::Number, p, t)
7+
L = update_coefficients(L, u, p, t)
8+
convert(Number, L) * u
9+
end
10+
611
SCALINGNUMBERTYPES = (
712
:AbstractSciMLScalarOperator,
813
:Number,

test/scalar.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,20 @@ K = 12
9393
for op in L.ops
9494
@test !isa(op, ComposedScalarOperator)
9595
end
96+
97+
end
98+
99+
@testset "ScalarOperator scalar argument test" begin
100+
a = rand()
101+
u = rand()
102+
v = rand()
103+
p = nothing
104+
t = 0.0
105+
106+
α = ScalarOperator(a)
107+
@test α(u, p, t) u * a
108+
@test_throws ArgumentError α(v, u, p, t)
109+
@test_throws ArgumentError α(v, u, p, t, 1, 2)
96110
end
97111

98112
@testset "ScalarOperator update test" begin

0 commit comments

Comments
 (0)