FHN mit neuer UI kompatibel machen #4

Merged
2211567 merged 12 commits from feat/fhn_expansion into main 2025-06-14 22:11:49 +02:00
9 changed files with 455 additions and 201 deletions

View File

@ -1,8 +1,8 @@
# This file is machine-generated - editing it directly is not advised # This file is machine-generated - editing it directly is not advised
julia_version = "1.11.4" julia_version = "1.11.5"
manifest_format = "2.0" manifest_format = "2.0"
project_hash = "b5f5f0b50b1e0b7dd05bb93e0b1bb03fea235d53" project_hash = "5fd84347cd356de5b819aa3ea793fa63c45180e4"
[[deps.ADTypes]] [[deps.ADTypes]]
git-tree-sha1 = "e2478490447631aedba0823d4d7a80b2cc8cdb32" git-tree-sha1 = "e2478490447631aedba0823d4d7a80b2cc8cdb32"
@ -194,9 +194,9 @@ version = "0.1.6"
[[deps.BoundaryValueDiffEq]] [[deps.BoundaryValueDiffEq]]
deps = ["ADTypes", "BoundaryValueDiffEqAscher", "BoundaryValueDiffEqCore", "BoundaryValueDiffEqFIRK", "BoundaryValueDiffEqMIRK", "BoundaryValueDiffEqMIRKN", "BoundaryValueDiffEqShooting", "DiffEqBase", "FastClosures", "ForwardDiff", "LinearAlgebra", "Reexport", "SciMLBase"] deps = ["ADTypes", "BoundaryValueDiffEqAscher", "BoundaryValueDiffEqCore", "BoundaryValueDiffEqFIRK", "BoundaryValueDiffEqMIRK", "BoundaryValueDiffEqMIRKN", "BoundaryValueDiffEqShooting", "DiffEqBase", "FastClosures", "ForwardDiff", "LinearAlgebra", "Reexport", "SciMLBase"]
git-tree-sha1 = "6606f3f7d43b038a8c34ee4cdc31bbd93b447407" git-tree-sha1 = "d6ec33e4516b2e790a64128afdb54f3b536667a7"
uuid = "764a87c0-6b3e-53db-9096-fe964310641d" uuid = "764a87c0-6b3e-53db-9096-fe964310641d"
version = "5.17.0" version = "5.18.0"
[deps.BoundaryValueDiffEq.extensions] [deps.BoundaryValueDiffEq.extensions]
BoundaryValueDiffEqODEInterfaceExt = "ODEInterface" BoundaryValueDiffEqODEInterfaceExt = "ODEInterface"
@ -206,39 +206,39 @@ version = "5.17.0"
[[deps.BoundaryValueDiffEqAscher]] [[deps.BoundaryValueDiffEqAscher]]
deps = ["ADTypes", "AlmostBlockDiagonals", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield"] deps = ["ADTypes", "AlmostBlockDiagonals", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield"]
git-tree-sha1 = "add7560694794f30eec7803b9c4036efb96bf493" git-tree-sha1 = "64a777e06d995f677c86c7ddbb85f393074a0877"
uuid = "7227322d-7511-4e07-9247-ad6ff830280e" uuid = "7227322d-7511-4e07-9247-ad6ff830280e"
version = "1.6.0" version = "1.7.0"
[[deps.BoundaryValueDiffEqCore]] [[deps.BoundaryValueDiffEqCore]]
deps = ["ADTypes", "Adapt", "ArrayInterface", "ConcreteStructs", "DiffEqBase", "ForwardDiff", "LineSearch", "LinearAlgebra", "Logging", "NonlinearSolveFirstOrder", "PreallocationTools", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays", "SparseConnectivityTracer", "SparseMatrixColorings"] deps = ["ADTypes", "Adapt", "ArrayInterface", "ConcreteStructs", "DiffEqBase", "ForwardDiff", "LineSearch", "LinearAlgebra", "Logging", "NonlinearSolveFirstOrder", "PreallocationTools", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays", "SparseConnectivityTracer", "SparseMatrixColorings"]
git-tree-sha1 = "1e97d81b6ea5e8e938c57a3c640a5cff1e181a2f" git-tree-sha1 = "c83bf97da90dd379b1e3f4d9c6f3d0ae48eb0b29"
uuid = "56b672f2-a5fe-4263-ab2d-da677488eb3a" uuid = "56b672f2-a5fe-4263-ab2d-da677488eb3a"
version = "1.9.0" version = "1.10.0"
[[deps.BoundaryValueDiffEqFIRK]] [[deps.BoundaryValueDiffEqFIRK]]
deps = ["ADTypes", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays"] deps = ["ADTypes", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays"]
git-tree-sha1 = "525c65da4b46271b4b5fc2178ccde16c99c21a41" git-tree-sha1 = "e58ee9acfc6dce6dcc368fc0483952bec5625513"
uuid = "85d9eb09-370e-4000-bb32-543851f73618" uuid = "85d9eb09-370e-4000-bb32-543851f73618"
version = "1.7.0" version = "1.8.1"
[[deps.BoundaryValueDiffEqMIRK]] [[deps.BoundaryValueDiffEqMIRK]]
deps = ["ADTypes", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays"] deps = ["ADTypes", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays"]
git-tree-sha1 = "f729bdedaedb537bf7883c9f71e7577e1c7a07f6" git-tree-sha1 = "43debeee94167e2dc744f4a385213c4f0d16b4c3"
uuid = "1a22d4ce-7765-49ea-b6f2-13c8438986a6" uuid = "1a22d4ce-7765-49ea-b6f2-13c8438986a6"
version = "1.7.0" version = "1.8.1"
[[deps.BoundaryValueDiffEqMIRKN]] [[deps.BoundaryValueDiffEqMIRKN]]
deps = ["ADTypes", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays"] deps = ["ADTypes", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays"]
git-tree-sha1 = "dfde7afe34137182a4bb8cd98f01d870772be999" git-tree-sha1 = "1d92c9f7567b627514e143a3caf93af6d235c2db"
uuid = "9255f1d6-53bf-473e-b6bd-23f1ff009da4" uuid = "9255f1d6-53bf-473e-b6bd-23f1ff009da4"
version = "1.6.0" version = "1.7.1"
[[deps.BoundaryValueDiffEqShooting]] [[deps.BoundaryValueDiffEqShooting]]
deps = ["ADTypes", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays"] deps = ["ADTypes", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays"]
git-tree-sha1 = "255c15c2d262ea8d3c5db1e0f130f829362c0fd4" git-tree-sha1 = "1460c449c91c9bc4c8fb08fb5e878811ab38d667"
uuid = "ed55bfe0-3725-4db6-871e-a1dc9f42a757" uuid = "ed55bfe0-3725-4db6-871e-a1dc9f42a757"
version = "1.7.0" version = "1.8.1"
[[deps.BracketingNonlinearSolve]] [[deps.BracketingNonlinearSolve]]
deps = ["CommonSolve", "ConcreteStructs", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] deps = ["CommonSolve", "ConcreteStructs", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"]
@ -390,9 +390,9 @@ uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471"
version = "0.2.3" version = "0.2.3"
[[deps.ConstructionBase]] [[deps.ConstructionBase]]
git-tree-sha1 = "76219f1ed5771adbb096743bff43fb5fdd4c1157" git-tree-sha1 = "b4b092499347b18a015186eae3042f72267106cb"
uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
version = "1.5.8" version = "1.6.0"
weakdeps = ["IntervalSets", "LinearAlgebra", "StaticArrays"] weakdeps = ["IntervalSets", "LinearAlgebra", "StaticArrays"]
[deps.ConstructionBase.extensions] [deps.ConstructionBase.extensions]
@ -457,9 +457,9 @@ version = "5.53.1"
[[deps.DiffEqBase]] [[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"] 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 = "a0e5b5669df9465bc3dd32ea4a8ddeefbc0f7b5c" git-tree-sha1 = "2d87d7bd165c1ca0d11923a9fabe90a9d71e88a6"
uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e"
version = "6.175.0" version = "6.176.0"
[deps.DiffEqBase.extensions] [deps.DiffEqBase.extensions]
DiffEqBaseCUDAExt = "CUDA" DiffEqBaseCUDAExt = "CUDA"
@ -533,9 +533,9 @@ version = "7.16.1"
[[deps.DifferentiationInterface]] [[deps.DifferentiationInterface]]
deps = ["ADTypes", "LinearAlgebra"] deps = ["ADTypes", "LinearAlgebra"]
git-tree-sha1 = "c8d85ecfcbaef899308706bebdd8b00107f3fb43" git-tree-sha1 = "210933c93f39f832d92f9efbbe69a49c453db36d"
uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63"
version = "0.6.54" version = "0.7.1"
[deps.DifferentiationInterface.extensions] [deps.DifferentiationInterface.extensions]
DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore"
@ -614,9 +614,9 @@ version = "0.25.120"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
[[deps.DocStringExtensions]] [[deps.DocStringExtensions]]
git-tree-sha1 = "e7b7e6f178525d17c720ab9c081e4ef04429f860" git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c"
uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
version = "0.9.4" version = "0.9.5"
[[deps.Downloads]] [[deps.Downloads]]
deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"]
@ -635,9 +635,9 @@ uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56"
version = "1.0.5" version = "1.0.5"
[[deps.EnzymeCore]] [[deps.EnzymeCore]]
git-tree-sha1 = "1eb59f40a772d0fbd4cb75e00b3fa7f5f79c975a" git-tree-sha1 = "7d7822a643c33bbff4eab9c87ca8459d7c688db0"
uuid = "f151be2c-9106-41f4-ab19-57ee4f262869" uuid = "f151be2c-9106-41f4-ab19-57ee4f262869"
version = "0.8.9" version = "0.8.11"
weakdeps = ["Adapt"] weakdeps = ["Adapt"]
[deps.EnzymeCore.extensions] [deps.EnzymeCore.extensions]
@ -694,9 +694,9 @@ version = "6.1.2+0"
[[deps.FFTW]] [[deps.FFTW]]
deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"]
git-tree-sha1 = "7de7c78d681078f027389e067864a8d53bd7c3c9" git-tree-sha1 = "797762812ed063b9b94f6cc7742bc8883bb5e69e"
uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
version = "1.8.1" version = "1.9.0"
[[deps.FFTW_jll]] [[deps.FFTW_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
@ -852,9 +852,9 @@ version = "2.13.4+0"
[[deps.FreeTypeAbstraction]] [[deps.FreeTypeAbstraction]]
deps = ["BaseDirs", "ColorVectorSpace", "Colors", "FreeType", "GeometryBasics", "Mmap"] deps = ["BaseDirs", "ColorVectorSpace", "Colors", "FreeType", "GeometryBasics", "Mmap"]
git-tree-sha1 = "eaca92bac73aa42f68c57d1b8df1b746eeb2bdaa" git-tree-sha1 = "4ebb930ef4a43817991ba35db6317a05e59abd11"
uuid = "663a7486-cb36-511b-a19d-713bb74d65c9" uuid = "663a7486-cb36-511b-a19d-713bb74d65c9"
version = "0.10.7" version = "0.10.8"
[[deps.FriBidi_jll]] [[deps.FriBidi_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
@ -898,9 +898,9 @@ version = "3.4.0+2"
[[deps.GLMakie]] [[deps.GLMakie]]
deps = ["ColorTypes", "Colors", "FileIO", "FixedPointNumbers", "FreeTypeAbstraction", "GLFW", "GeometryBasics", "LinearAlgebra", "Makie", "Markdown", "MeshIO", "ModernGL", "Observables", "PrecompileTools", "Printf", "ShaderAbstractions", "StaticArrays"] deps = ["ColorTypes", "Colors", "FileIO", "FixedPointNumbers", "FreeTypeAbstraction", "GLFW", "GeometryBasics", "LinearAlgebra", "Makie", "Markdown", "MeshIO", "ModernGL", "Observables", "PrecompileTools", "Printf", "ShaderAbstractions", "StaticArrays"]
git-tree-sha1 = "0650df73822ce8808dc473e3e1c7581bdb367083" git-tree-sha1 = "aacae8d91f7da30979e189e8046c5bd655421687"
uuid = "e9467ef8-e4e7-5192-8a1a-b1aee30e663a" uuid = "e9467ef8-e4e7-5192-8a1a-b1aee30e663a"
version = "0.11.8" version = "0.12.0"
[[deps.GPUArraysCore]] [[deps.GPUArraysCore]]
deps = ["Adapt"] deps = ["Adapt"]
@ -956,10 +956,10 @@ uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472"
version = "1.3.15+0" version = "1.3.15+0"
[[deps.Graphs]] [[deps.Graphs]]
deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] deps = ["ArnoldiMethod", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"]
git-tree-sha1 = "3169fd3440a02f35e549728b0890904cfd4ae58a" git-tree-sha1 = "c5abfa0ae0aaee162a3fbb053c13ecda39be545b"
uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" uuid = "86223c79-3864-5bf0-83f7-82e725a168b6"
version = "1.12.1" version = "1.13.0"
[[deps.GridLayoutBase]] [[deps.GridLayoutBase]]
deps = ["GeometryBasics", "InteractiveUtils", "Observables"] deps = ["GeometryBasics", "InteractiveUtils", "Observables"]
@ -1145,9 +1145,9 @@ version = "3.1.1+0"
[[deps.JumpProcesses]] [[deps.JumpProcesses]]
deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "Markdown", "PoissonRandom", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "StaticArrays", "SymbolicIndexingInterface", "UnPack"] deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "Markdown", "PoissonRandom", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "StaticArrays", "SymbolicIndexingInterface", "UnPack"]
git-tree-sha1 = "216c196df09c8b80a40a2befcb95760eb979bcfd" git-tree-sha1 = "fb7fd516de38db80f50fe15e57d44da2836365e7"
uuid = "ccbc3e58-028d-4f4c-8cd5-9ae44345cda5" uuid = "ccbc3e58-028d-4f4c-8cd5-9ae44345cda5"
version = "9.15.0" version = "9.16.0"
weakdeps = ["FastBroadcast"] weakdeps = ["FastBroadcast"]
[[deps.KernelDensity]] [[deps.KernelDensity]]
@ -1308,9 +1308,9 @@ weakdeps = ["LineSearches"]
[[deps.LineSearches]] [[deps.LineSearches]]
deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"]
git-tree-sha1 = "e4c3be53733db1051cc15ecf573b1042b3a712a1" git-tree-sha1 = "4adee99b7262ad2a1a4bbbc59d993d24e55ea96f"
uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255"
version = "7.3.0" version = "7.4.0"
[[deps.LinearAlgebra]] [[deps.LinearAlgebra]]
deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"]
@ -1319,9 +1319,9 @@ version = "1.11.0"
[[deps.LinearSolve]] [[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"] 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 = "c618a6a774d5712c6bf02dbcceb51b6dc6b9bb89" git-tree-sha1 = "c0d1a91a50af6778863d320761f807f641f74935"
uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae"
version = "3.16.0" version = "3.17.0"
[deps.LinearSolve.extensions] [deps.LinearSolve.extensions]
LinearSolveBandedMatricesExt = "BandedMatrices" LinearSolveBandedMatricesExt = "BandedMatrices"
@ -1392,15 +1392,15 @@ version = "0.5.16"
[[deps.Makie]] [[deps.Makie]]
deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "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"] 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 = "968f03dc65c8144a728f988051a88c78fe625e26" git-tree-sha1 = "29c5cf33287afa8c06711fec1b33d074f88dd354"
uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
version = "0.22.7" version = "0.23.0"
[[deps.MakieCore]] [[deps.MakieCore]]
deps = ["ColorTypes", "GeometryBasics", "IntervalSets", "Observables"] deps = ["ColorTypes", "GeometryBasics", "IntervalSets", "Observables"]
git-tree-sha1 = "733d910c70805e7114c82508bae99c6cdf004466" git-tree-sha1 = "6ec4aba99ce1a8c247822ce346b273d0d686e141"
uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b" uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b"
version = "0.9.3" version = "0.10.0"
[[deps.ManualMemory]] [[deps.ManualMemory]]
git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd"
@ -1493,9 +1493,9 @@ version = "0.2.4"
[[deps.NLSolversBase]] [[deps.NLSolversBase]]
deps = ["ADTypes", "DifferentiationInterface", "Distributed", "FiniteDiff", "ForwardDiff"] deps = ["ADTypes", "DifferentiationInterface", "Distributed", "FiniteDiff", "ForwardDiff"]
git-tree-sha1 = "b14c7be6046e7d48e9063a0053f95ee0fc954176" git-tree-sha1 = "25a6638571a902ecfb1ae2a18fc1575f86b1d4df"
uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" uuid = "d41bc354-129a-5804-8e4c-c37616107c6c"
version = "7.9.1" version = "7.10.0"
[[deps.NLsolve]] [[deps.NLsolve]]
deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"] deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"]
@ -1639,7 +1639,7 @@ version = "3.2.4+0"
[[deps.OpenLibm_jll]] [[deps.OpenLibm_jll]]
deps = ["Artifacts", "Libdl"] deps = ["Artifacts", "Libdl"]
uuid = "05823500-19ac-5b8b-9628-191a04bc5112" uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
version = "0.8.1+4" version = "0.8.5+0"
[[deps.OpenSSL_jll]] [[deps.OpenSSL_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
@ -1655,9 +1655,9 @@ version = "0.5.6+0"
[[deps.Optim]] [[deps.Optim]]
deps = ["Compat", "EnumX", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] deps = ["Compat", "EnumX", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"]
git-tree-sha1 = "31b3b1b8e83ef9f1d50d74f1dd5f19a37a304a1f" git-tree-sha1 = "61942645c38dd2b5b78e2082c9b51ab315315d10"
uuid = "429524aa-4258-5aef-a3af-852621145aeb" uuid = "429524aa-4258-5aef-a3af-852621145aeb"
version = "1.12.0" version = "1.13.2"
[deps.Optim.extensions] [deps.Optim.extensions]
OptimMOIExt = "MathOptInterface" OptimMOIExt = "MathOptInterface"
@ -1690,15 +1690,15 @@ version = "1.2.0"
[[deps.OrdinaryDiffEqBDF]] [[deps.OrdinaryDiffEqBDF]]
deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqSDIRK", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "StaticArrays", "TruncatedStacktraces"] deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqSDIRK", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "StaticArrays", "TruncatedStacktraces"]
git-tree-sha1 = "42755bd13fe56e9d9ce1bc005f8b206a6b56b731" git-tree-sha1 = "9124a686af119063bb4d3a8f87044a8f312fcad9"
uuid = "6ad6398a-0878-4a85-9266-38940aa047c8" uuid = "6ad6398a-0878-4a85-9266-38940aa047c8"
version = "1.5.1" version = "1.6.0"
[[deps.OrdinaryDiffEqCore]] [[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"] 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 = "d29adfeb720dd7c251b216d91c4bd4fe67c087df" git-tree-sha1 = "08dac9c6672a4548439048089bac293759a897fd"
uuid = "bbf590c4-e513-4bbe-9b18-05decba2e5d8" uuid = "bbf590c4-e513-4bbe-9b18-05decba2e5d8"
version = "1.26.0" version = "1.26.1"
weakdeps = ["EnzymeCore"] weakdeps = ["EnzymeCore"]
[deps.OrdinaryDiffEqCore.extensions] [deps.OrdinaryDiffEqCore.extensions]
@ -1712,9 +1712,9 @@ version = "1.4.0"
[[deps.OrdinaryDiffEqDifferentiation]] [[deps.OrdinaryDiffEqDifferentiation]]
deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqCore", "SciMLBase", "SciMLOperators", "SparseArrays", "SparseMatrixColorings", "StaticArrayInterface", "StaticArrays"] deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqCore", "SciMLBase", "SciMLOperators", "SparseArrays", "SparseMatrixColorings", "StaticArrayInterface", "StaticArrays"]
git-tree-sha1 = "c78060115fa4ea9d70ac47fa49496acbc630aefa" git-tree-sha1 = "efecf0c4cc44e16251b0e718f08b0876b2a82b80"
uuid = "4302a76b-040a-498a-8c04-15b101fed76b" uuid = "4302a76b-040a-498a-8c04-15b101fed76b"
version = "1.9.1" version = "1.10.0"
[[deps.OrdinaryDiffEqExplicitRK]] [[deps.OrdinaryDiffEqExplicitRK]]
deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "TruncatedStacktraces"] deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "TruncatedStacktraces"]
@ -1820,9 +1820,9 @@ version = "1.1.0"
[[deps.OrdinaryDiffEqRosenbrock]] [[deps.OrdinaryDiffEqRosenbrock]]
deps = ["ADTypes", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static"] deps = ["ADTypes", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static"]
git-tree-sha1 = "063e5ff1447b3869856ed264b6dcbb21e6e8bdb0" git-tree-sha1 = "1ce0096d920e95773220e818f29bf4b37ea2bb78"
uuid = "43230ef6-c299-4910-a778-202eb28ce4ce" uuid = "43230ef6-c299-4910-a778-202eb28ce4ce"
version = "1.10.1" version = "1.11.0"
[[deps.OrdinaryDiffEqSDIRK]] [[deps.OrdinaryDiffEqSDIRK]]
deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "SciMLBase", "TruncatedStacktraces"] deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "SciMLBase", "TruncatedStacktraces"]
@ -2169,9 +2169,9 @@ version = "0.1.0"
[[deps.SciMLBase]] [[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"] 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 = "ce947672206f6a3a2bee1017c690cfd5fd82d897" git-tree-sha1 = "04bbcdc8d1f7d6f667f75fbcc68728231e21fabe"
uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
version = "2.96.0" version = "2.101.0"
[deps.SciMLBase.extensions] [deps.SciMLBase.extensions]
SciMLBaseChainRulesCoreExt = "ChainRulesCore" SciMLBaseChainRulesCoreExt = "ChainRulesCore"
@ -2202,9 +2202,9 @@ version = "0.1.6"
[[deps.SciMLOperators]] [[deps.SciMLOperators]]
deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"]
git-tree-sha1 = "85608e4aaf758547ffc4030c908318b432114ec9" git-tree-sha1 = "3249fe77f322fe539e935ecb388c8290cd38a3fc"
uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961"
version = "1.3.0" version = "1.3.1"
weakdeps = ["SparseArrays", "StaticArraysCore"] weakdeps = ["SparseArrays", "StaticArraysCore"]
[deps.SciMLOperators.extensions] [deps.SciMLOperators.extensions]
@ -2308,9 +2308,9 @@ version = "1.11.0"
[[deps.SparseConnectivityTracer]] [[deps.SparseConnectivityTracer]]
deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"] deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"]
git-tree-sha1 = "fadb2d7010dd92912e5eb31a493613ad4b8c9583" git-tree-sha1 = "affde0bfd920cfcaa0944d3c0eb3a573fa9c4d1e"
uuid = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" uuid = "9f842d2f-2579-4b1d-911e-f412cf18a3f5"
version = "0.6.18" version = "0.6.20"
[deps.SparseConnectivityTracer.extensions] [deps.SparseConnectivityTracer.extensions]
SparseConnectivityTracerDataInterpolationsExt = "DataInterpolations" SparseConnectivityTracerDataInterpolationsExt = "DataInterpolations"
@ -2517,9 +2517,9 @@ version = "1.0.1"
[[deps.Tables]] [[deps.Tables]]
deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"]
git-tree-sha1 = "598cd7c1f68d1e205689b1c2fe65a9f85846f297" git-tree-sha1 = "f2c1efbc8f3a609aadf318094f8fc5204bdaf344"
uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
version = "1.12.0" version = "1.12.1"
[[deps.Tar]] [[deps.Tar]]
deps = ["ArgTools", "SHA"] deps = ["ArgTools", "SHA"]
@ -2539,15 +2539,15 @@ version = "1.11.0"
[[deps.ThreadingUtilities]] [[deps.ThreadingUtilities]]
deps = ["ManualMemory"] deps = ["ManualMemory"]
git-tree-sha1 = "2d529b6b22791f3e22e7ec5c60b9016e78f5f6bf" git-tree-sha1 = "d969183d3d244b6c33796b5ed01ab97328f2db85"
uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5"
version = "0.5.4" version = "0.5.5"
[[deps.TiffImages]] [[deps.TiffImages]]
deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "SIMD", "UUIDs"] deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "PrecompileTools", "ProgressMeter", "SIMD", "UUIDs"]
git-tree-sha1 = "f21231b166166bebc73b99cea236071eb047525b" git-tree-sha1 = "02aca429c9885d1109e58f400c333521c13d48a0"
uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69" uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69"
version = "0.11.3" version = "0.11.4"
[[deps.TimerOutputs]] [[deps.TimerOutputs]]
deps = ["ExprTools", "Printf"] deps = ["ExprTools", "Printf"]
@ -2599,14 +2599,16 @@ version = "0.4.1"
[[deps.Unitful]] [[deps.Unitful]]
deps = ["Dates", "LinearAlgebra", "Random"] deps = ["Dates", "LinearAlgebra", "Random"]
git-tree-sha1 = "d62610ec45e4efeabf7032d67de2ffdea8344bed" git-tree-sha1 = "d2282232f8a4d71f79e85dc4dd45e5b12a6297fb"
uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" uuid = "1986cc42-f94f-5a68-af5c-568840ba703d"
version = "1.22.1" version = "1.23.1"
weakdeps = ["ConstructionBase", "InverseFunctions"] weakdeps = ["ConstructionBase", "ForwardDiff", "InverseFunctions", "Printf"]
[deps.Unitful.extensions] [deps.Unitful.extensions]
ConstructionBaseUnitfulExt = "ConstructionBase" ConstructionBaseUnitfulExt = "ConstructionBase"
ForwardDiffExt = "ForwardDiff"
InverseFunctionsUnitfulExt = "InverseFunctions" InverseFunctionsUnitfulExt = "InverseFunctions"
PrintfExt = "Printf"
[[deps.Wayland_jll]] [[deps.Wayland_jll]]
deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "XML2_jll"] deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "XML2_jll"]
@ -2615,10 +2617,10 @@ uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89"
version = "1.23.1+0" version = "1.23.1+0"
[[deps.Wayland_protocols_jll]] [[deps.Wayland_protocols_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "5db3e9d307d32baba7067b13fc7b5aa6edd4a19a" git-tree-sha1 = "54b8a029ac145ebe8299463447fd1590b2b1d92f"
uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91"
version = "1.36.0+0" version = "1.44.0+0"
[[deps.WebP]] [[deps.WebP]]
deps = ["CEnum", "ColorTypes", "FileIO", "FixedPointNumbers", "ImageCore", "libwebp_jll"] deps = ["CEnum", "ColorTypes", "FileIO", "FixedPointNumbers", "ImageCore", "libwebp_jll"]

View File

@ -1,28 +1,58 @@
include("../src/utils/constants.jl")
#include("../src/fhn_solver.jl")
include("../src/gray_scott_solver.jl") include("../src/gray_scott_solver.jl")
include("../src/visualization.jl") include("../src/visualization.jl")
include("../src/utils/constants.jl")
using Observables using Observables
using GLMakie using GLMakie
using .GrayScottSolver
using .Visualization
using .Constants
const N = 128 using .Constants
const dx = 1.0 using .Visualization
# GSParams
N = 128
dx = 1.0
Du, Dv = Observable(0.16), Observable(0.08) Du, Dv = Observable(0.16), Observable(0.08)
F, k = Observable(0.060), Observable(0.062) F, k = Observable(0.060), Observable(0.062)
params_obs = Observable(GSParams(N, dx, Du[], Dv[], F[], k[])) param_observables = (
Du=Du,
Dv=Dv,
F=F,
k=k,
)
"""
# FHNParams
N = 128
dx = 1.0
Du, Dv = Observable(0.016), Observable(0.1)
ϵ, a, b = Observable(0.1), Observable(0.5), Observable(0.9)
param_observables = (
Du=Du,
Dv=Dv,
ϵ=ϵ,
a=a,
b=b
)
"""
params_obs = Observable(Constants.GSParams(N, dx, Du[], Dv[], F[], k[]))
#params_obs = Observable(FHNParams(N=N, dx=dx, Du=Du[], Dv=Dv[], ϵ=ϵ[], a=a[], b=b[]))
lift(Du, Dv, F, k) do u, v, f, ki lift(Du, Dv, F, k) do u, v, f, ki
params_obs[] = GSParams(N, dx, u, v, f, ki) params_obs[] = GSParams(N, dx, u, v, f, ki)
end end
"""
lift(Du, Dv, ϵ, a, b) do d_u, d_v, eps, aa, bb
params_obs[] = FHNParams(N=N, dx=dx, Du=d_u, Dv=d_v, ϵ=eps, a=aa, b=bb)
end
"""
U = ones(N, N) U = ones(N, N)
V = zeros(N, N) V = zeros(N, N)
heat_obs = Observable(U) heat_obs = Observable(U)
fig = build_ui(U, V, Du, Dv, F, k, params_obs, heat_obs) fig = build_ui(U, V, param_observables, params_obs, heat_obs)
display(fig) display(fig)

View File

@ -1,21 +0,0 @@
using GLMakie
include("../src/AnimalFurFHN.jl")
using .AnimalFurFHN
# === Parameters ===
N = 100
tspan = (0.0, 100.0)
frame_index = 1 # final time step
# === Run simulation ===
sol = run_simulation(N, tspan)
# === Extract activator u ===
u = sol.u[frame_index][1:N^2]
u_mat = reshape(u, N, N)
# === Plot ===
fig = Figure()
ax = Axis(fig[1, 1])
heatmap!(ax, u_mat, colormap=:viridis)
fig

75
src/fhn_solver.jl 100644
View File

@ -0,0 +1,75 @@
include("utils/laplacian.jl")
using DifferentialEquations
using Random
using Observables
using ..Constants
using .Laplacian
"""
fhn(du, u, p:FHNParams, t:)
Implements the spatial dynamics of FitzHugh-Nagumo (fhn). Designed to be
within a larger numerical solver of partial differential equations.
# Arguments
- `du`: output argument which stores the calculated derivatives
- `u`: input vector containing the current state of the system at time t
- `p`: holds all the fixed parameters of the FHN model
- `t`: current time
# Returns
- `du`: calculated derivatives put back into the du array
"""
function fhn!(du, u, p::FHNParams, t)
N = p.N
u_mat = reshape(u[1:N^2], N, N)
v_mat = reshape(u[N^2+1:end], N, N)
Δu = laplacian(u_mat, p.dx)
Δv = laplacian(v_mat, p.dx)
u_in = u_mat[2:end-1, 2:end-1]
v_in = v_mat[2:end-1, 2:end-1]
fu = p.Du * Δu .+ u_in .- u_in .^ 3 ./ 3 .- v_in
fv = p.Dv * Δv .+ p.ϵ * (u_in .+ p.a .- p.b .* v_in)
# Construct output with zero boundary (padding)
fu_full = zeros(N, N)
fv_full = zeros(N, N)
fu_full[2:end-1, 2:end-1] .= fu
fv_full[2:end-1, 2:end-1] .= fv
du .= vcat(vec(fu_full), vec(fv_full))
end
function step!(U, V, params_obs::Observable; dx=1)
p = params_obs[]
# Flatten initial condition (activation u, recovery v)
u0 = vec(U)
v0 = vec(V)
u_init = vcat(u0, v0)
# Define one integration step using your fhn! function
prob = ODEProblem((du, u, p, t) -> fhn!(du, u, p, t), u_init, (0.0, 0.1), p)
sol = solve(prob, Tsit5(); dt=0.1, save_start=false, saveat=10.0)
# Extract solution and reshape
u_new = reshape(sol[end][1:p.N^2], p.N, p.N)
v_new = reshape(sol[end][p.N^2+1:end], p.N, p.N)
# Update matrices in-place
U .= u_new
V .= v_new
return U
end
function multi_step!(state, n_steps, heat_obs::Observable, params_obs::Observable; dx=1)
for _ in 1:n_steps
heat_obs[] = step!(state[1], state[2], params_obs; dx=1)
end
end

View File

@ -1,30 +1,35 @@
module GrayScottSolver
using Observables
include("utils/constants.jl") include("utils/constants.jl")
include("utils/laplacian.jl") include("utils/laplacian.jl")
using Observables
using .Constants using .Constants
using .Laplacian using .Laplacian
export step!, multi_step!
function step!(U, V, params_obs::Observable; dx=1) function step!(U, V, params_obs::Observable; dx=1)
lap_u = laplacian5(U, dx) # Extract parameters
lap_v = laplacian5(V, dx) p = params_obs[]
diff_u = params_obs[].Du Du, Dv = p.Du, p.Dv
diff_v = params_obs[].Dv F, k = p.F, p.k
feed_u = params_obs[].F
kill_v = params_obs[].k # Compute Laplacians on the interior
lap_u = laplacian(U, dx) # shape (N-2, N-2)
lap_v = laplacian(V, dx)
# Extract interior values
u = U[2:end-1, 2:end-1] u = U[2:end-1, 2:end-1]
v = V[2:end-1, 2:end-1] v = V[2:end-1, 2:end-1]
# Gray-Scott update equations (Euler-style)
uvv = u .* v .* v uvv = u .* v .* v
u_new = u .+ (diff_u .* lap_u .- uvv .+ feed_u .* (1 .- u)) u_new = u .+ (Du .* lap_u .- uvv .+ F .* (1 .- u))
v_new = v .+ (diff_v .* lap_v .+ uvv .- (feed_u .+ kill_v) .* v) v_new = v .+ (Dv .* lap_v .+ uvv .- (F .+ k) .* v)
# Update with new values # Update interior
U[2:end-1, 2:end-1] .= u_new U[2:end-1, 2:end-1] .= u_new
V[2:end-1, 2:end-1] .= v_new V[2:end-1, 2:end-1] .= v_new
# Periodic boundary conditions # Apply periodic boundary conditions
U[1, :] .= U[end-1, :] U[1, :] .= U[end-1, :]
U[end, :] .= U[2, :] U[end, :] .= U[2, :]
U[:, 1] .= U[:, end-1] U[:, 1] .= U[:, end-1]
@ -35,12 +40,10 @@ function step!(U, V, params_obs::Observable; dx=1)
V[:, 1] .= V[:, end-1] V[:, 1] .= V[:, end-1]
V[:, end] .= V[:, 2] V[:, end] .= V[:, 2]
# Update heatmap observable return U # for visualization
return U
end end
function multi_step!(state, n_steps, heat_obs::Observable, params_obs::Observable; dx=1) function multi_step!(state, n_steps, heat_obs::Observable, params_obs::Observable; dx=1)
for _ in 1:n_steps for _ in 1:n_steps
heat_obs[] = step!(state[1], state[2], params_obs; dx=1) heat_obs[] = step!(state[1], state[2], params_obs; dx=1)
end end
end end
end

View File

@ -1,6 +1,8 @@
module Constants module Constants
struct FHNParams abstract type PDEParams end

was ist die Idee, dahinter, dass beide von PDE abstammen? Weil verwendet wird es momentan nicht. Damit man später bei Funktionensignaturen diesen Typen angeben kann?

was ist die Idee, dahinter, dass beide von PDE abstammen? Weil verwendet wird es momentan nicht. Damit man später bei Funktionensignaturen diesen Typen angeben kann?

Genau, die wurde auch benutzt aber während der Implementierung dann doch durch n Observable ersetzt. Ich lass es trotzdem mal. Kann nicht schaden

Genau, die wurde auch benutzt aber während der Implementierung dann doch durch n Observable ersetzt. Ich lass es trotzdem mal. Kann nicht schaden
struct FHNParams <: PDEParams
N::Int N::Int
dx::Float64 # grid spacing dx::Float64 # grid spacing
Du::Float64 Du::Float64
@ -15,7 +17,7 @@ struct FHNParams
new(N, dx, Du, Dv, ϵ, a, b) new(N, dx, Du, Dv, ϵ, a, b)
end end
struct GSParams struct GSParams <: PDEParams
N::Int # grid size N::Int # grid size
dx::Float64 # grid spacing dx::Float64 # grid spacing
Du::Float64 # diffusion rate U Du::Float64 # diffusion rate U
@ -25,6 +27,6 @@ struct GSParams
end end
export FHNParams, GSParams export PDEParams, FHNParams, GSParams
end # module Constants end # module Constants

View File

@ -1,36 +1,16 @@
module Laplacian module Laplacian
""" function laplacian(U::AbstractMatrix{<:Real}, dx::Real)
laplacian(U::Matrix{Float64}, N::Int, h::Float64)
Computes the discrete 2D Laplacian of a matrix `U` using a 5-point stencil
and circular boundary conditions.
# Arguments
- `U::Matrix{Float64}`: The input 2D matrix representing the field or image.
- `N::Int`: Integer
- `h::Float64`: The spatial step size or grid spacing between points in the discretization.
# Returns
- `Vector{Float64}`: A flattened (vectorized) representation of the approximated Laplacian values for each element in `U`. The boundary conditions are handled circularly.
"""
function laplacian(U::Matrix{Float64}, N::Int, h::Float64)
# shifts matrices and sums them up
padded = circshift(U, (-1, 0)) .+ circshift(U, (1, 0)) .+
circshift(U, (0, -1)) .+ circshift(U, (0, 1)) .- 4 .* U
return vec(padded) ./ h^2
end
function laplacian5(f, dx)
h2 = dx^2 h2 = dx^2
left = f[2:end-1, 1:end-2] center = U[2:end-1, 2:end-1]
right = f[2:end-1, 3:end] up = U[1:end-2, 2:end-1]
down = f[3:end, 2:end-1] down = U[3:end, 2:end-1]
up = f[1:end-2, 2:end-1] left = U[2:end-1, 1:end-2]
center = f[2:end-1, 2:end-1] right = U[2:end-1, 3:end]
return (left .+ right .+ down .+ up .- 4 .* center) ./ h2
return (up .+ down .+ left .+ right .- 4 .* center) ./ h2
end end
export laplacian, laplacian5 export laplacian, laplacian5
end # module Laplacian end # module Laplacian

View File

@ -0,0 +1,198 @@
# initial conditions for different patterns
function zebra_conditions(N)
# Turing-spot parameters
params = FHNParams(N=N, dx=1.0, Du=0.016, Dv=0.1, ϵ=0.1, a=0.5, b=0.9)
# Or use this
u0, v0 = two_rows_edge_distance_ic(N)
return params, vcat(u0, v0)
end
function cheetah_conditions(N)
# Turing-spot parameters
#params = FHNParams(N=N, dx=1.0, Du=5e-6, Dv=2e-3, ϵ=0.025, a=0.6, b=0.15)
params = FHNParams(N=N, dx=1.0, Du=0.182, Dv=0.5, ϵ=0.05, a=0.2, b=2.0)
u0 = 0.05 .* (2 .* rand(N, N) .- 1) # noise in [-0.05, 0.05]
v0 = 0.05 .* (2 .* rand(N, N) .- 1)
return params, vcat(vec(u0), vec(v0))
end
function coral_conditions(N)
# Turing-spot parameters
params = FHNParams(N=N, dx=1.0, Du=0.001, Dv=0.06, ϵ=0.05, a=0.0, b=1.2)
u0, v0 = coral_ic(N)
return params, vcat(u0, v0)
end
# helper functions for filling cells in specific places of the matrix
function blocks_ic(N)
u = fill(1.0, N, N)
v = fill(0.0, N, N)
p = div(N, 2)
function safe_block!(u, row_center, col_center)
row_start = max(row_center - 8, 1)
row_end = min(row_center + 7, N)
col_start = max(col_center - 8, 1)
col_end = min(col_center + 7, N)
u[row_start:row_end, col_start:col_end] .= -0.01
end
safe_block!(u, p, p)
return vec(u), vec(v)
end
function column_ic(N)
u = fill(0.01, N, N)
v = fill(0.99, N, N)
col_center = div(N, 2)
col_width = 8 # You can adjust this
col_start = max(col_center - div(col_width, 2), 1)
col_end = min(col_center + div(col_width, 2) - 1, N)
u[col_start:col_end, :] .= -0.01
return vec(u), vec(v)
end
function two_rows_edge_distance_ic(N)
row_width = 8
distance_from_edge = 50
u = fill(0.01, N, N)
v = fill(0.99, N, N)
# --- Input Validation ---
if row_width <= 0 || distance_from_edge < 0
error("row_width must be positive and distance_from_edge must be non-negative.")
end
# Calculate column 1 (from the left edge)
col1_start = distance_from_edge + 1
col1_end = col1_start + row_width - 1
# Calculate column 2 (from the right edge)
col2_end = N - distance_from_edge
col2_start = col2_end - row_width + 1
# --- Further Validation for placement ---
if col1_end > N || col2_start < 1
error("Columns go out of bounds. Adjust N, row_width, or distance_from_edge.")
end
if col1_end >= col2_start # Check for overlap or touching
error("Columns overlap or touch. Adjust N, row_width, or distance_from_edge such that 2 * (distance_from_edge + row_width) <= N.")
end
# Apply the first column
u[:, col1_start:col1_end] .= -0.01
# Apply the second column
u[:, col2_start:col2_end] .= -0.01
return vec(u), vec(v)
end
function center_band_ic(N)
u = fill(0.0, N, N)
v = fill(0.0, N, N)
band_width = div(N, 8)
row_start = div(N, 2) - div(band_width, 2)
row_end = div(N, 2) + div(band_width, 2)
u[row_start:row_end, :] .= 0.1 .+ 0.01 .* randn(band_width + 1, N)
v[row_start:row_end, :] .= 0.1 .+ 0.01 .* randn(band_width + 1, N)
return vec(u), vec(v)
end
function circle_ic(N)
u = fill(0.01, N, N)
v = fill(0.99, N, N)
cx, cy = div(N, 2), div(N, 2) # center of matrix
radius = 0.125 * N # circle radius = 3/4 of N divided by 2
for i in 1:N, j in 1:N
if (i - cx)^2 + (j - cy)^2 radius^2
u[i, j] = -0.01
end
end
return vec(u), vec(v)
end
function three_circles_random_ic(N)
u = fill(0.01, N, N)
v = fill(0.99, N, N)
radius = 0.125 * N
# Define the bounds for random centers to ensure the circle stays within the matrix
min_coord = ceil(Int, radius) + 1
max_coord = floor(Int, N - radius)
if min_coord > max_coord
error("Matrix size N is too small to place circles of this radius without overlap or going out of bounds.")
end
for _ in 1:5 # Place 3 circles
# Generate random center coordinates
cx = rand(min_coord:max_coord)
cy = rand(min_coord:max_coord)
# Apply the circle to the matrix
for i in 1:N, j in 1:N
if (i - cx)^2 + (j - cy)^2 radius^2
u[i, j] = -0.01
end
end
end
return vec(u), vec(v)
end
function squiggle_ic(N, Lx=400.0, Ly=400.0)
uplus = 0.01
vplus = 0.99
uminus = -uplus
# Create coordinate grids
x = LinRange(0, Lx, N)
y = LinRange(0, Ly, N)
X = repeat(x', N, 1) # Transposed to align with meshgrid X
Y = repeat(y, 1, N) # Broadcasted to align with meshgrid Y
# Squiggle pattern
cos_term = 0.05 * Lx .* sin.(10 * 2π .* Y ./ Ly .+ π * 0.3)
exp_term = exp.(-((Y .- Ly / 2) ./ (0.1 * Ly)) .^ 2)
width = 0.05 * Lx
Z = exp.(-((X .- Lx / 2 .+ cos_term .* exp_term) ./ width) .^ 2)
u = fill(uplus, N, N)
v = fill(vplus, N, N)
# Apply squiggle
u[Z .> 0.8] .= uminus
return vec(u), vec(v)
end
function coral_ic(N)
u = fill(0.534522, N, N)
v = fill(0.381802, N, N)
for _ in 1:40 # place 15 noisy seeds
i, j = rand(10:N-10), rand(10:N-10)
u[i-2:i+2, j-2:j+2] .= -0.534522 .+ 0.2 * rand(5, 5)
end
return vec(u), vec(v)
end

View File

@ -1,43 +1,8 @@
module Visualization module Visualization
include("gray_scott_solver.jl") include("gray_scott_solver.jl")
#include("fhn_solver.jl")
using GLMakie, Observables, Makie using GLMakie, Observables, Makie
using .GrayScottSolver
"""
step_through_solution(sol::SolutionType, N::Int)
Function for visualization for the output of run_simulation
# Arguments
- `sol`: computed differential equation by run_simulation
- `N`: size of the N×N grid
# Returns
- ``: Displays created figure
"""
function step_through_solution(sol, N::Int)
fig = Figure(resolution=(600, 600))
ax = Axis(fig[1, 1])
slider = Slider(fig[2, 1], range=1:length(sol), startvalue=1)
textbox = Textbox(fig[1, 2], placeholder="Feed Rate", validator=Float64)
F = Observable(0.060)
# Initialize heatmap with first time step
u0 = reshape(sol[1][1:N^2], N, N)
heat_obs = Observable(u0)
hmap = heatmap!(ax, heat_obs, colormap=:magma)
on(textbox.stored_string) do s
F[] = parse(Float64, s)
end
# Update heatmap on slider movement
on(slider.value) do i
u = reshape(sol[i][1:N^2], N, N)
heat_obs[] = u
end
display(fig)
end
function coord_to_index(x, y, N) function coord_to_index(x, y, N)
ix = clamp(round(Int, x), 1, N) ix = clamp(round(Int, x), 1, N)
@ -45,6 +10,20 @@ function coord_to_index(x, y, N)
return ix, iy return ix, iy
end end
"""
reset(U, V, heat_obs)
Resets heatmap to original state by replacing each cell.
Currently only places a square in the center
# Arguments
- `U`: Matrix filled with ones
- `V`: Empty matrix filled with zeros
- `heat_obs`: Heatmap observable
# Returns
- ``: resetted heatmap observable
"""
function reset!(U, V, heat_obs) function reset!(U, V, heat_obs)
U .= 1.0 U .= 1.0
V .= 0.0 V .= 0.0
@ -68,7 +47,7 @@ function param_box!(grid, row, labeltxt, observable::Observable)
end end
end end
function build_ui(U, V, Du, Dv, F, k, params_obs, heat_obs) function build_ui(U, V, param_obs_map::NamedTuple, params_obs, heat_obs)
reset!(U, V, heat_obs) reset!(U, V, heat_obs)
fig = Figure(size=(800, 800)) fig = Figure(size=(800, 800))
gh = GridLayout(fig[1, 1]) gh = GridLayout(fig[1, 1])
@ -81,7 +60,7 @@ function build_ui(U, V, Du, Dv, F, k, params_obs, heat_obs)
stepsize = Observable(30) stepsize = Observable(30)
spoint = select_point(ax.scene) spoint = select_point(ax.scene)
# # Controls # Controls
fig[2, 1] = buttongrid = GridLayout(ax.scene, tellwidth=false) fig[2, 1] = buttongrid = GridLayout(ax.scene, tellwidth=false)
btn_step = Button(buttongrid[1, 1], width=50, label="Step") btn_step = Button(buttongrid[1, 1], width=50, label="Step")
btn_start = Button(buttongrid[1, 2], width=50, label=run_label) btn_start = Button(buttongrid[1, 2], width=50, label=run_label)
@ -95,10 +74,17 @@ function build_ui(U, V, Du, Dv, F, k, params_obs, heat_obs)
rowsize!(gh, 1, Relative(1.0)) rowsize!(gh, 1, Relative(1.0))
param_box!(textboxgrid, 1, "Du", Du) param_box!(textboxgrid, 1, "Du", param_obs_map.Du)
param_box!(textboxgrid, 2, "Dv", Dv) param_box!(textboxgrid, 2, "Dv", param_obs_map.Dv)
param_box!(textboxgrid, 3, "Feed", F)
param_box!(textboxgrid, 4, "kill", k) if haskey(param_obs_map, :F)
param_box!(textboxgrid, 3, "Feed", param_obs_map.F)
param_box!(textboxgrid, 4, "kill", param_obs_map.k)
elseif haskey(param_obs_map, )
param_box!(textboxgrid, 3, "ϵ", param_obs_map.ϵ)
param_box!(textboxgrid, 4, "a", param_obs_map.a)
param_box!(textboxgrid, 5, "b", param_obs_map.b)
end
# Timer and state for animation # Timer and state for animation
running = Observable(false) running = Observable(false)
@ -159,6 +145,5 @@ function build_ui(U, V, Du, Dv, F, k, params_obs, heat_obs)
return fig return fig
end end
export build_ui
export step_through_solution, build_ui
end end