FHN mit neuer UI kompatibel machen #4
156
Manifest.toml
156
Manifest.toml
|
|
@ -1,8 +1,8 @@
|
|||
# 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"
|
||||
project_hash = "b5f5f0b50b1e0b7dd05bb93e0b1bb03fea235d53"
|
||||
project_hash = "5fd84347cd356de5b819aa3ea793fa63c45180e4"
|
||||
|
||||
[[deps.ADTypes]]
|
||||
git-tree-sha1 = "e2478490447631aedba0823d4d7a80b2cc8cdb32"
|
||||
|
|
@ -194,9 +194,9 @@ version = "0.1.6"
|
|||
|
||||
[[deps.BoundaryValueDiffEq]]
|
||||
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"
|
||||
version = "5.17.0"
|
||||
version = "5.18.0"
|
||||
|
||||
[deps.BoundaryValueDiffEq.extensions]
|
||||
BoundaryValueDiffEqODEInterfaceExt = "ODEInterface"
|
||||
|
|
@ -206,39 +206,39 @@ version = "5.17.0"
|
|||
|
||||
[[deps.BoundaryValueDiffEqAscher]]
|
||||
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"
|
||||
version = "1.6.0"
|
||||
version = "1.7.0"
|
||||
|
||||
[[deps.BoundaryValueDiffEqCore]]
|
||||
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"
|
||||
version = "1.9.0"
|
||||
version = "1.10.0"
|
||||
|
||||
[[deps.BoundaryValueDiffEqFIRK]]
|
||||
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"
|
||||
version = "1.7.0"
|
||||
version = "1.8.1"
|
||||
|
||||
[[deps.BoundaryValueDiffEqMIRK]]
|
||||
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"
|
||||
version = "1.7.0"
|
||||
version = "1.8.1"
|
||||
|
||||
[[deps.BoundaryValueDiffEqMIRKN]]
|
||||
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"
|
||||
version = "1.6.0"
|
||||
version = "1.7.1"
|
||||
|
||||
[[deps.BoundaryValueDiffEqShooting]]
|
||||
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"
|
||||
version = "1.7.0"
|
||||
version = "1.8.1"
|
||||
|
||||
[[deps.BracketingNonlinearSolve]]
|
||||
deps = ["CommonSolve", "ConcreteStructs", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"]
|
||||
|
|
@ -390,9 +390,9 @@ uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471"
|
|||
version = "0.2.3"
|
||||
|
||||
[[deps.ConstructionBase]]
|
||||
git-tree-sha1 = "76219f1ed5771adbb096743bff43fb5fdd4c1157"
|
||||
git-tree-sha1 = "b4b092499347b18a015186eae3042f72267106cb"
|
||||
uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
|
||||
version = "1.5.8"
|
||||
version = "1.6.0"
|
||||
weakdeps = ["IntervalSets", "LinearAlgebra", "StaticArrays"]
|
||||
|
||||
[deps.ConstructionBase.extensions]
|
||||
|
|
@ -457,9 +457,9 @@ version = "5.53.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 = "a0e5b5669df9465bc3dd32ea4a8ddeefbc0f7b5c"
|
||||
git-tree-sha1 = "2d87d7bd165c1ca0d11923a9fabe90a9d71e88a6"
|
||||
uuid = "2b5f629d-d688-5b77-993f-72d75c75574e"
|
||||
version = "6.175.0"
|
||||
version = "6.176.0"
|
||||
|
||||
[deps.DiffEqBase.extensions]
|
||||
DiffEqBaseCUDAExt = "CUDA"
|
||||
|
|
@ -533,9 +533,9 @@ version = "7.16.1"
|
|||
|
||||
[[deps.DifferentiationInterface]]
|
||||
deps = ["ADTypes", "LinearAlgebra"]
|
||||
git-tree-sha1 = "c8d85ecfcbaef899308706bebdd8b00107f3fb43"
|
||||
git-tree-sha1 = "210933c93f39f832d92f9efbbe69a49c453db36d"
|
||||
uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63"
|
||||
version = "0.6.54"
|
||||
version = "0.7.1"
|
||||
|
||||
[deps.DifferentiationInterface.extensions]
|
||||
DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore"
|
||||
|
|
@ -614,9 +614,9 @@ version = "0.25.120"
|
|||
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
|
||||
|
||||
[[deps.DocStringExtensions]]
|
||||
git-tree-sha1 = "e7b7e6f178525d17c720ab9c081e4ef04429f860"
|
||||
git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c"
|
||||
uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
|
||||
version = "0.9.4"
|
||||
version = "0.9.5"
|
||||
|
||||
[[deps.Downloads]]
|
||||
deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"]
|
||||
|
|
@ -635,9 +635,9 @@ uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56"
|
|||
version = "1.0.5"
|
||||
|
||||
[[deps.EnzymeCore]]
|
||||
git-tree-sha1 = "1eb59f40a772d0fbd4cb75e00b3fa7f5f79c975a"
|
||||
git-tree-sha1 = "7d7822a643c33bbff4eab9c87ca8459d7c688db0"
|
||||
uuid = "f151be2c-9106-41f4-ab19-57ee4f262869"
|
||||
version = "0.8.9"
|
||||
version = "0.8.11"
|
||||
weakdeps = ["Adapt"]
|
||||
|
||||
[deps.EnzymeCore.extensions]
|
||||
|
|
@ -694,9 +694,9 @@ version = "6.1.2+0"
|
|||
|
||||
[[deps.FFTW]]
|
||||
deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"]
|
||||
git-tree-sha1 = "7de7c78d681078f027389e067864a8d53bd7c3c9"
|
||||
git-tree-sha1 = "797762812ed063b9b94f6cc7742bc8883bb5e69e"
|
||||
uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
|
||||
version = "1.8.1"
|
||||
version = "1.9.0"
|
||||
|
||||
[[deps.FFTW_jll]]
|
||||
deps = ["Artifacts", "JLLWrappers", "Libdl"]
|
||||
|
|
@ -852,9 +852,9 @@ version = "2.13.4+0"
|
|||
|
||||
[[deps.FreeTypeAbstraction]]
|
||||
deps = ["BaseDirs", "ColorVectorSpace", "Colors", "FreeType", "GeometryBasics", "Mmap"]
|
||||
git-tree-sha1 = "eaca92bac73aa42f68c57d1b8df1b746eeb2bdaa"
|
||||
git-tree-sha1 = "4ebb930ef4a43817991ba35db6317a05e59abd11"
|
||||
uuid = "663a7486-cb36-511b-a19d-713bb74d65c9"
|
||||
version = "0.10.7"
|
||||
version = "0.10.8"
|
||||
|
||||
[[deps.FriBidi_jll]]
|
||||
deps = ["Artifacts", "JLLWrappers", "Libdl"]
|
||||
|
|
@ -898,9 +898,9 @@ version = "3.4.0+2"
|
|||
|
||||
[[deps.GLMakie]]
|
||||
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"
|
||||
version = "0.11.8"
|
||||
version = "0.12.0"
|
||||
|
||||
[[deps.GPUArraysCore]]
|
||||
deps = ["Adapt"]
|
||||
|
|
@ -956,10 +956,10 @@ uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472"
|
|||
version = "1.3.15+0"
|
||||
|
||||
[[deps.Graphs]]
|
||||
deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"]
|
||||
git-tree-sha1 = "3169fd3440a02f35e549728b0890904cfd4ae58a"
|
||||
deps = ["ArnoldiMethod", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"]
|
||||
git-tree-sha1 = "c5abfa0ae0aaee162a3fbb053c13ecda39be545b"
|
||||
uuid = "86223c79-3864-5bf0-83f7-82e725a168b6"
|
||||
version = "1.12.1"
|
||||
version = "1.13.0"
|
||||
|
||||
[[deps.GridLayoutBase]]
|
||||
deps = ["GeometryBasics", "InteractiveUtils", "Observables"]
|
||||
|
|
@ -1145,9 +1145,9 @@ version = "3.1.1+0"
|
|||
|
||||
[[deps.JumpProcesses]]
|
||||
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"
|
||||
version = "9.15.0"
|
||||
version = "9.16.0"
|
||||
weakdeps = ["FastBroadcast"]
|
||||
|
||||
[[deps.KernelDensity]]
|
||||
|
|
@ -1308,9 +1308,9 @@ weakdeps = ["LineSearches"]
|
|||
|
||||
[[deps.LineSearches]]
|
||||
deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"]
|
||||
git-tree-sha1 = "e4c3be53733db1051cc15ecf573b1042b3a712a1"
|
||||
git-tree-sha1 = "4adee99b7262ad2a1a4bbbc59d993d24e55ea96f"
|
||||
uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255"
|
||||
version = "7.3.0"
|
||||
version = "7.4.0"
|
||||
|
||||
[[deps.LinearAlgebra]]
|
||||
deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"]
|
||||
|
|
@ -1319,9 +1319,9 @@ version = "1.11.0"
|
|||
|
||||
[[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 = "c618a6a774d5712c6bf02dbcceb51b6dc6b9bb89"
|
||||
git-tree-sha1 = "c0d1a91a50af6778863d320761f807f641f74935"
|
||||
uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae"
|
||||
version = "3.16.0"
|
||||
version = "3.17.0"
|
||||
|
||||
[deps.LinearSolve.extensions]
|
||||
LinearSolveBandedMatricesExt = "BandedMatrices"
|
||||
|
|
@ -1392,15 +1392,15 @@ version = "0.5.16"
|
|||
|
||||
[[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"]
|
||||
git-tree-sha1 = "968f03dc65c8144a728f988051a88c78fe625e26"
|
||||
git-tree-sha1 = "29c5cf33287afa8c06711fec1b33d074f88dd354"
|
||||
uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
|
||||
version = "0.22.7"
|
||||
version = "0.23.0"
|
||||
|
||||
[[deps.MakieCore]]
|
||||
deps = ["ColorTypes", "GeometryBasics", "IntervalSets", "Observables"]
|
||||
git-tree-sha1 = "733d910c70805e7114c82508bae99c6cdf004466"
|
||||
git-tree-sha1 = "6ec4aba99ce1a8c247822ce346b273d0d686e141"
|
||||
uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b"
|
||||
version = "0.9.3"
|
||||
version = "0.10.0"
|
||||
|
||||
[[deps.ManualMemory]]
|
||||
git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd"
|
||||
|
|
@ -1493,9 +1493,9 @@ version = "0.2.4"
|
|||
|
||||
[[deps.NLSolversBase]]
|
||||
deps = ["ADTypes", "DifferentiationInterface", "Distributed", "FiniteDiff", "ForwardDiff"]
|
||||
git-tree-sha1 = "b14c7be6046e7d48e9063a0053f95ee0fc954176"
|
||||
git-tree-sha1 = "25a6638571a902ecfb1ae2a18fc1575f86b1d4df"
|
||||
uuid = "d41bc354-129a-5804-8e4c-c37616107c6c"
|
||||
version = "7.9.1"
|
||||
version = "7.10.0"
|
||||
|
||||
[[deps.NLsolve]]
|
||||
deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"]
|
||||
|
|
@ -1639,7 +1639,7 @@ version = "3.2.4+0"
|
|||
[[deps.OpenLibm_jll]]
|
||||
deps = ["Artifacts", "Libdl"]
|
||||
uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
|
||||
version = "0.8.1+4"
|
||||
version = "0.8.5+0"
|
||||
|
||||
[[deps.OpenSSL_jll]]
|
||||
deps = ["Artifacts", "JLLWrappers", "Libdl"]
|
||||
|
|
@ -1655,9 +1655,9 @@ version = "0.5.6+0"
|
|||
|
||||
[[deps.Optim]]
|
||||
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"
|
||||
version = "1.12.0"
|
||||
version = "1.13.2"
|
||||
|
||||
[deps.Optim.extensions]
|
||||
OptimMOIExt = "MathOptInterface"
|
||||
|
|
@ -1690,15 +1690,15 @@ 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 = "42755bd13fe56e9d9ce1bc005f8b206a6b56b731"
|
||||
git-tree-sha1 = "9124a686af119063bb4d3a8f87044a8f312fcad9"
|
||||
uuid = "6ad6398a-0878-4a85-9266-38940aa047c8"
|
||||
version = "1.5.1"
|
||||
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 = "d29adfeb720dd7c251b216d91c4bd4fe67c087df"
|
||||
git-tree-sha1 = "08dac9c6672a4548439048089bac293759a897fd"
|
||||
uuid = "bbf590c4-e513-4bbe-9b18-05decba2e5d8"
|
||||
version = "1.26.0"
|
||||
version = "1.26.1"
|
||||
weakdeps = ["EnzymeCore"]
|
||||
|
||||
[deps.OrdinaryDiffEqCore.extensions]
|
||||
|
|
@ -1712,9 +1712,9 @@ version = "1.4.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 = "c78060115fa4ea9d70ac47fa49496acbc630aefa"
|
||||
git-tree-sha1 = "efecf0c4cc44e16251b0e718f08b0876b2a82b80"
|
||||
uuid = "4302a76b-040a-498a-8c04-15b101fed76b"
|
||||
version = "1.9.1"
|
||||
version = "1.10.0"
|
||||
|
||||
[[deps.OrdinaryDiffEqExplicitRK]]
|
||||
deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "TruncatedStacktraces"]
|
||||
|
|
@ -1820,9 +1820,9 @@ 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 = "063e5ff1447b3869856ed264b6dcbb21e6e8bdb0"
|
||||
git-tree-sha1 = "1ce0096d920e95773220e818f29bf4b37ea2bb78"
|
||||
uuid = "43230ef6-c299-4910-a778-202eb28ce4ce"
|
||||
version = "1.10.1"
|
||||
version = "1.11.0"
|
||||
|
||||
[[deps.OrdinaryDiffEqSDIRK]]
|
||||
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 = ["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"
|
||||
version = "2.96.0"
|
||||
version = "2.101.0"
|
||||
|
||||
[deps.SciMLBase.extensions]
|
||||
SciMLBaseChainRulesCoreExt = "ChainRulesCore"
|
||||
|
|
@ -2202,9 +2202,9 @@ version = "0.1.6"
|
|||
|
||||
[[deps.SciMLOperators]]
|
||||
deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"]
|
||||
git-tree-sha1 = "85608e4aaf758547ffc4030c908318b432114ec9"
|
||||
git-tree-sha1 = "3249fe77f322fe539e935ecb388c8290cd38a3fc"
|
||||
uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961"
|
||||
version = "1.3.0"
|
||||
version = "1.3.1"
|
||||
weakdeps = ["SparseArrays", "StaticArraysCore"]
|
||||
|
||||
[deps.SciMLOperators.extensions]
|
||||
|
|
@ -2308,9 +2308,9 @@ version = "1.11.0"
|
|||
|
||||
[[deps.SparseConnectivityTracer]]
|
||||
deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"]
|
||||
git-tree-sha1 = "fadb2d7010dd92912e5eb31a493613ad4b8c9583"
|
||||
git-tree-sha1 = "affde0bfd920cfcaa0944d3c0eb3a573fa9c4d1e"
|
||||
uuid = "9f842d2f-2579-4b1d-911e-f412cf18a3f5"
|
||||
version = "0.6.18"
|
||||
version = "0.6.20"
|
||||
|
||||
[deps.SparseConnectivityTracer.extensions]
|
||||
SparseConnectivityTracerDataInterpolationsExt = "DataInterpolations"
|
||||
|
|
@ -2517,9 +2517,9 @@ version = "1.0.1"
|
|||
|
||||
[[deps.Tables]]
|
||||
deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"]
|
||||
git-tree-sha1 = "598cd7c1f68d1e205689b1c2fe65a9f85846f297"
|
||||
git-tree-sha1 = "f2c1efbc8f3a609aadf318094f8fc5204bdaf344"
|
||||
uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
|
||||
version = "1.12.0"
|
||||
version = "1.12.1"
|
||||
|
||||
[[deps.Tar]]
|
||||
deps = ["ArgTools", "SHA"]
|
||||
|
|
@ -2539,15 +2539,15 @@ version = "1.11.0"
|
|||
|
||||
[[deps.ThreadingUtilities]]
|
||||
deps = ["ManualMemory"]
|
||||
git-tree-sha1 = "2d529b6b22791f3e22e7ec5c60b9016e78f5f6bf"
|
||||
git-tree-sha1 = "d969183d3d244b6c33796b5ed01ab97328f2db85"
|
||||
uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5"
|
||||
version = "0.5.4"
|
||||
version = "0.5.5"
|
||||
|
||||
[[deps.TiffImages]]
|
||||
deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "SIMD", "UUIDs"]
|
||||
git-tree-sha1 = "f21231b166166bebc73b99cea236071eb047525b"
|
||||
deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "PrecompileTools", "ProgressMeter", "SIMD", "UUIDs"]
|
||||
git-tree-sha1 = "02aca429c9885d1109e58f400c333521c13d48a0"
|
||||
uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69"
|
||||
version = "0.11.3"
|
||||
version = "0.11.4"
|
||||
|
||||
[[deps.TimerOutputs]]
|
||||
deps = ["ExprTools", "Printf"]
|
||||
|
|
@ -2599,14 +2599,16 @@ version = "0.4.1"
|
|||
|
||||
[[deps.Unitful]]
|
||||
deps = ["Dates", "LinearAlgebra", "Random"]
|
||||
git-tree-sha1 = "d62610ec45e4efeabf7032d67de2ffdea8344bed"
|
||||
git-tree-sha1 = "d2282232f8a4d71f79e85dc4dd45e5b12a6297fb"
|
||||
uuid = "1986cc42-f94f-5a68-af5c-568840ba703d"
|
||||
version = "1.22.1"
|
||||
weakdeps = ["ConstructionBase", "InverseFunctions"]
|
||||
version = "1.23.1"
|
||||
weakdeps = ["ConstructionBase", "ForwardDiff", "InverseFunctions", "Printf"]
|
||||
|
||||
[deps.Unitful.extensions]
|
||||
ConstructionBaseUnitfulExt = "ConstructionBase"
|
||||
ForwardDiffExt = "ForwardDiff"
|
||||
InverseFunctionsUnitfulExt = "InverseFunctions"
|
||||
PrintfExt = "Printf"
|
||||
|
||||
[[deps.Wayland_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"
|
||||
|
||||
[[deps.Wayland_protocols_jll]]
|
||||
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
|
||||
git-tree-sha1 = "5db3e9d307d32baba7067b13fc7b5aa6edd4a19a"
|
||||
deps = ["Artifacts", "JLLWrappers", "Libdl"]
|
||||
git-tree-sha1 = "54b8a029ac145ebe8299463447fd1590b2b1d92f"
|
||||
uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91"
|
||||
version = "1.36.0+0"
|
||||
version = "1.44.0+0"
|
||||
|
||||
[[deps.WebP]]
|
||||
deps = ["CEnum", "ColorTypes", "FileIO", "FixedPointNumbers", "ImageCore", "libwebp_jll"]
|
||||
|
|
|
|||
|
|
@ -1,28 +1,58 @@
|
|||
include("../src/utils/constants.jl")
|
||||
#include("../src/fhn_solver.jl")
|
||||
include("../src/gray_scott_solver.jl")
|
||||
include("../src/visualization.jl")
|
||||
include("../src/utils/constants.jl")
|
||||
|
||||
|
||||
using Observables
|
||||
using GLMakie
|
||||
using .GrayScottSolver
|
||||
using .Visualization
|
||||
using .Constants
|
||||
|
||||
const N = 128
|
||||
const dx = 1.0
|
||||
using .Constants
|
||||
using .Visualization
|
||||
|
||||
# GSParams
|
||||
N = 128
|
||||
dx = 1.0
|
||||
Du, Dv = Observable(0.16), Observable(0.08)
|
||||
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
|
||||
params_obs[] = GSParams(N, dx, u, v, f, ki)
|
||||
params_obs[] = GSParams(N, dx, u, v, f, ki)
|
||||
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)
|
||||
V = zeros(N, N)
|
||||
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)
|
||||
|
2211567 marked this conversation as resolved
Outdated
|
||||
display(fig)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -1,30 +1,35 @@
|
|||
module GrayScottSolver
|
||||
using Observables
|
||||
include("utils/constants.jl")
|
||||
include("utils/laplacian.jl")
|
||||
|
||||
using Observables
|
||||
|
||||
using .Constants
|
||||
using .Laplacian
|
||||
export step!, multi_step!
|
||||
|
||||
function step!(U, V, params_obs::Observable; dx=1)
|
||||
lap_u = laplacian5(U, dx)
|
||||
lap_v = laplacian5(V, dx)
|
||||
diff_u = params_obs[].Du
|
||||
diff_v = params_obs[].Dv
|
||||
feed_u = params_obs[].F
|
||||
kill_v = params_obs[].k
|
||||
# Extract parameters
|
||||
p = params_obs[]
|
||||
Du, Dv = p.Du, p.Dv
|
||||
F, k = p.F, p.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]
|
||||
v = V[2:end-1, 2:end-1]
|
||||
|
||||
# Gray-Scott update equations (Euler-style)
|
||||
uvv = u .* v .* v
|
||||
u_new = u .+ (diff_u .* lap_u .- uvv .+ feed_u .* (1 .- u))
|
||||
v_new = v .+ (diff_v .* lap_v .+ uvv .- (feed_u .+ kill_v) .* v)
|
||||
u_new = u .+ (Du .* lap_u .- uvv .+ F .* (1 .- u))
|
||||
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
|
||||
V[2:end-1, 2:end-1] .= v_new
|
||||
|
||||
# Periodic boundary conditions
|
||||
# Apply periodic boundary conditions
|
||||
U[1, :] .= U[end-1, :]
|
||||
U[end, :] .= U[2, :]
|
||||
U[:, 1] .= U[:, end-1]
|
||||
|
|
@ -35,12 +40,10 @@ function step!(U, V, params_obs::Observable; dx=1)
|
|||
V[:, 1] .= V[:, end-1]
|
||||
V[:, end] .= V[:, 2]
|
||||
|
||||
# Update heatmap observable
|
||||
return U
|
||||
return U # for visualization
|
||||
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
|
||||
end
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
module Constants
|
||||
|
||||
struct FHNParams
|
||||
abstract type PDEParams end
|
||||
|
2212719
commented
Review
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?
2211567
commented
Review
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
|
||||
dx::Float64 # grid spacing
|
||||
Du::Float64
|
||||
|
|
@ -15,7 +17,7 @@ struct FHNParams
|
|||
new(N, dx, Du, Dv, ϵ, a, b)
|
||||
end
|
||||
|
||||
struct GSParams
|
||||
struct GSParams <: PDEParams
|
||||
N::Int # grid size
|
||||
dx::Float64 # grid spacing
|
||||
Du::Float64 # diffusion rate U
|
||||
|
|
@ -25,6 +27,6 @@ struct GSParams
|
|||
|
||||
end
|
||||
|
||||
export FHNParams, GSParams
|
||||
export PDEParams, FHNParams, GSParams
|
||||
|
||||
end # module Constants
|
||||
|
|
|
|||
|
|
@ -1,36 +1,16 @@
|
|||
module Laplacian
|
||||
|
||||
"""
|
||||
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)
|
||||
function laplacian(U::AbstractMatrix{<:Real}, dx::Real)
|
||||
h2 = dx^2
|
||||
left = f[2:end-1, 1:end-2]
|
||||
right = f[2:end-1, 3:end]
|
||||
down = f[3:end, 2:end-1]
|
||||
up = f[1:end-2, 2:end-1]
|
||||
center = f[2:end-1, 2:end-1]
|
||||
return (left .+ right .+ down .+ up .- 4 .* center) ./ h2
|
||||
center = U[2:end-1, 2:end-1]
|
||||
up = U[1:end-2, 2:end-1]
|
||||
down = U[3:end, 2:end-1]
|
||||
left = U[2:end-1, 1:end-2]
|
||||
right = U[2:end-1, 3:end]
|
||||
|
||||
return (up .+ down .+ left .+ right .- 4 .* center) ./ h2
|
||||
end
|
||||
|
||||
export laplacian, laplacian5
|
||||
|
||||
end # module Laplacian
|
||||
end # module Laplacian
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -1,43 +1,8 @@
|
|||
module Visualization
|
||||
include("gray_scott_solver.jl")
|
||||
#include("fhn_solver.jl")
|
||||
|
||||
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)
|
||||
ix = clamp(round(Int, x), 1, N)
|
||||
|
|
@ -45,6 +10,20 @@ function coord_to_index(x, y, N)
|
|||
return ix, iy
|
||||
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)
|
||||
U .= 1.0
|
||||
V .= 0.0
|
||||
|
|
@ -68,7 +47,7 @@ function param_box!(grid, row, labeltxt, observable::Observable)
|
|||
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)
|
||||
fig = Figure(size=(800, 800))
|
||||
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)
|
||||
spoint = select_point(ax.scene)
|
||||
|
||||
# # Controls
|
||||
# Controls
|
||||
fig[2, 1] = buttongrid = GridLayout(ax.scene, tellwidth=false)
|
||||
btn_step = Button(buttongrid[1, 1], width=50, label="Step")
|
||||
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))
|
||||
|
||||
|
||||
param_box!(textboxgrid, 1, "Du", Du)
|
||||
param_box!(textboxgrid, 2, "Dv", Dv)
|
||||
param_box!(textboxgrid, 3, "Feed", F)
|
||||
param_box!(textboxgrid, 4, "kill", k)
|
||||
param_box!(textboxgrid, 1, "Du", param_obs_map.Du)
|
||||
param_box!(textboxgrid, 2, "Dv", param_obs_map.Dv)
|
||||
|
||||
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
|
||||
running = Observable(false)
|
||||
|
|
@ -159,6 +145,5 @@ function build_ui(U, V, Du, Dv, F, k, params_obs, heat_obs)
|
|||
return fig
|
||||
end
|
||||
|
||||
|
||||
export step_through_solution, build_ui
|
||||
export build_ui
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue
hier wärs ganz nice, wenn du Visualization nicht extra nennen müsstest, weil du es ja oben eig schon includest. falls es was wegen ambiguity sagt, vllt die repl neustarten. Sollte aber klappen