From e4d9b72735c1b951117ad39693da9f556bbc1d7b Mon Sep 17 00:00:00 2001 From: Qingyu Qu <2283984853@qq.com> Date: Sun, 23 Mar 2025 15:26:09 +0800 Subject: [PATCH] Remove operators interface --- src/DiffEqBase.jl | 2 - src/callbacks.jl | 6 ++- test/affine_operators_tests.jl | 38 ------------------ test/basic_operators_interface.jl | 64 ------------------------------- test/runtests.jl | 2 - 5 files changed, 4 insertions(+), 108 deletions(-) delete mode 100644 test/affine_operators_tests.jl delete mode 100644 test/basic_operators_interface.jl diff --git a/src/DiffEqBase.jl b/src/DiffEqBase.jl index f05f2ba9a..46e8b4bd6 100644 --- a/src/DiffEqBase.jl +++ b/src/DiffEqBase.jl @@ -97,8 +97,6 @@ import SciMLBase: solve, init, step!, solve!, __init, __solve, update_coefficien update_coefficients, isadaptive, wrapfun_oop, wrapfun_iip, unwrap_fw, promote_tspan, set_u!, set_t!, set_ut! -import SciMLBase: AbstractDiffEqLinearOperator # deprecation path - import SciMLStructures using Reexport diff --git a/src/callbacks.jl b/src/callbacks.jl index 1d6929320..d44567171 100644 --- a/src/callbacks.jl +++ b/src/callbacks.jl @@ -432,7 +432,8 @@ function find_callback_time(integrator, callback::ContinuousCallback, counter) end Θ = bisection(zero_func, (bottom_t, top_t), isone(integrator.tdir), callback.rootfind, callback.abstol, callback.reltol) - integrator.last_event_error = DiffEqBase.value(ODE_DEFAULT_NORM(zero_func(Θ), Θ)) + integrator.last_event_error = DiffEqBase.value(ODE_DEFAULT_NORM( + zero_func(Θ), Θ)) end #Θ = prevfloat(...) # prevfloat guerentees that the new time is either 1 floating point @@ -507,7 +508,8 @@ function find_callback_time(integrator, callback::VectorContinuousCallback, coun isone(integrator.tdir), callback.rootfind, callback.abstol, callback.reltol) if integrator.tdir * Θ < integrator.tdir * min_t - integrator.last_event_error = DiffEqBase.value(ODE_DEFAULT_NORM(zero_func(Θ), Θ)) + integrator.last_event_error = DiffEqBase.value(ODE_DEFAULT_NORM( + zero_func(Θ), Θ)) end end if integrator.tdir * Θ < integrator.tdir * min_t diff --git a/test/affine_operators_tests.jl b/test/affine_operators_tests.jl deleted file mode 100644 index 7126bdc9b..000000000 --- a/test/affine_operators_tests.jl +++ /dev/null @@ -1,38 +0,0 @@ -using DiffEqBase -using SciMLBase -using Test -using Random - -mutable struct TestDiffEqOperator{T} <: SciMLBase.AbstractDiffEqLinearOperator{T} - m::Int - n::Int -end - -TestDiffEqOperator(A::AbstractMatrix{T}) where {T} = TestDiffEqOperator{T}(size(A)...) - -Base.size(A::TestDiffEqOperator) = (A.m, A.n) - -A = TestDiffEqOperator([0 0; 0 1]) -B = TestDiffEqOperator([0 0 0; 0 1 0; 0 0 2]) - -@test_throws ErrorException AffineDiffEqOperator{Int64}((A, B), ()) - -@testset "DiffEq linear operators" begin - Random.seed!(0) - M = rand(2, 2) - A = DiffEqArrayOperator(M) - b = rand(2) - u = rand(2) - p = rand(1) - t = rand() - As_list = [(A,), (A, A)]#, (A, α)] - bs_list = [(), (b,), (2b,), (b, 2b)] - @testset "combinations of A's and b's" for As in As_list, bs in bs_list - L = AffineDiffEqOperator{Float64}(As, bs, zeros(2)) - mysum = sum(A * u for A in As) - for b in bs - mysum .+= b - end - @test L(u, p, t) == mysum - end -end diff --git a/test/basic_operators_interface.jl b/test/basic_operators_interface.jl deleted file mode 100644 index 29c9a9c7f..000000000 --- a/test/basic_operators_interface.jl +++ /dev/null @@ -1,64 +0,0 @@ -using DiffEqBase, Random, LinearAlgebra, Test -using DiffEqBase: isconstant, @.. - -@testset "Identity Operators" begin - u = [1.0, 2.0] - du = zeros(2) - Id = DiffEqIdentity(u) - @test Id * u == u - mul!(du, Id, u) - @test du == u - @test size(Id) == (2, 2) -end - -@testset "Scalar Operators" begin - u = [1.0, 2.0] - u2 = [1.0, 2.0] - α = DiffEqScalar(2.0) - @test convert(Number, α) == 2.0 - @test α * u == 2.0u - lmul!(α, u2) - @test u2 == 2.0u - @test size(α) == () - @test isconstant(α) == true -end - -@testset "Array Operators" begin - Random.seed!(0) - A = rand(2, 2) - u = rand(2) - du = zeros(2) - L = DiffEqArrayOperator(A) - @test Matrix(L) == A - @test size(L) == size(A) - @test L * u == A * u - mul!(du, L, u) - @test du == A * u - @test lu(L) \ u ≈ A \ u - @test opnorm(L) == opnorm(A) - @test exp(L) == exp(A) - @test L[1, 2] == A[1, 2] - @test isconstant(L) == true - L .= 0 - @test all(iszero, L) - tmp = rand(size(L)...) - @.. L = muladd(1, tmp, 0) - @test L.A == tmp - rand!(tmp) - @.. tmp = muladd(1, L, 0) - @test L.A == tmp -end - -@testset "Mutable Array Operators" begin - Random.seed!(0) - A = rand(2, 2) - u = rand(2) - du = zeros(2) - update_func = (_A, u, p, t) -> _A .= t * A - Lt = DiffEqArrayOperator(zeros(2, 2); update_func = update_func) - t = 5.0 - @test isconstant(Lt) == false - @test Lt(u, nothing, t) ≈ (t * A) * u - Lt(du, u, nothing, t) - @test du ≈ (t * A) * u -end diff --git a/test/runtests.jl b/test/runtests.jl index ad59fe86d..d62fb5f62 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -23,13 +23,11 @@ end @time @safetestset "Internal Rootfinders" include("internal_rootfinder.jl") @time @safetestset "Plot Vars" include("plot_vars.jl") @time @safetestset "Problem Creation Tests" include("problem_creation_tests.jl") - @time @safetestset "Affine differential equation operators" include("affine_operators_tests.jl") @time @safetestset "Export tests" include("export_tests.jl") @time @safetestset "Remake tests" include("remake_tests.jl") @time @safetestset "High Level solve Interface" include("high_level_solve.jl") @time @safetestset "DiffEqFunction tests" include("diffeqfunction_tests.jl") @time @safetestset "Internal Euler" include("internal_euler_test.jl") - @time @safetestset "Basic Operators Interface" include("basic_operators_interface.jl") @time @safetestset "Norm" include("norm.jl") @time @safetestset "Utils" include("utils.jl") @time @safetestset "ForwardDiff Dual Detection" include("forwarddiff_dual_detection.jl")