diff --git a/Manifest.toml b/Manifest.toml index 9313597..be6aff4 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -2,12 +2,12 @@ julia_version = "1.12.0-DEV" manifest_format = "2.0" -project_hash = "9d5249fe19b49a22ced02b22d1ae82c501e8dc6e" +project_hash = "6f020e73f91c8d84d5a5677636dbdbaecdf0c01c" [[deps.ADTypes]] -git-tree-sha1 = "aa4d425271a914d8c4af6ad9fccb6eb3aec662c7" +git-tree-sha1 = "5a5eafb8344b81b8c2237f8a6f6b3602b3f6180e" uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "1.6.1" +version = "1.8.1" weakdeps = ["ChainRulesCore", "EnzymeCore"] [deps.ADTypes.extensions] @@ -37,30 +37,45 @@ version = "0.6.2" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" +[[deps.AbstractFFTs]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" +uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" +version = "1.5.0" +weakdeps = ["ChainRulesCore", "Test"] + + [deps.AbstractFFTs.extensions] + AbstractFFTsChainRulesCoreExt = "ChainRulesCore" + AbstractFFTsTestExt = "Test" + [[deps.AbstractTrees]] git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" version = "0.4.5" [[deps.Accessors]] -deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "LinearAlgebra", "MacroTools", "Markdown", "Test"] -git-tree-sha1 = "f61b15be1d76846c0ce31d3fcfac5380ae53db6a" +deps = ["CompositionsBase", "ConstructionBase", "InverseFunctions", "LinearAlgebra", "MacroTools", "Markdown"] +git-tree-sha1 = "b392ede862e506d451fc1616e79aa6f4c673dab8" uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" -version = "0.1.37" +version = "0.1.38" [deps.Accessors.extensions] AccessorsAxisKeysExt = "AxisKeys" + AccessorsDatesExt = "Dates" AccessorsIntervalSetsExt = "IntervalSets" AccessorsStaticArraysExt = "StaticArrays" AccessorsStructArraysExt = "StructArrays" + AccessorsTestExt = "Test" AccessorsUnitfulExt = "Unitful" [deps.Accessors.weakdeps] AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" Requires = "ae029012-a4dd-5104-9daa-d747884805df" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [[deps.Adapt]] @@ -91,9 +106,9 @@ version = "0.4.0" [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra"] -git-tree-sha1 = "8c5b39db37c1d0340bf3b14895fba160c2d6cbb5" +git-tree-sha1 = "3640d077b6dafd64ceb8fd5c1ec76f7ca53bcf76" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.14.0" +version = "7.16.0" [deps.ArrayInterface.extensions] ArrayInterfaceBandedMatricesExt = "BandedMatrices" @@ -104,7 +119,7 @@ version = "7.14.0" ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" ArrayInterfaceReverseDiffExt = "ReverseDiff" ArrayInterfaceSparseArraysExt = "SparseArrays" - ArrayInterfaceStaticArraysExt = "StaticArrays" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" ArrayInterfaceTrackerExt = "Tracker" [deps.ArrayInterface.weakdeps] @@ -116,14 +131,14 @@ version = "7.14.0" GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" [[deps.ArrayLayouts]] deps = ["FillArrays", "LinearAlgebra"] -git-tree-sha1 = "ce2ca959f932f5dad70697dd93133d1167cf1e4e" +git-tree-sha1 = "0dd7edaff278e346eb0ca07a7e75c9438408a3ce" uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" -version = "1.10.2" +version = "1.10.3" weakdeps = ["SparseArrays"] [deps.ArrayLayouts.extensions] @@ -143,6 +158,11 @@ version = "0.1.0" uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" version = "1.11.0" +[[deps.Bijections]] +git-tree-sha1 = "d8b0439d2be438a5f2cd68ec158fe08a7b2595b7" +uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" +version = "0.1.9" + [[deps.BitTwiddlingConvenienceFunctions]] deps = ["Static"] git-tree-sha1 = "f21cfd4950cb9f0587d5067e69405ad2acd27b87" @@ -160,11 +180,11 @@ git-tree-sha1 = "5a97e67919535d6841172016c9530fd69494e5ec" uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" version = "0.2.6" -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" +[[deps.CSTParser]] +deps = ["Tokenize"] +git-tree-sha1 = "0157e592151e39fa570645e2b2debcdfb8a0f112" +uuid = "00ebfdb7-1f24-5e51-bd34-a7502290713f" +version = "3.4.3" [[deps.CentralizedCaches]] git-tree-sha1 = "92a1332057796878a8f56f403de6b1963713f08f" @@ -173,15 +193,15 @@ version = "1.1.0" [[deps.ChainRules]] deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] -git-tree-sha1 = "227985d885b4dbce5e18a96f9326ea1e836e5a03" +git-tree-sha1 = "be227d253d132a6d57f9ccf5f67c0fb6488afd87" uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.69.0" +version = "1.71.0" [[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "71acdbf594aab5bbb2cec89b208c41b4c411e49f" +git-tree-sha1 = "3e4b134270b372f2ed4d4d0e936aabaefc1802bc" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.24.0" +version = "1.25.0" weakdeps = ["SparseArrays"] [deps.ChainRulesCore.extensions] @@ -195,25 +215,31 @@ version = "0.1.13" [[deps.CodeTracking]] deps = ["InteractiveUtils", "UUIDs"] -git-tree-sha1 = "c0216e792f518b39b22212127d4a84dc31e4e386" +git-tree-sha1 = "7eee164f122511d3e4e1ebadb7956939ea7e1c77" uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" -version = "1.3.5" +version = "1.3.6" [[deps.Combinatorics]] git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" version = "1.0.2" +[[deps.CommonMark]] +deps = ["Crayons", "JSON", "PrecompileTools", "URIs"] +git-tree-sha1 = "532c4185d3c9037c0237546d817858b23cf9e071" +uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +version = "0.8.12" + [[deps.CommonSolve]] git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" version = "0.2.4" [[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" +deps = ["MacroTools"] +git-tree-sha1 = "cda2cfaebb4be89c9084adaca7dd7333369715c5" uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" +version = "0.3.1" [[deps.CommonWorldInvalidations]] git-tree-sha1 = "ae52d1c52048455e85a387fbee9be553ec2b68d0" @@ -222,9 +248,9 @@ version = "1.0.0" [[deps.Compat]] deps = ["TOML", "UUIDs"] -git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" +git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.15.0" +version = "4.16.0" weakdeps = ["Dates", "LinearAlgebra"] [deps.Compat.extensions] @@ -235,6 +261,11 @@ deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" version = "1.1.1+0" +[[deps.CompositeTypes]] +git-tree-sha1 = "bce26c3dab336582805503bed209faab1c279768" +uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" +version = "0.1.4" + [[deps.CompositionsBase]] git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" @@ -254,14 +285,24 @@ deps = ["LinearAlgebra"] git-tree-sha1 = "d8a9c0b6ac2d9081bf76324b39c78ca3ce4f0c98" uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" version = "1.5.6" +weakdeps = ["IntervalSets", "StaticArrays"] [deps.ConstructionBase.extensions] ConstructionBaseIntervalSetsExt = "IntervalSets" ConstructionBaseStaticArraysExt = "StaticArrays" - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" +[[deps.ControlSystemsBase]] +deps = ["DSP", "ForwardDiff", "IterTools", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MatrixEquations", "MatrixPencils", "Polyester", "Polynomials", "PrecompileTools", "Printf", "Random", "RecipesBase", "SparseArrays", "StaticArraysCore", "UUIDs"] +git-tree-sha1 = "163d11b7aee72d66c3e2e91f2aa48bb709f8439f" +uuid = "aaaaaaaa-a6ca-5380-bf3e-84a91bcd477e" +version = "1.10.3" + + [deps.ControlSystemsBase.extensions] + ControlSystemsBaseImplicitDifferentiationExt = ["ImplicitDifferentiation", "ComponentArrays"] + + [deps.ControlSystemsBase.weakdeps] + ComponentArrays = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66" + ImplicitDifferentiation = "57b37032-215b-411a-8a7c-41a003a55207" [[deps.CpuId]] deps = ["Markdown"] @@ -269,29 +310,57 @@ git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406" uuid = "adafc99b-e345-5852-983c-f28acb93d879" version = "0.3.1" +[[deps.Crayons]] +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.1.1" + [[deps.Cthulhu]] deps = ["CodeTracking", "FoldingTrees", "InteractiveUtils", "JuliaSyntax", "PrecompileTools", "Preferences", "REPL", "TypedSyntax", "UUIDs", "Unicode", "WidthLimitedIO"] -git-tree-sha1 = "45f0cf8cb6b384df48b4cf3cfbbcc27cfe2700e2" +git-tree-sha1 = "6dd420e944a3be328f91088d6a1af02576ccba4b" uuid = "f68482b8-f384-11e8-15f7-abe071a5a75f" -version = "2.12.7" +version = "2.15.0" [[deps.DAECompiler]] deps = ["Accessors", "CentralizedCaches", "ChainRules", "ChainRulesCore", "Cthulhu", "DiffEqBase", "DiffEqCallbacks", "Diffractor", "Distributions", "ExprTools", "ForwardDiff", "Graphs", "LinearAlgebra", "NonlinearSolve", "OrderedCollections", "OrdinaryDiffEq", "PrecompileTools", "Preferences", "REPL", "Random", "SciMLBase", "SciMLSensitivity", "SparseArrays", "StateSelection", "StaticArraysCore", "Sundials", "SymbolicIndexingInterface", "TimerOutputs", "Tracy"] path = "." uuid = "32805668-c3d0-42c2-aafd-0d0a9857a104" version = "1.21.0" +weakdeps = ["ModelingToolkit"] [deps.DAECompiler.extensions] DAECompilerModelingToolkitExt = "ModelingToolkit" - [deps.DAECompiler.weakdeps] - ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" +[[deps.DSP]] +deps = ["Compat", "FFTW", "IterTools", "LinearAlgebra", "Polynomials", "Random", "Reexport", "SpecialFunctions", "Statistics"] +git-tree-sha1 = "f7f4319567fe769debfcf7f8c03d8da1dd4e2fb0" +uuid = "717857b8-e6f2-59f4-9121-6e50c889abd2" +version = "0.7.9" [[deps.DataAPI]] git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" version = "1.16.0" +[[deps.DataInterpolations]] +deps = ["FindFirstFunctions", "ForwardDiff", "LinearAlgebra", "PrettyTables", "RecipesBase", "Reexport"] +git-tree-sha1 = "10b07a0c9edca784875c782206f66a4b68ac403f" +uuid = "82cc6244-b520-54b8-b5a6-8a565e85f1d0" +version = "6.4.0" + + [deps.DataInterpolations.extensions] + DataInterpolationsChainRulesCoreExt = "ChainRulesCore" + DataInterpolationsOptimExt = "Optim" + DataInterpolationsRegularizationToolsExt = "RegularizationTools" + DataInterpolationsSymbolicsExt = "Symbolics" + + [deps.DataInterpolations.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Optim = "429524aa-4258-5aef-a3af-852621145aeb" + RegularizationTools = "29dad682-9a27-4bc3-9c72-016788665182" + Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" @@ -309,10 +378,10 @@ uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" version = "1.11.0" [[deps.DiffEqBase]] -deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Static", "StaticArraysCore", "Statistics", "Tricks", "TruncatedStacktraces"] -git-tree-sha1 = "d1e8a4642e28b0945bde6e2e1ac569b9e0abd728" +deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "Tricks", "TruncatedStacktraces"] +git-tree-sha1 = "d7d43a1cc11dc4e4e5378816ae720fccd75a77c8" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.151.5" +version = "6.155.0" [deps.DiffEqBase.extensions] DiffEqBaseCUDAExt = "CUDA" @@ -324,6 +393,7 @@ version = "6.151.5" DiffEqBaseMeasurementsExt = "Measurements" DiffEqBaseMonteCarloMeasurementsExt = "MonteCarloMeasurements" DiffEqBaseReverseDiffExt = "ReverseDiff" + DiffEqBaseSparseArraysExt = "SparseArrays" DiffEqBaseTrackerExt = "Tracker" DiffEqBaseUnitfulExt = "Unitful" @@ -337,21 +407,22 @@ version = "6.151.5" Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [[deps.DiffEqCallbacks]] deps = ["DataStructures", "DiffEqBase", "ForwardDiff", "Functors", "LinearAlgebra", "Markdown", "NonlinearSolve", "Parameters", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"] -git-tree-sha1 = "c959cfd2657d16beada157a74d52269e8556500e" +git-tree-sha1 = "befc86364d9b36abc6d874f91ab5d7b4d5e6bb62" uuid = "459566f4-90b8-5000-8ac3-15dfb0a30def" -version = "3.6.2" +version = "3.8.0" weakdeps = ["OrdinaryDiffEq", "Sundials"] [[deps.DiffEqNoiseProcess]] -deps = ["DiffEqBase", "Distributions", "GPUArraysCore", "LinearAlgebra", "Markdown", "Optim", "PoissonRandom", "QuadGK", "Random", "Random123", "RandomNumbers", "RecipesBase", "RecursiveArrayTools", "Requires", "ResettableStacks", "SciMLBase", "StaticArraysCore", "Statistics"] -git-tree-sha1 = "ed0158e758723b4d429afbbb5d98c5afd3458dc1" +deps = ["DiffEqBase", "Distributions", "GPUArraysCore", "LinearAlgebra", "Markdown", "Optim", "PoissonRandom", "QuadGK", "Random", "Random123", "RandomNumbers", "RecipesBase", "RecursiveArrayTools", "ResettableStacks", "SciMLBase", "StaticArraysCore", "Statistics"] +git-tree-sha1 = "ab1e6515ce15f01316a9825b02729fefa51726bd" uuid = "77a26b50-5914-5dd7-bc55-306e6241c503" -version = "5.22.0" +version = "5.23.0" [deps.DiffEqNoiseProcess.extensions] DiffEqNoiseProcessReverseDiffExt = "ReverseDiff" @@ -395,9 +466,9 @@ version = "1.11.0" [[deps.Distributions]] deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "9c405847cc7ecda2dc921ccf18b47ca150d7317e" +git-tree-sha1 = "e6c693a0e4394f8fda0e51a5bdf5aef26f8235e9" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.109" +version = "0.25.111" [deps.Distributions.extensions] DistributionsChainRulesCoreExt = "ChainRulesCore" @@ -415,16 +486,46 @@ git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" version = "0.9.3" +[[deps.DomainSets]] +deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "Random", "StaticArrays"] +git-tree-sha1 = "490392af2c7d63183bfa2c8aaa6ab981c5ba7561" +uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" +version = "0.7.14" + + [deps.DomainSets.extensions] + DomainSetsMakieExt = "Makie" + + [deps.DomainSets.weakdeps] + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + [[deps.Downloads]] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" version = "1.6.0" -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" +[[deps.DynamicPolynomials]] +deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"] +git-tree-sha1 = "30a1848c4f4fc35d1d4bbbd125650f6a11b5bc6c" +uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" +version = "0.5.7" + +[[deps.DynamicQuantities]] +deps = ["Compat", "PackageExtensionCompat", "Tricks"] +git-tree-sha1 = "412b25c7d99ec6b06967d315c7b29bb8e484f092" +uuid = "06fc5a27-2a28-4c7c-a15d-362465fb6821" +version = "0.13.2" + + [deps.DynamicQuantities.extensions] + DynamicQuantitiesLinearAlgebraExt = "LinearAlgebra" + DynamicQuantitiesMeasurementsExt = "Measurements" + DynamicQuantitiesScientificTypesExt = "ScientificTypes" + DynamicQuantitiesUnitfulExt = "Unitful" + + [deps.DynamicQuantities.weakdeps] + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [[deps.EllipsisNotation]] deps = ["StaticArrayInterface"] @@ -438,9 +539,9 @@ uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" version = "1.0.4" [[deps.EnzymeCore]] -git-tree-sha1 = "d445df66dd8761a4c27df950db89c6a3a0629fe7" +git-tree-sha1 = "8f205a601760f4798a10f138c3940f0451d95188" uuid = "f151be2c-9106-41f4-ab19-57ee4f262869" -version = "0.7.7" +version = "0.7.8" weakdeps = ["Adapt"] [deps.EnzymeCore.extensions] @@ -457,6 +558,18 @@ git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" version = "0.1.10" +[[deps.FFTW]] +deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] +git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d" +uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" +version = "1.8.0" + +[[deps.FFTW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" +uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" +version = "3.3.10+0" + [[deps.FastBroadcast]] deps = ["ArrayInterface", "LinearAlgebra", "Polyester", "Static", "StaticArrayInterface", "StrideArraysCore"] git-tree-sha1 = "ab1b34570bcdf272899062e1a56285a53ecaae08" @@ -480,9 +593,9 @@ version = "1.11.0" [[deps.FillArrays]] deps = ["LinearAlgebra"] -git-tree-sha1 = "0653c0a2396a6da5bc4766c43041ef5fd3efbe57" +git-tree-sha1 = "6a70198746448456524cb442b8af316927ff3e1a" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.11.0" +version = "1.13.0" weakdeps = ["PDMats", "SparseArrays", "Statistics"] [deps.FillArrays.extensions] @@ -491,9 +604,9 @@ weakdeps = ["PDMats", "SparseArrays", "Statistics"] FillArraysStatisticsExt = "Statistics" [[deps.FindFirstFunctions]] -git-tree-sha1 = "e90fef90f7d75e6a5b435b0fd65609759f99717a" +git-tree-sha1 = "670e1d9ceaa4a3161d32fe2d2fb2177f8d78b330" uuid = "64ca27bc-2ba2-4a57-88aa-44e436879224" -version = "1.2.0" +version = "1.4.1" [[deps.FiniteDiff]] deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"] @@ -511,12 +624,23 @@ version = "2.23.1" BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" +[[deps.FiniteDifferences]] +deps = ["ChainRulesCore", "LinearAlgebra", "Printf", "Random", "Richardson", "SparseArrays", "StaticArrays"] +git-tree-sha1 = "06d76c780d657729cf20821fb5832c6cc4dfd0b5" +uuid = "26cc04aa-876d-5657-8c51-4c34ba976000" +version = "0.12.32" + [[deps.FoldingTrees]] deps = ["AbstractTrees", "REPL"] git-tree-sha1 = "d94efd85f2fe192cdf664aa8b7c431592faed59e" uuid = "1eca21be-9b9b-4ed8-839a-6d8ae26b1781" version = "1.2.1" +[[deps.Format]] +git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" +uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" +version = "1.3.7" + [[deps.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] git-tree-sha1 = "53e4b5e669a1010dd0a3e94205ea5e9737682212" @@ -542,9 +666,9 @@ version = "0.1.3" [[deps.Functors]] deps = ["LinearAlgebra"] -git-tree-sha1 = "8a66c07630d6428eaab3506a0eabfcf4a9edea05" +git-tree-sha1 = "64d8e93700c7a3f28f717d265382d52fac9fa1c1" uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.11" +version = "0.4.12" [[deps.Future]] deps = ["Random"] @@ -563,6 +687,11 @@ git-tree-sha1 = "af49a0851f8113fcfae2ef5027c6d49d0acec39b" uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e" version = "0.5.4" +[[deps.Glob]] +git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" +uuid = "c27321d9-0574-5035-807b-f59d2c89b15c" +version = "1.3.1" + [[deps.Graphs]] deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] git-tree-sha1 = "ebd18c326fa6cee1efb7da9a3b45cf69da2ed4d9" @@ -576,10 +705,10 @@ uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0" version = "0.1.17" [[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" +deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] +git-tree-sha1 = "7c4195be1649ae622304031ed46a2f4df989f1eb" uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" +version = "0.3.24" [[deps.IfElse]] git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" @@ -592,31 +721,47 @@ uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" version = "0.1.5" [[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "14eb2b542e748570b56446f4c50fbfb2306ebc45" +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "10bd689145d2c3b2a9844005d01087cc1194e79e" uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2024.2.0+0" +version = "2024.2.1+0" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" version = "1.11.0" +[[deps.IntervalSets]] +git-tree-sha1 = "dba9ddf07f77f60450fe5d2e2beb9854d9a49bd0" +uuid = "8197267c-284f-5f27-9208-e0e47529a953" +version = "0.7.10" +weakdeps = ["Random", "RecipesBase", "Statistics"] + + [deps.IntervalSets.extensions] + IntervalSetsRandomExt = "Random" + IntervalSetsRecipesBaseExt = "RecipesBase" + IntervalSetsStatisticsExt = "Statistics" + [[deps.InverseFunctions]] -deps = ["Test"] -git-tree-sha1 = "18c59411ece4838b18cd7f537e56cf5e41ce5bfd" +git-tree-sha1 = "2787db24f4e03daf859c6509ff87764e4182f7d1" uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.15" -weakdeps = ["Dates"] +version = "0.1.16" +weakdeps = ["Dates", "Test"] [deps.InverseFunctions.extensions] - DatesExt = "Dates" + InverseFunctionsDatesExt = "Dates" + InverseFunctionsTestExt = "Test" [[deps.IrrationalConstants]] git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" version = "0.2.2" +[[deps.IterTools]] +git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" +uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" +version = "1.10.0" + [[deps.IteratorInterfaceExtensions]] git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" uuid = "82899510-4779-5014-852e-03e436cf321d" @@ -624,14 +769,26 @@ version = "1.0.0" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +git-tree-sha1 = "f389674c99bfcde17dc57454011aa44d5a260a40" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" +version = "1.6.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JuliaFormatter]] +deps = ["CSTParser", "CommonMark", "DataStructures", "Glob", "PrecompileTools", "TOML", "Tokenize"] +git-tree-sha1 = "bb4696471330275adfd6c78c6173f276e8c067aa" +uuid = "98e50ef6-434e-11e9-1051-2b60c6c9e899" +version = "1.0.60" [[deps.JuliaSyntax]] -git-tree-sha1 = "956ac689b31cd871a48fbb70978b798c5e95018a" +git-tree-sha1 = "937da4713526b96ac9a178e2035019d3b78ead4a" uuid = "70703baa-626e-46a2-a12c-08ffd08c73b4" -version = "0.4.9" +version = "0.4.10" [[deps.JuliaSyntaxHighlighting]] deps = ["StyledStrings"] @@ -655,14 +812,16 @@ uuid = "ef3ab10e-7fda-4108-b977-705223b18434" version = "0.6.0" [[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "d0448cebd5919e06ca5edc7a264631790de810ec" +deps = ["Adapt", "Atomix", "InteractiveUtils", "MacroTools", "PrecompileTools", "Requires", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] +git-tree-sha1 = "045d41a364a81e357757c566b5a69fd4a2a2c445" uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.22" -weakdeps = ["EnzymeCore"] +version = "0.9.26" +weakdeps = ["EnzymeCore", "LinearAlgebra", "SparseArrays"] [deps.KernelAbstractions.extensions] EnzymeExt = "EnzymeCore" + LinearAlgebraExt = "LinearAlgebra" + SparseArraysExt = "SparseArrays" [[deps.Krylov]] deps = ["LinearAlgebra", "Printf", "SparseArrays"] @@ -672,9 +831,9 @@ version = "0.9.6" [[deps.LLVM]] deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] -git-tree-sha1 = "020abd49586480c1be84f57da0017b5d3db73f7c" +git-tree-sha1 = "4ad43cb0a4bb5e5b1506e1d1f48646d7e0c80363" uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "8.0.0" +version = "9.1.2" [deps.LLVM.extensions] BFloat16sExt = "BFloat16s" @@ -684,9 +843,41 @@ version = "8.0.0" [[deps.LLVMExtra_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "c2636c264861edc6d305e6b4d528f09566d24c5e" +git-tree-sha1 = "05a8bd5a42309a9ec82f700876903abce1017dd3" uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.30+0" +version = "0.0.34+0" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.1" + +[[deps.LabelledArrays]] +deps = ["ArrayInterface", "ChainRulesCore", "ForwardDiff", "LinearAlgebra", "MacroTools", "PreallocationTools", "RecursiveArrayTools", "StaticArrays"] +git-tree-sha1 = "e459fda6b68ea8684b3fcd513d2fd1e5130c4402" +uuid = "2ee39098-c373-598a-b85f-a56591580800" +version = "1.16.0" + +[[deps.LambertW]] +git-tree-sha1 = "c5ffc834de5d61d00d2b0e18c96267cffc21f648" +uuid = "984bce1d-4616-540c-a9ee-88d1112d94c9" +version = "0.4.6" + +[[deps.Latexify]] +deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] +git-tree-sha1 = "ce5f5621cac23a86011836badfedf664a612cee4" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.5" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SparseArraysExt = "SparseArrays" + SymEngineExt = "SymEngine" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" [[deps.LayoutPointers]] deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] @@ -696,9 +887,9 @@ version = "0.1.17" [[deps.LazyArrays]] deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "MacroTools", "SparseArrays"] -git-tree-sha1 = "b8ea0abe6cc872996e87356951d286d25d485aba" +git-tree-sha1 = "360f6039babd6e4d6364eff0d4fc9120834a2d9a" uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02" -version = "2.1.9" +version = "2.2.1" [deps.LazyArrays.extensions] LazyArraysBandedMatricesExt = "BandedMatrices" @@ -760,20 +951,32 @@ version = "1.11.0" [[deps.LineSearches]] deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] -git-tree-sha1 = "7bbea35cec17305fc70a0e5b4641477dc0789d9d" +git-tree-sha1 = "e4c3be53733db1051cc15ecf573b1042b3a712a1" uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" -version = "7.2.0" +version = "7.3.0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" version = "1.11.0" +[[deps.LinearMaps]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ee79c3208e55786de58f8dcccca098ced79f743f" +uuid = "7a12625a-238d-50fd-b39a-03d52299707e" +version = "3.11.3" +weakdeps = ["ChainRulesCore", "SparseArrays", "Statistics"] + + [deps.LinearMaps.extensions] + LinearMapsChainRulesCoreExt = "ChainRulesCore" + LinearMapsSparseArraysExt = "SparseArrays" + LinearMapsStatisticsExt = "Statistics" + [[deps.LinearSolve]] deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "StaticArraysCore", "UnPack"] -git-tree-sha1 = "b2e2dba60642e07c062eb3143770d7e234316772" +git-tree-sha1 = "6c5e4555ac2bc449a28604e184f759d18fc08420" uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "2.30.2" +version = "2.34.0" [deps.LinearSolve.extensions] LinearSolveBandedMatricesExt = "BandedMatrices" @@ -843,6 +1046,11 @@ git-tree-sha1 = "f046ccd0c6db2832a9f639e2c669c6fe867e5f4f" uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" version = "2024.2.0+0" +[[deps.MLStyle]] +git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" +uuid = "d8e11817-5142-5d16-987a-aa16d5891078" +version = "0.4.17" + [[deps.MacroTools]] deps = ["Markdown", "Random"] git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" @@ -859,11 +1067,27 @@ deps = ["Base64", "JuliaSyntaxHighlighting", "StyledStrings"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" version = "1.11.0" +[[deps.MatrixEquations]] +deps = ["LinearAlgebra", "LinearMaps"] +git-tree-sha1 = "f765b4eda3ea9be8e644b9127809ca5151f3d9ea" +uuid = "99c1a7ee-ab34-5fd5-8076-27c950a045f4" +version = "2.4.2" + +[[deps.MatrixPencils]] +deps = ["LinearAlgebra", "Polynomials", "Random"] +git-tree-sha1 = "c00a086f4f1df792c77dc1bd674357044aa08d74" +uuid = "48965c70-4690-11ea-1f13-43a2532b2fa8" +version = "1.8.0" + [[deps.MaybeInplace]] -deps = ["ArrayInterface", "LinearAlgebra", "MacroTools", "SparseArrays"] -git-tree-sha1 = "1b9e613f2ca3b6cdcbfe36381e17ca2b66d4b3a1" +deps = ["ArrayInterface", "LinearAlgebra", "MacroTools"] +git-tree-sha1 = "54e2fdc38130c05b42be423e90da3bade29b74bd" uuid = "bb5d69b7-63fc-4a16-80bd-7e42200c7bdb" -version = "0.1.3" +version = "0.1.4" +weakdeps = ["SparseArrays"] + + [deps.MaybeInplace.extensions] + MaybeInplaceSparseArraysExt = "SparseArrays" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] @@ -880,6 +1104,28 @@ version = "1.2.0" uuid = "a63ad114-7e13-5084-954f-fe012c677804" version = "1.11.0" +[[deps.ModelingToolkit]] +deps = ["AbstractTrees", "ArrayInterface", "Combinatorics", "Compat", "ConstructionBase", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DiffEqNoiseProcess", "DiffRules", "Distributed", "Distributions", "DocStringExtensions", "DomainSets", "DynamicQuantities", "ExprTools", "FindFirstFunctions", "ForwardDiff", "FunctionWrappersWrappers", "Graphs", "InteractiveUtils", "JuliaFormatter", "JumpProcesses", "LabelledArrays", "Latexify", "Libdl", "LinearAlgebra", "MLStyle", "NaNMath", "NonlinearSolve", "OrderedCollections", "PrecompileTools", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "SciMLStructures", "Serialization", "Setfield", "SimpleNonlinearSolve", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "SymbolicUtils", "Symbolics", "URIs", "UnPack", "Unitful"] +git-tree-sha1 = "568a7c80b2e3ff43c6c6c92212deeeba7ff4e639" +uuid = "961ee093-0014-501f-94e3-6117800e7a78" +version = "9.26.0" + + [deps.ModelingToolkit.extensions] + MTKBifurcationKitExt = "BifurcationKit" + MTKDeepDiffsExt = "DeepDiffs" + + [deps.ModelingToolkit.weakdeps] + BifurcationKit = "0f109fa4-8a5d-4b75-95aa-f515264e7665" + DeepDiffs = "ab62b9b5-e342-54a8-a765-a90f495de1a6" + +[[deps.ModelingToolkitStandardLibrary]] +deps = ["ChainRulesCore", "DiffEqBase", "IfElse", "LinearAlgebra", "ModelingToolkit", "Symbolics"] +git-tree-sha1 = "7a881d262ed47c91e9201ddc902a313316efc843" +repo-rev = "ox/dae_compatible5" +repo-url = "https://github.com/CedarEDA/ModelingToolkitStandardLibrary.jl" +uuid = "16a59e39-deab-5bd0-87e4-056b12336739" +version = "2.6.0" + [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" version = "2024.3.11" @@ -889,6 +1135,18 @@ git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" version = "0.2.4" +[[deps.MultivariatePolynomials]] +deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] +git-tree-sha1 = "5c1d1d9361e1417e5a065e1f84dc3686cbdaea21" +uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" +version = "0.5.6" + +[[deps.MutableArithmetics]] +deps = ["LinearAlgebra", "SparseArrays", "Test"] +git-tree-sha1 = "d0a6b1096b584a2b88efb70a92f8cb8c881eb38a" +uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" +version = "1.4.6" + [[deps.NLSolversBase]] deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c" @@ -902,10 +1160,10 @@ uuid = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" version = "4.5.1" [[deps.NNlib]] -deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Pkg", "Random", "Requires", "Statistics"] -git-tree-sha1 = "190dcada8cf9520198058c4544862b1f88c6c577" +deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Random", "Statistics"] +git-tree-sha1 = "da09a1e112fd75f9af2a5229323f01b56ec96a4c" uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.9.21" +version = "0.9.24" [deps.NNlib.extensions] NNlibAMDGPUExt = "AMDGPU" @@ -913,12 +1171,14 @@ version = "0.9.21" NNlibCUDAExt = "CUDA" NNlibEnzymeCoreExt = "EnzymeCore" NNlibFFTWExt = "FFTW" + NNlibForwardDiffExt = "ForwardDiff" [deps.NNlib.weakdeps] AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" [[deps.NaNMath]] @@ -933,9 +1193,9 @@ version = "1.2.0" [[deps.NonlinearSolve]] deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "DiffEqBase", "FastBroadcast", "FastClosures", "FiniteDiff", "ForwardDiff", "LazyArrays", "LineSearches", "LinearAlgebra", "LinearSolve", "MaybeInplace", "PrecompileTools", "Preferences", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseDiffTools", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] -git-tree-sha1 = "3adb1e5945b5a6b1eaee754077f25ccc402edd7f" +git-tree-sha1 = "bcd8812e751326ff1d4b2dd50764b93df51f143b" uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" -version = "3.13.1" +version = "3.14.0" [deps.NonlinearSolve.extensions] NonlinearSolveBandedMatricesExt = "BandedMatrices" @@ -1035,6 +1295,12 @@ git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" version = "0.12.3" +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.1" + [[deps.Pkg]] deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" @@ -1051,10 +1317,10 @@ uuid = "e409e4f3-bfea-5376-8464-e040bb5c01ab" version = "0.4.4" [[deps.Polyester]] -deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Requires", "Static", "StaticArrayInterface", "StrideArraysCore", "ThreadingUtilities"] -git-tree-sha1 = "9ff799e8fb8ed6717710feee3be3bc20645daa97" +deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Static", "StaticArrayInterface", "StrideArraysCore", "ThreadingUtilities"] +git-tree-sha1 = "6d38fea02d983051776a856b7df75b30cf9a3c1f" uuid = "f517fe37-dbe3-4b94-8317-1923a5111588" -version = "0.7.15" +version = "0.7.16" [[deps.PolyesterWeave]] deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] @@ -1062,6 +1328,24 @@ git-tree-sha1 = "645bed98cd47f72f67316fd42fc47dee771aefcd" uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" version = "0.2.2" +[[deps.Polynomials]] +deps = ["LinearAlgebra", "RecipesBase", "Requires", "Setfield", "SparseArrays"] +git-tree-sha1 = "1a9cfb2dc2c2f1bd63f1906d72af39a79b49b736" +uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45" +version = "4.0.11" + + [deps.Polynomials.extensions] + PolynomialsChainRulesCoreExt = "ChainRulesCore" + PolynomialsFFTWExt = "FFTW" + PolynomialsMakieCoreExt = "MakieCore" + PolynomialsMutableArithmeticsExt = "MutableArithmetics" + + [deps.Polynomials.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" + MakieCore = "20f20a25-4f0e-4fdf-b5d1-57303727442b" + MutableArithmetics = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" + [[deps.PositiveFactorizations]] deps = ["LinearAlgebra"] git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" @@ -1070,9 +1354,9 @@ version = "0.2.4" [[deps.PreallocationTools]] deps = ["Adapt", "ArrayInterface", "ForwardDiff"] -git-tree-sha1 = "406c29a7f46706d379a3bce45671b4e3a39ddfbc" +git-tree-sha1 = "6c62ce45f268f3f958821a1e5192cf91c75ae89c" uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" -version = "0.4.22" +version = "0.4.24" [deps.PreallocationTools.extensions] PreallocationToolsReverseDiffExt = "ReverseDiff" @@ -1092,21 +1376,33 @@ git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" uuid = "21216c6a-2e73-6563-6e65-726566657250" version = "1.4.3" +[[deps.PrettyTables]] +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "66b20dd35966a748321d3b2537c4584cf40387c7" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "2.3.2" + [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" version = "1.11.0" [[deps.PtrArrays]] -git-tree-sha1 = "f011fbb92c4d401059b2212c05c0601b70f8b759" +git-tree-sha1 = "77a42d78b6a92df47ab37e177b2deac405e1c88f" uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.0" +version = "1.2.1" [[deps.QuadGK]] deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "e237232771fdafbae3db5c31275303e056afaa9f" +git-tree-sha1 = "cda3b045cf9ef07a08ad46731f5a3165e56cf3da" uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.10.1" +version = "2.11.1" + + [deps.QuadGK.extensions] + QuadGKEnzymeExt = "Enzyme" + + [deps.QuadGK.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" [[deps.REPL]] deps = ["InteractiveUtils", "JuliaSyntaxHighlighting", "Markdown", "Sockets", "StyledStrings", "Unicode"] @@ -1125,10 +1421,10 @@ uuid = "74087812-796a-5b5d-8853-05524746bad3" version = "1.7.0" [[deps.RandomNumbers]] -deps = ["Random", "Requires"] -git-tree-sha1 = "043da614cc7e95c703498a491e2c21f58a2b8111" +deps = ["Random"] +git-tree-sha1 = "c6ec94d2aaba1ab2ff983052cf6a606ca5985902" uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143" -version = "1.5.3" +version = "1.6.0" [[deps.RealDot]] deps = ["LinearAlgebra"] @@ -1143,10 +1439,10 @@ uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" version = "1.3.4" [[deps.RecursiveArrayTools]] -deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "SparseArrays", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "b450d967a770fb13d0e26358f58375e20361cf9c" +deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] +git-tree-sha1 = "b034171b93aebc81b3e1890a036d13a9c4a9e3e0" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "3.26.0" +version = "3.27.0" [deps.RecursiveArrayTools.extensions] RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" @@ -1154,6 +1450,7 @@ version = "3.26.0" RecursiveArrayToolsMeasurementsExt = "Measurements" RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" RecursiveArrayToolsReverseDiffExt = ["ReverseDiff", "Zygote"] + RecursiveArrayToolsSparseArraysExt = ["SparseArrays"] RecursiveArrayToolsTrackerExt = "Tracker" RecursiveArrayToolsZygoteExt = "Zygote" @@ -1163,6 +1460,7 @@ version = "3.26.0" Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" @@ -1189,17 +1487,43 @@ git-tree-sha1 = "256eeeec186fa7f26f2801732774ccf277f05db9" uuid = "ae5879a3-cd67-5da8-be7f-38c6eb64a37b" version = "1.1.1" +[[deps.Richardson]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "48f038bfd83344065434089c2a79417f38715c41" +uuid = "708f8203-808e-40c0-ba2d-98a6953ed40d" +version = "1.4.2" + [[deps.Rmath]] deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" +git-tree-sha1 = "852bd0f55565a9e973fcfee83a84413270224dc4" uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" +version = "0.8.0" [[deps.Rmath_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d483cd324ce5cf5d61b77930f0bbd6cb61927d21" +git-tree-sha1 = "58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8" uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.2+0" +version = "0.5.1+0" + +[[deps.Roots]] +deps = ["Accessors", "CommonSolve", "Printf"] +git-tree-sha1 = "3a7c7e5c3f015415637f5debdf8a674aa2c979c4" +uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" +version = "2.2.1" + + [deps.Roots.extensions] + RootsChainRulesCoreExt = "ChainRulesCore" + RootsForwardDiffExt = "ForwardDiff" + RootsIntervalRootFindingExt = "IntervalRootFinding" + RootsSymPyExt = "SymPy" + RootsSymPyPythonCallExt = "SymPyPythonCall" + + [deps.Roots.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + IntervalRootFinding = "d2bf35a9-74e0-55ec-b149-d360ff49b807" + SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" + SymPyPythonCall = "bc8888f7-b21e-4b7c-a06a-5d9c9496438c" [[deps.RuntimeGeneratedFunctions]] deps = ["ExprTools", "SHA", "Serialization"] @@ -1222,6 +1546,11 @@ git-tree-sha1 = "456f610ca2fbd1c14f5fcf31c6bfadc55e7d66e0" uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" version = "0.6.43" +[[deps.SafeTestsets]] +git-tree-sha1 = "81ec49d645af090901120a1542e67ecbbe044db3" +uuid = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +version = "0.1.0" + [[deps.SciMLBase]] deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] git-tree-sha1 = "5b49d9bc74b1b730531766c48a02b6bc302c3a49" @@ -1250,10 +1579,15 @@ version = "2.41.3" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [[deps.SciMLOperators]] -deps = ["ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools", "Setfield", "SparseArrays", "StaticArraysCore"] -git-tree-sha1 = "10499f619ef6e890f3f4a38914481cc868689cd5" +deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] +git-tree-sha1 = "e39c5f217f9aca640c8e27ab21acf557a3967db5" uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" -version = "0.3.8" +version = "0.3.10" +weakdeps = ["SparseArrays", "StaticArraysCore"] + + [deps.SciMLOperators.extensions] + SciMLOperatorsSparseArraysExt = "SparseArrays" + SciMLOperatorsStaticArraysCoreExt = "StaticArraysCore" [[deps.SciMLSensitivity]] deps = ["ADTypes", "Adapt", "ArrayInterface", "ChainRulesCore", "DiffEqBase", "DiffEqCallbacks", "DiffEqNoiseProcess", "Distributions", "EllipsisNotation", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "Functors", "GPUArraysCore", "LinearAlgebra", "LinearSolve", "Markdown", "OrdinaryDiffEq", "Parameters", "PreallocationTools", "QuadGK", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SparseDiffTools", "StaticArrays", "StaticArraysCore", "Statistics", "StochasticDiffEq", "Tracker", "TruncatedStacktraces"] @@ -1265,9 +1599,9 @@ version = "7.61.1" [[deps.SciMLStructures]] deps = ["ArrayInterface"] -git-tree-sha1 = "cfdd1200d150df1d3c055cc72ee6850742e982d7" +git-tree-sha1 = "25514a6f200219cd1073e4ff23a6324e4a7efe64" uuid = "53ae85a6-f571-4167-b2af-e1d143709226" -version = "1.4.1" +version = "1.5.0" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -1334,9 +1668,9 @@ version = "1.12.0" [[deps.SparseDiffTools]] deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Random", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Tricks", "UnPack", "VertexSafeGraphs"] -git-tree-sha1 = "469f51f8c4741ce944be2c0b65423b518b1405b0" +git-tree-sha1 = "c9e5d7ee75cf6a1ca3a22c9a6a4ef451792cf62b" uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" -version = "2.19.0" +version = "2.20.0" [deps.SparseDiffTools.extensions] SparseDiffToolsEnzymeExt = "Enzyme" @@ -1376,11 +1710,11 @@ weakdeps = ["ChainRulesCore"] [[deps.StateSelection]] deps = ["DocStringExtensions", "FindFirstFunctions", "Graphs", "LinearAlgebra", "Setfield", "SparseArrays", "UnPack"] -git-tree-sha1 = "ffb79f5e42e197c045f19e0731757148421fe83f" +git-tree-sha1 = "8f678b62e77e1bf1f74744cfc79bfafa81332942" repo-rev = "main" repo-url = "https://github.com/JuliaComputing/StateSelection.jl" uuid = "64909d44-ed92-46a8-bbd9-f047dfbdc84b" -version = "0.2.0" +version = "0.2.1" [deps.StateSelection.extensions] StateSelectionDeepDiffsExt = "DeepDiffs" @@ -1395,10 +1729,10 @@ uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" version = "1.1.1" [[deps.StaticArrayInterface]] -deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Requires", "SparseArrays", "Static", "SuiteSparse"] -git-tree-sha1 = "8963e5a083c837531298fc41599182a759a87a6d" +deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Static"] +git-tree-sha1 = "96381d50f1ce85f2663584c8e886a6ca97e60554" uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" -version = "1.5.1" +version = "1.8.0" weakdeps = ["OffsetArrays", "StaticArrays"] [deps.StaticArrayInterface.extensions] @@ -1445,9 +1779,9 @@ version = "0.34.3" [[deps.StatsFuns]] deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" +git-tree-sha1 = "b423576adc27097764a90e163157bcfc9acf0f46" uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.1" +version = "1.3.2" weakdeps = ["ChainRulesCore", "InverseFunctions"] [deps.StatsFuns.extensions] @@ -1456,9 +1790,9 @@ weakdeps = ["ChainRulesCore", "InverseFunctions"] [[deps.StochasticDiffEq]] deps = ["Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DiffEqNoiseProcess", "DocStringExtensions", "FiniteDiff", "ForwardDiff", "JumpProcesses", "LevyArea", "LinearAlgebra", "Logging", "MuladdMacro", "NLsolve", "OrdinaryDiffEq", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SparseArrays", "SparseDiffTools", "StaticArrays", "UnPack"] -git-tree-sha1 = "b47f8ccc5bd06d5f7a643bf6671365ab9d6595d9" +git-tree-sha1 = "1e013d271e025fc676f5b944f9537e09238b73c5" uuid = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0" -version = "6.67.0" +version = "6.68.0" [[deps.StrideArraysCore]] deps = ["ArrayInterface", "CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface", "ThreadingUtilities"] @@ -1466,6 +1800,12 @@ git-tree-sha1 = "f35f6ab602df8413a50c4a25ca14de821e8605fb" uuid = "7792a7ef-975c-4747-a70f-980b88e8d1da" version = "0.5.7" +[[deps.StringManipulation]] +deps = ["PrecompileTools"] +git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" +uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" +version = "0.3.4" + [[deps.StructArrays]] deps = ["ConstructionBase", "DataAPI", "Tables"] git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" @@ -1494,9 +1834,9 @@ version = "7.7.0+0" [[deps.Sundials]] deps = ["CEnum", "DataStructures", "DiffEqBase", "Libdl", "LinearAlgebra", "Logging", "PrecompileTools", "Reexport", "SciMLBase", "SparseArrays", "Sundials_jll"] -git-tree-sha1 = "e15f5a73f0d14b9079b807a9d1dac13e4302e997" +git-tree-sha1 = "82304990120934137261aa085e0d05a412fe0825" uuid = "c3572dad-4567-51f8-b174-8c6c989267f4" -version = "4.24.0" +version = "4.25.0" [[deps.Sundials_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "SuiteSparse_jll", "libblastrampoline_jll"] @@ -1506,9 +1846,39 @@ version = "5.2.3+0" [[deps.SymbolicIndexingInterface]] deps = ["Accessors", "ArrayInterface", "RuntimeGeneratedFunctions", "StaticArraysCore"] -git-tree-sha1 = "9c490ee01823dc443da25bf9225827e3cdd2d7e9" +git-tree-sha1 = "988e04b34a4c3b824fb656f542473df99a4f610d" uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" -version = "0.3.26" +version = "0.3.30" + +[[deps.SymbolicLimits]] +deps = ["SymbolicUtils"] +git-tree-sha1 = "fb099adbd7504f1e68b4512828e9d94197a8b889" +uuid = "19f23fe9-fdab-4a78-91af-e7b7767979c3" +version = "0.2.1" + +[[deps.SymbolicUtils]] +deps = ["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TermInterface", "TimerOutputs", "Unityper"] +git-tree-sha1 = "a7ecd8fb3ee77a47ac033395069117763469c49e" +uuid = "d1185830-fcd6-423d-90d6-eec64667417b" +version = "2.1.3" + +[[deps.Symbolics]] +deps = ["ADTypes", "ArrayInterface", "Bijections", "CommonWorldInvalidations", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "ForwardDiff", "IfElse", "LaTeXStrings", "LambertW", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "RecipesBase", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "SymbolicIndexingInterface", "SymbolicLimits", "SymbolicUtils", "TermInterface"] +git-tree-sha1 = "b13a5417865e9934d043718f644e4a67519463ce" +uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" +version = "5.36.0" + + [deps.Symbolics.extensions] + SymbolicsGroebnerExt = "Groebner" + SymbolicsLuxCoreExt = "LuxCore" + SymbolicsPreallocationToolsExt = "PreallocationTools" + SymbolicsSymPyExt = "SymPy" + + [deps.Symbolics.weakdeps] + Groebner = "0b43b601-686d-58a3-8a1c-6623616c7cd4" + LuxCore = "bb33d45b-7691-41d6-9220-0943567d0623" + PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46" + SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" [[deps.TOML]] deps = ["Dates"] @@ -1532,6 +1902,11 @@ deps = ["ArgTools", "SHA"] uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" version = "1.10.0" +[[deps.TermInterface]] +git-tree-sha1 = "6f0cee95e74d1f6891ba6b35b8b219fd3d11b567" +uuid = "8ea1fca8-c5ef-4a55-8b96-4e9afe9c9a3c" +version = "0.4.1" + [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" @@ -1549,11 +1924,16 @@ git-tree-sha1 = "5a13ae8a41237cff5ecf34f73eb1b8f42fff6531" uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" version = "0.5.24" +[[deps.Tokenize]] +git-tree-sha1 = "468b4685af4abe0e9fd4d7bf495a6554a6276e75" +uuid = "0796e94c-ce3b-5d07-9a54-7f471281c624" +version = "0.5.29" + [[deps.Tracker]] deps = ["Adapt", "ChainRulesCore", "DiffRules", "ForwardDiff", "Functors", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NNlib", "NaNMath", "Optimisers", "Printf", "Random", "Requires", "SpecialFunctions", "Statistics"] -git-tree-sha1 = "5158100ed55411867674576788e710a815a0af02" +git-tree-sha1 = "da45269e1da051c2a13624194fcdc74d6483fad5" uuid = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" -version = "0.2.34" +version = "0.2.35" weakdeps = ["PDMats"] [deps.Tracker.extensions] @@ -1592,9 +1972,14 @@ version = "1.4.0" [[deps.TypedSyntax]] deps = ["CodeTracking", "JuliaSyntax"] -git-tree-sha1 = "f3ea2aa283e95df02d6c9bf1e1896af88874579e" +git-tree-sha1 = "1b11092fc9eab26e21402ed313406a75d948634f" uuid = "d265eb64-f81a-44ad-a842-4247ee1503de" -version = "1.3.1" +version = "1.4.1" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -1610,6 +1995,23 @@ version = "1.0.2" uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" version = "1.11.0" +[[deps.Unitful]] +deps = ["Dates", "LinearAlgebra", "Random"] +git-tree-sha1 = "d95fe458f26209c66a187b1114df96fd70839efd" +uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" +version = "1.21.0" +weakdeps = ["ConstructionBase", "InverseFunctions"] + + [deps.Unitful.extensions] + ConstructionBaseUnitfulExt = "ConstructionBase" + InverseFunctionsUnitfulExt = "InverseFunctions" + +[[deps.Unityper]] +deps = ["ConstructionBase"] +git-tree-sha1 = "25008b734a03736c41e2a7dc314ecb95bd6bbdb0" +uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415" +version = "0.1.6" + [[deps.UnsafeAtomics]] git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" @@ -1617,9 +2019,9 @@ version = "0.2.1" [[deps.UnsafeAtomicsLLVM]] deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "bf2c553f25e954a9b38c9c0593a59bb13113f9e5" +git-tree-sha1 = "2d17fabcd17e67d7625ce9c531fb9f40b7c42ce4" uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.1.5" +version = "0.2.1" [[deps.VectorizationBase]] deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"] diff --git a/Project.toml b/Project.toml index fc58b7c..abc42a4 100644 --- a/Project.toml +++ b/Project.toml @@ -3,6 +3,9 @@ uuid = "32805668-c3d0-42c2-aafd-0d0a9857a104" version = "1.21.0" authors = ["JuliaHub, Inc. and other contributors"] +[workspace] +projects = ["test"] + [deps] Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" CentralizedCaches = "d1073d05-2d26-4019-b855-dfa0385fef5e" @@ -30,12 +33,11 @@ SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" StateSelection = "64909d44-ed92-46a8-bbd9-f047dfbdc84b" StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" -SymbolicIndexingInterface = "2efcf032-c050-4f8e-a9bb-153293bab1f5" TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" Tracy = "e689c965-62c8-4b79-b2c5-8359227902fd" +SymbolicIndexingInterface = "2efcf032-c050-4f8e-a9bb-153293bab1f5" [sources] -ModelingToolkitStandardLibrary = {rev = "ox/dae_compatible5", url = "https://github.com/CedarEDA/ModelingToolkitStandardLibrary.jl"} SciMLBase = {rev = "os/dae-get-du2", url = "https://github.com/CedarEDA/SciMLBase.jl"} SciMLSensitivity = {rev = "kf/mindep2", url = "https://github.com/CedarEDA/SciMLSensitivity.jl"} @@ -54,12 +56,10 @@ Cthulhu = "2.10.1" DiffEqBase = "6.149.2" Diffractor = "0.2.7" ForwardDiff = "0.10.36" -ModelingToolkitStandardLibrary = "2.6.0" NonlinearSolve = "3.5.0" OrderedCollections = "1.6.3" PrecompileTools = "1" Preferences = "1.4" -Roots = "2.0.22" SciMLBase = "2.24.0" SciMLSensitivity = "7.47" StateSelection = "0.2.0" @@ -68,24 +68,5 @@ Sundials = "4.19" SymbolicIndexingInterface = "0.3" julia = "1.11" -[extras] -ControlSystemsBase = "aaaaaaaa-a6ca-5380-bf3e-84a91bcd477e" -DataInterpolations = "82cc6244-b520-54b8-b5a6-8a565e85f1d0" -FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" -FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" -IfElse = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" -InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" -ModelingToolkitStandardLibrary = "16a59e39-deab-5bd0-87e4-056b12336739" -OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" -Roots = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" -SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" -StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" -Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" -Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - [preferences.LinearSolve] LoadMKL_JLL = false - -[targets] -test = ["ControlSystemsBase", "DataInterpolations", "FiniteDiff", "FiniteDifferences", "IfElse", "InteractiveUtils", "ModelingToolkit", "ModelingToolkitStandardLibrary", "OrdinaryDiffEq", "SafeTestsets", "Sundials", "Test", "Roots", "StaticArrays"] diff --git a/ext/DAECompilerModelingToolkitExt.jl b/ext/DAECompilerModelingToolkitExt.jl index 2285324..5e7c6fe 100644 --- a/ext/DAECompilerModelingToolkitExt.jl +++ b/ext/DAECompilerModelingToolkitExt.jl @@ -75,8 +75,8 @@ function declare_parameters(model, struct_name) backing::B end ) - - + + constructor_expr =:( @generated function _check_parameter_names(::Type{$struct_name}, param_kwargs::NamedTuple) unexpected_parameters = setdiff(fieldnames(param_kwargs), $param_names_tuple_expr) @@ -108,7 +108,7 @@ function declare_parameters(model, struct_name) if name === $param_name return if hasfield(B, $param_name) getfield(getfield(this, :backing), $param_name) - else + else $param_value end end @@ -118,7 +118,7 @@ function declare_parameters(model, struct_name) return getfield(getfield(this, :backing), name) )) getproperty_expr.args[end].args[end] = Expr(:block, getproperty_body...) - + return Expr(:block, struct_expr, constructor_expr, propertynames_expr, getproperty_expr) end @@ -206,7 +206,7 @@ end macro DAECompiler.declare_MTKConnector(mtk_component, ports...) # We do need to do run time eval, because we can't decide what to construct with just lexical information. - # we need the values of the + # we need the values of the :(Base.eval(@__MODULE__, $MTKConnector_AST($(esc(mtk_component)), $(esc.(ports)...)))) end @@ -219,7 +219,7 @@ function MTKConnector_AST(model::MTK.ODESystem, ports...) end while !isnothing(MTK.get_parent(model)) - # Undo any call to structural_simplify + # Undo any call to structural_simplify # (Should we give a warning here? They did waste CPU cycles simplfying it in first place) model = MTK.get_parent(model) end @@ -239,11 +239,11 @@ function MTKConnector_AST(model::MTK.ODESystem, ports...) struct_name = gensym(nameof(model)) - + return quote $(declare_parameters(model, struct_name)) - function (this::$struct_name)($(port_names...); dscope=$(_c(Scope))()) + function (this::$struct_name)($(map(port->:($(port)::Float64), port_names)...); dscope=$(_c(Scope))()) $(declare_vars(model, :dscope)) $(declare_derivatives(state)) $(declare_equations(state, model, :dscope, ports)) @@ -258,4 +258,4 @@ function MTKConnector_AST(model::MTK.ODESystem, ports...) end -end # module \ No newline at end of file +end # module diff --git a/ext/DAECompilerSciMLSensitivityExt.jl b/ext/DAECompilerSciMLSensitivityExt.jl index 91e52e6..2639a14 100644 --- a/ext/DAECompilerSciMLSensitivityExt.jl +++ b/ext/DAECompilerSciMLSensitivityExt.jl @@ -39,13 +39,14 @@ with one column per time step in `ts` and one one row per `variable`/`observed!` """ function DAECompiler.reconstruct_sensitivities(sol::SciMLBase.AbstractODESolution, syms::Vector{<:DAECompiler.ScopeRef}, ts=sol.t) us, du_dparams = extract_local_sensitivities(sol, ts) - var_inds, obs_inds = DAECompiler.split_and_sort_syms(syms) - transformed_sys = DAECompiler.get_transformed_sys(sol) + sys = DAECompiler.get_sys(transformed_sys) + var_inds, obs_inds = DAECompiler.split_and_sort_syms(sys, syms) + dreconstruct! = get!(sol.prob.f.observed.derivative_cache, (var_inds, obs_inds, false)) do DAECompiler.compile_batched_reconstruct_derivatives(transformed_sys, var_inds, obs_inds, false, false;) end - + num_params = length(du_dparams) dout_vars_per_param = [similar(us, (length(var_inds), length(ts))) for _ in 1:num_params] dout_obs_per_param = [similar(us, (length(obs_inds), length(ts))) for _ in 1:num_params] @@ -67,7 +68,7 @@ function DAECompiler.reconstruct_sensitivities(sol::SciMLBase.AbstractODESolutio end return map(dout_vars_per_param, dout_obs_per_param) do dout_vars, dout_obs - DAECompiler.join_syms(syms, dout_vars, dout_obs, (var_inds, obs_inds)) + DAECompiler.join_syms(sys, syms, dout_vars, dout_obs, (var_inds, obs_inds)) end end diff --git a/src/analysis/compiler.jl b/src/analysis/compiler.jl index f0d1ea0..971fd74 100644 --- a/src/analysis/compiler.jl +++ b/src/analysis/compiler.jl @@ -319,7 +319,7 @@ has_any_genscope(sc::PartialStruct) = false # TODO function _make_argument_lattice_elem(which::Argument, @nospecialize(argt), add_variable!, add_equation!, add_scope!) if isa(argt, Const) - @assert !isa(argt.val, Scope) # Shouldn't have been forwarded + #@assert !isa(argt.val, Scope) # Shouldn't have been forwarded return argt elseif isa(argt, Type) && argt <: Intrinsics.AbstractScope return PartialScope(add_scope!(which)) @@ -362,7 +362,7 @@ function make_argument_lattice_elem(which::Argument, @nospecialize(argt), add_va end function resolve_genscopes(names) - new_names = OrderedDict{LevelKey, NameLevel}() + new_names = OrderedDict{Any, NameLevel}() for (key, val) in collect(names) if val.children !== nothing @reset val.children = resolve_genscopes(val.children) @@ -423,7 +423,7 @@ Perform the structural analysis on optimized code of `mi` and return `structure: end end -function refresh_identities(names::OrderedDict{LevelKey, NameLevel}) +function refresh_identities(names::OrderedDict{LevelKey, NameLevel}) where {LevelKey, NameLevel} new_names = OrderedDict{LevelKey, NameLevel}() for (key, val) in names if isa(key, Gen) @@ -502,7 +502,7 @@ end eq_kind = VarEqKind[] warnings = UnsupportedIRException[] - names = OrderedDict{LevelKey, NameLevel}() + names = OrderedDict{Any, NameLevel}() nsysmscopes = 0 ncallees = 0 @@ -1191,7 +1191,7 @@ function process_ipo_return!(ultimate_rt::PartialStruct, args...) return PartialStruct(ultimate_rt.typ, fields), nimplicitoutpairs end -function get_variable_name(names::OrderedDict{LevelKey, NameLevel}, var_to_diff, var_idx) +function get_variable_name(names::OrderedDict, var_to_diff, var_idx) var_names = build_var_names(names, var_to_diff) return var_names[var_idx] end @@ -1221,7 +1221,7 @@ function get_inline_backtrace(ir::IRCode, v::SSAValue) return frames end -function walk_dict(names::OrderedDict{LevelKey, NameLevel}, stack::Vector{<:LevelKey}) +function walk_dict(names::OrderedDict{LevelKey, NameLevel}, stack::Vector) where {LevelKey, NameLevel} for i = length(stack):-1:2 s = stack[i] if !haskey(names, s) @@ -1235,11 +1235,11 @@ end is_valid_partial_scope(_) = false is_valid_partial_scope(ps::PartialScope) = true function is_valid_partial_scope(ps::PartialStruct) - if ps.typ === Scope + if ps.typ <: Scope isa(ps.fields[2], Const) || return false isa(ps.fields[2].val, Symbol) || return false return is_valid_partial_scope(ps.fields[1]) - elseif ps.typ === GenScope + elseif ps.typ <: GenScope isa(ps.fields[1], Const) || return false return is_valid_partial_scope(ps.fields[2]) else @@ -1248,11 +1248,11 @@ function is_valid_partial_scope(ps::PartialStruct) end function sym_stack(ps::PartialStruct) - if ps.typ === Scope + if ps.typ <: Scope sym = (ps.fields[2]::Const).val::Symbol return pushfirst!(sym_stack(ps.fields[1]), sym) else - @assert ps.typ === GenScope + @assert ps.typ <: GenScope stack = sym_stack(ps.fields[2]) scope_identity = ((ps.fields[1]::Const).val)::Intrinsics.ScopeIdentity stack[1] = Gen(scope_identity, stack[1]) @@ -1261,7 +1261,7 @@ function sym_stack(ps::PartialStruct) end sym_stack(ps::PartialScope) = LevelKey[ps] -function record_scope!(ir::IRCode, names::OrderedDict{LevelKey, NameLevel}, scope::Union{Scope, GenScope, PartialStruct, PartialScope}, +function record_scope!(ir::IRCode, names::OrderedDict, scope::Union{Scope, GenScope, PartialStruct, PartialScope}, varssa::Vector, idx::Int, lens) stack = sym_stack(scope) @@ -1282,11 +1282,15 @@ function record_scope!(ir::IRCode, names::OrderedDict{LevelKey, NameLevel}, scop end function merge_scopes!(names::OrderedDict{LevelKey, NameLevel}, key::LevelKey, val::NameLevel, - mapping::CalleeMapping, obsoffset::Int, epsoffset::Int) + mapping::CalleeMapping, obsoffset::Int, epsoffset::Int) where {LevelKey, NameLevel} haskey(names, key) || (names[key] = NameLevel()) existing = names[key] - for (offset, lens) in ((x->(only(findnz(mapping.var_coeffs[x].row)[1])), @o _.var), + function remap_var(x) + r = only(findnz(mapping.var_coeffs[x].row)[1]) - 1 + return r + end + for (offset, lens) in ((remap_var, @o _.var), (x->(x+obsoffset), @o _.obs), (x->mapping.eqs[x], @o _.eq), (x->(x+epsoffset), @o _.eps)) if lens(val) !== nothing @@ -1312,7 +1316,7 @@ function merge_scopes!(names::OrderedDict{LevelKey, NameLevel}, key::LevelKey, v end function merge_scopes!(names::OrderedDict{LevelKey, NameLevel}, key::Union{Scope, PartialStruct}, val::NameLevel, - mapping::CalleeMapping, obsoffset::Int, epsoffset::Int) + mapping::CalleeMapping, obsoffset::Int, epsoffset::Int) where {LevelKey, NameLevel} stack = sym_stack(key) if isempty(stack) diff --git a/src/analysis/debugging.jl b/src/analysis/debugging.jl index a369d64..17ce06e 100644 --- a/src/analysis/debugging.jl +++ b/src/analysis/debugging.jl @@ -1,12 +1,12 @@ using StateSelection using StateSelection.BipartiteGraphs -function build_var_names(names::OrderedDict{LevelKey, NameLevel}, var_to_diff) +function build_var_names(names::OrderedDict, var_to_diff) var_names = OrderedDict{Int,String}() build_var_names!(var_names, names, var_to_diff) return var_names end -function build_var_names!(var_names, names::OrderedDict{LevelKey, NameLevel}, var_to_diff, prefix=String[]) +function build_var_names!(var_names, names::OrderedDict, var_to_diff, prefix=String[]) for name in keys(names) name_path = join(vcat(prefix..., name), ".") level = names[name] diff --git a/src/analysis/interpreter.jl b/src/analysis/interpreter.jl index e6441d7..261b622 100644 --- a/src/analysis/interpreter.jl +++ b/src/analysis/interpreter.jl @@ -153,10 +153,13 @@ end Diffractor.disable_forward(interp::DAEInterpreter) = CC.NativeInterpreter(interp.world) function CC.InferenceParams(::DAEInterpreter) - return CC.InferenceParams(; - unoptimize_throw_blocks=false, - assume_bindings_static=true, - ignore_recursion_hardlimit=true) + args = (; + assume_bindings_static=true, + ignore_recursion_hardlimit=true) + if VERSION < v"1.12.0-DEV.1017" + args = (; unoptimize_throw_blocks=false, args...) + end + return CC.InferenceParams(; args...) end function CC.OptimizationParams(::DAEInterpreter) opt_params = CC.OptimizationParams(; @@ -680,7 +683,7 @@ function process_template!(𝕃, coeffs, eq_mapping, applied_scopes, argtypes, t eq_mapping[idnum(template)] = idnum(arg) elseif CC.is_const_argtype(template) #@Core.Compiler.show (arg, template) - @assert CC.is_lattice_equal(DAE_LATTICE, arg, template) + #@assert CC.is_lattice_equal(DAE_LATTICE, arg, template) elseif isa(template, PartialScope) id = idnum(template) (id > length(applied_scopes)) && resize!(applied_scopes, id) @@ -919,7 +922,7 @@ function _abstract_eval_invoke_inst(interp::DAEInterpreter, inst::Union{CC.Instr argtypes = CC.collect_argtypes(interp, stmt.args, nothing, irsv)[2:end] callee_result = dae_result_for_inst(interp, inst) callee_result === nothing && return RT(nothing, (false, false)) - if isa(callee_result.extended_rt, Const) || isa(callee_result.extended_rt, Type) + if isa(callee_result, UncompilableIPOResult) || isa(callee_result.extended_rt, Const) || isa(callee_result.extended_rt, Type) return RT(nothing, (false, false)) end mapping = CalleeMapping(CC.optimizer_lattice(interp), argtypes, callee_result) @@ -1030,14 +1033,11 @@ end # ----- function typeinf_dae(@nospecialize(tt), world::UInt=get_world_counter(); - method_table::Union{Nothing,MethodTable} = nothing, ipo_analysis_mode::Bool = false) - interp = DAEInterpreter(world; method_table, ipo_analysis_mode) - match = Base._which(tt; - method_table=CC.method_table(interp), - world=get_inference_world(interp), - raise=false) - match === nothing && single_match_error(tt) + interp = DAEInterpreter(world; ipo_analysis_mode) + match = Base._methods_by_ftype(tt, 1, world) + isempty(match) && single_match_error(tt) + match = only(match) mi = CC.specialize_method(match) ci = CC.typeinf_ext(interp, mi, Core.Compiler.SOURCE_MODE_ABI) return interp, ci diff --git a/src/analysis/lattice.jl b/src/analysis/lattice.jl index 30aebdb..e1b7e4c 100644 --- a/src/analysis/lattice.jl +++ b/src/analysis/lattice.jl @@ -347,7 +347,7 @@ CC.widenconst(::PartialScope) = Scope CC.widenconst(pkv::PartialKeyValue) = widenconst(pkv.typ) CC.:⊑(inc::Incidence, inc2) = CC.:⊑(inc2, Float64) && !isa(inc2, Const) -function CC._uniontypes(x::Incidence, ts) +function CC._uniontypes(x::Incidence, ts::Vector{Any}) u = x.typ if isa(u, Union) CC.push!(ts, is_non_incidence_type(u.a) ? u.a : Incidence(u.a, x.row, x.eps)) @@ -462,6 +462,9 @@ function CC._getfield_tfunc(🥬::DAELattice, @nospecialize(s00), @nospecialize( return Union{} end rt = CC._getfield_tfunc(CC.widenlattice(🥬), s00.typ, name, setfield) + if rt == Union{} + return Union{} + end if isempty(s00) return Incidence(rt) end diff --git a/src/cache.jl b/src/cache.jl index 1b571e6..9da4d90 100644 --- a/src/cache.jl +++ b/src/cache.jl @@ -24,11 +24,12 @@ struct NameLevel obs::Union{Nothing, Int} eq::Union{Nothing, Int} eps::Union{Nothing, Int} - children::Union{Nothing, OrderedDict{LevelKey, NameLevel}} + # TODO: This should be an OrderedIdDict + children::Union{Nothing, OrderedDict{Any, NameLevel}} end NameLevel() = NameLevel(nothing, nothing, nothing, nothing, nothing) -NameLevel(children::OrderedDict{LevelKey, NameLevel}) = +NameLevel(children::OrderedDict{Any, NameLevel}) = NameLevel(nothing, nothing, nothing, nothing, children) struct UnsupportedIRException <: Exception @@ -77,7 +78,7 @@ struct DAEIPOResult total_incidence::Vector{Any} eq_kind::Vector{VarEqKind} eq_callee_mapping::Vector{Union{Nothing, Vector{Pair{SSAValue, Int}}}} - names::OrderedDict{LevelKey, NameLevel} + names::OrderedDict{Any, NameLevel} # TODO: OrderedIdDict nobserved::Int neps::Int ic_nzc::Int diff --git a/src/irodesystem.jl b/src/irodesystem.jl index 3bc0bc3..8dc6f3c 100644 --- a/src/irodesystem.jl +++ b/src/irodesystem.jl @@ -158,7 +158,7 @@ struct IRODESystem fallback_interp::AbstractInterpreter = Core.Compiler.NativeInterpreter(), debug_config = (;), ipo_analysis_mode = false, - world::UInt=get_world_counter()) + world::UInt=Base.tls_world_age()) debug_config = DebugConfig(debug_config, tt) @may_timeit debug_config "typeinf_dae" interp, ci = typeinf_dae(tt, world; ipo_analysis_mode) mi = ci.def @@ -183,7 +183,7 @@ mutable struct IRTransformationState <: TransformationState{IRODESystem} ir::IRCode callback_func::Function structure::SystemStructure - const names::OrderedDict{LevelKey, NameLevel} + const names::OrderedDict{Any, NameLevel} const nobserved::Int const neps::Int const ic_nzc::Int diff --git a/src/runtime.jl b/src/runtime.jl index 2a5b12f..2585f15 100644 --- a/src/runtime.jl +++ b/src/runtime.jl @@ -83,22 +83,22 @@ module Intrinsics abstract type AbstractScope; end - struct Scope <: AbstractScope + struct Scope{T} <: AbstractScope parent::AbstractScope - name::Symbol - Scope() = new() - Scope(s::AbstractScope, sym::Symbol) = new(s, sym) + name::T + Scope() = new{Union{}}() + Scope(s::AbstractScope, name::T) where {T} = new{T}(s, name) end (scope::Scope)(s::Symbol) = Scope(scope, s) - # Scope(), but will less function calls, so marginally easier on the compiler + # Scope(), but with less function calls, so marginally easier on the compiler const root_scope = Scope() mutable struct ScopeIdentity; end - struct GenScope <: AbstractScope + struct GenScope{T} <: AbstractScope identity::ScopeIdentity - sc::Scope - GenScope(sc::Scope) = new(ScopeIdentity(), sc) + sc::Scope{T} + GenScope(sc::Scope{T}) where {T} = new{T}(ScopeIdentity(), sc) end GenScope(parent::AbstractScope, name::Symbol) = GenScope(Scope(parent, name)) diff --git a/src/state_mapping.jl b/src/state_mapping.jl index 4bc254a..f60b5fa 100644 --- a/src/state_mapping.jl +++ b/src/state_mapping.jl @@ -1,8 +1,11 @@ using SciMLBase, SymbolicIndexingInterface -struct ScopeRef{T} +struct ScopeRef{T, ST} sys::T - scope::Scope + scope::Scope{ST} + + # (Optional) opaque data structure to facilitate faster `getproperty`. + cursor end Base.Broadcast.broadcastable(ref::ScopeRef) = Ref(ref) # broadcast as scalar @@ -14,8 +17,9 @@ SymbolicIndexingInterface.symbolic_type(::Type{<:ScopeRef}) = ScalarSymbolic() SymbolicIndexingInterface.is_independent_variable(sys::TransformedIRODESystem, sym::ScopeRef) = false function SymbolicIndexingInterface.is_variable(sys::TransformedIRODESystem, sym::ScopeRef) - get_sys(sys) === IRODESystem(sym) || return false - _sym_to_index(sym) isa Dict && return false + ssys = get_sys(sys) + ssys === getfield(sym, :sys) || return false + _sym_to_index(ssys, sym) isa Dict && return false return !isnothing(SciMLBase.sym_to_index(sym, sys)) end @@ -24,7 +28,8 @@ SymbolicIndexingInterface.variable_index(sys::TransformedIRODESystem, sym::Scope SymbolicIndexingInterface.is_parameter(sys::TransformedIRODESystem, sym::ScopeRef) = false function SymbolicIndexingInterface.is_observed(sys::TransformedIRODESystem, sym::ScopeRef) - get_sys(sys) === IRODESystem(sym) && SciMLBase.sym_to_index(sym, sys) === nothing + ssys = get_sys(sys) + ssys === getfield(sym, :sys) && SciMLBase.sym_to_index(sym, sys) === nothing end SymbolicIndexingInterface.is_time_dependent(sys::TransformedIRODESystem) = true SymbolicIndexingInterface.constant_structure(sys::TransformedIRODESystem) = false @@ -63,7 +68,7 @@ function SymbolicIndexingInterface.parameter_symbols(sys::TransformedIRODESystem end function sym_stack(scope::Union{Scope, GenScope}) - stack = Union{Symbol, Gen}[] + stack = Any[] while !isa(scope, Scope) || isdefined(scope, :parent) if isa(scope, GenScope) push!(stack, Gen(scope.identity, scope.sc.name)) @@ -76,18 +81,19 @@ function sym_stack(scope::Union{Scope, GenScope}) return stack end -function _sym_to_index(sr::ScopeRef) +_sym_to_index(sr::ScopeRef) = _sym_to_index(IRODESystem(sr), sr) +function _sym_to_index(sys::IRODESystem, sr::ScopeRef) scope = getfield(sr, :scope) stack = sym_stack(scope) - strct = NameLevel(StructuralAnalysisResult(IRODESystem(sr)).names) + strct = NameLevel(StructuralAnalysisResult(sys).names) for s in reverse(stack) strct = strct.children[s] end return strct end -function SciMLBase.sym_to_index(sr::ScopeRef{IRODESystem}, transformed_sys::TransformedIRODESystem) - unopt_idx = _sym_to_index(sr) +function SciMLBase.sym_to_index(sr::ScopeRef, transformed_sys::TransformedIRODESystem) + unopt_idx = _sym_to_index(get_sys(transformed_sys), sr) if unopt_idx.var === nothing && unopt_idx.obs === nothing sname = String(getfield(sr, :scope).name) if unopt_idx.children !== nothing && !isempty(unopt_idx.children) @@ -132,33 +138,24 @@ function SciMLBase.sym_to_index(sr::ScopeRef, A::SciMLBase.DEIntegrator) end function Base.getproperty(sys::IRODESystem, name::Symbol) - haskey(StructuralAnalysisResult(sys).names, name) || throw(Base.UndefRefError()) - return ScopeRef(sys, Scope(Scope(), name)) + names = StructuralAnalysisResult(sys).names + cursor = get(names, name, nothing) + cursor === nothing && throw(Base.UndefRefError()) + return ScopeRef(sys, Scope(Scope(), name), cursor) end function Base.propertynames(sr::ScopeRef) - scope = getfield(sr, :scope) - stack = sym_stack(scope) - strct = NameLevel(StructuralAnalysisResult(IRODESystem(sr)).names) - for s in reverse(stack) - strct = strct.children[s] - strct.children === nothing && return keys(Dict{Symbol, Any}()) - end - return keys(strct.children) + cursor = getfield(sr, :cursor) + cursor.children === nothing && return keys(Dict{Symbol, Any}()) + return keys(cursor.children) end function Base.getproperty(sr::ScopeRef{IRODESystem}, name::Symbol) - scope = getfield(sr, :scope) - stack = sym_stack(scope) - strct = NameLevel(StructuralAnalysisResult(IRODESystem(sr)).names) - for s in reverse(stack) - strct = strct.children[s] - strct.children === nothing && throw(Base.UndefRefError()) - end - if !haskey(strct.children, name) - throw(Base.UndefRefError()) - end - ScopeRef(IRODESystem(sr), Scope(getfield(sr, :scope), name)) + cursor = getfield(sr, :cursor) + cursor.children === nothing && return throw(Base.UndefRefError()) + new_cursor = get(cursor.children, name, nothing) + new_cursor === nothing && return throw(Base.UndefRefError()) + return ScopeRef(IRODESystem(sr), Scope(getfield(sr, :scope), name), new_cursor) end function Base.show(io::IO, scope::Scope) @@ -196,10 +193,10 @@ end # Split `syms` into `vars` and `obs` and sort them in preparation for # passing them off to `compile_batched_reconstruct_func()` -function split_and_sort_syms(syms) +function split_and_sort_syms(sys, syms) vars = Int64[] obs = Int64[] - for level in _sym_to_index.(syms) + for level in _sym_to_index.(Ref(sys), syms) if level.obs !== nothing @assert level.var === nothing push!(obs, level.obs) @@ -212,8 +209,8 @@ end """ join_syms( - syms, vars, obs, - (var_inds, obs_inds)=split_and_sort_syms(syms) + sys, syms, vars, obs, + (var_inds, obs_inds)=split_and_sort_syms(sys, syms) ) The user just asked for syms, return the values regardless of whether @@ -222,9 +219,9 @@ they were variables or observed, in order they were requested. `vars` and `obs` are the data to be joined and ordered per the ordering in `syms`. The must be currently order in first axis by `var_inds` and `obs_inds` resepectively. """ -function join_syms( +function join_syms(sys, syms, vars::AbstractMatrix, obs::AbstractMatrix, - (var_inds, obs_inds)=split_and_sort_syms(syms) + (var_inds, obs_inds)=split_and_sort_syms(sys, syms) ) length(var_inds) == size(vars, 1) || throw(DimensionMismatch("wrong number of vars")) length(obs_inds) == size(obs, 1) || throw(DimensionMismatch("wrong number of obs")) @@ -236,7 +233,7 @@ function join_syms( vars_idx = 1 obs_idx = 1 for (out_idx, sym) in enumerate(syms) - level = DAECompiler._sym_to_index(sym) + level = DAECompiler._sym_to_index(sys, sym) if level.obs !== nothing @assert level.var === nothing loc=findfirst(==(level.obs), obs_inds) @@ -260,7 +257,8 @@ for the particular `syms` being requested. The return value is a `length(syms)` by `length(ts)` matrix. """ function batch_reconstruct(ro, syms, dus, us, p, ts) - vars, obs = split_and_sort_syms(syms) + sys = get_sys(ro.tsys) + vars, obs = split_and_sort_syms(sys, syms) debug_config = DebugConfig(ro.tsys) # First, look up the appropriate reconstruction function from our cache: @@ -293,7 +291,7 @@ function batch_reconstruct(ro, syms, dus, us, p, ts) out_vars[:, t_idx] .= vars_tmp out_obs[:, t_idx] .= obs_tmp end - return join_syms(syms, out_vars, out_obs, (vars, obs)) + return join_syms(sys, syms, out_vars, out_obs, (vars, obs)) end function batch_reconstruct(sol::SciMLBase.AbstractODESolution, @@ -370,9 +368,10 @@ For each variable/observed in `syms` computes it's derivative with respect to ti """ function reconstruct_time_deriv(sol::ODESolution, syms, ts=sol.t) # We only allow ODESolution not AbstractODESolution as we do not suport DAESolutions - var_inds, obs_inds = split_and_sort_syms(syms) - transformed_sys = get_transformed_sys(sol) + sys = get_sys(transformed_sys) + var_inds, obs_inds = split_and_sort_syms(sys, syms) + dreconstruct_dtime! = get!(sol.prob.f.observed.time_derivative_cache, (var_inds, obs_inds)) do construct_reconstruction_time_derivative(transformed_sys, var_inds, obs_inds, false;) end @@ -395,5 +394,5 @@ function reconstruct_time_deriv(sol::ODESolution, syms, ts=sol.t) dvar_dt[:, i] .= dvar dobs_dt[:, i] .= dobs end - return join_syms(syms, dvar_dt, dobs_dt, (var_inds, obs_inds)) + return join_syms(sys, syms, dvar_dt, dobs_dt, (var_inds, obs_inds)) end diff --git a/src/transform/tearing_schedule.jl b/src/transform/tearing_schedule.jl index 5c05a4d..636978f 100644 --- a/src/transform/tearing_schedule.jl +++ b/src/transform/tearing_schedule.jl @@ -153,6 +153,8 @@ end return Incidence(const_val, new_row, incT.eps) end remap_incidence(t::PartialStruct, var) = PartialStruct(t.typ, Any[remap_incidence(f, var) for f in t.fields]) + remap_incidence(t::PartialKeyValue, var) = PartialKeyValue(remap_incidence(t.typ, var), remap_incidence(t.parent, var), + IdDict{Any, Any}(remap_incidence(k, var)=>remap_incidence(v, var) for (k, v) in pairs(t.vals))) remap_incidence(t::Union{Type, Const, Eq}, var) = t function remap_ir!(ir, var) diff --git a/test/MSL/modeling_toolkit_helper.jl b/test/MSL/modeling_toolkit_helper.jl index 9dbfb92..c78f2e5 100644 --- a/test/MSL/modeling_toolkit_helper.jl +++ b/test/MSL/modeling_toolkit_helper.jl @@ -21,7 +21,7 @@ function DAECompiler.IRODESystem(model::MTK.ODESystem; debug_config=(;)) T = @declare_MTKConnector model # We assume no user set parameters for the MTK tests T_parameterless = T{@NamedTuple{}} - DAECompiler.IRODESystem(Tuple{T_parameterless}; debug_config) + invokelatest(DAECompiler.IRODESystem, Tuple{T_parameterless}; debug_config) end @@ -136,7 +136,7 @@ function state_default_mapping!(prob, du0::Vector, u0::Vector) # If this was a differential, peel it and recurse to get the underlying variable index: inner_var = only(arguments(var)) var_idx = peel_differential_var_index(inner_var) - + # if the underlying variable is `nothing`, it's not real, so just pass it on. if var_idx === nothing return nothing @@ -149,7 +149,7 @@ function state_default_mapping!(prob, du0::Vector, u0::Vector) try # depending on if we came here via sys.ref, or via a MTK variable we may or may not already have a ScopeRef ref = isa(var, DAECompiler.ScopeRef) ? var : getproperty(sys, access_var(var)) - unopt_idx = DAECompiler._sym_to_index(ref) + unopt_idx = DAECompiler._sym_to_index(ref) return unopt_idx.var catch @error("Unable to index $(var) into $(sys)") @@ -158,7 +158,7 @@ function state_default_mapping!(prob, du0::Vector, u0::Vector) end end - + function set_initial_condition!(var, val, new_u0, new_du0) # First, peel away any `Differential()` calls wrapping our variable, @@ -261,10 +261,10 @@ function Base.getproperty(sys::IRODESystem, name::Symbol) namespaces = split_namespaces_var(name) if haskey(names, namespaces[1]) # Normal DAECompiler way - return return get_scope_ref(sys, namespaces) + return return get_scope_ref(sys, namespaces, names[namespaces[1]]) elseif length(namespaces) > 1 && haskey(names, namespaces[2]) # Ignore first namespace it's cos we are not fully consistent with if we include the system name or not - return return get_scope_ref(sys, namespaces; start_idx=2) + return return get_scope_ref(sys, namespaces, names[namespaces[2]]; start_idx=2) else # It could be from the mtksys mtksys = sys_map[sys_map_key(sys)] if hasproperty(mtksys, name) # if it is actually from the MTK system (which allows unflattened names) @@ -273,8 +273,8 @@ function Base.getproperty(sys::IRODESystem, name::Symbol) end throw(Base.KeyError(name)) # should be a UndefRef but key error useful for findout what broke it. end -function get_scope_ref(sys, names; start_idx=1) - ref = DAECompiler.ScopeRef(sys, DAECompiler.Scope(DAECompiler.Scope(), names[start_idx])) +function get_scope_ref(sys, names, cursor; start_idx=1) + ref = DAECompiler.ScopeRef(sys, DAECompiler.Scope(DAECompiler.Scope(), names[start_idx]), cursor) for name in @view names[(start_idx+1):end] ref = getproperty(ref, name) end diff --git a/test/Project.toml b/test/Project.toml new file mode 100644 index 0000000..59c6f96 --- /dev/null +++ b/test/Project.toml @@ -0,0 +1,36 @@ +[deps] +DAECompiler = "32805668-c3d0-42c2-aafd-0d0a9857a104" +ControlSystemsBase = "aaaaaaaa-a6ca-5380-bf3e-84a91bcd477e" +DataInterpolations = "82cc6244-b520-54b8-b5a6-8a565e85f1d0" +FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" +FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" +IfElse = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" +InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" +ModelingToolkitStandardLibrary = "16a59e39-deab-5bd0-87e4-056b12336739" +OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" +Roots = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" +SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" +Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462" +SymbolicIndexingInterface = "2efcf032-c050-4f8e-a9bb-153293bab1f5" +StateSelection = "64909d44-ed92-46a8-bbd9-f047dfbdc84b" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +Diffractor = "9f5e2b26-1114-432f-b630-d3fe2085c51c" +ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +SciMLSensitivity = "1ed8b502-d754-442c-8d5d-10ac956f44a1" +REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +Cthulhu = "f68482b8-f384-11e8-15f7-abe071a5a75f" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[compat] +Roots = "2.0.22" +ModelingToolkitStandardLibrary = "2.6.0" + +[sources] +ModelingToolkitStandardLibrary = {rev = "ox/dae_compatible5", url = "https://github.com/CedarEDA/ModelingToolkitStandardLibrary.jl"} diff --git a/test/state_mapping.jl b/test/state_mapping.jl index fe0b9ce..d87f74d 100644 --- a/test/state_mapping.jl +++ b/test/state_mapping.jl @@ -16,7 +16,7 @@ using SymbolicIndexingInterface idx::Int is_obs::Bool end - function DAECompiler._sym_to_index(ref::DummyRef) + function DAECompiler._sym_to_index(_, ref::DummyRef) ref.is_obs ? DAECompiler.NameLevel(nothing, ref.idx, nothing, nothing, nothing) : DAECompiler.NameLevel(ref.idx, nothing, nothing, nothing, nothing) end @@ -25,7 +25,7 @@ using SymbolicIndexingInterface obs_mask = rand(Bool, 50) syms = DummyRef.(indexes, obs_mask) - (var_inds, obs_inds)=split_and_sort_syms(syms) + (var_inds, obs_inds)=split_and_sort_syms(nothing, syms) var_data = zeros(Int, length(var_inds), 3) var_data[:, 1] .= var_inds @@ -34,11 +34,11 @@ using SymbolicIndexingInterface obs_data[:, 1] .= obs_inds - merged_data = join_syms(syms, var_data, obs_data) + merged_data = join_syms(nothing, syms, var_data, obs_data) @test merged_data[:, 1] == indexes # check passing in inds from earlier also works the same: - @test merged_data == join_syms(syms, var_data, obs_data, (var_inds, obs_inds)) + @test merged_data == join_syms(nothing, syms, var_data, obs_data, (var_inds, obs_inds)) end @testset "variable_symbols" begin