diff --git a/Project.toml b/Project.toml index 65b5779e..2e21050b 100644 --- a/Project.toml +++ b/Project.toml @@ -5,7 +5,6 @@ version = "0.0.1-DEV" [deps] Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" -CommonSolve = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" Ferrite = "c061ca5d-56c9-439f-9c0e-210fe06d3992" @@ -14,11 +13,14 @@ GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" LinearSolve = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" +Logging = "56ddb016-857b-54e1-b83d-db4d58db5568" ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" OrderedCollections = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +OrdinaryDiffEqCore = "bbf590c4-e513-4bbe-9b18-05decba2e5d8" Polyester = "f517fe37-dbe3-4b94-8317-1923a5111588" ReadVTK = "dc215faf-f008-4882-a9f7-a79a826fadc3" Reexport = "189a3867-3050-52da-a836-e630ba90ab69" +SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" SparseMatricesCSR = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" @@ -41,7 +43,10 @@ BlockArrays = "1" DiffEqBase = "6.151.3" Ferrite = "1" LinearSolve = "2" +Logging = "1.11.0" ModelingToolkit = "9" +OrdinaryDiffEqCore = "1.13.0" +SciMLBase = "2.67.0" UnPack = "1" julia = "1.10" diff --git a/examples/Manifest.toml b/examples/Manifest.toml index e1e63074..f34ea97b 100644 --- a/examples/Manifest.toml +++ b/examples/Manifest.toml @@ -1,17 +1,18 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.4" +julia_version = "1.11.1" manifest_format = "2.0" -project_hash = "0eb4a7f9ab83e8a33641afe48f1132782504843d" +project_hash = "084b45e4d34c6bbc6387219c9cfecb7bde50adf0" [[deps.ADTypes]] -git-tree-sha1 = "99a6f5d0ce1c7c6afdb759daa30226f71c54f6b0" +git-tree-sha1 = "72af59f5b8f09faee36b4ec48e014a79210f2f4f" uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "1.7.1" -weakdeps = ["ChainRulesCore", "EnzymeCore"] +version = "1.11.0" +weakdeps = ["ChainRulesCore", "ConstructionBase", "EnzymeCore"] [deps.ADTypes.extensions] ADTypesChainRulesCoreExt = "ChainRulesCore" + ADTypesConstructionBaseExt = "ConstructionBase" ADTypesEnzymeCoreExt = "EnzymeCore" [[deps.AbstractFFTs]] @@ -31,40 +32,44 @@ uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" version = "0.4.5" [[deps.Accessors]] -deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "LinearAlgebra", "MacroTools", "Markdown", "Test"] -git-tree-sha1 = "f61b15be1d76846c0ce31d3fcfac5380ae53db6a" +deps = ["CompositionsBase", "ConstructionBase", "InverseFunctions", "LinearAlgebra", "MacroTools", "Markdown"] +git-tree-sha1 = "96bed9b1b57cf750cca50c311a197e306816a1cc" uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" -version = "0.1.37" +version = "0.1.39" [deps.Accessors.extensions] AccessorsAxisKeysExt = "AxisKeys" + AccessorsDatesExt = "Dates" AccessorsIntervalSetsExt = "IntervalSets" AccessorsStaticArraysExt = "StaticArrays" AccessorsStructArraysExt = "StructArrays" + AccessorsTestExt = "Test" AccessorsUnitfulExt = "Unitful" [deps.Accessors.weakdeps] AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" Requires = "ae029012-a4dd-5104-9daa-d747884805df" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [[deps.Adapt]] deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" +git-tree-sha1 = "50c3c56a52972d78e8be9fd135bfb91c9574c140" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" +version = "4.1.1" weakdeps = ["StaticArrays"] [deps.Adapt.extensions] AdaptStaticArraysExt = "StaticArrays" [[deps.AdaptivePredicates]] -git-tree-sha1 = "7d5da5dd472490d048b081ca1bda4a7821b06456" +git-tree-sha1 = "7e651ea8d262d2d74ce75fdf47c4d63c07dba7a6" uuid = "35492f91-a3bd-45ad-95db-fcad7dcfedb7" -version = "1.1.1" +version = "1.2.0" [[deps.AliasTables]] deps = ["PtrArrays", "Random"] @@ -74,13 +79,13 @@ version = "1.1.3" [[deps.Animations]] deps = ["Colors"] -git-tree-sha1 = "e81c509d2c8e49592413bfb0bb3b08150056c79d" +git-tree-sha1 = "e092fa223bf66a3c41f9c022bd074d916dc303e7" uuid = "27a7e980-b3e6-11e9-2bcd-0b925532e340" -version = "0.4.1" +version = "0.4.2" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" +version = "1.1.2" [[deps.ArnoldiMethod]] deps = ["LinearAlgebra", "Random", "StaticArrays"] @@ -90,15 +95,16 @@ version = "0.4.0" [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra"] -git-tree-sha1 = "f54c23a5d304fb87110de62bace7777d59088c34" +git-tree-sha1 = "017fcb757f8e921fb44ee063a7aafe5f89b86dd1" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.15.0" +version = "7.18.0" [deps.ArrayInterface.extensions] ArrayInterfaceBandedMatricesExt = "BandedMatrices" ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" ArrayInterfaceCUDAExt = "CUDA" ArrayInterfaceCUDSSExt = "CUDSS" + ArrayInterfaceChainRulesCoreExt = "ChainRulesCore" ArrayInterfaceChainRulesExt = "ChainRules" ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" ArrayInterfaceReverseDiffExt = "ReverseDiff" @@ -112,6 +118,7 @@ version = "7.15.0" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" @@ -120,9 +127,9 @@ version = "7.15.0" [[deps.ArrayLayouts]] deps = ["FillArrays", "LinearAlgebra"] -git-tree-sha1 = "ce2ca959f932f5dad70697dd93133d1167cf1e4e" +git-tree-sha1 = "2bf6e01f453284cb61c312836b4680331ddfc44b" uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" -version = "1.10.2" +version = "1.11.0" weakdeps = ["SparseArrays"] [deps.ArrayLayouts.extensions] @@ -130,12 +137,13 @@ weakdeps = ["SparseArrays"] [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" [[deps.Automa]] -deps = ["PrecompileTools", "TranscodingStreams"] -git-tree-sha1 = "014bc22d6c400a7703c0f5dc1fdc302440cf88be" +deps = ["PrecompileTools", "SIMD", "TranscodingStreams"] +git-tree-sha1 = "a8f503e8e1a5f583fbef15a8440c8c7e32185df2" uuid = "67c07d97-cdcb-5c2c-af73-a7f9c32a568b" -version = "1.0.4" +version = "1.1.0" [[deps.AxisAlgorithms]] deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] @@ -151,11 +159,12 @@ version = "0.4.7" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" [[deps.Bijections]] -git-tree-sha1 = "95f5c7e2d177b7ba1a240b0518038b975d72a8c0" +git-tree-sha1 = "d8b0439d2be438a5f2cd68ec158fe08a7b2595b7" uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" -version = "0.1.7" +version = "0.1.9" [[deps.BitTwiddlingConvenienceFunctions]] deps = ["Static"] @@ -165,9 +174,9 @@ version = "0.1.6" [[deps.BlockArrays]] deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra"] -git-tree-sha1 = "5c0ffe1dff8cb7112de075f1b1cb32191675fcba" +git-tree-sha1 = "b406207917260364a2e0287b42e4c6772cb9db88" uuid = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" -version = "1.1.0" +version = "1.3.0" [deps.BlockArrays.extensions] BlockArraysBandedMatricesExt = "BandedMatrices" @@ -175,11 +184,21 @@ version = "1.1.0" [deps.BlockArrays.weakdeps] BandedMatrices = "aae01518-5342-5314-be14-df237901396f" +[[deps.BracketingNonlinearSolve]] +deps = ["CommonSolve", "ConcreteStructs", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "95cb19c37ea427617e9795655667712f03058d98" +uuid = "70df07ce-3d50-431d-a3e7-ca6ddb60ac1e" +version = "1.1.0" +weakdeps = ["ForwardDiff"] + + [deps.BracketingNonlinearSolve.extensions] + BracketingNonlinearSolveForwardDiffExt = "ForwardDiff" + [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" +git-tree-sha1 = "8873e196c2eb87962a2048b3b8e08946535864a1" uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+1" +version = "1.0.8+2" [[deps.CEnum]] git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" @@ -194,6 +213,7 @@ version = "0.2.6" [[deps.CRC32c]] uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" +version = "1.11.0" [[deps.CRlibm_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -209,21 +229,26 @@ version = "3.4.3" [[deps.CSV]] deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "6c834533dc1fabd820c1db03c839bf97e45a3fab" +git-tree-sha1 = "deddd8725e5e1cc49ee205a1964256043720a6c3" uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.14" +version = "0.10.15" [[deps.Cairo_jll]] deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "a2f1c8c668c8e3cb4cca4e57a8efdb09067bb3fd" +git-tree-sha1 = "009060c9a6168704143100f36ab08f06c2af4642" uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.18.0+2" +version = "1.18.2+1" + +[[deps.Cassette]] +git-tree-sha1 = "f8764df8d9d2aec2812f009a1ac39e46c33354b8" +uuid = "7057c7e9-c182-5462-911a-8362d720325c" +version = "0.3.14" [[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "71acdbf594aab5bbb2cec89b208c41b4c411e49f" +git-tree-sha1 = "3e4b134270b372f2ed4d4d0e936aabaefc1802bc" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.24.0" +version = "1.25.0" weakdeps = ["SparseArrays"] [deps.ChainRulesCore.extensions] @@ -231,11 +256,11 @@ weakdeps = ["SparseArrays"] [[deps.CirculatorySystemModels]] deps = ["CSV", "DataFrames", "ModelingToolkit"] -git-tree-sha1 = "190e4a0e80a6f99a5b4c65393ca307874f2a1634" +git-tree-sha1 = "b620791d0cb7d512b791233ddafdf7d5271507b2" repo-rev = "main" repo-url = "https://github.com/TS-CUBED/CirculatorySystemModels.jl" uuid = "4211d73e-f4e8-40c4-b600-92e4b82f0e1a" -version = "0.4.0" +version = "0.4.1" [[deps.CloseOpenIntervals]] deps = ["Static", "StaticArrayInterface"] @@ -257,9 +282,9 @@ version = "0.4.0" [[deps.ColorSchemes]] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "b5278586822443594ff615963b0c09755771b3e0" +git-tree-sha1 = "c785dfb1b3bfddd1da557e861b919819b82bbe5b" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.26.0" +version = "3.27.1" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] @@ -289,10 +314,10 @@ uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" version = "1.0.2" [[deps.CommonMark]] -deps = ["Crayons", "JSON", "PrecompileTools", "URIs"] -git-tree-sha1 = "532c4185d3c9037c0237546d817858b23cf9e071" +deps = ["Crayons", "PrecompileTools"] +git-tree-sha1 = "3faae67b8899797592335832fccf4b3c80bb04fa" uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" -version = "0.8.12" +version = "0.8.15" [[deps.CommonSolve]] git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" @@ -300,10 +325,10 @@ uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" version = "0.2.4" [[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" +deps = ["MacroTools"] +git-tree-sha1 = "cda2cfaebb4be89c9084adaca7dd7333369715c5" uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" +version = "0.3.1" [[deps.CommonWorldInvalidations]] git-tree-sha1 = "ae52d1c52048455e85a387fbee9be553ec2b68d0" @@ -345,14 +370,14 @@ uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" version = "0.2.3" [[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d8a9c0b6ac2d9081bf76324b39c78ca3ce4f0c98" +git-tree-sha1 = "76219f1ed5771adbb096743bff43fb5fdd4c1157" uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.6" -weakdeps = ["IntervalSets", "StaticArrays"] +version = "1.5.8" +weakdeps = ["IntervalSets", "LinearAlgebra", "StaticArrays"] [deps.ConstructionBase.extensions] ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseLinearAlgebraExt = "LinearAlgebra" ConstructionBaseStaticArraysExt = "StaticArrays" [[deps.Contour]] @@ -377,10 +402,10 @@ uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" version = "1.16.0" [[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" +deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] +git-tree-sha1 = "fb61b4812c49343d7ef0b533ba982c46021938a6" uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.6.1" +version = "1.7.0" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] @@ -396,6 +421,7 @@ version = "1.0.0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" [[deps.Dbus_jll]] deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl"] @@ -405,15 +431,15 @@ version = "1.14.10+0" [[deps.DelaunayTriangulation]] deps = ["AdaptivePredicates", "EnumX", "ExactPredicates", "Random"] -git-tree-sha1 = "b5f1c6532d2ea71e99b74231b0a3d53fba846ced" +git-tree-sha1 = "e1371a23fd9816080c828d0ce04373857fe73d33" uuid = "927a84f5-c5f4-47a5-9785-b46e178433df" -version = "1.1.3" +version = "1.6.3" [[deps.DiffEqBase]] -deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "Static", "StaticArraysCore", "Statistics", "Tricks", "TruncatedStacktraces"] -git-tree-sha1 = "72950e082d2241a1da1c924147943e2918471af9" +deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "TruncatedStacktraces"] +git-tree-sha1 = "b7dbeaa770bad0980ddddf606de814cff2acb3bc" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.152.2" +version = "6.160.0" [deps.DiffEqBase.extensions] DiffEqBaseCUDAExt = "CUDA" @@ -444,20 +470,16 @@ version = "6.152.2" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [[deps.DiffEqCallbacks]] -deps = ["DataStructures", "DiffEqBase", "ForwardDiff", "Functors", "LinearAlgebra", "Markdown", "NonlinearSolve", "Parameters", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"] -git-tree-sha1 = "91e10deadcf1e33168bac3140eb0ea8cc4dfa5d7" +deps = ["ConcreteStructs", "DataStructures", "DiffEqBase", "DifferentiationInterface", "Functors", "LinearAlgebra", "Markdown", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"] +git-tree-sha1 = "f6bc598f21c7bf2f7885cff9b3c9078e606ab075" uuid = "459566f4-90b8-5000-8ac3-15dfb0a30def" -version = "3.7.0" - - [deps.DiffEqCallbacks.weakdeps] - OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" - Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" +version = "4.2.2" [[deps.DiffEqNoiseProcess]] deps = ["DiffEqBase", "Distributions", "GPUArraysCore", "LinearAlgebra", "Markdown", "Optim", "PoissonRandom", "QuadGK", "Random", "Random123", "RandomNumbers", "RecipesBase", "RecursiveArrayTools", "ResettableStacks", "SciMLBase", "StaticArraysCore", "Statistics"] -git-tree-sha1 = "ab1e6515ce15f01316a9825b02729fefa51726bd" +git-tree-sha1 = "880d1fcf95e6492a4e7d65c2866dbdbf6580d4f8" uuid = "77a26b50-5914-5dd7-bc55-306e6241c503" -version = "5.23.0" +version = "5.24.0" [deps.DiffEqNoiseProcess.extensions] DiffEqNoiseProcessReverseDiffExt = "ReverseDiff" @@ -478,46 +500,65 @@ uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" version = "1.15.1" [[deps.DifferentiationInterface]] -deps = ["ADTypes", "Compat", "DocStringExtensions", "FillArrays", "LinearAlgebra", "PackageExtensionCompat", "SparseArrays", "SparseMatrixColorings"] -git-tree-sha1 = "5f9a52dc40218e85daa695600733f5ccaa7eb80b" +deps = ["ADTypes", "LinearAlgebra"] +git-tree-sha1 = "7ffe68edc2a4ad0ff2eeb5a32cc99ab45746fe3d" uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -version = "0.5.13" +version = "0.6.27" [deps.DifferentiationInterface.extensions] DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" DifferentiationInterfaceDiffractorExt = "Diffractor" - DifferentiationInterfaceEnzymeExt = "Enzyme" + DifferentiationInterfaceEnzymeExt = ["EnzymeCore", "Enzyme"] DifferentiationInterfaceFastDifferentiationExt = "FastDifferentiation" DifferentiationInterfaceFiniteDiffExt = "FiniteDiff" DifferentiationInterfaceFiniteDifferencesExt = "FiniteDifferences" - DifferentiationInterfaceForwardDiffExt = "ForwardDiff" + DifferentiationInterfaceForwardDiffExt = ["ForwardDiff", "DiffResults"] + DifferentiationInterfaceMooncakeExt = "Mooncake" DifferentiationInterfacePolyesterForwardDiffExt = "PolyesterForwardDiff" - DifferentiationInterfaceReverseDiffExt = "ReverseDiff" + DifferentiationInterfaceReverseDiffExt = ["ReverseDiff", "DiffResults"] + DifferentiationInterfaceSparseArraysExt = "SparseArrays" + DifferentiationInterfaceSparseMatrixColoringsExt = "SparseMatrixColorings" + DifferentiationInterfaceStaticArraysExt = "StaticArrays" DifferentiationInterfaceSymbolicsExt = "Symbolics" - DifferentiationInterfaceTapirExt = "Tapir" DifferentiationInterfaceTrackerExt = "Tracker" DifferentiationInterfaceZygoteExt = ["Zygote", "ForwardDiff"] [deps.DifferentiationInterface.weakdeps] ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DiffResults = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" Diffractor = "9f5e2b26-1114-432f-b630-d3fe2085c51c" Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" FastDifferentiation = "eb9bf01b-bf85-4b60-bf87-ee5de06c00be" FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" - Tapir = "07d77754-e150-4737-8c94-cd238a1fb45b" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" +[[deps.DispatchDoctor]] +deps = ["MacroTools", "Preferences"] +git-tree-sha1 = "453df2ce2aef7de59c69a56d31dcd2ec3384dd77" +uuid = "8d63f2c5-f18a-4cf2-ba9d-b3f60fc568c8" +version = "0.4.17" +weakdeps = ["ChainRulesCore", "EnzymeCore"] + + [deps.DispatchDoctor.extensions] + DispatchDoctorChainRulesCoreExt = "ChainRulesCore" + DispatchDoctorEnzymeCoreExt = "EnzymeCore" + [[deps.Distances]] deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" +git-tree-sha1 = "c7e3a542b999843086e2f29dac96a618c105be1d" uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.11" +version = "0.10.12" weakdeps = ["ChainRulesCore", "SparseArrays"] [deps.Distances.extensions] @@ -527,12 +568,13 @@ weakdeps = ["ChainRulesCore", "SparseArrays"] [[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.11.0" [[deps.Distributions]] deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "0e0a1264b0942f1f3abb2b30891f2a590cc652ac" +git-tree-sha1 = "3101c32aab536e7a27b1763c0797dba151b899ad" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.110" +version = "0.25.113" [deps.Distributions.extensions] DistributionsChainRulesCoreExt = "ChainRulesCore" @@ -566,16 +608,16 @@ uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" version = "1.6.0" [[deps.DynamicPolynomials]] -deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"] -git-tree-sha1 = "30a1848c4f4fc35d1d4bbbd125650f6a11b5bc6c" +deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Reexport", "Test"] +git-tree-sha1 = "9a3ae38b460449cc9e7dd0cfb059c76028724627" uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" -version = "0.5.7" +version = "0.6.1" [[deps.DynamicQuantities]] -deps = ["Compat", "PackageExtensionCompat", "Tricks"] -git-tree-sha1 = "412b25c7d99ec6b06967d315c7b29bb8e484f092" +deps = ["DispatchDoctor", "TestItems", "Tricks"] +git-tree-sha1 = "4923007a8e500f13be4c0119554776993c055ece" uuid = "06fc5a27-2a28-4c7c-a15d-362465fb6821" -version = "0.13.2" +version = "1.4.0" [deps.DynamicQuantities.extensions] DynamicQuantitiesLinearAlgebraExt = "LinearAlgebra" @@ -601,9 +643,9 @@ uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" version = "1.0.4" [[deps.EnzymeCore]] -git-tree-sha1 = "8f205a601760f4798a10f138c3940f0451d95188" +git-tree-sha1 = "0cdb7af5c39e92d78a0ee8d0a447d32f7593137e" uuid = "f151be2c-9106-41f4-ab19-57ee4f262869" -version = "0.7.8" +version = "0.8.8" weakdeps = ["Adapt"] [deps.EnzymeCore.extensions] @@ -611,9 +653,9 @@ weakdeps = ["Adapt"] [[deps.EpollShim_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" +git-tree-sha1 = "8a4be429317c42cfae6a7fc03c31bad1970c310d" uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" -version = "0.0.20230411+0" +version = "0.0.20230411+1" [[deps.ExactPredicates]] deps = ["IntervalArithmetic", "Random", "StaticArrays"] @@ -623,15 +665,19 @@ version = "2.2.8" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" +git-tree-sha1 = "e51db81749b0777b2147fbe7b783ee79045b8e99" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" +version = "2.6.4+1" [[deps.ExponentialUtilities]] deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "PrecompileTools", "Printf", "SparseArrays", "libblastrampoline_jll"] -git-tree-sha1 = "8e18940a5ba7f4ddb41fe2b79b6acaac50880a86" +git-tree-sha1 = "cae251c76f353e32d32d76fae2fea655eab652af" uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" -version = "1.26.1" +version = "1.27.0" +weakdeps = ["StaticArrays"] + + [deps.ExponentialUtilities.extensions] + ExponentialUtilitiesStaticArraysExt = "StaticArrays" [[deps.ExprTools]] git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" @@ -645,15 +691,15 @@ uuid = "6b7a57c9-7cc1-4fdf-b7f5-e857abae3636" version = "0.8.5" [[deps.Extents]] -git-tree-sha1 = "94997910aca72897524d2237c41eb852153b0f65" +git-tree-sha1 = "81023caa0021a41712685887db1fc03db26f41f5" uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" -version = "0.1.3" +version = "0.1.4" [[deps.FFMPEG_jll]] deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "ab3f7e1819dba9434a3a5126510c8fda3a4e7000" +git-tree-sha1 = "8cc47f299902e13f90405ddb5bf87e5d474c0d38" uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "6.1.1+0" +version = "6.1.2+0" [[deps.FFTW]] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] @@ -663,9 +709,9 @@ version = "1.8.0" [[deps.FFTW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" +git-tree-sha1 = "4d81ed14783ec49ce9f2e168208a12ce1815aa25" uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.10+0" +version = "3.3.10+1" [[deps.FLTK_jll]] deps = ["Artifacts", "Fontconfig_jll", "FreeType2_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll", "Xorg_libXfixes_jll", "Xorg_libXft_jll", "Xorg_libXinerama_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] @@ -690,6 +736,27 @@ git-tree-sha1 = "cbf5edddb61a43669710cbc2241bc08b36d9e660" uuid = "29a986be-02c6-4525-aec4-84b980013641" version = "2.0.4" +[[deps.FastPower]] +git-tree-sha1 = "58c3431137131577a7c379d00fea00be524338fb" +uuid = "a4df4552-cc26-4903-aec0-212e50a0e84b" +version = "1.1.1" + + [deps.FastPower.extensions] + FastPowerEnzymeExt = "Enzyme" + FastPowerForwardDiffExt = "ForwardDiff" + FastPowerMeasurementsExt = "Measurements" + FastPowerMonteCarloMeasurementsExt = "MonteCarloMeasurements" + FastPowerReverseDiffExt = "ReverseDiff" + FastPowerTrackerExt = "Tracker" + + [deps.FastPower.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + [[deps.Ferrite]] deps = ["EnumX", "ForwardDiff", "LinearAlgebra", "NearestNeighbors", "OrderedCollections", "Preferences", "Reexport", "SparseArrays", "StaticArrays", "Tensors", "WriteVTK"] git-tree-sha1 = "1ad6e7eab1803998ad16360b1f86c7723d361cb0" @@ -712,9 +779,15 @@ version = "1.2.1" [[deps.FileIO]] deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" +git-tree-sha1 = "2dd20384bf8c6d411b5c7370865b1e9b26cb2ea3" uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.3" +version = "1.16.6" + + [deps.FileIO.extensions] + HTTPExt = "HTTP" + + [deps.FileIO.weakdeps] + HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3" [[deps.FilePaths]] deps = ["FilePathsBase", "MacroTools", "Reexport", "Requires"] @@ -723,19 +796,25 @@ uuid = "8fc22ac5-c921-52a6-82fd-178b2807b824" version = "0.8.3" [[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" +deps = ["Compat", "Dates"] +git-tree-sha1 = "7878ff7172a8e6beedd1dea14bd27c3c6340d361" uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.21" +version = "0.9.22" +weakdeps = ["Mmap", "Test"] + + [deps.FilePathsBase.extensions] + FilePathsBaseMmapExt = "Mmap" + FilePathsBaseTestExt = "Test" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" [[deps.FillArrays]] deps = ["LinearAlgebra"] -git-tree-sha1 = "0653c0a2396a6da5bc4766c43041ef5fd3efbe57" +git-tree-sha1 = "6a70198746448456524cb442b8af316927ff3e1a" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.11.0" +version = "1.13.0" weakdeps = ["PDMats", "SparseArrays", "Statistics"] [deps.FillArrays.extensions] @@ -744,24 +823,26 @@ weakdeps = ["PDMats", "SparseArrays", "Statistics"] FillArraysStatisticsExt = "Statistics" [[deps.FindFirstFunctions]] -git-tree-sha1 = "fa0ba2042021409deb144f868abafde0b06be8f0" +git-tree-sha1 = "670e1d9ceaa4a3161d32fe2d2fb2177f8d78b330" uuid = "64ca27bc-2ba2-4a57-88aa-44e436879224" -version = "1.3.0" +version = "1.4.1" [[deps.FiniteDiff]] -deps = ["ArrayInterface", "LinearAlgebra", "Setfield", "SparseArrays"] -git-tree-sha1 = "f9219347ebf700e77ca1d48ef84e4a82a6701882" +deps = ["ArrayInterface", "LinearAlgebra", "Setfield"] +git-tree-sha1 = "84e3a47db33be7248daa6274b287507dd6ff84e8" uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.24.0" +version = "2.26.2" [deps.FiniteDiff.extensions] FiniteDiffBandedMatricesExt = "BandedMatrices" FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" + FiniteDiffSparseArraysExt = "SparseArrays" FiniteDiffStaticArraysExt = "StaticArrays" [deps.FiniteDiff.weakdeps] BandedMatrices = "aae01518-5342-5314-be14-df237901396f" BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" [[deps.FixedPointNumbers]] @@ -772,9 +853,9 @@ version = "0.8.5" [[deps.Fontconfig_jll]] deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] -git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23" +git-tree-sha1 = "21fac3c77d7b5a9fc03b0ec503aa1a6392c34d2b" uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.96+0" +version = "2.15.0+0" [[deps.Format]] git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" @@ -783,9 +864,9 @@ version = "1.3.7" [[deps.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" +git-tree-sha1 = "a2df1b776752e3f344e5116c06d75a10436ab853" uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" +version = "0.10.38" weakdeps = ["StaticArrays"] [deps.ForwardDiff.extensions] @@ -799,15 +880,15 @@ version = "4.1.1" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" +git-tree-sha1 = "786e968a8d2fb167f2e4880baba62e0e26bd8e4e" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" +version = "2.13.3+1" [[deps.FreeTypeAbstraction]] deps = ["ColorVectorSpace", "Colors", "FreeType", "GeometryBasics"] -git-tree-sha1 = "2493cdfd0740015955a8e46de4ef28f49460d8bc" +git-tree-sha1 = "d52e255138ac21be31fa633200b65e4e71d26802" uuid = "663a7486-cb36-511b-a19d-713bb74d65c9" -version = "0.10.3" +version = "0.10.6" [[deps.FriBidi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -815,6 +896,12 @@ git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2" uuid = "559328eb-81f9-559d-9380-de523a88c83c" version = "1.0.14+0" +[[deps.FunctionProperties]] +deps = ["Cassette", "DiffRules"] +git-tree-sha1 = "bf7c740307eb0ee80e05d8aafbd0c5a901578398" +uuid = "f62d2435-5019-4c03-9749-2d4c77af0cbc" +version = "0.1.2" + [[deps.FunctionWrappers]] git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" @@ -827,14 +914,15 @@ uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" version = "0.1.3" [[deps.Functors]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "64d8e93700c7a3f28f717d265382d52fac9fa1c1" +deps = ["Compat", "ConstructionBase", "LinearAlgebra", "Random"] +git-tree-sha1 = "60a0339f28a233601cb74468032b5c302d5067de" uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.12" +version = "0.5.2" [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" [[deps.GLFW]] deps = ["GLFW_jll"] @@ -850,9 +938,9 @@ version = "3.4.0+1" [[deps.GLMakie]] deps = ["ColorTypes", "Colors", "FileIO", "FixedPointNumbers", "FreeTypeAbstraction", "GLFW", "GeometryBasics", "LinearAlgebra", "Makie", "Markdown", "MeshIO", "ModernGL", "Observables", "PrecompileTools", "Printf", "ShaderAbstractions", "StaticArrays"] -git-tree-sha1 = "a4cf5ae3c181a9df5e94d83bacd190af6e2f6f6e" +git-tree-sha1 = "8753fba3356131357b5cd02500fe80c3668535d0" uuid = "e9467ef8-e4e7-5192-8a1a-b1aee30e663a" -version = "0.10.5" +version = "0.10.18" [[deps.GLU_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg"] @@ -863,13 +951,13 @@ version = "9.0.1+0" [[deps.GMP_jll]] deps = ["Artifacts", "Libdl"] uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d" -version = "6.2.1+6" +version = "6.3.0+0" [[deps.GPUArraysCore]] deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" +git-tree-sha1 = "83cf05ab16a73219e5f6bd1bdfa9848fa24ac627" uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" +version = "0.2.0" [[deps.GenericSchur]] deps = ["LinearAlgebra", "Printf"] @@ -877,11 +965,16 @@ git-tree-sha1 = "af49a0851f8113fcfae2ef5027c6d49d0acec39b" uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e" version = "0.5.4" +[[deps.GeoFormatTypes]] +git-tree-sha1 = "59107c179a586f0fe667024c5eb7033e81333271" +uuid = "68eda718-8dee-11e9-39e7-89f7f65f511f" +version = "0.4.2" + [[deps.GeoInterface]] -deps = ["Extents"] -git-tree-sha1 = "9fff8990361d5127b770e3454488360443019bb3" +deps = ["Extents", "GeoFormatTypes"] +git-tree-sha1 = "826b4fd69438d9ce4d2b19de6bc2f970f45f0f88" uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" -version = "1.3.5" +version = "1.3.8" [[deps.GeometryBasics]] deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] @@ -895,11 +988,17 @@ git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" version = "0.21.0+0" +[[deps.Giflib_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "0224cce99284d997f6880a42ef715a37c99338d1" +uuid = "59f7168a-df46-5410-90c8-f2779963d0ec" +version = "5.2.2+0" + [[deps.Glib_jll]] deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "7c82e6a6cd34e9d935e9aa4051b66c6ff3af59ba" +git-tree-sha1 = "48b5d4c75b2c9078ead62e345966fa51a25c05ad" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.2+0" +version = "2.82.2+1" [[deps.Glob]] git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" @@ -914,21 +1013,21 @@ version = "0.3.1" [[deps.Graphite2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +git-tree-sha1 = "01979f9b37367603e2848ea225918a3b3861b606" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" +version = "1.3.14+1" [[deps.Graphs]] deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "ebd18c326fa6cee1efb7da9a3b45cf69da2ed4d9" +git-tree-sha1 = "1dc470db8b1131cfc7fb4c115de89fe391b9e780" uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" -version = "1.11.2" +version = "1.12.0" [[deps.GridLayoutBase]] deps = ["GeometryBasics", "InteractiveUtils", "Observables"] -git-tree-sha1 = "fc713f007cff99ff9e50accba6373624ddd33588" +git-tree-sha1 = "dc6bed05c15523624909b3953686c5f5ffa10adc" uuid = "3955a311-db13-416c-9275-1d80ed98e5e9" -version = "0.11.0" +version = "0.11.1" [[deps.Grisu]] git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" @@ -942,10 +1041,10 @@ uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" version = "1.14.3+3" [[deps.HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] -git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] +git-tree-sha1 = "55c53be97790242c29031e5cd45e8ac296dadda3" uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "2.8.1+1" +version = "8.5.0+0" [[deps.HostCPUFeatures]] deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"] @@ -955,15 +1054,15 @@ version = "0.1.17" [[deps.Hwloc_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5e19e1e4fa3e71b774ce746274364aef0234634e" +git-tree-sha1 = "50aedf345a709ab75872f80a2779568dc0bb461b" uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.11.1+0" +version = "2.11.2+1" [[deps.HypergeometricFunctions]] deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "7c4195be1649ae622304031ed46a2f4df989f1eb" +git-tree-sha1 = "b1c2585431c382e3fe5805874bda6aea90a95de9" uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.24" +version = "0.3.25" [[deps.IfElse]] git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" @@ -972,9 +1071,9 @@ version = "0.1.1" [[deps.ImageAxes]] deps = ["AxisArrays", "ImageBase", "ImageCore", "Reexport", "SimpleTraits"] -git-tree-sha1 = "2e4520d67b0cef90865b3ef727594d2a58e0e1f8" +git-tree-sha1 = "e12629406c6c4442539436581041d372d69c55ba" uuid = "2803e5a7-5153-5ecf-9a86-9b4c37f5f5ac" -version = "0.6.11" +version = "0.6.12" [[deps.ImageBase]] deps = ["ImageCore", "Reexport"] @@ -984,21 +1083,21 @@ version = "0.1.7" [[deps.ImageCore]] deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] -git-tree-sha1 = "b2a7eaa169c13f5bcae8131a83bc30eff8f71be0" +git-tree-sha1 = "8c193230235bbcee22c8066b0374f63b5683c2d3" uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" -version = "0.10.2" +version = "0.10.5" [[deps.ImageIO]] -deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs"] -git-tree-sha1 = "437abb322a41d527c197fa800455f79d414f0a3c" +deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs", "WebP"] +git-tree-sha1 = "696144904b76e1ca433b886b4e7edd067d76cbf7" uuid = "82e4d734-157c-48bb-816b-45c225c6df19" -version = "0.6.8" +version = "0.6.9" [[deps.ImageMetadata]] deps = ["AxisArrays", "ImageAxes", "ImageBase", "ImageCore"] -git-tree-sha1 = "355e2b974f2e3212a75dfb60519de21361ad3cb7" +git-tree-sha1 = "2a81c3897be6fbcde0802a0ebe6796d0562f63ec" uuid = "bc367c6b-8a6b-528e-b4bd-a4b897500b49" -version = "0.9.9" +version = "0.9.10" [[deps.Imath_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1029,15 +1128,21 @@ version = "1.4.2" ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +[[deps.IntegerMathUtils]] +git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30" +uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" +version = "0.1.2" + [[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "14eb2b542e748570b56446f4c50fbfb2306ebc45" +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "10bd689145d2c3b2a9844005d01087cc1194e79e" uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2024.2.0+0" +version = "2024.2.1+0" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" [[deps.Interpolations]] deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] @@ -1050,15 +1155,16 @@ weakdeps = ["Unitful"] InterpolationsUnitfulExt = "Unitful" [[deps.IntervalArithmetic]] -deps = ["CRlibm_jll", "MacroTools", "RoundingEmulator"] -git-tree-sha1 = "433b0bb201cd76cb087b017e49244f10394ebe9c" +deps = ["CRlibm_jll", "LinearAlgebra", "MacroTools", "RoundingEmulator"] +git-tree-sha1 = "24c095b1ec7ee58b936985d31d5df92f9b9cfebb" uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" -version = "0.22.14" -weakdeps = ["DiffRules", "ForwardDiff", "RecipesBase"] +version = "0.22.19" +weakdeps = ["DiffRules", "ForwardDiff", "IntervalSets", "RecipesBase"] [deps.IntervalArithmetic.extensions] IntervalArithmeticDiffRulesExt = "DiffRules" IntervalArithmeticForwardDiffExt = "ForwardDiff" + IntervalArithmeticIntervalSetsExt = "IntervalSets" IntervalArithmeticRecipesBaseExt = "RecipesBase" [[deps.IntervalSets]] @@ -1073,9 +1179,9 @@ weakdeps = ["Random", "RecipesBase", "Statistics"] IntervalSetsStatisticsExt = "Statistics" [[deps.InverseFunctions]] -git-tree-sha1 = "2787db24f4e03daf859c6509ff87764e4182f7d1" +git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.16" +version = "0.1.17" weakdeps = ["Dates", "Test"] [deps.InverseFunctions.extensions] @@ -1083,9 +1189,9 @@ weakdeps = ["Dates", "Test"] InverseFunctionsTestExt = "Test" [[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" +git-tree-sha1 = "6da3c4316095de0f5ee2ebd875df8721e7e0bdbe" uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" +version = "1.3.1" [[deps.IrrationalConstants]] git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" @@ -1109,16 +1215,16 @@ uuid = "82899510-4779-5014-852e-03e436cf321d" version = "1.0.0" [[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "PrecompileTools", "Reexport", "Requires", "TranscodingStreams", "UUIDs", "Unicode"] -git-tree-sha1 = "67d4690d32c22e28818a434b293a374cc78473d3" +deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "PrecompileTools", "Requires", "TranscodingStreams"] +git-tree-sha1 = "f1a1c1037af2a4541ea186b26b0c0e7eeaad232b" uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.51" +version = "0.5.10" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +git-tree-sha1 = "be3dc50a92e5a386872a493a10050136d4703f9b" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" +version = "1.6.1" [[deps.JSON]] deps = ["Dates", "Mmap", "Parsers", "Unicode"] @@ -1134,21 +1240,21 @@ version = "0.1.5" [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "c84a835e1a09b289ffcd2271bf2a337bbdda6637" +git-tree-sha1 = "25ee0be4d43d0269027024d75a24c24d6c6e590c" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.0.3+0" +version = "3.0.4+0" [[deps.JuliaFormatter]] -deps = ["CSTParser", "CommonMark", "DataStructures", "Glob", "Pkg", "PrecompileTools", "Tokenize"] -git-tree-sha1 = "4b0b04fe63e02eed776181e14ebc1f48d787ceec" +deps = ["CSTParser", "CommonMark", "DataStructures", "Glob", "PrecompileTools", "TOML", "Tokenize"] +git-tree-sha1 = "59cf7ad64f1b0708a4fa4369879d33bad3239b56" uuid = "98e50ef6-434e-11e9-1051-2b60c6c9e899" -version = "1.0.59" +version = "1.0.62" [[deps.JumpProcesses]] -deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "Markdown", "PoissonRandom", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "StaticArrays", "SymbolicIndexingInterface", "UnPack"] -git-tree-sha1 = "f8235862db5cf813a52859ff82205d0f22f09a64" +deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "Markdown", "PoissonRandom", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "StaticArrays", "SymbolicIndexingInterface", "UnPack"] +git-tree-sha1 = "c3a2cb6f968404ed3b1d5382bbdd7b7d83966598" uuid = "ccbc3e58-028d-4f4c-8cd5-9ae44345cda5" -version = "9.13.3" +version = "9.14.0" weakdeps = ["FastBroadcast"] [[deps.KLU]] @@ -1165,9 +1271,9 @@ version = "0.6.9" [[deps.Krylov]] deps = ["LinearAlgebra", "Printf", "SparseArrays"] -git-tree-sha1 = "267dad6b4b7b5d529c76d40ff48d33f7e94cb834" +git-tree-sha1 = "4f20a2df85a9e5d55c9e84634bbf808ed038cabd" uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" -version = "0.9.6" +version = "0.9.8" [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1175,33 +1281,28 @@ git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd" uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" version = "3.100.2+0" +[[deps.LERC_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "36bdbc52f13a7d1dcb0f3cd694e01677a515655b" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "4.0.0+0" + [[deps.LLVMOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e16271d212accd09d52ee0ae98956b8a05c4b626" +git-tree-sha1 = "78211fb6cbc872f77cad3fc0b6cf647d923f4929" uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "17.0.6+0" +version = "18.1.7+0" [[deps.LZO_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "70c5da094887fd2cae843b8db33920bac4b6f07d" +git-tree-sha1 = "854a9c268c43b77b0a27f22d7fab8d33cdb3a731" uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.2+0" +version = "2.10.2+1" [[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" - -[[deps.LabelledArrays]] -deps = ["ArrayInterface", "ChainRulesCore", "ForwardDiff", "LinearAlgebra", "MacroTools", "PreallocationTools", "RecursiveArrayTools", "StaticArrays"] -git-tree-sha1 = "e459fda6b68ea8684b3fcd513d2fd1e5130c4402" -uuid = "2ee39098-c373-598a-b85f-a56591580800" -version = "1.16.0" - -[[deps.LambertW]] -git-tree-sha1 = "c5ffc834de5d61d00d2b0e18c96267cffc21f648" -uuid = "984bce1d-4616-540c-a9ee-88d1112d94c9" -version = "0.4.6" +version = "1.4.0" [[deps.Latexify]] deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] @@ -1227,9 +1328,9 @@ version = "0.1.17" [[deps.LazyArrays]] deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "MacroTools", "SparseArrays"] -git-tree-sha1 = "507b423197fdd9e77b74aa2532c0a05eb7eb4004" +git-tree-sha1 = "f289bee714e11708df257c57514585863aa02b33" uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02" -version = "2.2.0" +version = "2.3.1" [deps.LazyArrays.extensions] LazyArraysBandedMatricesExt = "BandedMatrices" @@ -1246,6 +1347,7 @@ version = "2.2.0" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" +version = "1.11.0" [[deps.LazyModules]] git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e" @@ -1260,16 +1362,17 @@ version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" +version = "8.6.0+0" [[deps.LibGit2]] deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +version = "1.11.0" [[deps.LibGit2_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" +version = "1.7.2+0" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] @@ -1278,6 +1381,7 @@ version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" [[deps.Libffi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1287,39 +1391,45 @@ version = "3.2.2+1" [[deps.Libgcrypt_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] -git-tree-sha1 = "9fd170c4bbfd8b935fdc5f8b7aa33532c991a673" +git-tree-sha1 = "8be878062e0ffa2c3f67bb58a595375eda5de80b" uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.11+0" +version = "1.11.0+0" [[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "ff3b4b9d35de638936a525ecd36e86a8bb919d11" uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.6.0+0" +version = "1.7.0+0" [[deps.Libgpg_error_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "fbb1f2bef882392312feb1ede3615ddc1e9b99ed" +git-tree-sha1 = "c6ce1e19f3aec9b59186bdf06cdf3c4fc5f5f3e6" uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.49.0+0" +version = "1.50.0+0" [[deps.Libiconv_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +git-tree-sha1 = "61dfdba58e585066d8bce214c5a51eaa0539f269" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" +version = "1.17.0+1" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" +git-tree-sha1 = "84eef7acd508ee5b3e956a2ae51b05024181dee0" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" +version = "2.40.2+0" + +[[deps.Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "b404131d06f7886402758c9ce2214b636eb4d54a" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.7.0+0" [[deps.Libuuid_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" +git-tree-sha1 = "edbf5309f9ddf1cab25afc344b1e8150b7c832f9" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.LightXML]] deps = ["Libdl", "XML2_jll"] @@ -1327,6 +1437,16 @@ git-tree-sha1 = "3a994404d3f6709610701c7dabfc03fed87a81f8" uuid = "9c8b4983-aa76-5018-a973-4c85ecc9e179" version = "0.9.1" +[[deps.LineSearch]] +deps = ["ADTypes", "CommonSolve", "ConcreteStructs", "FastClosures", "LinearAlgebra", "MaybeInplace", "SciMLBase", "SciMLJacobianOperators", "StaticArraysCore"] +git-tree-sha1 = "97d502765cc5cf3a722120f50da03c2474efce04" +uuid = "87fe0de2-c867-4266-b59a-2f0a94fc965b" +version = "0.1.4" +weakdeps = ["LineSearches"] + + [deps.LineSearch.extensions] + LineSearchLineSearchesExt = "LineSearches" + [[deps.LineSearches]] deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] git-tree-sha1 = "e4c3be53733db1051cc15ecf573b1042b3a712a1" @@ -1336,6 +1456,7 @@ version = "7.3.0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" [[deps.LinearElasticity_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1344,18 +1465,18 @@ uuid = "18c40d15-f7cd-5a6d-bc92-87468d86c5db" version = "5.0.0+0" [[deps.LinearSolve]] -deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "CpuId", "DocStringExtensions", "EnumX", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "StaticArraysCore", "UnPack"] -git-tree-sha1 = "ee625f4053362526950661ce3022c7a483c6f8e5" +deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "StaticArraysCore", "UnPack"] +git-tree-sha1 = "9d5872d134bd33dd3e120767004f760770958863" uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "2.32.0" +version = "2.38.0" [deps.LinearSolve.extensions] LinearSolveBandedMatricesExt = "BandedMatrices" LinearSolveBlockDiagonalsExt = "BlockDiagonals" LinearSolveCUDAExt = "CUDA" LinearSolveCUDSSExt = "CUDSS" - LinearSolveEnzymeExt = ["Enzyme", "EnzymeCore"] - LinearSolveFastAlmostBandedMatricesExt = ["FastAlmostBandedMatrices"] + LinearSolveEnzymeExt = "EnzymeCore" + LinearSolveFastAlmostBandedMatricesExt = "FastAlmostBandedMatrices" LinearSolveHYPREExt = "HYPRE" LinearSolveIterativeSolversExt = "IterativeSolvers" LinearSolveKernelAbstractionsExt = "KernelAbstractions" @@ -1369,7 +1490,6 @@ version = "2.32.0" BlockDiagonals = "0a1fb500-61f7-11e9-3c65-f5ef3456f9f0" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" FastAlmostBandedMatrices = "9d29842c-ecb8-4973-b1e9-a27b1157504e" HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771" @@ -1382,9 +1502,9 @@ version = "2.32.0" [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" +git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" +version = "0.3.29" [deps.LogExpFunctions.extensions] LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" @@ -1398,6 +1518,7 @@ version = "0.3.28" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" [[deps.LoopVectorization]] deps = ["ArrayInterface", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] @@ -1412,9 +1533,9 @@ weakdeps = ["ChainRulesCore", "ForwardDiff", "SpecialFunctions"] [[deps.METIS_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "1fd0a97409e418b78c53fac671cf4622efdf0f21" +git-tree-sha1 = "1c20a46719c0dc4ec4e7021ca38f53e1ec9268d9" uuid = "d00139f3-1899-568f-a2f0-47f597d42d70" -version = "5.1.2+0" +version = "5.1.2+1" [[deps.MKL_jll]] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] @@ -1435,9 +1556,9 @@ version = "5.6.0+0" [[deps.MPICH_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "19d4bd098928a3263693991500d05d74dbdc2004" +git-tree-sha1 = "7715e65c47ba3941c502bffb7f266a41a7f54423" uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.2.2+0" +version = "4.2.3+0" [[deps.MPIPreferences]] deps = ["Libdl", "Preferences"] @@ -1447,9 +1568,9 @@ version = "0.1.11" [[deps.MPItrampoline_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "8c35d5420193841b2f367e658540e8d9e0601ed0" +git-tree-sha1 = "70e830dab5d0775183c99fc75e4c24c614ed7142" uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.4.0+0" +version = "5.5.1+0" [[deps.MacroTools]] deps = ["Markdown", "Random"] @@ -1458,16 +1579,16 @@ uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" version = "0.5.13" [[deps.Makie]] -deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageIO", "InteractiveUtils", "IntervalSets", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] -git-tree-sha1 = "863b9e666b5a099c8835e85476a5834f9d77c4c1" +deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageBase", "ImageIO", "InteractiveUtils", "Interpolations", "IntervalSets", "InverseFunctions", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] +git-tree-sha1 = "be3051d08b78206fb5e688e8d70c9e84d0264117" uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" -version = "0.21.5" +version = "0.21.18" [[deps.MakieCore]] deps = ["ColorTypes", "GeometryBasics", "IntervalSets", "Observables"] -git-tree-sha1 = "c1c950560397ee68ad7302ee0e3efa1b07466a2f" +git-tree-sha1 = "9019b391d7d086e841cbeadc13511224bd029ab3" uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b" -version = "0.8.4" +version = "0.8.12" [[deps.ManualMemory]] git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" @@ -1482,35 +1603,40 @@ version = "0.4.2" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" [[deps.MathTeXEngine]] deps = ["AbstractTrees", "Automa", "DataStructures", "FreeTypeAbstraction", "GeometryBasics", "LaTeXStrings", "REPL", "RelocatableFolders", "UnicodeFun"] -git-tree-sha1 = "e1641f32ae592e415e3dbae7f4a188b5316d4b62" +git-tree-sha1 = "f45c8916e8385976e1ccd055c9874560c257ab13" uuid = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53" -version = "0.6.1" +version = "0.6.2" [[deps.MaybeInplace]] -deps = ["ArrayInterface", "LinearAlgebra", "MacroTools", "SparseArrays"] -git-tree-sha1 = "1b9e613f2ca3b6cdcbfe36381e17ca2b66d4b3a1" +deps = ["ArrayInterface", "LinearAlgebra", "MacroTools"] +git-tree-sha1 = "54e2fdc38130c05b42be423e90da3bade29b74bd" uuid = "bb5d69b7-63fc-4a16-80bd-7e42200c7bdb" -version = "0.1.3" +version = "0.1.4" +weakdeps = ["SparseArrays"] + + [deps.MaybeInplace.extensions] + MaybeInplaceSparseArraysExt = "SparseArrays" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" +version = "2.28.6+0" [[deps.MeshIO]] deps = ["ColorTypes", "FileIO", "GeometryBasics", "Printf"] -git-tree-sha1 = "dc182956229ff16d5a4d90a562035e633bd2561d" +git-tree-sha1 = "14a12d9153b1a1a22d669eede58b2ea2164ff138" uuid = "7269a6da-0436-5bbc-96c2-40638cbb6118" -version = "0.4.12" +version = "0.4.13" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f12a29c4400ba812841c6ace3f4efbb6dbb3ba01" +git-tree-sha1 = "bc95bf4149bf535c09602e3acdf950d9b4376227" uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" -version = "10.1.4+2" +version = "10.1.4+3" [[deps.Missings]] deps = ["DataAPI"] @@ -1520,20 +1646,29 @@ version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" [[deps.ModelingToolkit]] -deps = ["AbstractTrees", "ArrayInterface", "Combinatorics", "Compat", "ConstructionBase", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DiffEqNoiseProcess", "DiffRules", "Distributed", "Distributions", "DocStringExtensions", "DomainSets", "DynamicQuantities", "ExprTools", "FindFirstFunctions", "ForwardDiff", "FunctionWrappersWrappers", "Graphs", "InteractiveUtils", "JuliaFormatter", "JumpProcesses", "LabelledArrays", "Latexify", "Libdl", "LinearAlgebra", "MLStyle", "NaNMath", "NonlinearSolve", "OrderedCollections", "PrecompileTools", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "SciMLStructures", "Serialization", "Setfield", "SimpleNonlinearSolve", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "SymbolicUtils", "Symbolics", "URIs", "UnPack", "Unitful"] -git-tree-sha1 = "568a7c80b2e3ff43c6c6c92212deeeba7ff4e639" +deps = ["AbstractTrees", "ArrayInterface", "BlockArrays", "Combinatorics", "CommonSolve", "Compat", "ConstructionBase", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DiffEqNoiseProcess", "DiffRules", "Distributed", "Distributions", "DocStringExtensions", "DomainSets", "DynamicQuantities", "EnumX", "ExprTools", "Expronicon", "FindFirstFunctions", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "Graphs", "InteractiveUtils", "JuliaFormatter", "JumpProcesses", "Latexify", "Libdl", "LinearAlgebra", "MLStyle", "NaNMath", "NonlinearSolve", "OffsetArrays", "OrderedCollections", "PrecompileTools", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SCCNonlinearSolve", "SciMLBase", "SciMLStructures", "Serialization", "Setfield", "SimpleNonlinearSolve", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "SymbolicUtils", "Symbolics", "URIs", "UnPack", "Unitful"] +git-tree-sha1 = "d3fd8c745a20d1548652c3cdb1e2f0f03541cde0" uuid = "961ee093-0014-501f-94e3-6117800e7a78" -version = "9.26.0" +version = "9.58.0" [deps.ModelingToolkit.extensions] MTKBifurcationKitExt = "BifurcationKit" + MTKChainRulesCoreExt = "ChainRulesCore" MTKDeepDiffsExt = "DeepDiffs" + MTKHomotopyContinuationExt = "HomotopyContinuation" + MTKInfiniteOptExt = "InfiniteOpt" + MTKLabelledArraysExt = "LabelledArrays" [deps.ModelingToolkit.weakdeps] BifurcationKit = "0f109fa4-8a5d-4b75-95aa-f515264e7665" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" DeepDiffs = "ab62b9b5-e342-54a8-a765-a90f495de1a6" + HomotopyContinuation = "f213a82b-91d6-5c5d-acf7-10f1c761b327" + InfiniteOpt = "20393b10-9daf-11e9-18c9-8db751c92c57" + LabelledArrays = "2ee39098-c373-598a-b85f-a56591580800" [[deps.ModernGL]] deps = ["Libdl"] @@ -1549,7 +1684,7 @@ version = "0.3.4" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" +version = "2023.12.12" [[deps.MuladdMacro]] git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" @@ -1558,15 +1693,15 @@ version = "0.2.4" [[deps.MultivariatePolynomials]] deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] -git-tree-sha1 = "5c1d1d9361e1417e5a065e1f84dc3686cbdaea21" +git-tree-sha1 = "8d39779e29f80aa6c071e7ac17101c6e31f075d7" uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" -version = "0.5.6" +version = "0.5.7" [[deps.MutableArithmetics]] deps = ["LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "d0a6b1096b584a2b88efb70a92f8cb8c881eb38a" +git-tree-sha1 = "a2710df6b0931f987530f59427441b21245d8f5e" uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" -version = "1.4.6" +version = "1.6.0" [[deps.NLSolversBase]] deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] @@ -1582,9 +1717,9 @@ version = "1.0.2" [[deps.NearestNeighbors]] deps = ["Distances", "StaticArrays"] -git-tree-sha1 = "91a67b4d73842da90b526011fa85c5c4c9343fe0" +git-tree-sha1 = "8a3271d8309285f4db73b4f662b1b290c715e85e" uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" -version = "0.4.18" +version = "0.4.21" [[deps.Netpbm]] deps = ["FileIO", "ImageCore", "ImageMetadata"] @@ -1597,42 +1732,84 @@ uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" [[deps.NonlinearSolve]] -deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "DiffEqBase", "FastBroadcast", "FastClosures", "FiniteDiff", "ForwardDiff", "LazyArrays", "LineSearches", "LinearAlgebra", "LinearSolve", "MaybeInplace", "PrecompileTools", "Preferences", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseDiffTools", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] -git-tree-sha1 = "bcd8812e751326ff1d4b2dd50764b93df51f143b" +deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "NonlinearSolveBase", "NonlinearSolveFirstOrder", "NonlinearSolveQuasiNewton", "NonlinearSolveSpectralMethods", "PrecompileTools", "Preferences", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseMatrixColorings", "StaticArraysCore", "SymbolicIndexingInterface"] +git-tree-sha1 = "e646d238e65928630a5f557c0676051a11504c9d" uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" -version = "3.14.0" +version = "4.2.0" [deps.NonlinearSolve.extensions] - NonlinearSolveBandedMatricesExt = "BandedMatrices" NonlinearSolveFastLevenbergMarquardtExt = "FastLevenbergMarquardt" NonlinearSolveFixedPointAccelerationExt = "FixedPointAcceleration" NonlinearSolveLeastSquaresOptimExt = "LeastSquaresOptim" NonlinearSolveMINPACKExt = "MINPACK" NonlinearSolveNLSolversExt = "NLSolvers" - NonlinearSolveNLsolveExt = "NLsolve" + NonlinearSolveNLsolveExt = ["NLsolve", "LineSearches"] + NonlinearSolvePETScExt = ["PETSc", "MPI"] NonlinearSolveSIAMFANLEquationsExt = "SIAMFANLEquations" NonlinearSolveSpeedMappingExt = "SpeedMapping" - NonlinearSolveSymbolicsExt = "Symbolics" - NonlinearSolveZygoteExt = "Zygote" + NonlinearSolveSundialsExt = "Sundials" [deps.NonlinearSolve.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" FastLevenbergMarquardt = "7a0df574-e128-4d35-8cbd-3d84502bf7ce" FixedPointAcceleration = "817d07cb-a79a-5c30-9a31-890123675176" LeastSquaresOptim = "0fc2ff8b-aaa3-5acd-a817-1944a5e08891" + LineSearches = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" MINPACK = "4854310b-de5a-5eb6-a2a5-c1dee2bd17f9" + MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" NLSolvers = "337daf1e-9722-11e9-073e-8b9effe078ba" NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" + PETSc = "ace2c81b-2b5f-4b1e-a30d-d662738edfe0" SIAMFANLEquations = "084e46ad-d928-497d-ad5e-07fa361a48c4" SpeedMapping = "f1835b91-879b-4a3f-a438-e4baacf14412" - Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" + +[[deps.NonlinearSolveBase]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "FunctionProperties", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLOperators", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] +git-tree-sha1 = "46772fc296d9f16c3ab78a8ef00008ab075de677" +uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0" +version = "1.3.3" + + [deps.NonlinearSolveBase.extensions] + NonlinearSolveBaseBandedMatricesExt = "BandedMatrices" + NonlinearSolveBaseDiffEqBaseExt = "DiffEqBase" + NonlinearSolveBaseForwardDiffExt = "ForwardDiff" + NonlinearSolveBaseLineSearchExt = "LineSearch" + NonlinearSolveBaseLinearSolveExt = "LinearSolve" + NonlinearSolveBaseSparseArraysExt = "SparseArrays" + NonlinearSolveBaseSparseMatrixColoringsExt = "SparseMatrixColorings" + + [deps.NonlinearSolveBase.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + LineSearch = "87fe0de2-c867-4266-b59a-2f0a94fc965b" + LinearSolve = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" + +[[deps.NonlinearSolveFirstOrder]] +deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLJacobianOperators", "Setfield", "StaticArraysCore"] +git-tree-sha1 = "05a42691900f8f14e930478d5638a5f0fc973601" +uuid = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d" +version = "1.1.0" + +[[deps.NonlinearSolveQuasiNewton]] +deps = ["ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLOperators", "StaticArraysCore"] +git-tree-sha1 = "066d4940938f4bb5fd1ce146e61a373f40b89d31" +uuid = "9a2c21bd-3a47-402d-9113-8faf9a0ee114" +version = "1.0.0" + +[[deps.NonlinearSolveSpectralMethods]] +deps = ["CommonSolve", "ConcreteStructs", "DiffEqBase", "LineSearch", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "cc97c44e396ab820401c8c404bc1fd18d4c884bd" +uuid = "26075421-4e9a-44e1-8bd1-420ed7ad02b2" +version = "1.0.0" [[deps.OCCT_jll]] -deps = ["Artifacts", "FreeType2_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll", "Xorg_libXfixes_jll", "Xorg_libXft_jll", "Xorg_libXinerama_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "acc8099ae8ed10226dc8424fb256ec9fe367a1f0" +deps = ["Artifacts", "FreeType2_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libX11_jll", "Xorg_libXext_jll", "Xorg_libXfixes_jll", "Xorg_libXft_jll", "Xorg_libXinerama_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "bef34b68c20cc34475c5cb464ab48555e74f4c61" uuid = "baad4e97-8daa-5946-aac2-2edac59d34e1" -version = "7.6.2+2" +version = "7.7.2+0" [[deps.Observables]] git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225" @@ -1640,9 +1817,9 @@ uuid = "510215fc-4207-5dde-b226-833fc4488ee2" version = "0.5.5" [[deps.OffsetArrays]] -git-tree-sha1 = "1a27764e945a152f7ca7efa04de513d473e9542e" +git-tree-sha1 = "39d000d9c33706b8364817d8894fae1548f40295" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.14.1" +version = "1.14.2" weakdeps = ["Adapt"] [deps.OffsetArrays.extensions] @@ -1657,13 +1834,13 @@ version = "1.3.5+1" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" +version = "0.3.27+1" [[deps.OpenEXR]] deps = ["Colors", "FileIO", "OpenEXR_jll"] -git-tree-sha1 = "327f53360fdb54df7ecd01e96ef1983536d1e633" +git-tree-sha1 = "97db9e07fe2091882c765380ef58ec553074e9c7" uuid = "52e1d378-f018-4a11-a4be-720524705ac7" -version = "0.3.2" +version = "0.3.3" [[deps.OpenEXR_jll]] deps = ["Artifacts", "Imath_jll", "JLLWrappers", "Libdl", "Zlib_jll"] @@ -1684,9 +1861,9 @@ version = "4.1.6+0" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a028ee3cb5641cccc4c24e90c36b0a4f7707bdf5" +git-tree-sha1 = "7493f61f55a6cce7325f197443aa80d32554ba10" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.14+0" +version = "3.0.15+1" [[deps.OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -1696,9 +1873,9 @@ version = "0.5.5+0" [[deps.Optim]] deps = ["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] -git-tree-sha1 = "d9b79c4eed437421ac4285148fcadf42e0700e89" +git-tree-sha1 = "ab7edad78cdef22099f43c54ef77ac63c2c9cc64" uuid = "429524aa-4258-5aef-a3af-852621145aeb" -version = "1.9.4" +version = "1.10.0" [deps.Optim.extensions] OptimMOIExt = "MathOptInterface" @@ -1707,21 +1884,205 @@ version = "1.9.4" MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" [[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6703a85cb3781bd5909d48730a67205f3f31a575" uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.2+0" +version = "1.3.3+0" [[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +git-tree-sha1 = "12f1439c4f986bb868acda6ea33ebc78e19b95ad" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" +version = "1.7.0" [[deps.OrdinaryDiffEq]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FillArrays", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "IfElse", "InteractiveUtils", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "MacroTools", "MuladdMacro", "NonlinearSolve", "Polyester", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleNonlinearSolve", "SimpleUnPack", "SparseArrays", "SparseDiffTools", "Static", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"] -git-tree-sha1 = "a8b2d333cd90562b58b977b4033739360b37fb1f" +deps = ["ADTypes", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FillArrays", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "InteractiveUtils", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "MacroTools", "MuladdMacro", "NonlinearSolve", "OrdinaryDiffEqAdamsBashforthMoulton", "OrdinaryDiffEqBDF", "OrdinaryDiffEqCore", "OrdinaryDiffEqDefault", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqExplicitRK", "OrdinaryDiffEqExponentialRK", "OrdinaryDiffEqExtrapolation", "OrdinaryDiffEqFIRK", "OrdinaryDiffEqFeagin", "OrdinaryDiffEqFunctionMap", "OrdinaryDiffEqHighOrderRK", "OrdinaryDiffEqIMEXMultistep", "OrdinaryDiffEqLinear", "OrdinaryDiffEqLowOrderRK", "OrdinaryDiffEqLowStorageRK", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqNordsieck", "OrdinaryDiffEqPDIRK", "OrdinaryDiffEqPRK", "OrdinaryDiffEqQPRK", "OrdinaryDiffEqRKN", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqSDIRK", "OrdinaryDiffEqSSPRK", "OrdinaryDiffEqStabilizedIRK", "OrdinaryDiffEqStabilizedRK", "OrdinaryDiffEqSymplecticRK", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "Polyester", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleNonlinearSolve", "SimpleUnPack", "SparseArrays", "SparseDiffTools", "Static", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"] +git-tree-sha1 = "36ce9bfc14a4b3dcf1490e80b5f1f4d35bfddf39" uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" -version = "6.87.0" +version = "6.90.1" + +[[deps.OrdinaryDiffEqAdamsBashforthMoulton]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqLowOrderRK", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "8e3c5978d0531a961f70d2f2730d1d16ed3bbd12" +uuid = "89bda076-bce5-4f1c-845f-551c83cdda9a" +version = "1.1.0" + +[[deps.OrdinaryDiffEqBDF]] +deps = ["ArrayInterface", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqSDIRK", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "StaticArrays", "TruncatedStacktraces"] +git-tree-sha1 = "b4498d40bf35da0b6d22652ff2e9d8820590b3c6" +uuid = "6ad6398a-0878-4a85-9266-38940aa047c8" +version = "1.1.2" + +[[deps.OrdinaryDiffEqCore]] +deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "FastBroadcast", "FastClosures", "FastPower", "FillArrays", "FunctionWrappersWrappers", "InteractiveUtils", "LinearAlgebra", "Logging", "MacroTools", "MuladdMacro", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleUnPack", "Static", "StaticArrayInterface", "StaticArraysCore", "SymbolicIndexingInterface", "TruncatedStacktraces"] +git-tree-sha1 = "c7f395034602c3e4d40ece93dc2c9f066f0ce61f" +uuid = "bbf590c4-e513-4bbe-9b18-05decba2e5d8" +version = "1.13.0" +weakdeps = ["EnzymeCore"] + + [deps.OrdinaryDiffEqCore.extensions] + OrdinaryDiffEqCoreEnzymeCoreExt = "EnzymeCore" + +[[deps.OrdinaryDiffEqDefault]] +deps = ["DiffEqBase", "EnumX", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqBDF", "OrdinaryDiffEqCore", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "PrecompileTools", "Preferences", "Reexport"] +git-tree-sha1 = "c8223e487d58bef28a3535b33ddf8ffdb44f46fb" +uuid = "50262376-6c5a-4cf5-baba-aaf4f84d72d7" +version = "1.1.0" + +[[deps.OrdinaryDiffEqDifferentiation]] +deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqCore", "SciMLBase", "SparseArrays", "SparseDiffTools", "StaticArrayInterface", "StaticArrays"] +git-tree-sha1 = "8977f283a7d89c5d5c06c933467ed4af0a99f2f7" +uuid = "4302a76b-040a-498a-8c04-15b101fed76b" +version = "1.2.0" + +[[deps.OrdinaryDiffEqExplicitRK]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "TruncatedStacktraces"] +git-tree-sha1 = "4dbce3f9e6974567082ce5176e21aab0224a69e9" +uuid = "9286f039-9fbf-40e8-bf65-aa933bdc4db0" +version = "1.1.0" + +[[deps.OrdinaryDiffEqExponentialRK]] +deps = ["DiffEqBase", "ExponentialUtilities", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqSDIRK", "OrdinaryDiffEqVerner", "RecursiveArrayTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "f63938b8e9e5d3a05815defb3ebdbdcf61ec0a74" +uuid = "e0540318-69ee-4070-8777-9e2de6de23de" +version = "1.1.0" + +[[deps.OrdinaryDiffEqExtrapolation]] +deps = ["DiffEqBase", "FastBroadcast", "FastPower", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "RecursiveArrayTools", "Reexport"] +git-tree-sha1 = "048bcccc8f59c20d5b4ad268eef4d7d21c005a94" +uuid = "becaefa8-8ca2-5cf9-886d-c06f3d2bd2c4" +version = "1.2.1" + +[[deps.OrdinaryDiffEqFIRK]] +deps = ["DiffEqBase", "FastBroadcast", "FastPower", "LinearAlgebra", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "SciMLOperators"] +git-tree-sha1 = "7a6e3996dc0850aee6cdc10c8afa377242fce702" +uuid = "5960d6e9-dd7a-4743-88e7-cf307b64f125" +version = "1.5.0" + +[[deps.OrdinaryDiffEqFeagin]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "a7cc74d3433db98e59dc3d58bc28174c6c290adf" +uuid = "101fe9f7-ebb6-4678-b671-3a81e7194747" +version = "1.1.0" + +[[deps.OrdinaryDiffEqFunctionMap]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "925a91583d1ab84f1f0fea121be1abf1179c5926" +uuid = "d3585ca7-f5d3-4ba6-8057-292ed1abd90f" +version = "1.1.1" + +[[deps.OrdinaryDiffEqHighOrderRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "103e017ff186ac39d731904045781c9bacfca2b0" +uuid = "d28bc4f8-55e1-4f49-af69-84c1a99f0f58" +version = "1.1.0" + +[[deps.OrdinaryDiffEqIMEXMultistep]] +deps = ["DiffEqBase", "FastBroadcast", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Reexport"] +git-tree-sha1 = "9f8f52aad2399d7714b400ff9d203254b0a89c4a" +uuid = "9f002381-b378-40b7-97a6-27a27c83f129" +version = "1.1.0" + +[[deps.OrdinaryDiffEqLinear]] +deps = ["DiffEqBase", "ExponentialUtilities", "LinearAlgebra", "OrdinaryDiffEqCore", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators"] +git-tree-sha1 = "0f81a77ede3da0dc714ea61e81c76b25db4ab87a" +uuid = "521117fe-8c41-49f8-b3b6-30780b3f0fb5" +version = "1.1.0" + +[[deps.OrdinaryDiffEqLowOrderRK]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "d4bb32e09d6b68ce2eb45fb81001eab46f60717a" +uuid = "1344f307-1e59-4825-a18e-ace9aa3fa4c6" +version = "1.2.0" + +[[deps.OrdinaryDiffEqLowStorageRK]] +deps = ["Adapt", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "StaticArrays"] +git-tree-sha1 = "590561f3af623d5485d070b4d7044f8854535f5a" +uuid = "b0944070-b475-4768-8dec-fb6eb410534d" +version = "1.2.1" + +[[deps.OrdinaryDiffEqNonlinearSolve]] +deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "FastClosures", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MuladdMacro", "NonlinearSolve", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "PreallocationTools", "RecursiveArrayTools", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleNonlinearSolve", "StaticArrays"] +git-tree-sha1 = "3a3eb0b7ef3f996c468d6f8013eac9525bcfd788" +uuid = "127b3ac7-2247-4354-8eb6-78cf4e7c58e8" +version = "1.3.0" + +[[deps.OrdinaryDiffEqNordsieck]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqTsit5", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "ef44754f10e0dfb9bb55ded382afed44cd94ab57" +uuid = "c9986a66-5c92-4813-8696-a7ec84c806c8" +version = "1.1.0" + +[[deps.OrdinaryDiffEqPDIRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Polyester", "Reexport", "StaticArrays"] +git-tree-sha1 = "a8b7f8107c477e07c6a6c00d1d66cac68b801bbc" +uuid = "5dd0a6cf-3d4b-4314-aa06-06d4e299bc89" +version = "1.1.0" + +[[deps.OrdinaryDiffEqPRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "Reexport"] +git-tree-sha1 = "da525d277962a1b76102c79f30cb0c31e13fe5b9" +uuid = "5b33eab2-c0f1-4480-b2c3-94bc1e80bda1" +version = "1.1.0" + +[[deps.OrdinaryDiffEqQPRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "332f9d17d0229218f66a73492162267359ba85e9" +uuid = "04162be5-8125-4266-98ed-640baecc6514" +version = "1.1.0" + +[[deps.OrdinaryDiffEqRKN]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport"] +git-tree-sha1 = "41c09d9c20877546490f907d8dffdd52690dd65f" +uuid = "af6ede74-add8-4cfd-b1df-9a4dbb109d7a" +version = "1.1.0" + +[[deps.OrdinaryDiffEqRosenbrock]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "760a51a626d0065455847e4a3f788b07e86e5090" +uuid = "43230ef6-c299-4910-a778-202eb28ce4ce" +version = "1.3.1" + +[[deps.OrdinaryDiffEqSDIRK]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "SciMLBase", "TruncatedStacktraces"] +git-tree-sha1 = "f6683803a58de600ab7a26d2f49411c9923e9721" +uuid = "2d112036-d095-4a1e-ab9a-08536f3ecdbf" +version = "1.1.0" + +[[deps.OrdinaryDiffEqSSPRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "StaticArrays"] +git-tree-sha1 = "7dbe4ac56f930df5e9abd003cedb54e25cbbea86" +uuid = "669c94d9-1f4b-4b64-b377-1aa079aa2388" +version = "1.2.0" + +[[deps.OrdinaryDiffEqStabilizedIRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "StaticArrays"] +git-tree-sha1 = "348fd6def9a88518715425025eadd58517017325" +uuid = "e3e12d00-db14-5390-b879-ac3dd2ef6296" +version = "1.1.0" + +[[deps.OrdinaryDiffEqStabilizedRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "StaticArrays"] +git-tree-sha1 = "1b0d894c880e25f7d0b022d7257638cf8ce5b311" +uuid = "358294b1-0aab-51c3-aafe-ad5ab194a2ad" +version = "1.1.0" + +[[deps.OrdinaryDiffEqSymplecticRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport"] +git-tree-sha1 = "4e8b8c8b81df3df17e2eb4603115db3b30a88235" +uuid = "fa646aed-7ef9-47eb-84c4-9443fc8cbfa8" +version = "1.1.0" + +[[deps.OrdinaryDiffEqTsit5]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "TruncatedStacktraces"] +git-tree-sha1 = "96552f7d4619fabab4038a29ed37dd55e9eb513a" +uuid = "b1df2697-797e-41e3-8120-5422d3b24e4a" +version = "1.1.0" + +[[deps.OrdinaryDiffEqVerner]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "TruncatedStacktraces"] +git-tree-sha1 = "81d7841e73e385b9925d5c8e4427f2adcdda55db" +uuid = "79d7bb75-1356-48c1-b8c0-6832512096c2" +version = "1.1.1" [[deps.PCRE2_jll]] deps = ["Artifacts", "Libdl"] @@ -1748,9 +2109,9 @@ weakdeps = ["Requires", "TOML"] [[deps.Packing]] deps = ["GeometryBasics"] -git-tree-sha1 = "ec3edfe723df33528e085e632414499f26650501" +git-tree-sha1 = "bc5bf2ea3d5351edf285a06b0016788a121ce92c" uuid = "19eb6ba3-879d-56ad-ad62-d5c202156566" -version = "0.5.0" +version = "0.5.1" [[deps.PaddedViews]] deps = ["OffsetArrays"] @@ -1760,9 +2121,9 @@ version = "0.5.12" [[deps.Pango_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "cb5a2ab6763464ae0f19c86c56c63d4a2b0f5bda" +git-tree-sha1 = "e127b609fb9ecba6f201ba7ab753d5a605d53801" uuid = "36c8627f-9965-5494-a995-c6b170f724f3" -version = "1.52.2+0" +version = "1.54.1+0" [[deps.Parameters]] deps = ["OrderedCollections", "UnPack"] @@ -1783,9 +2144,13 @@ uuid = "30392449-352a-5448-841d-b1acce4e97dc" version = "0.43.4+0" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" +version = "1.11.0" +weakdeps = ["REPL"] + + [deps.Pkg.extensions] + REPLExt = "REPL" [[deps.PkgVersion]] deps = ["Pkg"] @@ -1794,10 +2159,10 @@ uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" version = "0.3.3" [[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "7b1a9df27f072ac4c9c7cbe5efb198489258d1f5" +deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "StableRNGs", "Statistics"] +git-tree-sha1 = "3ca9a356cd2e113c420f2c13bea19f8d3fb1cb18" uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.4.1" +version = "1.4.3" [[deps.PoissonRandom]] deps = ["Random"] @@ -1836,9 +2201,9 @@ version = "0.2.4" [[deps.PreallocationTools]] deps = ["Adapt", "ArrayInterface", "ForwardDiff"] -git-tree-sha1 = "d7f3f63331c7c8c81245b4ee2815b7d496365833" +git-tree-sha1 = "6c62ce45f268f3f958821a1e5192cf91c75ae89c" uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" -version = "0.4.23" +version = "0.4.24" [deps.PreallocationTools.extensions] PreallocationToolsReverseDiffExt = "ReverseDiff" @@ -1860,13 +2225,20 @@ version = "1.4.3" [[deps.PrettyTables]] deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "66b20dd35966a748321d3b2537c4584cf40387c7" +git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34" uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.3.2" +version = "2.4.0" + +[[deps.Primes]] +deps = ["IntegerMathUtils"] +git-tree-sha1 = "cb420f77dc474d23ee47ca8d14c90810cafe69e7" +uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" +version = "0.5.6" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" [[deps.ProgressMeter]] deps = ["Distributed", "Printf"] @@ -1875,29 +2247,37 @@ uuid = "92933f4c-e287-5a05-a399-4b506db050ca" version = "1.10.2" [[deps.PtrArrays]] -git-tree-sha1 = "f011fbb92c4d401059b2212c05c0601b70f8b759" +git-tree-sha1 = "77a42d78b6a92df47ab37e177b2deac405e1c88f" uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.0" +version = "1.2.1" [[deps.QOI]] deps = ["ColorTypes", "FileIO", "FixedPointNumbers"] -git-tree-sha1 = "18e8f4d1426e965c7b532ddd260599e1510d26ce" +git-tree-sha1 = "8b3fc30bc0390abdce15f8822c889f669baed73d" uuid = "4b34888f-f399-49d4-9bb3-47ed5cae4e65" -version = "1.0.0" +version = "1.0.1" [[deps.QuadGK]] deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "e237232771fdafbae3db5c31275303e056afaa9f" +git-tree-sha1 = "cda3b045cf9ef07a08ad46731f5a3165e56cf3da" uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.10.1" +version = "2.11.1" + + [deps.QuadGK.extensions] + QuadGKEnzymeExt = "Enzyme" + + [deps.QuadGK.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" [[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.11.0" [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" [[deps.Random123]] deps = ["Random", "RandomNumbers"] @@ -1928,9 +2308,9 @@ weakdeps = ["FixedPointNumbers"] [[deps.ReadVTK]] deps = ["Base64", "CodecZlib", "Downloads", "LightXML", "Reexport", "VTKBase"] -git-tree-sha1 = "f8a48e99ca616b46ad62356257dd21b9bb522024" +git-tree-sha1 = "9a4b57a775f730b9844c541ee814714b11b77bc5" uuid = "dc215faf-f008-4882-a9f7-a79a826fadc3" -version = "0.2.0" +version = "0.2.4" [[deps.RecipesBase]] deps = ["PrecompileTools"] @@ -1940,9 +2320,9 @@ version = "1.3.4" [[deps.RecursiveArrayTools]] deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "b034171b93aebc81b3e1890a036d13a9c4a9e3e0" +git-tree-sha1 = "32f824db4e5bab64e25a12b22483a30a6b813d08" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "3.27.0" +version = "3.27.4" [deps.RecursiveArrayTools.extensions] RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" @@ -1951,6 +2331,7 @@ version = "3.27.0" RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" RecursiveArrayToolsReverseDiffExt = ["ReverseDiff", "Zygote"] RecursiveArrayToolsSparseArraysExt = ["SparseArrays"] + RecursiveArrayToolsStructArraysExt = "StructArrays" RecursiveArrayToolsTrackerExt = "Tracker" RecursiveArrayToolsZygoteExt = "Zygote" @@ -1961,6 +2342,7 @@ version = "3.27.0" MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" @@ -1995,15 +2377,15 @@ version = "1.1.1" [[deps.Rmath]] deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" +git-tree-sha1 = "852bd0f55565a9e973fcfee83a84413270224dc4" uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" +version = "0.8.0" [[deps.Rmath_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e60724fd3beea548353984dc61c943ecddb0e29a" +git-tree-sha1 = "58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8" uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.3+0" +version = "0.5.1+0" [[deps.RoundingEmulator]] git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" @@ -2016,6 +2398,12 @@ git-tree-sha1 = "04c968137612c4a5629fa531334bb81ad5680f00" uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" version = "0.5.13" +[[deps.SCCNonlinearSolve]] +deps = ["CommonSolve", "PrecompileTools", "Reexport", "SciMLBase", "SymbolicIndexingInterface"] +git-tree-sha1 = "0caf35e2204c9045ca203b147b5dac4fa8e1cf20" +uuid = "9dfe8606-65a1-4bb3-9748-cb89d1561431" +version = "1.0.0" + [[deps.SCOTCH_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] git-tree-sha1 = "7110b749766853054ce8a2afaa73325d72d32129" @@ -2028,9 +2416,9 @@ version = "0.7.0" [[deps.SIMD]] deps = ["PrecompileTools"] -git-tree-sha1 = "2803cab51702db743f3fda07dd1745aadfbf43bd" +git-tree-sha1 = "52af86e35dd1b177d051b12681e1c581f53c281b" uuid = "fdea26ae-647d-5447-a871-4b548cad5224" -version = "3.5.0" +version = "3.7.0" [[deps.SIMDTypes]] git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" @@ -2044,10 +2432,10 @@ uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" version = "0.6.43" [[deps.SciMLBase]] -deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "Expronicon", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "79564263adfdeb7a7110316c0bf0da55b95ab281" +deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "Expronicon", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] +git-tree-sha1 = "87e054302a94a2d087f918ad50b0290977db67e6" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.49.0" +version = "2.67.0" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" @@ -2068,18 +2456,28 @@ version = "2.49.0" RCall = "6f49c342-dc21-5d91-9882-a32aef131414" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" +[[deps.SciMLJacobianOperators]] +deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DifferentiationInterface", "FastClosures", "LinearAlgebra", "SciMLBase", "SciMLOperators"] +git-tree-sha1 = "f66048bb969e67bd7d1bdd03cd0b81219642bbd0" +uuid = "19f34311-ddf3-4b8b-af20-060888a46c0e" +version = "0.1.1" + [[deps.SciMLOperators]] -deps = ["ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "23b02c588ac9a17ecb276cc62ab37f3e4fe37b32" +deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] +git-tree-sha1 = "6149620767866d4b0f0f7028639b6e661b6a1e44" uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" -version = "0.3.9" -weakdeps = ["SparseArrays"] +version = "0.3.12" +weakdeps = ["SparseArrays", "StaticArraysCore"] + + [deps.SciMLOperators.extensions] + SciMLOperatorsSparseArraysExt = "SparseArrays" + SciMLOperatorsStaticArraysCoreExt = "StaticArraysCore" [[deps.SciMLStructures]] deps = ["ArrayInterface"] -git-tree-sha1 = "20ad3e7c137156c50c93c888d0f2bc5b7883c729" +git-tree-sha1 = "0444a37a25fab98adbd90baa806ee492a3af133a" uuid = "53ae85a6-f571-4167-b2af-e1d143709226" -version = "1.4.2" +version = "1.6.1" [[deps.Scratch]] deps = ["Dates"] @@ -2089,12 +2487,13 @@ version = "1.2.1" [[deps.SentinelArrays]] deps = ["Dates", "Random"] -git-tree-sha1 = "ff11acffdb082493657550959d4feb4b6149e73a" +git-tree-sha1 = "712fb0231ee6f9120e005ccd56297abbc053e7e0" uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.5" +version = "1.4.8" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" [[deps.Setfield]] deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] @@ -2111,6 +2510,7 @@ version = "0.4.1" [[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" +version = "1.11.0" [[deps.Showoff]] deps = ["Dates", "Grisu"] @@ -2125,22 +2525,22 @@ uuid = "73760f76-fbc4-59ce-8f25-708e95d2df96" version = "0.4.0" [[deps.SimpleNonlinearSolve]] -deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "DiffEqBase", "DiffResults", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "MaybeInplace", "PrecompileTools", "Reexport", "SciMLBase", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "4d7a7c177bcb4c6dc465f09db91bfdb28c578919" +deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "Setfield", "StaticArraysCore"] +git-tree-sha1 = "f7e2042e0b68c6bb19a0a1594839792737f51d84" uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7" -version = "1.12.0" +version = "2.0.0" [deps.SimpleNonlinearSolve.extensions] SimpleNonlinearSolveChainRulesCoreExt = "ChainRulesCore" + SimpleNonlinearSolveDiffEqBaseExt = "DiffEqBase" SimpleNonlinearSolveReverseDiffExt = "ReverseDiff" SimpleNonlinearSolveTrackerExt = "Tracker" - SimpleNonlinearSolveZygoteExt = "Zygote" [deps.SimpleNonlinearSolve.weakdeps] ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [[deps.SimpleTraits]] deps = ["InteractiveUtils", "MacroTools"] @@ -2161,6 +2561,7 @@ version = "0.1.3" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" [[deps.SortingAlgorithms]] deps = ["DataStructures"] @@ -2171,13 +2572,13 @@ version = "1.2.1" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" +version = "1.11.0" [[deps.SparseDiffTools]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Random", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Tricks", "UnPack", "VertexSafeGraphs"] -git-tree-sha1 = "c9e5d7ee75cf6a1ca3a22c9a6a4ef451792cf62b" +deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Random", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "UnPack", "VertexSafeGraphs"] +git-tree-sha1 = "b906758c107b049b6b71599b9f928d9b14e5554a" uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" -version = "2.20.0" +version = "2.23.0" [deps.SparseDiffTools.extensions] SparseDiffToolsEnzymeExt = "Enzyme" @@ -2195,15 +2596,19 @@ version = "2.20.0" [[deps.SparseMatricesCSR]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "38677ca58e80b5cad2382e5a1848f93b054ad28d" +git-tree-sha1 = "6bc0c4cca30222586bde1ec5a0d9a3c6aaa51833" uuid = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" -version = "0.6.7" +version = "0.6.8" [[deps.SparseMatrixColorings]] -deps = ["ADTypes", "Compat", "DataStructures", "DocStringExtensions", "LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "996dff77d814c45c3f2342fa0113e4ad31e712e8" +deps = ["ADTypes", "DataStructures", "DocStringExtensions", "LinearAlgebra", "Random", "SparseArrays"] +git-tree-sha1 = "76b44c879661552d64f382acf66faa29ab56b3d9" uuid = "0a514795-09f3-496d-8182-132a7b665d35" -version = "0.4.0" +version = "0.4.10" +weakdeps = ["Colors"] + + [deps.SparseMatrixColorings.extensions] + SparseMatrixColoringsColorsExt = "Colors" [[deps.Sparspak]] deps = ["Libdl", "LinearAlgebra", "Logging", "OffsetArrays", "Printf", "SparseArrays", "Test"] @@ -2213,14 +2618,20 @@ version = "0.3.9" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" +git-tree-sha1 = "64cca0c26b4f31ba18f13f6c12af7c85f478cfde" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" +version = "2.5.0" weakdeps = ["ChainRulesCore"] [deps.SpecialFunctions.extensions] SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" +[[deps.StableRNGs]] +deps = ["Random"] +git-tree-sha1 = "83e6cce8324d49dfaf9ef059227f91ed4441a8e5" +uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" +version = "1.0.2" + [[deps.StackViews]] deps = ["OffsetArrays"] git-tree-sha1 = "46e589465204cd0c08b4bd97385e4fa79a0c770c" @@ -2246,9 +2657,9 @@ weakdeps = ["OffsetArrays", "StaticArrays"] [[deps.StaticArrays]] deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "eeafab08ae20c62c44c8399ccb9354a04b80db50" +git-tree-sha1 = "777657803913ffc7e8cc20f0fd04b634f871af8f" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.7" +version = "1.9.8" weakdeps = ["ChainRulesCore", "Statistics"] [deps.StaticArrays.extensions] @@ -2261,9 +2672,14 @@ uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" version = "1.4.3" [[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" +version = "1.11.1" +weakdeps = ["SparseArrays"] + + [deps.Statistics.extensions] + SparseArraysExt = ["SparseArrays"] [[deps.StatsAPI]] deps = ["LinearAlgebra"] @@ -2272,16 +2688,16 @@ uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" version = "1.7.0" [[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" +deps = ["AliasTables", "DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "29321314c920c26684834965ec2ce0dacc9cf8e5" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.3" +version = "0.34.4" [[deps.StatsFuns]] deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" +git-tree-sha1 = "b423576adc27097764a90e163157bcfc9acf0f46" uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.1" +version = "1.3.2" weakdeps = ["ChainRulesCore", "InverseFunctions"] [deps.StatsFuns.extensions] @@ -2296,23 +2712,35 @@ version = "0.5.7" [[deps.StringManipulation]] deps = ["PrecompileTools"] -git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" +git-tree-sha1 = "a6b1675a536c5ad1a60e5a5153e1fee12eb146e3" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.4" +version = "0.4.0" [[deps.StructArrays]] deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" +git-tree-sha1 = "9537ef82c42cdd8c5d443cbc359110cbb36bae10" uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] +version = "0.6.21" [deps.StructArrays.extensions] StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" + StructArraysGPUArraysCoreExt = ["GPUArraysCore", "KernelAbstractions"] + StructArraysLinearAlgebraExt = "LinearAlgebra" StructArraysSparseArraysExt = "SparseArrays" StructArraysStaticArraysExt = "StaticArrays" + [deps.StructArrays.weakdeps] + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.StyledStrings]] +uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" +version = "1.11.0" + [[deps.SuiteSparse]] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" @@ -2320,41 +2748,53 @@ uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" [[deps.SuiteSparse_jll]] deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" +version = "7.7.0+0" [[deps.SymbolicIndexingInterface]] deps = ["Accessors", "ArrayInterface", "RuntimeGeneratedFunctions", "StaticArraysCore"] -git-tree-sha1 = "9c490ee01823dc443da25bf9225827e3cdd2d7e9" +git-tree-sha1 = "8db233b54917e474165d582bef2244fa040e0a56" uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" -version = "0.3.26" +version = "0.3.36" [[deps.SymbolicLimits]] deps = ["SymbolicUtils"] -git-tree-sha1 = "fb099adbd7504f1e68b4512828e9d94197a8b889" +git-tree-sha1 = "fabf4650afe966a2ba646cabd924c3fd43577fc3" uuid = "19f23fe9-fdab-4a78-91af-e7b7767979c3" -version = "0.2.1" +version = "0.2.2" [[deps.SymbolicUtils]] -deps = ["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TermInterface", "TimerOutputs", "Unityper"] -git-tree-sha1 = "9345b7b8a2923abaf6089d9f7306bb712fecb840" +deps = ["AbstractTrees", "ArrayInterface", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TermInterface", "TimerOutputs", "Unityper"] +git-tree-sha1 = "04e9157537ba51dad58336976f8d04b9ab7122f0" uuid = "d1185830-fcd6-423d-90d6-eec64667417b" -version = "2.1.2" +version = "3.7.2" + + [deps.SymbolicUtils.extensions] + SymbolicUtilsLabelledArraysExt = "LabelledArrays" + SymbolicUtilsReverseDiffExt = "ReverseDiff" + + [deps.SymbolicUtils.weakdeps] + LabelledArrays = "2ee39098-c373-598a-b85f-a56591580800" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" [[deps.Symbolics]] -deps = ["ADTypes", "ArrayInterface", "Bijections", "CommonWorldInvalidations", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "ForwardDiff", "IfElse", "LaTeXStrings", "LambertW", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "RecipesBase", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "SymbolicIndexingInterface", "SymbolicLimits", "SymbolicUtils", "TermInterface"] -git-tree-sha1 = "b13a5417865e9934d043718f644e4a67519463ce" +deps = ["ADTypes", "ArrayInterface", "Bijections", "CommonWorldInvalidations", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "IfElse", "LaTeXStrings", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "Primes", "RecipesBase", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "SymbolicIndexingInterface", "SymbolicLimits", "SymbolicUtils", "TermInterface"] +git-tree-sha1 = "ce9c95fc859007747a4faf10166201e0b10d4313" uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" -version = "5.36.0" +version = "6.22.0" [deps.Symbolics.extensions] + SymbolicsForwardDiffExt = "ForwardDiff" SymbolicsGroebnerExt = "Groebner" - SymbolicsLuxCoreExt = "LuxCore" - SymbolicsPreallocationToolsExt = "PreallocationTools" + SymbolicsLuxExt = "Lux" + SymbolicsNemoExt = "Nemo" + SymbolicsPreallocationToolsExt = ["PreallocationTools", "ForwardDiff"] SymbolicsSymPyExt = "SymPy" [deps.Symbolics.weakdeps] + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" Groebner = "0b43b601-686d-58a3-8a1c-6623616c7cd4" - LuxCore = "bb33d45b-7691-41d6-9220-0943567d0623" + Lux = "b2108857-7c20-44ae-9111-449ecde12c47" + Nemo = "2edaba10-b0f1-5616-af89-8c11ac63239a" PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46" SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" @@ -2393,13 +2833,19 @@ uuid = "48a634ad-e948-5137-8d70-aa71f2a747f4" version = "1.16.1" [[deps.TermInterface]] -git-tree-sha1 = "6f0cee95e74d1f6891ba6b35b8b219fd3d11b567" +git-tree-sha1 = "d673e0aca9e46a2f63720201f55cc7b3e7169b16" uuid = "8ea1fca8-c5ef-4a55-8b96-4e9afe9c9a3c" -version = "0.4.1" +version = "2.0.0" [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +version = "1.11.0" + +[[deps.TestItems]] +git-tree-sha1 = "42fd9023fef18b9b78c8343a4e2f3813ffbcefcb" +uuid = "1c621080-faea-4a02-84b6-bbd5e436b8fe" +version = "1.0.0" [[deps.ThreadingUtilities]] deps = ["ManualMemory"] @@ -2408,7 +2854,7 @@ uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" version = "0.5.2" [[deps.Thunderbolt]] -deps = ["Adapt", "BlockArrays", "CommonSolve", "DataStructures", "DiffEqBase", "Ferrite", "FerriteGmsh", "GPUArraysCore", "JLD2", "LinearAlgebra", "LinearSolve", "ModelingToolkit", "OrderedCollections", "Polyester", "ReadVTK", "Reexport", "SparseArrays", "SparseMatricesCSR", "StaticArrays", "SymbolicIndexingInterface", "Tensors", "TimerOutputs", "UnPack", "Unrolled", "WriteVTK"] +deps = ["Adapt", "BlockArrays", "DataStructures", "DiffEqBase", "Ferrite", "FerriteGmsh", "GPUArraysCore", "JLD2", "LinearAlgebra", "LinearSolve", "Logging", "ModelingToolkit", "OrderedCollections", "OrdinaryDiffEqCore", "Polyester", "ReadVTK", "Reexport", "SciMLBase", "SparseArrays", "SparseMatricesCSR", "StaticArrays", "SymbolicIndexingInterface", "Tensors", "TimerOutputs", "UnPack", "Unrolled", "WriteVTK"] path = ".." uuid = "909927c2-98d5-4a67-bba9-79f03a9ad49b" version = "0.0.1-DEV" @@ -2421,15 +2867,15 @@ version = "0.0.1-DEV" [[deps.TiffImages]] deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "SIMD", "UUIDs"] -git-tree-sha1 = "bc7fd5c91041f44636b2c134041f7e5263ce58ae" +git-tree-sha1 = "0248b1b2210285652fbc67fd6ced9bf0394bcfec" uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69" -version = "0.10.0" +version = "0.11.1" [[deps.TimerOutputs]] deps = ["ExprTools", "Printf"] -git-tree-sha1 = "5a13ae8a41237cff5ecf34f73eb1b8f42fff6531" +git-tree-sha1 = "d7298ebdfa1654583468a487e8e83fae9d72dac3" uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" -version = "0.5.24" +version = "0.5.26" [[deps.Tokenize]] git-tree-sha1 = "468b4685af4abe0e9fd4d7bf495a6554a6276e75" @@ -2437,9 +2883,9 @@ uuid = "0796e94c-ce3b-5d07-9a54-7f471281c624" version = "0.5.29" [[deps.TranscodingStreams]] -git-tree-sha1 = "e84b3a11b9bece70d14cce63406bbc79ed3464d2" +git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.11.2" +version = "0.11.3" [[deps.TriangularSolve]] deps = ["CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "LoopVectorization", "Polyester", "Static", "VectorizationBase"] @@ -2471,6 +2917,7 @@ version = "1.5.1" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" [[deps.UnPack]] git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" @@ -2479,6 +2926,7 @@ version = "1.0.2" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" [[deps.UnicodeFun]] deps = ["REPL"] @@ -2488,9 +2936,9 @@ version = "0.4.1" [[deps.Unitful]] deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "d95fe458f26209c66a187b1114df96fd70839efd" +git-tree-sha1 = "01915bfcd62be15329c9a07235447a89d588327c" uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.21.0" +version = "1.21.1" weakdeps = ["ConstructionBase", "InverseFunctions"] [deps.Unitful.extensions] @@ -2516,9 +2964,9 @@ version = "1.0.1" [[deps.VectorizationBase]] deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "e7f5b81c65eb858bed630fe006837b935518aca5" +git-tree-sha1 = "4ab62a49f1d8d9548a1c8d1a75e5f55cf196f64e" uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" -version = "0.21.70" +version = "0.21.71" [[deps.VertexSafeGraphs]] deps = ["Graphs"] @@ -2544,6 +2992,12 @@ git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" version = "1.4.2" +[[deps.WebP]] +deps = ["CEnum", "ColorTypes", "FileIO", "FixedPointNumbers", "ImageCore", "libwebp_jll"] +git-tree-sha1 = "aa1ca3c47f119fbdae8770c29820e5e6119b83f2" +uuid = "e3aaa7dc-3e4b-44e0-be63-ffb868ccd7c1" +version = "0.1.3" + [[deps.WoodburyMatrices]] deps = ["LinearAlgebra", "SparseArrays"] git-tree-sha1 = "c1a7aa6219628fcd757dede0ca95e245c5cd9511" @@ -2557,33 +3011,39 @@ version = "1.6.1" [[deps.WriteVTK]] deps = ["Base64", "CodecZlib", "FillArrays", "LightXML", "TranscodingStreams", "VTKBase"] -git-tree-sha1 = "46664bb833f24e4fe561192e3753c9168c3b71b2" +git-tree-sha1 = "1d8042d58334ab7947ce505709df7009da6f3375" uuid = "64499a7a-5c06-52f2-abe2-ccb03c286192" -version = "1.19.2" +version = "1.21.1" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "d9717ce3518dc68a99e6b96300813760d887a01d" +git-tree-sha1 = "a2fccc6559132927d4c5dc183e3e01048c6dcbd6" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.13.1+0" +version = "2.13.5+0" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "a54ee957f4c86b526460a720dbc882fa5edcbefc" +git-tree-sha1 = "7d1671acbe47ac88e981868a078bd6b4e27c5191" uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.41+0" +version = "1.1.42+0" + +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "15e637a697345f6743674f1322beefbc5dcd5cfc" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.6.3+0" [[deps.Xorg_libX11_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" +git-tree-sha1 = "9dafcee1d24c4f024e7edc92603cedba72118283" uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" +version = "1.8.6+1" [[deps.Xorg_libXau_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +git-tree-sha1 = "2b0e27d52ec9d8d483e2ca0b72b3cb1a8df5c27a" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" +version = "1.0.11+1" [[deps.Xorg_libXcursor_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] @@ -2593,15 +3053,15 @@ version = "1.2.0+4" [[deps.Xorg_libXdmcp_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +git-tree-sha1 = "02054ee01980c90297412e4c809c8694d7323af3" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" +version = "1.1.4+1" [[deps.Xorg_libXext_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85" +git-tree-sha1 = "d7155fea91a4123ef59f42c4afb5ab3b4ca95058" uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.6+0" +version = "1.3.6+1" [[deps.Xorg_libXfixes_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] @@ -2641,15 +3101,15 @@ version = "0.9.11+0" [[deps.Xorg_libpthread_stubs_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" +git-tree-sha1 = "fee57a273563e273f0f53275101cd41a8153517a" uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" +version = "0.1.1+1" [[deps.Xorg_libxcb_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "bcd466676fef0878338c61e655629fa7bbc69d8e" +git-tree-sha1 = "1a74296303b6524a0472a8cb12d3d87a78eb3612" uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.17.0+0" +version = "1.17.0+1" [[deps.Xorg_libxkbfile_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] @@ -2671,20 +3131,26 @@ version = "2.39.0+0" [[deps.Xorg_xtrans_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +git-tree-sha1 = "b9ead2d2bdb27330545eb14234a2e300da61232e" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" +version = "1.5.0+1" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" version = "1.2.13+1" +[[deps.Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "555d1076590a6cc2fdee2ef1469451f872d8b41b" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.6+1" + [[deps.gmsh_jll]] deps = ["Artifacts", "Cairo_jll", "CompilerSupportLibraries_jll", "FLTK_jll", "FreeType2_jll", "GLU_jll", "GMP_jll", "HDF5_jll", "JLLWrappers", "JpegTurbo_jll", "LLVMOpenMP_jll", "Libdl", "Libglvnd_jll", "METIS_jll", "MMG_jll", "OCCT_jll", "Xorg_libX11_jll", "Xorg_libXext_jll", "Xorg_libXfixes_jll", "Xorg_libXft_jll", "Xorg_libXinerama_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "bdc2fa0a123008ad941cabb0ad88c571e696af2e" +git-tree-sha1 = "1e7fe5c8dbe0e911931a18cdfbd2c7a1e01b68ef" uuid = "630162c2-fc9b-58b3-9910-8442a8a132e6" -version = "4.13.0+1" +version = "4.13.1+0" [[deps.isoband_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -2705,15 +3171,15 @@ uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" version = "3.9.0+0" [[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "e17c115d55c5fbb7e52ebedb427a0dca79d4484e" uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.1+0" +version = "0.15.2+0" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" +version = "5.11.0+0" [[deps.libdecor_jll]] deps = ["Artifacts", "Dbus_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pango_jll", "Wayland_jll", "xkbcommon_jll"] @@ -2722,22 +3188,22 @@ uuid = "1183f4f0-6f2a-5f1a-908b-139f9cdfea6f" version = "0.2.2+0" [[deps.libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8a22cf860a7d27e4f3498a0fe0811a7957badb38" uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.2+0" +version = "2.0.3+0" [[deps.libpng_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "d7015d2e18a5fd9a4f47de711837e980519781a4" +git-tree-sha1 = "b70c870239dc3d7bc094eb2d6be9b73d27bef280" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.43+1" +version = "1.6.44+0" [[deps.libsixel_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "libpng_jll"] -git-tree-sha1 = "d4f63314c8aa1e48cd22aa0c17ed76cd1ae48c3c" +git-tree-sha1 = "7dfa0fd9c783d3d0cc43ea1af53d69ba45c447df" uuid = "075b6546-f08a-558a-be8f-8157d0f608a5" -version = "1.10.3+0" +version = "1.10.3+1" [[deps.libvorbis_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] @@ -2745,10 +3211,16 @@ git-tree-sha1 = "490376214c4721cdaca654041f635213c6165cb3" uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" version = "1.3.7+2" +[[deps.libwebp_jll]] +deps = ["Artifacts", "Giflib_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libglvnd_jll", "Libtiff_jll", "libpng_jll"] +git-tree-sha1 = "ccbb625a89ec6195856a50aa2b668a5c08712c94" +uuid = "c5f90fcd-3b7e-5836-afba-fc50a0988cb2" +version = "1.4.0+0" + [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" +version = "1.59.0+0" [[deps.oneTBB_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -2762,16 +3234,16 @@ uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" version = "17.4.0+2" [[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "35976a1216d6c066ea32cba2150c4fa682b276fc" uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" +version = "10164.0.0+0" [[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "dcc541bb19ed5b0ede95581fb2e41ecf179527d2" uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" +version = "3.6.0+0" [[deps.xkbcommon_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] diff --git a/examples/Project.toml b/examples/Project.toml index 2801dd3e..c9c801ea 100644 --- a/examples/Project.toml +++ b/examples/Project.toml @@ -1,5 +1,6 @@ [deps] CirculatorySystemModels = "4211d73e-f4e8-40c4-b600-92e4b82f0e1a" +ConcreteStructs = "2569d6c7-a4a2-43d3-a901-331e8e4be471" Ferrite = "c061ca5d-56c9-439f-9c0e-210fe06d3992" FerriteGmsh = "4f95f4f8-b27c-4ae5-9a39-ea55e634e36b" GLMakie = "e9467ef8-e4e7-5192-8a1a-b1aee30e663a" diff --git a/examples/lv-with-mtk-circuit.jl b/examples/lv-with-mtk-circuit.jl index e6dd9553..35d54fe3 100644 --- a/examples/lv-with-mtk-circuit.jl +++ b/examples/lv-with-mtk-circuit.jl @@ -312,7 +312,7 @@ coupledform = semidiscretize( # Create sparse matrix and residual vector timestepper = LieTrotterGodunov(( - LoadDrivenSolver( + HomotopyPathSolver( NewtonRaphsonSolver(; max_iter=100, tol=1e-2, diff --git a/examples/ring.jl b/examples/ring.jl index 5416cc76..f1ddea67 100644 --- a/examples/ring.jl +++ b/examples/ring.jl @@ -1,5 +1,6 @@ # NOTE This example is work in progress. Please consult it at a later time again. using Thunderbolt, UnPack +using LinearSolve import Thunderbolt: OS import Ferrite: get_grid, find_field @@ -36,7 +37,8 @@ ring_cs = compute_midmyocardial_section_coordinate_system(ring_grid) constitutive_model = ActiveStressModel( Guccione1991PassiveModel(), - PiersantiActiveStress(;Tmax=10.0), + # PiersantiActiveStress(;Tmax=10.0), + Guccione1993ActiveModel(;Tmax=100.0), PelceSunLangeveld1995Model(;calcium_field=AnalyticalCoefficient( calcium_profile_function, CoordinateSystemCoefficient(ring_cs) @@ -65,14 +67,14 @@ quasistaticform = semidiscretize( ) problem = QuasiStaticProblem(quasistaticform, tspan) -timestepper = LoadDrivenSolver( +timestepper = HomotopyPathSolver( NewtonRaphsonSolver( max_iter=10, inner_solver=LinearSolve.UMFPACKFactorization(), ) ) -integrator = OS.init(problem, timestepper, dt=dt₀, verbose=true) +integrator = OS.init(problem, timestepper, dt=dt₀, verbose=true, adaptive=true, dtmax=25.0) io = ParaViewWriter(name); @@ -92,12 +94,12 @@ for (u, t) in OS.TimeChoiceIterator(integrator, tspan[1]:dtvis:tspan[2]) Jdata = zeros(getncells(grid)) - frefdata = zero(Vector{Ferrite.Vec{3}}(undef, getncells(grid))) - srefdata = zero(Vector{Ferrite.Vec{3}}(undef, getncells(grid))) - fdata = zero(Vector{Ferrite.Vec{3}}(undef, getncells(grid))) - sdata = zero(Vector{Ferrite.Vec{3}}(undef, getncells(grid))) - helixangledata = zero(Vector{Float64}(undef, getncells(grid))) - helixanglerefdata = zero(Vector{Float64}(undef, getncells(grid))) + frefdata = zeros(Ferrite.Vec{3,Float64}, getncells(grid)) + srefdata = zeros(Ferrite.Vec{3,Float64}, getncells(grid)) + fdata = zeros(Ferrite.Vec{3,Float64}, getncells(grid)) + sdata = zeros(Ferrite.Vec{3,Float64}, getncells(grid)) + helixangledata = zeros(Float64, getncells(grid)) + helixanglerefdata = zeros(Float64, getncells(grid)) # Compute some elementwise measures for sdh ∈ dh.subdofhandlers diff --git a/ext/CuThunderboltExt.jl b/ext/CuThunderboltExt.jl index 7da2e508..d620d8ba 100644 --- a/ext/CuThunderboltExt.jl +++ b/ext/CuThunderboltExt.jl @@ -90,7 +90,7 @@ function _gpu_pointwise_step_inner_kernel_wrapper!(f, t, Δt, cache::AbstractPoi end # This controls the outer loop over the ODEs -function Thunderbolt._pointwise_step_outer_kernel!(f::AbstractPointwiseFunction, t::Real, Δt::Real, cache::AbstractPointwiseSolverCache, ::CuVector) +function Thunderbolt._pointwise_step_outer_kernel!(f::AbstractPointwiseFunction, t::Real, Δt::Real, cache::AbstractPointwiseSolverCache, ::Union{<:CuVector, SubArray{<:Any,1,<:CuVector}}) kernel = @cuda launch=false _gpu_pointwise_step_inner_kernel_wrapper!(f.ode, t, Δt, cache) # || return false config = launch_configuration(kernel.fun) threads = min(f.npoints, config.threads) diff --git a/src/Thunderbolt.jl b/src/Thunderbolt.jl index 9bb0ad62..6b8b2da5 100644 --- a/src/Thunderbolt.jl +++ b/src/Thunderbolt.jl @@ -18,8 +18,6 @@ import ReadVTK include("solver/operator_splitting.jl") @reexport using .OS solution_size(f::GenericSplitFunction) = OS.function_size(f) -# include("solver/local_time_stepping.jl") -# include("solver/multilevel.jl") @reexport using Ferrite import Ferrite: AbstractDofHandler, AbstractGrid, AbstractRefShape, AbstractCell, get_grid @@ -27,13 +25,16 @@ import Ferrite: vertices, edges, faces, sortedge, sortface import Ferrite: get_coordinate_type, getspatialdim import Ferrite: reference_shape_value +import Logging: @logmsg + +import SciMLBase +@reexport import SciMLBase: init, solve, solve!, step! import DiffEqBase#: AbstractDiffEqFunction, AbstractDEProblem -@reexport import LinearSolve +import OrdinaryDiffEqCore#: OrdinaryDiffEqCore +import LinearSolve import Base: *, +, - -@reexport import CommonSolve: init, solve, solve!, step! - import ModelingToolkit import ModelingToolkit: @variables, @parameters, @component, @named, compose, ODESystem, Differential @@ -62,7 +63,7 @@ include("modeling/fluid_mechanics.jl") include("modeling/multiphysics.jl") include("modeling/functions.jl") -include("modeling/problems.jl") # Utility for compat against DiffEqBase +include("modeling/problems.jl") include("discretization/interface.jl") include("discretization/fem.jl") @@ -199,7 +200,7 @@ export # Solver SchurComplementLinearSolver, NewtonRaphsonSolver, - LoadDrivenSolver, + HomotopyPathSolver, ForwardEulerSolver, BackwardEulerSolver, ForwardEulerCellSolver, diff --git a/src/io.jl b/src/io.jl index 41b595fe..37a96bd7 100644 --- a/src/io.jl +++ b/src/io.jl @@ -6,6 +6,8 @@ mutable struct ParaViewWriter{PVD} current_file::Union{WriteVTK.DatasetFile, Nothing} end +Ferrite.create_vtk_grid(filename::AbstractString, mesh::AbstractGrid) = _thunderbolt_fix_create_vtk_grid(filename, mesh) + function _thunderbolt_fix_create_vtk_grid(filename::AbstractString, grid::AbstractGrid{sdim}) where sdim cls = WriteVTK.MeshCell[] for cell in getcells(grid) diff --git a/src/modeling/rsafdq2022.jl b/src/modeling/rsafdq2022.jl index 15eca96a..519deb85 100644 --- a/src/modeling/rsafdq2022.jl +++ b/src/modeling/rsafdq2022.jl @@ -306,4 +306,4 @@ function eliminate_constraints_from_linearization!(solver_cache::AbstractNonline getJ(op, Block((2,1)))[:, ch.prescribed_dofs] .= 0.0 end -update_constraints_block!(::RSAFDQ2022TyingInfo, ::BlockArrays.Block, ::Thunderbolt.LoadDrivenSolverCache, ::Float64) = nothing +update_constraints_block!(::RSAFDQ2022TyingInfo, ::BlockArrays.Block, ::Thunderbolt.HomotopyPathSolver, ::Float64) = nothing diff --git a/src/modeling/solid/energies.jl b/src/modeling/solid/energies.jl index 9af156af..6c24a6ba 100644 --- a/src/modeling/solid/energies.jl +++ b/src/modeling/solid/energies.jl @@ -25,12 +25,12 @@ with $a,b \geq 1$. Entry 1 from table 3 in [HarNef:2003:pgp](@cite). """ @Base.kwdef struct HartmannNeffCompressionPenalty1{TD1, TD2} - a::TD1 = 1.0 - b::TD1 = 2.0 + a::TD1 = 1 + b::TD1 = 2 β::TD2 = 1.0 end function U(I₃, mp::HartmannNeffCompressionPenalty1) - mp.β * (I₃^mp.b + 1/I₃^mp.b - 2)^mp.a + mp.β * (I₃^mp.b + 1/(I₃^mp.b) - 2)^mp.a end @@ -59,13 +59,12 @@ $U(I_3) = \beta (I_3 - 2\log(\sqrt{I_3}) + 4\log(\sqrt{I_3})^2))$ Entry 3 from table 3 in [HarNef:2003:pgp](@cite). """ -@Base.kwdef struct HartmannNeffCompressionPenalty3{TD1, TD2} - a::TD1 = 1.0 - b::TD1 = 2.0 - β::TD2 = 1.0 +@Base.kwdef struct HartmannNeffCompressionPenalty3{T} + β::T = 1.0 end function U(I₃, mp::HartmannNeffCompressionPenalty3) - mp.β * (I₃^mp.b + 1/I₃^mp.b - 2)^mp.a + J = √I₃ + mp.β * (I₃ - 2ln(J) + 4ln(J)^2) end diff --git a/src/modeling/solid/materials.jl b/src/modeling/solid/materials.jl index 38d83d63..919f4fa0 100644 --- a/src/modeling/solid/materials.jl +++ b/src/modeling/solid/materials.jl @@ -10,6 +10,11 @@ end @doc raw""" PrestressedMechanicalModel(inner_model, prestress_field) + +Models the stress formulated in the 1st Piola-Kirchhoff stress tensor based on a multiplicative split +of the deformation gradient $$F = F_{\textrm{e}} F_{0}$$ where we compute $$P(F_{\textrm{e}}) = P(F F^{-1}_{0})$$. + +Please note that it is assumed that $$F^{-1}_{0}$$ is the quantity computed by `prestress_field`. """ struct PrestressedMechanicalModel{MM, FF} <: QuasiStaticModel inner_model::MM @@ -29,8 +34,17 @@ function setup_coefficient_cache(m::PrestressedMechanicalModel, qr::QuadratureRu end function material_routine(constitutive_model::PrestressedMechanicalModel, coefficient_cache::PrestressedMechanicalModelCoefficientCache, F, internal_state, geometry_cache::Ferrite.CellCache, qp::QuadraturePoint, time) - F₀ = evaluate_coefficient(coefficient_cache.prestress_cache, geometry_cache, qp, time) - return material_routine(constitutive_model.inner_model, coefficient_cache.inner_cache, F ⋅ F₀, internal_state, geometry_cache, qp, time) + F₀inv = evaluate_coefficient(coefficient_cache.prestress_cache, geometry_cache, qp, time) + Fᵉ = F ⋅ F₀inv + ∂Ψᵉ∂Fᵉ, ∂²Ψᵉ∂Fᵉ² = material_routine(constitutive_model.inner_model, coefficient_cache.inner_cache, Fᵉ, internal_state, geometry_cache, qp, time) + Pᵉ = ∂Ψᵉ∂Fᵉ # Elastic PK1 + P = Pᵉ ⋅ transpose(F₀inv) # Obtained by Coleman-Noll procedure + Aᵉ = ∂²Ψᵉ∂Fᵉ² # Elastic mixed modulus + # TODO condense these steps into a single operation "A_imkn F_jm F_ln" + # Pull elastic modulus from intermediate to reference configuration + ∂Pᵉ∂F = Aᵉ ⋅ transpose(F₀inv) + ∂P∂F = dot_2_1t(∂Pᵉ∂F, F₀inv) + return P, ∂P∂F end setup_internal_model_cache(constitutive_model::PrestressedMechanicalModel, qr::QuadratureRule, sdh::SubDofHandler) = setup_internal_model_cache(constitutive_model.inner_model, qr, sdh) @@ -58,7 +72,7 @@ end function material_routine(model::PK1Model, cc, F, internal_state, geometry_cache::Ferrite.CellCache, qp::QuadraturePoint, time) coefficients = evaluate_coefficient(cc, geometry_cache, qp, time) ∂²Ψ∂F², ∂Ψ∂F = Tensors.hessian( - F_ad -> Ψ(F_ad, coefficients, model.material), + F_ad -> Ψ(F_ad, coefficients, model.material), F, :all ) @@ -67,11 +81,10 @@ end setup_internal_model_cache(constitutive_model::PK1Model, qr::QuadratureRule, sdh::SubDofHandler) = setup_internal_model_cache(constitutive_model.internal_model, qr, sdh) -function material_routine(F::Tensor, coefficients, ::EmptyInternalVariable, model::PK1Model) +function material_routine(F::Tensor{2}, coefficients, ::EmptyInternalVariable, model::PK1Model) ∂²Ψ∂F², ∂Ψ∂F = Tensors.hessian( F_ad -> - Ψ(F_ad, coefficients, model.material) - + Ψ(F_ad, Fᵃ, coefficients, model.material), + Ψ(F_ad, coefficients, model.material), F, :all) return ∂Ψ∂F, ∂²Ψ∂F² @@ -101,7 +114,7 @@ function setup_coefficient_cache(m::GeneralizedHillModel, qr::QuadratureRule, sd return setup_coefficient_cache(m.microstructure_model, qr, sdh) end -function material_routine(F::Tensor{2,dim}, coefficients, internal_state, model::GeneralizedHillModel) where {dim} +function material_routine(F::Tensor{2}, coefficients, internal_state, model::GeneralizedHillModel) # TODO what is a good abstraction here? Fᵃ = compute_Fᵃ(internal_state, coefficients, model.contraction_model, model.active_deformation_gradient_model) diff --git a/src/solver/nonlinear/newton_raphson.jl b/src/solver/nonlinear/newton_raphson.jl index 45fe29a4..abfdee4d 100644 --- a/src/solver/nonlinear/newton_raphson.jl +++ b/src/solver/nonlinear/newton_raphson.jl @@ -1,3 +1,25 @@ +struct SummaryNewtonMonitor +end + +@inline function newton_monitor_inner_callback(::SummaryNewtonMonitor, t, i, f, u, sol, linear_cache) + @info "Linear solver stats: $(sol.stats) - norm(Δu) = $(norm(sol.u))" +end + +struct VTKNewtonMonitor + outdir::String +end + +function newton_monitor_inner_callback(monitor::VTKNewtonMonitor, time, newton_itr, f, u, sol, linear_cache) + @info "Linear solver stats: $(sol.stats) - norm(Δu) = $(norm(sol.u))" + + VTKGridFile(joinpath(monitor.outdir, "newton-monitor-t=$time-i=$newton_itr.vtu"), f.dh) do vtk + write_solution(vtk, f.dh, u) + write_solution(vtk, f.dh, linear_cache.b, "_residual") + write_solution(vtk, f.dh, linear_cache.u, "_increment") + end +end + + """ NewtonRaphsonSolver{T} @@ -5,22 +27,24 @@ Classical Newton-Raphson solver to solve nonlinear problems of the form `F(u) = To use the Newton-Raphson solver you have to dispatch on * [update_linearization!](@ref) """ -Base.@kwdef struct NewtonRaphsonSolver{T, solverType} <: AbstractNonlinearSolver +Base.@kwdef struct NewtonRaphsonSolver{T, solverType, M} <: AbstractNonlinearSolver # Convergence tolerance tol::T = 1e-4 # Maximum number of iterations max_iter::Int = 100 inner_solver::solverType = LinearSolve.KrylovJL_GMRES() + monitor::M = SummaryNewtonMonitor() end -mutable struct NewtonRaphsonSolverCache{OpType, ResidualType, T, InnerSolverCacheType} <: AbstractNonlinearSolverCache +mutable struct NewtonRaphsonSolverCache{OpType, ResidualType, T, NewtonType <: NewtonRaphsonSolver{T}, InnerSolverCacheType} <: AbstractNonlinearSolverCache # The nonlinear operator op::OpType # Cache for the right hand side f(u) residual::ResidualType # - const parameters::NewtonRaphsonSolver{T} + const parameters::NewtonType linear_solver_cache::InnerSolverCacheType + Θks::Vector{T} # TODO modularize this end function setup_solver_cache(f::AbstractSemidiscreteFunction, solver::NewtonRaphsonSolver{T}) where {T} @@ -37,7 +61,7 @@ function setup_solver_cache(f::AbstractSemidiscreteFunction, solver::NewtonRaphs @assert inner_cache.b === residual @assert inner_cache.A === getJ(op) - NewtonRaphsonSolverCache(op, residual, solver, inner_cache) + NewtonRaphsonSolverCache(op, residual, solver, inner_cache, T[]) end function setup_solver_cache(f::AbstractSemidiscreteBlockedFunction, solver::NewtonRaphsonSolver{T}) where {T} @@ -58,25 +82,21 @@ function setup_solver_cache(f::AbstractSemidiscreteBlockedFunction, solver::Newt end function nlsolve!(u::AbstractVector, f::AbstractSemidiscreteFunction, cache::NewtonRaphsonSolverCache, t) - @unpack op, residual, linear_solver_cache = cache + @unpack op, residual, linear_solver_cache, Θks = cache newton_itr = -1 Δu = linear_solver_cache.u + residualnormprev = 0.0 + resize!(Θks, 0) while true newton_itr += 1 - residual .= 0.0 @timeit_debug "update operator" update_linearization!(op, residual, u, t) @timeit_debug "elimination" eliminate_constraints_from_linearization!(cache, f) linear_solver_cache.isfresh = true # Notify linear solver that we touched the system matrix - # vtk_grid("newton-debug-$newton_itr", problem.structural_problem.dh) do vtk - # vtk_point_data(vtk, f.structural_problem.dh, u[Block(1)]) - # vtk_point_data(vtk, f.structural_problem.dh, residual[Block(1)], :residual) - # end - residualnorm = residual_norm(cache, f) @info "Newton itr $newton_itr: ||r||=$residualnorm" - if residualnorm < cache.parameters.tol #|| (newton_itr > 0 && norm(Δu) < cache.parameters.tol) + if residualnorm < cache.parameters.tol && newton_itr > 1 # Do at least two iterations to get a sane convergence estimate break elseif newton_itr > cache.parameters.max_iter @warn "Reached maximum Newton iterations. Aborting. ||r|| = $residualnorm" @@ -87,13 +107,29 @@ function nlsolve!(u::AbstractVector, f::AbstractSemidiscreteFunction, cache::New end @timeit_debug "solve" sol = LinearSolve.solve!(linear_solver_cache) - @info "Linear solver stats: $(sol.stats) - norm(Δu) = $(norm(Δu))" + newton_monitor_inner_callback(cache.parameters.monitor, t, newton_itr, f, u, sol, linear_solver_cache) solve_succeeded = LinearSolve.SciMLBase.successful_retcode(sol) || sol.retcode == LinearSolve.ReturnCode.Default # The latter seems off... solve_succeeded || return false eliminate_constraints_from_increment!(Δu, f, cache) u .-= Δu # Current guess + + if newton_itr > 0 + Θk =residualnorm/residualnormprev + push!(Θks, isnan(Θk) ? Inf : Θk) + if Θk ≥ 1.0 + @warn "Newton-Raphson diverged. Aborting. ||r|| = $residualnorm" + return false + end + + # Late out on second iteration + if residualnorm < cache.parameters.tol + break + end + end + + residualnormprev = residualnorm end return true end diff --git a/src/solver/operator_splitting.jl b/src/solver/operator_splitting.jl index 5a71fae6..5977e488 100644 --- a/src/solver/operator_splitting.jl +++ b/src/solver/operator_splitting.jl @@ -4,6 +4,8 @@ import Unrolled: @unroll import DiffEqBase, DataStructures +import OrdinaryDiffEqCore + import UnPack: @unpack import DiffEqBase: init, TimeChoiceIterator diff --git a/src/solver/operator_splitting/integrator.jl b/src/solver/operator_splitting/integrator.jl index bdf6bc2b..b4955799 100644 --- a/src/solver/operator_splitting/integrator.jl +++ b/src/solver/operator_splitting/integrator.jl @@ -23,6 +23,7 @@ mutable struct OperatorSplittingIntegrator{ alg::algType u::uType # Master Solution uprev::uType # Master Solution + tmp::uType # Interpolation buffer p::pType t::tType # Current time tprev::tType @@ -49,12 +50,17 @@ function DiffEqBase.__init( args...; dt, tstops = (), - saveat = nothing, + saveat = (), + d_discontinuities = (), save_everystep = false, callback = nothing, advance_to_tstop = false, + adaptive = false, + controller = nothing, + alias_u0 = true, save_func = (u, t) -> copy(u), # custom kwarg dtchangeable = DiffEqBase.isadaptive(alg), # custom kwarg + verbose = true, kwargs..., ) (; u0, p) = prob @@ -63,34 +69,53 @@ function DiffEqBase.__init( dt > zero(dt) || error("dt must be positive") _dt = dt dt = tf > t0 ? dt : -dt + tType = typeof(dt) - _tstops = tstops - _saveat = saveat - tstops, saveat = tstops_and_saveat_heaps(t0, tf, tstops, saveat) + if tstops isa AbstractArray || tstops isa Tuple || tstops isa Number + _tstops = nothing + else + _tstops = tstops + tstops = () + end + + # Setup tstop logic + tstops_internal = OrdinaryDiffEqCore.initialize_tstops(tType, tstops, d_discontinuities, prob.tspan) + saveat_internal = OrdinaryDiffEqCore.initialize_saveat(tType, saveat, prob.tspan) + d_discontinuities_internal = OrdinaryDiffEqCore.initialize_d_discontinuities(tType, d_discontinuities, prob.tspan) + + u = setup_u(prob, alg, alias_u0) + uprev = setup_u(prob, alg, false) + tmp = setup_u(prob, alg, false) sol = DiffEqBase.build_solution(prob, alg, typeof(t0)[], typeof(save_func(u0, t0))[]) callback = DiffEqBase.CallbackSet(callback) - cache = init_cache(prob, alg; u0, t0, dt, kwargs...) - - subintegrators = build_subintegrators_recursive(prob.f, prob.f.synchronizers, p, cache, t0, dt, 1:length(u0), cache.u, tstops, _tstops, saveat, _saveat) + subintegrators, cache = build_subintegrators_with_cache( + prob, alg, + uprev, u, + 1:length(u), + t0, dt, tf, + tstops, saveat, d_discontinuities, callback, + adaptive, verbose, + ) integrator = OperatorSplittingIntegrator( prob.f, alg, - cache.u, - cache.uprev, + u, + uprev, + tmp, p, t0, copy(t0), dt, _dt, dtchangeable, + tstops_internal, tstops, - _tstops, + saveat_internal, saveat, - _saveat, callback, advance_to_tstop, false, @@ -107,7 +132,7 @@ function DiffEqBase.reinit!( integrator::OperatorSplittingIntegrator, u0 = integrator.sol.prob.u0; tspan = integrator.sol.prob.tspan, - erase_sol = true, + erase_sol = false, tstops = integrator._tstops, saveat = integrator._saveat, reinit_callbacks = true, @@ -185,13 +210,22 @@ function DiffEqBase.step!(integrator::OperatorSplittingIntegrator, dt, stop_at_t end end +function setup_u(prob::OperatorSplittingProblem, solver, alias_u0) + if alias_u0 + return prob.u0 + else + return OrdinaryDiffEqCore.recursivecopy(prob.u0) + end +end + # TimeChoiceIterator API @inline function DiffEqBase.get_tmp_cache(integrator::OperatorSplittingIntegrator) - DiffEqBase.get_tmp_cache(integrator, integrator.alg, integrator.cache) -end -@inline function DiffEqBase.get_tmp_cache(integrator::OperatorSplittingIntegrator, ::AbstractOperatorSplittingAlgorithm, cache) - return (cache.tmp,) + # DiffEqBase.get_tmp_cache(integrator, integrator.alg, integrator.cache) + (integrator.tmp,) end +# @inline function DiffEqBase.get_tmp_cache(integrator::OperatorSplittingIntegrator, ::AbstractOperatorSplittingAlgorithm, cache) +# return (cache.tmp,) +# end # Interpolation # TODO via https://github.com/SciML/SciMLBase.jl/blob/master/src/interpolation.jl function linear_interpolation!(y,t,y1,y2,t1,t2) @@ -237,6 +271,7 @@ tdir(integrator) = integrator.tstops.ordering isa DataStructures.FasterForward ? is_past_t(integrator, t) = tdir(integrator) * (t - integrator.t) ≤ zero(integrator.t) function reached_tstop(integrator, tstop, stop_at_tstop = integrator.dtchangeable) if stop_at_tstop + integrator.t > tstop && error("Integrator missed stop at $tstop (current time=$(integrator.t)). Aborting.") return integrator.t == tstop # Check for exact hit else #!stop_at_tstop return is_past_t(integrator, tstop) @@ -346,36 +381,104 @@ function advance_solution_to!(integrator::OperatorSplittingIntegrator, cache::Ab end # Dispatch for tree node construction -function build_subintegrators_recursive(f::GenericSplitFunction, synchronizers::Tuple, p::Tuple, cache::AbstractOperatorSplittingCache, t, dt, dof_range, uparent, tstops, _tstops, saveat, _saveat) - return ntuple(i -> - build_subintegrators_recursive( +# function build_subintegrators_recursive(f::GenericSplitFunction, synchronizers::Tuple, p::Tuple, cache::AbstractOperatorSplittingCache, t, dt, dof_range, uparent, tstops, _tstops, saveat, _saveat) +# return ntuple(i -> +# build_subintegrators_recursive( +# get_operator(f, i), +# synchronizers[i], +# p[i], +# cache.inner_caches[i], +# # TODO recover this +# t, dt, f.dof_ranges[i], +# # We pass the full solution, because some parameters might require +# # access to solution variables which are not part of the local solution range +# uparent, +# tstops, _tstops, saveat, _saveat +# ), length(f.functions) +# ) +# end +# function build_subintegrators_recursive(f::GenericSplitFunction, synchronizers::NoExternalSynchronization, p::Tuple, cache::AbstractOperatorSplittingCache, t, dt, dof_range, uparent, tstops, _tstops, saveat, _saveat) +# return ntuple(i -> +# build_subintegrators_recursive( +# get_operator(f, i), +# synchronizers, +# p[i], +# cache.inner_caches[i], +# # TODO recover this +# t, dt, f.dof_ranges[i], +# # We pass the full solution, because some parameters might require +# # access to solution variables which are not part of the local solution range +# uparent, +# tstops, _tstops, saveat, _saveat +# ), length(f.functions) +# ) +# end + +function build_subintegrators_with_cache( + prob::OperatorSplittingProblem, alg::AbstractOperatorSplittingAlgorithm, + uprevouter::AbstractVector, uouter::AbstractVector, + solution_indices, + t0, dt, tf, + tstops, saveat, d_discontinuities, callback, + adaptive, verbose, +) + (; f, p) = prob + subintegrators_with_caches = ntuple(i -> + build_subintegrators_with_cache( get_operator(f, i), - synchronizers[i], + alg.inner_algs[i], p[i], - cache.inner_caches[i], - # TODO recover this - t, dt, f.dof_ranges[i], - # We pass the full solution, because some parameters might require - # access to solution variables which are not part of the local solution range - uparent, - tstops, _tstops, saveat, _saveat - ), length(f.functions) + uprevouter, uouter, + f.dof_ranges[i], + t0, dt, tf, + tstops, saveat, d_discontinuities, callback, + adaptive, verbose, + ), + length(f.functions) + ) + + subintegrators = ntuple(i -> subintegrators_with_caches[i][1], length(f.functions)) + caches = ntuple(i -> subintegrators_with_caches[i][2], length(f.functions)) + + # TODO fix mixed device type problems we have to be smarter + return subintegrators, init_cache(f, alg; + uprev=uprevouter, u=uouter, alias_u=true, + inner_caches = caches, ) end -function build_subintegrators_recursive(f::GenericSplitFunction, synchronizers::NoExternalSynchronization, p::Tuple, cache::AbstractOperatorSplittingCache, t, dt, dof_range, uparent, tstops, _tstops, saveat, _saveat) - return ntuple(i -> - build_subintegrators_recursive( + +function build_subintegrators_with_cache( + f::GenericSplitFunction, alg::AbstractOperatorSplittingAlgorithm, p::Tuple, + uprevouter::AbstractVector, uouter::AbstractVector, + solution_indices, + t0, dt, tf, + tstops, saveat, d_discontinuities, callback, + adaptive, verbose, +) + subintegrators_with_caches = ntuple(i -> + build_subintegrators_with_cache( get_operator(f, i), - synchronizers, + alg.inner_algs[i], p[i], - cache.inner_caches[i], - # TODO recover this - t, dt, f.dof_ranges[i], - # We pass the full solution, because some parameters might require - # access to solution variables which are not part of the local solution range - uparent, - tstops, _tstops, saveat, _saveat - ), length(f.functions) + uprevouter, uouter, + f.dof_ranges[i], + t0, dt, tf, + tstops, saveat, d_discontinuities, callback, + adaptive, verbose, + ), + length(f.functions) + ) + + subintegrators = first.(subintegrators_with_caches) + inner_caches = last.(subintegrators_with_caches) + + # TODO fix mixed device type problems we have to be smarter + uprev = @view uprev[solution_indices] + u = @view u[solution_indices] + return subintegrators, init_cache(f, alg; + uprev = uprev, u = u, + inner_caches = inner_caches, + t0 = t0, ) end diff --git a/src/solver/operator_splitting/solver.jl b/src/solver/operator_splitting/solver.jl index 9d67af4c..3618bd44 100644 --- a/src/solver/operator_splitting/solver.jl +++ b/src/solver/operator_splitting/solver.jl @@ -10,31 +10,21 @@ end @inline DiffEqBase.isadaptive(::AbstractOperatorSplittingAlgorithm) = false -struct LieTrotterGodunovCache{uType, tmpType, iiType} <: AbstractOperatorSplittingCache +struct LieTrotterGodunovCache{uType, uprevType, iiType} <: AbstractOperatorSplittingCache u::uType - uprev::uType # True previous solution - tmp::tmpType # Scratch + uprev::uprevType inner_caches::iiType end -# Dispatch for outer construction -function init_cache(prob::OperatorSplittingProblem, alg::LieTrotterGodunov; u0, kwargs...) # TODO - @unpack f = prob - @assert f isa GenericSplitFunction - - # Build inner integrator - return construct_inner_cache(f, alg; uparent=u0, u0, kwargs...) -end - -# Dispatch for recursive construction -function construct_inner_cache(f::AbstractOperatorSplitFunction, alg::LieTrotterGodunov; uparent, u0, kwargs...) - dof_ranges = f.dof_ranges - - u = copy(u0) - uprev = copy(u0) - tmp = similar(u) - inner_caches = ntuple(i->construct_inner_cache(get_operator(f, i), alg.inner_algs[i]; uparent, u0=view(uparent,dof_ranges[i]), kwargs...), length(f.functions)) - LieTrotterGodunovCache(u, uprev, tmp, inner_caches) +function init_cache(f::GenericSplitFunction, alg::LieTrotterGodunov; + uprev::AbstractArray, u::AbstractVector, + inner_caches, + alias_uprev = true, + alias_u = false, +) + _uprev = alias_uprev ? uprev : SciMLBase.recursivecopy(uprev) + _u = alias_u ? u : SciMLBase.recursivecopy(u) + LieTrotterGodunovCache(_u, _uprev, inner_caches) end @inline @unroll function advance_solution_to!(subintegrators::Tuple, cache::LieTrotterGodunovCache, tnext; uparent) diff --git a/src/solver/time/euler.jl b/src/solver/time/euler.jl index 9a766ee9..cbf30c3b 100644 --- a/src/solver/time/euler.jl +++ b/src/solver/time/euler.jl @@ -16,8 +16,6 @@ mutable struct BackwardEulerSolverCache{T, SolutionType <: AbstractVector{T}, Ma uₙ::SolutionType # Last solution buffer uₙ₋₁::SolutionType - # Temporary buffer for interpolations and stuff - tmp::SolutionType # Mass matrix M::MassMatrixType # Diffusion matrix @@ -74,7 +72,7 @@ function perform_step!(f::TransientDiffusionFunction, cache::BackwardEulerSolver return !solve_failed end -function setup_solver_cache(f::TransientDiffusionFunction, solver::BackwardEulerSolver, t₀) +function setup_solver_cache(f::TransientDiffusionFunction, solver::BackwardEulerSolver, t₀; u = nothing, uprev = nothing) @unpack dh = f @unpack inner_solver = solver @assert length(dh.field_names) == 1 # TODO relax this assumption, maybe. @@ -82,9 +80,8 @@ function setup_solver_cache(f::TransientDiffusionFunction, solver::BackwardEuler A = create_system_matrix(solver.system_matrix_type , f) b = create_system_vector(solver.solution_vector_type, f) - u0 = create_system_vector(solver.solution_vector_type, f) - uprev = create_system_vector(solver.solution_vector_type, f) - tmp = create_system_vector(solver.solution_vector_type, f) + u0 = u === nothing ? create_system_vector(solver.solution_vector_type, f) : u + uprev = uprev === nothing ? create_system_vector(solver.solution_vector_type, f) : uprev T = eltype(u0) @@ -121,7 +118,6 @@ function setup_solver_cache(f::TransientDiffusionFunction, solver::BackwardEuler cache = BackwardEulerSolverCache( u0, # u uprev, - tmp, mass_operator, diffusion_operator, source_operator, @@ -165,12 +161,14 @@ function perform_step!(f::ODEFunction, solver_cache::ForwardEulerSolverCache, t: return !any(isnan.(uₙ)) end -function setup_solver_cache(f::ODEFunction, solver::ForwardEulerSolver, t₀) +function setup_solver_cache(f::ODEFunction, solver::ForwardEulerSolver, t₀; u = nothing, uprev = nothing) + du = create_system_vector(solver.solution_vector_type, f) + u = u === nothing ? create_system_vector(solver.solution_vector_type, f) : u return ForwardEulerSolverCache( solver.rate, - create_system_vector(solver.solution_vector_type, f), - create_system_vector(solver.solution_vector_type, f), - create_system_vector(solver.solution_vector_type, f), + du, + u, + u, f.f ) end diff --git a/src/solver/time/homotopy.jl b/src/solver/time/homotopy.jl new file mode 100644 index 00000000..c7888d6d --- /dev/null +++ b/src/solver/time/homotopy.jl @@ -0,0 +1,214 @@ +""" + HomotopyPathSolver{IS, T, PFUN} + +Solve the nonlinear problem `F(u,t)=0` with given time increments `Δt`on some interval `[t_begin, t_end]` +where `t` is some pseudo-time parameter. +""" +mutable struct HomotopyPathSolver{IS} <: AbstractSolver + inner_solver::IS +end + +mutable struct HomotopyPathSolverCache{ISC, T, VT <: AbstractVector{T}} <: AbstractTimeSolverCache + inner_solver_cache::ISC + uₙ::VT + uₙ₋₁::VT + tmp::VT +end + +function setup_solver_cache(f::AbstractSemidiscreteFunction, solver::HomotopyPathSolver, t₀) + inner_solver_cache = setup_solver_cache(f, solver.inner_solver) + T = Float64 # TODO query + vtype = Vector{T} + HomotopyPathSolverCache( + inner_solver_cache, + vtype(undef, solution_size(f)), + vtype(undef, solution_size(f)), + vtype(undef, solution_size(f)), + ) +end + +function setup_solver_cache(f::AbstractSemidiscreteBlockedFunction, solver::HomotopyPathSolver, t₀) + inner_solver_cache = setup_solver_cache(f, solver.inner_solver) + T = Float64 # TODO query + vtype = Vector{T} + HomotopyPathSolverCache( + inner_solver_cache, + mortar([ + vtype(undef, solution_size(fi)) for fi ∈ blocks(f) + ]), + mortar([ + vtype(undef, solution_size(fi)) for fi ∈ blocks(f) + ]), + mortar([ + vtype(undef, solution_size(fi)) for fi ∈ blocks(f) + ]), + ) +end + +function perform_step!(f::AbstractSemidiscreteFunction, solver_cache::HomotopyPathSolverCache, t, Δt) + solver_cache.uₙ₋₁ .= solver_cache.uₙ + update_constraints!(f, solver_cache, t + Δt) + if !nlsolve!(solver_cache.uₙ, f, solver_cache.inner_solver_cache, t + Δt) # TODO remove ,,t'' here. But how? + @warn "Inner solver failed on from $t to $(t+Δt)]" + return false + end + + return true +end + +@doc raw""" + Deuflhard2004DiscreteContinuationController(Θbar, p) + +Θbar ($\overbar{\Theta}$) is the target convergence rate. + +Θk ($\Theta_0$) is the estimated convergence rate for the nonlinear solve iteration k. + +Predictor time step length: $\Delta t^0_n = \sqrt[p]{\frac{g(\overbar{\Theta})}{2\Theta_0}} \Delta t^{\textrm{last}}_{n-1}$ [Deu:2004:nmn; p. 248](@cite) + +Predictor time step length: $\Delta t^i_n = \sqrt[p]{\frac{\overbar{\Theta}}{\Theta}_k} \Delta t^{i-1}_{n-1}$ [Deu:2004:nmn; Eq. 5.24, p. 248](@cite) + +Here $g(x) = \sqrt{1+4\Theta}-1$ and $\Theta_0 \geq \Theta_{\textrm{min}}$ + +The retry criterion for the time step is $\Theta}_k > \frac{1}{2}$. +""" +Base.@kwdef struct Deuflhard2004DiscreteContinuationController + Θmin::Float64 + p::Int64 + Θreject::Float64 = 0.95 + Θbar::Float64 = 0.5 + γ::Float64 = 0.95 + qmin::Float64 = 1/5 + qmax::Float64 = 5.0 +end + +function should_accept_step(integrator::ThunderboltTimeIntegrator, cache::HomotopyPathSolverCache, controller::Deuflhard2004DiscreteContinuationController) + (; Θks) = cache.inner_solver_cache + (; Θreject) = controller + result = all(Θks .≤ Θreject) + return result +end +function reject_step!(integrator::ThunderboltTimeIntegrator, cache::HomotopyPathSolverCache, controller::Deuflhard2004DiscreteContinuationController) + # Reset solution + integrator.u .= integrator.uprev + + @inline g(x) = √(1+4x) - 1 + + # Shorten dt according to (Eq. 5.24) + (; Θks) = cache.inner_solver_cache + (; Θbar, Θreject, γ, Θmin, qmin, qmax, p) = controller + for Θk in Θks + if Θk > Θreject + q = clamp(γ * (g(Θbar)/g(Θk))^(1/p), qmin, qmax) + integrator.dt = q * integrator.dt + return + end + end +end + +function adapt_dt!(integrator::ThunderboltTimeIntegrator, cache::HomotopyPathSolverCache, controller::Deuflhard2004DiscreteContinuationController) + @inline g(x) = √(1+4x) - 1 + + # Adapt dt with a priori estimate (Eq. 5.24) + (; Θks) = cache.inner_solver_cache + (; Θbar, γ, Θmin, qmin, qmax, p) = controller + + Θ₀ = length(Θks) > 0 ? max(first(Θks), Θmin) : Θmin + q = clamp(γ * (g(Θbar)/(2Θ₀))^(1/p), qmin, qmax) + integrator.dt = q * integrator.dt +end + +Base.@kwdef struct Deuflhard2004_B_DiscreteContinuationControllerVariant + Θmin::Float64 + p::Int64 + Θreject::Float64 = 0.95 + Θbar::Float64 = 0.5 + γ::Float64 = 0.95 + qmin::Float64 = 1/5 + qmax::Float64 = 5.0 +end + +function should_accept_step(integrator::ThunderboltTimeIntegrator, cache::HomotopyPathSolverCache, controller::Deuflhard2004_B_DiscreteContinuationControllerVariant) + (; Θks) = cache.inner_solver_cache + (; Θreject) = controller + result = all(Θks .≤ Θreject) + return result +end +function reject_step!(integrator::ThunderboltTimeIntegrator, cache::HomotopyPathSolverCache, controller::Deuflhard2004_B_DiscreteContinuationControllerVariant) + # Reset solution + integrator.u .= integrator.uprev + + @inline g(x) = √(1+4x) - 1 + + # Shorten dt according to (Eq. 5.24) + (; Θks) = cache.inner_solver_cache + (; Θbar, Θreject, γ, Θmin, qmin, qmax, p) = controller + for Θk in Θks + if Θk > Θreject + q = clamp(γ * (g(Θbar)/g(Θk))^(1/p), qmin, qmax) + integrator.dt = q * integrator.dt + return + end + end +end + +function adapt_dt!(integrator::ThunderboltTimeIntegrator, cache::HomotopyPathSolverCache, controller::Deuflhard2004_B_DiscreteContinuationControllerVariant) + @inline g(x) = √(1+4x) - 1 + + # Adapt dt with a priori estimate (Eq. 5.24) + (; Θks) = cache.inner_solver_cache + (; Θbar, γ, Θmin, qmin, qmax, p) = controller + + Θ₀ = length(Θks) > 0 ? max(first(Θks), Θmin) : Θmin + q = clamp(γ * (g(Θbar)/(g(Θ₀)))^(1/p), qmin, qmax) + integrator.dt = q * integrator.dt +end + +@doc raw""" + ExperimentalDiscreteContinuationController(Θbar, p) +""" +Base.@kwdef struct ExperimentalDiscreteContinuationController + Θmin::Float64 + p::Int64 + Θreject::Float64 = 0.9 + Θbar::Float64 = 0.75 + γ::Float64 = 0.95 + qmin::Float64 = 1/5 + qmax::Float64 = 5.0 +end + +function should_accept_step(integrator::ThunderboltTimeIntegrator, cache::HomotopyPathSolverCache, controller::ExperimentalDiscreteContinuationController) + (; Θks) = cache.inner_solver_cache + (; Θreject) = controller + result = all(Θks .≤ Θreject) + return result +end +function reject_step!(integrator::ThunderboltTimeIntegrator, cache::HomotopyPathSolverCache, controller::ExperimentalDiscreteContinuationController) + # Reset solution + integrator.u .= integrator.uprev + + @inline g(x) = √(1+4x) - 1 + + # Shorten dt according to (Eq. 5.24) + (; Θks) = cache.inner_solver_cache + (; Θbar, γ, Θmin, qmin, qmax, p) = controller + Θk = maximum(Θks) + q = clamp(γ *(g(Θbar)/g(Θk))^(1/p), qmin, qmax) + integrator.dt = q * integrator.dt +end + +function adapt_dt!(integrator::ThunderboltTimeIntegrator, cache::HomotopyPathSolverCache, controller::ExperimentalDiscreteContinuationController) + @inline g(x) = √(1+4x) - 1 + + # Adapt dt with a priori estimate (Eq. 5.24) + (; Θks) = cache.inner_solver_cache + (; Θbar, γ, Θmin, qmin, qmax, p) = controller + Θ₀ = length(Θks) > 0 ? max(mean(Θks), Θmin) : Θmin + q = clamp(γ * (g(Θbar)/(2Θ₀))^(1/p), qmin, qmax) + integrator.dt = q * integrator.dt +end + + + +# default_controller(::HomotopyPathSolver, cache) = ExperimentalDiscreteContinuationController(; Θmin=1/8, p=1) +default_controller(::HomotopyPathSolver, cache) = Deuflhard2004_B_DiscreteContinuationControllerVariant(; Θmin=1/8, p=1) +DiffEqBase.isadaptive(::HomotopyPathSolver) = true diff --git a/src/solver/time/load_stepping.jl b/src/solver/time/load_stepping.jl deleted file mode 100644 index f18da7e3..00000000 --- a/src/solver/time/load_stepping.jl +++ /dev/null @@ -1,58 +0,0 @@ -""" - LoadDrivenSolver{IS, T, PFUN} - -Solve the nonlinear problem `F(u,t)=0` with given time increments `Δt`on some interval `[t_begin, t_end]` -where `t` is some pseudo-time parameter. -""" -mutable struct LoadDrivenSolver{IS} <: AbstractSolver - inner_solver::IS -end - -mutable struct LoadDrivenSolverCache{ISC, T, VT <: AbstractVector{T}} <: AbstractTimeSolverCache - inner_solver_cache::ISC - uₙ::VT - uₙ₋₁::VT - tmp::VT -end - -function setup_solver_cache(f::AbstractSemidiscreteFunction, solver::LoadDrivenSolver, t₀) - inner_solver_cache = setup_solver_cache(f, solver.inner_solver) - T = Float64 # TODO query - vtype = Vector{T} - LoadDrivenSolverCache( - inner_solver_cache, - vtype(undef, solution_size(f)), - vtype(undef, solution_size(f)), - vtype(undef, solution_size(f)), - ) -end - -function setup_solver_cache(f::AbstractSemidiscreteBlockedFunction, solver::LoadDrivenSolver, t₀) - inner_solver_cache = setup_solver_cache(f, solver.inner_solver) - T = Float64 # TODO query - vtype = Vector{T} - LoadDrivenSolverCache( - inner_solver_cache, - mortar([ - vtype(undef, solution_size(fi)) for fi ∈ blocks(f) - ]), - mortar([ - vtype(undef, solution_size(fi)) for fi ∈ blocks(f) - ]), - mortar([ - vtype(undef, solution_size(fi)) for fi ∈ blocks(f) - ]), - ) -end - -function perform_step!(f::AbstractSemidiscreteFunction, solver_cache::LoadDrivenSolverCache, t, Δt) - solver_cache.uₙ₋₁ .= solver_cache.uₙ - @info t - update_constraints!(f, solver_cache, t + Δt) - if !nlsolve!(solver_cache.uₙ, f, solver_cache.inner_solver_cache, t + Δt) # TODO remove ,,t'' here. But how? - @warn "Inner solver failed." - return false - end - - return true -end diff --git a/src/solver/time/partitioned_solver.jl b/src/solver/time/partitioned_solver.jl index 8878051c..a2862f6d 100644 --- a/src/solver/time/partitioned_solver.jl +++ b/src/solver/time/partitioned_solver.jl @@ -12,7 +12,7 @@ function perform_step!(f::PointwiseODEFunction, cache::AbstractPointwiseSolverCa end # This controls the outer loop over the ODEs -function _pointwise_step_outer_kernel!(f::PointwiseODEFunction, t::Real, Δt::Real, cache::AbstractPointwiseSolverCache, ::Vector) +function _pointwise_step_outer_kernel!(f::PointwiseODEFunction, t::Real, Δt::Real, cache::AbstractPointwiseSolverCache, ::Union{Vector,SubArray{<:Any,1,<:Vector}}) @unpack npoints = f @batch minbatch=cache.batch_size_hint for i ∈ 1:npoints @@ -31,7 +31,7 @@ Base.@kwdef struct ForwardEulerCellSolver{SolutionVectorType} <: AbstractPointwi end # Fully accelerator compatible -struct ForwardEulerCellSolverCache{duType, uType, dumType, umType, xType} <: AbstractPointwiseSolverCache +struct ForwardEulerCellSolverCache{duType, uType, uprevType, dumType, umType, xType} <: AbstractPointwiseSolverCache du::duType # These vectors hold the data uₙ::uType @@ -61,21 +61,20 @@ Adapt.@adapt_structure ForwardEulerCellSolverCache return true end -function init_cache(prob, alg::ForwardEulerCellSolver; t0) - cache = setup_solver_cache(prob.f, alg, t0) - resize(cache.uₙ₋₁, size(cache.uₙ)) - return cache -end +# function init_cache(prob, alg::ForwardEulerCellSolver; t0) +# cache = setup_solver_cache(prob.f, alg, t0) +# resize(cache.uₙ₋₁, size(cache.uₙ)) +# return cache +# end -function setup_solver_cache(f::PointwiseODEFunction, solver::ForwardEulerCellSolver, t₀) +function setup_solver_cache(f::PointwiseODEFunction, solver::ForwardEulerCellSolver, t₀; u = nothing, uprev=nothing) @unpack npoints, ode = f ndofs_local = num_states(ode) du = create_system_vector(solver.solution_vector_type, f) dumat = reshape(du, (npoints,ndofs_local)) - uₙ = create_system_vector(solver.solution_vector_type, f) - # uₙ₋₁ = create_system_vector(solver.solution_vector_type, f) - uₙ₋₁ = similar(uₙ, 0) + uₙ = u === nothing ? create_system_vector(solver.solution_vector_type, f) : u + uₙ₋₁ = uₙ uₙmat = reshape(uₙ, (npoints,ndofs_local)) xs = f.x === nothing ? nothing : Adapt.adapt(solver.solution_vector_type, f.x) @@ -90,11 +89,11 @@ Base.@kwdef struct AdaptiveForwardEulerSubstepper{T, SolutionVectorType <: Abstr end # Fully accelerator compatible -struct AdaptiveForwardEulerSubstepperCache{T, duType, uType, dumType, umType, xType} <: AbstractPointwiseSolverCache +struct AdaptiveForwardEulerSubstepperCache{T, duType, uType, uprevType, dumType, umType, xType} <: AbstractPointwiseSolverCache du::duType # These vectors hold the data uₙ::uType - uₙ₋₁::uType + uₙ₋₁::uprevType # These array view the data above to give easy indices of the form [ode index, local state index] dumat::dumType uₙmat::umType @@ -141,20 +140,20 @@ Adapt.@adapt_structure AdaptiveForwardEulerSubstepperCache end -function init_cache(prob, alg::AdaptiveForwardEulerSubstepper; t0) - cache = setup_solver_cache(prob.f, alg, t0) - resize(cache.uₙ₋₁, size(cache.uₙ)) - return cache -end +# function init_cache(prob, alg::AdaptiveForwardEulerSubstepper; t0) +# cache = setup_solver_cache(prob.f, alg, t0) +# resize(cache.uₙ₋₁, size(cache.uₙ)) +# return cache +# end -function setup_solver_cache(f::PointwiseODEFunction, solver::AdaptiveForwardEulerSubstepper, t₀) +function setup_solver_cache(f::PointwiseODEFunction, solver::AdaptiveForwardEulerSubstepper, t₀; u = nothing, uprev=nothing) @unpack npoints, ode = f ndofs_local = num_states(ode) du = create_system_vector(solver.solution_vector_type, f) dumat = reshape(du, (npoints,ndofs_local)) - uₙ = create_system_vector(solver.solution_vector_type, f) - uₙ₋₁ = similar(uₙ, 0) + uₙ = u === nothing ? create_system_vector(solver.solution_vector_type, f) : u + uₙ₋₁ = uₙ uₙmat = reshape(uₙ, (npoints,ndofs_local)) xs = if f.x === nothing nothing diff --git a/src/solver/time/rtc.jl b/src/solver/time/rtc.jl index eb2e6752..a6f2d8ac 100644 --- a/src/solver/time/rtc.jl +++ b/src/solver/time/rtc.jl @@ -84,21 +84,21 @@ end return nothing # Do nothing end -# Dispatch for outer construction -function OS.init_cache(prob::OS.OperatorSplittingProblem, alg::ReactionTangentController; u0, kwargs...) - @unpack f = prob - @assert f isa GenericSplitFunction +# # Dispatch for outer construction +# function OS.init_cache(prob::OS.OperatorSplittingProblem, alg::ReactionTangentController; u0, kwargs...) +# @unpack f = prob +# @assert f isa GenericSplitFunction - # Build inner integrator - return OS.construct_inner_cache(f, alg; uparent=u0, u0, kwargs...) -end +# # Build inner integrator +# return OS.construct_inner_cache(f, alg; uparent=u0, u0, kwargs...) +# end -# Dispatch for recursive construction -function OS.construct_inner_cache(f::OS.AbstractOperatorSplitFunction, alg::ReactionTangentController; u0, kwargs...) - ltg_cache = OS.construct_inner_cache(f, alg.ltg; u0, kwargs...) - return ReactionTangentControllerCache(ltg_cache, zero(eltype(u0))) -end +# # Dispatch for recursive construction +# function OS.construct_inner_cache(f::OS.AbstractOperatorSplitFunction, alg::ReactionTangentController; u0, kwargs...) +# ltg_cache = OS.construct_inner_cache(f, alg.ltg; u0, kwargs...) +# return ReactionTangentControllerCache(ltg_cache, zero(eltype(u0))) +# end -function OS.build_subintegrators_recursive(f::GenericSplitFunction, synchronizers::Tuple, p::Tuple, cache::ReactionTangentControllerCache, t, dt, dof_range, uparent, tstops, _tstops, saveat, _saveat) - OS.build_subintegrators_recursive(f, synchronizers, p, cache.ltg_cache, t, dt, dof_range, uparent, tstops, _tstops, saveat, _saveat) -end +# function OS.build_subintegrators_recursive(f::GenericSplitFunction, synchronizers::Tuple, p::Tuple, cache::ReactionTangentControllerCache, t, dt, dof_range, uparent, tstops, _tstops, saveat, _saveat) +# OS.build_subintegrators_recursive(f, synchronizers, p, cache.ltg_cache, t, dt, dof_range, uparent, tstops, _tstops, saveat, _saveat) +# end diff --git a/src/solver/time/time_integrator.jl b/src/solver/time/time_integrator.jl index 72194875..afce42b1 100644 --- a/src/solver/time/time_integrator.jl +++ b/src/solver/time/time_integrator.jl @@ -1,8 +1,48 @@ +mutable struct IntegratorStats + naccept::Int64 + nreject::Int64 + # TODO inner solver stats +end + +IntegratorStats() = IntegratorStats(0,0) + +Base.@kwdef struct IntegratorOptions{tType, #=msgType,=# F1, F2, F3, F4, F5, SType, tstopsType, saveatType, discType, tcache, savecache, disccache} + dtmin::tType = eps(tType) + dtmax::tType = Inf + failfactor::tType = 4.0 + verbose::Bool = false + adaptive::Bool = false # Redundant with the dispatch on SciMLBase.isadaptive below (alg adaptive + controller not nothing) + maxiters::Int = 1000000 + # OrdinaryDiffEqCore compat + force_dtmin::Bool = false + progress::Bool = false # FIXME + # progress_steps::Int = 0 + # progress_name::String = "" + # progress_message::msgType = "" + # progress_id::Symbol = :msg + internalnorm::F1 = DiffEqBase.ODE_DEFAULT_NORM + internalopnorm::F2 = LinearAlgebra.opnorm + isoutofdomain::F3 = DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN + unstable_check::F4 = DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK + save_idxs::SType = nothing + tstops::tstopsType = nothing + saveat::saveatType = nothing + save_end::Bool = true + d_discontinuities::discType = nothing + tstops_cache::tcache = () + saveat_cache::savecache = () + d_discontinuities_cache::disccache = () + callback::F5 + dense::Bool = false + save_on::Bool = false +end + """ Internal helper to integrate a single inner operator over some time interval. """ mutable struct ThunderboltTimeIntegrator{ + algType, fType, uType, uprevType, @@ -10,13 +50,13 @@ mutable struct ThunderboltTimeIntegrator{ tType, pType, cacheType, + callbackcacheType, syncType, solType, - heapType, - tstopsType, - saveatType, -} <: DiffEqBase.SciMLBase.DEIntegrator{#=alg_type=#Nothing, true, uType, tType} # FIXME alg - f::fType # Right hand side + controllerType, +} <: SciMLBase.DEIntegrator{algType, true, uType, tType} + alg::algType + const f::fType # Right hand side u::uType # Current local solution uprev::uprevType indexset::indexSetType @@ -24,118 +64,389 @@ mutable struct ThunderboltTimeIntegrator{ t::tType tprev::tType dt::tType + tdir::tType cache::cacheType + callback_cache::callbackcacheType synchronizer::syncType sol::solType - dtchangeable::Bool - tstops::heapType - _tstops::tstopsType # argument to __init used as default argument to reinit! - saveat::heapType - _saveat::saveatType # argument to __init used as default argument to reinit! + const dtchangeable::Bool + controller::controllerType + stats::IntegratorStats + const opts::IntegratorOptions{tType} + # OrdinaryDiffEqCore compat + force_stepfail::Bool # This is a flag for the inner solver to communicate that it failed + iter::Int64 # TODO move into stats + u_modified::Bool + isout::Bool + reeval_fsal::Bool + last_step_failed::Bool + saveiter::Int + saveiter_dense::Int + just_hit_tstop::Bool end -# TimeChoiceIterator API -@inline function DiffEqBase.get_tmp_cache(integrator::ThunderboltTimeIntegrator) +# ----------------------------------- SciMLBase.jl Interface ------------------------------------ +SciMLBase.has_stats(::ThunderboltTimeIntegrator) = true + +SciMLBase.has_tstop(integrator::ThunderboltTimeIntegrator) = !isempty(integrator.opts.tstops) +SciMLBase.first_tstop(integrator::ThunderboltTimeIntegrator) = first(integrator.opts.tstops) +SciMLBase.pop_tstop!(integrator::ThunderboltTimeIntegrator) = pop!(integrator.opts.tstops) + +@inline function SciMLBase.get_tmp_cache(integrator::ThunderboltTimeIntegrator) return (integrator.cache.tmp,) end -@inline function DiffEqBase.get_tmp_cache(integrator::ThunderboltTimeIntegrator, alg::AbstractSolver, cache::AbstractTimeSolverCache) +@inline function SciMLBase.get_tmp_cache(integrator::ThunderboltTimeIntegrator, alg::AbstractSolver, cache::AbstractTimeSolverCache) return (cache.tmp,) end +function SciMLBase.terminate!(integrator::ThunderboltTimeIntegrator, retcode = ReturnCode.Terminated) + integrator.sol = SciMLBase.solution_new_retcode(integrator.sol, retcode) + integrator.opts.tstops.valtree = typeof(integrator.opts.tstops.valtree)() +end + +# @inline function SciMLBase.get_du(integrator::ThunderboltTimeIntegrator) +# end + +@inline SciMLBase.get_proposed_dt(integrator::ThunderboltTimeIntegrator) = integrator.dt + +@inline function SciMLBase.u_modified!(integrator::ThunderboltTimeIntegrator, bool::Bool) + integrator.u_modified = bool +end + +SciMLBase.get_sol(integrator::ThunderboltTimeIntegrator) = integrator.sol + # Interpolation # TODO via https://github.com/SciML/SciMLBase.jl/blob/master/src/interpolation.jl function (integrator::ThunderboltTimeIntegrator)(tmp, t) OS.linear_interpolation!(tmp, t, integrator.uprev, integrator.u, integrator.t-integrator.dt, integrator.t) end -function DiffEqBase.step!(integrator::ThunderboltTimeIntegrator, dt, stop_at_tdt = false) - (; tstops) = integrator - dt <= zero(dt) && error("dt must be positive") - tnext = integrator.t + dt - while !OS.reached_tstop(integrator, tnext, stop_at_tdt) - # Solve inner problem - perform_step!(integrator, integrator.cache) || error("Time integration failed at t=$(integrator.t).") # remove this - # Update integrator - integrator.tprev = integrator.t - integrator.t = integrator.t + integrator.dt +function SciMLBase.isadaptive(integrator::ThunderboltTimeIntegrator) + integrator.controller === nothing && return false + if !SciMLBase.isadaptive(integrator.alg) + error("Algorithm $(integrator.alg) is not adaptive, but the integrator is trying to adapt. Aborting.") end + return true +end + +function SciMLBase.last_step_failed(integrator::ThunderboltTimeIntegrator) + integrator.last_step_failed && !integrator.opts.adaptive +end + +SciMLBase.postamble!(integrator::ThunderboltTimeIntegrator) = _postamble!(integrator) + +function SciMLBase.savevalues!(integrator::ThunderboltTimeIntegrator, force_save = false, reduce_size = true) + OrdinaryDiffEqCore._savevalues!(integrator, force_save, reduce_size) +end + +# ----------------------------------- DiffEqBase.jl Interface ------------------------------------ +DiffEqBase.get_tstops(integ::ThunderboltTimeIntegrator) = integ.opts.tstops +DiffEqBase.get_tstops_array(integ::ThunderboltTimeIntegrator) = get_tstops(integ).valtree +DiffEqBase.get_tstops_max(integ::ThunderboltTimeIntegrator) = maximum(get_tstops_array(integ)) + + +# ----------------------------------- OrdinaryDiffEqCore compat ---------------------------------- +function _postamble!(integrator) + DiffEqBase.finalize!(integrator.opts.callback, integrator.u, integrator.t, integrator) + OrdinaryDiffEqCore.solution_endpoint_match_cur_integrator!(integrator) + fix_solution_buffer_sizes!(integrator, integrator.sol) + finalize_integration_monitor(integrator) +end + +OrdinaryDiffEqCore.alg_extrapolates(alg::AbstractSolver) = false +OrdinaryDiffEqCore.alg_extrapolates(::Nothing) = false # HOTFIX REMOVE THIS - while !isempty(tstops) && OS.reached_tstop(integrator, first(tstops)) - pop!(tstops) +# --------------------------- New Interface Stuff (to be upstreamed) --------------------------------- + +# Solution looping interface +function should_accept_step(integrator::ThunderboltTimeIntegrator) + if integrator.force_stepfail || integrator.isout + return false end + return should_accept_step(integrator, integrator.cache, integrator.controller) end -function OS.synchronize_subintegrator!(subintegrator::ThunderboltTimeIntegrator, integrator::OS.OperatorSplittingIntegrator) - @unpack t, dt = integrator - subintegrator.t = t - subintegrator.dt = dt +function should_accept_step(integrator::ThunderboltTimeIntegrator, cache, ::Nothing) + return !(integrator.force_stepfail) end -# TODO some operator splitting methods require to go back in time, so we need to figure out what the best way is. -OS.tdir(::ThunderboltTimeIntegrator) = 1 -# TODO Any -> cache supertype -function OS.advance_solution_to!(integrator::ThunderboltTimeIntegrator, cache::Any, tend; kwargs...) - @unpack f, t = integrator - dt = tend-t - dt ≈ 0.0 || DiffEqBase.step!(integrator, dt, true) +function accept_step!(integrator::ThunderboltTimeIntegrator) + OrdinaryDiffEqCore.increment_accept!(integrator.stats) + accept_step!(integrator, integrator.cache, integrator.controller) end -@inline function OS.prepare_local_step!(uparent, subintegrator::ThunderboltTimeIntegrator) - # Copy solution into subproblem - uparentview = @view uparent[subintegrator.indexset] - subintegrator.u .= uparentview - # Mark previous solution, if necessary - if subintegrator.uprev !== nothing && length(subintegrator.uprev) > 0 - subintegrator.uprev .= subintegrator.u +function accept_step!(integrator::ThunderboltTimeIntegrator, cache, controller) + store_previous_info!(integrator) +end + +function store_previous_info!(integrator::ThunderboltTimeIntegrator) + if length(integrator.uprev) > 0 # Integrator can rollback + update_uprev!(integrator) end - syncronize_parameters!(subintegrator, subintegrator.f, subintegrator.synchronizer) end -@inline function OS.finalize_local_step!(uparent, subintegrator::ThunderboltTimeIntegrator) - # Copy solution out of subproblem - # - uparentview = @view uparent[subintegrator.indexset] - uparentview .= subintegrator.u + +function step_header!(integrator::ThunderboltTimeIntegrator) + # Accept or reject the step + if !is_first_iteration(integrator) + if should_accept_step(integrator) + accept_step!(integrator) + else # Step should be rejected and hence repeated + reject_step!(integrator) + end + elseif integrator.u_modified # && integrator.iter == 0 + update_uprev!(integrator) + end + + # Before stepping we might need to adjust the dt + increment_iteration(integrator) + OrdinaryDiffEqCore.choose_algorithm!(integrator, integrator.cache) + OrdinaryDiffEqCore.fix_dt_at_bounds!(integrator) + OrdinaryDiffEqCore.modify_dt_for_tstops!(integrator) + integrator.force_stepfail = false end -# Glue code -function OS.build_subintegrators_recursive(f, synchronizer, p::Any, cache::AbstractTimeSolverCache, t, dt, dof_range, uparent, tstops, _tstops, saveat, _saveat) - integrator = Thunderbolt.ThunderboltTimeIntegrator( - f, - cache.uₙ, - cache.uₙ₋₁, - dof_range, - p, - t, - t, - dt, - cache, - synchronizer, - nothing, # FIXME sol - true, #dtchangeable - tstops, - _tstops, - saveat, - _saveat, + +function update_uprev!(integrator::ThunderboltTimeIntegrator) + # # OrdinaryDiffEqCore.update_uprev!(integrator) # FIXME recover + # if alg_extrapolates(integrator.alg) + # if isinplace(integrator.sol.prob) + # SciMLBase.recursivecopy!(integrator.uprev2, integrator.uprev) + # else + # integrator.uprev2 = integrator.uprev + # end + # end + # if isinplace(integrator.sol.prob) # This should be dispatched in the integrator directly + SciMLBase.recursivecopy!(integrator.uprev, integrator.u) + if integrator.alg isa OrdinaryDiffEqCore.DAEAlgorithm + SciMLBase.recursivecopy!(integrator.duprev, integrator.du) + end + # else + # integrator.uprev = integrator.u + # if integrator.alg isa DAEAlgorithm + # integrator.duprev = integrator.du + # end + # end + nothing +end + +function footer_reset_flags!(integrator) + integrator.u_modified = false +end + +function fix_solution_buffer_sizes!(integrator, sol) + resize!(integrator.sol.t, integrator.saveiter) + resize!(integrator.sol.u, integrator.saveiter) + if !(integrator.sol isa SciMLBase.DAESolution) + resize!(integrator.sol.k, integrator.saveiter_dense) + end +end + +function setup_validity_flags!(integrator, t_next) + integrator.isout = integrator.opts.isoutofdomain(integrator.u, integrator.p, t_next) +end + +function step_footer!(integrator::ThunderboltTimeIntegrator) + ttmp = integrator.t + integrator.tdir * integrator.dt + + footer_reset_flags!(integrator) + setup_validity_flags!(integrator, ttmp) + + if should_accept_step(integrator) + integrator.last_step_failed = false + integrator.tprev = integrator.t + integrator.t = OrdinaryDiffEqCore.fixed_t_for_floatingpoint_error!(integrator, ttmp) + OrdinaryDiffEqCore.handle_callbacks!(integrator) + adapt_dt!(integrator) # Noop for non-adaptive algorithms + elseif integrator.force_stepfail + if SciMLBase.isadaptive(integrator) + OrdinaryDiffEqCore.post_newton_controller!(integrator, integrator.alg) + # elseif integrator.dtchangeable # Non-adaptive but can change dt + # integrator.dt *= integrator.opts.failfactor + elseif integrator.last_step_failed + return + end + integrator.last_step_failed = true + end + + integration_monitor_step(integrator) + + nothing +end + +notify_integrator_hit_tstop!(integrator) = integrator.just_hit_tstop = true + +is_first_iteration(integrator) = integrator.iter == 0 +increment_iteration(integrator) = integrator.iter += 1 + +function integration_monitor_step(integrator) + if integrator.opts.progress && integrator.iter % integrator.opts.progress_steps == 0 + log_step!(integrator.opts.progress_name, integrator.opts.progress_id, + integrator.opts.progress_message, integrator.dt, integrator.u, + integrator.p, integrator.t, integrator.sol.prob.tspan) + end +end + +function finalize_integration_monitor(integrator) + if integrator.opts.progress + @logmsg(LogLevel(-1), + integrator.opts.progress_name, + _id=integrator.opts.progress_id, + message=integrator.opts.progress_message(integrator.dt, integrator.u, + integrator.p, integrator.t), + progress="done") + end +end + +notify_integrator_hit_tstop!(integrator::ThunderboltTimeIntegrator) = nothing + +# TODO upstream into OrdinaryDiffEqCore +function compute_rate_prototype(prob) + u = prob.u0 + + tType = eltype(prob.tspan) + tTypeNoUnits = typeof(one(tType)) + + isdae = ( + prob.f.mass_matrix != I && + !(prob.f.mass_matrix isa Tuple) && + ArrayInterface.issingular(prob.f.mass_matrix) ) - # This makes sure that the parameters are set correctly for the first time step - syncronize_parameters!(integrator, f, synchronizer) - return integrator + if !isdae && isinplace(prob) && u isa AbstractArray && eltype(u) <: Number && + uBottomEltypeNoUnits == uBottomEltype && tType == tTypeNoUnits # Could this be more efficient for other arrays? + return SciMLBase.recursivecopy(u) + else + _compute_rate_prototype_mass_matrix_form(prob) + end end -function OS.construct_inner_cache(f, alg::AbstractSolver; u0, t0, kwargs...) - return Thunderbolt.setup_solver_cache(f, alg, t0) +function compute_rate_prototype(prob::SciMLBase.DiscreteProblem) + _compute_rate_prototype_mass_matrix_form(prob) end -OS.recursive_null_parameters(stuff::Union{AbstractSemidiscreteProblem, AbstractSemidiscreteFunction}) = OS.DiffEqBase.NullParameters() -syncronize_parameters!(integ, f, ::OS.NoExternalSynchronization) = nothing +function _compute_rate_prototype_mass_matrix_form(prob) + u = prob.u0 + + tType = eltype(prob.tspan) + tTypeNoUnits = typeof(one(tType)) + uBottomEltype = OrdinaryDiffEqCore.recursive_bottom_eltype(u) + uBottomEltypeNoUnits = OrdinaryDiffEqCore.recursive_unitless_bottom_eltype(u) + if (uBottomEltypeNoUnits == uBottomEltype && tType == tTypeNoUnits) || eltype(u) <: Enum + return u + else # has units! + return u / oneunit(tType) + end +end +function compute_rate_prototype(prob::SciMLBase.DAEProblem) + return prob.du0 +end + +function compute_rate_prototype(prob::AbstractSemidiscreteProblem) + _compute_rate_prototype_mass_matrix_form(prob) +end + +# Slightly modified functions are here +function OrdinaryDiffEqCore.modify_dt_for_tstops!(integrator::ThunderboltTimeIntegrator) + if SciMLBase.has_tstop(integrator) + tdir_t = integrator.tdir * integrator.t + tdir_tstop = SciMLBase.first_tstop(integrator) + if integrator.opts.adaptive + integrator.dt = integrator.tdir * + min(abs(integrator.dt), abs(tdir_tstop - tdir_t)) # step! to the end + elseif integrator.dtchangeable + dtpropose = SciMLBase.get_proposed_dt(integrator) + if iszero(dtpropose) + integrator.dt = integrator.tdir * abs(tdir_tstop - tdir_t) + elseif !integrator.force_stepfail + # always try to step! with dtcache, but lower if a tstop + # however, if force_stepfail then don't set to dtcache, and no tstop worry + integrator.dt = integrator.tdir * + min(abs(dtpropose), abs(tdir_tstop - tdir_t)) # step! to the end + end + end + end +end + +function OrdinaryDiffEqCore.handle_tstop!(integrator::ThunderboltTimeIntegrator) + if SciMLBase.has_tstop(integrator) + tdir_t = integrator.tdir * integrator.t + tdir_tstop = SciMLBase.first_tstop(integrator) + if tdir_t == tdir_tstop + while tdir_t == tdir_tstop #remove all redundant copies + res = SciMLBase.pop_tstop!(integrator) + SciMLBase.has_tstop(integrator) ? (tdir_tstop = SciMLBase.first_tstop(integrator)) : break + end + notify_integrator_hit_tstop!(integrator) + elseif tdir_t > tdir_tstop + if !integrator.dtchangeable + SciMLBase.change_t_via_interpolation!(integrator, + integrator.tdir * + SciMLBase.pop_tstop!(integrator), Val{true}) + notify_integrator_hit_tstop!(integrator) + else + error("Something went wrong. Integrator stepped past tstops but the algorithm was dtchangeable. Please report this error.") + end + end + end + return nothing +end + +@inline function OrdinaryDiffEqCore.step!(integrator::ThunderboltTimeIntegrator) + @inbounds step_header!(integrator) + if OrdinaryDiffEqCore.check_error!(integrator) != SciMLBase.ReturnCode.Success + return + end + @inbounds OrdinaryDiffEqCore.perform_step!(integrator, integrator.cache) + @inbounds step_footer!(integrator) + @inbounds while !should_accept_step(integrator) + step_header!(integrator) + if OrdinaryDiffEqCore.check_error!(integrator) != SciMLBase.ReturnCode.Success + return + end + OrdinaryDiffEqCore.perform_step!(integrator, integrator.cache) + step_footer!(integrator) + end + @inbounds OrdinaryDiffEqCore.handle_tstop!(integrator) +end + +# Controller interface +function reject_step!(integrator::ThunderboltTimeIntegrator) + OrdinaryDiffEqCore.increment_reject!(integrator.stats) + reject_step!(integrator, integrator.cache, integrator.controller) +end +function reject_step!(integrator::ThunderboltTimeIntegrator, cache, controller) + integrator.u .= integrator.uprev +end +function reject_step!(integrator::ThunderboltTimeIntegrator, cache, ::Nothing) + if length(integrator.uprev) == 0 + error("Cannot roll back integrator. Aborting time integration step at $(integrator.t).") + end +end + +adapt_dt!(integrator::ThunderboltTimeIntegrator) = adapt_dt!(integrator, integrator.cache, integrator.controller) +function adapt_dt!(integrator::ThunderboltTimeIntegrator, cache, controller) + error("Step size control not implemented for $(alg).") +end +adapt_dt!(integrator::ThunderboltTimeIntegrator, cache, ::Nothing) = nothing -function DiffEqBase.__init( +function SciMLBase.__init( prob::AbstractSemidiscreteProblem, alg::AbstractSolver, args...; dt, + saveat = (), tstops = (), - saveat = nothing, + d_discontinuities = (), + ts_init = (), + ks_init = (), + save_end = nothing, save_everystep = false, + save_idxs = nothing, callback = nothing, advance_to_tstop = false, - save_func = (u, t) -> copy(u), # custom kwarg - dtchangeable = true, # custom kwarg + adaptive = false, + verbose = false, + alias_u0 = true, + # alias_du0 = false, + controller = nothing, + maxiters = 1000000, + dense = save_everystep && + !(alg isa DAEAlgorithm) && !(prob isa DiscreteProblem) && + isempty(saveat), syncronizer = OS.NoExternalSynchronization(), # custom kwarg kwargs..., ) @@ -144,21 +455,77 @@ function DiffEqBase.__init( dt > zero(dt) || error("dt must be positive") _dt = dt - dt = tf > t0 ? dt : -dt + tdir = tf > t0 ? 1.0 : -1.0 + tType = typeof(dt) - _tstops = tstops - _saveat = saveat - tstops, saveat = OS.tstops_and_saveat_heaps(t0, tf, tstops, saveat) + if tstops isa AbstractArray || tstops isa Tuple || tstops isa Number + _tstops = nothing + else + _tstops = tstops + tstops = () + end - sol = DiffEqBase.build_solution(prob, alg, typeof(t0)[], typeof(save_func(u0, t0))[]) + # Setup tstop logic + tstops_internal = OrdinaryDiffEqCore.initialize_tstops(tType, tstops, d_discontinuities, prob.tspan) + saveat_internal = OrdinaryDiffEqCore.initialize_saveat(tType, saveat, prob.tspan) + d_discontinuities_internal = OrdinaryDiffEqCore.initialize_d_discontinuities(tType, d_discontinuities, prob.tspan) - callback = DiffEqBase.CallbackSet(callback) + save_end = save_end === nothing ? save_everystep || isempty(saveat) || saveat isa Number || tf in saveat : save_end - cache = init_cache(prob, alg; t0) + # Setup solution buffers + u = setup_u(prob, alg, alias_u0) + uType = typeof(u) + uBottomEltype = OrdinaryDiffEqCore.recursive_bottom_eltype(u) + uBottomEltypeNoUnits = OrdinaryDiffEqCore.recursive_unitless_bottom_eltype(u) - cache.uₙ .= u0 + # Setup callbacks + callbacks_internal = SciMLBase.CallbackSet(callback) + max_len_cb = DiffEqBase.max_vector_callback_length_int(callbacks_internal) + if max_len_cb !== nothing + uBottomEltypeReal = real(uBottomEltype) + if SciMLBase.isinplace(prob) + callback_cache = SciMLBase.CallbackCache(u, max_len_cb, uBottomEltypeReal, + uBottomEltypeReal) + else + callback_cache = SciMLBase.CallbackCache(max_len_cb, uBottomEltypeReal, + uBottomEltypeReal) + end + else + callback_cache = nothing + end + # Setup solution + save_idxs, saved_subsystem = SciMLBase.get_save_idxs_and_saved_subsystem(prob, save_idxs) + + rate_prototype = compute_rate_prototype(prob) + rateType = typeof(rate_prototype) + if save_idxs === nothing + ksEltype = Vector{rateType} + else + ks_prototype = rate_prototype[save_idxs] + ksEltype = Vector{typeof(ks_prototype)} + end + + ts = ts_init === () ? tType[] : convert(Vector{tType}, ts_init) + ks = ks_init === () ? ksEltype[] : convert(Vector{ksEltype}, ks_init) + + sol = SciMLBase.build_solution( + prob, alg, ts, uType[], + dense = dense, k = ks, saved_subsystem = saved_subsystem, + calculate_error = false + ) + + # Setup algorithm cache + cache = init_cache(prob, alg; dt = dt, u = u) + + # Setup controller + if controller === nothing && adaptive + controller = default_controller(alg, cache) + end + + # Setup the actual integrator object integrator = ThunderboltTimeIntegrator( + alg, f, cache.uₙ, cache.uₙ₋₁, @@ -167,45 +534,295 @@ function DiffEqBase.__init( t0, t0, dt, + tdir, cache, + callback_cache, syncronizer, sol, true, - tstops, - _tstops, - saveat, - _saveat, + adaptive ? controller : nothing, + IntegratorStats(), + IntegratorOptions( + dtmin = eps(tType), + dtmax = tType(tf-t0), + verbose = verbose, + adaptive = adaptive, + maxiters = maxiters, + callback = callbacks_internal, + save_end = save_end, + tstops = tstops_internal, + saveat = saveat_internal, + d_discontinuities = d_discontinuities_internal, + tstops_cache = tstops, + saveat_cache = saveat, + d_discontinuities_cache = d_discontinuities, + ), + false, + 0, + false, + false, + false, + false, + 0, + 0, + false, ) - # DiffEqBase.initialize!(callback, u0, t0, integrator) # Do I need this? + OrdinaryDiffEqCore.initialize_callbacks!(integrator) + DiffEqBase.initialize!(integrator, integrator.cache) + # FIXME + cache.uₙ .= u + cache.uₙ₋₁ .= u + + if _tstops !== nothing + tstops = _tstops(parameter_values(integrator), prob.tspan) + for tstop in tstops + add_tstop!(integrator, tstop) + end + end + + OrdinaryDiffEqCore.handle_dt!(integrator) + return integrator end -function DiffEqBase.solve!(integrator::ThunderboltTimeIntegrator) - while !isempty(integrator.tstops) - OS.advance_solution_to!(integrator, integrator.cache, first(integrator.tstops)) +# TODO what exactly should I do here :) +DiffEqBase.initialize!(integrator::ThunderboltTimeIntegrator, ::AbstractTimeSolverCache) = nothing + +function SciMLBase.solve!(integrator::ThunderboltTimeIntegrator) + @inbounds while SciMLBase.has_tstop(integrator) + while integrator.tdir * integrator.t < SciMLBase.SciMLBase.first_tstop(integrator) + step_header!(integrator) + if SciMLBase.check_error!(integrator) != SciMLBase.ReturnCode.Success + return integrator.sol + end + OrdinaryDiffEqCore.perform_step!(integrator, integrator.cache) + step_footer!(integrator) + if !SciMLBase.has_tstop(integrator) + break + end + end + OrdinaryDiffEqCore.handle_tstop!(integrator) + end + OrdinaryDiffEqCore.postamble!(integrator) + if integrator.sol.retcode != SciMLBase.ReturnCode.Default + return integrator.sol end - # DiffEqBase.finalize!(integrator.callback, integrator.u, integrator.t, integrator) - integrator.sol = DiffEqBase.solution_new_retcode(integrator.sol, DiffEqBase.ReturnCode.Success) - return integrator.sol + return integrator.sol = SciMLBase.solution_new_retcode(integrator.sol, SciMLBase.ReturnCode.Success) end -# Some common getters -@inline get_parent_index(integ::ThunderboltTimeIntegrator, local_idx::Int) = get_parent_index(integ, local_idx, integ.indexset) -@inline get_parent_index(integ::ThunderboltTimeIntegrator, local_idx::Int, indexset::AbstractVector) = indexset[local_idx] -@inline get_parent_index(integ::ThunderboltTimeIntegrator, local_idx::Int, range::AbstractUnitRange) = first(range) + local_idx - 1 -@inline get_parent_index(integ::ThunderboltTimeIntegrator, local_idx::Int, range::StepRange) = first(range) + range.step*(local_idx - 1) - # Compat with OrdinaryDiffEq -function perform_step!(integ::ThunderboltTimeIntegrator, cache::AbstractTimeSolverCache) +function OrdinaryDiffEqCore.perform_step!(integ::ThunderboltTimeIntegrator, cache::AbstractTimeSolverCache) + integ.opts.verbose && @info "Time integration on [$(integ.t), $(integ.t+integ.dt)] (Δt=$(integ.dt))" if !perform_step!(integ.f, cache, integ.t, integ.dt) - if integ.sol !== nothing # FIXME - integ.sol = DiffEqBase.solution_new_retcode(integ.sol, DiffEqBase.ReturnCode.Failure) + integ.force_stepfail = true + end + return nothing +end + +function init_cache(prob, alg; dt, kwargs...) + return setup_solver_cache(prob.f, alg, prob.tspan[1]) +end + +function setup_u(prob::AbstractSemidiscreteProblem, solver, alias_u0) + if alias_u0 + return prob.u0 + else + return SciMLBase.recursivecopy(prob.u0) + end +end + +OrdinaryDiffEqCore.choose_algorithm!(integrator, cache::AbstractTimeSolverCache) = nothing + + +# -------------------------- Operator Splitting Compat ------------------------ +function OS.synchronize_subintegrator!(subintegrator::ThunderboltTimeIntegrator, integrator::OS.OperatorSplittingIntegrator) + @unpack t, dt = integrator + subintegrator.t = t + subintegrator.dt = dt +end +# TODO some operator splitting methods require to go back in time, so we need to figure out what the best way is. +OS.tdir(integ::ThunderboltTimeIntegrator) = integ.tdir + +function OS.advance_solution_to!(integrator::ThunderboltTimeIntegrator, cache::AbstractTimeSolverCache, tend; kwargs...) + # @unpack f, t = integrator + # dt = tend-t + # dt ≈ 0.0 || SciMLBase.step!(integrator, dt, true) + @inbounds while integrator.tdir * integrator.t < tend + integrator.dt ≈ 0.0 && error("???") + @info integrator.t, integrator.dt, tend + step_header!(integrator) + if OrdinaryDiffEqCore.check_error!(integrator) != SciMLBase.ReturnCode.Success + return end - return false + OrdinaryDiffEqCore.perform_step!(integrator, integrator.cache) + step_footer!(integrator) end - return true end +@inline function OS.prepare_local_step!(uparent, subintegrator::ThunderboltTimeIntegrator) + # Copy solution into subproblem + uparentview = @view uparent[subintegrator.indexset] + subintegrator.u .= uparentview + # Mark previous solution, if necessary + if subintegrator.uprev !== nothing && length(subintegrator.uprev) > 0 + subintegrator.uprev .= subintegrator.u + end + syncronize_parameters!(subintegrator, subintegrator.f, subintegrator.synchronizer) +end +@inline function OS.finalize_local_step!(uparent, subintegrator::ThunderboltTimeIntegrator) + # Copy solution out of subproblem + # + uparentview = @view uparent[subintegrator.indexset] + uparentview .= subintegrator.u +end + +struct DummyODESolution <: SciMLBase.AbstractODESolution{Float64, 2, Vector{Float64}} + retcode::SciMLBase.ReturnCode.T +end +DummyODESolution() = DummyODESolution(SciMLBase.ReturnCode.Default) +function SciMLBase.solution_new_retcode(sol::DummyODESolution, retcode) + return DiffEqBase.@set sol.retcode = retcode +end +fix_solution_buffer_sizes!(integrator, sol::DummyODESolution) = nothing + +OS.recursive_null_parameters(stuff::Union{AbstractSemidiscreteProblem, AbstractSemidiscreteFunction}) = SciMLBase.NullParameters() +syncronize_parameters!(integ, f, ::OS.NoExternalSynchronization) = nothing + +function OS.build_subintegrators_with_cache( + f::AbstractSemidiscreteFunction, alg::AbstractSolver, p, + uprevouter::AbstractVector, uouter::AbstractVector, + solution_indices, + t0, dt, tf, + tstops, saveat, d_discontinuities, callback, + adaptive, verbose, + save_end = false, + controller = nothing, +) + uprev = @view uprevouter[solution_indices] + u = @view uouter[solution_indices] + + dt > zero(dt) || error("dt must be positive") + _dt = dt + tdir = tf > t0 ? 1.0 : -1.0 + tType = typeof(dt) + + if tstops isa AbstractArray || tstops isa Tuple || tstops isa Number + _tstops = nothing + else + _tstops = tstops + tstops = () + end + + # Setup tstop logic + tstops_internal = OrdinaryDiffEqCore.initialize_tstops(tType, tstops, d_discontinuities, (t0, tf)) + saveat_internal = OrdinaryDiffEqCore.initialize_saveat(tType, saveat, (t0, tf)) + d_discontinuities_internal = OrdinaryDiffEqCore.initialize_d_discontinuities(tType, d_discontinuities, (t0, tf)) + + cache = setup_solver_cache(f, alg, t0; uprev=uprev, u=u) + + # Setup solution buffers + uType = typeof(u) + uBottomEltype = OrdinaryDiffEqCore.recursive_bottom_eltype(u) + uBottomEltypeNoUnits = OrdinaryDiffEqCore.recursive_unitless_bottom_eltype(u) + + # Setup callbacks + callbacks_internal = SciMLBase.CallbackSet(callback) + max_len_cb = DiffEqBase.max_vector_callback_length_int(callbacks_internal) + if max_len_cb !== nothing + uBottomEltypeReal = real(uBottomEltype) + # if SciMLBase.isinplace(prob) + # callback_cache = SciMLBase.CallbackCache(u, max_len_cb, uBottomEltypeReal, + # uBottomEltypeReal) + # else + callback_cache = SciMLBase.CallbackCache(max_len_cb, uBottomEltypeReal, + uBottomEltypeReal) + # end + else + callback_cache = nothing + end + + # # Setup solution + # save_idxs, saved_subsystem = SciMLBase.get_save_idxs_and_saved_subsystem(prob, save_idxs) + + # rate_prototype = compute_rate_prototype(prob) + # rateType = typeof(rate_prototype) + # if save_idxs === nothing + # ksEltype = Vector{rateType} + # else + # ks_prototype = rate_prototype[save_idxs] + # ksEltype = Vector{typeof(ks_prototype)} + # end + + ts = tType[] + ks = uType[] + + # sol = SciMLBase.build_solution( + # prob, alg, ts, uType[], + # # dense = dense, k = ks, saved_subsystem = saved_subsystem, + # calculate_error = false + # ) + sol = DummyODESolution() + + if controller === nothing && adaptive + controller = default_controller(alg, cache) + end + + save_end = save_end === nothing ? save_everystep || isempty(saveat) || saveat isa Number || tf in saveat : save_end + + # Setup the actual integrator object + integrator = ThunderboltTimeIntegrator( + alg, + f, + cache.uₙ, + cache.uₙ₋₁, + 1:length(u), + p, + t0, + t0, + dt, + tdir, + cache, + callback_cache, + OS.NoExternalSynchronization(), + sol, + true, + adaptive ? controller : nothing, + IntegratorStats(), + IntegratorOptions( + dtmin = eps(tType), + dtmax = tType(tf-t0), + verbose = verbose, + adaptive = adaptive, + # maxiters = maxiters, + callback = callbacks_internal, + save_end = save_end, + tstops = tstops_internal, + saveat = saveat_internal, + d_discontinuities = d_discontinuities_internal, + tstops_cache = tstops, + saveat_cache = saveat, + d_discontinuities_cache = d_discontinuities, + ), + false, + 0, + false, + false, + false, + false, + 0, + 0, + false, + ) + OrdinaryDiffEqCore.initialize_callbacks!(integrator) + DiffEqBase.initialize!(integrator, integrator.cache) + + if _tstops !== nothing + tstops = _tstops(parameter_values(integrator), prob.tspan) + for tstop in tstops + add_tstop!(integrator, tstop) + end + end + + OrdinaryDiffEqCore.handle_dt!(integrator) -function init_cache(prob, alg; t0, kwargs...) - return setup_solver_cache(prob.f, alg, t0) + return integrator, integrator.cache end diff --git a/src/solver/time_integration.jl b/src/solver/time_integration.jl index b77ff99e..03a2fd0f 100644 --- a/src/solver/time_integration.jl +++ b/src/solver/time_integration.jl @@ -1,6 +1,6 @@ include("time/time_integrator.jl") include("time/euler.jl") -include("time/load_stepping.jl") +include("time/homotopy.jl") include("time/partitioned_solver.jl") include("time/rtc.jl") diff --git a/src/utils.jl b/src/utils.jl index b3ded2e8..755b567b 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -469,3 +469,63 @@ function get_closest_vertex(val::Vec, grid::AbstractGrid) end return closest_vertex end + +@generated function dot_2_1(S1::FourthOrderTensor{dim}, S2::SecondOrderTensor{dim}) where {dim} + idxS1(i, j, k, l) = Tensors.compute_index(Tensors.get_base(S1), i, j, k, l) + idxS2(i, j) = Tensors.compute_index(Tensors.get_base(S2), i, j) + exps = Expr(:tuple) + for l in 1:dim, k in 1:dim, j in 1:dim, i in 1:dim + ex1 = Expr[:(Tensors.get_data(S1)[$(idxS1(i, m, k, l))]) for m in 1:dim] + ex2 = Expr[:(Tensors.get_data(S2)[$(idxS2(m, j))]) for m in 1:dim] + push!(exps.args, Tensors.reducer(ex1, ex2)) + end + quote + $(Expr(:meta, :inline)) + @inbounds return Tensor{4, dim}($exps) + end +end + +@generated function dot_2_1t(S1::FourthOrderTensor{dim}, S2::SecondOrderTensor{dim}) where {dim} + idxS1(i, j, k, l) = Tensors.compute_index(Tensors.get_base(S1), i, j, k, l) + idxS2(i, j) = Tensors.compute_index(Tensors.get_base(S2), i, j) + exps = Expr(:tuple) + for l in 1:dim, k in 1:dim, j in 1:dim, i in 1:dim + ex1 = Expr[:(Tensors.get_data(S1)[$(idxS1(i, m, k, l))]) for m in 1:dim] + ex2 = Expr[:(Tensors.get_data(S2)[$(idxS2(j, m))]) for m in 1:dim] + push!(exps.args, Tensors.reducer(ex1, ex2)) + end + quote + $(Expr(:meta, :inline)) + @inbounds return Tensor{4, dim}($exps) + end +end + +@generated function dot_3_1(S1::FourthOrderTensor{dim}, S2::SecondOrderTensor{dim}) where {dim} + idxS1(i, j, k, l) = Tensors.compute_index(Tensors.get_base(S1), i, j, k, l) + idxS2(i, j) = Tensors.compute_index(Tensors.get_base(S2), i, j) + exps = Expr(:tuple) + for l in 1:dim, k in 1:dim, j in 1:dim, i in 1:dim + ex1 = Expr[:(Tensors.get_data(S1)[$(idxS1(i, j, m, l))]) for m in 1:dim] + ex2 = Expr[:(Tensors.get_data(S2)[$(idxS2(m, j))]) for m in 1:dim] + push!(exps.args, Tensors.reducer(ex1, ex2)) + end + quote + $(Expr(:meta, :inline)) + @inbounds return Tensor{4, dim}($exps) + end +end + +@generated function dot_3_1t(S1::FourthOrderTensor{dim}, S2::SecondOrderTensor{dim}) where {dim} + idxS1(i, j, k, l) = Tensors.compute_index(Tensors.get_base(S1), i, j, k, l) + idxS2(i, j) = Tensors.compute_index(Tensors.get_base(S2), i, j) + exps = Expr(:tuple) + for l in 1:dim, k in 1:dim, j in 1:dim, i in 1:dim + ex1 = Expr[:(Tensors.get_data(S1)[$(idxS1(i, j, m, l))]) for m in 1:dim] + ex2 = Expr[:(Tensors.get_data(S2)[$(idxS2(j, m))]) for m in 1:dim] + push!(exps.args, Tensors.reducer(ex1, ex2)) + end + quote + $(Expr(:meta, :inline)) + @inbounds return Tensor{4, dim}($exps) + end +end diff --git a/test/integration/test_passive_structure.jl b/test/integration/test_passive_structure.jl index fa3dab36..ec705cf8 100644 --- a/test/integration/test_passive_structure.jl +++ b/test/integration/test_passive_structure.jl @@ -12,6 +12,8 @@ function test_solve_passive_structure(constitutive_model) Dirichlet(:d, getfacetset(mesh, "bottom"), (x,t) -> [0.0], [3]) Dirichlet(:d, Set([1]), (x,t) -> [0.0, 0.0, 0.0], [1, 2, 3]) Dirichlet(:d, getfacetset(mesh, "right"), (x,t) -> [0.01t], [1]) + Dirichlet(:d, getfacetset(mesh, "top"), (x,t) -> [0.02t], [2]) + Dirichlet(:d, getfacetset(mesh, "back"), (x,t) -> [0.03t], [3]) ] quasistaticform = semidiscretize( @@ -26,7 +28,7 @@ function test_solve_passive_structure(constitutive_model) problem = QuasiStaticProblem(quasistaticform, tspan) # Create sparse matrix and residual vector - timestepper = LoadDrivenSolver( + timestepper = HomotopyPathSolver( NewtonRaphsonSolver(;max_iter=10) ) integrator = init(problem, timestepper, dt=Δt, verbose=true) diff --git a/test/integration/test_solid_mechanics.jl b/test/integration/test_solid_mechanics.jl index 5a1d50fc..d87867ce 100644 --- a/test/integration/test_solid_mechanics.jl +++ b/test/integration/test_solid_mechanics.jl @@ -33,7 +33,7 @@ function test_solve_contractile_cuboid(mesh, constitutive_model, subdomains = [" problem = QuasiStaticProblem(quasistaticform, tspan) # Create sparse matrix and residual vector - timestepper = LoadDrivenSolver( + timestepper = HomotopyPathSolver( NewtonRaphsonSolver(;max_iter=10) ) integrator = init(problem, timestepper, dt=Δt, verbose=true) diff --git a/test/test_integrators.jl b/test/test_integrators.jl index 30ee832b..393dd500 100644 --- a/test/test_integrators.jl +++ b/test/test_integrators.jl @@ -40,7 +40,7 @@ using UnPack end # Dispatch innermost solve - function Thunderbolt.perform_step!(integ::ThunderboltTimeIntegrator, cache::DummyForwardEulerCache) + function Thunderbolt.OrdinaryDiffEqCore.perform_step!(integ::ThunderboltTimeIntegrator, cache::DummyForwardEulerCache) @unpack f, dt, u, p, t = integ @unpack du = cache