From c067135638c17370e5fe5e2f2cd585c2c950a161 Mon Sep 17 00:00:00 2001 From: Chris Rackauckas Date: Sat, 24 Dec 2022 01:24:14 -0500 Subject: [PATCH 01/18] Change requires to weak deps --- Project.toml | 12 ++++ ext/GeneralizedGeneratedExt.jl | 9 +++ ext/MeasurementsExt.jl | 31 ++++++++++ ext/MonteCarloMeasurements.jl | 44 ++++++++++++++ ext/UnitfulExt.jl | 23 ++++++++ src/DiffEqBase.jl | 4 ++ src/init.jl | 101 +++++---------------------------- 7 files changed, 136 insertions(+), 88 deletions(-) create mode 100644 ext/GeneralizedGeneratedExt.jl create mode 100644 ext/MeasurementsExt.jl create mode 100644 ext/MonteCarloMeasurements.jl create mode 100644 ext/UnitfulExt.jl diff --git a/Project.toml b/Project.toml index 2071e9f9d..f0119ddf9 100644 --- a/Project.toml +++ b/Project.toml @@ -34,9 +34,17 @@ ZygoteRules = "700de1a5-db45-46bc-99cf-38207098b444" [weakdeps] Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" +GeneralizedGenerated = "6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" +Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" +MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" +Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [extensions] DistributionsExt = "Distributions" +MeasurementsExt = "Measurements" +MonteCarloMeasurementsExt = "MonteCarloMeasurements" +GeneralizedGeneratedExt = "GeneralizedGenerated" +UnitfulExt = "Unitful" [compat] ArrayInterfaceCore = "0.1.26" @@ -67,14 +75,18 @@ julia = "1.6" Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b" Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +GeneralizedGenerated = "6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240" LabelledArrays = "2ee39098-c373-598a-b85f-a56591580800" +Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" +MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [targets] test = ["Distributed", "LabelledArrays", "ForwardDiff", "InteractiveUtils", "Plots", "Pkg", "Random", "SafeTestsets", "Statistics", "Test", "Distributions"] diff --git a/ext/GeneralizedGeneratedExt.jl b/ext/GeneralizedGeneratedExt.jl new file mode 100644 index 000000000..5a5dd0df1 --- /dev/null +++ b/ext/GeneralizedGeneratedExt.jl @@ -0,0 +1,9 @@ +module GeneralizedGeneratedExt + +using GeneralizedGenerated, DiffEqBase + +function SciMLBase.numargs(::GeneralizedGenerated.RuntimeFn{Args}) where {Args} + GeneralizedGenerated.from_type(Args) |> length +end + +end \ No newline at end of file diff --git a/ext/MeasurementsExt.jl b/ext/MeasurementsExt.jl new file mode 100644 index 000000000..3266da175 --- /dev/null +++ b/ext/MeasurementsExt.jl @@ -0,0 +1,31 @@ +module MeasurementsExt + +using Measurements, DiffEqBase + +function DiffEqBase.promote_u0(u0::AbstractArray{<:Measurements.Measurement}, + p::AbstractArray{<:Measurements.Measurement}, t0) + u0 +end +DiffEqBase.promote_u0(u0, p::AbstractArray{<:Measurements.Measurement}, t0) = eltype(p).(u0) + +DiffEqBase.value(x::Type{Measurements.Measurement{T}}) where {T} = T +DiffEqBase.value(x::Measurements.Measurement) = Measurements.value(x) + +@inline DiffEqBase.fastpow(x::Measurements.Measurement, y::Measurements.Measurement) = x^y + +# Support adaptive steps should be errorless +@inline function DiffEqBase.ODE_DEFAULT_NORM(u::AbstractArray{<:Measurements.Measurement, N}, + t) where {N} + sqrt(sum(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), + zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) +end +@inline function DiffEqBase.ODE_DEFAULT_NORM(u::Array{<:Measurements.Measurement, N}, + t) where {N} + sqrt(sum(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), + zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) +end +@inline function DiffEqBase.ODE_DEFAULT_NORM(u::Measurements.Measurement, t) + abs(Measurements.value(u)) +end + +end \ No newline at end of file diff --git a/ext/MonteCarloMeasurements.jl b/ext/MonteCarloMeasurements.jl new file mode 100644 index 000000000..36c971736 --- /dev/null +++ b/ext/MonteCarloMeasurements.jl @@ -0,0 +1,44 @@ +module MonteCarloMeasurementsExt + +using MonteCarloMeasurements, DiffEqBase + +function DiffEqBase.promote_u0(u0::AbstractArray{<:MonteCarloMeasurements.AbstractParticles}, + p::AbstractArray{<:MonteCarloMeasurements.AbstractParticles}, + t0) + u0 +end +function DiffEqBase.promote_u0(u0, + p::AbstractArray{<:MonteCarloMeasurements.AbstractParticles}, + t0) + eltype(p).(u0) +end + +DiffEqBase.value(x::Type{MonteCarloMeasurements.AbstractParticles{T, N}}) where {T, N} = T +DiffEqBase.value(x::MonteCarloMeasurements.AbstractParticles) = mean(x.particles) + +@inline function DiffEqBase.fastpow(x::MonteCarloMeasurements.AbstractParticles, + y::MonteCarloMeasurements.AbstractParticles) + x^y +end + +# Support adaptive steps should be errorless +@inline function DiffEqBase.ODE_DEFAULT_NORM(u::AbstractArray{ + <:MonteCarloMeasurements.AbstractParticles, + N}, t) where {N} + sqrt(mean(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), + zip((value(x) for x in u), Iterators.repeated(t)))) +end +@inline function DiffEqBase.ODE_DEFAULT_NORM(u::AbstractArray{ + <:MonteCarloMeasurements.AbstractParticles, + N}, + t::AbstractArray{ + <:MonteCarloMeasurements.AbstractParticles, + N}) where {N} + sqrt(mean(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), + zip((value(x) for x in u), Iterators.repeated(value.(t))))) +end +@inline function DiffEqBase.ODE_DEFAULT_NORM(u::MonteCarloMeasurements.AbstractParticles, t) + abs(value(u)) +end + +end \ No newline at end of file diff --git a/ext/UnitfulExt.jl b/ext/UnitfulExt.jl new file mode 100644 index 000000000..e4a5a6ced --- /dev/null +++ b/ext/UnitfulExt.jl @@ -0,0 +1,23 @@ +module UnitfulExt + +using Unitful, DiffEqBase + +# Support adaptive errors should be errorless for exponentiation +DiffEqBase.value(x::Type{Unitful.AbstractQuantity{T, D, U}}) where {T, D, U} = T +DiffEqBase.value(x::Unitful.AbstractQuantity) = x.val +@inline function DiffEqBase.ODE_DEFAULT_NORM(u::AbstractArray{<:Unitful.AbstractQuantity, N}, + t) where {N} + sqrt(sum(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), + zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) +end +@inline function DiffEqBase.ODE_DEFAULT_NORM(u::Array{<:Unitful.AbstractQuantity, N}, + t) where {N} + sqrt(sum(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), + zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) +end +@inline DiffEqBase.ODE_DEFAULT_NORM(u::Unitful.AbstractQuantity, t) = abs(value(u)) +@inline function DiffEqBase.UNITLESS_ABS2(x::Unitful.AbstractQuantity) + real(abs2(x) / oneunit(x) * oneunit(x)) +end + +end \ No newline at end of file diff --git a/src/DiffEqBase.jl b/src/DiffEqBase.jl index 590fb8a75..d91bf73a2 100644 --- a/src/DiffEqBase.jl +++ b/src/DiffEqBase.jl @@ -150,5 +150,9 @@ export KeywordArgError, KeywordArgWarn, KeywordArgSilent if !isdefined(Base, :get_extension) include("../ext/DistributionsExt.jl") + include("../ext/MeasurementsExt.jl") + include("../ext/MonteCarloMeasurementsExt.jl") + include("../ext/UnitfulExt.jl") + include("../ext/GeneralizedGeneratedExt.jl") end end # module diff --git a/src/init.jl b/src/init.jl index 4fa6c75d9..70f6cb495 100644 --- a/src/init.jl +++ b/src/init.jl @@ -15,100 +15,25 @@ function SciMLBase.tmap(args...) end function __init__() - @require Measurements="eff96d63-e80a-5855-80a2-b1b0885c5ab7" begin - function promote_u0(u0::AbstractArray{<:Measurements.Measurement}, - p::AbstractArray{<:Measurements.Measurement}, t0) - u0 + if VERSION <= v"1.9" + @require Measurements="eff96d63-e80a-5855-80a2-b1b0885c5ab7" begin + include("../ext/MeasurementsExt.jl") + using MeasurementsExt end - promote_u0(u0, p::AbstractArray{<:Measurements.Measurement}, t0) = eltype(p).(u0) - value(x::Type{Measurements.Measurement{T}}) where {T} = T - value(x::Measurements.Measurement) = Measurements.value(x) - - @inline fastpow(x::Measurements.Measurement, y::Measurements.Measurement) = x^y - - # Support adaptive steps should be errorless - @inline function ODE_DEFAULT_NORM(u::AbstractArray{<:Measurements.Measurement, N}, - t) where {N} - sqrt(sum(x -> ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) - end - @inline function ODE_DEFAULT_NORM(u::Array{<:Measurements.Measurement, N}, - t) where {N} - sqrt(sum(x -> ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) + @require MonteCarloMeasurements="0987c9cc-fe09-11e8-30f0-b96dd679fdca" begin + include("../ext/MonteCarloMeasurementsExt.jl") + using MonteCarloMeasurementsExt end - @inline function ODE_DEFAULT_NORM(u::Measurements.Measurement, t) - abs(Measurements.value(u)) - end - end - - @require MonteCarloMeasurements="0987c9cc-fe09-11e8-30f0-b96dd679fdca" begin - function promote_u0(u0::AbstractArray{<:MonteCarloMeasurements.AbstractParticles}, - p::AbstractArray{<:MonteCarloMeasurements.AbstractParticles}, - t0) - u0 - end - function promote_u0(u0, - p::AbstractArray{<:MonteCarloMeasurements.AbstractParticles}, - t0) - eltype(p).(u0) - end - - value(x::Type{MonteCarloMeasurements.AbstractParticles{T, N}}) where {T, N} = T - value(x::MonteCarloMeasurements.AbstractParticles) = mean(x.particles) - @inline function fastpow(x::MonteCarloMeasurements.AbstractParticles, - y::MonteCarloMeasurements.AbstractParticles) - x^y + @require Unitful="1986cc42-f94f-5a68-af5c-568840ba703d" begin + include("../ext/UnitfulExt.jl") + using UnitfulExt end - # Support adaptive steps should be errorless - @inline function ODE_DEFAULT_NORM(u::AbstractArray{ - <:MonteCarloMeasurements.AbstractParticles, - N}, t) where {N} - sqrt(mean(x -> ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(t)))) - end - @inline function ODE_DEFAULT_NORM(u::AbstractArray{ - <:MonteCarloMeasurements.AbstractParticles, - N}, - t::AbstractArray{ - <:MonteCarloMeasurements.AbstractParticles, - N}) where {N} - sqrt(mean(x -> ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(value.(t))))) - end - @inline function ODE_DEFAULT_NORM(u::MonteCarloMeasurements.AbstractParticles, t) - abs(value(u)) - end - end - - @require Unitful="1986cc42-f94f-5a68-af5c-568840ba703d" begin - # Support adaptive errors should be errorless for exponentiation - value(x::Type{Unitful.AbstractQuantity{T, D, U}}) where {T, D, U} = T - value(x::Unitful.AbstractQuantity) = x.val - @inline function ODE_DEFAULT_NORM(u::AbstractArray{<:Unitful.AbstractQuantity, N}, - t) where {N} - sqrt(sum(x -> ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) - end - @inline function ODE_DEFAULT_NORM(u::Array{<:Unitful.AbstractQuantity, N}, - t) where {N} - sqrt(sum(x -> ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) - end - @inline ODE_DEFAULT_NORM(u::Unitful.AbstractQuantity, t) = abs(value(u)) - @inline function UNITLESS_ABS2(x::Unitful.AbstractQuantity) - real(abs2(x) / oneunit(x) * oneunit(x)) + @require GeneralizedGenerated="6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" begin + include("../ext/GeneralizedGeneratedExt.jl") + using GeneralizedGeneratedExt end end - - @require GeneralizedGenerated="6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" begin function SciMLBase.numargs(::GeneralizedGenerated.RuntimeFn{ - Args - }) where { - Args - } - GeneralizedGenerated.from_type(Args) |> length - end end end From 57cd7ac5d7bcd9839ef959d6e2716906c14754a7 Mon Sep 17 00:00:00 2001 From: Chris Rackauckas Date: Sat, 24 Dec 2022 01:26:44 -0500 Subject: [PATCH 02/18] format --- ext/GeneralizedGeneratedExt.jl | 2 +- ext/MeasurementsExt.jl | 15 ++++++++------- ext/MonteCarloMeasurements.jl | 33 +++++++++++++++++---------------- ext/UnitfulExt.jl | 13 +++++++------ src/init.jl | 2 +- 5 files changed, 34 insertions(+), 31 deletions(-) diff --git a/ext/GeneralizedGeneratedExt.jl b/ext/GeneralizedGeneratedExt.jl index 5a5dd0df1..f5eaec8ce 100644 --- a/ext/GeneralizedGeneratedExt.jl +++ b/ext/GeneralizedGeneratedExt.jl @@ -6,4 +6,4 @@ function SciMLBase.numargs(::GeneralizedGenerated.RuntimeFn{Args}) where {Args} GeneralizedGenerated.from_type(Args) |> length end -end \ No newline at end of file +end diff --git a/ext/MeasurementsExt.jl b/ext/MeasurementsExt.jl index 3266da175..1519f9a9c 100644 --- a/ext/MeasurementsExt.jl +++ b/ext/MeasurementsExt.jl @@ -3,7 +3,7 @@ module MeasurementsExt using Measurements, DiffEqBase function DiffEqBase.promote_u0(u0::AbstractArray{<:Measurements.Measurement}, - p::AbstractArray{<:Measurements.Measurement}, t0) + p::AbstractArray{<:Measurements.Measurement}, t0) u0 end DiffEqBase.promote_u0(u0, p::AbstractArray{<:Measurements.Measurement}, t0) = eltype(p).(u0) @@ -14,18 +14,19 @@ DiffEqBase.value(x::Measurements.Measurement) = Measurements.value(x) @inline DiffEqBase.fastpow(x::Measurements.Measurement, y::Measurements.Measurement) = x^y # Support adaptive steps should be errorless -@inline function DiffEqBase.ODE_DEFAULT_NORM(u::AbstractArray{<:Measurements.Measurement, N}, - t) where {N} +@inline function DiffEqBase.ODE_DEFAULT_NORM(u::AbstractArray{<:Measurements.Measurement, N + }, + t) where {N} sqrt(sum(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) + zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) end @inline function DiffEqBase.ODE_DEFAULT_NORM(u::Array{<:Measurements.Measurement, N}, - t) where {N} + t) where {N} sqrt(sum(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) + zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) end @inline function DiffEqBase.ODE_DEFAULT_NORM(u::Measurements.Measurement, t) abs(Measurements.value(u)) end -end \ No newline at end of file +end diff --git a/ext/MonteCarloMeasurements.jl b/ext/MonteCarloMeasurements.jl index 36c971736..cdcc343f3 100644 --- a/ext/MonteCarloMeasurements.jl +++ b/ext/MonteCarloMeasurements.jl @@ -2,14 +2,15 @@ module MonteCarloMeasurementsExt using MonteCarloMeasurements, DiffEqBase -function DiffEqBase.promote_u0(u0::AbstractArray{<:MonteCarloMeasurements.AbstractParticles}, - p::AbstractArray{<:MonteCarloMeasurements.AbstractParticles}, - t0) +function DiffEqBase.promote_u0(u0::AbstractArray{<:MonteCarloMeasurements.AbstractParticles + }, + p::AbstractArray{<:MonteCarloMeasurements.AbstractParticles}, + t0) u0 end function DiffEqBase.promote_u0(u0, - p::AbstractArray{<:MonteCarloMeasurements.AbstractParticles}, - t0) + p::AbstractArray{<:MonteCarloMeasurements.AbstractParticles}, + t0) eltype(p).(u0) end @@ -17,28 +18,28 @@ DiffEqBase.value(x::Type{MonteCarloMeasurements.AbstractParticles{T, N}}) where DiffEqBase.value(x::MonteCarloMeasurements.AbstractParticles) = mean(x.particles) @inline function DiffEqBase.fastpow(x::MonteCarloMeasurements.AbstractParticles, - y::MonteCarloMeasurements.AbstractParticles) + y::MonteCarloMeasurements.AbstractParticles) x^y end # Support adaptive steps should be errorless @inline function DiffEqBase.ODE_DEFAULT_NORM(u::AbstractArray{ - <:MonteCarloMeasurements.AbstractParticles, - N}, t) where {N} + <:MonteCarloMeasurements.AbstractParticles, + N}, t) where {N} sqrt(mean(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(t)))) + zip((value(x) for x in u), Iterators.repeated(t)))) end @inline function DiffEqBase.ODE_DEFAULT_NORM(u::AbstractArray{ - <:MonteCarloMeasurements.AbstractParticles, - N}, - t::AbstractArray{ - <:MonteCarloMeasurements.AbstractParticles, - N}) where {N} + <:MonteCarloMeasurements.AbstractParticles, + N}, + t::AbstractArray{ + <:MonteCarloMeasurements.AbstractParticles, + N}) where {N} sqrt(mean(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(value.(t))))) + zip((value(x) for x in u), Iterators.repeated(value.(t))))) end @inline function DiffEqBase.ODE_DEFAULT_NORM(u::MonteCarloMeasurements.AbstractParticles, t) abs(value(u)) end -end \ No newline at end of file +end diff --git a/ext/UnitfulExt.jl b/ext/UnitfulExt.jl index e4a5a6ced..65eb1e8b6 100644 --- a/ext/UnitfulExt.jl +++ b/ext/UnitfulExt.jl @@ -5,19 +5,20 @@ using Unitful, DiffEqBase # Support adaptive errors should be errorless for exponentiation DiffEqBase.value(x::Type{Unitful.AbstractQuantity{T, D, U}}) where {T, D, U} = T DiffEqBase.value(x::Unitful.AbstractQuantity) = x.val -@inline function DiffEqBase.ODE_DEFAULT_NORM(u::AbstractArray{<:Unitful.AbstractQuantity, N}, - t) where {N} +@inline function DiffEqBase.ODE_DEFAULT_NORM(u::AbstractArray{<:Unitful.AbstractQuantity, N + }, + t) where {N} sqrt(sum(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) + zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) end @inline function DiffEqBase.ODE_DEFAULT_NORM(u::Array{<:Unitful.AbstractQuantity, N}, - t) where {N} + t) where {N} sqrt(sum(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) + zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) end @inline DiffEqBase.ODE_DEFAULT_NORM(u::Unitful.AbstractQuantity, t) = abs(value(u)) @inline function DiffEqBase.UNITLESS_ABS2(x::Unitful.AbstractQuantity) real(abs2(x) / oneunit(x) * oneunit(x)) end -end \ No newline at end of file +end diff --git a/src/init.jl b/src/init.jl index 70f6cb495..8eb273307 100644 --- a/src/init.jl +++ b/src/init.jl @@ -31,7 +31,7 @@ function __init__() using UnitfulExt end - @require GeneralizedGenerated="6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" begin + @require GeneralizedGenerated="6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" begin include("../ext/GeneralizedGeneratedExt.jl") using GeneralizedGeneratedExt end From c119d6ac362366e684b1ee96d0dc3d1f7a86e733 Mon Sep 17 00:00:00 2001 From: Chris Rackauckas Date: Sat, 24 Dec 2022 01:29:52 -0500 Subject: [PATCH 03/18] Fix typo --- ext/{MonteCarloMeasurements.jl => MonteCarloMeasurementsExt.jl} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ext/{MonteCarloMeasurements.jl => MonteCarloMeasurementsExt.jl} (100%) diff --git a/ext/MonteCarloMeasurements.jl b/ext/MonteCarloMeasurementsExt.jl similarity index 100% rename from ext/MonteCarloMeasurements.jl rename to ext/MonteCarloMeasurementsExt.jl From b8e59b1305cbc75992277927701a3350e603e555 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 24 Dec 2022 02:15:31 -0500 Subject: [PATCH 04/18] Update src/init.jl Co-authored-by: Oscar Smith --- src/init.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/init.jl b/src/init.jl index 8eb273307..db3fa4ed5 100644 --- a/src/init.jl +++ b/src/init.jl @@ -15,7 +15,7 @@ function SciMLBase.tmap(args...) end function __init__() - if VERSION <= v"1.9" + if !isdefined(Base, :get_extension) @require Measurements="eff96d63-e80a-5855-80a2-b1b0885c5ab7" begin include("../ext/MeasurementsExt.jl") using MeasurementsExt From 640966f989524c4407688e9f0cdbe8b43138a7ac Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Wed, 28 Dec 2022 10:16:19 -0500 Subject: [PATCH 05/18] Update Project.toml --- Project.toml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index f0119ddf9..e14a8fb50 100644 --- a/Project.toml +++ b/Project.toml @@ -88,5 +88,11 @@ Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +GeneralizedGenerated = "6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" +Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" +MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" +Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + [targets] -test = ["Distributed", "LabelledArrays", "ForwardDiff", "InteractiveUtils", "Plots", "Pkg", "Random", "SafeTestsets", "Statistics", "Test", "Distributions"] +test = ["Distributed", "GeneralizedGenerated", "Measurements", "MonteCarloMeasurements", "Unitful", "LabelledArrays", "ForwardDiff", "InteractiveUtils", "Plots", "Pkg", "Random", "SafeTestsets", "Statistics", "Test", "Distributions"] From 065ace118f59afe63bd8a6a38d3885ea806959c1 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Wed, 28 Dec 2022 10:40:23 -0500 Subject: [PATCH 06/18] Update Project.toml --- Project.toml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Project.toml b/Project.toml index e14a8fb50..7c1034fc2 100644 --- a/Project.toml +++ b/Project.toml @@ -88,11 +88,5 @@ Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -GeneralizedGenerated = "6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" -Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" -MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" -Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - [targets] test = ["Distributed", "GeneralizedGenerated", "Measurements", "MonteCarloMeasurements", "Unitful", "LabelledArrays", "ForwardDiff", "InteractiveUtils", "Plots", "Pkg", "Random", "SafeTestsets", "Statistics", "Test", "Distributions"] From 3e74c189fec777d5c5c2547b69634a1478587bea Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Fri, 13 Jan 2023 14:17:57 -0500 Subject: [PATCH 07/18] Update ext/GeneralizedGeneratedExt.jl Co-authored-by: Oscar Smith --- ext/GeneralizedGeneratedExt.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ext/GeneralizedGeneratedExt.jl b/ext/GeneralizedGeneratedExt.jl index f5eaec8ce..472a40f49 100644 --- a/ext/GeneralizedGeneratedExt.jl +++ b/ext/GeneralizedGeneratedExt.jl @@ -1,6 +1,7 @@ module GeneralizedGeneratedExt -using GeneralizedGenerated, DiffEqBase +using DiffEqBase +isdefined(Base, :get_extension) ? (using GeneralizedGenerated) : (using ..GeneralizedGenerated) function SciMLBase.numargs(::GeneralizedGenerated.RuntimeFn{Args}) where {Args} GeneralizedGenerated.from_type(Args) |> length From a4c6975314223ff87c5dea32b3e315d6340b3929 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Fri, 13 Jan 2023 14:22:35 -0500 Subject: [PATCH 08/18] Update ext/UnitfulExt.jl --- ext/UnitfulExt.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ext/UnitfulExt.jl b/ext/UnitfulExt.jl index 65eb1e8b6..d73b91664 100644 --- a/ext/UnitfulExt.jl +++ b/ext/UnitfulExt.jl @@ -1,6 +1,7 @@ module UnitfulExt -using Unitful, DiffEqBase +using DiffEqBase +isdefined(Base, :get_extension) ? (using Unitful) : (using ..Unitful) # Support adaptive errors should be errorless for exponentiation DiffEqBase.value(x::Type{Unitful.AbstractQuantity{T, D, U}}) where {T, D, U} = T From 609f0ea40ec93f884898dcb685be9d97af7e2dfd Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Fri, 13 Jan 2023 14:22:41 -0500 Subject: [PATCH 09/18] Update ext/MonteCarloMeasurementsExt.jl --- ext/MonteCarloMeasurementsExt.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ext/MonteCarloMeasurementsExt.jl b/ext/MonteCarloMeasurementsExt.jl index cdcc343f3..9932d1082 100644 --- a/ext/MonteCarloMeasurementsExt.jl +++ b/ext/MonteCarloMeasurementsExt.jl @@ -1,6 +1,7 @@ module MonteCarloMeasurementsExt -using MonteCarloMeasurements, DiffEqBase +using DiffEqBase +isdefined(Base, :get_extension) ? (using MonteCarloMeasurements) : (using ..MonteCarloMeasurements) function DiffEqBase.promote_u0(u0::AbstractArray{<:MonteCarloMeasurements.AbstractParticles }, From 90ea5fd452e15c411c5cfaab57486a2d848e5d19 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Fri, 13 Jan 2023 14:22:47 -0500 Subject: [PATCH 10/18] Update ext/MeasurementsExt.jl --- ext/MeasurementsExt.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ext/MeasurementsExt.jl b/ext/MeasurementsExt.jl index 1519f9a9c..59877b543 100644 --- a/ext/MeasurementsExt.jl +++ b/ext/MeasurementsExt.jl @@ -1,6 +1,7 @@ module MeasurementsExt -using Measurements, DiffEqBase +using DiffEqBase +isdefined(Base, :get_extension) ? (using Measurements) : (using ..Measurements) function DiffEqBase.promote_u0(u0::AbstractArray{<:Measurements.Measurement}, p::AbstractArray{<:Measurements.Measurement}, t0) From c0bd2b21adc47c7366d13ff7f10f21a9c587d780 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Fri, 13 Jan 2023 14:41:31 -0500 Subject: [PATCH 11/18] Update init.jl --- src/init.jl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/init.jl b/src/init.jl index db3fa4ed5..6ac1435dc 100644 --- a/src/init.jl +++ b/src/init.jl @@ -18,22 +18,18 @@ function __init__() if !isdefined(Base, :get_extension) @require Measurements="eff96d63-e80a-5855-80a2-b1b0885c5ab7" begin include("../ext/MeasurementsExt.jl") - using MeasurementsExt end @require MonteCarloMeasurements="0987c9cc-fe09-11e8-30f0-b96dd679fdca" begin include("../ext/MonteCarloMeasurementsExt.jl") - using MonteCarloMeasurementsExt end @require Unitful="1986cc42-f94f-5a68-af5c-568840ba703d" begin include("../ext/UnitfulExt.jl") - using UnitfulExt end @require GeneralizedGenerated="6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" begin include("../ext/GeneralizedGeneratedExt.jl") - using GeneralizedGeneratedExt end end end From c933328a4c2c7faa16eec1e54086bef3543d8d1f Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 14 Jan 2023 10:53:40 -0500 Subject: [PATCH 12/18] Update DiffEqBase.jl --- src/DiffEqBase.jl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/DiffEqBase.jl b/src/DiffEqBase.jl index d91bf73a2..4c412dd1d 100644 --- a/src/DiffEqBase.jl +++ b/src/DiffEqBase.jl @@ -1,6 +1,10 @@ module DiffEqBase -using Requires, ArrayInterfaceCore +if !isdefined(Base, :get_extension) + using Requires +end + +using ArrayInterfaceCore using StaticArrays # data arrays From 85e87733dd9881d69c2997634c11c271dcb7f1db Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 14 Jan 2023 10:54:46 -0500 Subject: [PATCH 13/18] Update init.jl --- src/init.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/init.jl b/src/init.jl index 6ac1435dc..a4bf2f501 100644 --- a/src/init.jl +++ b/src/init.jl @@ -15,7 +15,7 @@ function SciMLBase.tmap(args...) end function __init__() - if !isdefined(Base, :get_extension) + @static if !isdefined(Base, :get_extension) @require Measurements="eff96d63-e80a-5855-80a2-b1b0885c5ab7" begin include("../ext/MeasurementsExt.jl") end From cde20529dc2c932787af4388535b0eaf2a16c7cc Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 14 Jan 2023 10:54:59 -0500 Subject: [PATCH 14/18] Update DiffEqBase.jl --- src/DiffEqBase.jl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/DiffEqBase.jl b/src/DiffEqBase.jl index 4c412dd1d..7d5b0775e 100644 --- a/src/DiffEqBase.jl +++ b/src/DiffEqBase.jl @@ -154,9 +154,5 @@ export KeywordArgError, KeywordArgWarn, KeywordArgSilent if !isdefined(Base, :get_extension) include("../ext/DistributionsExt.jl") - include("../ext/MeasurementsExt.jl") - include("../ext/MonteCarloMeasurementsExt.jl") - include("../ext/UnitfulExt.jl") - include("../ext/GeneralizedGeneratedExt.jl") end end # module From 8cec96e0817d9b222093561b3d92dfa170ae1a91 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sun, 15 Jan 2023 11:34:33 -0500 Subject: [PATCH 15/18] Update ext/UnitfulExt.jl --- ext/UnitfulExt.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/UnitfulExt.jl b/ext/UnitfulExt.jl index d73b91664..97d2b1054 100644 --- a/ext/UnitfulExt.jl +++ b/ext/UnitfulExt.jl @@ -10,12 +10,12 @@ DiffEqBase.value(x::Unitful.AbstractQuantity) = x.val }, t) where {N} sqrt(sum(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) + zip((DiffEqBase.value(x) for x in u), Iterators.repeated(t))) / length(u)) end @inline function DiffEqBase.ODE_DEFAULT_NORM(u::Array{<:Unitful.AbstractQuantity, N}, t) where {N} sqrt(sum(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), - zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) + zip((DiffEEqBase.value(x) for x in u), Iterators.repeated(t))) / length(u)) end @inline DiffEqBase.ODE_DEFAULT_NORM(u::Unitful.AbstractQuantity, t) = abs(value(u)) @inline function DiffEqBase.UNITLESS_ABS2(x::Unitful.AbstractQuantity) From 009e0f05b3948bb6e95f3769b4a2b4537b03065a Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sun, 15 Jan 2023 11:35:47 -0500 Subject: [PATCH 16/18] Update UnitfulExt.jl --- ext/UnitfulExt.jl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ext/UnitfulExt.jl b/ext/UnitfulExt.jl index 97d2b1054..6cf69719e 100644 --- a/ext/UnitfulExt.jl +++ b/ext/UnitfulExt.jl @@ -1,21 +1,22 @@ module UnitfulExt using DiffEqBase +import DiffEqBase: value isdefined(Base, :get_extension) ? (using Unitful) : (using ..Unitful) # Support adaptive errors should be errorless for exponentiation -DiffEqBase.value(x::Type{Unitful.AbstractQuantity{T, D, U}}) where {T, D, U} = T -DiffEqBase.value(x::Unitful.AbstractQuantity) = x.val +value(x::Type{Unitful.AbstractQuantity{T, D, U}}) where {T, D, U} = T +value(x::Unitful.AbstractQuantity) = x.val @inline function DiffEqBase.ODE_DEFAULT_NORM(u::AbstractArray{<:Unitful.AbstractQuantity, N }, t) where {N} sqrt(sum(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), - zip((DiffEqBase.value(x) for x in u), Iterators.repeated(t))) / length(u)) + zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) end @inline function DiffEqBase.ODE_DEFAULT_NORM(u::Array{<:Unitful.AbstractQuantity, N}, t) where {N} sqrt(sum(x -> DiffEqBase.ODE_DEFAULT_NORM(x[1], x[2]), - zip((DiffEEqBase.value(x) for x in u), Iterators.repeated(t))) / length(u)) + zip((value(x) for x in u), Iterators.repeated(t))) / length(u)) end @inline DiffEqBase.ODE_DEFAULT_NORM(u::Unitful.AbstractQuantity, t) = abs(value(u)) @inline function DiffEqBase.UNITLESS_ABS2(x::Unitful.AbstractQuantity) From 8b71e6d0f37f987b32842f42d2ca254d73bb3502 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sun, 15 Jan 2023 11:35:59 -0500 Subject: [PATCH 17/18] Update MonteCarloMeasurementsExt.jl --- ext/MonteCarloMeasurementsExt.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/ext/MonteCarloMeasurementsExt.jl b/ext/MonteCarloMeasurementsExt.jl index 9932d1082..a6787f935 100644 --- a/ext/MonteCarloMeasurementsExt.jl +++ b/ext/MonteCarloMeasurementsExt.jl @@ -1,6 +1,7 @@ module MonteCarloMeasurementsExt using DiffEqBase +import DiffEqBase: value isdefined(Base, :get_extension) ? (using MonteCarloMeasurements) : (using ..MonteCarloMeasurements) function DiffEqBase.promote_u0(u0::AbstractArray{<:MonteCarloMeasurements.AbstractParticles From 06914b4c8fb55ea56832c1d2fe3be86084a4a042 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sun, 15 Jan 2023 11:36:15 -0500 Subject: [PATCH 18/18] Update MeasurementsExt.jl --- ext/MeasurementsExt.jl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ext/MeasurementsExt.jl b/ext/MeasurementsExt.jl index 59877b543..ce35a23aa 100644 --- a/ext/MeasurementsExt.jl +++ b/ext/MeasurementsExt.jl @@ -1,6 +1,7 @@ module MeasurementsExt using DiffEqBase +import DiffEqBase: value isdefined(Base, :get_extension) ? (using Measurements) : (using ..Measurements) function DiffEqBase.promote_u0(u0::AbstractArray{<:Measurements.Measurement}, @@ -9,8 +10,8 @@ function DiffEqBase.promote_u0(u0::AbstractArray{<:Measurements.Measurement}, end DiffEqBase.promote_u0(u0, p::AbstractArray{<:Measurements.Measurement}, t0) = eltype(p).(u0) -DiffEqBase.value(x::Type{Measurements.Measurement{T}}) where {T} = T -DiffEqBase.value(x::Measurements.Measurement) = Measurements.value(x) +value(x::Type{Measurements.Measurement{T}}) where {T} = T +value(x::Measurements.Measurement) = Measurements.value(x) @inline DiffEqBase.fastpow(x::Measurements.Measurement, y::Measurements.Measurement) = x^y