diff --git a/Manifest.toml b/Manifest.toml index 565c5e96..b13c3caa 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,14 +1,19 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.0-rc2" +julia_version = "1.9.3" manifest_format = "2.0" -project_hash = "9cd5b4c4670814511b9359e1028ae71d50398c67" +project_hash = "2722c4c20f9f37455cc8e5e8d1b1a81036c80f24" + +[[deps.ADTypes]] +git-tree-sha1 = "5d2e21d7b0d8c22f67483ef95ebdc39c0e6b6003" +uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +version = "0.2.4" [[deps.AbstractAlgebra]] -deps = ["GroupsCore", "InteractiveUtils", "LinearAlgebra", "MacroTools", "Random", "RandomExtensions", "SparseArrays", "Test"] -git-tree-sha1 = "3ee5c58774f4487a5bf2bb05e39d91ff5022b4cc" +deps = ["GroupsCore", "InteractiveUtils", "LinearAlgebra", "MacroTools", "Preferences", "Random", "RandomExtensions", "SparseArrays", "Test"] +git-tree-sha1 = "86eed254467cb8ae3fb524e46f9c14e916cc568d" uuid = "c3fe647b-3220-5bb0-a1ea-a7954cac585d" -version = "0.29.4" +version = "0.32.3" [[deps.AbstractTrees]] git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" @@ -17,9 +22,9 @@ version = "0.4.4" [[deps.Adapt]] deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "cc37d689f599e8df4f464b2fa3870ff7db7492ef" +git-tree-sha1 = "76289dc51920fdc6e0013c872ba9551d54961c24" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.6.1" +version = "3.6.2" weakdeps = ["StaticArrays"] [deps.Adapt.extensions] @@ -36,10 +41,10 @@ uuid = "ec485272-7323-5ecc-a04f-4719b315124d" version = "0.2.0" [[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra", "Requires", "SnoopPrecompile", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "38911c7737e123b28182d89027f4216cfc8a9da7" +deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "f83ec24f76d4c8f525099b2ac475fc098138ec31" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.4.3" +version = "7.4.11" [deps.ArrayInterface.extensions] ArrayInterfaceBandedMatricesExt = "BandedMatrices" @@ -57,6 +62,12 @@ version = "7.4.3" StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" +[[deps.ArrayInterfaceCore]] +deps = ["LinearAlgebra", "SnoopPrecompile", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "e5f08b5689b1aad068e01751889f2f615c7db36d" +uuid = "30b0a656-2188-435a-8636-2ec0e6a096e2" +version = "0.1.29" + [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" @@ -64,9 +75,9 @@ uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[deps.Bijections]] -git-tree-sha1 = "fe4f8c5ee7f76f2198d5c2a06d3961c249cce7bd" +git-tree-sha1 = "71281c0c28f97e0adeed24fdaa6bf7d37177f297" uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" -version = "0.1.4" +version = "0.1.5" [[deps.BitTwiddlingConvenienceFunctions]] deps = ["Static"] @@ -75,10 +86,10 @@ uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" version = "0.1.5" [[deps.CPUSummary]] -deps = ["CpuId", "IfElse", "Static"] -git-tree-sha1 = "2c144ddb46b552f72d7eafe7cc2f50746e41ea21" +deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] +git-tree-sha1 = "601f7e7b3d36f18790e2caf83a882d88e9b71ff1" uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" -version = "0.2.2" +version = "0.2.4" [[deps.CSTParser]] deps = ["Tokenize"] @@ -93,16 +104,16 @@ uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" version = "0.5.1" [[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "Statistics", "StructArrays"] -git-tree-sha1 = "7d20c2fb8ab838e41069398685e7b6b5f89ed85b" +deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] +git-tree-sha1 = "dbeca245b0680f5393b4e6c40dcead7230ab0b3b" uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.48.0" +version = "1.54.0" [[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "c6d890a52d2c4d55d326439580c3b8d0875a77d9" +git-tree-sha1 = "e30f2f4e20f7f186dc36529910beaedc60cfa644" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.15.7" +version = "1.16.0" [[deps.CloseOpenIntervals]] deps = ["Static", "StaticArrayInterface"] @@ -116,15 +127,15 @@ uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" version = "1.0.2" [[deps.CommonMark]] -deps = ["Crayons", "JSON", "SnoopPrecompile", "URIs"] -git-tree-sha1 = "4a52799aee66e9528bd59e9c0bdd9322c0bf6998" +deps = ["Crayons", "JSON", "PrecompileTools", "URIs"] +git-tree-sha1 = "532c4185d3c9037c0237546d817858b23cf9e071" uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" -version = "0.8.11" +version = "0.8.12" [[deps.CommonSolve]] -git-tree-sha1 = "9441451ee712d1aec22edad62db1a9af3dc8d852" +git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" -version = "0.2.3" +version = "0.2.4" [[deps.CommonSubexpressions]] deps = ["MacroTools", "Test"] @@ -134,9 +145,9 @@ version = "0.3.0" [[deps.Compat]] deps = ["UUIDs"] -git-tree-sha1 = "7a60c856b9fa189eb34f5f8a6f6b5529b7942957" +git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.6.1" +version = "4.10.0" weakdeps = ["Dates", "LinearAlgebra"] [deps.Compat.extensions] @@ -145,23 +156,28 @@ weakdeps = ["Dates", "LinearAlgebra"] [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.2+0" +version = "1.0.5+0" [[deps.CompositeTypes]] git-tree-sha1 = "02d2316b7ffceff992f3096ae48c7829a8aa0638" uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" version = "0.1.3" +[[deps.ConcreteStructs]] +git-tree-sha1 = "f749037478283d372048690eb3b5f92a79432b34" +uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" +version = "0.2.3" + [[deps.ConstructionBase]] deps = ["LinearAlgebra"] -git-tree-sha1 = "89a9db8d28102b094992472d333674bd1a83ce2a" +git-tree-sha1 = "c53fc348ca4d40d7b371e71fd52251839080cbc9" uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.1" +version = "1.5.4" weakdeps = ["IntervalSets", "StaticArrays"] [deps.ConstructionBase.extensions] - IntervalSetsExt = "IntervalSets" - StaticArraysExt = "StaticArrays" + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseStaticArraysExt = "StaticArrays" [[deps.CpuId]] deps = ["Markdown"] @@ -175,15 +191,33 @@ uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" version = "4.1.1" [[deps.DataAPI]] -git-tree-sha1 = "e8119c1a33d267e16108be441a287a6981ba1630" +git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.14.0" +version = "1.15.0" + +[[deps.DataInterpolations]] +deps = ["LinearAlgebra", "RecipesBase", "RecursiveArrayTools", "Reexport", "Requires"] +git-tree-sha1 = "e868551161bcf933c97b3a985e25ce32e7dd04e5" +uuid = "82cc6244-b520-54b8-b5a6-8a565e85f1d0" +version = "4.2.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" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0" +git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.13" +version = "0.18.15" [[deps.DataValueInterfaces]] git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" @@ -195,10 +229,10 @@ deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" [[deps.DiffEqBase]] -deps = ["ArrayInterface", "ChainRulesCore", "DataStructures", "DocStringExtensions", "EnumX", "FastBroadcast", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "Printf", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "Setfield", "SparseArrays", "Static", "StaticArraysCore", "Statistics", "Tricks", "TruncatedStacktraces", "ZygoteRules"] -git-tree-sha1 = "988bbd7283aaee5c34cd3cc09e78e7c45a931c5b" +deps = ["ArrayInterface", "ChainRulesCore", "DataStructures", "DocStringExtensions", "EnumX", "FastBroadcast", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Static", "StaticArraysCore", "Statistics", "Tricks", "TruncatedStacktraces", "ZygoteRules"] +git-tree-sha1 = "0d9982e8dee851d519145857e79a17ee33ede154" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.123.0" +version = "6.130.0" [deps.DiffEqBase.extensions] DiffEqBaseDistributionsExt = "Distributions" @@ -223,10 +257,14 @@ version = "6.123.0" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [[deps.DiffEqCallbacks]] -deps = ["DataStructures", "DiffEqBase", "ForwardDiff", "LinearAlgebra", "Markdown", "NLsolve", "Parameters", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"] -git-tree-sha1 = "63b6be7b396ad395825f3cc48c56b53bfaf7e69d" +deps = ["DataStructures", "DiffEqBase", "ForwardDiff", "Functors", "LinearAlgebra", "Markdown", "NLsolve", "Parameters", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"] +git-tree-sha1 = "acc53f895588767cbb296d3d8581ebd203524a2e" uuid = "459566f4-90b8-5000-8ac3-15dfb0a30def" -version = "2.26.1" +version = "2.33.0" + + [deps.DiffEqCallbacks.weakdeps] + OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" + Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" [[deps.DiffResults]] deps = ["StaticArraysCore"] @@ -236,25 +274,29 @@ version = "1.1.0" [[deps.DiffRules]] deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "a4ad7ef19d2cdc2eff57abbbe68032b1cd0bd8f8" +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.13.0" +version = "1.15.1" [[deps.Distances]] -deps = ["LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "49eba9ad9f7ead780bfb7ee319f962c811c6d3b2" +deps = ["LinearAlgebra", "Statistics", "StatsAPI"] +git-tree-sha1 = "b6def76ffad15143924a2199f72a5cd883a2e8a9" uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.8" +version = "0.10.9" +weakdeps = ["SparseArrays"] + + [deps.Distances.extensions] + DistancesSparseArraysExt = "SparseArrays" [[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" [[deps.Distributions]] -deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns", "Test"] -git-tree-sha1 = "13027f188d26206b9e7b863036f87d2f2e7d013a" +deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns", "Test"] +git-tree-sha1 = "9e11104e7b41a8a5f04e8694467fc1f94a135bd7" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.87" +version = "0.25.101" [deps.Distributions.extensions] DistributionsChainRulesCoreExt = "ChainRulesCore" @@ -272,9 +314,9 @@ version = "0.9.3" [[deps.DomainSets]] deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "Random", "StaticArrays", "Statistics"] -git-tree-sha1 = "698124109da77b6914f64edd696be8dccf90229e" +git-tree-sha1 = "51b4b84d33ec5e0955b55ff4b748b99ce2c3faa9" uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" -version = "0.6.6" +version = "0.6.7" [[deps.Downloads]] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] @@ -288,20 +330,32 @@ uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" version = "0.6.8" [[deps.DynamicPolynomials]] -deps = ["DataStructures", "Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"] -git-tree-sha1 = "8b84876e31fa39479050e2d3395c4b3b210db8b0" +deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"] +git-tree-sha1 = "fea68c84ba262b121754539e6ea0546146515d4f" uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" -version = "0.4.6" +version = "0.5.3" [[deps.EnumX]] git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237" uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" version = "1.0.4" +[[deps.EnzymeCore]] +deps = ["Adapt"] +git-tree-sha1 = "1091d4bbc2f2f7840a65fc0496c782b955dd82fb" +uuid = "f151be2c-9106-41f4-ab19-57ee4f262869" +version = "0.6.0" + +[[deps.ExponentialUtilities]] +deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "PrecompileTools", "Printf", "SparseArrays", "libblastrampoline_jll"] +git-tree-sha1 = "602e4585bcbd5a25bc06f514724593d13ff9e862" +uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" +version = "1.25.0" + [[deps.ExprTools]] -git-tree-sha1 = "c1d06d129da9f55715c6c212866f5b1bddc5fa00" +git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.9" +version = "0.1.10" [[deps.Expronicon]] deps = ["MLStyle", "Pkg", "TOML"] @@ -311,24 +365,50 @@ version = "0.10.3" [[deps.FastBroadcast]] deps = ["ArrayInterface", "LinearAlgebra", "Polyester", "Static", "StaticArrayInterface", "StrideArraysCore"] -git-tree-sha1 = "d1248fceea0b26493fd33e8e9e8c553270da03bd" +git-tree-sha1 = "aa9925a229d45fe3018715238956766fa21804d1" uuid = "7034ab61-46d4-4ed7-9d0f-46aef9175898" -version = "0.2.5" +version = "0.2.6" + +[[deps.FastClosures]] +git-tree-sha1 = "acebe244d53ee1b461970f8910c235b259e772ef" +uuid = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a" +version = "0.3.2" + +[[deps.FastLapackInterface]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "b12f05108e405dadcc2aff0008db7f831374e051" +uuid = "29a986be-02c6-4525-aec4-84b980013641" +version = "2.0.0" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" [[deps.FillArrays]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "Statistics"] -git-tree-sha1 = "fc86b4fd3eff76c3ce4f5e96e2fdfa6282722885" +deps = ["LinearAlgebra", "Random"] +git-tree-sha1 = "a20eaa3ad64254c61eeb5f230d9306e937405434" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.0.0" +version = "1.6.1" +weakdeps = ["SparseArrays", "Statistics"] + + [deps.FillArrays.extensions] + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStatisticsExt = "Statistics" [[deps.FiniteDiff]] -deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays", "StaticArrays"] -git-tree-sha1 = "03fcb1c42ec905d15b305359603888ec3e65f886" +deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"] +git-tree-sha1 = "c6e4a1fbe73b31a3dea94b1da449503b8830c306" uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.19.0" +version = "2.21.1" + + [deps.FiniteDiff.extensions] + FiniteDiffBandedMatricesExt = "BandedMatrices" + FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" + FiniteDiffStaticArraysExt = "StaticArrays" + + [deps.FiniteDiff.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" [[deps.Formatting]] deps = ["Printf"] @@ -338,9 +418,9 @@ version = "0.4.2" [[deps.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "00e252f4d706b3d55a8863432e742bf5717b498d" +git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.35" +version = "0.10.36" weakdeps = ["StaticArrays"] [deps.ForwardDiff.extensions] @@ -357,15 +437,27 @@ git-tree-sha1 = "b104d487b34566608f8b4e1c39fb0b10aa279ff8" uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" version = "0.1.3" +[[deps.Functors]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "9a68d75d466ccc1218d0552a8e1631151c569545" +uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" +version = "0.4.5" + [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" [[deps.GPUArraysCore]] deps = ["Adapt"] -git-tree-sha1 = "1cd7f0af1aa58abc02ea1d872953a97359cb87fa" +git-tree-sha1 = "2d6ca471a6c7b536127afccfa7564b5b39227fe0" uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.4" +version = "0.1.5" + +[[deps.GenericSchur]] +deps = ["LinearAlgebra", "Printf"] +git-tree-sha1 = "fb69b2a645fa69ba5f474af09221b9308b160ce6" +uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e" +version = "0.5.3" [[deps.Glob]] git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" @@ -379,10 +471,10 @@ uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" version = "1.8.0" [[deps.Groebner]] -deps = ["AbstractAlgebra", "Combinatorics", "Logging", "MultivariatePolynomials", "Primes", "Random", "SnoopPrecompile"] -git-tree-sha1 = "b6c3e9e1eb8dcc6fd9bc68fe08dcc7ab22710de6" +deps = ["AbstractAlgebra", "Combinatorics", "ExprTools", "Logging", "MultivariatePolynomials", "Primes", "Random", "SIMD", "SnoopPrecompile"] +git-tree-sha1 = "44f595de4f6485ab5ba71fe257b5eadaa3cf161e" uuid = "0b43b601-686d-58a3-8a1c-6623616c7cd4" -version = "0.3.4" +version = "0.4.4" [[deps.GroupsCore]] deps = ["Markdown", "Random"] @@ -390,11 +482,17 @@ git-tree-sha1 = "9e1a5e9f3b81ad6a5c613d181664a0efc6fe6dd7" uuid = "d5909c97-4eac-4ecc-a3dc-fdd0858a4120" version = "0.4.0" +[[deps.HostCPUFeatures]] +deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"] +git-tree-sha1 = "eb8fed28f4994600e29beef49744639d985a04b2" +uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0" +version = "0.1.16" + [[deps.HypergeometricFunctions]] deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "432b5b03176f8182bd6841fbfc42c718506a2d5f" +git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.15" +version = "0.3.23" [[deps.IfElse]] git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" @@ -407,19 +505,23 @@ uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" version = "0.1.3" [[deps.IntegerMathUtils]] -git-tree-sha1 = "f366daebdfb079fd1fe4e3d560f99a0c892e15bc" +git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30" uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" -version = "0.1.0" +version = "0.1.2" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" [[deps.IntervalSets]] -deps = ["Dates", "Random", "Statistics"] -git-tree-sha1 = "16c0cc91853084cb5f58a78bd209513900206ce6" +deps = ["Dates", "Random"] +git-tree-sha1 = "8e59ea773deee525c99a8018409f64f19fb719e6" uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.4" +version = "0.7.7" +weakdeps = ["Statistics"] + + [deps.IntervalSets.extensions] + IntervalSetsStatisticsExt = "Statistics" [[deps.IrrationalConstants]] git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" @@ -432,10 +534,10 @@ uuid = "82899510-4779-5014-852e-03e436cf321d" version = "1.0.0" [[deps.JLLWrappers]] -deps = ["Preferences"] -git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.4.1" +version = "1.5.0" [[deps.JSON]] deps = ["Dates", "Mmap", "Parsers", "Unicode"] @@ -444,16 +546,44 @@ uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" version = "0.21.4" [[deps.JuliaFormatter]] -deps = ["CSTParser", "CommonMark", "DataStructures", "Glob", "Pkg", "SnoopPrecompile", "Tokenize"] -git-tree-sha1 = "0f6545dd63fec03d0cfe0c1d28f851e2d804e942" +deps = ["CSTParser", "CommonMark", "DataStructures", "Glob", "Pkg", "PrecompileTools", "Tokenize"] +git-tree-sha1 = "c0ac2f93058fd148267154c42dd7dc79869f7923" uuid = "98e50ef6-434e-11e9-1051-2b60c6c9e899" -version = "1.0.25" +version = "1.0.37" + +[[deps.JuliaSimCompiler]] +deps = ["ChainRules", "ConstructionBase", "DataStructures", "DiffEqCallbacks", "DocStringExtensions", "Expronicon", "ForwardDiff", "Graphs", "IfElse", "LinearAlgebra", "ModelingToolkit", "OffsetArrays", "Preferences", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SparseDiffTools", "SpecialFunctions", "StaticArrays", "Symbolics", "UnPack"] +git-tree-sha1 = "489295a1e558ed9bfb2b8111f1bb8ffb6c983bae" +uuid = "8391cb6b-4921-5777-4e45-fd9aab8cb88d" +version = "0.1.2" + + [deps.JuliaSimCompiler.extensions] + AcausalVisualizationExt = "CairoMakie" + + [deps.JuliaSimCompiler.weakdeps] + CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" [[deps.JumpProcesses]] deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "Markdown", "PoissonRandom", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "StaticArrays", "TreeViews", "UnPack"] -git-tree-sha1 = "740c685ba3d7f218663436b2152041563c19db6e" +git-tree-sha1 = "3de1d557e382cad270d921fbc22351f5628e7b1f" uuid = "ccbc3e58-028d-4f4c-8cd5-9ae44345cda5" -version = "9.6.1" +version = "9.8.0" +weakdeps = ["FastBroadcast"] + + [deps.JumpProcesses.extensions] + JumpProcessFastBroadcastExt = "FastBroadcast" + +[[deps.KLU]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] +git-tree-sha1 = "884c2968c2e8e7e6bf5956af88cb46aa745c854b" +uuid = "ef3ab10e-7fda-4108-b977-705223b18434" +version = "0.4.1" + +[[deps.Krylov]] +deps = ["LinearAlgebra", "Printf", "SparseArrays"] +git-tree-sha1 = "17e462054b42dcdda73e9a9ba0c67754170c88ae" +uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" +version = "0.9.4" [[deps.LaTeXStrings]] git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" @@ -473,9 +603,17 @@ version = "0.4.6" [[deps.Latexify]] deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] -git-tree-sha1 = "2422f47b34d4b127720a18f86fa7b1aa2e141f29" +git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe" uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.15.18" +version = "0.16.1" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SymEngineExt = "SymEngine" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" [[deps.LayoutPointers]] deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] @@ -521,11 +659,41 @@ version = "7.2.0" deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +[[deps.LinearSolve]] +deps = ["ArrayInterface", "ConcreteStructs", "DocStringExtensions", "EnumX", "EnzymeCore", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "Libdl", "LinearAlgebra", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "Requires", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "SuiteSparse", "UnPack"] +git-tree-sha1 = "ba01f7a97d3d8bd711b2c00a8a68c887d8a85c9d" +uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" +version = "2.8.1" + + [deps.LinearSolve.extensions] + LinearSolveBlockDiagonalsExt = "BlockDiagonals" + LinearSolveCUDAExt = "CUDA" + LinearSolveEnzymeExt = "Enzyme" + LinearSolveHYPREExt = "HYPRE" + LinearSolveIterativeSolversExt = "IterativeSolvers" + LinearSolveKernelAbstractionsExt = "KernelAbstractions" + LinearSolveKrylovKitExt = "KrylovKit" + LinearSolveMKLExt = "MKL_jll" + LinearSolveMetalExt = "Metal" + LinearSolvePardisoExt = "Pardiso" + + [deps.LinearSolve.weakdeps] + BlockDiagonals = "0a1fb500-61f7-11e9-3c65-f5ef3456f9f0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771" + IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153" + KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" + KrylovKit = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" + MKL_jll = "856f044c-d86e-5d09-b602-aeab76dc8ba7" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + Pardiso = "46dd5b70-b6fb-5a00-ae2d-e8fea33afaf2" + [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "0a1b7c2863e44523180fdb3146534e265a91870b" +git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.23" +version = "0.3.26" [deps.LogExpFunctions.extensions] LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" @@ -540,6 +708,17 @@ version = "0.3.23" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +[[deps.LoopVectorization]] +deps = ["ArrayInterface", "ArrayInterfaceCore", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] +git-tree-sha1 = "c88a4afe1703d731b1c4fdf4e3c7e77e3b176ea2" +uuid = "bdcacae8-1622-11e9-2a5c-532679323890" +version = "0.12.165" +weakdeps = ["ChainRulesCore", "ForwardDiff", "SpecialFunctions"] + + [deps.LoopVectorization.extensions] + ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"] + SpecialFunctionsExt = "SpecialFunctions" + [[deps.MLStyle]] git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" uuid = "d8e11817-5142-5d16-987a-aa16d5891078" @@ -547,9 +726,9 @@ version = "0.4.17" [[deps.MacroTools]] deps = ["Markdown", "Random"] -git-tree-sha1 = "42324d08725e200c23d4dfb549e0d5d89dede2d2" +git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.10" +version = "0.5.11" [[deps.ManualMemory]] git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" @@ -575,10 +754,10 @@ version = "1.1.0" uuid = "a63ad114-7e13-5084-954f-fe012c677804" [[deps.ModelingToolkit]] -deps = ["AbstractTrees", "ArrayInterface", "Combinatorics", "Compat", "ConstructionBase", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DiffRules", "Distributed", "Distributions", "DocStringExtensions", "DomainSets", "ForwardDiff", "FunctionWrappersWrappers", "Graphs", "IfElse", "InteractiveUtils", "JuliaFormatter", "JumpProcesses", "LabelledArrays", "Latexify", "Libdl", "LinearAlgebra", "MacroTools", "NaNMath", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Serialization", "Setfield", "SimpleNonlinearSolve", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "SymbolicUtils", "Symbolics", "UnPack", "Unitful"] -git-tree-sha1 = "baf95fdbc01727173660073915ccfbff55814017" +deps = ["AbstractTrees", "ArrayInterface", "Combinatorics", "Compat", "ConstructionBase", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DiffRules", "Distributed", "Distributions", "DocStringExtensions", "DomainSets", "ForwardDiff", "FunctionWrappersWrappers", "Graphs", "IfElse", "InteractiveUtils", "JuliaFormatter", "JumpProcesses", "LabelledArrays", "Latexify", "Libdl", "LinearAlgebra", "MLStyle", "MacroTools", "NaNMath", "OrdinaryDiffEq", "PrecompileTools", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Serialization", "Setfield", "SimpleNonlinearSolve", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "SymbolicUtils", "Symbolics", "URIs", "UnPack", "Unitful"] +git-tree-sha1 = "87a45c453295c1640a1fd011a85e42fda7a78d15" uuid = "961ee093-0014-501f-94e3-6117800e7a78" -version = "8.52.1" +version = "8.70.0" [deps.ModelingToolkit.extensions] MTKDeepDiffsExt = "DeepDiffs" @@ -587,12 +766,10 @@ version = "8.52.1" DeepDiffs = "ab62b9b5-e342-54a8-a765-a90f495de1a6" [[deps.ModelingToolkitStandardLibrary]] -deps = ["IfElse", "LinearAlgebra", "ModelingToolkit", "Symbolics"] -git-tree-sha1 = "89f1b24e3c5253499c36408ab891e30304ed9118" -repo-rev = "main" -repo-url = "https://github.com/SciML/ModelingToolkitStandardLibrary.jl.git" +deps = ["ChainRulesCore", "DiffEqBase", "IfElse", "LinearAlgebra", "ModelingToolkit", "Symbolics"] +git-tree-sha1 = "287918c40e6fbdb845a692024dea47f47b32038e" uuid = "16a59e39-deab-5bd0-87e4-056b12336739" -version = "1.13.0" +version = "2.3.3" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" @@ -605,15 +782,15 @@ version = "0.2.4" [[deps.MultivariatePolynomials]] deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] -git-tree-sha1 = "eaa98afe2033ffc0629f9d0d83961d66a021dfcc" +git-tree-sha1 = "6c2e970692b6f4fed2508865c43a0f67f3820cf4" uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" -version = "0.4.7" +version = "0.5.2" [[deps.MutableArithmetics]] deps = ["LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "3295d296288ab1a0a2528feb424b854418acff57" +git-tree-sha1 = "6985021d02ab8c509c841bb8b2becd3145a7b490" uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" -version = "1.2.3" +version = "1.3.3" [[deps.NLSolversBase]] deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] @@ -637,11 +814,17 @@ version = "1.0.2" uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" +[[deps.NonlinearSolve]] +deps = ["ArrayInterface", "DiffEqBase", "EnumX", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "LinearSolve", "PrecompileTools", "RecursiveArrayTools", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseDiffTools", "StaticArraysCore", "UnPack"] +git-tree-sha1 = "e10debcea868cd6e51249e8eeaf191c25f68a640" +uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" +version = "1.10.1" + [[deps.OffsetArrays]] deps = ["Adapt"] -git-tree-sha1 = "82d7c9e310fe55aa54996e6f7f94674e2a38fcb4" +git-tree-sha1 = "2ac17d29c523ce1cd38e27785a7d23024853a4bb" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.12.9" +version = "1.12.10" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] @@ -660,15 +843,27 @@ uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" version = "0.5.5+0" [[deps.OrderedCollections]] -git-tree-sha1 = "d321bf2de576bf25ec4d3e4360faca399afca282" +git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.0" +version = "1.6.2" + +[[deps.OrdinaryDiffEq]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "IfElse", "InteractiveUtils", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "LoopVectorization", "MacroTools", "MuladdMacro", "NLsolve", "NonlinearSolve", "Polyester", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLNLSolve", "SciMLOperators", "SimpleNonlinearSolve", "SimpleUnPack", "SparseArrays", "SparseDiffTools", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"] +git-tree-sha1 = "ede6c2334cb30bc83a450b282c10d0ae82fc122e" +uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" +version = "6.56.0" [[deps.PDMats]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "67eae2738d63117a196f497d7db789821bce61d1" +git-tree-sha1 = "bf6085e8bd7735e68c210c6e5d81f9a6fe192060" uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.17" +version = "0.11.19" + +[[deps.PackageExtensionCompat]] +git-tree-sha1 = "fb28e33b8a95c4cee25ce296c817d89cc2e53518" +uuid = "65ce6f38-6b18-4e1d-a461-8949797d7930" +version = "1.0.2" +weakdeps = ["Requires", "TOML"] [[deps.Parameters]] deps = ["OrderedCollections", "UnPack"] @@ -677,15 +872,15 @@ uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" version = "0.12.3" [[deps.Parsers]] -deps = ["Dates", "SnoopPrecompile"] -git-tree-sha1 = "478ac6c952fddd4399e71d4779797c538d0ff2bf" +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "716e24b21538abc91f6205fd1d8363f39b442851" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.5.8" +version = "2.7.2" [[deps.Pkg]] deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.9.0" +version = "1.9.2" [[deps.PoissonRandom]] deps = ["Random"] @@ -695,9 +890,9 @@ version = "0.4.4" [[deps.Polyester]] deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Requires", "Static", "StaticArrayInterface", "StrideArraysCore", "ThreadingUtilities"] -git-tree-sha1 = "0fe4e7c4d8ff4c70bfa507f0dd96fa161b115777" +git-tree-sha1 = "d4c9ebdc6528a4aaf7cfcf43b482e927267b400d" uuid = "f517fe37-dbe3-4b94-8317-1923a5111588" -version = "0.7.3" +version = "0.7.6" [[deps.PolyesterWeave]] deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] @@ -717,17 +912,23 @@ version = "0.4.12" [deps.PreallocationTools.weakdeps] ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + [[deps.Preferences]] deps = ["TOML"] -git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d" +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.3.0" +version = "1.4.1" [[deps.Primes]] deps = ["IntegerMathUtils"] -git-tree-sha1 = "311a2aa90a64076ea0fac2ad7492e914e6feeb81" +git-tree-sha1 = "4c9f306e5d6603ae203c2000dd460d81a5251489" uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" -version = "0.5.3" +version = "0.5.4" [[deps.Printf]] deps = ["Unicode"] @@ -735,9 +936,9 @@ uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" [[deps.QuadGK]] deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "6ec7ac8412e83d57e313393220879ede1740f9ee" +git-tree-sha1 = "9ebcd48c498668c7fa0e97a9cae873fbee7bfee1" uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.8.2" +version = "2.9.1" [[deps.Quaternions]] deps = ["LinearAlgebra", "Random", "RealDot"] @@ -772,27 +973,35 @@ uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" version = "0.1.0" [[deps.RecipesBase]] -deps = ["SnoopPrecompile"] -git-tree-sha1 = "261dddd3b862bd2c940cf6ca4d1c8fe593e457c8" +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.3" +version = "1.3.4" [[deps.RecursiveArrayTools]] deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "Requires", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "140cddd2c457e4ebb0cdc7c2fd14a7fbfbdf206e" +git-tree-sha1 = "d7087c013e8a496ff396bae843b1e16d9a30ede8" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "2.38.3" +version = "2.38.10" [deps.RecursiveArrayTools.extensions] RecursiveArrayToolsMeasurementsExt = "Measurements" + RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" RecursiveArrayToolsTrackerExt = "Tracker" RecursiveArrayToolsZygoteExt = "Zygote" [deps.RecursiveArrayTools.weakdeps] Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" +[[deps.RecursiveFactorization]] +deps = ["LinearAlgebra", "LoopVectorization", "Polyester", "PrecompileTools", "StrideArraysCore", "TriangularSolve"] +git-tree-sha1 = "2b6d4a40339aa02655b1743f4cd7c03109f520c1" +uuid = "f2c3362d-daeb-58d1-803e-2bc74f2840b4" +version = "0.2.20" + [[deps.Reexport]] git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" uuid = "189a3867-3050-52da-a836-e630ba90ab69" @@ -817,37 +1026,61 @@ uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" version = "0.4.0+0" [[deps.Rotations]] -deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays", "Statistics"] -git-tree-sha1 = "72a6abdcd088764878b473102df7c09bbc0548de" +deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays"] +git-tree-sha1 = "0783924e4a332493f72490253ba4e668aeba1d73" uuid = "6038ab10-8711-5258-84ad-4b1120ba62dc" -version = "1.4.0" +version = "1.6.0" [[deps.RuntimeGeneratedFunctions]] deps = ["ExprTools", "SHA", "Serialization"] -git-tree-sha1 = "f139e81a81e6c29c40f1971c9e5309b09c03f2c3" +git-tree-sha1 = "6aacc5eefe8415f47b3e34214c1d79d2674a0ba2" uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" -version = "0.5.6" +version = "0.5.12" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" version = "0.7.0" +[[deps.SIMD]] +deps = ["PrecompileTools"] +git-tree-sha1 = "0e270732477b9e551d884e6b07e23bb2ec947790" +uuid = "fdea26ae-647d-5447-a871-4b548cad5224" +version = "3.4.5" + [[deps.SIMDTypes]] git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" uuid = "94e857df-77ce-4151-89e5-788b33177be4" version = "0.1.0" +[[deps.SLEEFPirates]] +deps = ["IfElse", "Static", "VectorizationBase"] +git-tree-sha1 = "4b8586aece42bee682399c4c4aee95446aa5cd19" +uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" +version = "0.6.39" + [[deps.SciMLBase]] -deps = ["ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Preferences", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SnoopPrecompile", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces"] -git-tree-sha1 = "392d3e28b05984496af37100ded94dc46fa6c8de" +deps = ["ADTypes", "ArrayInterface", "ChainRulesCore", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FillArrays", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces", "ZygoteRules"] +git-tree-sha1 = "916b8a94c0d61fa5f7c5295649d3746afb866aff" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "1.91.7" +version = "1.98.1" + + [deps.SciMLBase.extensions] + ZygoteExt = "Zygote" + + [deps.SciMLBase.weakdeps] + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.SciMLNLSolve]] +deps = ["DiffEqBase", "LineSearches", "NLsolve", "Reexport", "SciMLBase"] +git-tree-sha1 = "765b788339abd7d983618c09cfc0192e2b6b15fd" +uuid = "e9a6253c-8580-4d32-9898-8661bb511710" +version = "0.1.9" [[deps.SciMLOperators]] deps = ["ArrayInterface", "DocStringExtensions", "Lazy", "LinearAlgebra", "Setfield", "SparseArrays", "StaticArraysCore", "Tricks"] -git-tree-sha1 = "e61e48ef909375203092a6e83508c8416df55a83" +git-tree-sha1 = "65c2e6ced6f62ea796af251eb292a0e131a3613b" uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" -version = "0.2.0" +version = "0.3.6" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -863,13 +1096,13 @@ deps = ["Distributed", "Mmap", "Random", "Serialization"] uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" [[deps.SimpleNonlinearSolve]] -deps = ["ArrayInterface", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "Reexport", "Requires", "SciMLBase", "SnoopPrecompile", "StaticArraysCore"] -git-tree-sha1 = "54c78ac3cc0343a16785adabe5bbf4063c737967" +deps = ["ArrayInterface", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "PackageExtensionCompat", "PrecompileTools", "Reexport", "SciMLBase", "StaticArraysCore"] +git-tree-sha1 = "4d53b83af904049c493daaf2a225bcae994a3c59" uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7" -version = "0.1.14" +version = "0.1.20" [deps.SimpleNonlinearSolve.extensions] - SimpleBatchedNonlinearSolveExt = "NNlib" + SimpleNonlinearSolveNNlibExt = "NNlib" [deps.SimpleNonlinearSolve.weakdeps] NNlib = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" @@ -880,6 +1113,11 @@ git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" version = "0.9.4" +[[deps.SimpleUnPack]] +git-tree-sha1 = "58e6353e72cde29b90a69527e56df1b5c3d8c437" +uuid = "ce78b400-467f-4804-87d8-8f486da07d0a" +version = "1.1.0" + [[deps.SnoopPrecompile]] deps = ["Preferences"] git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" @@ -891,25 +1129,47 @@ uuid = "6462fe0b-24de-5631-8697-dd941f90decc" [[deps.SortingAlgorithms]] deps = ["DataStructures"] -git-tree-sha1 = "a4ada03f999bd01b3a25dcaa30b2d929fe537e00" +git-tree-sha1 = "c60ec5c62180f27efea3ba2908480f8055e17cee" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.0" +version = "1.1.1" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" [[deps.SparseDiffTools]] -deps = ["Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "Requires", "SparseArrays", "StaticArrays", "VertexSafeGraphs"] -git-tree-sha1 = "e19ac47477c9a8fcca06dab5e5471417d5d9d723" +deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Tricks", "UnPack", "VertexSafeGraphs"] +git-tree-sha1 = "42d131931906bf4f0af97a7113c8456d0a8aff9d" uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" -version = "1.31.0" +version = "2.6.0" + + [deps.SparseDiffTools.extensions] + SparseDiffToolsEnzymeExt = "Enzyme" + SparseDiffToolsSymbolicsExt = "Symbolics" + SparseDiffToolsZygoteExt = "Zygote" + + [deps.SparseDiffTools.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.SparseInverseSubset]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "91402087fd5d13b2d97e3ef29bbdf9d7859e678a" +uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" +version = "0.1.1" + +[[deps.Sparspak]] +deps = ["Libdl", "LinearAlgebra", "Logging", "OffsetArrays", "Printf", "SparseArrays", "Test"] +git-tree-sha1 = "342cf4b449c299d8d1ceaf00b7a49f4fbc7940e7" +uuid = "e56a9233-b9d6-4f03-8d0f-1825330902ac" +version = "0.3.9" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "ef28127915f4229c971eb43f3fc075dd3fe91880" +git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.2.0" +version = "2.3.1" weakdeps = ["ChainRulesCore"] [deps.SpecialFunctions.extensions] @@ -917,15 +1177,15 @@ weakdeps = ["ChainRulesCore"] [[deps.Static]] deps = ["IfElse"] -git-tree-sha1 = "08be5ee09a7632c32695d954a602df96a877bf0d" +git-tree-sha1 = "f295e0a1da4ca425659c57441bcb59abb035a4bc" uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" -version = "0.8.6" +version = "0.8.8" [[deps.StaticArrayInterface]] -deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "Requires", "SnoopPrecompile", "SparseArrays", "Static", "SuiteSparse"] -git-tree-sha1 = "59d01f440c78ad9046680688d6ad51812953a4a9" +deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Requires", "SparseArrays", "Static", "SuiteSparse"] +git-tree-sha1 = "03fec6800a986d191f64f5c0996b59ed526eda25" uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" -version = "1.3.1" +version = "1.4.1" weakdeps = ["OffsetArrays", "StaticArrays"] [deps.StaticArrayInterface.extensions] @@ -933,15 +1193,19 @@ weakdeps = ["OffsetArrays", "StaticArrays"] StaticArrayInterfaceStaticArraysExt = "StaticArrays" [[deps.StaticArrays]] -deps = ["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"] -git-tree-sha1 = "63e84b7fdf5021026d0f17f76af7c57772313d99" +deps = ["LinearAlgebra", "Random", "StaticArraysCore"] +git-tree-sha1 = "d5fb407ec3179063214bc6277712928ba78459e2" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.5.21" +version = "1.6.4" +weakdeps = ["Statistics"] + + [deps.StaticArrays.extensions] + StaticArraysStatisticsExt = "Statistics" [[deps.StaticArraysCore]] -git-tree-sha1 = "6b7ba252635a5eff6a0b0664a41ee140a1c9e72a" +git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.0" +version = "1.4.2" [[deps.Statistics]] deps = ["LinearAlgebra", "SparseArrays"] @@ -950,15 +1214,15 @@ version = "1.9.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] -git-tree-sha1 = "45a7769a04a3cf80da1c1c7c60caf932e6f4c9f7" +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.6.0" +version = "1.7.0" [[deps.StatsBase]] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" +git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.33.21" +version = "0.34.2" [[deps.StatsFuns]] deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] @@ -976,15 +1240,15 @@ version = "1.3.0" [[deps.StrideArraysCore]] deps = ["ArrayInterface", "CloseOpenIntervals", "IfElse", "LayoutPointers", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface", "ThreadingUtilities"] -git-tree-sha1 = "e2d60a1cd52d0583471f83bd5d2dcefa626d271f" +git-tree-sha1 = "f02eb61eb5c97b48c153861c72fbbfdddc607e06" uuid = "7792a7ef-975c-4747-a70f-980b88e8d1da" -version = "0.4.10" +version = "0.4.17" [[deps.StructArrays]] -deps = ["Adapt", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"] -git-tree-sha1 = "521a0e828e98bb69042fec1809c1b5a680eb7389" +deps = ["Adapt", "ConstructionBase", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"] +git-tree-sha1 = "0a3db38e4cce3c54fe7a71f831cd7b6194a54213" uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.15" +version = "0.6.16" [[deps.SuiteSparse]] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] @@ -995,14 +1259,6 @@ deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" version = "5.10.1+6" -[[deps.SymbolicIR]] -deps = ["ChainRules", "ConstructionBase", "DocStringExtensions", "Expronicon", "ForwardDiff", "Graphs", "IfElse", "LinearAlgebra", "ModelingToolkit", "OffsetArrays", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SparseDiffTools", "SpecialFunctions", "StaticArrays", "Symbolics", "UnPack"] -git-tree-sha1 = "c71f6bf052fa1880d2d3b757a92b062a69b7a3fa" -repo-rev = "master" -repo-url = "git@github.com:JuliaComputing/SymbolicIR.jl.git" -uuid = "f7e81a98-b176-4533-a916-1afd54a23a03" -version = "0.1.0" - [[deps.SymbolicIndexingInterface]] deps = ["DocStringExtensions"] git-tree-sha1 = "f8ab052bfcbdb9b48fad2c80c873aa0d0344dfe5" @@ -1011,15 +1267,21 @@ version = "0.2.2" [[deps.SymbolicUtils]] deps = ["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "TimerOutputs", "Unityper"] -git-tree-sha1 = "5cb1f963f82e7b81305102dd69472fcd3e0e1483" +git-tree-sha1 = "2f3fa844bcd33e40d8c29de5ee8dded7a0a70422" uuid = "d1185830-fcd6-423d-90d6-eec64667417b" -version = "1.0.5" +version = "1.4.0" [[deps.Symbolics]] -deps = ["ArrayInterface", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "Groebner", "IfElse", "LaTeXStrings", "LambertW", "Latexify", "Libdl", "LinearAlgebra", "MacroTools", "Markdown", "NaNMath", "RecipesBase", "Reexport", "Requires", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicUtils", "TreeViews"] -git-tree-sha1 = "7ecd651e3829d2957478516e92f693f12d5b4781" +deps = ["ArrayInterface", "Bijections", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "Groebner", "IfElse", "LaTeXStrings", "LambertW", "Latexify", "Libdl", "LinearAlgebra", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "RecipesBase", "Reexport", "Requires", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicUtils", "TreeViews"] +git-tree-sha1 = "d8b3a50cf6ccb19a090c0bb6d89fd4f1b576fcfb" uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" -version = "5.2.0" +version = "5.6.0" + + [deps.Symbolics.extensions] + SymbolicsSymPyExt = "SymPy" + + [deps.Symbolics.weakdeps] + SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" [[deps.TOML]] deps = ["Dates"] @@ -1033,10 +1295,10 @@ uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" version = "1.0.1" [[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] -git-tree-sha1 = "1544b926975372da01227b382066ab70e574a3ec" +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "a1f34829d5ac0ef499f6d84428bd6b4c71f02ead" uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.10.1" +version = "1.11.0" [[deps.Tar]] deps = ["ArgTools", "SHA"] @@ -1049,15 +1311,15 @@ uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.ThreadingUtilities]] deps = ["ManualMemory"] -git-tree-sha1 = "c97f60dd4f2331e1a495527f80d242501d2f9865" +git-tree-sha1 = "eda08f7e9818eb53661b3deb74e3159460dfbc27" uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" -version = "0.5.1" +version = "0.5.2" [[deps.TimerOutputs]] deps = ["ExprTools", "Printf"] -git-tree-sha1 = "f2fd3f288dfc6f507b0c3a2eb3bac009251e548b" +git-tree-sha1 = "f548a9e9c490030e545f72074a41edfd0e5bcdd7" uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" -version = "0.5.22" +version = "0.5.23" [[deps.Tokenize]] git-tree-sha1 = "90538bf898832b6ebd900fa40f223e695970e3a5" @@ -1070,6 +1332,12 @@ git-tree-sha1 = "8d0d7a3fe2f30d6a7f833a5f19f7c7a5b396eae6" uuid = "a2a6695c-b41b-5b7d-aed9-dbfdeacea5d7" version = "0.3.0" +[[deps.TriangularSolve]] +deps = ["CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "LoopVectorization", "Polyester", "Static", "VectorizationBase"] +git-tree-sha1 = "31eedbc0b6d07c08a700e26d31298ac27ef330eb" +uuid = "d5829a12-d9aa-46ab-831f-fb7c9ab06edf" +version = "0.1.19" + [[deps.Tricks]] git-tree-sha1 = "aadb748be58b492045b4f56166b5188aa63ce549" uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" @@ -1077,14 +1345,14 @@ version = "0.1.7" [[deps.TruncatedStacktraces]] deps = ["InteractiveUtils", "MacroTools", "Preferences"] -git-tree-sha1 = "7bc1632a4eafbe9bd94cf1a784a9a4eb5e040a91" +git-tree-sha1 = "ea3e54c2bdde39062abf5a9758a23735558705e1" uuid = "781d530d-4396-4725-bb49-402e4bee1e77" -version = "1.3.0" +version = "1.4.0" [[deps.URIs]] -git-tree-sha1 = "074f993b0ca030848b897beff716d93aca60f06a" +git-tree-sha1 = "b7a5e99f24892b6824a954199a45e9ffcc1c70f0" uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.4.2" +version = "1.5.0" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -1099,16 +1367,30 @@ version = "1.0.2" uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" [[deps.Unitful]] -deps = ["ConstructionBase", "Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "dba3eba51b9512695b59e0bd8263ac074c5ed2d9" +deps = ["Dates", "LinearAlgebra", "Random"] +git-tree-sha1 = "a72d22c7e13fe2de562feda8645aa134712a87ee" uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.13.1" +version = "1.17.0" + + [deps.Unitful.extensions] + ConstructionBaseUnitfulExt = "ConstructionBase" + InverseFunctionsUnitfulExt = "InverseFunctions" + + [deps.Unitful.weakdeps] + ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" [[deps.Unityper]] deps = ["ConstructionBase"] -git-tree-sha1 = "d5f4ec8c22db63bd3ccb239f640e895cfde145aa" +git-tree-sha1 = "21c8fc7cd598ef49f11bc9e94871f5d7740e34b9" uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415" -version = "0.1.2" +version = "0.1.5" + +[[deps.VectorizationBase]] +deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"] +git-tree-sha1 = "b182207d4af54ac64cbc71797765068fdeff475d" +uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" +version = "0.21.64" [[deps.VertexSafeGraphs]] deps = ["Graphs"] @@ -1130,7 +1412,7 @@ version = "0.2.3" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.4.0+0" +version = "5.8.0+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] diff --git a/Project.toml b/Project.toml index 65652458..eda627fb 100644 --- a/Project.toml +++ b/Project.toml @@ -4,17 +4,17 @@ authors = ["JuliaHub Inc."] version = "0.1.0" [deps] +DataInterpolations = "82cc6244-b520-54b8-b5a6-8a565e85f1d0" +JuliaSimCompiler = "8391cb6b-4921-5777-4e45-fd9aab8cb88d" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" ModelingToolkitStandardLibrary = "16a59e39-deab-5bd0-87e4-056b12336739" Rotations = "6038ab10-8711-5258-84ad-4b1120ba62dc" -SymbolicIR = "f7e81a98-b176-4533-a916-1afd54a23a03" [compat] ModelingToolkit = "8.30" -ModelingToolkitStandardLibrary = "1.8" +ModelingToolkitStandardLibrary = "2" Rotations = "1.4" -SymbolicIR = "0.1" julia = "1" [extras] diff --git a/examples/robot/FullRobot.jl b/examples/robot/FullRobot.jl new file mode 100644 index 00000000..67b79639 --- /dev/null +++ b/examples/robot/FullRobot.jl @@ -0,0 +1,196 @@ +include("utilities/components.jl") +include("utilities/path_planning.jl") + +function FullRobot(; name) + @parameters begin + # mLoad = 15, [description = "Mass of load"] + # rLoad[1:3] = [0.1, 0.25, 0.1], + # [description = "Distance from last flange to load mass"] + # g = 9.81, [description = "Gravity acceleration"] + # refStartTime = 0, [description = "Start time of reference motion"] + # refSwingTime = 0.5, + # [ + # description = "Additional time after reference motion is in rest before simulation is stopped", + # ] + # startAngle1 = -60, [description = "Start angle of axis 1"] + # startAngle2 = 20, [description = "Start angle of axis 2"] + # startAngle3 = 90, [description = "Start angle of axis 3"] + # startAngle4 = 0, [description = "Start angle of axis 4"] + # startAngle5 = -110, [description = "Start angle of axis 5"] + # startAngle6 = 0, [description = "Start angle of axis 6"] + # endAngle1 = 60, [description = "End angle of axis 1"] + # endAngle2 = -70, [description = "End angle of axis 2"] + # endAngle3 = -35, [description = "End angle of axis 3"] + # endAngle4 = 45, [description = "End angle of axis 4"] + # endAngle5 = 110, [description = "End angle of axis 5"] + # endAngle6 = 45, [description = "End angle of axis 6"] + # refSpeedMax[1:6] = [3, 1.5, 5, 3.1, 3.1, 4.1], + # [description = "Maximum reference speeds of all joints"] + # refAccMax[1:6] = [15, 15, 15, 60, 60, 60], + # [description = "Maximum reference accelerations of all joints"] + # kp1 = 5, [description = "Gain of position controller"] + # ks1 = 0.5, [description = "Gain of speed controller"] + # Ts1 = 0.05, [description = "Time constant of integrator of speed controller"] + # kp2 = 5, [description = "Gain of position controller"] + # ks2 = 0.5, [description = "Gain of speed controller"] + # Ts2 = 0.05, [description = "Time constant of integrator of speed controller"] + # kp3 = 5, [description = "Gain of position controller"] + # ks3 = 0.5, [description = "Gain of speed controller"] + # Ts3 = 0.05, [description = "Time constant of integrator of speed controller"] + # kp4 = 5, [description = "Gain of position controller"] + # ks4 = 0.5, [description = "Gain of speed controller"] + # Ts4 = 0.05, [description = "Time constant of integrator of speed controller"] + # kp5 = 5, [description = "Gain of position controller"] + # ks5 = 0.5, [description = "Gain of speed controller"] + # Ts5 = 0.05, [description = "Time constant of integrator of speed controller"] + # kp6 = 5, [description = "Gain of position controller"] + # ks6 = 0.5, [description = "Gain of speed controller"] + # Ts6 = 0.05, [description = "Time constant of integrator of speed controller"] + end + + mLoad = 15 #, [description = "Mass of load"] + rLoad = [0.1, 0.25, 0.1] #, [description = "Distance from last flange to load mass"] + g = 9.81 #, [description = "Gravity acceleration"] + refStartTime = 0 #, [description = "Start time of reference motion"] + refSwingTime = 0.5 #, [description = "Additional time after reference motion is in rest before simulation is stopped", ] + refSpeedMax = [3, 1.5, 5, 3.1, 3.1, 4.1] # [description = "Maximum reference speeds of all joints"] + refAccMax = [15, 15, 15, 60, 60, 60] # [description = "Maximum reference accelerations of all joints"] + kp1 = 5 #, [description = "Gain of position controller"] + ks1 = 0.5 #, [description = "Gain of speed controller"] + Ts1 = 0.05 #, [description = "Time constant of integrator of speed controller"] + kp2 = 5 #, [description = "Gain of position controller"] + ks2 = 0.5 #, [description = "Gain of speed controller"] + Ts2 = 0.05 #, [description = "Time constant of integrator of speed controller"] + kp3 = 5 #, [description = "Gain of position controller"] + ks3 = 0.5 #, [description = "Gain of speed controller"] + Ts3 = 0.05 #, [description = "Time constant of integrator of speed controller"] + kp4 = 5 #, [description = "Gain of position controller"] + ks4 = 0.5 #, [description = "Gain of speed controller"] + Ts4 = 0.05 #, [description = "Time constant of integrator of speed controller"] + kp5 = 5 #, [description = "Gain of position controller"] + ks5 = 0.5 #, [description = "Gain of speed controller"] + Ts5 = 0.05 #, [description = "Time constant of integrator of speed controller"] + kp6 = 5 #, [description = "Gain of position controller"] + ks6 = 0.5 #, [description = "Gain of speed controller"] + Ts6 = 0.05 #, [description = "Time constant of integrator of speed controller"] + + startAngle1 = -60 # Can't yet have these as parameters + startAngle2 = 20 # Can't yet have these as parameters + startAngle3 = 90 # Can't yet have these as parameters + startAngle4 = 0 # Can't yet have these as parameters + startAngle5 = -110 # Can't yet have these as parameters + startAngle6 = 0 # Can't yet have these as parameters + endAngle1 = 60 # Can't yet have these as parameters + endAngle2 = -70 # Can't yet have these as parameters + endAngle3 = -35 # Can't yet have these as parameters + endAngle4 = 45 # Can't yet have these as parameters + endAngle5 = 110 # Can't yet have these as parameters + endAngle6 = 45 # Can't yet have these as parameters + + systems = @named begin + mechanics = MechanicalStructure(mLoad = (mLoad), + rLoad = (rLoad), + g = (g)) + pathPlanning = PathPlanning6(naxis = 6, + angleBegDeg = [ + startAngle1, + startAngle2, + startAngle3, + startAngle4, + startAngle5, + startAngle6, + ], + angleEndDeg = [ + endAngle1, + endAngle2, + endAngle3, + endAngle4, + endAngle5, + endAngle6, + ], + speedMax = refSpeedMax, + accMax = refAccMax, + startTime = refStartTime, + swingTime = refSwingTime) + + axis1 = AxisType1(w = 4590, + ratio = -105, + c = 43, + cd = 0.005, + Rv0 = 0.4, + Rv1 = (0.13 / 160), + kp = kp1, + ks = ks1, + Ts = Ts1) + axis2 = AxisType1(w = 5500, + ratio = 210, + c = 8, + cd = 0.01, + Rv1 = (0.1 / 130), + Rv0 = 0.5, + kp = kp2, + ks = ks2, + Ts = Ts2) + + axis3 = AxisType1(w = 5500, + ratio = 60, + c = 58, + cd = 0.04, + Rv0 = 0.7, + Rv1 = (0.2 / 130), + kp = kp3, + ks = ks3, + Ts = Ts3) + axis4 = AxisType2(k = 0.2365, + w = 6250, + D = 0.55, + J = 1.6e-4, + ratio = -99, + Rv0 = 21.8, + Rv1 = 9.8, + peak = 26.7 / 21.8, + kp = kp4, + ks = ks4, + Ts = Ts4) + axis5 = AxisType2(k = 0.2608, + w = 6250, + D = 0.55, + J = 1.8e-4, + ratio = 79.2, + Rv0 = 30.1, + Rv1 = 0.03, + peak = 39.6 / 30.1, + kp = kp5, + ks = ks5, + Ts = Ts5) + axis6 = AxisType2(k = 0.0842, + w = 7400, + D = 0.27, + J = 4.3e-5, + ratio = -99, + Rv0 = 10.9, + Rv1 = 3.92, + peak = 16.8 / 10.9, + kp = kp6, + ks = ks6, + Ts = Ts6) + + controlBus = ControlBus() + end + + eqs = [connect(axis2.flange, mechanics.axis2) + connect(axis1.flange, mechanics.axis1) + connect(axis3.flange, mechanics.axis3) + connect(axis4.flange, mechanics.axis4) + connect(axis5.flange, mechanics.axis5) + connect(axis6.flange, mechanics.axis6) + connect(controlBus, pathPlanning.controlBus) + connect(controlBus.axisControlBus1, axis1.axisControlBus) + connect(controlBus.axisControlBus2, axis2.axisControlBus) + connect(controlBus.axisControlBus3, axis3.axisControlBus) + connect(controlBus.axisControlBus4, axis4.axisControlBus) + connect(controlBus.axisControlBus5, axis5.axisControlBus) + connect(controlBus.axisControlBus6, axis6.axisControlBus)] + + ODESystem(eqs, t; systems, name) +end diff --git a/examples/robot/OneAxis.jl b/examples/robot/OneAxis.jl new file mode 100644 index 00000000..b9edb8bd --- /dev/null +++ b/examples/robot/OneAxis.jl @@ -0,0 +1,60 @@ +include("utilities/components.jl") + +function OneAxis(; name, mLoad = 15, kp = 5, ks = 0.5, Ts = 0.05, startAngle = 0, + endAngle = 120, swingTime = 0.5, refSpeedMax = 3, refAccMax = 10) + + # parameter SI.Mass mLoad(min=0)=15 "Mass of load"; + # parameter Real kp=5 "Gain of position controller of axis"; + # parameter Real ks=0.5 "Gain of speed controller of axis"; + # parameter SI.Time Ts=0.05 + # "Time constant of integrator of speed controller of axis"; + # parameter Modelica.Units.NonSI.Angle_deg startAngle = 0 "Start angle of axis"; + # parameter Modelica.Units.NonSI.Angle_deg endAngle = 120 "End angle of axis"; + + # parameter SI.Time swingTime=0.5 + # "Additional time after reference motion is in rest before simulation is stopped"; + # parameter SI.AngularVelocity refSpeedMax=3 "Maximum reference speed"; + # parameter SI.AngularAcceleration refAccMax=10 + # "Maximum reference acceleration"; + + @parameters begin + mLoad = mLoad, [description = "Mass of load"] + kp = kp, [description = "Gain of position controller of axis"] + ks = ks, [description = "Gain of speed controller of axis"] + Ts = Ts, [description = "Time constant of integrator of speed controller of axis"] + # startAngle = startAngle, [description = "Start angle of axis"] + # endAngle = endAngle, [description = "End angle of axis"] + swingTime = swingTime, + [ + description = "Additional time after reference motion is in rest before simulation is stopped", + ] + # refSpeedMax = refSpeedMax, [description = "Maximum reference speed"] + # refAccMax = refAccMax, [description = "Maximum reference acceleration"] + end + + systems = @named begin + axis = AxisType1(w = 5500, + ratio = 210, + c = 8, + cd = 0.01, + Rv0 = 0.5, + Rv1 = (0.1 / 130), + kp = kp, + ks = ks, + Ts = Ts) + load = Rotational.Inertia(J = 1.3 * mLoad) + pathPlanning = PathPlanning1(swingTime = swingTime, + angleBegDeg = startAngle, + angleEndDeg = endAngle + # speedMax = refSpeedMax, + # accMax = refAccMax + ) + controlBus = ControlBus() + end + eqs = [ + connect(axis.flange, load.flange_a), + connect(pathPlanning.controlBus, controlBus), + connect(controlBus.axisControlBus1, axis.axisControlBus), + ] + ODESystem(eqs, t; systems, name) +end diff --git a/examples/robot/test_components.jl b/examples/robot/test_components.jl new file mode 100644 index 00000000..00849460 --- /dev/null +++ b/examples/robot/test_components.jl @@ -0,0 +1,41 @@ +using ModelingToolkit +using Multibody +using Test +using SymbolicIR +t = Multibody.t + +cd(@__DIR__) +world = Multibody.world +include("OneAxis.jl") +include("FullRobot.jl") +@named structure = MechanicalStructure() +@named motor = Motor() +@named controller = Controller() +@named axis2 = AxisType2() +@named gear2 = GearType2() +# @named axis1 = AxisType1() +@named gear1 = GearType1() + +@named pp = PathPlanning1(;) +@named pp6 = PathPlanning6(;) + +@named oneaxis = OneAxis() + +ssys = structural_simplify(IRSystem(oneaxis)) +ssys = structural_simplify(oneaxis, allow_parameters = false) + +@named robot = FullRobot() + +ssys = structural_simplify(robot, allow_parameters = false) +ssys = structural_simplify(IRSystem(robot)) + + + +dummyder = setdiff(states(ssys), states(oneaxis)) +op = merge(ModelingToolkit.defaults(oneaxis), Dict(x => 0.0 for x in dummyder)) +prob = ODEProblem(ssys, op, (0.0, 10.0)) + +using OrdinaryDiffEq +sol = solve(prob, Rodas4(), u0=prob.u0 .+ 0.01.*randn.()) + + diff --git a/examples/robot/utilities/components.jl b/examples/robot/utilities/components.jl new file mode 100644 index 00000000..e56dc5f1 --- /dev/null +++ b/examples/robot/utilities/components.jl @@ -0,0 +1,473 @@ +using ModelingToolkit +using Multibody +import ModelingToolkitStandardLibrary.Blocks +using ModelingToolkitStandardLibrary.Electrical +t = Multibody.t +D = Differential(t) + +""" + @connector AxisControlBus(; name) + +- `motion_ref(t) = 0`: = true, if reference motion is not in rest +- `angle_ref(t) = 0`: Reference angle of axis flange +- `angle(t) = 0`: Angle of axis flange +- `speed_ref(t) = 0`: Reference speed of axis flange +- `speed(t) = 0`: Speed of axis flange +- `acceleration_ref(t) = 0`: Reference acceleration of axis flange +- `acceleration(t) = 0`: Acceleration of axis flange +- `current_ref(t) = 0`: Reference current of motor +- `current(t) = 0`: Current of motor +- `motorAngle(t) = 0`: Angle of motor flange +- `motorSpeed(t) = 0`: Speed of motor flange +""" +@connector function AxisControlBus(; name) + vars = @variables begin + (motion_ref(t) = 0), [description = "= true, if reference motion is not in rest"] + (angle_ref(t) = 0), [description = "Reference angle of axis flange"] + (angle(t) = 0), [description = "Angle of axis flange"] + (speed_ref(t) = 0), [description = "Reference speed of axis flange"] + (speed(t) = 0), [description = "Speed of axis flange"] + (acceleration_ref(t) = 0), [description = "Reference acceleration of axis flange"] + (acceleration(t) = 0), [description = "Acceleration of axis flange"] + (current_ref(t) = 0), [description = "Reference current of motor"] + (current(t) = 0), [description = "Current of motor"] + (motorAngle(t) = 0), [description = "Angle of motor flange"] + (motorSpeed(t) = 0), [description = "Speed of motor flange"] + end + ODESystem(Equation[], t, vars, []; name) +end + +@connector function ControlBus(; name) + systems = @named begin + axisControlBus1 = AxisControlBus() + axisControlBus2 = AxisControlBus() + axisControlBus3 = AxisControlBus() + axisControlBus4 = AxisControlBus() + axisControlBus5 = AxisControlBus() + axisControlBus6 = AxisControlBus() + end + ODESystem(Equation[], t; systems, name) +end + +""" + AccSensor(;name) + +Ideal sensor to measure the absolute flange angular acceleration + +# Connectors: + + - `flange`: [Flange](@ref) Flange of shaft from which sensor information shall be measured + - `a`: [RealOutput](@ref) Absolute angular acceleration of flange +""" +@component function AccSensor(; name) + @named flange = Rotational.Flange() + @variables w(t) [description = "Absolute angular velocity of flange"] + @named a = Blocks.RealOutput() #[description = "Absolute angular acceleration of flange"] + eqs = [D(flange.phi) ~ w + a.u ~ D(w)] + return ODESystem(eqs, t, [], []; name = name, systems = [flange, a]) +end + +""" + AxisType2(; name) + +Axis model of the r3 joints 4,5,6 +""" +function AxisType2(; name, kp = 10, ks = 1, Ts = 0.01, k = 1.1616, w = 4590, D = 0.6, + J = 0.0013, ratio = -105, Rv0 = 0.4, Rv1 = 0.13 / 160, peak = 1) + # @parameters begin + # kp = kp, [description = "Gain of position controller"] + # ks = ks, [description = "Gain of speed controller"] + # Ts = Ts, [description = "Time constant of integrator of speed controller"] + # k = k, [description = "Gain of motor"] + # w = w, [description = "Time constant of motor"] + # D = D, [description = "Damping constant of motor"] + # J = J, [description = "Moment of inertia of motor"] + # ratio = ratio, [description = "Gear ratio"] + # Rv0 = Rv0, [description = "Viscous friction torque at zero velocity"] + # Rv1 = Rv1, [description = "Viscous friction coefficient"] + # peak = peak, + # [description = "Maximum static friction torque is peak*Rv0 (peak >= 1)"] + # end + + systems = @named begin + flange = Rotational.Flange() + gear = GearType2(; Rv0, Rv1, peak, i = ratio) + motor = Motor(; J, k, w, D) + controller = Controller(; kp, ks, Ts, ratio) + angleSensor = Rotational.AngleSensor() + speedSensor = Rotational.SpeedSensor() + accSensor = AccSensor() # TODO: shift to MTKstdlib version when merged + # Const = Blocks.Constant(k = 0) + axisControlBus = AxisControlBus() + end + + eqs = [connect(gear.flange_b, flange) + connect(gear.flange_b, angleSensor.flange) + connect(gear.flange_b, speedSensor.flange) + connect(motor.flange_motor, gear.flange_a) + connect(gear.flange_b, accSensor.flange) + connect(motor.axisControlBus, axisControlBus) + (angleSensor.phi.u ~ axisControlBus.angle) + (speedSensor.w.u ~ axisControlBus.speed) + (accSensor.a.u ~ axisControlBus.acceleration) + # connect(axisControlBus.angle_ref, initializeFlange.phi_start) + # connect(axisControlBus.speed_ref, initializeFlange.w_start) + # connect(initializeFlange.flange, flange) + # connect(Const.y, initializeFlange.a_start) + connect(controller.axisControlBus, axisControlBus)] + + compose(ODESystem(eqs, t; name), systems) +end + +function AxisType1(; name, c = 43, cd = 0.005, kwargs...) + @parameters begin + c = c, [description = "Spring constant"] + cd = cd, [description = "Damper constant"] + end + @warn "Axis type 1 is currently identical to type 2" maxlog=2 + # @named axisType2 = AxisType2(redeclare GearType1 gear(c=c, d=cd), kwargs...) # TODO: Figure out how to handle the redeclare directive https://github.com/SciML/ModelingToolkit.jl/issues/2038 + axisType2 = AxisType2(; name, kwargs...) +end + +function Controller(; name, kp = 10, ks = 1, Ts = 0.01, ratio = 1) + # @parameters begin + # kp = kp, [description = "Gain of position controller"] + # ks = ks, [description = "Gain of speed controller"] + # Ts = Ts, [description = "Time constant of integrator of speed controller"] + # ratio = ratio, [description = "Gear ratio of gearbox"] + # end + systems = @named begin + gain1 = Blocks.Gain(ratio) + PI = Blocks.PI(k = ks, T = Ts) + feedback1 = Blocks.Feedback() + P = Blocks.Gain(kp) + add3 = Blocks.Add3(k3 = -1) + gain2 = Blocks.Gain(ratio) + axisControlBus = AxisControlBus() + end + + eqs = [connect(gain1.output, feedback1.input1) + connect(feedback1.output, P.input) + connect(P.output, add3.input2) + connect(gain2.output, add3.input1) + connect(add3.output, PI.err_input) + (gain2.input.u ~ axisControlBus.speed_ref) + (gain1.input.u ~ axisControlBus.angle_ref) + (feedback1.input2.u ~ axisControlBus.motorAngle) + (add3.input3.u ~ axisControlBus.motorSpeed) + (PI.ctr_output.u ~ axisControlBus.current_ref)] + + compose(ODESystem(eqs, t; name), systems) +end + +function GearType2(; name, i = -99, + Rv0 = 21.8, + Rv1 = 9.8, + peak = (26.7 / 21.8)) + # Modelica.Mechanics.Rotational.Components.BearingFriction bearingFriction( + # tau_pos=[0, + # Rv0/unitTorque; 1, (Rv0 + Rv1*unitAngularVelocity)/unitTorque], peak=peak, + # useSupport=false) + + unitAngularVelocity = 1 + + # @parameters begin + # i = i, [description = "Gear ratio"] + # Rv0 = Rv0, [description = "Viscous friction torque at zero velocity"] + # Rv1 = Rv1, [description = "Viscous friction coefficient (R=Rv0+Rv1*abs(qd))"] + # peak = peak, + # [description = "Maximum static friction torque is peak*Rv0 (peak >= 1)"] + # end + systems = @named begin + flange_a = Rotational.Flange() + flange_b = Rotational.Flange() + gear = Rotational.IdealGear(; ratio = i, use_support = false) + # bearingFriction = Rotational.BearingFriction(; tau_pos=[0, Rv0; 1, (Rv0 + Rv1*unitAngularVelocity)], peak=peak, useSupport=false) # Not yet supported + bearingFriction = Rotational.RotationalFriction(; f = Rv1, tau_brk = peak * Rv0, + tau_c = Rv0, w_brk = 0.1) # NOTE: poorly chosen w_brk + end + eqs = [connect(gear.flange_b, bearingFriction.flange_a) + connect(bearingFriction.flange_b, flange_b) + connect(gear.flange_a, flange_a)] + ODESystem(eqs, t; name, systems) +end + +function GearType1(; name, i = -105, c = 43, d = 0.005, + Rv0 = 0.4, + Rv1 = (0.13 / 160), + peak = 1) + unitAngularVelocity = 1 + unitTorque = 1 + # pars = @parameters begin + # i = i, [description = "Gear ratio"] + # c = c, [description = "Spring constant"] + # d = d, [description = "Damper constant"] + # Rv0 = Rv0, [description = "Viscous friction torque at zero velocity"] + # Rv1 = Rv1, + # [description = "Viscous friction coefficient (R=Rv0+Rv1*abs(qd))"] + # peak = peak, + # [description = "Maximum static friction torque is peak*Rv0 (peak >= 1)"] + # end + + # Modelica.Mechanics.Rotational.Components.BearingFriction bearingFriction( + # tau_pos=[0, + # Rv0/unitTorque; 1, (Rv0 + Rv1*unitAngularVelocity)/unitTorque], + # useSupport=false) + + systems = @named begin + flange_a = Rotational.Flange() + flange_b = Rotational.Flange() + gear = Rotational.IdealGear(; ratio = i, use_support = false) + spring = Rotational.SpringDamper(; c, d) + # bearingFriction = Rotational.BearingFriction(; tau_pos=[0, Rv0; 1, (Rv0 + Rv1*unitAngularVelocity)], useSupport=false) # Not yet supported + bearingFriction = Rotational.RotationalFriction(; f = Rv1, tau_brk = peak * Rv0, + tau_c = Rv0, w_brk = 0.1) # NOTE: poorly chosen w_brk + end + # vars = @variables a_rel(t)=D(spring.w_rel) [ # This is only used inside "initial equation" block + # description = "Relative angular acceleration of spring", + # ] + + eqs = [connect(spring.flange_b, gear.flange_a) + connect(bearingFriction.flange_b, spring.flange_a) + connect(gear.flange_b, flange_b) + connect(bearingFriction.flange_a, flange_a)] + ODESystem(eqs, t; name, systems) +end + +function Motor(; name, J = 0.0013, k = 1.1616, w = 4590, D = 0.6, w_max = 315, i_max = 9) + # @parameters begin + # J = J, [description = "Moment of inertia of motor"] + # k = k, [description = "Gain of motor"] + # w = w, [description = "Time constant of motor"] + # D = D, [description = "Damping constant of motor"] + # w_max = w_max, [description = "Maximum speed of motor"] + # i_max = i_max, [description = "Maximum current of motor"] + # end + + # Electrical.Analog.Basic.RotationalEMF emf(k=k, useSupport=false) + + systems = @named begin + flange_motor = Rotational.Flange() + Vs = Voltage() # was SignalVoltage + power = IdealOpAmp() + diff = IdealOpAmp() + fixed = Rotational.Fixed() # NOTE: this was added to account for the fixed frame that is added to RotationalEMF when useSupport=false + emf = Electrical.EMF(; k = k) # Was RotationalEMF(k, useSupport=false), which differs from EMF in that it can be instantiated without support + La = Inductor(; L = (250 / (2 * D * w))) + Ra = Resistor(; R = 250) + Rd2 = Resistor(; R = 100) + C = Capacitor(C = 0.004 * D / w) + OpI = IdealOpAmp() + Ri = Resistor(; R = 10) + Rd1 = Resistor(; R = 100) + Rp1 = Resistor(; R = 200) + Rp2 = Resistor(; R = 50) + Rd4 = Resistor(; R = 100) + hall2 = Voltage() # was SignalVoltage + Rd3 = Resistor(; R = 100) + g1 = Ground() + g2 = Ground() + g3 = Ground() + hall1 = CurrentSensor() + g4 = Ground() + g5 = Ground() + phi = Rotational.AngleSensor() + speed = Rotational.SpeedSensor() + Jmotor = Rotational.Inertia(; J = J) + axisControlBus = AxisControlBus() + convert1 = Blocks.Gain(1) + convert2 = Blocks.Gain(1) + end + + eqs = [connect(fixed.flange, emf.support) # NOTE: extra equation added + connect(La.n, emf.p) + connect(Ra.n, La.p) + connect(Rd2.n, diff.n1) + connect(C.n, OpI.p2) + connect(OpI.p2, power.p1) + connect(Vs.p, Rd2.p) + connect(diff.n1, Rd1.p) + connect(Rd1.n, diff.p2) + connect(diff.p2, Ri.p) + connect(Ri.n, OpI.n1) + connect(OpI.n1, C.p) + connect(power.n1, Rp1.p) + connect(power.p2, Rp1.n) + connect(Rp1.p, Rp2.p) + connect(power.p2, Ra.p) + connect(Rd3.p, hall2.p) + connect(Rd3.n, diff.p1) + connect(Rd3.n, Rd4.p) + connect(Vs.n, g1.g) + connect(g2.g, hall2.n) + connect(Rd4.n, g3.g) + connect(g3.g, OpI.p1) + connect(g5.g, Rp2.n) + connect(emf.n, hall1.p) + connect(hall1.n, g4.g) + connect(emf.flange, phi.flange) + connect(emf.flange, speed.flange) + connect(OpI.n2, power.n2) + connect(OpI.p1, OpI.n2) + connect(OpI.p1, diff.n2) + connect(Jmotor.flange_b, flange_motor) + (phi.phi.u ~ axisControlBus.motorAngle) + (speed.w.u ~ axisControlBus.motorSpeed) + (hall1.i ~ axisControlBus.current) + (hall1.i ~ convert1.u) + (convert1.y ~ hall2.v) + (convert2.u ~ axisControlBus.current_ref) + (convert2.y ~ Vs.v) + connect(emf.flange, Jmotor.flange_a)] + + compose(ODESystem(eqs, t; name), systems) +end + +function MechanicalStructure(; name, mLoad = 15, rLoad = [0, 0.25, 0], g = 9.81) + # @parameters begin + # mLoad = mLoad, [description = "Mass of load"] + # rLoad[1:3] = rLoad, [description = "Distance from last flange to load mass"] + # g = g, [description = "Gravity acceleration"] + # end + + @variables begin + (q(t)[1:6] = 0), [state_priority = typemax(Int), description = "Joint angles"] + (qd(t)[1:6] = 0), [state_priority = typemax(Int), description = "Joint speeds"] + (qdd(t)[1:6] = 0), + [state_priority = typemax(Int), description = "Joint accelerations"] + (tau(t)[1:6] = 0), + [state_priority = typemax(Int), description = "Joint driving torques"] + end + + systems = @named begin + axis1 = Rotational.Flange() + axis2 = Rotational.Flange() + axis3 = Rotational.Flange() + axis4 = Rotational.Flange() + axis5 = Rotational.Flange() + axis6 = Rotational.Flange() + r1 = Revolute(n = [0, 1, 0], useAxisFlange = true, isroot = false) + r2 = Revolute(n = [1, 0, 0], useAxisFlange = true, isroot = false) + r3 = Revolute(n = [1, 0, 0], useAxisFlange = true, isroot = false) + r4 = Revolute(n = [0, 1, 0], useAxisFlange = true, isroot = false) + r5 = Revolute(n = [1, 0, 0], useAxisFlange = true, isroot = false) + r6 = Revolute(n = [0, 1, 0], useAxisFlange = true, isroot = false) + b0 = BodyShape(r = [0, 0.351, 0], + # r_shape = [0, 0, 0], + # lengthDirection = [1, 0, 0], + # widthDirection = [0, 1, 0], + # length = 0.225, + # width = 0.3, + # height = 0.3, + r_cm = [0, 0, 0], + m = 1) + b1 = BodyShape(r = [0, 0.324, 0.3], + I_22 = 1.16, + # lengthDirection = [1, 0, 0], + # widthDirection = [0, 1, 0], + # length = 0.25, + # width = 0.15, + # height = 0.2, + # color = [255, 0, 0], + r_cm = [0, 0, 0], + m = 1) + b2 = BodyShape(r = [0, 0.65, 0], + r_cm = [0.172, 0.205, 0], + m = 56.5, + I_11 = 2.58, + I_22 = 0.64, + I_33 = 2.73, + I_21 = -0.46 + # lengthDirection = [1, 0, 0], + # widthDirection = [0, 1, 0], + # length = 0.5, + # width = 0.2, + # height = 0.15, + # color = [255, 178, 0], + ) + b3 = BodyShape(r = [0, 0.414, -0.155], + r_cm = [0.064, -0.034, 0], + m = 26.4, + I_11 = 0.279, + I_22 = 0.245, + I_33 = 0.413, + I_21 = -0.070 + # lengthDirection = [1, 0, 0], + # widthDirection = [0, 1, 0], + # length = 0.15, + # width = 0.15, + # height = 0.15, + # color = [255, 0, 0], + ) + b4 = BodyShape(r = [0, 0.186, 0], + r_cm = [0, 0, 0], + m = 28.7, + I_11 = 1.67, + I_22 = 0.081, + I_33 = 1.67 + # lengthDirection = [1, 0, 0], + # widthDirection = [0, 1, 0], + # length = 0.73, + # width = 0.1, + # height = 0.1, + # color = [255, 178, 0], + ) + b5 = BodyShape(r = [0, 0.125, 0], + r_cm = [0, 0, 0], + m = 5.2, + I_11 = 1.25, + I_22 = 0.81, + I_33 = 1.53 + # lengthDirection = [1, 0, 0], + # widthDirection = [0, 1, 0], + # length = 0.225, + # width = 0.075, + # height = 0.1, + # color = [0, 0, 255], + ) + b6 = BodyShape(r = [0, 0, 0], + r_cm = [0.05, 0.05, 0.05], + m = 0.5 + # lengthDirection = [1, 0, 0], + # widthDirection = [0, 1, 0], + # color = [0, 0, 255], + ) + load = BodyShape(r = [0, 0, 0], + r_cm = rLoad, + m = mLoad + # widthDirection = [1, 0, 0], + # width = 0.05, + # height = 0.05, + # color = [255, 0, 0], + # lengthDirection = to_unit1(rLoad), + # length = length(rLoad), + ) + end + eqs = [q .~ [r1.phi, r2.phi, r3.phi, r4.phi, r5.phi, r6.phi] + qd .~ D.(q) + qdd .~ D.(qd) + tau .~ [r1.tau, r2.tau, r3.tau, r4.tau, r5.tau, r6.tau] + connect(load.frame_a, b6.frame_b) + connect(world.frame_b, b0.frame_a) + connect(b0.frame_b, r1.frame_a) + connect(b1.frame_b, r2.frame_a) + connect(r1.frame_b, b1.frame_a) + connect(r2.frame_b, b2.frame_a) + connect(b2.frame_b, r3.frame_a) + connect(r2.axis, axis2) + connect(r1.axis, axis1) + connect(r3.frame_b, b3.frame_a) + connect(b3.frame_b, r4.frame_a) + connect(r3.axis, axis3) + connect(r4.axis, axis4) + connect(r4.frame_b, b4.frame_a) + connect(b4.frame_b, r5.frame_a) + connect(r5.axis, axis5) + connect(r5.frame_b, b5.frame_a) + connect(b5.frame_b, r6.frame_a) + connect(r6.axis, axis6) + connect(r6.frame_b, b6.frame_a)] + + compose(ODESystem(eqs, t; name), [world; systems]) +end diff --git a/examples/robot/utilities/path_planning.jl b/examples/robot/utilities/path_planning.jl new file mode 100644 index 00000000..5eef91ce --- /dev/null +++ b/examples/robot/utilities/path_planning.jl @@ -0,0 +1,352 @@ +using DataInterpolations +using ModelingToolkitStandardLibrary.Blocks: RealInput, RealOutput +"Generate reference angles for specified kinematic movement" +function PathPlanning1(; name, angleBegDeg = 0, angleEndDeg = 1, time = 0:0.01:10, + swingTime = 0.5) + # @parameters begin + # angleBegDeg = angleBegDeg, [description = "Start angle"] + # angleEndDeg = angleEndDeg, [description = "End angle"] + # speedMax = speedMax, [description = "Maximum axis speed"] + # accMax = accMax, [description = "Maximum axis acceleration"] + # startTime = startTime, [description = "Start time of movement"] + # swingTime = swingTime, + # [ + # description = "Additional time after reference motion is in rest before simulation is stopped", + # ] + # angleBeg = deg2rad(angleBegDeg), [description = "Start angles"] + # angleEnd = deg2rad(angleEndDeg), [description = "End angles"] + # end + + systems = @named begin + controlBus = ControlBus() + path = KinematicPTP(; q_end = deg2rad.(angleEndDeg), + time, + # qd_max = speedMax, + # qdd_max = accMax, + # startTime = startTime, + q_begin = deg2rad.(angleBegDeg)) + pathToAxis1 = PathToAxisControlBus(nAxis = 1, axisUsed = 1) + # terminateSimulation = TerminateSimulation(condition = time >= + # path.endTime + swingTime) + end + + eqs = [connect(path.q, pathToAxis1.q) + connect(path.qd, pathToAxis1.qd) + connect(path.qdd, pathToAxis1.qdd) + # connect(path.moving, pathToAxis1.moving) + connect(pathToAxis1.axisControlBus, controlBus.axisControlBus1)] + ODESystem(eqs, t; name, systems) +end + +function PathPlanning6(; name, naxis = 6, angleBegDeg = zeros(naxis), + angleEndDeg = ones(naxis), time = 0:0.01:10, + speedMax = fill(3, naxis), + accMax = fill(2.5, naxis), startTime = 0, swingTime = 0.5) + # @parameters begin + # naxis = naxis, [description = "Number of driven axis"] + # angleBegDeg[1:naxis] = angleBegDeg, [description = "Start angles"] + # angleEndDeg[1:naxis] = angleEndDeg, [description = "End angles"] + # # speedMax[1:naxis] = speedMax, [description = "Maximum axis speed"] + # # accMax[1:naxis] = accMax, [description = "Maximum axis acceleration"] + # # startTime = startTime, [description = "Start time of movement"] + # swingTime = swingTime, + # [ + # description = "Additional time after reference motion is in rest before simulation is stopped", + # ] + # angleBeg[1:6] = deg2rad.(angleBegDeg), [description = "Start angles"] + # angleEnd[1:6] = deg2rad.(angleEndDeg), [description = "End angles"] + # end + + systems = @named begin + controlBus = ControlBus() + path = KinematicPTP(; q_end = deg2rad.(angleEndDeg), + time, + # qd_max = speedMax, + # qdd_max = accMax, + # startTime = startTime, + q_begin = deg2rad.(angleBegDeg)) + pathToAxis1 = PathToAxisControlBus(nAxis = naxis, axisUsed = 1) + pathToAxis2 = PathToAxisControlBus(nAxis = naxis, axisUsed = 2) + pathToAxis3 = PathToAxisControlBus(nAxis = naxis, axisUsed = 3) + pathToAxis4 = PathToAxisControlBus(nAxis = naxis, axisUsed = 4) + pathToAxis5 = PathToAxisControlBus(nAxis = naxis, axisUsed = 5) + pathToAxis6 = PathToAxisControlBus(nAxis = naxis, axisUsed = 6) + # terminateSimulation = TerminateSimulation(condition = time >= + # path.endTime + swingTime) + end + + eqs = [connect(path.q, pathToAxis1.q) + connect(path.qd, pathToAxis1.qd) + connect(path.qdd, pathToAxis1.qdd) + # connect(path.moving, pathToAxis1.moving) + connect(path.q, pathToAxis2.q) + connect(path.qd, pathToAxis2.qd) + connect(path.qdd, pathToAxis2.qdd) + # connect(path.moving, pathToAxis2.moving) + connect(path.q, pathToAxis3.q) + connect(path.qd, pathToAxis3.qd) + connect(path.qdd, pathToAxis3.qdd) + # connect(path.moving, pathToAxis3.moving) + connect(path.q, pathToAxis4.q) + connect(path.qd, pathToAxis4.qd) + connect(path.qdd, pathToAxis4.qdd) + # connect(path.moving, pathToAxis4.moving) + connect(path.q, pathToAxis5.q) + connect(path.qd, pathToAxis5.qd) + connect(path.qdd, pathToAxis5.qdd) + # connect(path.moving, pathToAxis5.moving) + connect(path.q, pathToAxis6.q) + connect(path.qd, pathToAxis6.qd) + connect(path.qdd, pathToAxis6.qdd) + # connect(path.moving, pathToAxis6.moving) + connect(pathToAxis1.axisControlBus, controlBus.axisControlBus1) + connect(pathToAxis2.axisControlBus, controlBus.axisControlBus2) + connect(pathToAxis3.axisControlBus, controlBus.axisControlBus3) + connect(pathToAxis4.axisControlBus, controlBus.axisControlBus4) + connect(pathToAxis5.axisControlBus, controlBus.axisControlBus5) + connect(pathToAxis6.axisControlBus, controlBus.axisControlBus6)] + + ODESystem(eqs, t; name, systems) +end + +"Map path planning to one axis control bus" +function PathToAxisControlBus(; name, nAxis = 6, axisUsed = 1) + # @parameters begin + # nAxis = nAxis, [description = "Number of driven axis"] + # axisUsed = axisUsed, + # [description = "Map path planning of axisUsed to axisControlBus"] + # end + + systems = @named begin + q = Blocks.RealInput(nin = nAxis) + qd = Blocks.RealInput(nin = nAxis) + qdd = Blocks.RealInput(nin = nAxis) + axisControlBus = AxisControlBus() + q_axisUsed = RealPassThrough() + qd_axisUsed = RealPassThrough() + qdd_axisUsed = RealPassThrough() + moving = Blocks.Constant(k = 1) # Blocks.BooleanInput(nAxis) # NOTE + motion_ref_axisUsed = RealPassThrough() # Blocks.BooleanPassThrough() + end + + eqs = [(q_axisUsed.input.u ~ q.u[axisUsed]) + (qd_axisUsed.input.u ~ qd.u[axisUsed]) + (qdd_axisUsed.input.u ~ qdd.u[axisUsed]) + connect(motion_ref_axisUsed.input, moving.output) + (motion_ref_axisUsed.output.u ~ axisControlBus.motion_ref) + (qdd_axisUsed.output.u ~ axisControlBus.acceleration_ref) + (qd_axisUsed.output.u ~ axisControlBus.speed_ref) + (q_axisUsed.output.u ~ axisControlBus.angle_ref)] + ODESystem(eqs, t; systems, name) +end + +""" + q, qd, qdd = traj5(t; q0, q1, q̇0 = zero(q0), q̇1 = zero(q0), q̈0 = zero(q0), q̈1 = zero(q0)) + +Generate a 5:th order polynomial trajectory with specified end points, vels and accs. +""" +function traj5(t; q0 = 0.0, q1 = one(q0), q̇0 = zero(q0), q̇1 = zero(q0), q̈0 = zero(q0), + q̈1 = zero(q0)) + t[1] == 0 || throw(ArgumentError("t must start at 0")) + tf = t[end] + a0 = q0 + a1 = q̇0 + a2 = @. q̈0 / 2 + a3 = @. (20q1 - 20q0 - (8q̇1 + 12q̇0) * tf - (3q̈0 - q̈1) * tf^2) / 2tf^3 + a4 = @. (30q0 - 30q1 + (14q̇1 + 16q̇0) * tf + (3q̈0 - 2q̈1) * tf^2) / 2tf^4 + a5 = @. (12q1 - 12q0 - (6q̇1 + 6q̇0) * tf - (q̈0 - q̈1) * tf^2) / 2tf^5 + evalpoly.(t, ((a0, a1, a2, a3, a4, a5),)), + evalpoly.(t, ((a1, 2a2, 3a3, 4a4, 5a5),)), + evalpoly.(t, ((2a2, 6a3, 12a4, 20a5),)) +end +# t = 0:100; +# q, qd, qdd = traj5(t, q0 = 1, q1 = 2, q̇0 = 3, q̇1 = 4, q̈0 = 5, q̈1 = 6); +# plot(t, q, label = "q", layout = (3, 1), sp = 1) +# plot!(t, qd, label = "qd", sp = 2) +# plot!(t, qdd, label = "qdd", sp = 3) +# plot!(t, centraldiff(q), sp = 2) +# plot!(t, centraldiff(centraldiff(q)), sp = 3) + +""" + KinematicPTP(; time, name, q_begin = 0, q_end = 1, qd_begin = 0, qd_end = 0, qdd_begin = 0, qdd_end = 0) + +A simple trajectory planner that plans a 5:th order polynomial trajectory between two points, subject to specified boundary conditions on the position, velocity and acceleration. +""" +function KinematicPTP(; time, name, q_begin = 0, q_end = 1, qd_begin = 0, qd_end = 0, + qdd_begin = 0, qdd_end = 0) + nout = max(length(q_begin), length(q_end), length(qd_end), length(qdd_end)) + # parameter Real p_q_begin[nout]=(if size(q_begin, 1) == 1 then ones(nout)* + # q_begin[1] else q_begin); + # parameter Real p_q_end[nout]=(if size(q_end, 1) == 1 then ones(nout)*q_end[ + # 1] else q_end); + # parameter Real p_qd_max[nout]=(if size(qd_max, 1) == 1 then ones(nout)* + # qd_max[1] else qd_max); + # parameter Real p_qdd_max[nout]=(if size(qdd_max, 1) == 1 then ones(nout)* + # qdd_max[1] else qdd_max); + # parameter Real p_deltaq[nout]=p_q_end - p_q_begin; + + # @parameters begin + # q_begin = q_begin, [description = "Start position"] + # q_end = q_end, [description = "End position"] + # qd_max = qd_max, [description = "Maximum velocities der(q)"] + # qdd_max = qdd_max, [description = "Maximum accelerations der(qd)"] + # startTime = startTime, [description = "Time instant at which movement starts"] + # p_q_begin[1:nout] = ones(nout) .* q_begin + # p_q_end[1:nout] = ones(nout) .* q_end + # p_qd_max[1:nout] = ones(nout) .* qd_max + # p_qdd_max[1:nout] = ones(nout) .* qdd_max + # p_deltaq[1:nout] = p_q_end - p_q_begin + # end + + # output endTime "Time instant at which movement stops"; + + # Modelica.Blocks.Interfaces.RealOutput q[nout] + # "Reference position of path planning" annotation (Placement( + # transformation(extent={{100,70},{120,90}}))); + # Modelica.Blocks.Interfaces.RealOutput qd[nout] + # "Reference speed of path planning" annotation (Placement(transformation( + # extent={{100,20},{120,40}}))); + # Modelica.Blocks.Interfaces.RealOutput qdd[nout] + # "Reference acceleration of path planning" annotation (Placement( + # transformation(extent={{100,-40},{120,-20}}))); + # Modelica.Blocks.Interfaces.BooleanOutput moving[nout] + # "= true, if end position not yet reached; = false, if end position reached or axis is completely at rest" + + systems = @named begin + q = RealOutput(; nout) + qd = RealOutput(; nout) + qdd = RealOutput(; nout) + # moving = BooleanOutput(; nout) + end + + # for i in 1:nout + # aux1[i] = p_deltaq[i] / p_qd_max[i] + # aux2[i] = p_deltaq[i] / p_qdd_max[i] + # end + + # sd_max_inv = max(abs(aux1)) + # sdd_max_inv = max(abs(aux2)) + + # if sd_max_inv <= eps || sdd_max_inv <= eps + # sd_max = 0 + # sdd_max = 0 + # Ta1 = 0 + # Ta2 = 0 + # noWphase = false + # Tv = 0 + # Te = 0 + # Ta1s = 0 + # Ta2s = 0 + # Tvs = 0 + # Tes = 0 + # sd_max2 = 0 + # s1 = 0 + # s2 = 0 + # s3 = 0 + # s = 0 + # else + # sd_max = 1 / max(abs(aux1)) + # sdd_max = 1 / max(abs(aux2)) + # Ta1 = sqrt(1 / sdd_max) + # Ta2 = sd_max / sdd_max + # noWphase = Ta2 >= Ta1 + # Tv = if noWphase + # Ta1 + # else + # 1 / sd_max + # end + # Te = if noWphase + # Ta1 + Ta1 + # else + # Tv + Ta2 + # end + # Ta1s = Ta1 + startTime + # Ta2s = Ta2 + startTime + # Tvs = Tv + startTime + # Tes = Te + startTime + # sd_max2 = sdd_max * Ta1 + # s1 = sdd_max * (noWphase ? + # Ta1 * Ta1 : Ta2 * Ta2) / 2 + # s2 = s1 + (noWphase ? sd_max2 * (Te - Ta1) - (sdd_max / 2) * (Te - Ta1)^2 : + # sd_max * (Tv - Ta2)) + + # s3 = s2 + sd_max * (Te - Tv) - (sdd_max / 2) * (Te - Tv) * (Te - Tv) + + # if time < startTime + # s = 0 + # elseif noWphase + # if time < Ta1s + # s = (sdd_max / 2) * (time - startTime) * (time - startTime) + # elseif time < Tes + # s = s1 + sd_max2 * (time - Ta1s) - + # (sdd_max / 2) * (time - Ta1s) * (time - + # Ta1s) + # else + # s = s2 + # end + # elseif time < Ta2s + # s = (sdd_max / 2) * (time - startTime) * (time - startTime) + # elseif time < Tvs + # s = s1 + sd_max * (time - Ta2s) + # elseif time < Tes + # s = s2 + sd_max * (time - Tvs) - (sdd_max / 2) * (time - Tvs) * (time - Tvs) + # else + # s = s3 + # end + # end + + # sd = D(s) + # sdd = D(sd) + + # qdd = p_deltaq * sdd + # qd = p_deltaq * sd + # q = p_q_begin + p_deltaq * s + # endTime = Tes + + # # report when axis is moving + # motion_ref = time < endTime + # for i in 1:nout + # loop + # moving[i] = abs(q_begin[i] - q_end[i]) > eps ? motion_ref : false + # end + + startTime = time[1] + time0 = time .- startTime # traj5 wants time vector to start at 0 + + interp_eqs = map(1:nout) do i + q_vec, qd_vec, qdd_vec = traj5(time0; q0 = q_begin[i], q1 = q_end[i], + q̇0 = zero(q_begin[i]), + q̇1 = zero(q_begin[i]), + q̈0 = zero(q_begin[i]), + q̈1 = zero(q_begin[i])) + + qfun = CubicSpline(q_vec, time) + qdfun = CubicSpline(qd_vec, time) + qddfun = CubicSpline(qdd_vec, time) + + [q.u[i] ~ 1#qfun(t) # TODO: SymbolicIR does not handle the interpolation https://github.com/JuliaComputing/SymbolicIR.jl/issues/2 + qd.u[i] ~ 0#qdfun(t) + qdd.u[i] ~ 0]#qddfun(t)] + end + eqs = reduce(vcat, interp_eqs) + + # push!(eqs, moving.u ~ (time[1] < t < time[end])) + + ODESystem(eqs, t; name, systems) +end + +""" + RealPassThrough(; name) + +Pass a Real signal through without modification + +# Connectors +- `input` +- `output` +""" +@component function RealPassThrough(; name) + @named siso = Blocks.SISO() + @unpack u, y = siso + eqs = [y ~ u] + extend(ODESystem(eqs, t; name), siso) +end diff --git a/src/Multibody.jl b/src/Multibody.jl index 5c359487..52cce046 100644 --- a/src/Multibody.jl +++ b/src/Multibody.jl @@ -27,7 +27,7 @@ function Base.broadcasted(::typeof(~), lhs::Symbolics.Arr{Num, 1}, end function Base.broadcasted(D::Differential, x::Symbolics.Arr{Num, 1}) - collect([D(x) for x in x]) + collect([D(x) for x in collect(x)]) end """ diff --git a/src/forces.jl b/src/forces.jl index c90cbca9..10ecefec 100644 --- a/src/forces.jl +++ b/src/forces.jl @@ -284,7 +284,7 @@ function Spring(; c, name, m = 0, lengthFraction = 0.5, s_unstretched = 0, kwarg @unpack frame_a, frame_b = ptf @named lineForce = LineForceWithMass(; length = s_unstretched, m, lengthFraction, kwargs...) - @named spring2d = TP.Spring(c; s_rel0 = s_unstretched) + @named spring2d = TP.Spring(; c, s_rel0 = s_unstretched) @parameters c=c [description = "spring constant", bounds = (0, Inf)] @parameters s_unstretched=s_unstretched [ description = "unstretched length of spring", diff --git a/src/sensors.jl b/src/sensors.jl index 99e02d7c..7d6c40c6 100644 --- a/src/sensors.jl +++ b/src/sensors.jl @@ -13,6 +13,15 @@ function PartialRelativeBaseSensor(; name) compose(ODESystem(equations, t; name), frame_a, frame_b) end +function PartialAbsoluteSensor(; name, n_out) + @named begin + frame_a = Frame() + y = Blocks.RealOutput(nout = n_out) + end + equations = [] + compose(ODESystem(equations, t; name), frame_a, y) +end + """ PartialCutForceBaseSensor(; name, resolveInFrame = :frame_a) @@ -99,3 +108,16 @@ function RelativeAngles(; name, sequence = [1, 2, 3]) angles .~ axesRotationsAngles(R_rel, sequence, guessAngle1)] compose(ODESystem(eqs, t; name), frame_a, frame_b, angles) end + +function AbsoluteAngles(; name, sequence = [1, 2, 3]) + @named begin + pas = PartialAbsoluteSensor(; name) + angles = Blocks.RealOutput(nout = 3) + end + @unpack frame_a = pas + @named R_abs = NumRotationMatrix() + eqs = [collect(frame_a.f .~ 0) + collect(frame_a.tau .~ 0) + angles.u .~ axesRotationsAngles(ori(frame_a), [1, 2, 3])] + extend(compose(ODESystem(eqs, t; name)), pas) +end diff --git a/test/runtests.jl b/test/runtests.jl index 7e7cf4d4..95992cfb 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,7 +1,7 @@ using ModelingToolkit using Multibody using Test -using SymbolicIR +using JuliaSimCompiler t = Multibody.t world = Multibody.world @@ -71,7 +71,8 @@ D = Differential(t) defs = Dict(collect(spring.r_rel_0 .=> [0, 1, 0])..., collect(body.r_0 .=> [0, 0, 0])..., collect((D.(body.phi)) .=> [0, 0, 0])..., - collect(D.(D.(body.phi)) .=> [0, 0, 0])...) + collect((D.(body.phid)) .=> [0, 3, 0])..., + collect(D.(D.(body.phi)) .=> [0, 3, 0])...) prob = ODEProblem(ssys, defs, (0, 10)) # du = prob.f.f.f_oop(prob.u0, prob.p, 0) @@ -91,7 +92,7 @@ isinteractive() && # ============================================================================== ## Simple pendulum ============================================================= # ============================================================================== -using LinearAlgebra +using LinearAlgebra, ModelingToolkit @named joint = Multibody.Revolute(n = [0, 0, 1], isroot = true) @named body = Body(; m = 1, isroot = false, r_cm = [0.5, 0, 0]) @named torksensor = CutTorque() @@ -435,7 +436,7 @@ end ThreeSprings; using Multibody using ModelingToolkit -using SymbolicIR +using JuliaSimCompiler using OrdinaryDiffEq # https://doc.modelica.org/om/Modelica.Mechanics.MultiBody.Examples.Elementary.ThreeSprings.html @@ -535,7 +536,7 @@ end FreeBody; using Multibody using ModelingToolkit # using Plots -using SymbolicIR +using JuliaSimCompiler using OrdinaryDiffEq t = Multibody.t @@ -585,7 +586,7 @@ end using Multibody using ModelingToolkit # using Plots -using SymbolicIR +using JuliaSimCompiler using OrdinaryDiffEq t = Multibody.t @@ -700,7 +701,7 @@ end GearConstraint; ## using Multibody using ModelingToolkit -using SymbolicIR +using JuliaSimCompiler using OrdinaryDiffEq t = Multibody.t @@ -739,12 +740,19 @@ eqs = [connect(world.frame_b, gearConstraint.bearing) @named model = ODESystem(eqs, t, systems = [world; systems]) -# ssys = structural_simplify(model, allow_parameters=false) -ssys = structural_simplify(IRSystem(model)) -@test_skip begin # MethodError: Cannot `convert` an object of type SymbolicUtils.BasicSymbolic{Real} to an object of type Float64 Yingbo - prob = ODEProblem(ssys, [], (0, 10)) -end + +# @test_skip begin + ssys = structural_simplify(IRSystem(model)) # Index out of bounds, Yingbo + + prob = ODEProblem(ssys, + [ + D(gearConstraint.actuatedRevolute_b.phi) => 0, + D(inertia2.flange_a.phi) => 0, + D(D(idealGear.phi_b)) => 0, + D(gearConstraint.actuatedRevolute_a) => 0, + ], (0, 10)) +# end # ============================================================================== ## Rolling wheel =============================================================== @@ -762,12 +770,12 @@ defs = [ collect(D.(cwheel.rollingWheel.angles)) .=> [0, 5, 1] ] -# ssys = structural_simplify(wheel, allow_parameters=false) # MTK fails -ssys = structural_simplify(IRSystem(wheel)) # SymbolicIR chooses 38 states, Yingbo -prob = ODEProblem(ssys, defs, (0, 10)) -sol = solve(prob, Rodas4(), u0 = prob.u0 .+ 1e-1 .* randn.(), p = prob.p .+ 1e-2 .* randn.()) # TODO: fails to initialize -@test_broken length(sol.t) > 1 -# isinteractive() && plot(sol, idxs=[cwheel.x, cwheel.y]) + +# @test_skip begin # ERROR: AssertionError: ex isa Number Yingbo. MTK simplification works + ssys = structural_simplify(IRSystem(wheel)) + prob = ODEProblem(ssys, defs, (0, 10)) +# end + # ============================================================================== ## FreeMotion ==================================================================