From 4f96013befc55198086a447919d98f2296954316 Mon Sep 17 00:00:00 2001 From: Marco Artiano Date: Thu, 24 Jul 2025 13:26:27 +0200 Subject: [PATCH 01/10] julia 1.10.6 and some improvements --- Manifest.toml | 67 ++- examples/Manifest.toml | 672 +++------------------------- examples/Project.toml | 24 +- examples/trixi_lid_driven_linear.jl | 2 +- libs/Implicit/Manifest.toml | 157 ++++--- libs/Implicit/Project.toml | 7 +- libs/Implicit/src/linear_imex.jl | 51 +-- 7 files changed, 215 insertions(+), 765 deletions(-) diff --git a/Manifest.toml b/Manifest.toml index 0459249..7abef8c 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,20 +1,18 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.11.5" +julia_version = "1.10.6" manifest_format = "2.0" -project_hash = "65f9f6999611571ccf228f448404abce642254f9" +project_hash = "c269846676b4a9a232cf6582744da7d76f842d15" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.2" +version = "1.1.1" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" -version = "1.11.0" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" -version = "1.11.0" [[deps.CEnum]] git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" @@ -29,7 +27,6 @@ version = "1.1.1+0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" -version = "1.11.0" [[deps.Downloads]] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] @@ -38,9 +35,9 @@ version = "1.6.0" [[deps.Enzyme]] deps = ["CEnum", "EnzymeCore", "Enzyme_jll", "GPUCompiler", "InteractiveUtils", "LLVM", "Libdl", "LinearAlgebra", "ObjectFile", "PrecompileTools", "Preferences", "Printf", "Random", "SparseArrays"] -git-tree-sha1 = "59b0bc9ffe802326b67d218923ff2f325cfc9cdf" +git-tree-sha1 = "80867f06e51f1a58913bc0c1413d64207f8bf839" uuid = "7da242da-08ed-463a-9acd-ee780be4f1d9" -version = "0.13.57" +version = "0.13.62" [deps.Enzyme.extensions] EnzymeBFloat16sExt = "BFloat16s" @@ -71,9 +68,9 @@ version = "0.8.12" [[deps.Enzyme_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "49dfd66929c794a6ec806bcb48d4d5d4b1280d11" +git-tree-sha1 = "5c024fa2548c53d10c70d151a1e7051fa9483209" uuid = "7cc45869-7501-5eee-bdea-0790c847d4ef" -version = "0.0.184+0" +version = "0.0.186+0" [[deps.ExprTools]] git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" @@ -82,7 +79,6 @@ version = "0.1.10" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" -version = "1.11.0" [[deps.GPUCompiler]] deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "PrecompileTools", "Preferences", "Scratch", "Serialization", "TOML", "Tracy", "UUIDs"] @@ -93,13 +89,12 @@ version = "1.6.1" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -version = "1.11.0" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "a007feb38b422fbdab534406aeca1b86823cb4d6" +git-tree-sha1 = "0533e564aae234aff59ab625543145446d8b6ec2" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.7.0" +version = "1.7.1" [[deps.Krylov]] deps = ["LinearAlgebra", "Printf", "SparseArrays"] @@ -128,7 +123,6 @@ version = "0.0.37+2" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" -version = "1.11.0" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] @@ -138,17 +132,16 @@ 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.6.0+0" +version = "8.4.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.7.2+0" +version = "1.6.4+0" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] @@ -163,30 +156,26 @@ version = "0.9.1+6" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" -version = "1.11.0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -version = "1.11.0" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" -version = "1.11.0" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" -version = "1.11.0" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.6+0" +version = "2.28.2+1" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.12.12" +version = "2023.1.10" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" @@ -201,18 +190,12 @@ version = "0.4.4" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.27+1" +version = "0.3.23+4" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.11.0" - - [deps.Pkg.extensions] - REPLExt = "REPL" - - [deps.Pkg.weakdeps] - REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.10.0" [[deps.PrecompileTools]] deps = ["Preferences"] @@ -229,12 +212,14 @@ version = "1.4.3" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" -version = "1.11.0" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -version = "1.11.0" [[deps.Reexport]] git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" @@ -253,12 +238,14 @@ version = "1.3.0" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" -version = "1.11.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.11.0" +version = "1.10.0" [[deps.StructIO]] git-tree-sha1 = "c581be48ae1cbf83e899b14c07a807e1787512cc" @@ -268,7 +255,7 @@ version = "0.3.1" [[deps.SuiteSparse_jll]] deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.7.0+0" +version = "7.2.1+1" [[deps.TOML]] deps = ["Dates"] @@ -295,11 +282,9 @@ version = "0.1.5" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" -version = "1.11.0" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" -version = "1.11.0" [[deps.Zlib_jll]] deps = ["Libdl"] @@ -314,7 +299,7 @@ version = "5.11.0+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.59.0+0" +version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] diff --git a/examples/Manifest.toml b/examples/Manifest.toml index f9db8fc..17f5ffd 100644 --- a/examples/Manifest.toml +++ b/examples/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.11.5" +julia_version = "1.10.6" manifest_format = "2.0" -project_hash = "bd968805694a58fc0357e8b0ea61144c0696459a" +project_hash = "070083c91c766d574137de09d21da151850fae1c" [[deps.ADTypes]] git-tree-sha1 = "be7ae030256b8ef14a441726c4c37766b90b93a3" @@ -90,7 +90,7 @@ version = "2.5.0" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.2" +version = "1.1.1" [[deps.Ariadne]] deps = ["Enzyme", "Krylov", "LinearAlgebra", "SparseArrays"] @@ -98,12 +98,6 @@ path = ".." uuid = "0be81120-40bf-4f8b-adf0-26103efb66f1" version = "0.1.0" -[[deps.ArnoldiMethod]] -deps = ["LinearAlgebra", "Random", "StaticArrays"] -git-tree-sha1 = "f87e559f87a45bece9c9ed97458d3afe98b1ebb9" -uuid = "ec485272-7323-5ecc-a04f-4719b315124d" -version = "0.1.0" - [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra"] git-tree-sha1 = "9606d7832795cbef89e06a550475be300364a8aa" @@ -136,19 +130,8 @@ version = "7.19.0" StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" -[[deps.ArrayLayouts]] -deps = ["FillArrays", "LinearAlgebra"] -git-tree-sha1 = "4e25216b8fea1908a0ce0f5d87368587899f75be" -uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" -version = "1.11.1" -weakdeps = ["SparseArrays"] - - [deps.ArrayLayouts.extensions] - ArrayLayoutsSparseArraysExt = "SparseArrays" - [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" -version = "1.11.0" [[deps.Atomix]] deps = ["UnsafeAtomics"] @@ -193,12 +176,17 @@ version = "0.4.7" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" -version = "1.11.0" [[deps.BaseDirs]] -git-tree-sha1 = "0b3c211ec48050496075523ea7ee045db9341a42" +git-tree-sha1 = "bca794632b8a9bbe159d56bf9e31c422671b35e0" uuid = "18cc8868-cbac-4acf-b575-c8ff214dc66f" -version = "1.3.1" +version = "1.3.2" + +[[deps.BenchmarkTools]] +deps = ["Compat", "JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] +git-tree-sha1 = "e38fbc49a620f5d0b660d7f543db1009fe0f8336" +uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" +version = "1.6.0" [[deps.BitTwiddlingConvenienceFunctions]] deps = ["Static"] @@ -206,17 +194,6 @@ git-tree-sha1 = "f21cfd4950cb9f0587d5067e69405ad2acd27b87" uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" version = "0.1.6" -[[deps.BracketingNonlinearSolve]] -deps = ["CommonSolve", "ConcreteStructs", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] -git-tree-sha1 = "a9014924595b7a2c1dd14aac516e38fa10ada656" -uuid = "70df07ce-3d50-431d-a3e7-ca6ddb60ac1e" -version = "1.3.0" -weakdeps = ["ChainRulesCore", "ForwardDiff"] - - [deps.BracketingNonlinearSolve.extensions] - BracketingNonlinearSolveChainRulesCoreExt = ["ChainRulesCore", "ForwardDiff"] - BracketingNonlinearSolveForwardDiffExt = "ForwardDiff" - [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "1b96ea4a01afe0ea4090c5c8039690672dd13f2e" @@ -236,7 +213,6 @@ version = "0.2.6" [[deps.CRC32c]] uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" -version = "1.11.0" [[deps.CRlibm]] deps = ["CRlibm_jll"] @@ -258,9 +234,9 @@ version = "1.1.1" [[deps.CairoMakie]] deps = ["CRC32c", "Cairo", "Cairo_jll", "Colors", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools"] -git-tree-sha1 = "22e8c06a60dd4894a5e74dba616e636cb6ebe13c" +git-tree-sha1 = "22c63a303e8d6ff1a02a0933d579dbdb6e0f2925" uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" -version = "0.15.3" +version = "0.15.4" [[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"] @@ -325,11 +301,13 @@ deps = ["FixedPointNumbers", "Random"] git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" version = "0.12.1" -weakdeps = ["StyledStrings"] [deps.ColorTypes.extensions] StyledStringsExt = "StyledStrings" + [deps.ColorTypes.weakdeps] + StyledStrings = "f489334b-da3d-4c2e-b8f0-e476e12c162b" + [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" @@ -448,7 +426,6 @@ version = "1.0.0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" -version = "1.11.0" [[deps.DelaunayTriangulation]] deps = ["AdaptivePredicates", "EnumX", "ExactPredicates", "Random"] @@ -464,9 +441,9 @@ version = "1.9.1" [[deps.DiffEqBase]] deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "TruncatedStacktraces"] -git-tree-sha1 = "e9b34e0eb3443492f396c97e7fed08630752a4f2" +git-tree-sha1 = "52af5ee5af4eb6ca03b3782bf65c1e5fc3024c86" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.177.2" +version = "6.178.0" [deps.DiffEqBase.extensions] DiffEqBaseCUDAExt = "CUDA" @@ -573,7 +550,6 @@ version = "0.7.3" [[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"] @@ -620,9 +596,9 @@ version = "1.0.5" [[deps.Enzyme]] deps = ["CEnum", "EnzymeCore", "Enzyme_jll", "GPUCompiler", "InteractiveUtils", "LLVM", "Libdl", "LinearAlgebra", "ObjectFile", "PrecompileTools", "Preferences", "Printf", "Random", "SparseArrays"] -git-tree-sha1 = "32a24059c12417620b747fcae9e0864d45ef92b0" +git-tree-sha1 = "80867f06e51f1a58913bc0c1413d64207f8bf839" uuid = "7da242da-08ed-463a-9acd-ee780be4f1d9" -version = "0.13.61" +version = "0.13.62" [deps.Enzyme.extensions] EnzymeBFloat16sExt = "BFloat16s" @@ -667,16 +643,6 @@ git-tree-sha1 = "d55dffd9ae73ff72f1c0482454dcf2ec6c6c4a63" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" version = "2.6.5+0" -[[deps.ExponentialUtilities]] -deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "PrecompileTools", "Printf", "SparseArrays", "libblastrampoline_jll"] -git-tree-sha1 = "cae251c76f353e32d32d76fae2fea655eab652af" -uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" -version = "1.27.0" -weakdeps = ["StaticArrays"] - - [deps.ExponentialUtilities.extensions] - ExponentialUtilitiesStaticArraysExt = "StaticArrays" - [[deps.ExprTools]] git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" @@ -694,9 +660,9 @@ version = "0.1.6" [[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 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" +git-tree-sha1 = "eaa040768ea663ca695d442be1bc97edfe6824f2" uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.4+1" +version = "6.1.3+0" [[deps.FFTW]] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] @@ -781,7 +747,6 @@ weakdeps = ["Mmap", "Test"] [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" -version = "1.11.0" [[deps.FillArrays]] deps = ["LinearAlgebra"] @@ -795,24 +760,6 @@ weakdeps = ["PDMats", "SparseArrays", "Statistics"] FillArraysSparseArraysExt = "SparseArrays" FillArraysStatisticsExt = "Statistics" -[[deps.FiniteDiff]] -deps = ["ArrayInterface", "LinearAlgebra", "Setfield"] -git-tree-sha1 = "f089ab1f834470c525562030c8cfde4025d5e915" -uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.27.0" - - [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]] deps = ["Statistics"] git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" @@ -884,7 +831,6 @@ version = "0.5.2" [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" -version = "1.11.0" [[deps.GPUArraysCore]] deps = ["Adapt"] @@ -904,12 +850,6 @@ git-tree-sha1 = "eb6f1f48aa994f3018cbd029a17863c6535a266d" uuid = "d54b0c1a-921d-58e0-8e36-89d8069c0969" version = "0.5.8" -[[deps.GenericSchur]] -deps = ["LinearAlgebra", "Printf"] -git-tree-sha1 = "f88e0ba1f6b42121a7c1dfe93a9687d8e164c91b" -uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e" -version = "0.5.5" - [[deps.GeometryBasics]] deps = ["EarCut_jll", "Extents", "IterTools", "LinearAlgebra", "PrecompileTools", "Random", "StaticArrays"] git-tree-sha1 = "1f5a80f4ed9f5a4aada88fc2db456e637676414b" @@ -1069,7 +1009,6 @@ version = "2025.2.0+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"] @@ -1149,9 +1088,9 @@ version = "1.0.0" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "a007feb38b422fbdab534406aeca1b86823cb4d6" +git-tree-sha1 = "0533e564aae234aff59ab625543145446d8b6ec2" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.7.0" +version = "1.7.1" [[deps.JSON]] deps = ["Dates", "Mmap", "Parsers", "Unicode"] @@ -1185,9 +1124,9 @@ version = "0.10.3" [[deps.KernelAbstractions]] deps = ["Adapt", "Atomix", "InteractiveUtils", "MacroTools", "PrecompileTools", "Requires", "StaticArrays", "UUIDs"] -git-tree-sha1 = "38a03910123867c11af988e8718d12c98bf6a234" +git-tree-sha1 = "83c617e9e9b02306a7acab79e05ec10253db7c87" uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.37" +version = "0.9.38" weakdeps = ["EnzymeCore", "LinearAlgebra", "SparseArrays"] [deps.KernelAbstractions.extensions] @@ -1213,22 +1152,6 @@ git-tree-sha1 = "b94257a1a8737099ca40bc7271a8b374033473ed" uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" version = "0.10.1" -[[deps.KrylovPreconditioners]] -deps = ["Adapt", "KernelAbstractions", "LightGraphs", "LinearAlgebra", "Metis", "SparseArrays"] -git-tree-sha1 = "52d302d5e950e242f037316b6dd6e1e080afea09" -uuid = "45d422c2-293f-44ce-8315-2cb988662dec" -version = "0.3.4" - - [deps.KrylovPreconditioners.extensions] - KrylovPreconditionersAMDGPUExt = "AMDGPU" - KrylovPreconditionersCUDAExt = "CUDA" - KrylovPreconditionersOneAPIExt = "oneAPI" - - [deps.KrylovPreconditioners.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" - [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "059aabebaa7c82ccb853dd4a0ee9d17796f7e1bc" @@ -1282,28 +1205,9 @@ git-tree-sha1 = "a9eaadb366f5493a5654e843864c13d8b107548c" uuid = "10f19ff3-798f-405d-979b-55457f8fc047" version = "0.1.17" -[[deps.LazyArrays]] -deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "MacroTools", "SparseArrays"] -git-tree-sha1 = "866ce84b15e54d758c11946aacd4e5df0e60b7a3" -uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02" -version = "2.6.1" - - [deps.LazyArrays.extensions] - LazyArraysBandedMatricesExt = "BandedMatrices" - LazyArraysBlockArraysExt = "BlockArrays" - LazyArraysBlockBandedMatricesExt = "BlockBandedMatrices" - LazyArraysStaticArraysExt = "StaticArrays" - - [deps.LazyArrays.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" -version = "1.11.0" [[deps.LazyModules]] git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e" @@ -1318,17 +1222,16 @@ 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.6.0+0" +version = "8.4.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.7.2+0" +version = "1.6.4+0" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] @@ -1343,7 +1246,6 @@ version = "0.9.1+6" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" -version = "1.11.0" [[deps.Libffi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1381,38 +1283,15 @@ git-tree-sha1 = "321ccef73a96ba828cd51f2ab5b9f917fa73945a" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" version = "2.41.0+0" -[[deps.LightGraphs]] -deps = ["ArnoldiMethod", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "432428df5f360964040ed60418dd5601ecd240b6" -uuid = "093fc24a-ae57-5d10-9952-331d41423f4d" -version = "1.3.5" - [[deps.LightXML]] deps = ["Libdl", "XML2_jll"] git-tree-sha1 = "d5d2e3abfb30ea9c2cff81d243e7235b51315ec2" uuid = "9c8b4983-aa76-5018-a973-4c85ecc9e179" version = "0.9.2" -[[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 = "4adee99b7262ad2a1a4bbbc59d993d24e55ea96f" -uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" -version = "7.4.0" - [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -version = "1.11.0" [[deps.LinearMaps]] deps = ["LinearAlgebra"] @@ -1426,50 +1305,6 @@ weakdeps = ["ChainRulesCore", "SparseArrays", "Statistics"] LinearMapsSparseArraysExt = "SparseArrays" LinearMapsStatisticsExt = "Statistics" -[[deps.LinearSolve]] -deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "GPUArraysCore", "InteractiveUtils", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "StaticArraysCore", "UnPack"] -git-tree-sha1 = "989a36162c76f5b4d0c3028333725600bb1481b7" -uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "3.19.2" - - [deps.LinearSolve.extensions] - LinearSolveBandedMatricesExt = "BandedMatrices" - LinearSolveBlockDiagonalsExt = "BlockDiagonals" - LinearSolveCUDAExt = "CUDA" - LinearSolveCUDSSExt = "CUDSS" - LinearSolveEnzymeExt = "EnzymeCore" - LinearSolveFastAlmostBandedMatricesExt = "FastAlmostBandedMatrices" - LinearSolveFastLapackInterfaceExt = "FastLapackInterface" - LinearSolveForwardDiffExt = "ForwardDiff" - LinearSolveHYPREExt = "HYPRE" - LinearSolveIterativeSolversExt = "IterativeSolvers" - LinearSolveKernelAbstractionsExt = "KernelAbstractions" - LinearSolveKrylovKitExt = "KrylovKit" - LinearSolveMetalExt = "Metal" - LinearSolvePardisoExt = ["Pardiso", "SparseArrays"] - LinearSolveRecursiveFactorizationExt = "RecursiveFactorization" - LinearSolveSparseArraysExt = "SparseArrays" - LinearSolveSparspakExt = ["SparseArrays", "Sparspak"] - - [deps.LinearSolve.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockDiagonals = "0a1fb500-61f7-11e9-3c65-f5ef3456f9f0" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - FastAlmostBandedMatrices = "9d29842c-ecb8-4973-b1e9-a27b1157504e" - FastLapackInterface = "29a986be-02c6-4525-aec4-84b980013641" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771" - IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153" - KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" - KrylovKit = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - Pardiso = "46dd5b70-b6fb-5a00-ae2d-e8fea33afaf2" - RecursiveFactorization = "f2c3362d-daeb-58d1-803e-2bc74f2840b4" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - Sparspak = "e56a9233-b9d6-4f03-8d0f-1825330902ac" - [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f" @@ -1488,7 +1323,6 @@ version = "0.3.29" [[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"] @@ -1507,17 +1341,11 @@ git-tree-sha1 = "b882a7dd7ef37643066ae8f9380beea8fdd89cae" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" version = "3.4.2" -[[deps.METIS_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "2eefa8baa858871ae7770c98c3c2a7e46daba5b4" -uuid = "d00139f3-1899-568f-a2f0-47f597d42d70" -version = "5.1.3+0" - [[deps.MKL_jll]] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] -git-tree-sha1 = "5de60bc6cb3899cd318d80d627560fae2e2d99ae" +git-tree-sha1 = "282cadc186e7b2ae0eeadbd7a4dffed4196ae2aa" uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2025.0.1+1" +version = "2025.2.0+0" [[deps.MPI]] deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] @@ -1558,9 +1386,9 @@ version = "0.5.16" [[deps.Makie]] deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "ComputePipeline", "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", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "PNGFiles", "Packing", "Pkg", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] -git-tree-sha1 = "8ca3fbbe6685f2fb232526cabe25ef471d520c37" +git-tree-sha1 = "96d73e05b6f3079df0963b66c2844d162263a896" uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" -version = "0.24.3" +version = "0.24.4" [[deps.ManualMemory]] git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" @@ -1575,7 +1403,6 @@ 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"] @@ -1583,36 +1410,10 @@ git-tree-sha1 = "6e64d2321257cc52f47e193407d0659ea1b2b431" uuid = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53" version = "0.6.5" -[[deps.MaybeInplace]] -deps = ["ArrayInterface", "LinearAlgebra", "MacroTools"] -git-tree-sha1 = "54e2fdc38130c05b42be423e90da3bade29b74bd" -uuid = "bb5d69b7-63fc-4a16-80bd-7e42200c7bdb" -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.6+0" - -[[deps.Metis]] -deps = ["CEnum", "LinearAlgebra", "METIS_jll", "SparseArrays"] -git-tree-sha1 = "54aca4fd53d39dcd2c3f1bef367b6921e8178628" -uuid = "2679e427-3c69-5b7f-982b-ece356f1e94b" -version = "1.5.0" - - [deps.Metis.extensions] - MetisGraphs = "Graphs" - MetisLightGraphs = "LightGraphs" - MetisSimpleWeightedGraphs = ["SimpleWeightedGraphs", "Graphs"] - - [deps.Metis.weakdeps] - Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6" - LightGraphs = "093fc24a-ae57-5d10-9952-331d41423f4d" - SimpleWeightedGraphs = "47aef6b3-ad0c-573a-a1e2-d07658019622" +version = "2.28.2+1" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1628,7 +1429,6 @@ version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" -version = "1.11.0" [[deps.MosaicViews]] deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] @@ -1644,19 +1444,13 @@ version = "0.3.7" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.12.12" +version = "2023.1.10" [[deps.MuladdMacro]] git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" version = "0.2.4" -[[deps.NLSolversBase]] -deps = ["ADTypes", "DifferentiationInterface", "Distributed", "FiniteDiff", "ForwardDiff"] -git-tree-sha1 = "25a6638571a902ecfb1ae2a18fc1575f86b1d4df" -uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" -version = "7.10.0" - [[deps.NaNMath]] deps = ["OpenLibm_jll"] git-tree-sha1 = "9b8215b1ee9e78a293f99797cd31375471b2bcae" @@ -1698,88 +1492,6 @@ git-tree-sha1 = "ee6719b4ed5fd08b654017648bf5fa2e2dc8f1ec" uuid = "7aca2e03-f7e2-4192-9ec8-f4ca66d597fb" version = "1.1.0" -[[deps.NonlinearSolve]] -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 = "d2ec18c1e4eccbb70b64be2435fc3b06fbcdc0a1" -uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" -version = "4.10.0" - - [deps.NonlinearSolve.extensions] - NonlinearSolveFastLevenbergMarquardtExt = "FastLevenbergMarquardt" - NonlinearSolveFixedPointAccelerationExt = "FixedPointAcceleration" - NonlinearSolveLeastSquaresOptimExt = "LeastSquaresOptim" - NonlinearSolveMINPACKExt = "MINPACK" - NonlinearSolveNLSolversExt = "NLSolvers" - NonlinearSolveNLsolveExt = ["NLsolve", "LineSearches"] - NonlinearSolvePETScExt = ["PETSc", "MPI"] - NonlinearSolveSIAMFANLEquationsExt = "SIAMFANLEquations" - NonlinearSolveSpeedMappingExt = "SpeedMapping" - NonlinearSolveSundialsExt = "Sundials" - - [deps.NonlinearSolve.weakdeps] - 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" - Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" - -[[deps.NonlinearSolveBase]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLOperators", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] -git-tree-sha1 = "404d71dd057759f4d590191a643113485c4a482a" -uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0" -version = "1.12.0" - - [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 = "9c8cd0a986518ba317af263549b48e34ac8f776d" -uuid = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d" -version = "1.5.0" - -[[deps.NonlinearSolveQuasiNewton]] -deps = ["ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLOperators", "StaticArraysCore"] -git-tree-sha1 = "e3888bdbab6e0bfadbc3164ef4595e40e7b7e954" -uuid = "9a2c21bd-3a47-402d-9113-8faf9a0ee114" -version = "1.6.0" -weakdeps = ["ForwardDiff"] - - [deps.NonlinearSolveQuasiNewton.extensions] - NonlinearSolveQuasiNewtonForwardDiffExt = "ForwardDiff" - -[[deps.NonlinearSolveSpectralMethods]] -deps = ["CommonSolve", "ConcreteStructs", "DiffEqBase", "LineSearch", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] -git-tree-sha1 = "3398222199e4b9ca0b5840907fb509f28f1a2fdc" -uuid = "26075421-4e9a-44e1-8bd1-420ed7ad02b2" -version = "1.2.0" -weakdeps = ["ForwardDiff"] - - [deps.NonlinearSolveSpectralMethods.extensions] - NonlinearSolveSpectralMethodsForwardDiffExt = "ForwardDiff" - [[deps.ObjectFile]] deps = ["Reexport", "StructIO"] git-tree-sha1 = "09b1fe6ff16e6587fa240c165347474322e77cf1" @@ -1829,7 +1541,7 @@ version = "0.3.29+0" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.27+1" +version = "0.3.23+4" [[deps.OpenEXR]] deps = ["Colors", "FileIO", "OpenEXR_jll"] @@ -1846,7 +1558,7 @@ version = "3.2.4+0" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.5+0" +version = "0.8.1+2" [[deps.OpenMPI_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML", "Zlib_jll"] @@ -1877,24 +1589,6 @@ git-tree-sha1 = "05868e21324cede2207c6f0f466b4bfef6d5e7ee" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" version = "1.8.1" -[[deps.OrdinaryDiffEq]] -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", "Static", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"] -git-tree-sha1 = "569b4267680ff8e51359f8d9aca1e97b284b5e58" -uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" -version = "6.99.0" - -[[deps.OrdinaryDiffEqAdamsBashforthMoulton]] -deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqLowOrderRK", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] -git-tree-sha1 = "82f78099ecf4e0fa53545811318520d87e7fe0b8" -uuid = "89bda076-bce5-4f1c-845f-551c83cdda9a" -version = "1.2.0" - -[[deps.OrdinaryDiffEqBDF]] -deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqSDIRK", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "StaticArrays", "TruncatedStacktraces"] -git-tree-sha1 = "9124a686af119063bb4d3a8f87044a8f312fcad9" -uuid = "6ad6398a-0878-4a85-9266-38940aa047c8" -version = "1.6.0" - [[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 = "1bd20b621e8dee5f2d170ae31631bf573ab77eec" @@ -1909,168 +1603,12 @@ version = "1.26.2" EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" -[[deps.OrdinaryDiffEqDefault]] -deps = ["ADTypes", "DiffEqBase", "EnumX", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqBDF", "OrdinaryDiffEqCore", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "PrecompileTools", "Preferences", "Reexport"] -git-tree-sha1 = "7e2f4ec76ebac709401064fd2cf73ad993d1e694" -uuid = "50262376-6c5a-4cf5-baba-aaf4f84d72d7" -version = "1.5.0" - -[[deps.OrdinaryDiffEqDifferentiation]] -deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqCore", "SciMLBase", "SciMLOperators", "SparseArrays", "SparseMatrixColorings", "StaticArrayInterface", "StaticArrays"] -git-tree-sha1 = "efecf0c4cc44e16251b0e718f08b0876b2a82b80" -uuid = "4302a76b-040a-498a-8c04-15b101fed76b" -version = "1.10.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 = ["ADTypes", "DiffEqBase", "ExponentialUtilities", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqSDIRK", "OrdinaryDiffEqVerner", "RecursiveArrayTools", "Reexport", "SciMLBase"] -git-tree-sha1 = "8d2ab84d7fabdfde995e5f567361f238069497f5" -uuid = "e0540318-69ee-4070-8777-9e2de6de23de" -version = "1.4.0" - -[[deps.OrdinaryDiffEqExtrapolation]] -deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "FastPower", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "RecursiveArrayTools", "Reexport"] -git-tree-sha1 = "80a636aac325c546b04e3bf20f0c80eaa0173dd4" -uuid = "becaefa8-8ca2-5cf9-886d-c06f3d2bd2c4" -version = "1.5.0" - -[[deps.OrdinaryDiffEqFIRK]] -deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "FastGaussQuadrature", "FastPower", "LinearAlgebra", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators"] -git-tree-sha1 = "0da8ec3491821262a3d2828e6370e76b51a770a3" -uuid = "5960d6e9-dd7a-4743-88e7-cf307b64f125" -version = "1.12.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 = ["ADTypes", "DiffEqBase", "FastBroadcast", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Reexport"] -git-tree-sha1 = "095bab73a3ff185e9ef971fc42ecc93c7824e589" -uuid = "9f002381-b378-40b7-97a6-27a27c83f129" -version = "1.3.0" - -[[deps.OrdinaryDiffEqLinear]] -deps = ["DiffEqBase", "ExponentialUtilities", "LinearAlgebra", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators"] -git-tree-sha1 = "940cef72ec8799d869ff1ba3dcf47cf7758e51cf" -uuid = "521117fe-8c41-49f8-b3b6-30780b3f0fb5" -version = "1.3.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 = "52ec7081e65291fa5c19749312df0818db2fa1bc" uuid = "b0944070-b475-4768-8dec-fb6eb410534d" version = "1.3.0" -[[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 = "ffdb0f5207b0e30f8b1edf99b3b9546d9c48ccaf" -uuid = "127b3ac7-2247-4354-8eb6-78cf4e7c58e8" -version = "1.10.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 = ["ADTypes", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Polyester", "Reexport", "StaticArrays"] -git-tree-sha1 = "ab9897e4bc8e3cf8e15f1cf61dbdd15d6a2341d7" -uuid = "5dd0a6cf-3d4b-4314-aa06-06d4e299bc89" -version = "1.3.1" - -[[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", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static"] -git-tree-sha1 = "1ce0096d920e95773220e818f29bf4b37ea2bb78" -uuid = "43230ef6-c299-4910-a778-202eb28ce4ce" -version = "1.11.0" - -[[deps.OrdinaryDiffEqSDIRK]] -deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "SciMLBase", "TruncatedStacktraces"] -git-tree-sha1 = "b3a7e3a2f355d837c823b435630f035aef446b45" -uuid = "2d112036-d095-4a1e-ab9a-08536f3ecdbf" -version = "1.3.0" - -[[deps.OrdinaryDiffEqSSPRK]] -deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "StaticArrays"] -git-tree-sha1 = "651756c030df7a1d49ad484288937f8c398e8a08" -uuid = "669c94d9-1f4b-4b64-b377-1aa079aa2388" -version = "1.3.0" - -[[deps.OrdinaryDiffEqStabilizedIRK]] -deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "StaticArrays"] -git-tree-sha1 = "111c23b68ad644b47e38242af920d5805c7bedb1" -uuid = "e3e12d00-db14-5390-b879-ac3dd2ef6296" -version = "1.3.0" - -[[deps.OrdinaryDiffEqStabilizedRK]] -deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "StaticArrays"] -git-tree-sha1 = "e08548c18880428f8121d7a5985ad94134bc4c10" -uuid = "358294b1-0aab-51c3-aafe-ad5ab194a2ad" -version = "1.1.2" - -[[deps.OrdinaryDiffEqSymplecticRK]] -deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport"] -git-tree-sha1 = "a13d59a2d6cfb6a3332a7782638ca6e1cb6ca688" -uuid = "fa646aed-7ef9-47eb-84c4-9443fc8cbfa8" -version = "1.3.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 = "08f2d3be30874b6e2e937a06b501fb9811f7d8bd" -uuid = "79d7bb75-1356-48c1-b8c0-6832512096c2" -version = "1.2.0" - [[deps.P4est]] deps = ["CEnum", "MPI", "MPIPreferences", "P4est_jll", "Preferences", "Reexport", "UUIDs"] git-tree-sha1 = "6a924bc3d05ebb09de7e8294a30c022461a44720" @@ -2143,13 +1681,9 @@ uuid = "30392449-352a-5448-841d-b1acce4e97dc" version = "0.44.2+0" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.11.0" -weakdeps = ["REPL"] - - [deps.Pkg.extensions] - REPLExt = "REPL" +version = "1.10.0" [[deps.PkgVersion]] deps = ["Pkg"] @@ -2186,20 +1720,6 @@ git-tree-sha1 = "d04bec789dce5ff61e8f128b6aee0eda09a3855f" uuid = "c74db56a-226d-5e98-8bb0-a6049094aeea" version = "0.4.25" -[[deps.PreallocationTools]] -deps = ["Adapt", "ArrayInterface", "ForwardDiff"] -git-tree-sha1 = "2cc315bb7f6e4d59081bad744cdb911d6374fc7f" -uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" -version = "0.4.29" - - [deps.PreallocationTools.extensions] - PreallocationToolsReverseDiffExt = "ReverseDiff" - PreallocationToolsSparseConnectivityTracerExt = "SparseConnectivityTracer" - - [deps.PreallocationTools.weakdeps] - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" - [[deps.PrecompileTools]] deps = ["Preferences"] git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" @@ -2221,7 +1741,10 @@ version = "2.4.0" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" -version = "1.11.0" + +[[deps.Profile]] +deps = ["Printf"] +uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" [[deps.ProgressBars]] deps = ["Printf"] @@ -2257,14 +1780,12 @@ weakdeps = ["Enzyme"] QuadGKEnzymeExt = "Enzyme" [[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"] +deps = ["InteractiveUtils", "Markdown", "Sockets", "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.RangeArrays]] git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5" @@ -2289,9 +1810,9 @@ version = "1.3.4" [[deps.RecursiveArrayTools]] deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "efc718978d97745c58e69c5115a35c51a080e45e" +git-tree-sha1 = "4dd1a95cc16d5abdccc4eac5faf6bc73904be1a2" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "3.34.1" +version = "3.35.0" [deps.RecursiveArrayTools.extensions] RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" @@ -2390,9 +1911,9 @@ version = "0.6.43" [[deps.SciMLBase]] deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "50c540cd0569d43d5cec57b9610e7f1361d3532d" +git-tree-sha1 = "c9dc4c04bcb0146a35dd6af726073c5738b80e3b" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.103.1" +version = "2.104.0" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" @@ -2415,12 +1936,6 @@ version = "2.103.1" 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 = "7da1216346ad79499d08d7e2a3dbf297dc80c829" -uuid = "19f34311-ddf3-4b8b-af20-060888a46c0e" -version = "0.1.6" - [[deps.SciMLOperators]] deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] git-tree-sha1 = "3249fe77f322fe539e935ecb388c8290cd38a3fc" @@ -2446,7 +1961,6 @@ version = "1.3.0" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" -version = "1.11.0" [[deps.Setfield]] deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] @@ -2463,7 +1977,6 @@ version = "0.5.0" [[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" -version = "1.11.0" [[deps.Showoff]] deps = ["Dates", "Grisu"] @@ -2477,24 +1990,6 @@ git-tree-sha1 = "d263a08ec505853a5ff1c1ebde2070419e3f28e9" uuid = "73760f76-fbc4-59ce-8f25-708e95d2df96" version = "0.4.0" -[[deps.SimpleNonlinearSolve]] -deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "7aaa5fe4617271b64fce0466d187f2a72edbd81a" -uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7" -version = "2.5.0" - - [deps.SimpleNonlinearSolve.extensions] - SimpleNonlinearSolveChainRulesCoreExt = "ChainRulesCore" - SimpleNonlinearSolveDiffEqBaseExt = "DiffEqBase" - SimpleNonlinearSolveReverseDiffExt = "ReverseDiff" - SimpleNonlinearSolveTrackerExt = "Tracker" - - [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" - [[deps.SimpleTraits]] deps = ["InteractiveUtils", "MacroTools"] git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" @@ -2514,7 +2009,6 @@ version = "0.1.5" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" -version = "1.11.0" [[deps.SortingAlgorithms]] deps = ["DataStructures"] @@ -2525,23 +2019,7 @@ version = "1.2.1" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.11.0" - -[[deps.SparseMatrixColorings]] -deps = ["ADTypes", "DocStringExtensions", "LinearAlgebra", "PrecompileTools", "Random", "SparseArrays"] -git-tree-sha1 = "9de43e0b9b976f1019bf7a879a686c4514520078" -uuid = "0a514795-09f3-496d-8182-132a7b665d35" -version = "0.4.21" - - [deps.SparseMatrixColorings.extensions] - SparseMatrixColoringsCUDAExt = "CUDA" - SparseMatrixColoringsCliqueTreesExt = "CliqueTrees" - SparseMatrixColoringsColorsExt = "Colors" - - [deps.SparseMatrixColorings.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - CliqueTrees = "60701a23-6482-424a-84db-faee86b9b1f8" - Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "1.10.0" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] @@ -2613,14 +2091,9 @@ uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" version = "1.4.3" [[deps.Statistics]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" +deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.11.1" -weakdeps = ["SparseArrays"] - - [deps.Statistics.extensions] - SparseArraysExt = ["SparseArrays"] +version = "1.10.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] @@ -2682,10 +2155,6 @@ git-tree-sha1 = "c581be48ae1cbf83e899b14c07a807e1787512cc" uuid = "53d494c1-5632-5724-8f4c-31dff12d585f" version = "0.3.1" -[[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" @@ -2693,7 +2162,7 @@ uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" [[deps.SuiteSparse_jll]] deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.7.0+0" +version = "7.2.1+1" [[deps.SummationByPartsOperators]] deps = ["ArgCheck", "AutoHashEquals", "FFTW", "InteractiveUtils", "LinearAlgebra", "LoopVectorization", "MuladdMacro", "PolynomialBases", "PrecompileTools", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SimpleUnPack", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Unrolled"] @@ -2717,9 +2186,9 @@ version = "0.5.81" [[deps.SymbolicIndexingInterface]] deps = ["Accessors", "ArrayInterface", "PrettyTables", "RuntimeGeneratedFunctions", "StaticArraysCore"] -git-tree-sha1 = "658f6d01bfe68d6bf47915bf5d868228138c7d71" +git-tree-sha1 = "59ca6eddaaa9849e7de9fd1153b6faf0b1db7b80" uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" -version = "0.3.41" +version = "0.3.42" [[deps.T8code]] deps = ["CEnum", "Libdl", "MPI", "MPIPreferences", "Preferences", "Reexport", "UUIDs", "t8code_jll"] @@ -2758,7 +2227,6 @@ version = "0.1.1" [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" -version = "1.11.0" [[deps.ThreadingUtilities]] deps = ["ManualMemory"] @@ -2830,17 +2298,21 @@ uuid = "808ab39a-a642-4abf-81ff-4cb34ebbffa3" version = "0.1.2" [[deps.Trixi]] -deps = ["Accessors", "CodeTracking", "ConstructionBase", "DataStructures", "DelimitedFiles", "DiffEqBase", "DiffEqCallbacks", "Downloads", "EllipsisNotation", "FillArrays", "ForwardDiff", "HDF5", "LinearAlgebra", "LinearMaps", "LoopVectorization", "MPI", "MuladdMacro", "Octavian", "OffsetArrays", "P4est", "Polyester", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SimpleUnPack", "SparseArrays", "StableRNGs", "StartUpDG", "Static", "StaticArrayInterface", "StaticArrays", "StrideArrays", "StructArrays", "SummationByPartsOperators", "T8code", "TimerOutputs", "Triangulate", "TriplotBase", "TriplotRecipes", "TrixiBase", "UUIDs"] -git-tree-sha1 = "9c925440d5076380c03e8d5f5ce82762d3a98ca4" +deps = ["Accessors", "Adapt", "CodeTracking", "ConstructionBase", "DataStructures", "DelimitedFiles", "DiffEqBase", "DiffEqCallbacks", "Downloads", "EllipsisNotation", "FillArrays", "ForwardDiff", "HDF5", "KernelAbstractions", "LinearAlgebra", "LinearMaps", "LoopVectorization", "MPI", "MuladdMacro", "Octavian", "OffsetArrays", "P4est", "Polyester", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SimpleUnPack", "SparseArrays", "StableRNGs", "StartUpDG", "Static", "StaticArrayInterface", "StaticArrays", "StrideArrays", "StructArrays", "SummationByPartsOperators", "T8code", "TimerOutputs", "Triangulate", "TriplotBase", "TriplotRecipes", "TrixiBase", "UUIDs"] +git-tree-sha1 = "60bbfb89e83a1a797649a009ee4ebc517b9aeaf8" uuid = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" -version = "0.12.6" +version = "0.12.7" [deps.Trixi.extensions] + TrixiAMDGPUExt = "AMDGPU" + TrixiCUDAExt = "CUDA" TrixiConvexECOSExt = ["Convex", "ECOS"] TrixiMakieExt = "Makie" TrixiNLsolveExt = "NLsolve" [deps.Trixi.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Convex = "f65535da-76fb-5f13-bab9-19810c17039a" ECOS = "e2685f51-7e38-5353-a97d-a921fd2c8199" Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" @@ -2865,7 +2337,6 @@ version = "1.4.0" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" -version = "1.11.0" [[deps.UnPack]] git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" @@ -2874,7 +2345,6 @@ version = "1.0.2" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" -version = "1.11.0" [[deps.UnicodeFun]] deps = ["REPL"] @@ -3034,15 +2504,15 @@ version = "1.1.3+0" [[deps.libaom_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "522c1df09d05a71785765d19c9524661234738e9" +git-tree-sha1 = "4bba74fa59ab0755167ad24f98800fe5d727175b" uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.11.0+0" +version = "3.12.1+0" [[deps.libass_jll]] deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "e17c115d55c5fbb7e52ebedb427a0dca79d4484e" +git-tree-sha1 = "125eedcb0a4a0bba65b657251ce1d27c8714e9d6" uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.2+0" +version = "0.17.4+0" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] @@ -3082,7 +2552,7 @@ version = "1.6.0+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.59.0+0" +version = "1.52.0+1" [[deps.oneTBB_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -3102,13 +2572,13 @@ uuid = "4ee9bed8-4011-53f7-90c2-22363c2f500d" version = "3.0.1+0" [[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "14cc7083fc6dff3cc44f2bc435ee96d06ed79aa7" uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" +version = "10164.0.1+0" [[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e7b67590c14d487e734dcb925924c5dc43ec85f3" uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" +version = "4.1.0+0" diff --git a/examples/Project.toml b/examples/Project.toml index a010312..2ed7889 100644 --- a/examples/Project.toml +++ b/examples/Project.toml @@ -1,27 +1,13 @@ [deps] -Ariadne = "0be81120-40bf-4f8b-adf0-26103efb66f1" +BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" -DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" Implicit = "7f538e44-2768-4ef2-af90-2110c0378286" -KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -Krylov = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" -KrylovPreconditioners = "45d422c2-293f-44ce-8315-2cb988662dec" -LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -Observables = "510215fc-4207-5dde-b226-833fc4488ee2" -OffsetArrays = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" OrdinaryDiffEqLowStorageRK = "b0944070-b475-4768-8dec-fb6eb410534d" -OrdinaryDiffEqSDIRK = "2d112036-d095-4a1e-ab9a-08536f3ecdbf" -OrdinaryDiffEqSSPRK = "669c94d9-1f4b-4b64-b377-1aa079aa2388" Revise = "295af30f-e4ad-537b-8983-00126c2a3abe" -SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -SummationByPartsOperators = "9f78cca6-572e-554e-b819-917d2f1cf240" Trixi = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" -[sources] -Ariadne = {path = ".."} -Implicit = {path = "../libs/Implicit"} +[sources.Ariadne] +path = ".." -[compat] -julia = "1.10" +[sources.Implicit] +path = "../libs/Implicit" diff --git a/examples/trixi_lid_driven_linear.jl b/examples/trixi_lid_driven_linear.jl index 5327b5c..b3b22e1 100644 --- a/examples/trixi_lid_driven_linear.jl +++ b/examples/trixi_lid_driven_linear.jl @@ -30,7 +30,7 @@ sol = solve( ode, Implicit.RKLSSPIMEX332(); #Implicit.KS22(); - dt = 0.001, # solve needs some value here but it will be overwritten by the stepsize_callback + dt = 0.01/8, # solve needs some value here but it will be overwritten by the stepsize_callback ode_default_options()..., callback = callbacks, # verbose=1, krylov_algo = :gmres, diff --git a/libs/Implicit/Manifest.toml b/libs/Implicit/Manifest.toml index 3130175..328a1b8 100644 --- a/libs/Implicit/Manifest.toml +++ b/libs/Implicit/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.11.5" +julia_version = "1.10.6" manifest_format = "2.0" -project_hash = "620c71fb489466ffbb11337c9833c44e98ee2776" +project_hash = "4749e69c306e0c5ed3e494be3dbe784a359249ce" [[deps.ADTypes]] git-tree-sha1 = "be7ae030256b8ef14a441726c4c37766b90b93a3" @@ -81,7 +81,7 @@ version = "2.5.0" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.2" +version = "1.1.1" [[deps.Ariadne]] deps = ["Enzyme", "Krylov", "LinearAlgebra", "SparseArrays"] @@ -123,7 +123,24 @@ version = "7.19.0" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" -version = "1.11.0" + +[[deps.Atomix]] +deps = ["UnsafeAtomics"] +git-tree-sha1 = "b5bb4dc6248fde467be2a863eb8452993e74d402" +uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" +version = "1.1.1" + + [deps.Atomix.extensions] + AtomixCUDAExt = "CUDA" + AtomixMetalExt = "Metal" + AtomixOpenCLExt = "OpenCL" + AtomixoneAPIExt = "oneAPI" + + [deps.Atomix.weakdeps] + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + OpenCL = "08131aa3-fb12-5dee-8b74-c09406e224a2" + oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" [[deps.AutoHashEquals]] git-tree-sha1 = "4ec6b48702dacc5994a835c1189831755e4e76ef" @@ -132,7 +149,6 @@ version = "2.2.0" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" -version = "1.11.0" [[deps.BitTwiddlingConvenienceFunctions]] deps = ["Static"] @@ -271,7 +287,6 @@ version = "1.0.0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" -version = "1.11.0" [[deps.DelimitedFiles]] deps = ["Mmap"] @@ -281,9 +296,9 @@ version = "1.9.1" [[deps.DiffEqBase]] deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "TruncatedStacktraces"] -git-tree-sha1 = "e9b34e0eb3443492f396c97e7fed08630752a4f2" +git-tree-sha1 = "52af5ee5af4eb6ca03b3782bf65c1e5fc3024c86" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.177.2" +version = "6.178.0" [deps.DiffEqBase.extensions] DiffEqBaseCUDAExt = "CUDA" @@ -390,7 +405,6 @@ version = "0.7.3" [[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" -version = "1.11.0" [[deps.DocStringExtensions]] git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c" @@ -415,9 +429,9 @@ version = "1.0.5" [[deps.Enzyme]] deps = ["CEnum", "EnzymeCore", "Enzyme_jll", "GPUCompiler", "InteractiveUtils", "LLVM", "Libdl", "LinearAlgebra", "ObjectFile", "PrecompileTools", "Preferences", "Printf", "Random", "SparseArrays"] -git-tree-sha1 = "32a24059c12417620b747fcae9e0864d45ef92b0" +git-tree-sha1 = "80867f06e51f1a58913bc0c1413d64207f8bf839" uuid = "7da242da-08ed-463a-9acd-ee780be4f1d9" -version = "0.13.61" +version = "0.13.62" [deps.Enzyme.extensions] EnzymeBFloat16sExt = "BFloat16s" @@ -514,7 +528,6 @@ version = "1.1.3" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" -version = "1.11.0" [[deps.FillArrays]] deps = ["LinearAlgebra"] @@ -562,7 +575,6 @@ version = "0.5.2" [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" -version = "1.11.0" [[deps.GPUArraysCore]] deps = ["Adapt"] @@ -617,14 +629,13 @@ version = "0.1.1" [[deps.IntelOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] -git-tree-sha1 = "0f14a5456bdc6b9731a5682f439a672750a09e48" +git-tree-sha1 = "ec1debd61c300961f98064cfb21287613ad7f303" uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2025.0.4+0" +version = "2025.2.0+0" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -version = "1.11.0" [[deps.InverseFunctions]] git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" @@ -651,9 +662,9 @@ version = "1.0.0" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "a007feb38b422fbdab534406aeca1b86823cb4d6" +git-tree-sha1 = "0533e564aae234aff59ab625543145446d8b6ec2" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.7.0" +version = "1.7.1" [[deps.Jieko]] deps = ["ExproniconLite"] @@ -661,6 +672,18 @@ git-tree-sha1 = "2f05ed29618da60c06a87e9c033982d4f71d0b6c" uuid = "ae98c720-c025-4a4a-838c-29b094483192" version = "0.2.1" +[[deps.KernelAbstractions]] +deps = ["Adapt", "Atomix", "InteractiveUtils", "MacroTools", "PrecompileTools", "Requires", "StaticArrays", "UUIDs"] +git-tree-sha1 = "83c617e9e9b02306a7acab79e05ec10253db7c87" +uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" +version = "0.9.38" +weakdeps = ["EnzymeCore", "LinearAlgebra", "SparseArrays"] + + [deps.KernelAbstractions.extensions] + EnzymeExt = "EnzymeCore" + LinearAlgebraExt = "LinearAlgebra" + SparseArraysExt = "SparseArrays" + [[deps.Kronecker]] deps = ["LinearAlgebra", "NamedDims", "SparseArrays", "StatsBase"] git-tree-sha1 = "9253429e28cceae6e823bec9ffde12460d79bb38" @@ -705,7 +728,6 @@ version = "0.1.17" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" -version = "1.11.0" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] @@ -715,17 +737,16 @@ 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.6.0+0" +version = "8.4.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.7.2+0" +version = "1.6.4+0" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] @@ -740,7 +761,6 @@ version = "0.9.1+6" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" -version = "1.11.0" [[deps.Libiconv_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -757,7 +777,6 @@ version = "0.9.2" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -version = "1.11.0" [[deps.LinearMaps]] deps = ["LinearAlgebra"] @@ -793,7 +812,6 @@ version = "0.3.29" [[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"] @@ -812,9 +830,9 @@ version = "0.12.172" [[deps.MKL_jll]] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] -git-tree-sha1 = "5de60bc6cb3899cd318d80d627560fae2e2d99ae" +git-tree-sha1 = "282cadc186e7b2ae0eeadbd7a4dffed4196ae2aa" uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2025.0.1+1" +version = "2025.2.0+0" [[deps.MPI]] deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] @@ -861,12 +879,11 @@ version = "0.1.8" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" -version = "1.11.0" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.6+0" +version = "2.28.2+1" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -882,7 +899,6 @@ version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" -version = "1.11.0" [[deps.Moshi]] deps = ["ExproniconLite", "Jieko"] @@ -892,7 +908,7 @@ version = "0.3.7" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.12.12" +version = "2023.1.10" [[deps.MuladdMacro]] git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" @@ -966,12 +982,12 @@ weakdeps = ["Adapt"] [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.27+1" +version = "0.3.23+4" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.5+0" +version = "0.8.1+2" [[deps.OpenMPI_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML", "Zlib_jll"] @@ -1021,15 +1037,9 @@ uuid = "4c1a95c7-462a-4a7e-b284-959c63fbf1dc" version = "0.3.0" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.11.0" - - [deps.Pkg.extensions] - REPLExt = "REPL" - - [deps.Pkg.weakdeps] - REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.10.0" [[deps.PkgVersion]] deps = ["Pkg"] @@ -1076,7 +1086,6 @@ version = "2.4.0" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" -version = "1.11.0" [[deps.ProgressBars]] deps = ["Printf"] @@ -1089,10 +1098,13 @@ git-tree-sha1 = "1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493d" uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" version = "1.3.0" +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -version = "1.11.0" [[deps.RecipesBase]] deps = ["PrecompileTools"] @@ -1102,9 +1114,9 @@ version = "1.3.4" [[deps.RecursiveArrayTools]] deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "efc718978d97745c58e69c5115a35c51a080e45e" +git-tree-sha1 = "4dd1a95cc16d5abdccc4eac5faf6bc73904be1a2" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "3.34.1" +version = "3.35.0" [deps.RecursiveArrayTools.extensions] RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" @@ -1164,9 +1176,9 @@ version = "0.6.43" [[deps.SciMLBase]] deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "50c540cd0569d43d5cec57b9610e7f1361d3532d" +git-tree-sha1 = "c9dc4c04bcb0146a35dd6af726073c5738b80e3b" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.103.1" +version = "2.104.0" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" @@ -1214,7 +1226,6 @@ version = "1.3.0" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" -version = "1.11.0" [[deps.Setfield]] deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] @@ -1229,7 +1240,6 @@ version = "1.1.0" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" -version = "1.11.0" [[deps.SortingAlgorithms]] deps = ["DataStructures"] @@ -1240,7 +1250,7 @@ version = "1.2.1" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.11.0" +version = "1.10.0" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] @@ -1311,14 +1321,9 @@ uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" version = "1.4.3" [[deps.Statistics]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" +deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.11.1" -weakdeps = ["SparseArrays"] - - [deps.Statistics.extensions] - SparseArraysExt = ["SparseArrays"] +version = "1.10.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] @@ -1355,6 +1360,7 @@ deps = ["ConstructionBase", "DataAPI", "Tables"] git-tree-sha1 = "8ad2e38cbb812e29348719cc63580ec1dfeb9de4" uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" version = "0.7.1" +weakdeps = ["Adapt", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "SparseArrays", "StaticArrays"] [deps.StructArrays.extensions] StructArraysAdaptExt = "Adapt" @@ -1363,14 +1369,6 @@ version = "0.7.1" 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.StructIO]] git-tree-sha1 = "c581be48ae1cbf83e899b14c07a807e1787512cc" uuid = "53d494c1-5632-5724-8f4c-31dff12d585f" @@ -1379,7 +1377,7 @@ version = "0.3.1" [[deps.SuiteSparse_jll]] deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.7.0+0" +version = "7.2.1+1" [[deps.SummationByPartsOperators]] deps = ["ArgCheck", "AutoHashEquals", "FFTW", "InteractiveUtils", "LinearAlgebra", "LoopVectorization", "MuladdMacro", "PolynomialBases", "PrecompileTools", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SimpleUnPack", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Unrolled"] @@ -1403,9 +1401,9 @@ version = "0.5.81" [[deps.SymbolicIndexingInterface]] deps = ["Accessors", "ArrayInterface", "PrettyTables", "RuntimeGeneratedFunctions", "StaticArraysCore"] -git-tree-sha1 = "658f6d01bfe68d6bf47915bf5d868228138c7d71" +git-tree-sha1 = "59ca6eddaaa9849e7de9fd1153b6faf0b1db7b80" uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" -version = "0.3.41" +version = "0.3.42" [[deps.T8code]] deps = ["CEnum", "Libdl", "MPI", "MPIPreferences", "Preferences", "Reexport", "UUIDs", "t8code_jll"] @@ -1499,17 +1497,21 @@ uuid = "808ab39a-a642-4abf-81ff-4cb34ebbffa3" version = "0.1.2" [[deps.Trixi]] -deps = ["Accessors", "CodeTracking", "ConstructionBase", "DataStructures", "DelimitedFiles", "DiffEqBase", "DiffEqCallbacks", "Downloads", "EllipsisNotation", "FillArrays", "ForwardDiff", "HDF5", "LinearAlgebra", "LinearMaps", "LoopVectorization", "MPI", "MuladdMacro", "Octavian", "OffsetArrays", "P4est", "Polyester", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SimpleUnPack", "SparseArrays", "StableRNGs", "StartUpDG", "Static", "StaticArrayInterface", "StaticArrays", "StrideArrays", "StructArrays", "SummationByPartsOperators", "T8code", "TimerOutputs", "Triangulate", "TriplotBase", "TriplotRecipes", "TrixiBase", "UUIDs"] -git-tree-sha1 = "9c925440d5076380c03e8d5f5ce82762d3a98ca4" +deps = ["Accessors", "Adapt", "CodeTracking", "ConstructionBase", "DataStructures", "DelimitedFiles", "DiffEqBase", "DiffEqCallbacks", "Downloads", "EllipsisNotation", "FillArrays", "ForwardDiff", "HDF5", "KernelAbstractions", "LinearAlgebra", "LinearMaps", "LoopVectorization", "MPI", "MuladdMacro", "Octavian", "OffsetArrays", "P4est", "Polyester", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SimpleUnPack", "SparseArrays", "StableRNGs", "StartUpDG", "Static", "StaticArrayInterface", "StaticArrays", "StrideArrays", "StructArrays", "SummationByPartsOperators", "T8code", "TimerOutputs", "Triangulate", "TriplotBase", "TriplotRecipes", "TrixiBase", "UUIDs"] +git-tree-sha1 = "60bbfb89e83a1a797649a009ee4ebc517b9aeaf8" uuid = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" -version = "0.12.6" +version = "0.12.7" [deps.Trixi.extensions] + TrixiAMDGPUExt = "AMDGPU" + TrixiCUDAExt = "CUDA" TrixiConvexECOSExt = ["Convex", "ECOS"] TrixiMakieExt = "Makie" TrixiNLsolveExt = "NLsolve" [deps.Trixi.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Convex = "f65535da-76fb-5f13-bab9-19810c17039a" ECOS = "e2685f51-7e38-5353-a97d-a921fd2c8199" Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" @@ -1534,7 +1536,6 @@ version = "1.4.0" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" -version = "1.11.0" [[deps.UnPack]] git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" @@ -1543,7 +1544,6 @@ version = "1.0.2" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" -version = "1.11.0" [[deps.Unrolled]] deps = ["MacroTools"] @@ -1551,6 +1551,15 @@ git-tree-sha1 = "6cc9d682755680e0f0be87c56392b7651efc2c7b" uuid = "9602ed7d-8fef-5bc8-8597-8f21381861e8" version = "0.1.5" +[[deps.UnsafeAtomics]] +git-tree-sha1 = "b13c4edda90890e5b04ba24e20a310fbe6f249ff" +uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" +version = "0.3.0" +weakdeps = ["LLVM"] + + [deps.UnsafeAtomics.extensions] + UnsafeAtomicsLLVM = ["LLVM"] + [[deps.VTKBase]] git-tree-sha1 = "c2d0db3ef09f1942d08ea455a9e252594be5f3b6" uuid = "4004b06d-e244-455f-a6ce-a5f9919cc534" @@ -1609,7 +1618,7 @@ version = "5.11.0+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.59.0+0" +version = "1.52.0+1" [[deps.oneTBB_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] diff --git a/libs/Implicit/Project.toml b/libs/Implicit/Project.toml index 239a4e4..0b33301 100644 --- a/libs/Implicit/Project.toml +++ b/libs/Implicit/Project.toml @@ -12,14 +12,13 @@ SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462" Trixi = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -[sources] -Ariadne = {path = "../.."} - [compat] Ariadne = "0.1.0" DiffEqBase = "6.174.0" Krylov = "0.10.1" -LinearAlgebra = "1.11.0" SciMLBase = "2.91.0" Trixi = "0.12.5" UnPack = "1.0.2" + +[sources.Ariadne] +path = "../.." diff --git a/libs/Implicit/src/linear_imex.jl b/libs/Implicit/src/linear_imex.jl index e2aa144..cd4c2fe 100644 --- a/libs/Implicit/src/linear_imex.jl +++ b/libs/Implicit/src/linear_imex.jl @@ -45,13 +45,13 @@ end function (::RKLIMEX{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, ustages, jstages, stage, RK, M, lin_du_tmp, lin_du_tmp1, workspace) - F!(du, u, p) = f1!(du, u, p, t) ## parabolic + F!(du, u, p) = f1!(du, u, p, t) ## parabolic if stage == 1 # Stage 1: ## f2 is the conservative part ## f1 is the parabolic part J = JacobianOperator(F!, du, uₙ, p) - M = LMOperator(J, RK.ah[stage,stage] * Δt) + M = LMOperator(J, RK.ah[stage,stage] * Δt) krylov_solve!(workspace, M, uₙ, atol = 1e-6, rtol = 1e-6) @. u = workspace.x J = JacobianOperator(F!, du, u, p) @@ -59,43 +59,44 @@ function (::RKLIMEX{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, u f2!(du, workspace.x, p, t + RK.c[stage] * Δt) f1!(du_tmp, workspace.x, p, t + RK.c[stage] * Δt) - stages[stage] .= du .+ du_tmp - jstages[stage] - ustages[stage] .= u + @. stages[stage] = du + du_tmp - jstages[stage] + @. ustages[stage] = u # @. u = uₙ + RK.b[1] * Δt * stages[1] elseif stage == 2 - J = JacobianOperator(F!, du, ustages[1], p) M = LMOperator(J, RK.ah[stage,stage] * Δt) mul!(lin_du_tmp, M.J, uₙ) # mul!(lin_du_tmp1, J, u) - res .= uₙ + RK.a[stage,1] * Δt * stages[1] - Δt * RK.ah[stage,1] * jstages[1] + @. res = uₙ + RK.a[stage,1] * Δt * stages[1] - Δt * RK.ah[stage,1] * jstages[1] krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) @. u = workspace.x J = JacobianOperator(F!, du, u, p) mul!(jstages[stage], J, u) f2!(du, workspace.x, p, t + RK.c[stage] * Δt) - f1!(du_tmp, workspace.x, p, t + RK.c[stage] * Δt) - stages[stage] .= du .+ du_tmp - jstages[stage] - ustages[stage] .= u + f1!(du_tmp, workspace.x, p, t + RK.c[stage] * Δt) + @. stages[stage] = du + du_tmp - jstages[stage] + @. ustages[stage] = u elseif stage == 3 - - J = JacobianOperator(F!, du, ustages[2], p) - M = LMOperator(J, RK.ah[stage,stage] * Δt) - mul!(lin_du_tmp, M.J, uₙ) -# mul!(lin_du_tmp1, J, u) - res .= uₙ + RK.a[stage,1] * Δt * stages[1] + RK.a[stage,2] * Δt * stages[2] - Δt * RK.ah[stage,1] * jstages[1] - Δt * RK.ah[stage,2] * jstages[2] - krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) - @. u = workspace.x - J = JacobianOperator(F!, du, u, p) - mul!(jstages[stage], J, u) - f2!(du, workspace.x, p, t + RK.c[stage] * Δt) - f1!(du_tmp, workspace.x, p, t + RK.c[stage] * Δt) - stages[stage] .= du .+ du_tmp - jstages[stage] - ustages[stage] .= u - - @. u = uₙ + RK.b[1] * Δt * stages[1] + RK.b[2] * Δt * stages[2] + RK.b[3] * Δt * stages[3] - RK.bh[1] * Δt * jstages[1] - RK.bh[2] * Δt * jstages[2] - RK.bh[3] * Δt * jstages[3] + @show "inner stage" + @time J = JacobianOperator(F!, du, ustages[2], p) + @time M = LMOperator(J, RK.ah[stage,stage] * Δt) + @show "mul function" + @time mul!(lin_du_tmp, M.J, uₙ) + @time @. res = uₙ + RK.a[stage,1] * Δt * stages[1] + RK.a[stage,2] * Δt * stages[2] - Δt * RK.ah[stage,1] * jstages[1] - Δt * RK.ah[stage,2] * jstages[2] + @show "krylov solve" + @time krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) + @time @. u = workspace.x + @time J = JacobianOperator(F!, du, u, p) + @show "mul function" + @time mul!(jstages[stage], J, u) + @time f2!(du, workspace.x, p, t + RK.c[stage] * Δt) + @time f1!(du_tmp, workspace.x, p, t + RK.c[stage] * Δt) +@time @. stages[stage] = du .+ du_tmp .- jstages[stage] +@time @. ustages[stage] = u + +@time @. u = uₙ + RK.b[1] * Δt * stages[1] + RK.b[2] * Δt * stages[2] + RK.b[3] * Δt * stages[3] - RK.bh[1] * Δt * jstages[1] - RK.bh[2] * Δt * jstages[2] - RK.bh[3] * Δt * jstages[3] end end From 8067d5512430776683111a3df4cedd3245d1b988 Mon Sep 17 00:00:00 2001 From: Marco Artiano Date: Fri, 25 Jul 2025 18:47:16 +0200 Subject: [PATCH 02/10] update Trixi and fix allocations --- examples/Manifest.toml | 6 ++---- examples/trixi_lid_driven_linear.jl | 5 ++--- libs/Implicit/Manifest.toml | 8 +++----- libs/Implicit/Project.toml | 1 - libs/Implicit/src/linear_imex.jl | 32 +++++++++++++---------------- src/Ariadne.jl | 29 ++++++++++++++++++++------ 6 files changed, 44 insertions(+), 37 deletions(-) diff --git a/examples/Manifest.toml b/examples/Manifest.toml index 17f5ffd..74e6be9 100644 --- a/examples/Manifest.toml +++ b/examples/Manifest.toml @@ -2299,19 +2299,17 @@ version = "0.1.2" [[deps.Trixi]] deps = ["Accessors", "Adapt", "CodeTracking", "ConstructionBase", "DataStructures", "DelimitedFiles", "DiffEqBase", "DiffEqCallbacks", "Downloads", "EllipsisNotation", "FillArrays", "ForwardDiff", "HDF5", "KernelAbstractions", "LinearAlgebra", "LinearMaps", "LoopVectorization", "MPI", "MuladdMacro", "Octavian", "OffsetArrays", "P4est", "Polyester", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SimpleUnPack", "SparseArrays", "StableRNGs", "StartUpDG", "Static", "StaticArrayInterface", "StaticArrays", "StrideArrays", "StructArrays", "SummationByPartsOperators", "T8code", "TimerOutputs", "Triangulate", "TriplotBase", "TriplotRecipes", "TrixiBase", "UUIDs"] -git-tree-sha1 = "60bbfb89e83a1a797649a009ee4ebc517b9aeaf8" +git-tree-sha1 = "2808d7f7caf98c9a0fdc507cc0317ba626ea7436" uuid = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" -version = "0.12.7" +version = "0.13.1" [deps.Trixi.extensions] - TrixiAMDGPUExt = "AMDGPU" TrixiCUDAExt = "CUDA" TrixiConvexECOSExt = ["Convex", "ECOS"] TrixiMakieExt = "Makie" TrixiNLsolveExt = "NLsolve" [deps.Trixi.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Convex = "f65535da-76fb-5f13-bab9-19810c17039a" ECOS = "e2685f51-7e38-5353-a97d-a921fd2c8199" diff --git a/examples/trixi_lid_driven_linear.jl b/examples/trixi_lid_driven_linear.jl index b3b22e1..ac8a8fe 100644 --- a/examples/trixi_lid_driven_linear.jl +++ b/examples/trixi_lid_driven_linear.jl @@ -16,13 +16,12 @@ using CairoMakie # polyester = false # ``` -@assert !Trixi._PREFERENCE_POLYESTER -@assert !Trixi._PREFERENCE_LOOPVECTORIZATION +#@assert !Trixi._PREFERENCE_POLYESTER +#@assert !Trixi._PREFERENCE_LOOPVECTORIZATION trixi_include(joinpath(examples_dir(), "tree_2d_dgsem", "elixir_navierstokes_lid_driven_cavity.jl"), sol = nothing, mu = 0.1); ode = semidiscretize(semi, (0.0, 10.0)) - ############################################################################### # run the simulation diff --git a/libs/Implicit/Manifest.toml b/libs/Implicit/Manifest.toml index 328a1b8..1809ab5 100644 --- a/libs/Implicit/Manifest.toml +++ b/libs/Implicit/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.10.6" manifest_format = "2.0" -project_hash = "4749e69c306e0c5ed3e494be3dbe784a359249ce" +project_hash = "31c65a1409964e554ccdc84b32f1cdda54ea926b" [[deps.ADTypes]] git-tree-sha1 = "be7ae030256b8ef14a441726c4c37766b90b93a3" @@ -1498,19 +1498,17 @@ version = "0.1.2" [[deps.Trixi]] deps = ["Accessors", "Adapt", "CodeTracking", "ConstructionBase", "DataStructures", "DelimitedFiles", "DiffEqBase", "DiffEqCallbacks", "Downloads", "EllipsisNotation", "FillArrays", "ForwardDiff", "HDF5", "KernelAbstractions", "LinearAlgebra", "LinearMaps", "LoopVectorization", "MPI", "MuladdMacro", "Octavian", "OffsetArrays", "P4est", "Polyester", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SimpleUnPack", "SparseArrays", "StableRNGs", "StartUpDG", "Static", "StaticArrayInterface", "StaticArrays", "StrideArrays", "StructArrays", "SummationByPartsOperators", "T8code", "TimerOutputs", "Triangulate", "TriplotBase", "TriplotRecipes", "TrixiBase", "UUIDs"] -git-tree-sha1 = "60bbfb89e83a1a797649a009ee4ebc517b9aeaf8" +git-tree-sha1 = "2808d7f7caf98c9a0fdc507cc0317ba626ea7436" uuid = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" -version = "0.12.7" +version = "0.13.1" [deps.Trixi.extensions] - TrixiAMDGPUExt = "AMDGPU" TrixiCUDAExt = "CUDA" TrixiConvexECOSExt = ["Convex", "ECOS"] TrixiMakieExt = "Makie" TrixiNLsolveExt = "NLsolve" [deps.Trixi.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Convex = "f65535da-76fb-5f13-bab9-19810c17039a" ECOS = "e2685f51-7e38-5353-a97d-a921fd2c8199" diff --git a/libs/Implicit/Project.toml b/libs/Implicit/Project.toml index 0b33301..b7e6d5a 100644 --- a/libs/Implicit/Project.toml +++ b/libs/Implicit/Project.toml @@ -17,7 +17,6 @@ Ariadne = "0.1.0" DiffEqBase = "6.174.0" Krylov = "0.10.1" SciMLBase = "2.91.0" -Trixi = "0.12.5" UnPack = "1.0.2" [sources.Ariadne] diff --git a/libs/Implicit/src/linear_imex.jl b/libs/Implicit/src/linear_imex.jl index cd4c2fe..d7e56bc 100644 --- a/libs/Implicit/src/linear_imex.jl +++ b/libs/Implicit/src/linear_imex.jl @@ -79,24 +79,20 @@ function (::RKLIMEX{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, u @. ustages[stage] = u elseif stage == 3 - @show "inner stage" - @time J = JacobianOperator(F!, du, ustages[2], p) - @time M = LMOperator(J, RK.ah[stage,stage] * Δt) - @show "mul function" - @time mul!(lin_du_tmp, M.J, uₙ) - @time @. res = uₙ + RK.a[stage,1] * Δt * stages[1] + RK.a[stage,2] * Δt * stages[2] - Δt * RK.ah[stage,1] * jstages[1] - Δt * RK.ah[stage,2] * jstages[2] - @show "krylov solve" - @time krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) - @time @. u = workspace.x - @time J = JacobianOperator(F!, du, u, p) - @show "mul function" - @time mul!(jstages[stage], J, u) - @time f2!(du, workspace.x, p, t + RK.c[stage] * Δt) - @time f1!(du_tmp, workspace.x, p, t + RK.c[stage] * Δt) -@time @. stages[stage] = du .+ du_tmp .- jstages[stage] -@time @. ustages[stage] = u - -@time @. u = uₙ + RK.b[1] * Δt * stages[1] + RK.b[2] * Δt * stages[2] + RK.b[3] * Δt * stages[3] - RK.bh[1] * Δt * jstages[1] - RK.bh[2] * Δt * jstages[2] - RK.bh[3] * Δt * jstages[3] + J = JacobianOperator(F!, du, ustages[2], p) + M = LMOperator(J, RK.ah[stage,stage] * Δt) + mul!(lin_du_tmp, M.J, uₙ) + @. res = uₙ + RK.a[stage,1] * Δt * stages[1] + RK.a[stage,2] * Δt * stages[2] - Δt * RK.ah[stage,1] * jstages[1] - Δt * RK.ah[stage,2] * jstages[2] + krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) + @. u = workspace.x + J = JacobianOperator(F!, du, u, p) + mul!(jstages[stage], J, u) + f2!(du, workspace.x, p, t + RK.c[stage] * Δt) + f1!(du_tmp, workspace.x, p, t + RK.c[stage] * Δt) + @. stages[stage] = du .+ du_tmp .- jstages[stage] + @. ustages[stage] = u + + @. u = uₙ + RK.b[1] * Δt * stages[1] + RK.b[2] * Δt * stages[2] + RK.b[3] * Δt * stages[3] - RK.bh[1] * Δt * jstages[1] - RK.bh[2] * Δt * jstages[2] - RK.bh[3] * Δt * jstages[3] end end diff --git a/src/Ariadne.jl b/src/Ariadne.jl index 39217fe..e59e2b5 100644 --- a/src/Ariadne.jl +++ b/src/Ariadne.jl @@ -31,25 +31,42 @@ end abstract type AbstractJacobianOperator end + """ JacobianOperator Efficient implementation of `J(f,x,p) * v` and `v * J(f, x,p)'` """ -struct JacobianOperator{F, A, P} <: AbstractJacobianOperator +struct JacobianOperator{F, F′, A, P, P′} <: AbstractJacobianOperator f::F # F!(res, u, p) - f′::Union{Nothing, F} # cache + f′::F′ # cache res::A u::A p::P - p′::Union{Nothing, P} # cache - function JacobianOperator(f::F, res, u, p) where {F} - f′ = init_cache(f) + p′::P′ # cache +end + +""" + JacobianOperator(f::F, res, u, p; assume_p_const::Bool = false) + +Creates a Jacobian operator for `f!(res, u, p)` where `res` is the residual, +`u` is the state variable, and `p` are the parameters. + +If `assume_p_const` is `true`, the parameters `p` are assumed to be constant +during the Jacobian computation, which can improve performance by not requiring the +shadow for `p`. +""" +function JacobianOperator(f::F, res, u, p; assume_p_const::Bool = false) where {F} + f′ = init_cache(f) + if assume_p_const + p′ = nothing + else p′ = init_cache(p) - return new{F, typeof(u), typeof(p)}(f, f′, res, u, p, p′) end + return JacobianOperator(f, f′, res, u, p, p′) end + batch_size(::JacobianOperator) = 1 Base.size(J::JacobianOperator) = (length(J.res), length(J.u)) From e44e7f05acf6b4613cf277d826b767df27e4cdae Mon Sep 17 00:00:00 2001 From: Marco Artiano Date: Fri, 25 Jul 2025 22:33:45 +0200 Subject: [PATCH 03/10] some minor changes and testing --- examples/Manifest.toml | 98 ++++++++++++++++++++++----- examples/Project.toml | 2 + examples/test_coloring.jl | 22 ++++++ libs/Implicit/Manifest.toml | 93 ++++++++++++++++++++++--- libs/Implicit/Project.toml | 1 + libs/Implicit/src/colored_jacobian.jl | 74 ++++++++++++++++++++ 6 files changed, 264 insertions(+), 26 deletions(-) create mode 100644 examples/test_coloring.jl create mode 100644 libs/Implicit/src/colored_jacobian.jl diff --git a/examples/Manifest.toml b/examples/Manifest.toml index 74e6be9..d34aaca 100644 --- a/examples/Manifest.toml +++ b/examples/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.10.6" manifest_format = "2.0" -project_hash = "070083c91c766d574137de09d21da151850fae1c" +project_hash = "63d7481891df20b614f3ef18d0170cad6ff02136" [[deps.ADTypes]] git-tree-sha1 = "be7ae030256b8ef14a441726c4c37766b90b93a3" @@ -98,6 +98,12 @@ path = ".." uuid = "0be81120-40bf-4f8b-adf0-26103efb66f1" version = "0.1.0" +[[deps.ArnoldiMethod]] +deps = ["LinearAlgebra", "Random", "StaticArrays"] +git-tree-sha1 = "d57bd3762d308bded22c3b82d033bff85f6195c6" +uuid = "ec485272-7323-5ecc-a04f-4719b315124d" +version = "0.4.0" + [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra"] git-tree-sha1 = "9606d7832795cbef89e06a550475be300364a8aa" @@ -234,9 +240,9 @@ version = "1.1.1" [[deps.CairoMakie]] deps = ["CRC32c", "Cairo", "Cairo_jll", "Colors", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools"] -git-tree-sha1 = "22c63a303e8d6ff1a02a0933d579dbdb6e0f2925" +git-tree-sha1 = "9bd45574379e50579a78774334f4a1f1238c0af5" uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" -version = "0.15.4" +version = "0.13.10" [[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"] @@ -369,12 +375,6 @@ weakdeps = ["InverseFunctions"] [deps.CompositionsBase.extensions] CompositionsBaseInverseFunctionsExt = "InverseFunctions" -[[deps.ComputePipeline]] -deps = ["Observables", "Preferences"] -git-tree-sha1 = "e215ba0e9a9e9377f2ed87cf3eb26840c8990585" -uuid = "95dc2771-c249-4cd0-9c9f-1f3b4330693c" -version = "0.1.3" - [[deps.ConcreteStructs]] git-tree-sha1 = "f749037478283d372048690eb3b5f92a79432b34" uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" @@ -441,9 +441,9 @@ version = "1.9.1" [[deps.DiffEqBase]] deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "TruncatedStacktraces"] -git-tree-sha1 = "52af5ee5af4eb6ca03b3782bf65c1e5fc3024c86" +git-tree-sha1 = "2d87d7bd165c1ca0d11923a9fabe90a9d71e88a6" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.178.0" +version = "6.176.0" [deps.DiffEqBase.extensions] DiffEqBaseCUDAExt = "CUDA" @@ -760,6 +760,24 @@ weakdeps = ["PDMats", "SparseArrays", "Statistics"] FillArraysSparseArraysExt = "SparseArrays" FillArraysStatisticsExt = "Statistics" +[[deps.FiniteDiff]] +deps = ["ArrayInterface", "LinearAlgebra", "Setfield"] +git-tree-sha1 = "f089ab1f834470c525562030c8cfde4025d5e915" +uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" +version = "2.27.0" + + [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]] deps = ["Statistics"] git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" @@ -892,6 +910,12 @@ git-tree-sha1 = "8a6dbda1fd736d60cc477d99f2e7a042acfa46e8" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" version = "1.3.15+0" +[[deps.Graphs]] +deps = ["ArnoldiMethod", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] +git-tree-sha1 = "c5abfa0ae0aaee162a3fbb053c13ecda39be545b" +uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" +version = "1.13.0" + [[deps.GridLayoutBase]] deps = ["GeometryBasics", "InteractiveUtils", "Observables"] git-tree-sha1 = "dc6bed05c15523624909b3953686c5f5ffa10adc" @@ -1385,10 +1409,16 @@ uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" version = "0.5.16" [[deps.Makie]] -deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "ComputePipeline", "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", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "PNGFiles", "Packing", "Pkg", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] -git-tree-sha1 = "96d73e05b6f3079df0963b66c2844d162263a896" +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", "PNGFiles", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] +git-tree-sha1 = "1d7d16f0e02ec063becd7a140f619b2ffe5f2b11" uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" -version = "0.24.4" +version = "0.22.10" + +[[deps.MakieCore]] +deps = ["ColorTypes", "GeometryBasics", "IntervalSets", "Observables"] +git-tree-sha1 = "c3159eb1e3aa3e409edbb71f4035ed8b1fc16e23" +uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b" +version = "0.9.5" [[deps.ManualMemory]] git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" @@ -1638,6 +1668,12 @@ git-tree-sha1 = "cf181f0b1e6a18dfeb0ee8acc4a9d1672499626c" uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" version = "0.4.4" +[[deps.PackageExtensionCompat]] +git-tree-sha1 = "fb28e33b8a95c4cee25ce296c817d89cc2e53518" +uuid = "65ce6f38-6b18-4e1d-a461-8949797d7930" +version = "1.0.2" +weakdeps = ["Requires", "TOML"] + [[deps.Packing]] deps = ["GeometryBasics"] git-tree-sha1 = "bc5bf2ea3d5351edf285a06b0016788a121ce92c" @@ -1911,9 +1947,9 @@ version = "0.6.43" [[deps.SciMLBase]] deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "c9dc4c04bcb0146a35dd6af726073c5738b80e3b" +git-tree-sha1 = "d7bef263e23c7f5392071e4538b1949cee7ae458" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.104.0" +version = "2.99.0" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" @@ -1938,9 +1974,9 @@ version = "2.104.0" [[deps.SciMLOperators]] deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] -git-tree-sha1 = "3249fe77f322fe539e935ecb388c8290cd38a3fc" +git-tree-sha1 = "d82853c515a8d9d42c1ab493a2687a37f1e26c91" uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" -version = "1.3.1" +version = "0.4.0" weakdeps = ["SparseArrays", "StaticArraysCore"] [deps.SciMLOperators.extensions] @@ -2021,6 +2057,26 @@ deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" version = "1.10.0" +[[deps.SparseDiffTools]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Random", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "UnPack", "VertexSafeGraphs"] +git-tree-sha1 = "ccbf06a08573200853b1bd06203d8ccce8449578" +uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" +version = "2.26.0" + + [deps.SparseDiffTools.extensions] + SparseDiffToolsEnzymeExt = "Enzyme" + SparseDiffToolsPolyesterExt = "Polyester" + SparseDiffToolsPolyesterForwardDiffExt = "PolyesterForwardDiff" + SparseDiffToolsSymbolicsExt = "Symbolics" + SparseDiffToolsZygoteExt = "Zygote" + + [deps.SparseDiffTools.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + Polyester = "f517fe37-dbe3-4b94-8317-1923a5111588" + PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" + Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] git-tree-sha1 = "41852b8679f78c8d8961eeadc8f62cef861a52e3" @@ -2405,6 +2461,12 @@ git-tree-sha1 = "f59703fbab297efe6ad09ef1dc656f8f0a21ad28" uuid = "3b853605-1c98-4422-8364-4bd93ee0529e" version = "0.5.10" +[[deps.VertexSafeGraphs]] +deps = ["Graphs"] +git-tree-sha1 = "8351f8d73d7e880bfc042a8b6922684ebeafb35c" +uuid = "19fa3120-7c27-5ec5-8db8-b0b0aa330d6f" +version = "0.2.0" + [[deps.WebP]] deps = ["CEnum", "ColorTypes", "FileIO", "FixedPointNumbers", "ImageCore", "libwebp_jll"] git-tree-sha1 = "aa1ca3c47f119fbdae8770c29820e5e6119b83f2" diff --git a/examples/Project.toml b/examples/Project.toml index 2ed7889..e8abe88 100644 --- a/examples/Project.toml +++ b/examples/Project.toml @@ -4,6 +4,8 @@ CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" Implicit = "7f538e44-2768-4ef2-af90-2110c0378286" OrdinaryDiffEqLowStorageRK = "b0944070-b475-4768-8dec-fb6eb410534d" Revise = "295af30f-e4ad-537b-8983-00126c2a3abe" +SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +SparseDiffTools = "47a9eef4-7e08-11e9-0b38-333d64bd3804" Trixi = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" [sources.Ariadne] diff --git a/examples/test_coloring.jl b/examples/test_coloring.jl new file mode 100644 index 0000000..803c4a8 --- /dev/null +++ b/examples/test_coloring.jl @@ -0,0 +1,22 @@ +using Trixi +using Implicit + +trixi_include(joinpath(examples_dir(), "tree_2d_dgsem", "elixir_navierstokes_lid_driven_cavity.jl"), sol = nothing, mu = 0.1); + +F!(du, u, p) = Trixi.rhs_parabolic!(du, u, p, 0.0) +u = copy(ode.u0) +du = copy(u) + +J = Implicit.JacobianOperator(F!, du, u, semi) +Jsp = Implicit.collect(J) # Sparse Matrix Jacobian + + + +batched_updater = BatchedColoredUpdater(Jsp) + +N = length(batched_updater.color_groups) + +J_batched = Implicit.Ariadne.BatchedJacobianOperator{N}(F!, du, u, semi) +Implicit.Ariadne.mul!(batched_updater.result_matrix, J_batched, batched_updater.input_matrix) + +@btime Implicit.Ariadne.mul!(batched_updater.result_matrix, J_batched, batched_updater.input_matrix) \ No newline at end of file diff --git a/libs/Implicit/Manifest.toml b/libs/Implicit/Manifest.toml index 1809ab5..d5ef751 100644 --- a/libs/Implicit/Manifest.toml +++ b/libs/Implicit/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.6" +julia_version = "1.10.8" manifest_format = "2.0" -project_hash = "31c65a1409964e554ccdc84b32f1cdda54ea926b" +project_hash = "e9d74776ef521766573682fde17378dcecf69b4e" [[deps.ADTypes]] git-tree-sha1 = "be7ae030256b8ef14a441726c4c37766b90b93a3" @@ -89,6 +89,12 @@ path = "../.." uuid = "0be81120-40bf-4f8b-adf0-26103efb66f1" version = "0.1.0" +[[deps.ArnoldiMethod]] +deps = ["LinearAlgebra", "Random", "StaticArrays"] +git-tree-sha1 = "d57bd3762d308bded22c3b82d033bff85f6195c6" +uuid = "ec485272-7323-5ecc-a04f-4719b315124d" +version = "0.4.0" + [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra"] git-tree-sha1 = "9606d7832795cbef89e06a550475be300364a8aa" @@ -296,9 +302,9 @@ version = "1.9.1" [[deps.DiffEqBase]] deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "TruncatedStacktraces"] -git-tree-sha1 = "52af5ee5af4eb6ca03b3782bf65c1e5fc3024c86" +git-tree-sha1 = "2d87d7bd165c1ca0d11923a9fabe90a9d71e88a6" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.178.0" +version = "6.176.0" [deps.DiffEqBase.extensions] DiffEqBaseCUDAExt = "CUDA" @@ -545,6 +551,24 @@ version = "1.13.0" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +[[deps.FiniteDiff]] +deps = ["ArrayInterface", "LinearAlgebra", "Setfield"] +git-tree-sha1 = "f089ab1f834470c525562030c8cfde4025d5e915" +uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" +version = "2.27.0" + + [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.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] git-tree-sha1 = "910febccb28d493032495b7009dce7d7f7aee554" @@ -594,6 +618,12 @@ git-tree-sha1 = "eb6f1f48aa994f3018cbd029a17863c6535a266d" uuid = "d54b0c1a-921d-58e0-8e36-89d8069c0969" version = "0.5.8" +[[deps.Graphs]] +deps = ["ArnoldiMethod", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] +git-tree-sha1 = "c5abfa0ae0aaee162a3fbb053c13ecda39be545b" +uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" +version = "1.13.0" + [[deps.HDF5]] deps = ["Compat", "HDF5_jll", "Libdl", "MPIPreferences", "Mmap", "Preferences", "Printf", "Random", "Requires", "UUIDs"] git-tree-sha1 = "e856eef26cf5bf2b0f95f8f4fc37553c72c8641c" @@ -627,6 +657,11 @@ git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" version = "0.1.1" +[[deps.Inflate]] +git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d" +uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" +version = "0.1.5" + [[deps.IntelOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] git-tree-sha1 = "ec1debd61c300961f98064cfb21287613ad7f303" @@ -1024,6 +1059,12 @@ git-tree-sha1 = "70c2d9a33b8810198314a5722ee3e9520110b28d" uuid = "6b5a15aa-cf52-5330-8376-5e5d90283449" version = "2.8.1+2" +[[deps.PackageExtensionCompat]] +git-tree-sha1 = "fb28e33b8a95c4cee25ce296c817d89cc2e53518" +uuid = "65ce6f38-6b18-4e1d-a461-8949797d7930" +version = "1.0.2" +weakdeps = ["Requires", "TOML"] + [[deps.Parameters]] deps = ["OrderedCollections", "UnPack"] git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" @@ -1176,9 +1217,9 @@ version = "0.6.43" [[deps.SciMLBase]] deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "c9dc4c04bcb0146a35dd6af726073c5738b80e3b" +git-tree-sha1 = "d7bef263e23c7f5392071e4538b1949cee7ae458" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.104.0" +version = "2.99.0" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" @@ -1203,9 +1244,9 @@ version = "2.104.0" [[deps.SciMLOperators]] deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] -git-tree-sha1 = "3249fe77f322fe539e935ecb388c8290cd38a3fc" +git-tree-sha1 = "d82853c515a8d9d42c1ab493a2687a37f1e26c91" uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" -version = "1.3.1" +version = "0.4.0" weakdeps = ["SparseArrays", "StaticArraysCore"] [deps.SciMLOperators.extensions] @@ -1233,6 +1274,16 @@ git-tree-sha1 = "c5391c6ace3bc430ca630251d02ea9687169ca68" uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" version = "1.1.2" +[[deps.SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" + +[[deps.SimpleTraits]] +deps = ["InteractiveUtils", "MacroTools"] +git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" +uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" +version = "0.9.4" + [[deps.SimpleUnPack]] git-tree-sha1 = "58e6353e72cde29b90a69527e56df1b5c3d8c437" uuid = "ce78b400-467f-4804-87d8-8f486da07d0a" @@ -1252,6 +1303,26 @@ deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" version = "1.10.0" +[[deps.SparseDiffTools]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Random", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "UnPack", "VertexSafeGraphs"] +git-tree-sha1 = "ccbf06a08573200853b1bd06203d8ccce8449578" +uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" +version = "2.26.0" + + [deps.SparseDiffTools.extensions] + SparseDiffToolsEnzymeExt = "Enzyme" + SparseDiffToolsPolyesterExt = "Polyester" + SparseDiffToolsPolyesterForwardDiffExt = "PolyesterForwardDiff" + SparseDiffToolsSymbolicsExt = "Symbolics" + SparseDiffToolsZygoteExt = "Zygote" + + [deps.SparseDiffTools.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + Polyester = "f517fe37-dbe3-4b94-8317-1923a5111588" + PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" + Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] git-tree-sha1 = "41852b8679f78c8d8961eeadc8f62cef861a52e3" @@ -1585,6 +1656,12 @@ git-tree-sha1 = "f59703fbab297efe6ad09ef1dc656f8f0a21ad28" uuid = "3b853605-1c98-4422-8364-4bd93ee0529e" version = "0.5.10" +[[deps.VertexSafeGraphs]] +deps = ["Graphs"] +git-tree-sha1 = "8351f8d73d7e880bfc042a8b6922684ebeafb35c" +uuid = "19fa3120-7c27-5ec5-8db8-b0b0aa330d6f" +version = "0.2.0" + [[deps.WriteVTK]] deps = ["Base64", "CodecZlib", "FillArrays", "LightXML", "TranscodingStreams", "VTKBase"] git-tree-sha1 = "a329e0b6310244173690d6a4dfc6d1141f9b9370" diff --git a/libs/Implicit/Project.toml b/libs/Implicit/Project.toml index b7e6d5a..6698a3e 100644 --- a/libs/Implicit/Project.toml +++ b/libs/Implicit/Project.toml @@ -9,6 +9,7 @@ DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" Krylov = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462" +SparseDiffTools = "47a9eef4-7e08-11e9-0b38-333d64bd3804" Trixi = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" diff --git a/libs/Implicit/src/colored_jacobian.jl b/libs/Implicit/src/colored_jacobian.jl new file mode 100644 index 0000000..f1ff96c --- /dev/null +++ b/libs/Implicit/src/colored_jacobian.jl @@ -0,0 +1,74 @@ +using SparseDiffTools +using LinearAlgebra +using SparseArrays + +##################### BatchedJacobianOperator + +struct BatchedColoredUpdater{T} + colors::Vector{Int} + color_groups::Vector{Vector{Int}} + sparse_template::SparseMatrixCSC{T, Int} + input_matrix::Matrix{T} # Pre-allocata + result_matrix::Matrix{T} # Pre-allocata + extraction_plan::Vector{Vector{Tuple{Int, Int}}} +end + +function BatchedColoredUpdater(Jsp::SparseMatrixCSC{T}) where T + pattern = sparse((Jsp .!= 0) * 1.0) + colors = matrix_colors(pattern) + + color_groups = [Int[] for _ in 1:maximum(colors)] + for (col, color) in enumerate(colors) + push!(color_groups[color], col) + end + + n = size(Jsp, 2) + m = size(Jsp, 1) + n_groups = length(color_groups) + + # Pre-alloca le matrici + input_matrix = zeros(T, n, n_groups) + result_matrix = zeros(T, m, n_groups) + + # Setup input matrix una volta sola + for (group_idx, cols) in enumerate(color_groups) + for col in cols + input_matrix[col, group_idx] = 1.0 + end + end + + # Pre-compute extraction plan + extraction_plan = Vector{Vector{Tuple{Int, Int}}}(undef, n_groups) + for (group_idx, cols) in enumerate(color_groups) + plan = Tuple{Int, Int}[] + for col in cols + for i in Jsp.colptr[col]:(Jsp.colptr[col+1]-1) + row = Jsp.rowval[i] + push!(plan, (i, row)) + end + end + extraction_plan[group_idx] = plan + end + + return BatchedColoredUpdater(colors, color_groups, copy(Jsp), + input_matrix, result_matrix, extraction_plan) +end + + function update_sparse_batched!(updater::BatchedColoredUpdater, J_batched) + # UNA SOLA moltiplicazione batched per tutti i 67 gruppi! + mul!(updater.result_matrix, J_batched, updater.input_matrix) + + # Estrazione veloce usando il plan pre-computato + nzval = updater.sparse_template.nzval + + @inbounds for (group_idx, plan) in enumerate(updater.extraction_plan) + result_col = view(updater.result_matrix, :, group_idx) + + # Rimuovi @simd quando iteriamo su tuple + for (nz_idx, res_idx) in plan + nzval[nz_idx] = result_col[res_idx] + end + end + + return updater.sparse_template +end From a73b3f34e1a6047cba85848105e20bfae4cab1d0 Mon Sep 17 00:00:00 2001 From: Marco Artiano Date: Sat, 26 Jul 2025 10:30:05 +0200 Subject: [PATCH 04/10] testing coloring --- Manifest.toml | 55 ++++++++++------- examples/Manifest.toml | 85 +++++++++++++++++++-------- examples/Project.toml | 8 +-- examples/test_coloring.jl | 13 ++-- libs/Implicit/Manifest.toml | 72 ++++++++++++++++------- libs/Implicit/Project.toml | 15 ----- libs/Implicit/src/colored_jacobian.jl | 6 -- src/Ariadne.jl | 16 ++--- 8 files changed, 167 insertions(+), 103 deletions(-) diff --git a/Manifest.toml b/Manifest.toml index 7abef8c..9f733d9 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,18 +1,20 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.6" +julia_version = "1.11.6" manifest_format = "2.0" -project_hash = "c269846676b4a9a232cf6582744da7d76f842d15" +project_hash = "65f9f6999611571ccf228f448404abce642254f9" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" +version = "1.1.2" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" [[deps.CEnum]] git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" @@ -27,6 +29,7 @@ version = "1.1.1+0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" [[deps.Downloads]] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] @@ -79,6 +82,7 @@ version = "0.1.10" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" [[deps.GPUCompiler]] deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "PrecompileTools", "Preferences", "Scratch", "Serialization", "TOML", "Tracy", "UUIDs"] @@ -89,6 +93,7 @@ version = "1.6.1" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] @@ -123,6 +128,7 @@ version = "0.0.37+2" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" +version = "1.11.0" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] @@ -132,16 +138,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"] @@ -156,26 +163,30 @@ version = "0.9.1+6" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" +version = "2.28.6+0" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" +version = "2023.12.12" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" @@ -190,12 +201,18 @@ version = "0.4.4" [[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.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" + + [deps.Pkg.extensions] + REPLExt = "REPL" + + [deps.Pkg.weakdeps] + REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.PrecompileTools]] deps = ["Preferences"] @@ -212,14 +229,12 @@ version = "1.4.3" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "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.Reexport]] git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" @@ -238,14 +253,12 @@ version = "1.3.0" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" +version = "1.11.0" [[deps.StructIO]] git-tree-sha1 = "c581be48ae1cbf83e899b14c07a807e1787512cc" @@ -255,7 +268,7 @@ version = "0.3.1" [[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.TOML]] deps = ["Dates"] @@ -282,9 +295,11 @@ version = "0.1.5" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" [[deps.Zlib_jll]] deps = ["Libdl"] @@ -299,7 +314,7 @@ version = "5.11.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.p7zip_jll]] deps = ["Artifacts", "Libdl"] diff --git a/examples/Manifest.toml b/examples/Manifest.toml index d34aaca..4086bc4 100644 --- a/examples/Manifest.toml +++ b/examples/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.6" +julia_version = "1.11.6" manifest_format = "2.0" -project_hash = "63d7481891df20b614f3ef18d0170cad6ff02136" +project_hash = "845ee78cafcaf17b5018b9560884ff01bb23472f" [[deps.ADTypes]] git-tree-sha1 = "be7ae030256b8ef14a441726c4c37766b90b93a3" @@ -90,11 +90,13 @@ version = "2.5.0" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" +version = "1.1.2" [[deps.Ariadne]] deps = ["Enzyme", "Krylov", "LinearAlgebra", "SparseArrays"] -path = ".." +git-tree-sha1 = "28125b8e532f4fdfd211704177f139085df950bc" +repo-rev = "ma/coloring" +repo-url = ".." uuid = "0be81120-40bf-4f8b-adf0-26103efb66f1" version = "0.1.0" @@ -138,6 +140,7 @@ version = "7.19.0" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" [[deps.Atomix]] deps = ["UnsafeAtomics"] @@ -182,6 +185,7 @@ version = "0.4.7" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" [[deps.BaseDirs]] git-tree-sha1 = "bca794632b8a9bbe159d56bf9e31c422671b35e0" @@ -219,6 +223,7 @@ version = "0.2.6" [[deps.CRC32c]] uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" +version = "1.11.0" [[deps.CRlibm]] deps = ["CRlibm_jll"] @@ -307,13 +312,11 @@ deps = ["FixedPointNumbers", "Random"] git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" version = "0.12.1" +weakdeps = ["StyledStrings"] [deps.ColorTypes.extensions] StyledStringsExt = "StyledStrings" - [deps.ColorTypes.weakdeps] - StyledStrings = "f489334b-da3d-4c2e-b8f0-e476e12c162b" - [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" @@ -426,6 +429,7 @@ version = "1.0.0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" [[deps.DelaunayTriangulation]] deps = ["AdaptivePredicates", "EnumX", "ExactPredicates", "Random"] @@ -550,6 +554,7 @@ version = "0.7.3" [[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"] @@ -747,6 +752,7 @@ weakdeps = ["Mmap", "Test"] [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" [[deps.FillArrays]] deps = ["LinearAlgebra"] @@ -849,6 +855,7 @@ version = "0.5.2" [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" [[deps.GPUArraysCore]] deps = ["Adapt"] @@ -1009,10 +1016,10 @@ uuid = "905a6f67-0a94-5f89-b386-d35d92009cd1" version = "3.1.11+0" [[deps.Implicit]] -deps = ["Ariadne", "DiffEqBase", "Krylov", "LinearAlgebra", "SciMLBase", "Trixi", "UnPack"] +deps = ["Ariadne", "DiffEqBase", "Krylov", "LinearAlgebra", "SciMLBase", "SparseDiffTools", "Trixi", "UnPack"] path = "../libs/Implicit" uuid = "7f538e44-2768-4ef2-af90-2110c0378286" -version = "0.1.0" +version = "0.0.0" [[deps.IndirectArrays]] git-tree-sha1 = "012e604e1c7458645cb8b436f8fba789a51b257f" @@ -1033,6 +1040,7 @@ version = "2025.2.0+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"] @@ -1232,6 +1240,7 @@ version = "0.1.17" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" +version = "1.11.0" [[deps.LazyModules]] git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e" @@ -1246,16 +1255,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"] @@ -1270,6 +1280,7 @@ version = "0.9.1+6" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" [[deps.Libffi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1316,6 +1327,7 @@ version = "0.9.2" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" [[deps.LinearMaps]] deps = ["LinearAlgebra"] @@ -1347,6 +1359,7 @@ version = "0.3.29" [[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"] @@ -1433,6 +1446,7 @@ 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"] @@ -1443,7 +1457,7 @@ version = "0.6.5" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" +version = "2.28.6+0" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1459,6 +1473,7 @@ version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" [[deps.MosaicViews]] deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] @@ -1474,7 +1489,7 @@ version = "0.3.7" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" +version = "2023.12.12" [[deps.MuladdMacro]] git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" @@ -1571,7 +1586,7 @@ version = "0.3.29+0" [[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"] @@ -1588,7 +1603,7 @@ version = "3.2.4+0" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" +version = "0.8.5+0" [[deps.OpenMPI_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML", "Zlib_jll"] @@ -1717,9 +1732,13 @@ uuid = "30392449-352a-5448-841d-b1acce4e97dc" version = "0.44.2+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"] @@ -1777,10 +1796,11 @@ version = "2.4.0" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" [[deps.Profile]] -deps = ["Printf"] uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" +version = "1.11.0" [[deps.ProgressBars]] deps = ["Printf"] @@ -1816,12 +1836,14 @@ weakdeps = ["Enzyme"] QuadGKEnzymeExt = "Enzyme" [[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.RangeArrays]] git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5" @@ -1997,6 +2019,7 @@ version = "1.3.0" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" [[deps.Setfield]] deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] @@ -2013,6 +2036,7 @@ version = "0.5.0" [[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" +version = "1.11.0" [[deps.Showoff]] deps = ["Dates", "Grisu"] @@ -2045,6 +2069,7 @@ version = "0.1.5" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" [[deps.SortingAlgorithms]] deps = ["DataStructures"] @@ -2055,7 +2080,7 @@ 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", "UnPack", "VertexSafeGraphs"] @@ -2147,9 +2172,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"] @@ -2211,6 +2241,10 @@ git-tree-sha1 = "c581be48ae1cbf83e899b14c07a807e1787512cc" uuid = "53d494c1-5632-5724-8f4c-31dff12d585f" version = "0.3.1" +[[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" @@ -2218,7 +2252,7 @@ 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.SummationByPartsOperators]] deps = ["ArgCheck", "AutoHashEquals", "FFTW", "InteractiveUtils", "LinearAlgebra", "LoopVectorization", "MuladdMacro", "PolynomialBases", "PrecompileTools", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SimpleUnPack", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Unrolled"] @@ -2283,6 +2317,7 @@ version = "0.1.1" [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +version = "1.11.0" [[deps.ThreadingUtilities]] deps = ["ManualMemory"] @@ -2391,6 +2426,7 @@ version = "1.4.0" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" [[deps.UnPack]] git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" @@ -2399,6 +2435,7 @@ version = "1.0.2" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" [[deps.UnicodeFun]] deps = ["REPL"] @@ -2612,7 +2649,7 @@ version = "1.6.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"] diff --git a/examples/Project.toml b/examples/Project.toml index e8abe88..fa98094 100644 --- a/examples/Project.toml +++ b/examples/Project.toml @@ -1,4 +1,5 @@ [deps] +Ariadne = "0be81120-40bf-4f8b-adf0-26103efb66f1" BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" Implicit = "7f538e44-2768-4ef2-af90-2110c0378286" @@ -8,8 +9,5 @@ SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" SparseDiffTools = "47a9eef4-7e08-11e9-0b38-333d64bd3804" Trixi = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" -[sources.Ariadne] -path = ".." - -[sources.Implicit] -path = "../libs/Implicit" +[sources] +Implicit = {path = "../libs/Implicit"} diff --git a/examples/test_coloring.jl b/examples/test_coloring.jl index 803c4a8..ed83344 100644 --- a/examples/test_coloring.jl +++ b/examples/test_coloring.jl @@ -6,17 +6,22 @@ trixi_include(joinpath(examples_dir(), "tree_2d_dgsem", "elixir_navierstokes_lid F!(du, u, p) = Trixi.rhs_parabolic!(du, u, p, 0.0) u = copy(ode.u0) du = copy(u) - +@show "create Jacobian" J = Implicit.JacobianOperator(F!, du, u, semi) +@show "create Sparse Jacobian" Jsp = Implicit.collect(J) # Sparse Matrix Jacobian - - +@show "create cache for Batched coloring" batched_updater = BatchedColoredUpdater(Jsp) +@show "Number of colors" N = length(batched_updater.color_groups) +@show "create batched Jacobian" J_batched = Implicit.Ariadne.BatchedJacobianOperator{N}(F!, du, u, semi) + +@show "mul! with batched" Implicit.Ariadne.mul!(batched_updater.result_matrix, J_batched, batched_updater.input_matrix) -@btime Implicit.Ariadne.mul!(batched_updater.result_matrix, J_batched, batched_updater.input_matrix) \ No newline at end of file +@show "Benchmarking mul with batched" +@btime Implicit.Ariadne.mul!(batched_updater.result_matrix, J_batched, batched_updater.input_matrix) diff --git a/libs/Implicit/Manifest.toml b/libs/Implicit/Manifest.toml index d5ef751..c588a2c 100644 --- a/libs/Implicit/Manifest.toml +++ b/libs/Implicit/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.8" +julia_version = "1.11.6" manifest_format = "2.0" -project_hash = "e9d74776ef521766573682fde17378dcecf69b4e" +project_hash = "cf356fff9bdb438ed012908c13fcc323942f6871" [[deps.ADTypes]] git-tree-sha1 = "be7ae030256b8ef14a441726c4c37766b90b93a3" @@ -81,11 +81,13 @@ version = "2.5.0" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" +version = "1.1.2" [[deps.Ariadne]] deps = ["Enzyme", "Krylov", "LinearAlgebra", "SparseArrays"] -path = "../.." +git-tree-sha1 = "28125b8e532f4fdfd211704177f139085df950bc" +repo-rev = "ma/coloring" +repo-url = "../.." uuid = "0be81120-40bf-4f8b-adf0-26103efb66f1" version = "0.1.0" @@ -129,6 +131,7 @@ version = "7.19.0" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" [[deps.Atomix]] deps = ["UnsafeAtomics"] @@ -155,6 +158,7 @@ version = "2.2.0" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" [[deps.BitTwiddlingConvenienceFunctions]] deps = ["Static"] @@ -293,6 +297,7 @@ version = "1.0.0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" [[deps.DelimitedFiles]] deps = ["Mmap"] @@ -411,6 +416,7 @@ version = "0.7.3" [[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.11.0" [[deps.DocStringExtensions]] git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c" @@ -534,6 +540,7 @@ version = "1.1.3" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" [[deps.FillArrays]] deps = ["LinearAlgebra"] @@ -599,6 +606,7 @@ version = "0.5.2" [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" [[deps.GPUArraysCore]] deps = ["Adapt"] @@ -671,6 +679,7 @@ version = "2025.2.0+0" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" [[deps.InverseFunctions]] git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" @@ -763,6 +772,7 @@ version = "0.1.17" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" +version = "1.11.0" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] @@ -772,16 +782,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"] @@ -796,6 +807,7 @@ version = "0.9.1+6" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" [[deps.Libiconv_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -812,6 +824,7 @@ version = "0.9.2" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" [[deps.LinearMaps]] deps = ["LinearAlgebra"] @@ -847,6 +860,7 @@ version = "0.3.29" [[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"] @@ -914,11 +928,12 @@ version = "0.1.8" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" +version = "2.28.6+0" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -934,6 +949,7 @@ version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" [[deps.Moshi]] deps = ["ExproniconLite", "Jieko"] @@ -943,7 +959,7 @@ version = "0.3.7" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" +version = "2023.12.12" [[deps.MuladdMacro]] git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" @@ -1017,12 +1033,12 @@ weakdeps = ["Adapt"] [[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.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" +version = "0.8.5+0" [[deps.OpenMPI_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML", "Zlib_jll"] @@ -1078,9 +1094,15 @@ uuid = "4c1a95c7-462a-4a7e-b284-959c63fbf1dc" version = "0.3.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" + + [deps.Pkg.extensions] + REPLExt = "REPL" + + [deps.Pkg.weakdeps] + REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.PkgVersion]] deps = ["Pkg"] @@ -1127,6 +1149,7 @@ version = "2.4.0" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" [[deps.ProgressBars]] deps = ["Printf"] @@ -1139,13 +1162,10 @@ git-tree-sha1 = "1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493d" uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" version = "1.3.0" -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" [[deps.RecipesBase]] deps = ["PrecompileTools"] @@ -1267,6 +1287,7 @@ version = "1.3.0" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" [[deps.Setfield]] deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] @@ -1277,6 +1298,7 @@ version = "1.1.2" [[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" +version = "1.11.0" [[deps.SimpleTraits]] deps = ["InteractiveUtils", "MacroTools"] @@ -1291,6 +1313,7 @@ version = "1.1.0" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" [[deps.SortingAlgorithms]] deps = ["DataStructures"] @@ -1301,7 +1324,7 @@ 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", "UnPack", "VertexSafeGraphs"] @@ -1392,9 +1415,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"] @@ -1448,7 +1476,7 @@ version = "0.3.1" [[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.SummationByPartsOperators]] deps = ["ArgCheck", "AutoHashEquals", "FFTW", "InteractiveUtils", "LinearAlgebra", "LoopVectorization", "MuladdMacro", "PolynomialBases", "PrecompileTools", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SimpleUnPack", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Unrolled"] @@ -1605,6 +1633,7 @@ version = "1.4.0" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" [[deps.UnPack]] git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" @@ -1613,6 +1642,7 @@ version = "1.0.2" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" [[deps.Unrolled]] deps = ["MacroTools"] @@ -1693,7 +1723,7 @@ version = "5.11.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"] diff --git a/libs/Implicit/Project.toml b/libs/Implicit/Project.toml index 6698a3e..60357d6 100644 --- a/libs/Implicit/Project.toml +++ b/libs/Implicit/Project.toml @@ -1,8 +1,3 @@ -name = "Implicit" -uuid = "7f538e44-2768-4ef2-af90-2110c0378286" -authors = ["Valentin Churavy "] -version = "0.1.0" - [deps] Ariadne = "0be81120-40bf-4f8b-adf0-26103efb66f1" DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" @@ -12,13 +7,3 @@ SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462" SparseDiffTools = "47a9eef4-7e08-11e9-0b38-333d64bd3804" Trixi = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" - -[compat] -Ariadne = "0.1.0" -DiffEqBase = "6.174.0" -Krylov = "0.10.1" -SciMLBase = "2.91.0" -UnPack = "1.0.2" - -[sources.Ariadne] -path = "../.." diff --git a/libs/Implicit/src/colored_jacobian.jl b/libs/Implicit/src/colored_jacobian.jl index f1ff96c..0a4acfe 100644 --- a/libs/Implicit/src/colored_jacobian.jl +++ b/libs/Implicit/src/colored_jacobian.jl @@ -26,18 +26,15 @@ function BatchedColoredUpdater(Jsp::SparseMatrixCSC{T}) where T m = size(Jsp, 1) n_groups = length(color_groups) - # Pre-alloca le matrici input_matrix = zeros(T, n, n_groups) result_matrix = zeros(T, m, n_groups) - # Setup input matrix una volta sola for (group_idx, cols) in enumerate(color_groups) for col in cols input_matrix[col, group_idx] = 1.0 end end - # Pre-compute extraction plan extraction_plan = Vector{Vector{Tuple{Int, Int}}}(undef, n_groups) for (group_idx, cols) in enumerate(color_groups) plan = Tuple{Int, Int}[] @@ -55,16 +52,13 @@ function BatchedColoredUpdater(Jsp::SparseMatrixCSC{T}) where T end function update_sparse_batched!(updater::BatchedColoredUpdater, J_batched) - # UNA SOLA moltiplicazione batched per tutti i 67 gruppi! mul!(updater.result_matrix, J_batched, updater.input_matrix) - # Estrazione veloce usando il plan pre-computato nzval = updater.sparse_template.nzval @inbounds for (group_idx, plan) in enumerate(updater.extraction_plan) result_col = view(updater.result_matrix, :, group_idx) - # Rimuovi @simd quando iteriamo su tuple for (nz_idx, res_idx) in plan nzval[nz_idx] = result_col[res_idx] end diff --git a/src/Ariadne.jl b/src/Ariadne.jl index e59e2b5..9995f0a 100644 --- a/src/Ariadne.jl +++ b/src/Ariadne.jl @@ -30,8 +30,6 @@ end abstract type AbstractJacobianOperator end - - """ JacobianOperator @@ -66,7 +64,6 @@ function JacobianOperator(f::F, res, u, p; assume_p_const::Bool = false) where { return JacobianOperator(f, f′, res, u, p, p′) end - batch_size(::JacobianOperator) = 1 Base.size(J::JacobianOperator) = (length(J.res), length(J.u)) @@ -135,14 +132,17 @@ struct BatchedJacobianOperator{N, F, A, P} <: AbstractJacobianOperator res::A u::A p::P - p′::Union{Nothing, NTuple{N, P}} # cache - function BatchedJacobianOperator{N}(f::F, res, u, p) where {F, N} + p′::P′:# cache +end + + function BatchedJacobianOperator{N}(f::F, res, u, p; assume_p_const) where {F, N} f′ = init_cache(f, Val(N)) + if assume_p_const + p′ = nothing + else p′ = init_cache(p, Val(N)) - return new{N, F, typeof(u), typeof(p)}(f, f′, res, u, p, p′) + return BatchedJacobianOperator{N}(f, f′, res, u, p, p′) end -end - batch_size(::BatchedJacobianOperator{N}) where {N} = N Base.size(J::BatchedJacobianOperator) = (length(J.res), length(J.u)) From 19192f81f50b1436c115eb034200d63f78065879 Mon Sep 17 00:00:00 2001 From: Marco Artiano Date: Sun, 27 Jul 2025 11:31:28 +0200 Subject: [PATCH 05/10] new formulation --- examples/test_coloring.jl | 27 ------ examples/trixi_lid_driven_linear.jl | 3 +- examples/trixi_lid_test.jl | 38 ++++++++ libs/Implicit/src/colored_jacobian.jl | 68 -------------- libs/Implicit/src/linear_imex.jl | 127 +++++++++++++++++++++++++- 5 files changed, 165 insertions(+), 98 deletions(-) delete mode 100644 examples/test_coloring.jl create mode 100644 examples/trixi_lid_test.jl delete mode 100644 libs/Implicit/src/colored_jacobian.jl diff --git a/examples/test_coloring.jl b/examples/test_coloring.jl deleted file mode 100644 index ed83344..0000000 --- a/examples/test_coloring.jl +++ /dev/null @@ -1,27 +0,0 @@ -using Trixi -using Implicit - -trixi_include(joinpath(examples_dir(), "tree_2d_dgsem", "elixir_navierstokes_lid_driven_cavity.jl"), sol = nothing, mu = 0.1); - -F!(du, u, p) = Trixi.rhs_parabolic!(du, u, p, 0.0) -u = copy(ode.u0) -du = copy(u) -@show "create Jacobian" -J = Implicit.JacobianOperator(F!, du, u, semi) -@show "create Sparse Jacobian" -Jsp = Implicit.collect(J) # Sparse Matrix Jacobian - -@show "create cache for Batched coloring" -batched_updater = BatchedColoredUpdater(Jsp) - -@show "Number of colors" -N = length(batched_updater.color_groups) - -@show "create batched Jacobian" -J_batched = Implicit.Ariadne.BatchedJacobianOperator{N}(F!, du, u, semi) - -@show "mul! with batched" -Implicit.Ariadne.mul!(batched_updater.result_matrix, J_batched, batched_updater.input_matrix) - -@show "Benchmarking mul with batched" -@btime Implicit.Ariadne.mul!(batched_updater.result_matrix, J_batched, batched_updater.input_matrix) diff --git a/examples/trixi_lid_driven_linear.jl b/examples/trixi_lid_driven_linear.jl index ac8a8fe..d99fde0 100644 --- a/examples/trixi_lid_driven_linear.jl +++ b/examples/trixi_lid_driven_linear.jl @@ -4,7 +4,6 @@ using Trixi using Implicit using CairoMakie - # Notes: # Must disable both Polyester and LoopVectorization for Enzyme to be able to differentiate Trixi.jl # Using https://github.com/trixi-framework/Trixi.jl/pull/2295 @@ -29,7 +28,7 @@ sol = solve( ode, Implicit.RKLSSPIMEX332(); #Implicit.KS22(); - dt = 0.01/8, # solve needs some value here but it will be overwritten by the stepsize_callback + dt = 0.01/4, # solve needs some value here but it will be overwritten by the stepsize_callback ode_default_options()..., callback = callbacks, # verbose=1, krylov_algo = :gmres, diff --git a/examples/trixi_lid_test.jl b/examples/trixi_lid_test.jl new file mode 100644 index 0000000..8e3935e --- /dev/null +++ b/examples/trixi_lid_test.jl @@ -0,0 +1,38 @@ +# # Using the an implicit solver based on Ariadne with Trixi.jl + +using Trixi +using Implicit +using CairoMakie + +# Notes: +# Must disable both Polyester and LoopVectorization for Enzyme to be able to differentiate Trixi.jl +# Using https://github.com/trixi-framework/Trixi.jl/pull/2295 +# +# LocalPreferences.jl +# ```toml +# [Trixi] +# loop_vectorization = false +# polyester = false +# ``` + +#@assert !Trixi._PREFERENCE_POLYESTER +#@assert !Trixi._PREFERENCE_LOOPVECTORIZATION + +trixi_include(joinpath(examples_dir(), "tree_2d_dgsem", "elixir_navierstokes_lid_driven_cavity.jl"), sol = nothing, mu = 0.1); + +ode = semidiscretize(semi, (0.0, 10.0)) +############################################################################### +# run the simulation + +sol = solve( + ode, + Implicit.RKLSSPIMEX332Z(); + #Implicit.KS22(); + dt = 0.01/4, # solve needs some value here but it will be overwritten by the stepsize_callback + ode_default_options()..., callback = callbacks, + # verbose=1, + krylov_algo = :gmres, +); + +## dt_vec = [0.001, 0.001/2, 0.0001] +## l2_vec = [4.95311953e-04, 2.48996489e-04 ,5.40458032e-05, ] diff --git a/libs/Implicit/src/colored_jacobian.jl b/libs/Implicit/src/colored_jacobian.jl deleted file mode 100644 index 0a4acfe..0000000 --- a/libs/Implicit/src/colored_jacobian.jl +++ /dev/null @@ -1,68 +0,0 @@ -using SparseDiffTools -using LinearAlgebra -using SparseArrays - -##################### BatchedJacobianOperator - -struct BatchedColoredUpdater{T} - colors::Vector{Int} - color_groups::Vector{Vector{Int}} - sparse_template::SparseMatrixCSC{T, Int} - input_matrix::Matrix{T} # Pre-allocata - result_matrix::Matrix{T} # Pre-allocata - extraction_plan::Vector{Vector{Tuple{Int, Int}}} -end - -function BatchedColoredUpdater(Jsp::SparseMatrixCSC{T}) where T - pattern = sparse((Jsp .!= 0) * 1.0) - colors = matrix_colors(pattern) - - color_groups = [Int[] for _ in 1:maximum(colors)] - for (col, color) in enumerate(colors) - push!(color_groups[color], col) - end - - n = size(Jsp, 2) - m = size(Jsp, 1) - n_groups = length(color_groups) - - input_matrix = zeros(T, n, n_groups) - result_matrix = zeros(T, m, n_groups) - - for (group_idx, cols) in enumerate(color_groups) - for col in cols - input_matrix[col, group_idx] = 1.0 - end - end - - extraction_plan = Vector{Vector{Tuple{Int, Int}}}(undef, n_groups) - for (group_idx, cols) in enumerate(color_groups) - plan = Tuple{Int, Int}[] - for col in cols - for i in Jsp.colptr[col]:(Jsp.colptr[col+1]-1) - row = Jsp.rowval[i] - push!(plan, (i, row)) - end - end - extraction_plan[group_idx] = plan - end - - return BatchedColoredUpdater(colors, color_groups, copy(Jsp), - input_matrix, result_matrix, extraction_plan) -end - - function update_sparse_batched!(updater::BatchedColoredUpdater, J_batched) - mul!(updater.result_matrix, J_batched, updater.input_matrix) - - nzval = updater.sparse_template.nzval - - @inbounds for (group_idx, plan) in enumerate(updater.extraction_plan) - result_col = view(updater.result_matrix, :, group_idx) - - for (nz_idx, res_idx) in plan - nzval[nz_idx] = result_col[res_idx] - end - end - - return updater.sparse_template -end diff --git a/libs/Implicit/src/linear_imex.jl b/libs/Implicit/src/linear_imex.jl index d7e56bc..9bcc2df 100644 --- a/libs/Implicit/src/linear_imex.jl +++ b/libs/Implicit/src/linear_imex.jl @@ -2,6 +2,7 @@ abstract type SimpleLinearImplicitExplicitAlgorithm{N} end abstract type RKLIMEX{N} <: SimpleLinearImplicitExplicitAlgorithm{N} end +abstract type RKLIMEXZ{N} <: SimpleLinearImplicitExplicitAlgorithm{N} end struct IMEXRKButcher{T1<:AbstractArray,T2<:AbstractArray} <: RKTableau a::T1 @@ -11,11 +12,23 @@ struct IMEXRKButcher{T1<:AbstractArray,T2<:AbstractArray} <: RKTableau bh::T2 ch::T2 end +struct IMEXRKZButcher{T1<:AbstractArray,T2<:AbstractArray} <: RKTableau + a::T1 + b::T2 + c::T2 + ah::T1 + bh::T2 + ch::T2 + d::T2 + gamma::T1 +end struct RKLinearImplicitExplicitEuler <: RKLIMEX{1} end struct RKLSSPIMEX332 <: RKLIMEX{3} end +struct RKLSSPIMEX332Z <: RKLIMEXZ{3} end + function mul!(out::AbstractVector, M::LMOperator, v::AbstractVector) # out = (I/dt - J(f,x,p)) * v mul!(out, M.J, v) @@ -23,9 +36,26 @@ function mul!(out::AbstractVector, M::LMOperator, v::AbstractVector) return nothing end + +struct LMROperator{JOp} + J::JOp +invdt::Float64 +end + +Base.size(M::LMROperator) = size(M.J) +Base.eltype(M::LMROperator) = eltype(M.J) +Base.length(M::LMROperator) = length(M.J) +function mul!(out::AbstractVector, M::LMROperator, v::AbstractVector) + # out = (I/dt - J(f,x,p)) * v + mul!(out, M.J, v) + @. out = v * M.invdt - out + return nothing +end + function (::RKLinearImplicitExplicitEuler)(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, ustages, jstages, stage, RK, M, lin_du_tmp, lin_du_tmp1, workspace) if stage == 1 # Stage 1: + ## f2 is the conservative part ## f1 is the parabolic part mul!(lin_du_tmp, M.J, uₙ) @@ -43,6 +73,42 @@ function (::RKLinearImplicitExplicitEuler)(res, uₙ, Δt, f1!, f2!, du, du_tmp, end end +function (::RKLIMEXZ{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, ustages, jstages, stage, RK, M, lin_du_tmp, lin_du_tmp1, workspace) + F!(du, u, p) = f1!(du, u, p, t) ## parabolic + invdt = inv(RK.ah[stage,stage] * Δt) + J = JacobianOperator(F!, du, uₙ, p) + M = LMROperator(J, invdt) + if stage == 1 + @. res = invdt * RK.d[stage] * uₙ + krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) + + @. jstages[stage] = workspace.x + @. res = -res * Δt + jstages[stage]/RK.ah[stage,stage] + uₙ + f2!(du, res, p, t + RK.c[stage] * Δt) + f1!(du_tmp, res, p, t + RK.c[stage] * Δt) + @. stages[stage] = du + du_tmp + + elseif stage == 2 + @. res = invdt * RK.d[stage] * uₙ - invdt*RK.ah[stage,stage] * RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.a[stage,1] * stages[1] + krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) + @. jstages[stage] = workspace.x + @. res = -res * Δt + jstages[stage]/RK.ah[stage,stage] + uₙ + f2!(du, res, p, t + RK.c[stage] * Δt) + f1!(du_tmp, res, p, t + RK.c[stage] * Δt) + @. stages[stage] = du + du_tmp + + elseif stage == 3 + @. res = invdt * RK.d[stage] * uₙ - invdt*RK.ah[stage,stage] * (RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.gamma[stage,2] * (RK.d[2] * uₙ - jstages[2] ))+RK.a[stage,1] * stages[1] + RK.a[stage,2] * stages[2] + krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) + @. jstages[stage] = workspace.x + @. res = -res * Δt + jstages[stage]/RK.ah[stage,stage] + uₙ + f2!(du, res, p, t + RK.c[stage] * Δt) + f1!(du_tmp, res, p, t + RK.c[stage] * Δt) + @. stages[stage] = du + du_tmp + + @. u = uₙ + RK.b[1] * Δt * stages[1] + RK.b[2] * Δt * stages[2] + RK.b[3] * Δt * stages[3] + end +end function (::RKLIMEX{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, ustages, jstages, stage, RK, M, lin_du_tmp, lin_du_tmp1, workspace) F!(du, u, p) = f1!(du, u, p, t) ## parabolic @@ -89,7 +155,7 @@ function (::RKLIMEX{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, u mul!(jstages[stage], J, u) f2!(du, workspace.x, p, t + RK.c[stage] * Δt) f1!(du_tmp, workspace.x, p, t + RK.c[stage] * Δt) - @. stages[stage] = du .+ du_tmp .- jstages[stage] + @. stages[stage] = du + du_tmp - jstages[stage] @. ustages[stage] = u @. u = uₙ + RK.b[1] * Δt * stages[1] + RK.b[2] * Δt * stages[2] + RK.b[3] * Δt * stages[3] - RK.bh[1] * Δt * jstages[1] - RK.bh[2] * Δt * jstages[2] - RK.bh[3] * Δt * jstages[3] @@ -117,6 +183,52 @@ function RKTableau(alg::RKLSSPIMEX332) return RKLSSPIMEX332Tableau() end + +function RKTableau(alg::RKLSSPIMEX332Z) +return RKLSSPIMEX332ZTableau() +end + +function RKLSSPIMEX332ZTableau() + + nstage = 3 + a = zeros(Float64, nstage, nstage) + a[2, 1] = 0.5 + a[3, 1] = 0.5 + a[3, 2] = 0.5 + + b = zeros(Float64, nstage) + b[1] = 1/3 + b[2] = 1/3 + b[3] = 1/3 + + c = zeros(Float64, nstage) + c[2] = 0.5 + c[3] = 1.0 + ah = zeros(Float64, nstage, nstage) + ah[1, 1] = 1/4 + ah[2, 2] = 1/4 + ah[3, 1] = 1/3 + ah[3, 2] = 1/3 + ah[3, 3] = 1/3 + + bh = zeros(Float64, nstage) + bh[1] = 1/3 + bh[2] = 1/3 + bh[3] = 1/3 + + ch = zeros(Float64, nstage) + ch[1] = 1/4 + ch[2] = 1/4 + ch[3] = 1.0 + d = zeros(Float64, nstage) + @. d = ch - c + + gamma = zeros(Float64, nstage, nstage) + + gamma = diagm(diag(ah).^(-1)) - inv(a - ah) + + return IMEXRKZButcher(a, b, c, ah, bh, ch,d, gamma) +end function RKLSSPIMEX332Tableau() nstage = 3 @@ -330,6 +442,19 @@ function step!(integrator::SimpleLinearImplicitExplicit) end end +function stage!(integrator, alg::RKLIMEXZ) + F!(du, u, p) = integrator.f1(du, u, p, integrator.t) ## parabolic + J = JacobianOperator(F!, integrator.du, integrator.u, integrator.p) + M = LMOperator(J, integrator.dt) + kc = KrylovConstructor(integrator.res) + workspace = krylov_workspace(:gmres, kc) + for stage in 1:stages(alg) + # Store the solution for each stage in stages + ## For a split Problem we need to compute rhs_conservative and rhs_parabolic + alg(integrator.res, integrator.u, integrator.dt, integrator.f1, integrator.f2, integrator.du, integrator.du_tmp, integrator.u_tmp, integrator.p, integrator.t, integrator.stages, integrator.ustages, integrator.jstages, stage, integrator.RK, M, integrator.lin_du_tmp, integrator.lin_du_tmp1, workspace) + + end +end function stage!(integrator, alg::RKLIMEX) F!(du, u, p) = integrator.f1(du, u, p, integrator.t) ## parabolic J = JacobianOperator(F!, integrator.du, integrator.u, integrator.p) From 718a711f34f65165434236b51c2e98d69a9743b4 Mon Sep 17 00:00:00 2001 From: Marco Artiano Date: Sun, 27 Jul 2025 15:17:07 +0200 Subject: [PATCH 06/10] zero JVPs method --- examples/trixi_lid_driven_linear.jl | 3 ++- examples/trixi_lid_test.jl | 4 ++-- libs/Implicit/src/linear_imex.jl | 21 ++++++++++----------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/examples/trixi_lid_driven_linear.jl b/examples/trixi_lid_driven_linear.jl index d99fde0..5e3aab3 100644 --- a/examples/trixi_lid_driven_linear.jl +++ b/examples/trixi_lid_driven_linear.jl @@ -20,6 +20,7 @@ using CairoMakie trixi_include(joinpath(examples_dir(), "tree_2d_dgsem", "elixir_navierstokes_lid_driven_cavity.jl"), sol = nothing, mu = 0.1); + dt = 0.01/8 # solve needs some value here but it will be overwritten by the stepsize_callback ode = semidiscretize(semi, (0.0, 10.0)) ############################################################################### # run the simulation @@ -28,7 +29,7 @@ sol = solve( ode, Implicit.RKLSSPIMEX332(); #Implicit.KS22(); - dt = 0.01/4, # solve needs some value here but it will be overwritten by the stepsize_callback + dt = dt, # solve needs some value here but it will be overwritten by the stepsize_callback ode_default_options()..., callback = callbacks, # verbose=1, krylov_algo = :gmres, diff --git a/examples/trixi_lid_test.jl b/examples/trixi_lid_test.jl index 8e3935e..82a763d 100644 --- a/examples/trixi_lid_test.jl +++ b/examples/trixi_lid_test.jl @@ -19,7 +19,7 @@ using CairoMakie #@assert !Trixi._PREFERENCE_LOOPVECTORIZATION trixi_include(joinpath(examples_dir(), "tree_2d_dgsem", "elixir_navierstokes_lid_driven_cavity.jl"), sol = nothing, mu = 0.1); - +dt = 0.01/8 ode = semidiscretize(semi, (0.0, 10.0)) ############################################################################### # run the simulation @@ -28,7 +28,7 @@ sol = solve( ode, Implicit.RKLSSPIMEX332Z(); #Implicit.KS22(); - dt = 0.01/4, # solve needs some value here but it will be overwritten by the stepsize_callback + dt = dt, # solve needs some value here but it will be overwritten by the stepsize_callback ode_default_options()..., callback = callbacks, # verbose=1, krylov_algo = :gmres, diff --git a/libs/Implicit/src/linear_imex.jl b/libs/Implicit/src/linear_imex.jl index 9bcc2df..8dfe9f1 100644 --- a/libs/Implicit/src/linear_imex.jl +++ b/libs/Implicit/src/linear_imex.jl @@ -81,33 +81,33 @@ function (::RKLIMEXZ{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, if stage == 1 @. res = invdt * RK.d[stage] * uₙ krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) - @. jstages[stage] = workspace.x - @. res = -res * Δt + jstages[stage]/RK.ah[stage,stage] + uₙ + @. res = uₙ+ jstages[stage]/RK.ah[stage,stage] + -1/RK.ah[stage,stage]*RK.d[stage]* uₙ f2!(du, res, p, t + RK.c[stage] * Δt) f1!(du_tmp, res, p, t + RK.c[stage] * Δt) @. stages[stage] = du + du_tmp - elseif stage == 2 + elseif stage == 2 @. res = invdt * RK.d[stage] * uₙ - invdt*RK.ah[stage,stage] * RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.a[stage,1] * stages[1] krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) @. jstages[stage] = workspace.x - @. res = -res * Δt + jstages[stage]/RK.ah[stage,stage] + uₙ + @. res = uₙ+ jstages[stage]/RK.ah[stage,stage] + -1/RK.ah[stage,stage]*RK.d[stage]* uₙ + RK.gamma[stage,1] * (RK.d[1] * uₙ - jstages[1]) f2!(du, res, p, t + RK.c[stage] * Δt) f1!(du_tmp, res, p, t + RK.c[stage] * Δt) @. stages[stage] = du + du_tmp - elseif stage == 3 - @. res = invdt * RK.d[stage] * uₙ - invdt*RK.ah[stage,stage] * (RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.gamma[stage,2] * (RK.d[2] * uₙ - jstages[2] ))+RK.a[stage,1] * stages[1] + RK.a[stage,2] * stages[2] + elseif stage == 3 + @. res = invdt * RK.d[stage] * uₙ - invdt*RK.ah[stage,stage] * (RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.gamma[stage,2] * (RK.d[2] * uₙ - jstages[2])) + RK.a[stage,1] * stages[1] + RK.a[stage,2] * stages[2] krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) @. jstages[stage] = workspace.x + @. res = uₙ+ jstages[stage]/RK.ah[stage,stage] + -1/RK.ah[stage,stage]*RK.d[stage]* uₙ + RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.gamma[stage,2] * (RK.d[2] * uₙ - jstages[2] ) @. res = -res * Δt + jstages[stage]/RK.ah[stage,stage] + uₙ f2!(du, res, p, t + RK.c[stage] * Δt) f1!(du_tmp, res, p, t + RK.c[stage] * Δt) @. stages[stage] = du + du_tmp @. u = uₙ + RK.b[1] * Δt * stages[1] + RK.b[2] * Δt * stages[2] + RK.b[3] * Δt * stages[3] - end + end end function (::RKLIMEX{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, ustages, jstages, stage, RK, M, lin_du_tmp, lin_du_tmp1, workspace) @@ -121,8 +121,7 @@ function (::RKLIMEX{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, u krylov_solve!(workspace, M, uₙ, atol = 1e-6, rtol = 1e-6) @. u = workspace.x J = JacobianOperator(F!, du, u, p) - mul!(jstages[stage], J, u) - + mul!(jstages[stage], J, u) f2!(du, workspace.x, p, t + RK.c[stage] * Δt) f1!(du_tmp, workspace.x, p, t + RK.c[stage] * Δt) @. stages[stage] = du + du_tmp - jstages[stage] @@ -217,7 +216,7 @@ function RKLSSPIMEX332ZTableau() bh[3] = 1/3 ch = zeros(Float64, nstage) - ch[1] = 1/4 + ch[1] = 1/4 ch[2] = 1/4 ch[3] = 1.0 d = zeros(Float64, nstage) @@ -225,7 +224,7 @@ function RKLSSPIMEX332ZTableau() gamma = zeros(Float64, nstage, nstage) - gamma = diagm(diag(ah).^(-1)) - inv(a - ah) + gamma = diagm(diag(ah).^(-1)) - inv(ah - a) return IMEXRKZButcher(a, b, c, ah, bh, ch,d, gamma) end From a8c570cb2f8d93c6334f58e15bc943abf04c1e6a Mon Sep 17 00:00:00 2001 From: Marco Artiano Date: Sun, 27 Jul 2025 15:53:48 +0200 Subject: [PATCH 07/10] minor fix --- examples/trixi_lid_test.jl | 2 +- src/Ariadne.jl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/trixi_lid_test.jl b/examples/trixi_lid_test.jl index 82a763d..9eff16c 100644 --- a/examples/trixi_lid_test.jl +++ b/examples/trixi_lid_test.jl @@ -19,7 +19,7 @@ using CairoMakie #@assert !Trixi._PREFERENCE_LOOPVECTORIZATION trixi_include(joinpath(examples_dir(), "tree_2d_dgsem", "elixir_navierstokes_lid_driven_cavity.jl"), sol = nothing, mu = 0.1); -dt = 0.01/8 +dt = 0.01/4 ode = semidiscretize(semi, (0.0, 10.0)) ############################################################################### # run the simulation diff --git a/src/Ariadne.jl b/src/Ariadne.jl index 9995f0a..a61b134 100644 --- a/src/Ariadne.jl +++ b/src/Ariadne.jl @@ -132,7 +132,7 @@ struct BatchedJacobianOperator{N, F, A, P} <: AbstractJacobianOperator res::A u::A p::P - p′::P′:# cache + p′::P′# cache end function BatchedJacobianOperator{N}(f::F, res, u, p; assume_p_const) where {F, N} From e03131aff9e2c7a18b9413b8d110e95c8d6c855a Mon Sep 17 00:00:00 2001 From: MarcoArtiano Date: Mon, 28 Jul 2025 12:25:20 +0200 Subject: [PATCH 08/10] add naive stage value predictors --- examples/test.jl | 48 +++++++++++++++++++++++++++++ examples/trixi_lid_driven_linear.jl | 2 +- examples/trixi_lid_test.jl | 8 +++-- libs/Implicit/src/Implicit.jl | 4 +-- libs/Implicit/src/linear_imex.jl | 24 ++++++++------- 5 files changed, 69 insertions(+), 17 deletions(-) create mode 100644 examples/test.jl diff --git a/examples/test.jl b/examples/test.jl new file mode 100644 index 0000000..cab4d2f --- /dev/null +++ b/examples/test.jl @@ -0,0 +1,48 @@ +RK = Implicit.RKTableau(Implicit.RKLSSPIMEX332Z()) +Δt = 0.01/8 +u = copy(ode.u0) +du = copy(u) +du_tmp = copy(u) +jstages1 = copy(u) +jstages2 = copy(u) +jstages3 = copy(u) +stages1 = copy(u) +stages2 = copy(u) +stages3 = copy(u) +res = copy(u) +p = semi +t = 0.0 +stage = 1 +F!(du, u, p) = Trixi.rhs_parabolic!(du, u, p, 0.0) ## parabolic +J = Implicit.JacobianOperator(F!, du, u, semi) +invdt = inv(RK.ah[stage,stage] * Δt) +M = Implicit.LMROperator(J, invdt) +@. res = invdt * RK.d[stage] * u +kc = Implicit.KrylovConstructor(res) +workspace = Implicit.krylov_workspace(:gmres, kc) +Implicit.krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) + +@. jstages1 = workspace.x +@. res = u+ jstages1/RK.ah[stage,stage] + -1/RK.ah[stage,stage]*RK.d[stage]* u +Trixi.rhs_parabolic!(du, res, semi, t + RK.c[stage] * Δt) +Trixi.rhs!(du_tmp, res, semi, t + RK.c[stage] * Δt) +stages1 = du + du_tmp + +stage = 2 +invdt = inv(RK.ah[stage,stage] * Δt) +M = Implicit.LMROperator(J, invdt) +@. res = invdt * RK.d[stage] * u - invdt*RK.ah[stage,stage] * RK.gamma[stage,1] *( RK.d[1] * u - jstages1) + RK.a[stage,1] * stages1 +Implicit.krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) +@. jstages2 = workspace.x +@. res = u + jstages2/RK.ah[stage,stage] + -1/RK.ah[stage,stage]*RK.d[stage]* u + RK.gamma[stage,1] * (RK.d[1] * u - jstages1) +Trixi.rhs_parabolic!(du, res, p, t + RK.c[stage] * Δt) +Trixi.rhs!(du_tmp, res, p, t + RK.c[stage] * Δt) +@. stages2 = du + du_tmp + +stage = 3 +invdt = inv(RK.ah[stage,stage] * Δt) +M = Implicit.LMROperator(J, invdt) +@. res = invdt * RK.d[stage] * u - invdt*RK.ah[stage,stage] * (RK.gamma[stage,1] *( RK.d[1] * u - jstages1) + RK.gamma[stage,2] * (RK.d[2] * u - jstages2)) + RK.a[stage,1] * stages1 + RK.a[stage,2] * stages2 +@show "krylov solve" +@time a = Implicit.krylov_solve!(workspace, M, res, jstages2, atol = 1e-6, rtol = 1e-6) +@show a diff --git a/examples/trixi_lid_driven_linear.jl b/examples/trixi_lid_driven_linear.jl index 5e3aab3..b45bf7e 100644 --- a/examples/trixi_lid_driven_linear.jl +++ b/examples/trixi_lid_driven_linear.jl @@ -21,7 +21,7 @@ using CairoMakie trixi_include(joinpath(examples_dir(), "tree_2d_dgsem", "elixir_navierstokes_lid_driven_cavity.jl"), sol = nothing, mu = 0.1); dt = 0.01/8 # solve needs some value here but it will be overwritten by the stepsize_callback -ode = semidiscretize(semi, (0.0, 10.0)) +ode = semidiscretize(semi, (0.0, 10.0*dt)) ############################################################################### # run the simulation diff --git a/examples/trixi_lid_test.jl b/examples/trixi_lid_test.jl index 9eff16c..d00ca76 100644 --- a/examples/trixi_lid_test.jl +++ b/examples/trixi_lid_test.jl @@ -19,12 +19,12 @@ using CairoMakie #@assert !Trixi._PREFERENCE_LOOPVECTORIZATION trixi_include(joinpath(examples_dir(), "tree_2d_dgsem", "elixir_navierstokes_lid_driven_cavity.jl"), sol = nothing, mu = 0.1); -dt = 0.01/4 -ode = semidiscretize(semi, (0.0, 10.0)) +dt = 0.01/8 +ode = semidiscretize(semi, (0.0, 10.0*dt)) ############################################################################### # run the simulation -sol = solve( + sol = solve( ode, Implicit.RKLSSPIMEX332Z(); #Implicit.KS22(); @@ -34,5 +34,7 @@ sol = solve( krylov_algo = :gmres, ); + + ## dt_vec = [0.001, 0.001/2, 0.0001] ## l2_vec = [4.95311953e-04, 2.48996489e-04 ,5.40458032e-05, ] diff --git a/libs/Implicit/src/Implicit.jl b/libs/Implicit/src/Implicit.jl index d2f000f..cf0c479 100644 --- a/libs/Implicit/src/Implicit.jl +++ b/libs/Implicit/src/Implicit.jl @@ -6,7 +6,7 @@ using LinearAlgebra import Ariadne: JacobianOperator using Krylov -using Trixi: @trixi_timeit +using Trixi: @trixi_timeit, timer struct MOperator{JOp} J::JOp dt::Float64 @@ -14,7 +14,7 @@ end struct LMOperator{JOp} J::JOp -dt::Float64 + dt::Float64 end Base.size(M::LMOperator) = size(M.J) diff --git a/libs/Implicit/src/linear_imex.jl b/libs/Implicit/src/linear_imex.jl index 8dfe9f1..5b76c7d 100644 --- a/libs/Implicit/src/linear_imex.jl +++ b/libs/Implicit/src/linear_imex.jl @@ -31,8 +31,10 @@ struct RKLSSPIMEX332Z <: RKLIMEXZ{3} end function mul!(out::AbstractVector, M::LMOperator, v::AbstractVector) # out = (I/dt - J(f,x,p)) * v - mul!(out, M.J, v) - @. out = v - out * M.dt + @trixi_timeit timer() "compute mul!" begin + mul!(out, M.J, v) + @. out = v - out * M.dt + end return nothing end @@ -47,9 +49,11 @@ Base.eltype(M::LMROperator) = eltype(M.J) Base.length(M::LMROperator) = length(M.J) function mul!(out::AbstractVector, M::LMROperator, v::AbstractVector) # out = (I/dt - J(f,x,p)) * v - mul!(out, M.J, v) - @. out = v * M.invdt - out - return nothing + @trixi_timeit timer() "compute mul!" begin + mul!(out, M.J, v) + @. out = v * M.invdt - out + end + return nothing end function (::RKLinearImplicitExplicitEuler)(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, ustages, jstages, stage, RK, M, lin_du_tmp, lin_du_tmp1, workspace) @@ -61,8 +65,7 @@ function (::RKLinearImplicitExplicitEuler)(res, uₙ, Δt, f1!, f2!, du, du_tmp, mul!(lin_du_tmp, M.J, uₙ) # mul!(lin_du_tmp1, J, u) f2!(du, uₙ, p, t + RK.c[stage] * Δt) - f1!(du_tmp, uₙ, p, t + RK.c[stage] * Δt) - + f1!(du_tmp, uₙ, p, t + RK.c[stage] * Δt) res .= uₙ .+ RK.a[stage, stage] * Δt .* (du .+ du_tmp .- lin_du_tmp) krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) @. u = workspace.x @@ -89,7 +92,7 @@ function (::RKLIMEXZ{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, elseif stage == 2 @. res = invdt * RK.d[stage] * uₙ - invdt*RK.ah[stage,stage] * RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.a[stage,1] * stages[1] - krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) + krylov_solve!(workspace, M, res, jstages[stage-1], atol = 1e-6, rtol = 1e-6) @. jstages[stage] = workspace.x @. res = uₙ+ jstages[stage]/RK.ah[stage,stage] + -1/RK.ah[stage,stage]*RK.d[stage]* uₙ + RK.gamma[stage,1] * (RK.d[1] * uₙ - jstages[1]) f2!(du, res, p, t + RK.c[stage] * Δt) @@ -97,8 +100,8 @@ function (::RKLIMEXZ{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, @. stages[stage] = du + du_tmp elseif stage == 3 - @. res = invdt * RK.d[stage] * uₙ - invdt*RK.ah[stage,stage] * (RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.gamma[stage,2] * (RK.d[2] * uₙ - jstages[2])) + RK.a[stage,1] * stages[1] + RK.a[stage,2] * stages[2] - krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) + @. res = invdt * RK.d[stage] * uₙ - invdt*RK.ah[stage,stage] * (RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.gamma[stage,2] * (RK.d[2] * uₙ - jstages[2])) + RK.a[stage,1] * stages[1] + RK.a[stage,2] * stages[2] + krylov_solve!(workspace, M, res, jstages[stage-1], atol = 1e-6, rtol = 1e-6) @. jstages[stage] = workspace.x @. res = uₙ+ jstages[stage]/RK.ah[stage,stage] + -1/RK.ah[stage,stage]*RK.d[stage]* uₙ + RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.gamma[stage,2] * (RK.d[2] * uₙ - jstages[2] ) @. res = -res * Δt + jstages[stage]/RK.ah[stage,stage] + uₙ @@ -133,7 +136,6 @@ function (::RKLIMEX{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, u mul!(lin_du_tmp, M.J, uₙ) # mul!(lin_du_tmp1, J, u) @. res = uₙ + RK.a[stage,1] * Δt * stages[1] - Δt * RK.ah[stage,1] * jstages[1] - krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) @. u = workspace.x J = JacobianOperator(F!, du, u, p) From e3dd82727e6a5da30a75d3786ed5dea8feb9e858 Mon Sep 17 00:00:00 2001 From: MarcoArtiano Date: Tue, 29 Jul 2025 13:23:27 +0200 Subject: [PATCH 09/10] set assume_p_const = true --- libs/Implicit/src/linear_imex.jl | 10 ++-------- src/Ariadne.jl | 3 ++- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/libs/Implicit/src/linear_imex.jl b/libs/Implicit/src/linear_imex.jl index 5b76c7d..eb24d8c 100644 --- a/libs/Implicit/src/linear_imex.jl +++ b/libs/Implicit/src/linear_imex.jl @@ -31,14 +31,11 @@ struct RKLSSPIMEX332Z <: RKLIMEXZ{3} end function mul!(out::AbstractVector, M::LMOperator, v::AbstractVector) # out = (I/dt - J(f,x,p)) * v - @trixi_timeit timer() "compute mul!" begin mul!(out, M.J, v) @. out = v - out * M.dt - end return nothing end - struct LMROperator{JOp} J::JOp invdt::Float64 @@ -49,10 +46,8 @@ Base.eltype(M::LMROperator) = eltype(M.J) Base.length(M::LMROperator) = length(M.J) function mul!(out::AbstractVector, M::LMROperator, v::AbstractVector) # out = (I/dt - J(f,x,p)) * v - @trixi_timeit timer() "compute mul!" begin mul!(out, M.J, v) @. out = v * M.invdt - out - end return nothing end @@ -79,7 +74,7 @@ end function (::RKLIMEXZ{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, ustages, jstages, stage, RK, M, lin_du_tmp, lin_du_tmp1, workspace) F!(du, u, p) = f1!(du, u, p, t) ## parabolic invdt = inv(RK.ah[stage,stage] * Δt) - J = JacobianOperator(F!, du, uₙ, p) + J = JacobianOperator(F!, du, uₙ, p, assume_p_const = true) M = LMROperator(J, invdt) if stage == 1 @. res = invdt * RK.d[stage] * uₙ @@ -89,7 +84,6 @@ function (::RKLIMEXZ{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, f2!(du, res, p, t + RK.c[stage] * Δt) f1!(du_tmp, res, p, t + RK.c[stage] * Δt) @. stages[stage] = du + du_tmp - elseif stage == 2 @. res = invdt * RK.d[stage] * uₙ - invdt*RK.ah[stage,stage] * RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.a[stage,1] * stages[1] krylov_solve!(workspace, M, res, jstages[stage-1], atol = 1e-6, rtol = 1e-6) @@ -150,7 +144,7 @@ function (::RKLIMEX{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, u M = LMOperator(J, RK.ah[stage,stage] * Δt) mul!(lin_du_tmp, M.J, uₙ) @. res = uₙ + RK.a[stage,1] * Δt * stages[1] + RK.a[stage,2] * Δt * stages[2] - Δt * RK.ah[stage,1] * jstages[1] - Δt * RK.ah[stage,2] * jstages[2] - krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) + a = krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) @. u = workspace.x J = JacobianOperator(F!, du, u, p) mul!(jstages[stage], J, u) diff --git a/src/Ariadne.jl b/src/Ariadne.jl index a61b134..fa70f4b 100644 --- a/src/Ariadne.jl +++ b/src/Ariadne.jl @@ -71,7 +71,8 @@ Base.eltype(J::JacobianOperator) = eltype(J.u) Base.length(J::JacobianOperator) = prod(size(J)) function mul!(out, J::JacobianOperator, v) - autodiff( + +autodiff( Forward, maybe_duplicated(J.f, J.f′), Const, Duplicated(J.res, reshape(out, size(J.res))), From 842edd96053d0d102c8fd5502e2630c3fd333750 Mon Sep 17 00:00:00 2001 From: Marco Artiano Date: Fri, 1 Aug 2025 11:56:53 +0200 Subject: [PATCH 10/10] tracking allocations --- examples/trixi_lid_test.jl | 4 ++-- libs/Implicit/src/linear_imex.jl | 34 ++++++++++++++++---------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/examples/trixi_lid_test.jl b/examples/trixi_lid_test.jl index d00ca76..e191a2a 100644 --- a/examples/trixi_lid_test.jl +++ b/examples/trixi_lid_test.jl @@ -19,8 +19,8 @@ using CairoMakie #@assert !Trixi._PREFERENCE_LOOPVECTORIZATION trixi_include(joinpath(examples_dir(), "tree_2d_dgsem", "elixir_navierstokes_lid_driven_cavity.jl"), sol = nothing, mu = 0.1); -dt = 0.01/8 -ode = semidiscretize(semi, (0.0, 10.0*dt)) +dt = 0.01/16 +ode = semidiscretize(semi, (0.0, 10.0)) ############################################################################### # run the simulation diff --git a/libs/Implicit/src/linear_imex.jl b/libs/Implicit/src/linear_imex.jl index eb24d8c..d32f171 100644 --- a/libs/Implicit/src/linear_imex.jl +++ b/libs/Implicit/src/linear_imex.jl @@ -72,21 +72,21 @@ function (::RKLinearImplicitExplicitEuler)(res, uₙ, Δt, f1!, f2!, du, du_tmp, end function (::RKLIMEXZ{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, ustages, jstages, stage, RK, M, lin_du_tmp, lin_du_tmp1, workspace) - F!(du, u, p) = f1!(du, u, p, t) ## parabolic + @trixi_timeit timer() "F! function inside" F!(du, u, p) = f1!(du, u, p, t) ## parabolic invdt = inv(RK.ah[stage,stage] * Δt) - J = JacobianOperator(F!, du, uₙ, p, assume_p_const = true) - M = LMROperator(J, invdt) + @trixi_timeit timer() "Jacobian inside" J = JacobianOperator(F!, du, uₙ, p, assume_p_const = true) + @trixi_timeit timer() "LM Operator inside" M = LMROperator(J, invdt) if stage == 1 @. res = invdt * RK.d[stage] * uₙ - krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) + @trixi_timeit timer() "krylov solve stage 1" krylov_solve!(workspace, M, res, atol = 1e-6, rtol = 1e-6) @. jstages[stage] = workspace.x @. res = uₙ+ jstages[stage]/RK.ah[stage,stage] + -1/RK.ah[stage,stage]*RK.d[stage]* uₙ f2!(du, res, p, t + RK.c[stage] * Δt) - f1!(du_tmp, res, p, t + RK.c[stage] * Δt) + f1!(du_tmp, res, p, t + RK.c[stage] * Δt) @. stages[stage] = du + du_tmp elseif stage == 2 @. res = invdt * RK.d[stage] * uₙ - invdt*RK.ah[stage,stage] * RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.a[stage,1] * stages[1] - krylov_solve!(workspace, M, res, jstages[stage-1], atol = 1e-6, rtol = 1e-6) + @trixi_timeit timer() "krylov solve stage 2" krylov_solve!(workspace, M, res, jstages[stage-1], atol = 1e-6, rtol = 1e-6) @. jstages[stage] = workspace.x @. res = uₙ+ jstages[stage]/RK.ah[stage,stage] + -1/RK.ah[stage,stage]*RK.d[stage]* uₙ + RK.gamma[stage,1] * (RK.d[1] * uₙ - jstages[1]) f2!(du, res, p, t + RK.c[stage] * Δt) @@ -95,7 +95,7 @@ function (::RKLIMEXZ{3})(res, uₙ, Δt, f1!, f2!, du, du_tmp, u, p, t, stages, elseif stage == 3 @. res = invdt * RK.d[stage] * uₙ - invdt*RK.ah[stage,stage] * (RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.gamma[stage,2] * (RK.d[2] * uₙ - jstages[2])) + RK.a[stage,1] * stages[1] + RK.a[stage,2] * stages[2] - krylov_solve!(workspace, M, res, jstages[stage-1], atol = 1e-6, rtol = 1e-6) + @trixi_timeit timer() "krylov solve stage 3" krylov_solve!(workspace, M, res, jstages[stage-1], atol = 1e-6, rtol = 1e-6) @. jstages[stage] = workspace.x @. res = uₙ+ jstages[stage]/RK.ah[stage,stage] + -1/RK.ah[stage,stage]*RK.d[stage]* uₙ + RK.gamma[stage,1] *( RK.d[1] * uₙ - jstages[1]) + RK.gamma[stage,2] * (RK.d[2] * uₙ - jstages[2] ) @. res = -res * Δt + jstages[stage]/RK.ah[stage,stage] + uₙ @@ -438,24 +438,24 @@ function step!(integrator::SimpleLinearImplicitExplicit) end function stage!(integrator, alg::RKLIMEXZ) - F!(du, u, p) = integrator.f1(du, u, p, integrator.t) ## parabolic - J = JacobianOperator(F!, integrator.du, integrator.u, integrator.p) - M = LMOperator(J, integrator.dt) - kc = KrylovConstructor(integrator.res) - workspace = krylov_workspace(:gmres, kc) + @trixi_timeit timer() "F! function" F!(du, u, p) = integrator.f1(du, u, p, integrator.t) ## parabolic + @trixi_timeit timer() "Jacobian outside" J = JacobianOperator(F!, integrator.du, integrator.u, integrator.p) + @trixi_timeit timer() "LM Operator outside" M = LMOperator(J, integrator.dt) + @trixi_timeit timer() "kc Constructor" kc = KrylovConstructor(integrator.res) + @trixi_timeit timer() "workspace" workspace = krylov_workspace(:gmres, kc) for stage in 1:stages(alg) # Store the solution for each stage in stages ## For a split Problem we need to compute rhs_conservative and rhs_parabolic - alg(integrator.res, integrator.u, integrator.dt, integrator.f1, integrator.f2, integrator.du, integrator.du_tmp, integrator.u_tmp, integrator.p, integrator.t, integrator.stages, integrator.ustages, integrator.jstages, stage, integrator.RK, M, integrator.lin_du_tmp, integrator.lin_du_tmp1, workspace) + @trixi_timeit timer() "alg" alg(integrator.res, integrator.u, integrator.dt, integrator.f1, integrator.f2, integrator.du, integrator.du_tmp, integrator.u_tmp, integrator.p, integrator.t, integrator.stages, integrator.ustages, integrator.jstages, stage, integrator.RK, M, integrator.lin_du_tmp, integrator.lin_du_tmp1, workspace) end end function stage!(integrator, alg::RKLIMEX) F!(du, u, p) = integrator.f1(du, u, p, integrator.t) ## parabolic - J = JacobianOperator(F!, integrator.du, integrator.u, integrator.p) - M = LMOperator(J, integrator.dt) - kc = KrylovConstructor(integrator.res) - workspace = krylov_workspace(:gmres, kc) + J = JacobianOperator(F!, integrator.du, integrator.u, integrator.p) + M = LMOperator(J, integrator.dt) + kc = KrylovConstructor(integrator.res) + workspace = krylov_workspace(:gmres, kc) for stage in 1:stages(alg) # Store the solution for each stage in stages ## For a split Problem we need to compute rhs_conservative and rhs_parabolic