diff --git a/Project.toml b/Project.toml
index ae34909c..048a4332 100644
--- a/Project.toml
+++ b/Project.toml
@@ -18,14 +18,14 @@ TermInterface = "8ea1fca8-c5ef-4a55-8b96-4e9afe9c9a3c"
[compat]
Combinatorics = "1"
LaTeXStrings = "1"
-Latexify = "0.13, 0.14, 0.15"
+Latexify = "0.13, 0.14, 0.15, 0.16"
MacroTools = "0.5"
-ModelingToolkit = "7, 8"
+ModelingToolkit = "9"
QuantumOpticsBase = "0.4"
SciMLBase = "1, 2"
SymbolicUtils = "1"
Symbolics = "5"
-TermInterface = "0.2, 0.3"
+TermInterface = "0.4"
julia = "1.6"
LinearAlgebra = "1.6"
diff --git a/docs/Manifest.toml b/docs/Manifest.toml
new file mode 100644
index 00000000..45a110ec
--- /dev/null
+++ b/docs/Manifest.toml
@@ -0,0 +1,2403 @@
+# This file is machine-generated - editing it directly is not advised
+
+julia_version = "1.10.2"
+manifest_format = "2.0"
+project_hash = "1f0ab8b6d1b7d39c9a90f5b6a9bcd1b9fecb1403"
+
+[[deps.ADTypes]]
+git-tree-sha1 = "016833eb52ba2d6bea9fcb50ca295980e728ee24"
+uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b"
+version = "0.2.7"
+
+[[deps.ANSIColoredPrinters]]
+git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c"
+uuid = "a4c015fc-c6ff-483c-b24f-f7ea428134e9"
+version = "0.0.1"
+
+[[deps.AbstractFFTs]]
+deps = ["LinearAlgebra"]
+git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef"
+uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
+version = "1.5.0"
+weakdeps = ["ChainRulesCore", "Test"]
+
+ [deps.AbstractFFTs.extensions]
+ AbstractFFTsChainRulesCoreExt = "ChainRulesCore"
+ AbstractFFTsTestExt = "Test"
+
+[[deps.AbstractTrees]]
+git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177"
+uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"
+version = "0.4.5"
+
+[[deps.Adapt]]
+deps = ["LinearAlgebra", "Requires"]
+git-tree-sha1 = "cde29ddf7e5726c9fb511f340244ea3481267608"
+uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
+version = "3.7.2"
+weakdeps = ["StaticArrays"]
+
+ [deps.Adapt.extensions]
+ AdaptStaticArraysExt = "StaticArrays"
+
+[[deps.ArgTools]]
+uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
+version = "1.1.1"
+
+[[deps.ArnoldiMethod]]
+deps = ["LinearAlgebra", "Random", "StaticArrays"]
+git-tree-sha1 = "62e51b39331de8911e4a7ff6f5aaf38a5f4cc0ae"
+uuid = "ec485272-7323-5ecc-a04f-4719b315124d"
+version = "0.2.0"
+
+[[deps.Arpack]]
+deps = ["Arpack_jll", "Libdl", "LinearAlgebra", "Logging"]
+git-tree-sha1 = "91ca22c4b8437da89b030f08d71db55a379ce958"
+uuid = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97"
+version = "0.5.3"
+
+[[deps.Arpack_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS_jll", "Pkg"]
+git-tree-sha1 = "5ba6c757e8feccf03a1554dfaf3e26b3cfc7fd5e"
+uuid = "68821587-b530-5797-8361-c406ea357684"
+version = "3.5.1+1"
+
+[[deps.ArrayInterface]]
+deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"]
+git-tree-sha1 = "c5aeb516a84459e0318a02507d2261edad97eb75"
+uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
+version = "7.7.1"
+
+ [deps.ArrayInterface.extensions]
+ ArrayInterfaceBandedMatricesExt = "BandedMatrices"
+ ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices"
+ ArrayInterfaceCUDAExt = "CUDA"
+ ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore"
+ ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore"
+ ArrayInterfaceTrackerExt = "Tracker"
+
+ [deps.ArrayInterface.weakdeps]
+ BandedMatrices = "aae01518-5342-5314-be14-df237901396f"
+ BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0"
+ CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
+ GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527"
+ StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
+ Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"
+
+[[deps.ArrayLayouts]]
+deps = ["FillArrays", "LinearAlgebra"]
+git-tree-sha1 = "6404a564c24a994814106c374bec893195e19bac"
+uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
+version = "1.8.0"
+weakdeps = ["SparseArrays"]
+
+ [deps.ArrayLayouts.extensions]
+ ArrayLayoutsSparseArraysExt = "SparseArrays"
+
+[[deps.Artifacts]]
+uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
+
+[[deps.Base64]]
+uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
+
+[[deps.Bijections]]
+git-tree-sha1 = "c9b163bd832e023571e86d0b90d9de92a9879088"
+uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04"
+version = "0.1.6"
+
+[[deps.BitFlags]]
+git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b"
+uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35"
+version = "0.1.8"
+
+[[deps.BitTwiddlingConvenienceFunctions]]
+deps = ["Static"]
+git-tree-sha1 = "0c5f81f47bbbcf4aea7b2959135713459170798b"
+uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b"
+version = "0.1.5"
+
+[[deps.Bzip2_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd"
+uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0"
+version = "1.0.8+1"
+
+[[deps.CPUSummary]]
+deps = ["CpuId", "IfElse", "PrecompileTools", "Static"]
+git-tree-sha1 = "601f7e7b3d36f18790e2caf83a882d88e9b71ff1"
+uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9"
+version = "0.2.4"
+
+[[deps.CSTParser]]
+deps = ["Tokenize"]
+git-tree-sha1 = "b544d62417a99d091c569b95109bc9d8c223e9e3"
+uuid = "00ebfdb7-1f24-5e51-bd34-a7502290713f"
+version = "3.4.2"
+
+[[deps.Cairo_jll]]
+deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"]
+git-tree-sha1 = "a4c43f59baa34011e303e76f5c8c91bf58415aaf"
+uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a"
+version = "1.18.0+1"
+
+[[deps.Calculus]]
+deps = ["LinearAlgebra"]
+git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad"
+uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9"
+version = "0.5.1"
+
+[[deps.ChainRulesCore]]
+deps = ["Compat", "LinearAlgebra"]
+git-tree-sha1 = "575cd02e080939a33b6df6c5853d14924c08e35b"
+uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
+version = "1.23.0"
+weakdeps = ["SparseArrays"]
+
+ [deps.ChainRulesCore.extensions]
+ ChainRulesCoreSparseArraysExt = "SparseArrays"
+
+[[deps.CloseOpenIntervals]]
+deps = ["Static", "StaticArrayInterface"]
+git-tree-sha1 = "70232f82ffaab9dc52585e0dd043b5e0c6b714f1"
+uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9"
+version = "0.1.12"
+
+[[deps.CodecZlib]]
+deps = ["TranscodingStreams", "Zlib_jll"]
+git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73"
+uuid = "944b1d66-785c-5afd-91f1-9de20f533193"
+version = "0.7.4"
+
+[[deps.ColorSchemes]]
+deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"]
+git-tree-sha1 = "67c1f244b991cad9b0aa4b7540fb758c2488b129"
+uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4"
+version = "3.24.0"
+
+[[deps.ColorTypes]]
+deps = ["FixedPointNumbers", "Random"]
+git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4"
+uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f"
+version = "0.11.4"
+
+[[deps.ColorVectorSpace]]
+deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"]
+git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249"
+uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4"
+version = "0.10.0"
+weakdeps = ["SpecialFunctions"]
+
+ [deps.ColorVectorSpace.extensions]
+ SpecialFunctionsExt = "SpecialFunctions"
+
+[[deps.Colors]]
+deps = ["ColorTypes", "FixedPointNumbers", "Reexport"]
+git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a"
+uuid = "5ae59095-9a9b-59fe-a467-6f913c188581"
+version = "0.12.10"
+
+[[deps.Combinatorics]]
+git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860"
+uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
+version = "1.0.2"
+
+[[deps.CommonMark]]
+deps = ["Crayons", "JSON", "PrecompileTools", "URIs"]
+git-tree-sha1 = "532c4185d3c9037c0237546d817858b23cf9e071"
+uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6"
+version = "0.8.12"
+
+[[deps.CommonSolve]]
+git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c"
+uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2"
+version = "0.2.4"
+
+[[deps.CommonSubexpressions]]
+deps = ["MacroTools", "Test"]
+git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7"
+uuid = "bbf7d656-a473-5ed7-a52c-81e309532950"
+version = "0.3.0"
+
+[[deps.Compat]]
+deps = ["TOML", "UUIDs"]
+git-tree-sha1 = "c955881e3c981181362ae4088b35995446298b80"
+uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
+version = "4.14.0"
+weakdeps = ["Dates", "LinearAlgebra"]
+
+ [deps.Compat.extensions]
+ CompatLinearAlgebraExt = "LinearAlgebra"
+
+[[deps.CompilerSupportLibraries_jll]]
+deps = ["Artifacts", "Libdl"]
+uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
+version = "1.1.0+0"
+
+[[deps.CompositeTypes]]
+git-tree-sha1 = "02d2316b7ffceff992f3096ae48c7829a8aa0638"
+uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657"
+version = "0.1.3"
+
+[[deps.ConcreteStructs]]
+git-tree-sha1 = "f749037478283d372048690eb3b5f92a79432b34"
+uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471"
+version = "0.2.3"
+
+[[deps.ConcurrentUtilities]]
+deps = ["Serialization", "Sockets"]
+git-tree-sha1 = "6cbbd4d241d7e6579ab354737f4dd95ca43946e1"
+uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb"
+version = "2.4.1"
+
+[[deps.ConstructionBase]]
+deps = ["LinearAlgebra"]
+git-tree-sha1 = "260fd2400ed2dab602a7c15cf10c1933c59930a2"
+uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
+version = "1.5.5"
+weakdeps = ["IntervalSets", "StaticArrays"]
+
+ [deps.ConstructionBase.extensions]
+ ConstructionBaseIntervalSetsExt = "IntervalSets"
+ ConstructionBaseStaticArraysExt = "StaticArrays"
+
+[[deps.Contour]]
+git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781"
+uuid = "d38c429a-6771-53c6-b99e-75d170b6e991"
+version = "0.6.2"
+
+[[deps.CpuId]]
+deps = ["Markdown"]
+git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406"
+uuid = "adafc99b-e345-5852-983c-f28acb93d879"
+version = "0.3.1"
+
+[[deps.Crayons]]
+git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15"
+uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f"
+version = "4.1.1"
+
+[[deps.DataAPI]]
+git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe"
+uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
+version = "1.16.0"
+
+[[deps.DataStructures]]
+deps = ["Compat", "InteractiveUtils", "OrderedCollections"]
+git-tree-sha1 = "0f4b5d62a88d8f59003e43c25a8a90de9eb76317"
+uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
+version = "0.18.18"
+
+[[deps.DataValueInterfaces]]
+git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6"
+uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464"
+version = "1.0.0"
+
+[[deps.Dates]]
+deps = ["Printf"]
+uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
+
+[[deps.DelimitedFiles]]
+deps = ["Mmap"]
+git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae"
+uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab"
+version = "1.9.1"
+
+[[deps.DiffEqBase]]
+deps = ["ArrayInterface", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Static", "StaticArraysCore", "Statistics", "Tricks", "TruncatedStacktraces"]
+git-tree-sha1 = "aee5798bd4f1ed1260bd1741221f9589e5ee8a90"
+uuid = "2b5f629d-d688-5b77-993f-72d75c75574e"
+version = "6.147.3"
+
+ [deps.DiffEqBase.extensions]
+ DiffEqBaseChainRulesCoreExt = "ChainRulesCore"
+ DiffEqBaseDistributionsExt = "Distributions"
+ DiffEqBaseEnzymeExt = ["ChainRulesCore", "Enzyme"]
+ DiffEqBaseGeneralizedGeneratedExt = "GeneralizedGenerated"
+ DiffEqBaseMPIExt = "MPI"
+ DiffEqBaseMeasurementsExt = "Measurements"
+ DiffEqBaseMonteCarloMeasurementsExt = "MonteCarloMeasurements"
+ DiffEqBaseReverseDiffExt = "ReverseDiff"
+ DiffEqBaseTrackerExt = "Tracker"
+ DiffEqBaseUnitfulExt = "Unitful"
+
+ [deps.DiffEqBase.weakdeps]
+ ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
+ Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
+ Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9"
+ GeneralizedGenerated = "6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb"
+ MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195"
+ Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7"
+ MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca"
+ ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
+ Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"
+ Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
+
+[[deps.DiffEqCallbacks]]
+deps = ["DataStructures", "DiffEqBase", "ForwardDiff", "Functors", "LinearAlgebra", "Markdown", "NLsolve", "Parameters", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"]
+git-tree-sha1 = "ee954c8b9d348b7a8a6aec5f28288bf5adecd4ee"
+uuid = "459566f4-90b8-5000-8ac3-15dfb0a30def"
+version = "2.37.0"
+
+ [deps.DiffEqCallbacks.weakdeps]
+ OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
+ Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4"
+
+[[deps.DiffEqNoiseProcess]]
+deps = ["DiffEqBase", "Distributions", "GPUArraysCore", "LinearAlgebra", "Markdown", "Optim", "PoissonRandom", "QuadGK", "Random", "Random123", "RandomNumbers", "RecipesBase", "RecursiveArrayTools", "Requires", "ResettableStacks", "SciMLBase", "StaticArraysCore", "Statistics"]
+git-tree-sha1 = "65cbbe1450ced323b4b17228ccd96349d96795a7"
+uuid = "77a26b50-5914-5dd7-bc55-306e6241c503"
+version = "5.21.0"
+
+ [deps.DiffEqNoiseProcess.extensions]
+ DiffEqNoiseProcessReverseDiffExt = "ReverseDiff"
+
+ [deps.DiffEqNoiseProcess.weakdeps]
+ ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
+
+[[deps.DiffResults]]
+deps = ["StaticArraysCore"]
+git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621"
+uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5"
+version = "1.1.0"
+
+[[deps.DiffRules]]
+deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"]
+git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272"
+uuid = "b552c78f-8df3-52c6-915a-8e097449b14b"
+version = "1.15.1"
+
+[[deps.Distances]]
+deps = ["LinearAlgebra", "Statistics", "StatsAPI"]
+git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0"
+uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7"
+version = "0.10.11"
+weakdeps = ["ChainRulesCore", "SparseArrays"]
+
+ [deps.Distances.extensions]
+ DistancesChainRulesCoreExt = "ChainRulesCore"
+ DistancesSparseArraysExt = "SparseArrays"
+
+[[deps.Distributed]]
+deps = ["Random", "Serialization", "Sockets"]
+uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
+
+[[deps.Distributions]]
+deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"]
+git-tree-sha1 = "7c302d7a5fec5214eb8a5a4c466dcf7a51fcf169"
+uuid = "31c24e10-a181-5473-b8eb-7969acd0382f"
+version = "0.25.107"
+
+ [deps.Distributions.extensions]
+ DistributionsChainRulesCoreExt = "ChainRulesCore"
+ DistributionsDensityInterfaceExt = "DensityInterface"
+ DistributionsTestExt = "Test"
+
+ [deps.Distributions.weakdeps]
+ ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
+ DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d"
+ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
+
+[[deps.DocStringExtensions]]
+deps = ["LibGit2"]
+git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d"
+uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
+version = "0.9.3"
+
+[[deps.Documenter]]
+deps = ["ANSIColoredPrinters", "AbstractTrees", "Base64", "CodecZlib", "Dates", "DocStringExtensions", "Downloads", "Git", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "MarkdownAST", "Pkg", "PrecompileTools", "REPL", "RegistryInstances", "SHA", "TOML", "Test", "Unicode"]
+git-tree-sha1 = "4a40af50e8b24333b9ec6892546d9ca5724228eb"
+uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
+version = "1.3.0"
+
+[[deps.DomainSets]]
+deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "Random", "StaticArrays"]
+git-tree-sha1 = "9fd332fb3b276a080e3ebccf0dcd98f4a10bf6a6"
+uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf"
+version = "0.7.10"
+
+[[deps.Downloads]]
+deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"]
+uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
+version = "1.6.0"
+
+[[deps.DualNumbers]]
+deps = ["Calculus", "NaNMath", "SpecialFunctions"]
+git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566"
+uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74"
+version = "0.6.8"
+
+[[deps.DynamicPolynomials]]
+deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"]
+git-tree-sha1 = "0bb0a6f812213ecc8fbbcf472f4a993036858971"
+uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07"
+version = "0.5.5"
+
+[[deps.DynamicQuantities]]
+deps = ["Compat", "PackageExtensionCompat", "Tricks"]
+git-tree-sha1 = "412b25c7d99ec6b06967d315c7b29bb8e484f092"
+uuid = "06fc5a27-2a28-4c7c-a15d-362465fb6821"
+version = "0.13.2"
+
+ [deps.DynamicQuantities.extensions]
+ DynamicQuantitiesLinearAlgebraExt = "LinearAlgebra"
+ DynamicQuantitiesMeasurementsExt = "Measurements"
+ DynamicQuantitiesScientificTypesExt = "ScientificTypes"
+ DynamicQuantitiesUnitfulExt = "Unitful"
+
+ [deps.DynamicQuantities.weakdeps]
+ LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
+ Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7"
+ ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81"
+ Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
+
+[[deps.EnumX]]
+git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237"
+uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56"
+version = "1.0.4"
+
+[[deps.EnzymeCore]]
+git-tree-sha1 = "1bc328eec34ffd80357f84a84bb30e4374e9bd60"
+uuid = "f151be2c-9106-41f4-ab19-57ee4f262869"
+version = "0.6.6"
+weakdeps = ["Adapt"]
+
+ [deps.EnzymeCore.extensions]
+ AdaptExt = "Adapt"
+
+[[deps.EpollShim_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643"
+uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43"
+version = "0.0.20230411+0"
+
+[[deps.ExceptionUnwrapping]]
+deps = ["Test"]
+git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a"
+uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4"
+version = "0.1.10"
+
+[[deps.Expat_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c"
+uuid = "2e619515-83b5-522b-bb60-26c02a35a201"
+version = "2.5.0+0"
+
+[[deps.ExponentialUtilities]]
+deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "PrecompileTools", "Printf", "SparseArrays", "libblastrampoline_jll"]
+git-tree-sha1 = "8e18940a5ba7f4ddb41fe2b79b6acaac50880a86"
+uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18"
+version = "1.26.1"
+
+[[deps.ExprTools]]
+git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec"
+uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04"
+version = "0.1.10"
+
+[[deps.FFMPEG]]
+deps = ["FFMPEG_jll"]
+git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8"
+uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a"
+version = "0.4.1"
+
+[[deps.FFMPEG_jll]]
+deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"]
+git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e"
+uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5"
+version = "4.4.4+1"
+
+[[deps.FFTW]]
+deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"]
+git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d"
+uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
+version = "1.8.0"
+
+[[deps.FFTW_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea"
+uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a"
+version = "3.3.10+0"
+
+[[deps.FastBroadcast]]
+deps = ["ArrayInterface", "LinearAlgebra", "Polyester", "Static", "StaticArrayInterface", "StrideArraysCore"]
+git-tree-sha1 = "a6e756a880fc419c8b41592010aebe6a5ce09136"
+uuid = "7034ab61-46d4-4ed7-9d0f-46aef9175898"
+version = "0.2.8"
+
+[[deps.FastClosures]]
+git-tree-sha1 = "acebe244d53ee1b461970f8910c235b259e772ef"
+uuid = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a"
+version = "0.3.2"
+
+[[deps.FastExpm]]
+deps = ["LinearAlgebra", "SparseArrays"]
+git-tree-sha1 = "b4451ccbc6ff3d71670e90c05bf59feef8915b01"
+uuid = "7868e603-8603-432e-a1a1-694bd70b01f2"
+version = "1.1.0"
+
+[[deps.FastGaussQuadrature]]
+deps = ["LinearAlgebra", "SpecialFunctions", "StaticArrays"]
+git-tree-sha1 = "fd923962364b645f3719855c88f7074413a6ad92"
+uuid = "442a2c76-b920-505d-bb47-c5924d526838"
+version = "1.0.2"
+
+[[deps.FastLapackInterface]]
+deps = ["LinearAlgebra"]
+git-tree-sha1 = "0a59c7d1002f3131de53dc4568a47d15a44daef7"
+uuid = "29a986be-02c6-4525-aec4-84b980013641"
+version = "2.0.2"
+
+[[deps.FileWatching]]
+uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
+
+[[deps.FillArrays]]
+deps = ["LinearAlgebra", "Random"]
+git-tree-sha1 = "5b93957f6dcd33fc343044af3d48c215be2562f1"
+uuid = "1a297f60-69ca-5386-bcde-b61e274b549b"
+version = "1.9.3"
+weakdeps = ["PDMats", "SparseArrays", "Statistics"]
+
+ [deps.FillArrays.extensions]
+ FillArraysPDMatsExt = "PDMats"
+ FillArraysSparseArraysExt = "SparseArrays"
+ FillArraysStatisticsExt = "Statistics"
+
+[[deps.FindFirstFunctions]]
+git-tree-sha1 = "e90fef90f7d75e6a5b435b0fd65609759f99717a"
+uuid = "64ca27bc-2ba2-4a57-88aa-44e436879224"
+version = "1.2.0"
+
+[[deps.FiniteDiff]]
+deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"]
+git-tree-sha1 = "bc0c5092d6caaea112d3c8e3b238d61563c58d5f"
+uuid = "6a86dc24-6348-571c-b903-95158fe2bd41"
+version = "2.23.0"
+
+ [deps.FiniteDiff.extensions]
+ FiniteDiffBandedMatricesExt = "BandedMatrices"
+ FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices"
+ FiniteDiffStaticArraysExt = "StaticArrays"
+
+ [deps.FiniteDiff.weakdeps]
+ BandedMatrices = "aae01518-5342-5314-be14-df237901396f"
+ BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0"
+ StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
+
+[[deps.FixedPointNumbers]]
+deps = ["Statistics"]
+git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc"
+uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93"
+version = "0.8.4"
+
+[[deps.Fontconfig_jll]]
+deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"]
+git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03"
+uuid = "a3f928ae-7b40-5064-980b-68af3947d34b"
+version = "2.13.93+0"
+
+[[deps.Format]]
+git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc"
+uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8"
+version = "1.3.7"
+
+[[deps.ForwardDiff]]
+deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"]
+git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad"
+uuid = "f6369f11-7733-5829-9624-2563aa707210"
+version = "0.10.36"
+weakdeps = ["StaticArrays"]
+
+ [deps.ForwardDiff.extensions]
+ ForwardDiffStaticArraysExt = "StaticArrays"
+
+[[deps.FreeType2_jll]]
+deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
+git-tree-sha1 = "d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0"
+uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7"
+version = "2.13.1+0"
+
+[[deps.FriBidi_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91"
+uuid = "559328eb-81f9-559d-9380-de523a88c83c"
+version = "1.0.10+0"
+
+[[deps.FunctionWrappers]]
+git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e"
+uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e"
+version = "1.1.3"
+
+[[deps.FunctionWrappersWrappers]]
+deps = ["FunctionWrappers"]
+git-tree-sha1 = "b104d487b34566608f8b4e1c39fb0b10aa279ff8"
+uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf"
+version = "0.1.3"
+
+[[deps.Functors]]
+deps = ["LinearAlgebra"]
+git-tree-sha1 = "8ae30e786837ce0a24f5e2186938bf3251ab94b2"
+uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196"
+version = "0.4.8"
+
+[[deps.Future]]
+deps = ["Random"]
+uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820"
+
+[[deps.GLFW_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"]
+git-tree-sha1 = "ff38ba61beff76b8f4acad8ab0c97ef73bb670cb"
+uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89"
+version = "3.3.9+0"
+
+[[deps.GPUArraysCore]]
+deps = ["Adapt"]
+git-tree-sha1 = "2d6ca471a6c7b536127afccfa7564b5b39227fe0"
+uuid = "46192b85-c4d5-4398-a991-12ede77f4527"
+version = "0.1.5"
+
+[[deps.GR]]
+deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"]
+git-tree-sha1 = "3437ade7073682993e092ca570ad68a2aba26983"
+uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71"
+version = "0.73.3"
+
+[[deps.GR_jll]]
+deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"]
+git-tree-sha1 = "a96d5c713e6aa28c242b0d25c1347e258d6541ab"
+uuid = "d2c73de3-f751-5644-a686-071e5b155ba9"
+version = "0.73.3+0"
+
+[[deps.GSL]]
+deps = ["GSL_jll", "Libdl", "Markdown"]
+git-tree-sha1 = "3ebd07d519f5ec318d5bc1b4971e2472e14bd1f0"
+uuid = "92c85e6c-cbff-5e0c-80f7-495c94daaecd"
+version = "1.0.1"
+
+[[deps.GSL_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "56f1e2c9e083e0bb7cf9a7055c280beb08a924c0"
+uuid = "1b77fbbe-d8ee-58f0-85f9-836ddc23a7a4"
+version = "2.7.2+0"
+
+[[deps.GenericSchur]]
+deps = ["LinearAlgebra", "Printf"]
+git-tree-sha1 = "af49a0851f8113fcfae2ef5027c6d49d0acec39b"
+uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e"
+version = "0.5.4"
+
+[[deps.Gettext_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"]
+git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046"
+uuid = "78b55507-aeef-58d4-861c-77aaff3498b1"
+version = "0.21.0+0"
+
+[[deps.Git]]
+deps = ["Git_jll"]
+git-tree-sha1 = "04eff47b1354d702c3a85e8ab23d539bb7d5957e"
+uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2"
+version = "1.3.1"
+
+[[deps.Git_jll]]
+deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"]
+git-tree-sha1 = "12945451c5d0e2d0dca0724c3a8d6448b46bbdf9"
+uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb"
+version = "2.44.0+1"
+
+[[deps.Glib_jll]]
+deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"]
+git-tree-sha1 = "359a1ba2e320790ddbe4ee8b4d54a305c0ea2aff"
+uuid = "7746bdde-850d-59dc-9ae8-88ece973131d"
+version = "2.80.0+0"
+
+[[deps.Glob]]
+git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496"
+uuid = "c27321d9-0574-5035-807b-f59d2c89b15c"
+version = "1.3.1"
+
+[[deps.Graphite2_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011"
+uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472"
+version = "1.3.14+0"
+
+[[deps.Graphs]]
+deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"]
+git-tree-sha1 = "899050ace26649433ef1af25bc17a815b3db52b7"
+uuid = "86223c79-3864-5bf0-83f7-82e725a168b6"
+version = "1.9.0"
+
+[[deps.Grisu]]
+git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2"
+uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe"
+version = "1.0.2"
+
+[[deps.HTTP]]
+deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"]
+git-tree-sha1 = "8e59b47b9dc525b70550ca082ce85bcd7f5477cd"
+uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3"
+version = "1.10.5"
+
+[[deps.HalfIntegers]]
+git-tree-sha1 = "9c3149243abb5bc0bad0431d6c4fcac0f4443c7c"
+uuid = "f0d1745a-41c9-11e9-1dd9-e5d34d218721"
+version = "1.6.0"
+
+[[deps.HarfBuzz_jll]]
+deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"]
+git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3"
+uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566"
+version = "2.8.1+1"
+
+[[deps.HostCPUFeatures]]
+deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"]
+git-tree-sha1 = "eb8fed28f4994600e29beef49744639d985a04b2"
+uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0"
+version = "0.1.16"
+
+[[deps.HypergeometricFunctions]]
+deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"]
+git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685"
+uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a"
+version = "0.3.23"
+
+[[deps.IOCapture]]
+deps = ["Logging", "Random"]
+git-tree-sha1 = "8b72179abc660bfab5e28472e019392b97d0985c"
+uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89"
+version = "0.2.4"
+
+[[deps.IfElse]]
+git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1"
+uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173"
+version = "0.1.1"
+
+[[deps.Inflate]]
+git-tree-sha1 = "ea8031dea4aff6bd41f1df8f2fdfb25b33626381"
+uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9"
+version = "0.1.4"
+
+[[deps.IntegerMathUtils]]
+git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30"
+uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235"
+version = "0.1.2"
+
+[[deps.IntelOpenMP_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "5fdf2fe6724d8caabf43b557b84ce53f3b7e2f6b"
+uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0"
+version = "2024.0.2+0"
+
+[[deps.InteractiveUtils]]
+deps = ["Markdown"]
+uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
+
+[[deps.IntervalSets]]
+git-tree-sha1 = "dba9ddf07f77f60450fe5d2e2beb9854d9a49bd0"
+uuid = "8197267c-284f-5f27-9208-e0e47529a953"
+version = "0.7.10"
+weakdeps = ["Random", "RecipesBase", "Statistics"]
+
+ [deps.IntervalSets.extensions]
+ IntervalSetsRandomExt = "Random"
+ IntervalSetsRecipesBaseExt = "RecipesBase"
+ IntervalSetsStatisticsExt = "Statistics"
+
+[[deps.IrrationalConstants]]
+git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2"
+uuid = "92d709cd-6900-40b7-9082-c6be49f344b6"
+version = "0.2.2"
+
+[[deps.IterativeSolvers]]
+deps = ["LinearAlgebra", "Printf", "Random", "RecipesBase", "SparseArrays"]
+git-tree-sha1 = "59545b0a2b27208b0650df0a46b8e3019f85055b"
+uuid = "42fd0dbc-a981-5370-80f2-aaf504508153"
+version = "0.9.4"
+
+[[deps.IteratorInterfaceExtensions]]
+git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856"
+uuid = "82899510-4779-5014-852e-03e436cf321d"
+version = "1.0.0"
+
+[[deps.JLFzf]]
+deps = ["Pipe", "REPL", "Random", "fzf_jll"]
+git-tree-sha1 = "a53ebe394b71470c7f97c2e7e170d51df21b17af"
+uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c"
+version = "0.1.7"
+
+[[deps.JLLWrappers]]
+deps = ["Artifacts", "Preferences"]
+git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca"
+uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
+version = "1.5.0"
+
+[[deps.JSON]]
+deps = ["Dates", "Mmap", "Parsers", "Unicode"]
+git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a"
+uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
+version = "0.21.4"
+
+[[deps.JpegTurbo_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "3336abae9a713d2210bb57ab484b1e065edd7d23"
+uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8"
+version = "3.0.2+0"
+
+[[deps.JuliaFormatter]]
+deps = ["CSTParser", "CommonMark", "DataStructures", "Glob", "Pkg", "PrecompileTools", "Tokenize"]
+git-tree-sha1 = "e07d6fd7db543b11cd90ed764efec53f39851f09"
+uuid = "98e50ef6-434e-11e9-1051-2b60c6c9e899"
+version = "1.0.54"
+
+[[deps.JumpProcesses]]
+deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "Markdown", "PoissonRandom", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "StaticArrays", "UnPack"]
+git-tree-sha1 = "c451feb97251965a9fe40bacd62551a72cc5902c"
+uuid = "ccbc3e58-028d-4f4c-8cd5-9ae44345cda5"
+version = "9.10.1"
+weakdeps = ["FastBroadcast"]
+
+ [deps.JumpProcesses.extensions]
+ JumpProcessFastBroadcastExt = "FastBroadcast"
+
+[[deps.KLU]]
+deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"]
+git-tree-sha1 = "884c2968c2e8e7e6bf5956af88cb46aa745c854b"
+uuid = "ef3ab10e-7fda-4108-b977-705223b18434"
+version = "0.4.1"
+
+[[deps.Krylov]]
+deps = ["LinearAlgebra", "Printf", "SparseArrays"]
+git-tree-sha1 = "8a6837ec02fe5fb3def1abc907bb802ef11a0729"
+uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7"
+version = "0.9.5"
+
+[[deps.KrylovKit]]
+deps = ["ChainRulesCore", "GPUArraysCore", "LinearAlgebra", "Printf"]
+git-tree-sha1 = "5cebb47f472f086f7dd31fb8e738a8db728f1f84"
+uuid = "0b1a1467-8014-51b9-945f-bf0ae24f4b77"
+version = "0.6.1"
+
+[[deps.LAME_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c"
+uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d"
+version = "3.100.1+0"
+
+[[deps.LERC_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434"
+uuid = "88015f11-f218-50d7-93a8-a6af411a945d"
+version = "3.0.0+1"
+
+[[deps.LLVMOpenMP_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "d986ce2d884d49126836ea94ed5bfb0f12679713"
+uuid = "1d63c593-3942-5779-bab2-d838dc0a180e"
+version = "15.0.7+0"
+
+[[deps.LRUCache]]
+git-tree-sha1 = "b3cc6698599b10e652832c2f23db3cab99d51b59"
+uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637"
+version = "1.6.1"
+weakdeps = ["Serialization"]
+
+ [deps.LRUCache.extensions]
+ SerializationExt = ["Serialization"]
+
+[[deps.LZO_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6"
+uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac"
+version = "2.10.1+0"
+
+[[deps.LaTeXStrings]]
+git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec"
+uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
+version = "1.3.1"
+
+[[deps.LabelledArrays]]
+deps = ["ArrayInterface", "ChainRulesCore", "ForwardDiff", "LinearAlgebra", "MacroTools", "PreallocationTools", "RecursiveArrayTools", "StaticArrays"]
+git-tree-sha1 = "d1f981fba6eb3ec393eede4821bca3f2b7592cd4"
+uuid = "2ee39098-c373-598a-b85f-a56591580800"
+version = "1.15.1"
+
+[[deps.LambertW]]
+git-tree-sha1 = "c5ffc834de5d61d00d2b0e18c96267cffc21f648"
+uuid = "984bce1d-4616-540c-a9ee-88d1112d94c9"
+version = "0.4.6"
+
+[[deps.Latexify]]
+deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"]
+git-tree-sha1 = "cad560042a7cc108f5a4c24ea1431a9221f22c1b"
+uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316"
+version = "0.16.2"
+
+ [deps.Latexify.extensions]
+ DataFramesExt = "DataFrames"
+ SymEngineExt = "SymEngine"
+
+ [deps.Latexify.weakdeps]
+ DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
+ SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8"
+
+[[deps.LayoutPointers]]
+deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"]
+git-tree-sha1 = "62edfee3211981241b57ff1cedf4d74d79519277"
+uuid = "10f19ff3-798f-405d-979b-55457f8fc047"
+version = "0.1.15"
+
+[[deps.LazilyInitializedFields]]
+git-tree-sha1 = "8f7f3cabab0fd1800699663533b6d5cb3fc0e612"
+uuid = "0e77f7df-68c5-4e49-93ce-4cd80f5598bf"
+version = "1.2.2"
+
+[[deps.LazyArrays]]
+deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "MacroTools", "MatrixFactorizations", "SparseArrays"]
+git-tree-sha1 = "af45931c321aafdb96a6e0b26e81124e1b390e4e"
+uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02"
+version = "1.9.0"
+weakdeps = ["StaticArrays"]
+
+ [deps.LazyArrays.extensions]
+ LazyArraysStaticArraysExt = "StaticArrays"
+
+[[deps.LazyArtifacts]]
+deps = ["Artifacts", "Pkg"]
+uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3"
+
+[[deps.LevyArea]]
+deps = ["LinearAlgebra", "Random", "SpecialFunctions"]
+git-tree-sha1 = "56513a09b8e0ae6485f34401ea9e2f31357958ec"
+uuid = "2d8b4e74-eb68-11e8-0fb9-d5eb67b50637"
+version = "1.0.0"
+
+[[deps.LibCURL]]
+deps = ["LibCURL_jll", "MozillaCACerts_jll"]
+uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
+version = "0.6.4"
+
+[[deps.LibCURL_jll]]
+deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"]
+uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
+version = "8.4.0+0"
+
+[[deps.LibGit2]]
+deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"]
+uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
+
+[[deps.LibGit2_jll]]
+deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"]
+uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5"
+version = "1.6.4+0"
+
+[[deps.LibSSH2_jll]]
+deps = ["Artifacts", "Libdl", "MbedTLS_jll"]
+uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
+version = "1.11.0+1"
+
+[[deps.Libdl]]
+uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
+
+[[deps.Libffi_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290"
+uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490"
+version = "3.2.2+1"
+
+[[deps.Libgcrypt_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"]
+git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae"
+uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4"
+version = "1.8.7+0"
+
+[[deps.Libglvnd_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"]
+git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733"
+uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29"
+version = "1.6.0+0"
+
+[[deps.Libgpg_error_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9"
+uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8"
+version = "1.42.0+0"
+
+[[deps.Libiconv_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175"
+uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531"
+version = "1.17.0+0"
+
+[[deps.Libmount_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "dae976433497a2f841baadea93d27e68f1a12a97"
+uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9"
+version = "2.39.3+0"
+
+[[deps.Libtiff_jll]]
+deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"]
+git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a"
+uuid = "89763e89-9b03-5906-acba-b20f662cd828"
+version = "4.5.1+1"
+
+[[deps.Libuuid_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "0a04a1318df1bf510beb2562cf90fb0c386f58c4"
+uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700"
+version = "2.39.3+1"
+
+[[deps.LineSearches]]
+deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"]
+git-tree-sha1 = "7bbea35cec17305fc70a0e5b4641477dc0789d9d"
+uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255"
+version = "7.2.0"
+
+[[deps.LinearAlgebra]]
+deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"]
+uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
+
+[[deps.LinearMaps]]
+deps = ["LinearAlgebra"]
+git-tree-sha1 = "9948d6f8208acfebc3e8cf4681362b2124339e7e"
+uuid = "7a12625a-238d-50fd-b39a-03d52299707e"
+version = "3.11.2"
+weakdeps = ["ChainRulesCore", "SparseArrays", "Statistics"]
+
+ [deps.LinearMaps.extensions]
+ LinearMapsChainRulesCoreExt = "ChainRulesCore"
+ LinearMapsSparseArraysExt = "SparseArrays"
+ LinearMapsStatisticsExt = "Statistics"
+
+[[deps.LinearSolve]]
+deps = ["ArrayInterface", "ConcreteStructs", "DocStringExtensions", "EnumX", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "Libdl", "LinearAlgebra", "MKL_jll", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "StaticArraysCore", "UnPack"]
+git-tree-sha1 = "6f8e084deabe3189416c4e505b1c53e1b590cae8"
+uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae"
+version = "2.22.1"
+
+ [deps.LinearSolve.extensions]
+ LinearSolveBandedMatricesExt = "BandedMatrices"
+ LinearSolveBlockDiagonalsExt = "BlockDiagonals"
+ LinearSolveCUDAExt = "CUDA"
+ LinearSolveEnzymeExt = ["Enzyme", "EnzymeCore"]
+ LinearSolveFastAlmostBandedMatricesExt = ["FastAlmostBandedMatrices"]
+ LinearSolveHYPREExt = "HYPRE"
+ LinearSolveIterativeSolversExt = "IterativeSolvers"
+ LinearSolveKernelAbstractionsExt = "KernelAbstractions"
+ LinearSolveKrylovKitExt = "KrylovKit"
+ LinearSolveMetalExt = "Metal"
+ LinearSolvePardisoExt = "Pardiso"
+ LinearSolveRecursiveArrayToolsExt = "RecursiveArrayTools"
+
+ [deps.LinearSolve.weakdeps]
+ BandedMatrices = "aae01518-5342-5314-be14-df237901396f"
+ BlockDiagonals = "0a1fb500-61f7-11e9-3c65-f5ef3456f9f0"
+ CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
+ Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9"
+ EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869"
+ FastAlmostBandedMatrices = "9d29842c-ecb8-4973-b1e9-a27b1157504e"
+ HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771"
+ IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153"
+ KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c"
+ KrylovKit = "0b1a1467-8014-51b9-945f-bf0ae24f4b77"
+ Metal = "dde4c033-4e86-420c-a63e-0dd931031962"
+ Pardiso = "46dd5b70-b6fb-5a00-ae2d-e8fea33afaf2"
+ RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
+
+[[deps.LogExpFunctions]]
+deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"]
+git-tree-sha1 = "18144f3e9cbe9b15b070288eef858f71b291ce37"
+uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688"
+version = "0.3.27"
+
+ [deps.LogExpFunctions.extensions]
+ LogExpFunctionsChainRulesCoreExt = "ChainRulesCore"
+ LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables"
+ LogExpFunctionsInverseFunctionsExt = "InverseFunctions"
+
+ [deps.LogExpFunctions.weakdeps]
+ ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
+ ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0"
+ InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112"
+
+[[deps.Logging]]
+uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
+
+[[deps.LoggingExtras]]
+deps = ["Dates", "Logging"]
+git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075"
+uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36"
+version = "1.0.3"
+
+[[deps.LoopVectorization]]
+deps = ["ArrayInterface", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"]
+git-tree-sha1 = "a13f3be5d84b9c95465d743c82af0b094ef9c2e2"
+uuid = "bdcacae8-1622-11e9-2a5c-532679323890"
+version = "0.12.169"
+weakdeps = ["ChainRulesCore", "ForwardDiff", "SpecialFunctions"]
+
+ [deps.LoopVectorization.extensions]
+ ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"]
+ SpecialFunctionsExt = "SpecialFunctions"
+
+[[deps.MKL_jll]]
+deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl"]
+git-tree-sha1 = "72dc3cf284559eb8f53aa593fe62cb33f83ed0c0"
+uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7"
+version = "2024.0.0+0"
+
+[[deps.MLStyle]]
+git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8"
+uuid = "d8e11817-5142-5d16-987a-aa16d5891078"
+version = "0.4.17"
+
+[[deps.MacroTools]]
+deps = ["Markdown", "Random"]
+git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df"
+uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
+version = "0.5.13"
+
+[[deps.ManualMemory]]
+git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd"
+uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667"
+version = "0.1.8"
+
+[[deps.Markdown]]
+deps = ["Base64"]
+uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
+
+[[deps.MarkdownAST]]
+deps = ["AbstractTrees", "Markdown"]
+git-tree-sha1 = "465a70f0fc7d443a00dcdc3267a497397b8a3899"
+uuid = "d0879d2d-cac2-40c8-9cee-1863dc0c7391"
+version = "0.1.2"
+
+[[deps.MatrixFactorizations]]
+deps = ["ArrayLayouts", "LinearAlgebra", "Printf", "Random"]
+git-tree-sha1 = "78f6e33434939b0ac9ba1df81e6d005ee85a7396"
+uuid = "a3b82374-2e81-5b9e-98ce-41277c0e4c87"
+version = "2.1.0"
+
+[[deps.MaybeInplace]]
+deps = ["ArrayInterface", "LinearAlgebra", "MacroTools", "SparseArrays"]
+git-tree-sha1 = "b1f2f92feb0bc201e91c155ef575bcc7d9cc3526"
+uuid = "bb5d69b7-63fc-4a16-80bd-7e42200c7bdb"
+version = "0.1.2"
+
+[[deps.MbedTLS]]
+deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"]
+git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf"
+uuid = "739be429-bea8-5141-9913-cc70e7f3736d"
+version = "1.1.9"
+
+[[deps.MbedTLS_jll]]
+deps = ["Artifacts", "Libdl"]
+uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
+version = "2.28.2+1"
+
+[[deps.Measures]]
+git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102"
+uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e"
+version = "0.3.2"
+
+[[deps.Missings]]
+deps = ["DataAPI"]
+git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272"
+uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28"
+version = "1.1.0"
+
+[[deps.Mmap]]
+uuid = "a63ad114-7e13-5084-954f-fe012c677804"
+
+[[deps.ModelingToolkit]]
+deps = ["AbstractTrees", "ArrayInterface", "Combinatorics", "Compat", "ConstructionBase", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DiffRules", "Distributed", "Distributions", "DocStringExtensions", "DomainSets", "DynamicQuantities", "ExprTools", "FindFirstFunctions", "ForwardDiff", "FunctionWrappersWrappers", "Graphs", "InteractiveUtils", "JuliaFormatter", "JumpProcesses", "LabelledArrays", "Latexify", "Libdl", "LinearAlgebra", "MLStyle", "NaNMath", "OrdinaryDiffEq", "PrecompileTools", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "SciMLStructures", "Serialization", "Setfield", "SimpleNonlinearSolve", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "SymbolicUtils", "Symbolics", "URIs", "UnPack", "Unitful"]
+git-tree-sha1 = "ef2002247f9d9c1df72f5502243e1b7493337de6"
+uuid = "961ee093-0014-501f-94e3-6117800e7a78"
+version = "9.7.1"
+
+ [deps.ModelingToolkit.extensions]
+ MTKBifurcationKitExt = "BifurcationKit"
+ MTKDeepDiffsExt = "DeepDiffs"
+
+ [deps.ModelingToolkit.weakdeps]
+ BifurcationKit = "0f109fa4-8a5d-4b75-95aa-f515264e7665"
+ DeepDiffs = "ab62b9b5-e342-54a8-a765-a90f495de1a6"
+
+[[deps.MozillaCACerts_jll]]
+uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
+version = "2023.1.10"
+
+[[deps.MuladdMacro]]
+git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab"
+uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221"
+version = "0.2.4"
+
+[[deps.MultivariatePolynomials]]
+deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"]
+git-tree-sha1 = "769c9175942d91ed9b83fa929eee4fe6a1d128ad"
+uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3"
+version = "0.5.4"
+
+[[deps.MutableArithmetics]]
+deps = ["LinearAlgebra", "SparseArrays", "Test"]
+git-tree-sha1 = "2d106538aebe1c165e16d277914e10c550e9d9b7"
+uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0"
+version = "1.4.2"
+
+[[deps.NLSolversBase]]
+deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"]
+git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c"
+uuid = "d41bc354-129a-5804-8e4c-c37616107c6c"
+version = "7.8.3"
+
+[[deps.NLsolve]]
+deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"]
+git-tree-sha1 = "019f12e9a1a7880459d0173c182e6a99365d7ac1"
+uuid = "2774e3e8-f4cf-5e23-947b-6d7e65073b56"
+version = "4.5.1"
+
+[[deps.NaNMath]]
+deps = ["OpenLibm_jll"]
+git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4"
+uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
+version = "1.0.2"
+
+[[deps.NetworkOptions]]
+uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
+version = "1.2.0"
+
+[[deps.NonlinearSolve]]
+deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "DiffEqBase", "FastBroadcast", "FastClosures", "FiniteDiff", "ForwardDiff", "LazyArrays", "LineSearches", "LinearAlgebra", "LinearSolve", "MaybeInplace", "PrecompileTools", "Preferences", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseDiffTools", "StaticArraysCore", "TimerOutputs"]
+git-tree-sha1 = "1638addfc31707aea26333ff822afcf9d2e6f7de"
+uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec"
+version = "3.8.3"
+
+ [deps.NonlinearSolve.extensions]
+ NonlinearSolveBandedMatricesExt = "BandedMatrices"
+ NonlinearSolveFastLevenbergMarquardtExt = "FastLevenbergMarquardt"
+ NonlinearSolveFixedPointAccelerationExt = "FixedPointAcceleration"
+ NonlinearSolveLeastSquaresOptimExt = "LeastSquaresOptim"
+ NonlinearSolveMINPACKExt = "MINPACK"
+ NonlinearSolveNLSolversExt = "NLSolvers"
+ NonlinearSolveNLsolveExt = "NLsolve"
+ NonlinearSolveSIAMFANLEquationsExt = "SIAMFANLEquations"
+ NonlinearSolveSpeedMappingExt = "SpeedMapping"
+ NonlinearSolveSymbolicsExt = "Symbolics"
+ NonlinearSolveZygoteExt = "Zygote"
+
+ [deps.NonlinearSolve.weakdeps]
+ BandedMatrices = "aae01518-5342-5314-be14-df237901396f"
+ FastLevenbergMarquardt = "7a0df574-e128-4d35-8cbd-3d84502bf7ce"
+ FixedPointAcceleration = "817d07cb-a79a-5c30-9a31-890123675176"
+ LeastSquaresOptim = "0fc2ff8b-aaa3-5acd-a817-1944a5e08891"
+ MINPACK = "4854310b-de5a-5eb6-a2a5-c1dee2bd17f9"
+ NLSolvers = "337daf1e-9722-11e9-073e-8b9effe078ba"
+ NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56"
+ SIAMFANLEquations = "084e46ad-d928-497d-ad5e-07fa361a48c4"
+ SpeedMapping = "f1835b91-879b-4a3f-a438-e4baacf14412"
+ Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7"
+ Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
+
+[[deps.OffsetArrays]]
+git-tree-sha1 = "6a731f2b5c03157418a20c12195eb4b74c8f8621"
+uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881"
+version = "1.13.0"
+weakdeps = ["Adapt"]
+
+ [deps.OffsetArrays.extensions]
+ OffsetArraysAdaptExt = "Adapt"
+
+[[deps.Ogg_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f"
+uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051"
+version = "1.3.5+1"
+
+[[deps.OpenBLAS_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
+uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
+version = "0.3.23+4"
+
+[[deps.OpenLibm_jll]]
+deps = ["Artifacts", "Libdl"]
+uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
+version = "0.8.1+2"
+
+[[deps.OpenSSL]]
+deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"]
+git-tree-sha1 = "af81a32750ebc831ee28bdaaba6e1067decef51e"
+uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c"
+version = "1.4.2"
+
+[[deps.OpenSSL_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "3da7367955dcc5c54c1ba4d402ccdc09a1a3e046"
+uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
+version = "3.0.13+1"
+
+[[deps.OpenSpecFun_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1"
+uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e"
+version = "0.5.5+0"
+
+[[deps.Optim]]
+deps = ["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "PackageExtensionCompat", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"]
+git-tree-sha1 = "d1223e69af90b6d26cea5b6f3b289b3148ba702c"
+uuid = "429524aa-4258-5aef-a3af-852621145aeb"
+version = "1.9.3"
+
+ [deps.Optim.extensions]
+ OptimMOIExt = "MathOptInterface"
+
+ [deps.Optim.weakdeps]
+ MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee"
+
+[[deps.Opus_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720"
+uuid = "91d4177d-7536-5919-b921-800302f37372"
+version = "1.3.2+0"
+
+[[deps.OrderedCollections]]
+git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5"
+uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
+version = "1.6.3"
+
+[[deps.OrdinaryDiffEq]]
+deps = ["ADTypes", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FillArrays", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "IfElse", "InteractiveUtils", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "MacroTools", "MuladdMacro", "NonlinearSolve", "Polyester", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SimpleNonlinearSolve", "SimpleUnPack", "SparseArrays", "SparseDiffTools", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"]
+git-tree-sha1 = "91079af18db922354197eeae2a17b177079e24c1"
+uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
+version = "6.74.1"
+
+[[deps.PCRE2_jll]]
+deps = ["Artifacts", "Libdl"]
+uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15"
+version = "10.42.0+1"
+
+[[deps.PDMats]]
+deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"]
+git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65"
+uuid = "90014a1f-27ba-587c-ab20-58faa44d9150"
+version = "0.11.31"
+
+[[deps.PackageExtensionCompat]]
+git-tree-sha1 = "fb28e33b8a95c4cee25ce296c817d89cc2e53518"
+uuid = "65ce6f38-6b18-4e1d-a461-8949797d7930"
+version = "1.0.2"
+weakdeps = ["Requires", "TOML"]
+
+[[deps.Parameters]]
+deps = ["OrderedCollections", "UnPack"]
+git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe"
+uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a"
+version = "0.12.3"
+
+[[deps.Parsers]]
+deps = ["Dates", "PrecompileTools", "UUIDs"]
+git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821"
+uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
+version = "2.8.1"
+
+[[deps.Pipe]]
+git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d"
+uuid = "b98c9c47-44ae-5843-9183-064241ee97a0"
+version = "1.3.0"
+
+[[deps.Pixman_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"]
+git-tree-sha1 = "64779bc4c9784fee475689a1752ef4d5747c5e87"
+uuid = "30392449-352a-5448-841d-b1acce4e97dc"
+version = "0.42.2+0"
+
+[[deps.Pkg]]
+deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"]
+uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
+version = "1.10.0"
+
+[[deps.PlotThemes]]
+deps = ["PlotUtils", "Statistics"]
+git-tree-sha1 = "1f03a2d339f42dca4a4da149c7e15e9b896ad899"
+uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a"
+version = "3.1.0"
+
+[[deps.PlotUtils]]
+deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"]
+git-tree-sha1 = "7b1a9df27f072ac4c9c7cbe5efb198489258d1f5"
+uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043"
+version = "1.4.1"
+
+[[deps.Plots]]
+deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"]
+git-tree-sha1 = "3bdfa4fa528ef21287ef659a89d686e8a1bcb1a9"
+uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
+version = "1.40.3"
+
+ [deps.Plots.extensions]
+ FileIOExt = "FileIO"
+ GeometryBasicsExt = "GeometryBasics"
+ IJuliaExt = "IJulia"
+ ImageInTerminalExt = "ImageInTerminal"
+ UnitfulExt = "Unitful"
+
+ [deps.Plots.weakdeps]
+ FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
+ GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326"
+ IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a"
+ ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254"
+ Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
+
+[[deps.PoissonRandom]]
+deps = ["Random"]
+git-tree-sha1 = "a0f1159c33f846aa77c3f30ebbc69795e5327152"
+uuid = "e409e4f3-bfea-5376-8464-e040bb5c01ab"
+version = "0.4.4"
+
+[[deps.Polyester]]
+deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Requires", "Static", "StaticArrayInterface", "StrideArraysCore", "ThreadingUtilities"]
+git-tree-sha1 = "09f59c6dda37c7f73efddc5bdf6f92bc940eb484"
+uuid = "f517fe37-dbe3-4b94-8317-1923a5111588"
+version = "0.7.12"
+
+[[deps.PolyesterWeave]]
+deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"]
+git-tree-sha1 = "240d7170f5ffdb285f9427b92333c3463bf65bf6"
+uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad"
+version = "0.2.1"
+
+[[deps.PositiveFactorizations]]
+deps = ["LinearAlgebra"]
+git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20"
+uuid = "85a6dd25-e78a-55b7-8502-1745935b8125"
+version = "0.2.4"
+
+[[deps.PreallocationTools]]
+deps = ["Adapt", "ArrayInterface", "ForwardDiff"]
+git-tree-sha1 = "b6665214f2d0739f2d09a17474dd443b9139784a"
+uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46"
+version = "0.4.20"
+
+ [deps.PreallocationTools.extensions]
+ PreallocationToolsReverseDiffExt = "ReverseDiff"
+
+ [deps.PreallocationTools.weakdeps]
+ ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
+
+[[deps.PrecompileTools]]
+deps = ["Preferences"]
+git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f"
+uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
+version = "1.2.1"
+
+[[deps.Preferences]]
+deps = ["TOML"]
+git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6"
+uuid = "21216c6a-2e73-6563-6e65-726566657250"
+version = "1.4.3"
+
+[[deps.Primes]]
+deps = ["IntegerMathUtils"]
+git-tree-sha1 = "cb420f77dc474d23ee47ca8d14c90810cafe69e7"
+uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae"
+version = "0.5.6"
+
+[[deps.Printf]]
+deps = ["Unicode"]
+uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
+
+[[deps.Qt6Base_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"]
+git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b"
+uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56"
+version = "6.5.3+1"
+
+[[deps.QuadGK]]
+deps = ["DataStructures", "LinearAlgebra"]
+git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e"
+uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
+version = "2.9.4"
+
+[[deps.QuantumInterface]]
+deps = ["LinearAlgebra", "SparseArrays"]
+git-tree-sha1 = "5e4f1f1a93d2f7f8f837af9122342e43b1fe5199"
+uuid = "5717a53b-5d69-4fa3-b976-0bf2f97ca1e5"
+version = "0.3.4"
+
+[[deps.QuantumOptics]]
+deps = ["Arpack", "DiffEqBase", "DiffEqCallbacks", "FFTW", "ForwardDiff", "IterativeSolvers", "KrylovKit", "LinearAlgebra", "LinearMaps", "OrdinaryDiffEq", "QuantumOpticsBase", "Random", "RecursiveArrayTools", "Reexport", "SparseArrays", "StochasticDiffEq", "WignerSymbols"]
+git-tree-sha1 = "8d6a3672d982c3236ce435846468c169c386df3b"
+uuid = "6e0679c1-51ea-5a7c-ac74-d61b76210b0c"
+version = "1.0.15"
+
+[[deps.QuantumOpticsBase]]
+deps = ["Adapt", "FFTW", "FastExpm", "FastGaussQuadrature", "FillArrays", "LRUCache", "LinearAlgebra", "QuantumInterface", "Random", "RandomMatrices", "SparseArrays", "Strided", "UnsafeArrays"]
+git-tree-sha1 = "abce3a922e9230a04f91c9f4f67cc7c53907621d"
+uuid = "4f57444f-1401-5e15-980d-4471b28d5678"
+version = "0.4.21"
+
+[[deps.REPL]]
+deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"]
+uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
+
+[[deps.Random]]
+deps = ["SHA"]
+uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
+
+[[deps.Random123]]
+deps = ["Random", "RandomNumbers"]
+git-tree-sha1 = "4743b43e5a9c4a2ede372de7061eed81795b12e7"
+uuid = "74087812-796a-5b5d-8853-05524746bad3"
+version = "1.7.0"
+
+[[deps.RandomMatrices]]
+deps = ["Combinatorics", "Distributions", "FastGaussQuadrature", "GSL", "LinearAlgebra", "Random", "SpecialFunctions", "Test"]
+git-tree-sha1 = "ce39acdf57c11919b957afa1974fe774b8f94fcc"
+uuid = "2576dda1-a324-5b11-aa66-c48ed7e3c618"
+version = "0.5.4"
+
+[[deps.RandomNumbers]]
+deps = ["Random", "Requires"]
+git-tree-sha1 = "043da614cc7e95c703498a491e2c21f58a2b8111"
+uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143"
+version = "1.5.3"
+
+[[deps.RationalRoots]]
+git-tree-sha1 = "e5f5db699187a4810fda9181b34250deeedafd81"
+uuid = "308eb6b3-cc68-5ff3-9e97-c3c4da4fa681"
+version = "0.2.1"
+
+[[deps.RecipesBase]]
+deps = ["PrecompileTools"]
+git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff"
+uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
+version = "1.3.4"
+
+[[deps.RecipesPipeline]]
+deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"]
+git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342"
+uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c"
+version = "0.6.12"
+
+[[deps.RecursiveArrayTools]]
+deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "SparseArrays", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"]
+git-tree-sha1 = "d8f131090f2e44b145084928856a561c83f43b27"
+uuid = "731186ca-8d62-57ce-b412-fbd966d074cd"
+version = "3.13.0"
+
+ [deps.RecursiveArrayTools.extensions]
+ RecursiveArrayToolsFastBroadcastExt = "FastBroadcast"
+ RecursiveArrayToolsForwardDiffExt = "ForwardDiff"
+ RecursiveArrayToolsMeasurementsExt = "Measurements"
+ RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements"
+ RecursiveArrayToolsReverseDiffExt = ["ReverseDiff", "Zygote"]
+ RecursiveArrayToolsTrackerExt = "Tracker"
+ RecursiveArrayToolsZygoteExt = "Zygote"
+
+ [deps.RecursiveArrayTools.weakdeps]
+ FastBroadcast = "7034ab61-46d4-4ed7-9d0f-46aef9175898"
+ ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
+ Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7"
+ MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca"
+ ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
+ Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"
+ Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
+
+[[deps.RecursiveFactorization]]
+deps = ["LinearAlgebra", "LoopVectorization", "Polyester", "PrecompileTools", "StrideArraysCore", "TriangularSolve"]
+git-tree-sha1 = "8bc86c78c7d8e2a5fe559e3721c0f9c9e303b2ed"
+uuid = "f2c3362d-daeb-58d1-803e-2bc74f2840b4"
+version = "0.2.21"
+
+[[deps.Reexport]]
+git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b"
+uuid = "189a3867-3050-52da-a836-e630ba90ab69"
+version = "1.2.2"
+
+[[deps.RegistryInstances]]
+deps = ["LazilyInitializedFields", "Pkg", "TOML", "Tar"]
+git-tree-sha1 = "ffd19052caf598b8653b99404058fce14828be51"
+uuid = "2792f1a3-b283-48e8-9a74-f99dce5104f3"
+version = "0.1.0"
+
+[[deps.RelocatableFolders]]
+deps = ["SHA", "Scratch"]
+git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864"
+uuid = "05181044-ff0b-4ac5-8273-598c1e38db00"
+version = "1.0.1"
+
+[[deps.Requires]]
+deps = ["UUIDs"]
+git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7"
+uuid = "ae029012-a4dd-5104-9daa-d747884805df"
+version = "1.3.0"
+
+[[deps.ResettableStacks]]
+deps = ["StaticArrays"]
+git-tree-sha1 = "256eeeec186fa7f26f2801732774ccf277f05db9"
+uuid = "ae5879a3-cd67-5da8-be7f-38c6eb64a37b"
+version = "1.1.1"
+
+[[deps.Rmath]]
+deps = ["Random", "Rmath_jll"]
+git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b"
+uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa"
+version = "0.7.1"
+
+[[deps.Rmath_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da"
+uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f"
+version = "0.4.0+0"
+
+[[deps.RuntimeGeneratedFunctions]]
+deps = ["ExprTools", "SHA", "Serialization"]
+git-tree-sha1 = "6aacc5eefe8415f47b3e34214c1d79d2674a0ba2"
+uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47"
+version = "0.5.12"
+
+[[deps.SHA]]
+uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
+version = "0.7.0"
+
+[[deps.SIMDTypes]]
+git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c"
+uuid = "94e857df-77ce-4151-89e5-788b33177be4"
+version = "0.1.0"
+
+[[deps.SLEEFPirates]]
+deps = ["IfElse", "Static", "VectorizationBase"]
+git-tree-sha1 = "3aac6d68c5e57449f5b9b865c9ba50ac2970c4cf"
+uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa"
+version = "0.6.42"
+
+[[deps.SciMLBase]]
+deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"]
+git-tree-sha1 = "d15c65e25615272e1b1c5edb1d307484c7942824"
+uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
+version = "2.31.0"
+
+ [deps.SciMLBase.extensions]
+ SciMLBaseChainRulesCoreExt = "ChainRulesCore"
+ SciMLBaseMakieExt = "Makie"
+ SciMLBasePartialFunctionsExt = "PartialFunctions"
+ SciMLBasePyCallExt = "PyCall"
+ SciMLBasePythonCallExt = "PythonCall"
+ SciMLBaseRCallExt = "RCall"
+ SciMLBaseZygoteExt = "Zygote"
+
+ [deps.SciMLBase.weakdeps]
+ ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2"
+ ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
+ Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
+ PartialFunctions = "570af359-4316-4cb7-8c74-252c00c2016b"
+ PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0"
+ PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d"
+ RCall = "6f49c342-dc21-5d91-9882-a32aef131414"
+ Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
+
+[[deps.SciMLOperators]]
+deps = ["ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools", "Setfield", "SparseArrays", "StaticArraysCore"]
+git-tree-sha1 = "10499f619ef6e890f3f4a38914481cc868689cd5"
+uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961"
+version = "0.3.8"
+
+[[deps.SciMLStructures]]
+git-tree-sha1 = "5833c10ce83d690c124beedfe5f621b50b02ba4d"
+uuid = "53ae85a6-f571-4167-b2af-e1d143709226"
+version = "1.1.0"
+
+[[deps.Scratch]]
+deps = ["Dates"]
+git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386"
+uuid = "6c6a2e73-6563-6170-7368-637461726353"
+version = "1.2.1"
+
+[[deps.Serialization]]
+uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
+
+[[deps.Setfield]]
+deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"]
+git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac"
+uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46"
+version = "1.1.1"
+
+[[deps.SharedArrays]]
+deps = ["Distributed", "Mmap", "Random", "Serialization"]
+uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383"
+
+[[deps.Showoff]]
+deps = ["Dates", "Grisu"]
+git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de"
+uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f"
+version = "1.0.3"
+
+[[deps.SimpleBufferStream]]
+git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1"
+uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7"
+version = "1.1.0"
+
+[[deps.SimpleNonlinearSolve]]
+deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "DiffEqBase", "DiffResults", "FastClosures", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "MaybeInplace", "PrecompileTools", "Reexport", "SciMLBase", "StaticArraysCore"]
+git-tree-sha1 = "a535ae5083708f59e75d5bb3042c36d1be9bc778"
+uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7"
+version = "1.6.0"
+
+ [deps.SimpleNonlinearSolve.extensions]
+ SimpleNonlinearSolveChainRulesCoreExt = "ChainRulesCore"
+ SimpleNonlinearSolvePolyesterForwardDiffExt = "PolyesterForwardDiff"
+ SimpleNonlinearSolveReverseDiffExt = "ReverseDiff"
+ SimpleNonlinearSolveStaticArraysExt = "StaticArrays"
+ SimpleNonlinearSolveTrackerExt = "Tracker"
+ SimpleNonlinearSolveZygoteExt = "Zygote"
+
+ [deps.SimpleNonlinearSolve.weakdeps]
+ ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
+ PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b"
+ ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
+ StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
+ Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"
+ Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
+
+[[deps.SimpleTraits]]
+deps = ["InteractiveUtils", "MacroTools"]
+git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231"
+uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d"
+version = "0.9.4"
+
+[[deps.SimpleUnPack]]
+git-tree-sha1 = "58e6353e72cde29b90a69527e56df1b5c3d8c437"
+uuid = "ce78b400-467f-4804-87d8-8f486da07d0a"
+version = "1.1.0"
+
+[[deps.Sockets]]
+uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
+
+[[deps.SortingAlgorithms]]
+deps = ["DataStructures"]
+git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085"
+uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c"
+version = "1.2.1"
+
+[[deps.SparseArrays]]
+deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"]
+uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
+version = "1.10.0"
+
+[[deps.SparseDiffTools]]
+deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Random", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Tricks", "UnPack", "VertexSafeGraphs"]
+git-tree-sha1 = "a616ac46c38da60ac05cecf52064d44732edd05e"
+uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804"
+version = "2.17.0"
+
+ [deps.SparseDiffTools.extensions]
+ SparseDiffToolsEnzymeExt = "Enzyme"
+ SparseDiffToolsPolyesterExt = "Polyester"
+ SparseDiffToolsPolyesterForwardDiffExt = "PolyesterForwardDiff"
+ SparseDiffToolsSymbolicsExt = "Symbolics"
+ SparseDiffToolsZygoteExt = "Zygote"
+
+ [deps.SparseDiffTools.weakdeps]
+ Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9"
+ Polyester = "f517fe37-dbe3-4b94-8317-1923a5111588"
+ PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b"
+ Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7"
+ Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
+
+[[deps.Sparspak]]
+deps = ["Libdl", "LinearAlgebra", "Logging", "OffsetArrays", "Printf", "SparseArrays", "Test"]
+git-tree-sha1 = "342cf4b449c299d8d1ceaf00b7a49f4fbc7940e7"
+uuid = "e56a9233-b9d6-4f03-8d0f-1825330902ac"
+version = "0.3.9"
+
+[[deps.SpecialFunctions]]
+deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"]
+git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d"
+uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
+version = "2.3.1"
+weakdeps = ["ChainRulesCore"]
+
+ [deps.SpecialFunctions.extensions]
+ SpecialFunctionsChainRulesCoreExt = "ChainRulesCore"
+
+[[deps.Static]]
+deps = ["IfElse"]
+git-tree-sha1 = "d2fdac9ff3906e27f7a618d47b676941baa6c80c"
+uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3"
+version = "0.8.10"
+
+[[deps.StaticArrayInterface]]
+deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Requires", "SparseArrays", "Static", "SuiteSparse"]
+git-tree-sha1 = "5d66818a39bb04bf328e92bc933ec5b4ee88e436"
+uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718"
+version = "1.5.0"
+weakdeps = ["OffsetArrays", "StaticArrays"]
+
+ [deps.StaticArrayInterface.extensions]
+ StaticArrayInterfaceOffsetArraysExt = "OffsetArrays"
+ StaticArrayInterfaceStaticArraysExt = "StaticArrays"
+
+[[deps.StaticArrays]]
+deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"]
+git-tree-sha1 = "bf074c045d3d5ffd956fa0a461da38a44685d6b2"
+uuid = "90137ffa-7385-5640-81b9-e52037218182"
+version = "1.9.3"
+weakdeps = ["ChainRulesCore", "Statistics"]
+
+ [deps.StaticArrays.extensions]
+ StaticArraysChainRulesCoreExt = "ChainRulesCore"
+ StaticArraysStatisticsExt = "Statistics"
+
+[[deps.StaticArraysCore]]
+git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d"
+uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
+version = "1.4.2"
+
+[[deps.Statistics]]
+deps = ["LinearAlgebra", "SparseArrays"]
+uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
+version = "1.10.0"
+
+[[deps.StatsAPI]]
+deps = ["LinearAlgebra"]
+git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed"
+uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0"
+version = "1.7.0"
+
+[[deps.StatsBase]]
+deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"]
+git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf"
+uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
+version = "0.34.2"
+
+[[deps.StatsFuns]]
+deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"]
+git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a"
+uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c"
+version = "1.3.1"
+
+ [deps.StatsFuns.extensions]
+ StatsFunsChainRulesCoreExt = "ChainRulesCore"
+ StatsFunsInverseFunctionsExt = "InverseFunctions"
+
+ [deps.StatsFuns.weakdeps]
+ ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
+ InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112"
+
+[[deps.SteadyStateDiffEq]]
+deps = ["DiffEqBase", "DiffEqCallbacks", "LinearAlgebra", "NLsolve", "Reexport", "SciMLBase"]
+git-tree-sha1 = "2ca69f4be3294e4cd987d83d6019037d420d9fc1"
+uuid = "9672c7b4-1e72-59bd-8a11-6ac3964bc41f"
+version = "1.16.1"
+
+[[deps.StochasticDiffEq]]
+deps = ["Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DiffEqNoiseProcess", "DocStringExtensions", "FiniteDiff", "ForwardDiff", "JumpProcesses", "LevyArea", "LinearAlgebra", "Logging", "MuladdMacro", "NLsolve", "OrdinaryDiffEq", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SparseArrays", "SparseDiffTools", "StaticArrays", "UnPack"]
+git-tree-sha1 = "97e5d0b7e5ec2e68eec6626af97c59e9f6b6c3d0"
+uuid = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0"
+version = "6.65.1"
+
+[[deps.StrideArraysCore]]
+deps = ["ArrayInterface", "CloseOpenIntervals", "IfElse", "LayoutPointers", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface", "ThreadingUtilities"]
+git-tree-sha1 = "d6415f66f3d89c615929af907fdc6a3e17af0d8c"
+uuid = "7792a7ef-975c-4747-a70f-980b88e8d1da"
+version = "0.5.2"
+
+[[deps.Strided]]
+deps = ["LinearAlgebra", "StridedViews", "TupleTools"]
+git-tree-sha1 = "40c69be0e1b72ee2f42923b7d1ff13e0b04e675c"
+uuid = "5e0ebb24-38b0-5f93-81fe-25c709ecae67"
+version = "2.0.4"
+
+[[deps.StridedViews]]
+deps = ["LinearAlgebra", "PackageExtensionCompat"]
+git-tree-sha1 = "5b765c4e401693ab08981989f74a36a010aa1d8e"
+uuid = "4db3bf67-4bd7-4b4e-b153-31dc3fb37143"
+version = "0.2.2"
+
+ [deps.StridedViews.extensions]
+ StridedViewsCUDAExt = "CUDA"
+
+ [deps.StridedViews.weakdeps]
+ CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
+
+[[deps.SuiteSparse]]
+deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"]
+uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9"
+
+[[deps.SuiteSparse_jll]]
+deps = ["Artifacts", "Libdl", "libblastrampoline_jll"]
+uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c"
+version = "7.2.1+1"
+
+[[deps.SymbolicIndexingInterface]]
+deps = ["MacroTools", "RuntimeGeneratedFunctions"]
+git-tree-sha1 = "f7b1fc9fc2bc938436b7684c243be7d317919056"
+uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5"
+version = "0.3.11"
+
+[[deps.SymbolicUtils]]
+deps = ["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TimerOutputs", "Unityper"]
+git-tree-sha1 = "669e43e90df46fcee4aa859b587da7a7948272ac"
+uuid = "d1185830-fcd6-423d-90d6-eec64667417b"
+version = "1.5.1"
+
+[[deps.Symbolics]]
+deps = ["ArrayInterface", "Bijections", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "ForwardDiff", "IfElse", "LaTeXStrings", "LambertW", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "RecipesBase", "Reexport", "Requires", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "SymbolicUtils"]
+git-tree-sha1 = "d8b8dd08b7ec073cc7dc64cfa247fa0c4b5d5297"
+uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7"
+version = "5.25.2"
+
+ [deps.Symbolics.extensions]
+ SymbolicsGroebnerExt = "Groebner"
+ SymbolicsLuxCoreExt = "LuxCore"
+ SymbolicsPreallocationToolsExt = "PreallocationTools"
+ SymbolicsSymPyExt = "SymPy"
+
+ [deps.Symbolics.weakdeps]
+ Groebner = "0b43b601-686d-58a3-8a1c-6623616c7cd4"
+ LuxCore = "bb33d45b-7691-41d6-9220-0943567d0623"
+ PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46"
+ SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6"
+
+[[deps.TOML]]
+deps = ["Dates"]
+uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
+version = "1.0.3"
+
+[[deps.TableTraits]]
+deps = ["IteratorInterfaceExtensions"]
+git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39"
+uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c"
+version = "1.0.1"
+
+[[deps.Tables]]
+deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"]
+git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d"
+uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
+version = "1.11.1"
+
+[[deps.Tar]]
+deps = ["ArgTools", "SHA"]
+uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e"
+version = "1.10.0"
+
+[[deps.TensorCore]]
+deps = ["LinearAlgebra"]
+git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6"
+uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50"
+version = "0.1.1"
+
+[[deps.Test]]
+deps = ["InteractiveUtils", "Logging", "Random", "Serialization"]
+uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
+
+[[deps.ThreadingUtilities]]
+deps = ["ManualMemory"]
+git-tree-sha1 = "eda08f7e9818eb53661b3deb74e3159460dfbc27"
+uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5"
+version = "0.5.2"
+
+[[deps.TimerOutputs]]
+deps = ["ExprTools", "Printf"]
+git-tree-sha1 = "f548a9e9c490030e545f72074a41edfd0e5bcdd7"
+uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
+version = "0.5.23"
+
+[[deps.Tokenize]]
+git-tree-sha1 = "5b5a892ba7704c0977013bd0f9c30f5d962181e0"
+uuid = "0796e94c-ce3b-5d07-9a54-7f471281c624"
+version = "0.5.28"
+
+[[deps.TranscodingStreams]]
+git-tree-sha1 = "71509f04d045ec714c4748c785a59045c3736349"
+uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa"
+version = "0.10.7"
+weakdeps = ["Random", "Test"]
+
+ [deps.TranscodingStreams.extensions]
+ TestExt = ["Test", "Random"]
+
+[[deps.TriangularSolve]]
+deps = ["CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "LoopVectorization", "Polyester", "Static", "VectorizationBase"]
+git-tree-sha1 = "7ee8ed8904e7dd5d31bb46294ef5644d9e2e44e4"
+uuid = "d5829a12-d9aa-46ab-831f-fb7c9ab06edf"
+version = "0.1.21"
+
+[[deps.Tricks]]
+git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f"
+uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775"
+version = "0.1.8"
+
+[[deps.TruncatedStacktraces]]
+deps = ["InteractiveUtils", "MacroTools", "Preferences"]
+git-tree-sha1 = "ea3e54c2bdde39062abf5a9758a23735558705e1"
+uuid = "781d530d-4396-4725-bb49-402e4bee1e77"
+version = "1.4.0"
+
+[[deps.TupleTools]]
+git-tree-sha1 = "41d61b1c545b06279871ef1a4b5fcb2cac2191cd"
+uuid = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6"
+version = "1.5.0"
+
+[[deps.URIs]]
+git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b"
+uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4"
+version = "1.5.1"
+
+[[deps.UUIDs]]
+deps = ["Random", "SHA"]
+uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
+
+[[deps.UnPack]]
+git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b"
+uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed"
+version = "1.0.2"
+
+[[deps.Unicode]]
+uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
+
+[[deps.UnicodeFun]]
+deps = ["REPL"]
+git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf"
+uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1"
+version = "0.4.1"
+
+[[deps.Unitful]]
+deps = ["Dates", "LinearAlgebra", "Random"]
+git-tree-sha1 = "3c793be6df9dd77a0cf49d80984ef9ff996948fa"
+uuid = "1986cc42-f94f-5a68-af5c-568840ba703d"
+version = "1.19.0"
+
+ [deps.Unitful.extensions]
+ ConstructionBaseUnitfulExt = "ConstructionBase"
+ InverseFunctionsUnitfulExt = "InverseFunctions"
+
+ [deps.Unitful.weakdeps]
+ ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
+ InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112"
+
+[[deps.UnitfulLatexify]]
+deps = ["LaTeXStrings", "Latexify", "Unitful"]
+git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd"
+uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728"
+version = "1.6.3"
+
+[[deps.Unityper]]
+deps = ["ConstructionBase"]
+git-tree-sha1 = "25008b734a03736c41e2a7dc314ecb95bd6bbdb0"
+uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415"
+version = "0.1.6"
+
+[[deps.UnsafeArrays]]
+git-tree-sha1 = "e7f1c67ba99ac6df440de191fa4d5cbfcbdddcd1"
+uuid = "c4a57d5a-5b31-53a6-b365-19f8c011fbd6"
+version = "1.0.5"
+
+[[deps.Unzip]]
+git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78"
+uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d"
+version = "0.2.0"
+
+[[deps.VectorizationBase]]
+deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"]
+git-tree-sha1 = "7209df901e6ed7489fe9b7aa3e46fb788e15db85"
+uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f"
+version = "0.21.65"
+
+[[deps.VertexSafeGraphs]]
+deps = ["Graphs"]
+git-tree-sha1 = "8351f8d73d7e880bfc042a8b6922684ebeafb35c"
+uuid = "19fa3120-7c27-5ec5-8db8-b0b0aa330d6f"
+version = "0.2.0"
+
+[[deps.Vulkan_Loader_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"]
+git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59"
+uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c"
+version = "1.3.243+0"
+
+[[deps.Wayland_jll]]
+deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"]
+git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703"
+uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89"
+version = "1.21.0+1"
+
+[[deps.Wayland_protocols_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "93f43ab61b16ddfb2fd3bb13b3ce241cafb0e6c9"
+uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91"
+version = "1.31.0+0"
+
+[[deps.WignerSymbols]]
+deps = ["HalfIntegers", "LRUCache", "Primes", "RationalRoots"]
+git-tree-sha1 = "960e5f708871c1d9a28a7f1dbcaf4e0ee34ee960"
+uuid = "9f57e263-0b3d-5e2e-b1be-24f2bb48858b"
+version = "2.0.0"
+
+[[deps.XML2_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"]
+git-tree-sha1 = "532e22cf7be8462035d092ff21fada7527e2c488"
+uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a"
+version = "2.12.6+0"
+
+[[deps.XSLT_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"]
+git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a"
+uuid = "aed1982a-8fda-507f-9586-7b0439959a61"
+version = "1.1.34+0"
+
+[[deps.XZ_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "ac88fb95ae6447c8dda6a5503f3bafd496ae8632"
+uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800"
+version = "5.4.6+0"
+
+[[deps.Xorg_libICE_jll]]
+deps = ["Libdl", "Pkg"]
+git-tree-sha1 = "e5becd4411063bdcac16be8b66fc2f9f6f1e8fe5"
+uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c"
+version = "1.0.10+1"
+
+[[deps.Xorg_libSM_jll]]
+deps = ["Libdl", "Pkg", "Xorg_libICE_jll"]
+git-tree-sha1 = "4a9d9e4c180e1e8119b5ffc224a7b59d3a7f7e18"
+uuid = "c834827a-8449-5923-a945-d239c165b7dd"
+version = "1.2.3+0"
+
+[[deps.Xorg_libX11_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"]
+git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495"
+uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc"
+version = "1.8.6+0"
+
+[[deps.Xorg_libXau_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8"
+uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec"
+version = "1.0.11+0"
+
+[[deps.Xorg_libXcursor_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"]
+git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd"
+uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724"
+version = "1.2.0+4"
+
+[[deps.Xorg_libXdmcp_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7"
+uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05"
+version = "1.1.4+0"
+
+[[deps.Xorg_libXext_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"]
+git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3"
+uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3"
+version = "1.3.4+4"
+
+[[deps.Xorg_libXfixes_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"]
+git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4"
+uuid = "d091e8ba-531a-589c-9de9-94069b037ed8"
+version = "5.0.3+4"
+
+[[deps.Xorg_libXi_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"]
+git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246"
+uuid = "a51aa0fd-4e3c-5386-b890-e753decda492"
+version = "1.7.10+4"
+
+[[deps.Xorg_libXinerama_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"]
+git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123"
+uuid = "d1454406-59df-5ea1-beac-c340f2130bc3"
+version = "1.1.4+4"
+
+[[deps.Xorg_libXrandr_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"]
+git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631"
+uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484"
+version = "1.5.2+4"
+
+[[deps.Xorg_libXrender_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"]
+git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96"
+uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa"
+version = "0.9.10+4"
+
+[[deps.Xorg_libpthread_stubs_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9"
+uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74"
+version = "0.1.1+0"
+
+[[deps.Xorg_libxcb_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"]
+git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d"
+uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b"
+version = "1.15.0+0"
+
+[[deps.Xorg_libxkbfile_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"]
+git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4"
+uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a"
+version = "1.1.2+0"
+
+[[deps.Xorg_xcb_util_cursor_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"]
+git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd"
+uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43"
+version = "0.1.4+0"
+
+[[deps.Xorg_xcb_util_image_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"]
+git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97"
+uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b"
+version = "0.4.0+1"
+
+[[deps.Xorg_xcb_util_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"]
+git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1"
+uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5"
+version = "0.4.0+1"
+
+[[deps.Xorg_xcb_util_keysyms_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"]
+git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00"
+uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7"
+version = "0.4.0+1"
+
+[[deps.Xorg_xcb_util_renderutil_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"]
+git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e"
+uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e"
+version = "0.3.9+1"
+
+[[deps.Xorg_xcb_util_wm_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"]
+git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67"
+uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361"
+version = "0.4.1+1"
+
+[[deps.Xorg_xkbcomp_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"]
+git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb"
+uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4"
+version = "1.4.6+0"
+
+[[deps.Xorg_xkeyboard_config_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"]
+git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3"
+uuid = "33bec58e-1273-512f-9401-5d533626f822"
+version = "2.39.0+0"
+
+[[deps.Xorg_xtrans_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77"
+uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10"
+version = "1.5.0+0"
+
+[[deps.Zlib_jll]]
+deps = ["Libdl"]
+uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
+version = "1.2.13+1"
+
+[[deps.Zstd_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "e678132f07ddb5bfa46857f0d7620fb9be675d3b"
+uuid = "3161d3a3-bdf6-5164-811a-617609db77b4"
+version = "1.5.6+0"
+
+[[deps.eudev_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"]
+git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba"
+uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06"
+version = "3.2.9+0"
+
+[[deps.fzf_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "a68c9655fbe6dfcab3d972808f1aafec151ce3f8"
+uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09"
+version = "0.43.0+0"
+
+[[deps.gperf_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033"
+uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70"
+version = "3.1.1+0"
+
+[[deps.libaom_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4"
+uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b"
+version = "3.4.0+0"
+
+[[deps.libass_jll]]
+deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"]
+git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47"
+uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0"
+version = "0.15.1+0"
+
+[[deps.libblastrampoline_jll]]
+deps = ["Artifacts", "Libdl"]
+uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
+version = "5.8.0+1"
+
+[[deps.libevdev_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22"
+uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc"
+version = "1.11.0+0"
+
+[[deps.libfdk_aac_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55"
+uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280"
+version = "2.0.2+0"
+
+[[deps.libinput_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"]
+git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce"
+uuid = "36db933b-70db-51c0-b978-0f229ee0e533"
+version = "1.18.0+0"
+
+[[deps.libpng_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"]
+git-tree-sha1 = "d7015d2e18a5fd9a4f47de711837e980519781a4"
+uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f"
+version = "1.6.43+1"
+
+[[deps.libvorbis_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"]
+git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c"
+uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a"
+version = "1.3.7+1"
+
+[[deps.mtdev_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11"
+uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e"
+version = "1.1.6+0"
+
+[[deps.nghttp2_jll]]
+deps = ["Artifacts", "Libdl"]
+uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
+version = "1.52.0+1"
+
+[[deps.p7zip_jll]]
+deps = ["Artifacts", "Libdl"]
+uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
+version = "17.4.0+2"
+
+[[deps.x264_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2"
+uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a"
+version = "2021.5.5+0"
+
+[[deps.x265_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9"
+uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76"
+version = "3.5.0+0"
+
+[[deps.xkbcommon_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"]
+git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37"
+uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd"
+version = "1.4.1+1"
diff --git a/docs/Project.toml b/docs/Project.toml
index 03c0539e..65a42a6a 100644
--- a/docs/Project.toml
+++ b/docs/Project.toml
@@ -14,9 +14,9 @@ Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7"
[compat]
Documenter = "1"
-Latexify = "0.14, 0.15"
+Latexify = "0.13, 0.14, 0.15, 0.16"
MacroTools = "0.5"
-ModelingToolkit = "8"
+ModelingToolkit = "9"
OrdinaryDiffEq = "6"
Plots = "1"
QuantumOptics = "1"
diff --git a/docs/src/correlation.md b/docs/src/correlation.md
index 386fefeb..afd2c598 100644
--- a/docs/src/correlation.md
+++ b/docs/src/correlation.md
@@ -54,7 +54,7 @@ using ModelingToolkit, OrdinaryDiffEq
@named sys = ODESystem(me)
n0 = 20.0 # Initial number of photons in the cavity
u0 = [n0]
-p0 = (1,1)
+p0 = (ωc => 1, κ => 1)
prob = ODEProblem(sys,u0,(0.0,2.0),p0) # End time not in steady state
sol = solve(prob,RK4())
nothing # hide
@@ -70,7 +70,7 @@ nothing # hide
Finally, lets check our numerical solution against the analytic one obtained above:
```@example correlation
using Test # hide
-g_analytic(τ) = @. sol.u[end] * exp((im*p0[1]-0.5p0[2])*τ)
+g_analytic(τ) = @. sol.u[end] * exp((im*p0[1][2]-0.5p0[2][2])*τ)
@test isapprox(sol_c.u, g_analytic(sol_c.t), rtol=1e-4)
```
@@ -128,7 +128,7 @@ nothing # hide
The above performs the Laplace transform on a symbolic level (i.e. it derives the matrix ``A``). To actually compute the spectrum, we can do
```@example correlation
-s = S(ω,sol.u[end],p0)
+s = S(ω,sol.u[end],getindex.(p0, 2))
nothing # hide
```
diff --git a/docs/src/examples/cavity_antiresonance_indexed.md b/docs/src/examples/cavity_antiresonance_indexed.md
index 29e83138..bd929ea9 100644
--- a/docs/src/examples/cavity_antiresonance_indexed.md
+++ b/docs/src/examples/cavity_antiresonance_indexed.md
@@ -146,8 +146,6 @@ n_ls = zeros(length(Δ_ls))
# definitions for fast replacement of numerical parameter
prob = ODEProblem(sys,u0,(0.0, 20Γ_), ps.=>p0)
prob_ss = SteadyStateProblem(prob)
-p_sys = parameters(sys)
-p_idx = [findfirst(isequal(p), ps) for p∈p_sys]
for i=1:length(Δ_ls)
Δc_i = Δ_ls[i]
@@ -155,9 +153,9 @@ for i=1:length(Δ_ls)
p0_ = [Δc_i; η_; Δa_i; κ_; gi_; Γij_; Ωij_]
# create new SteadyStateProblem
- prob_ss_ = remake(prob_ss, p=p0_[p_idx])
- sol_ss = solve(prob_ss_, DynamicSS(Tsit5(); abstol=1e-8, reltol=1e-8),
- reltol=1e-14, abstol=1e-14, maxiters=5e7)
+ prob_ss_ = remake(prob_ss, p=(ps.=>p0_))
+ sol_ss = solve(prob_ss_, DynamicSS(Tsit5(); abstol=1e-6, reltol=1e-6),
+ reltol=1e-12, abstol=1e-12, maxiters=1e7)
n_ls[i] = abs2(sol_ss[a])
end
nothing #hide
diff --git a/docs/src/examples/excitation-transport-chain.md b/docs/src/examples/excitation-transport-chain.md
index 15c55bcc..8d693357 100644
--- a/docs/src/examples/excitation-transport-chain.md
+++ b/docs/src/examples/excitation-transport-chain.md
@@ -111,12 +111,8 @@ function prob_func(prob,i,repeat)
# Define the new set of parameters
x_ = x0 .+ s.*randn(N)
p_ = [γ => 1.0; Δ => 0.0; Ω => 2.0; J0 => 1.25; x .=> x_;]
-
- # Convert to numeric values only
- pnum = ModelingToolkit.varmap_to_vars(p_,parameters(sys))
-
# Return new ODEProblem
- return remake(prob, p=pnum)
+ return remake(prob, p=p_)
end
trajectories = 50
@@ -133,7 +129,7 @@ tspan = range(0.0, sol.t[end], length=101)
pops_avg = zeros(length(tspan), N)
for i=1:N, j=1:trajectories
sol_ = sim.u[j].(tspan) # interpolate solution
- p_idx = findfirst(isequal(average(σ(:e,:e,i))), states(eqs))
+ p_idx = findfirst(isequal(average(σ(:e,:e,i))), unknowns(eqs))
pop = [u[p_idx] for u ∈ sol_]
@. pops_avg[:,i] += pop / trajectories
end
diff --git a/docs/src/examples/filter-cavity_indexed.md b/docs/src/examples/filter-cavity_indexed.md
index 2d505dba..d09e2ef0 100644
--- a/docs/src/examples/filter-cavity_indexed.md
+++ b/docs/src/examples/filter-cavity_indexed.md
@@ -17,7 +17,7 @@ We start by loading the packages.
```@example filter_cavity_indexed
using QuantumCumulants
-using OrdinaryDiffEq, SteadyStateDiffEq, ModelingToolkit
+using OrdinaryDiffEq, ModelingToolkit
using Plots
```
@@ -42,6 +42,7 @@ j = Index(h,:j,N,ha)
@qnumbers a::Destroy(h,1)
b(k) = IndexedOperator(Destroy(h,:b,2), k)
σ(α,β,k) = IndexedOperator(Transition(h,:σ,α,β,3), k)
+nothing # hide
```
We define the Hamiltonian using symbolic sums and define the individual dissipative processes. For an indexed jump operator the (symbolic) sum is build in the Liouvillian, in this case corresponding to individual decay processes.
diff --git a/docs/src/examples/jupyter_notebooks/.ipynb_checkpoints/cavity_antiresonance_indexed-checkpoint.ipynb b/docs/src/examples/jupyter_notebooks/.ipynb_checkpoints/cavity_antiresonance_indexed-checkpoint.ipynb
deleted file mode 100644
index 570e2cdb..00000000
--- a/docs/src/examples/jupyter_notebooks/.ipynb_checkpoints/cavity_antiresonance_indexed-checkpoint.ipynb
+++ /dev/null
@@ -1,285 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Cavity Antiresonance"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "In this example we investigate a system of $N$ closely spaced quantum emitters inside a coherently driven single mode cavity. The model is descriped in [D. Plankensteiner, et. al., Phys. Rev. Lett. 119, 093601 (2017)](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.119.093601).\n",
- "The Hamiltonian of this system is composed of three parts $H = H_c + H_a + H_{\\mathrm{int}}$, the driven cavity $H_c$, the dipole-dipole interacting atoms $H_a$ and the atom-cavity interaction $H_\\mathrm{int}$:"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\\begin{align}\n",
- "H_\\mathrm{c} &= \\hbar \\Delta_c a^\\dagger a + \\hbar \\eta (a^\\dagger + a) \\\\\n",
- "&\\\\\n",
- "H_a &= \\hbar \\Delta_a \\sum\\limits_{j} \\sigma_j^{22} + \\hbar \\sum\\limits_{i \\neq j} \\Omega_{ij} \\sigma_i^{21} \\sigma_j^{12}\n",
- "&\\\\\n",
- "H_\\mathrm{int} &= \\hbar \\sum\\limits_{j} g_j (a^\\dagger \\sigma_j^{12} + a \\sigma_j^{21})\n",
- "\\end{align}"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Additionally the system features two decay channels, the lossy cavity with photon decay rate $\\kappa$ and collective atomic emission described by the decay-rate matrix $\\Gamma_{ij}$.\n",
- "\n",
- "We start by loading the packages."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "using QuantumCumulants\n",
- "using OrdinaryDiffEq, SteadyStateDiffEq, ModelingToolkit\n",
- "using Plots"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The Hilbert space for this system is given by one cavity mode and $N$ two-level atoms. We use here symbolic indices, sums and double sums to define the system. \n",
- "The parameters $g_j, \\, \\Gamma_{ij}$ and $\\Omega_{ij}$ are defined as indexed variables of atom $i$ and $j$. We will describe the system in first order mean-field."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Hilbert space\n",
- "hc = FockSpace(:cavity)\n",
- "ha = NLevelSpace(Symbol(:atom),2)\n",
- "h = hc ⊗ ha\n",
- "\n",
- "# Parameter\n",
- "@cnumbers N Δc η Δa κ\n",
- "g(i) = IndexedVariable(:g,i)\n",
- "Γ(i,j) = IndexedVariable(:Γ,i,j)\n",
- "Ω(i,j) = IndexedVariable(:Ω,i,j;identical=false) \n",
- "\n",
- "# Indices\n",
- "i = Index(h,:i,N,ha)\n",
- "j = Index(h,:j,N,ha)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The kwarg ’identical=false’ for the double indexed variable specifies that $\\Omega_{ij} = 0$ for $i = j$.\n",
- "Now we create the operators on the composite Hilbert space using the $\\texttt{IndexedOperator}$ constructor, which assigns each $\\texttt{Transition}$ operator an $\\texttt{Index}$."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "@qnumbers a::Destroy(h)\n",
- "σ(x,y,k) = IndexedOperator(Transition(h,:σ,x,y),k)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We define the Hamiltonian and Liouvillian. For the collective atomic decay we write the corresponding jump process with a double indexed variable $R_{ij}$ and an indexed jump operator $J_j$, such that an operator average $\\langle \\mathcal{O} \\rangle$ follows the equation "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\\begin{equation}\n",
- "\\langle \\dot{\\mathcal{O}} \\rangle = \\sum_{ij} R_{ij} \\left( \\langle J_i^\\dagger \\mathcal{O} J_j \\rangle - \\frac{1}{2} \\langle J_i^\\dagger J_j \\mathcal{O} \\rangle - \\frac{1}{2} \\langle \\mathcal{O} J_i^\\dagger J_j \\rangle \\right).\n",
- "\\end{equation}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Hamiltonian\n",
- "Hc = Δc*a'a + η*(a' + a)\n",
- "Ha = Δa*Σ(σ(2,2,i),i) + Σ(Ω(i,j)*σ(2,1,i)*σ(1,2,j),j,i)\n",
- "Hi = Σ(g(i)*(a'*σ(1,2,i) + a*σ(2,1,i)),i)\n",
- "H = Hc + Ha + Hi\n",
- "\n",
- "# Jump operators & and rates\n",
- "J = [a, σ(1,2,i)] \n",
- "rates = [κ, Γ(i,j)]\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We derive the system of equations in first order mean-field."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "eqs = meanfield(a,H,J;rates=rates,order=1)\n",
- "complete!(eqs)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "To create the equations for a specific number of atoms we use the function $\\texttt{evaluate}$."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "N_ = 2\n",
- "eqs_ = evaluate(eqs;limits=(N=>N_))\n",
- "@named sys = ODESystem(eqs_)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Finally we need to define the initial state of the system and the numerical parameters. In the end we want to obtain the transmission rate $T$ of our system. For this purpose we calculate the steady state photon number in the cavity $|\\langle a \\rangle|^2$ for different laser frequencies."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "u0 = zeros(ComplexF64, length(eqs_))\n",
- "# parameter\n",
- "Γ_ = 1.0\n",
- "d = 2π*0.08 #0.08λ\n",
- "θ = π/2\n",
- "\n",
- "Ωij(i,j) = i==j ? 0 : Γ_*(-3/4)*( (1-(cos(θ))^2)*cos(d)/d-(1-3*(cos(θ))^2)*(sin(d)/(d^2)+(cos(d)/(d^3))) )\n",
- "Γij(i,j) = i==j ? Γ_ : Γ_*(3/2)*( (1-(cos(θ))^2)*sin(d)/d+(1-3*(cos(θ))^2)*((cos(d)/(d^2))-(sin(d)/(d^3))))\n",
- "\n",
- "g_ = 2Γ_\n",
- "κ_ = 20Γ_\n",
- "Δa_ = 0Γ_\n",
- "Δc_ = 0Γ_\n",
- "η_ = κ_/100\n",
- "\n",
- "gi_ls = [g(i) for i=1:N_]\n",
- "Γij_ls = [Γ(i,j) for i = 1:N_ for j=1:N_]\n",
- "Ωij_ls = [Ω(i,j) for i = 1:N_ for j=1:N_ if i≠j]\n",
- "\n",
- "# list of symbolic indexed parameters \n",
- "gi_ = [g_*(-1)^i for i=1:N_]\n",
- "Γij_ = [Γij(i,j) for i = 1:N_ for j=1:N_]\n",
- "Ωij_ = [Ωij(i,j) for i = 1:N_ for j=1:N_ if i≠j]\n",
- "\n",
- "ps = [Δc; η; Δa; κ; gi_ls; Γij_ls; Ωij_ls]\n",
- "p0 = [Δc_; η_; Δa_; κ_; gi_; Γij_; Ωij_]\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "Δ_ls = [-10:0.05:10;]Γ_\n",
- "n_ls = zeros(length(Δ_ls))\n",
- "\n",
- "# definitions for fast replacement of numerical parameter \n",
- "prob = ODEProblem(sys,u0,(0.0, 20Γ_), ps.=>p0)\n",
- "prob_ss = SteadyStateProblem(prob)\n",
- "p_sys = parameters(sys)\n",
- "p_idx = [findfirst(isequal(p), ps) for p∈p_sys]\n",
- "\n",
- "for i=1:length(Δ_ls)\n",
- " Δc_ = Δ_ls[i]\n",
- " Δa_ = Δc_ + Ωij(1,2) # cavity on resonace with the shifted collective emitter\n",
- " p0_ = [Δc_; η_; Δa_; κ_; gi_; Γij_; Ωij_]\n",
- " \n",
- " # create new SteadyStateProblem\n",
- " prob_ss_ = remake(prob_ss, p=p0_[p_idx])\n",
- " sol_ss = solve(prob_ss_, DynamicSS(Tsit5(); abstol=1e-8, reltol=1e-8),\n",
- " reltol=1e-14, abstol=1e-14, maxiters=5e7)\n",
- " n_ls[i] = abs2(sol_ss[a])\n",
- "end"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The transmission rate $T$ with respect to the pump laser detuning is given by the relative steady state intra-cavity photon number $n(\\Delta)/n_\\mathrm{max}$. We qualitatively reproduce the antiresonance from [D. Plankensteiner, et. al., Phys. Rev. Lett. 119, 093601 (2017)](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.119.093601) for two atoms."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "T = n_ls ./ maximum(n_ls)\n",
- "plot(Δ_ls, T, xlabel=\"Δ/Γ\", ylabel=\"T\", legend=false)\n",
- "savefig(\"cavity_antiresonance_indexed.svg\") # hide"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "@webio": {
- "lastCommId": null,
- "lastKernelId": null
- },
- "kernelspec": {
- "display_name": "Julia 1.8.3",
- "language": "julia",
- "name": "julia-1.8"
- },
- "language_info": {
- "file_extension": ".jl",
- "mimetype": "application/julia",
- "name": "julia",
- "version": "1.8.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs/src/examples/jupyter_notebooks/.ipynb_checkpoints/filter-cavity_indexed-checkpoint.ipynb b/docs/src/examples/jupyter_notebooks/.ipynb_checkpoints/filter-cavity_indexed-checkpoint.ipynb
deleted file mode 100644
index d59067b9..00000000
--- a/docs/src/examples/jupyter_notebooks/.ipynb_checkpoints/filter-cavity_indexed-checkpoint.ipynb
+++ /dev/null
@@ -1,248 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Laser with Filter Cavities"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "An intuitive and straightforward approach to calculate the spectrum of a laser is to filter the emitted light. We can do this by coupling filter cavities with different detunings to the main cavity and observe the photon number in the 'filters', see for example [K. Debnath et al., Phys Rev A 98, 063837 (2018)](https://journals.aps.org/pra/abstract/10.1103/PhysRevA.98.063837).\n",
- "\n",
- "The main goal of this example is to combine two indexed Hilbert spaces, where one will be scaled and the other evaluated. The model is basically the same as for the [superradiant laser](https://qojulia.github.io/QuantumCumulants.jl/stable/examples/superradiant-laser/) example, but with the additional filter cavity terms. The Hamiltonian of this system is"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\\begin{equation}\n",
- "H = - \\Delta a^\\dagger a + g \\sum\\limits_{j=1}^{N} (a^\\dagger \\sigma^{12}_{j} + a \\sigma^{21}_{j}) - \\sum\\limits_{i=1}^{M} \\delta_i b_i^\\dagger b_i + g_f \\sum\\limits_{i=1}^{M} (a^\\dagger b_i + a b_i^\\dagger),\n",
- "\\end{equation}"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "where $\\delta_i$ is the detuning of the $i$-th filter cavity and $g_f$ the coupling with the normal cavity, their decay rate is $\\kappa_f$.\n",
- "\n",
- "We start by loading the packages."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "using QuantumCumulants\n",
- "using OrdinaryDiffEq, SteadyStateDiffEq, ModelingToolkit\n",
- "using Plots"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We create the parameters of the system including the $\\texttt{IndexedVariable}$ $\\delta_i$. For the atoms and filter cavities we only need one Hilbert space each. We define the indices for each Hilbert space and use them to create $\\texttt{IndexedOperators}$."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Paramters\n",
- "@cnumbers κ g gf κf R Γ Δ ν N M\n",
- "δ(i) = IndexedVariable(:δ, i)\n",
- "\n",
- "# Hilbertspace\n",
- "hc = FockSpace(:cavity)\n",
- "hf = FockSpace(:filter)\n",
- "ha = NLevelSpace(:atom, 2)\n",
- "h = hc ⊗ hf ⊗ ha\n",
- "\n",
- "# Indices and Operators\n",
- "i = Index(h,:i,M,hf)\n",
- "j = Index(h,:j,N,ha)\n",
- "\n",
- "@qnumbers a::Destroy(h,1)\n",
- "b(k) = IndexedOperator(Destroy(h,:b,2), k)\n",
- "σ(α,β,k) = IndexedOperator(Transition(h,:σ,α,β,3), k)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We define the Hamiltonian using symbolic sums and define the individual dissipative processes. For an indexed jump operator the (symbolic) sum is build in the Liouvillian, in this case corresponding to individual decay processes."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Hamiltonian\n",
- "H = Δ*Σ(σ(2,2,j),j) + Σ(δ(i)*b(i)'b(i),i) + Σ(δ(i)*b(i)'b(i),i) +\n",
- " gf*(Σ(a'*b(i) + a*b(i)',i)) + g*(Σ(a'*σ(1,2,j) + a*σ(2,1,j),j))\n",
- "\n",
- "# Jumps & rates\n",
- "J = [a, b(i), σ(1,2,j), σ(2,1,j), σ(2,2,j)]\n",
- "rates = [κ, κf, Γ, R, ν]\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We derive the equation for $\\langle a^\\dagger a \\rangle$ and complete the system automatically in second order. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "eqs = meanfield(a'a,H,J;rates=rates,order=2)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "eqs_c = complete(eqs);\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Now we assume that all atoms behave identically, but we want to obtain the equations for 20 different filter cavities. To this end we $\\texttt{scale}$ the Hilbert space of the atoms and $\\texttt{evaluate}$ the filter cavities. Specifying the Hilbert space is done with the kwarg $\\texttt{h}$, which can either be the specific Hilbert space or it's acts-on number. Evaluating the filer cavities requires a numeric upper bound for the used $\\texttt{Index}$, we provide this with a dictionary on the kwarg $\\texttt{limits}$."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "M_ = 20\n",
- "eqs_sc = scale(eqs_c;h=[ha]) #h=[3]\n",
- "eqs_eval = evaluate(eqs_sc; limits=Dict(M=>M_)) #h=[hf]\n",
- "println(\"Number of eqs.: $(length(eqs_eval))\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "To calculate the dynamic of the system we create a system of ordinary differential equations, which can be used by [DifferentialEquations.jl](https://diffeq.sciml.ai/stable/). Finally we need to define the numerical parameters and the initial value of the system."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "@named sys = ODESystem(eqs_eval)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Initial state\n",
- "u0 = zeros(ComplexF64, length(eqs_eval))\n",
- "\n",
- "# System parameters\n",
- "N_ = 200\n",
- "Γ_ = 1.0\n",
- "Δ_ = 0Γ_\n",
- "g_ = 1Γ_\n",
- "κ_ = 100Γ_\n",
- "R_ = 10Γ_\n",
- "ν_ = 1Γ_\n",
- "\n",
- "gf_ = 0.1Γ_\n",
- "κf_ = 0.1Γ_\n",
- "δ_ls = [0:1/M_:1-1/M_;]*10Γ_\n",
- "\n",
- "ps = [Γ, κ, g, κf, gf, R, [δ(i) for i=1:M_]..., Δ, ν, N]\n",
- "p0 = [Γ_, κ_, g_, κf_, gf_, R_, δ_ls..., Δ_, ν_, N_]\n",
- "\n",
- "prob = ODEProblem(sys,u0,(0.0, 10.0/κf_), ps.=>p0)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Solve the numeric problem\n",
- "sol = solve(prob, Tsit5(); abstol=1e-10, reltol=1e-10, maxiters=1e7)\n",
- "\n",
- "t = sol.t\n",
- "n = abs.(sol[a'a])\n",
- "n_b(i) = abs.(sol[b(i)'b(i)])\n",
- "n_f = [abs(sol[b(i)'b(i)][end]) for i=1:M_] ./ (abs(sol[b(1)'b(1)][end]))\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Plot results\n",
- "p1 = plot(t, n_b(1), alpha=0.5, ylabel=\"⟨bᵢ⁺bᵢ⟩\", legend=false)\n",
- "for i=2:M_\n",
- " plot!(t, n_b(i), alpha=0.5, legend=false)\n",
- "end\n",
- "#p1 = plot!(twinx(), t, n, xlabel=\"tΓ\", ylabel=\"⟨a⁺a⟩\", legend=false)\n",
- "\n",
- "p2 = plot([-reverse(δ_ls);δ_ls], [reverse(n_f);n_f], xlabel=\"δ/Γ\", ylabel=\"intensity\", legend=false)\n",
- "plot(p1, p2, layout=(1,2), size=(700,300))\n",
- "savefig(\"filter_cavities_indexed.svg\") # hide"
- ]
- }
- ],
- "metadata": {
- "@webio": {
- "lastCommId": null,
- "lastKernelId": null
- },
- "kernelspec": {
- "display_name": "Julia 1.8.3",
- "language": "julia",
- "name": "julia-1.8"
- },
- "language_info": {
- "file_extension": ".jl",
- "mimetype": "application/julia",
- "name": "julia",
- "version": "1.8.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs/src/examples/jupyter_notebooks/.ipynb_checkpoints/superradiant_laser_indexed-checkpoint.ipynb b/docs/src/examples/jupyter_notebooks/.ipynb_checkpoints/superradiant_laser_indexed-checkpoint.ipynb
deleted file mode 100644
index d8b92164..00000000
--- a/docs/src/examples/jupyter_notebooks/.ipynb_checkpoints/superradiant_laser_indexed-checkpoint.ipynb
+++ /dev/null
@@ -1,362 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Superradiant Laser"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Using symmetry properties of a system can reduce the number of needed equations dramatically. A common approximation for laser systems to handle sufficiently big atom numbers is to assume that several atoms in the system behave completely identically. This means all the identical atoms have the same averages.\n",
- "\n",
- "In this example we describe a so-called superradiant laser, where we assume all atoms to be identical. This model has been described in [D. Meiser et al., Phys. Rev. Lett. 102, 163601 (2009):](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.102.163601) The Hamiltonian of this system is "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\\begin{equation}\n",
- "H = - \\hbar \\Delta a^\\dagger a + \\hbar \\sum\\limits_{j=1}^{N} g_j (a^\\dagger \\sigma^{12}_{j} + a \\sigma^{21}_{j}) ,\n",
- "\\end{equation}"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "where $\\Delta = \\omega_a - \\omega_c$ is the detuning between the cavity ($\\omega_c$) and the atomic ($\\omega_a$) resonance frequency, the atom cavity coupling of the atom $j$ is denoted by $g_j$. Additionally there are dissipative processes in the system, namely: Atoms are incoherently pumped with the rate $R$, they decay individually with the rate $\\Gamma$ and are affected by individual atomic dephasing with the rate $\\nu$. Photons leak out of the system with the rate $\\kappa$.\n",
- "\n",
- "We start by loading the packages."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "using QuantumCumulants\n",
- "using OrdinaryDiffEq, SteadyStateDiffEq, ModelingToolkit\n",
- "using Plots"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Due to the implementation of symbolic indices and sums we only need to define the Hilbert space for one atom, even though we will simulate a system for several thousand.\n",
- "Creating an operator with an $\\texttt{Index}$ is done with the constructor $\\texttt{IndexedOperator}$."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Hilbertspace\n",
- "hc = FockSpace(:cavity)\n",
- "ha = NLevelSpace(:atom,2)\n",
- "h = hc ⊗ ha\n",
- "\n",
- "# operators\n",
- "@qnumbers a::Destroy(h)\n",
- "σ(α,β,i) = IndexedOperator(Transition(h, :σ, α, β),i)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Now we define the indices and the parameters of the system. An $\\texttt{Index}$ needs the system Hilbert space, a symbol, an upper bound and the specific Hilbert space of the indexed operator. $\\texttt{IndexedVariable}$ creates indexed variables. Actually we wouldn't need indexed variable in this example, this is just for demonstration purposes."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "@cnumbers N Δ κ Γ R ν\n",
- "g(i) = IndexedVariable(:g, i) \n",
- "\n",
- "i = Index(h,:i,N,ha)\n",
- "j = Index(h,:j,N,ha)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We define the Hamiltonian using symbolic sums and define the individual dissipative processes. For an indexed jump operator the (symbolic) sum is build in the Liouvillian."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Hamiltonian\n",
- "H = -Δ*a'a + Σ(g(i)*( a'*σ(1,2,i) + a*σ(2,1,i) ),i)\n",
- "\n",
- "# Jump operators with corresponding rates\n",
- "J = [a, σ(1,2,i), σ(2,1,i), σ(2,2,i)]\n",
- "rates = [κ, Γ, R, ν]\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "First we want to derive the equation for $\\langle a^\\dagger a \\rangle$ and $\\langle \\sigma_j^{22} \\rangle$. Note that you can only use indices on the LHS which haven't been used for the Hamiltonian and the jumps. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Derive equations\n",
- "ops = [a'*a, σ(2,2,j)]\n",
- "eqs = meanfield(ops,H,J;rates=rates,order=2)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "To get a closed set of equations we automatically complete the system. Since this system is phase invariant we know that all averages with a phase are zero, therefore we exclude these terms with a filter function. To be able to dispatch on all kind of sums containing averages we defined the Union $\\texttt{AvgSums}$."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# custom filter function\n",
- "φ(x::Average) = φ(x.arguments[1])\n",
- "φ(::Destroy) = -1\n",
- "φ(::Create) =1\n",
- "φ(x::QTerm) = sum(map(φ, x.args_nc))\n",
- "φ(x::Transition) = x.i - x.j\n",
- "φ(x::IndexedOperator) = x.op.i - x.op.j\n",
- "φ(x::SingleSum) = φ(x.term) \n",
- "φ(x::AvgSums) = φ(arguments(x))\n",
- "phase_invariant(x) = iszero(φ(x))\n",
- "\n",
- "# Complete equations\n",
- "eqs_c = complete(eqs; filter_func=phase_invariant)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "As mentioned before, we assume that all atoms behave identical. This means that e.g. the excited state population is equal for all atoms, hence we only need to calculate it for the first $\\langle \\sigma^{22}_1 \\rangle = \\langle \\sigma^{22}_j \\rangle$. Furthermore, it is clear that a sum over $N$ identical objects can be replaced by $N$ times the object. The function $\\texttt{scale()}$ uses these rules to simplify the equations."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "eqs_sc = scale(eqs_c)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "To calculate the dynamic of the system we create a system of ordinary differential equations, which can be used by [DifferentialEquations.jl](https://diffeq.sciml.ai/stable/)."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "@named sys = ODESystem(eqs_sc)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Finally we need to define the numerical parameters and the initial value of the system. We will consider $2 \\cdot 10^5$ Strontium atoms which are repumped with a rate of $R = 1\\text{Hz}$ on the clock transition ($\\Gamma = 1 \\text{mHz}$). The atom-cavity coupling rate is $g = 1\\text{Hz}$, the cavity has a linewidth of $\\kappa = 5\\text{kHz}$ and is detuned from the atomic resonance by $\\Delta = 2.5\\text{Hz}$."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Initial state\n",
- "u0 = zeros(ComplexF64, length(eqs_sc))\n",
- "# System parameters\n",
- "N_ = 2e5\n",
- "Γ_ = 1.0 #Γ=1mHz\n",
- "Δ_ = 2500Γ_ #Δ=2.5Hz\n",
- "g_ = 1000Γ_ #g=1Hz\n",
- "κ_ = 5e6*Γ_ #κ=5kHz\n",
- "R_ = 1000Γ_ #R=1Hz\n",
- "ν_ = 1000Γ_ #ν=1Hz\n",
- "\n",
- "ps = [N, Δ, g(1), κ, Γ, R, ν]\n",
- "p0 = [N_, Δ_, g_, κ_, Γ_, R_, ν_]\n",
- "\n",
- "prob = ODEProblem(sys,u0,(0.0, 1.0/50Γ_), ps.=>p0)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Solve the numeric problem\n",
- "sol = solve(prob,Tsit5(),maxiters=1e7)\n",
- "\n",
- "# Plot time evolution\n",
- "t = sol.t\n",
- "n = real.(sol[a'a])\n",
- "s22 = real.(sol[σ(2,2,1)])\n",
- "# Plot\n",
- "p1 = plot(t, n, xlabel=\"tΓ\", ylabel=\"⟨a⁺a⟩\", legend=false)\n",
- "p2 = plot(t, s22, xlabel=\"tΓ\", ylabel=\"⟨σ22⟩\", legend=false)\n",
- "plot(p1, p2, layout=(1,2), size=(700,300))\n",
- "savefig(\"superradiant_laser_indexed.svg\") # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Spectrum"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We calculate the spectrum here with the Laplace transform of the two-time correlation function. This is implemented with the function $\\texttt{Spectrum}$."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "corr = CorrelationFunction(a', a, eqs_c; steady_state=true, filter_func=phase_invariant)\n",
- "corr_sc = scale(corr)\n",
- "S = Spectrum(corr_sc, ps)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The set of equations for the correlation function is given by"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "corr_sc.de"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "To ensure we are in the steady state we use a steady solver to calculate it. To this end we need to define the $\\texttt{SteadyStateProblem}$ and specify the desired method. We also need to increase the $\\texttt{maxiters}$ and the solver accuracy to handle this numerically involved problem."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "prob_ss = SteadyStateProblem(prob)\n",
- "sol_ss = solve(prob_ss, DynamicSS(Tsit5(); abstol=1e-8, reltol=1e-8), \n",
- " reltol=1e-14, abstol=1e-14, maxiters=5e7)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The spectrum is then calculated with"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "ω = [-10:0.01:10;]Γ_\n",
- "spec = S(ω,sol_ss.u,p0)\n",
- "spec_n = spec ./ maximum(spec)\n",
- "δ = abs(ω[(findmax(spec)[2])]) "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "plot(ω, spec_n, xlabel=\"ω/Γ\", legend=false, size=(500,300))\n",
- "savefig(\"spectrum_superradiant_laser_indexed.svg\") # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Beside the narrow linewidth we can also see another key feature of the superradiant laser here, namely the very weak cavity pulling. At a detunig of $\\Delta = 2500\\Gamma$ there is only a shift of the laser light from the atomic resonance frequency of $\\delta = 1\\Gamma$."
- ]
- }
- ],
- "metadata": {
- "@webio": {
- "lastCommId": null,
- "lastKernelId": null
- },
- "kernelspec": {
- "display_name": "Julia 1.8.5",
- "language": "julia",
- "name": "julia-1.8"
- },
- "language_info": {
- "file_extension": ".jl",
- "mimetype": "application/julia",
- "name": "julia",
- "version": "1.8.5"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/docs/src/examples/jupyter_notebooks/.ipynb_checkpoints/unique_squeezing-checkpoint.ipynb b/docs/src/examples/jupyter_notebooks/.ipynb_checkpoints/unique_squeezing-checkpoint.ipynb
deleted file mode 100644
index aa3e3adc..00000000
--- a/docs/src/examples/jupyter_notebooks/.ipynb_checkpoints/unique_squeezing-checkpoint.ipynb
+++ /dev/null
@@ -1,443 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Unique Steady-State Squeezing"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "In this example we show the unique squeezing observed in a driven Dicke model described by $N$ two-level systems coupled to a quantized harmonic oscillator. First we present the full dynamics with a second order cumulant expansion. The Hamiltonian describing the system is"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\\begin{align}\n",
- "H = \\omega a^\\dagger a + \\frac{\\Omega}{2} \\sum_j \\sigma^j_z + \\frac{g}{2} \\sum_j (a^\\dagger + a) \\sigma^j_x + \\eta ( a \\, e^{i \\omega_\\mathrm{d} t} + a^\\dagger e^{-i \\omega_\\mathrm{d} t}),\n",
- "\\end{align}"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "for $N = 1$ it describes the driven quantum Rabi model. Additionally the system features two decay channels, losses of the harmonic oscillator with rate $\\kappa$ and relaxation of the two-level system with rate $\\gamma$."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We start by loading the packages."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mPrecompiling QuantumCumulants [35bcea6d-e19f-57db-af74-8011de6c7255]\n"
- ]
- }
- ],
- "source": [
- "using QuantumCumulants\n",
- "using OrdinaryDiffEq, ModelingToolkit\n",
- "using Plots\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We define the Hilbert space and the symbolic parameters of the system."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Define hilbert space\n",
- "hf = FockSpace(:harmonic)\n",
- "ha = NLevelSpace(Symbol(:spin),2)\n",
- "h = hf ⊗ ha\n",
- "\n",
- "# Paramter\n",
- "@cnumbers ω Ω ωd η κ g γ N \n",
- "@syms t::Real # time\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "On the Hilbert space we create the destroy operator $a$ of the harmonic oscillator and the (indexed) transition operator $\\sigma_i^{xy}$ for the $i$-th two-level system. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [],
- "source": [
- "@qnumbers a::Destroy(h)\n",
- "σ(x,y,i) = IndexedOperator(Transition(h,:σ,x,y),i)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "With the symbolic parameters, operators and indices we define the Hamiltonian and Liouvillian of the system."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Indices\n",
- "i = Index(h,:i,N,ha)\n",
- "j = Index(h,:j,N,ha)\n",
- "\n",
- "# Hamiltonian\n",
- "Hf = ω*a'*a + η*(a'*exp(-1im*ωd*t) + a*exp(1im*ωd*t) )\n",
- "Ha = Ω*Σ(σ(2,2,i)-σ(1,1,i),i)/2\n",
- "Hi = g*Σ((σ(1,2,i)+σ(2,1,i))*(a + a'),i)/2\n",
- "H = Hf + Ha + Hi\n",
- "\n",
- "# Jump operators & and rates\n",
- "J = [a, σ(1,2,i)]\n",
- "rates = [κ, γ]\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "First we derive the mean-field equations in second order for $\\langle a \\rangle$, $\\langle a^\\dagger a \\rangle$ and $\\langle \\sigma^{22}_j \\rangle$, then we complete the system to obtain a closed set of equations."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "scrolled": true
- },
- "outputs": [],
- "source": [
- "eqs = meanfield([a, a'a, σ(2,2,j)],H,J;rates=rates,order=2)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\\begin{align}\n",
- "\\frac{d}{dt} \\langle a\\rangle =& -0.5 i \\left( \\underset{i}{\\overset{N}{\\sum}} g \\langle {\\sigma}_{i}^{{12}}\\rangle + \\underset{i}{\\overset{N}{\\sum}} g \\langle {\\sigma}_{i}^{{21}}\\rangle \\right) -1 i \\eta e^{-1 i t {\\omega}d} -0.5 \\kappa \\langle a\\rangle -1 i \\omega \\langle a\\rangle \\\\\n",
- "\\frac{d}{dt} \\langle a^\\dagger a\\rangle =& 0.5 i \\left( \\underset{i}{\\overset{N}{\\sum}} g \\langle a {\\sigma}_{i}^{{12}}\\rangle + \\underset{i}{\\overset{N}{\\sum}} g \\langle a {\\sigma}_{i}^{{21}}\\rangle \\right) -0.5 i \\left( \\underset{i}{\\overset{N}{\\sum}} g \\langle a^\\dagger {\\sigma}_{i}^{{12}}\\rangle + \\underset{i}{\\overset{N}{\\sum}} g \\langle a^\\dagger {\\sigma}_{i}^{{21}}\\rangle \\right) -1.0 \\kappa \\langle a^\\dagger a\\rangle -1 i \\eta \\langle a^\\dagger\\rangle e^{-1 i t {\\omega}d} + 1 i \\eta \\langle a\\rangle e^{1 i t {\\omega}d} \\\\\n",
- "\\frac{d}{dt} \\langle {\\sigma}_{j}^{{22}}\\rangle =& -1.0 \\gamma \\langle {\\sigma}_{j}^{{22}}\\rangle -0.5 i g \\left( \\langle a^\\dagger {\\sigma}_{j}^{{21}}\\rangle + \\langle a {\\sigma}_{j}^{{21}}\\rangle \\right) + 0.5 i g \\left( \\langle a^\\dagger {\\sigma}_{j}^{{12}}\\rangle + \\langle a {\\sigma}_{j}^{{12}}\\rangle \\right)\n",
- "\\end{align}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "13"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "eqs_c = complete(eqs)\n",
- "length(eqs_c)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "All two-level systems behave identically, due to this permutation symmetry of the system we can scale-up the equations."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [],
- "source": [
- "eqs_sc = scale(eqs_c)\n",
- "scale(eqs) # Example scaling on the first three equations\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\\begin{align}\n",
- "\\frac{d}{dt} \\langle a\\rangle =& -0.5 i \\left( N g \\langle {\\sigma}_{1}^{{12}}\\rangle + N g \\langle {\\sigma}_{1}^{{21}}\\rangle \\right) -1 i \\eta e^{-1 i t {\\omega}d} -0.5 \\kappa \\langle a\\rangle -1 i \\omega \\langle a\\rangle \\\\\n",
- "\\frac{d}{dt} \\langle a^\\dagger a\\rangle =& -0.5 i \\left( N g \\langle a^\\dagger {\\sigma}_{1}^{{12}}\\rangle + N g \\langle a^\\dagger {\\sigma}_{1}^{{21}}\\rangle \\right) + 0.5 i \\left( N g \\langle a {\\sigma}_{1}^{{12}}\\rangle + N g \\langle a {\\sigma}_{1}^{{21}}\\rangle \\right) -1.0 \\kappa \\langle a^\\dagger a\\rangle -1 i \\eta \\langle a^\\dagger\\rangle e^{-1 i t {\\omega}d} + 1 i \\eta \\langle a\\rangle e^{1 i t {\\omega}d} \\\\\n",
- "\\frac{d}{dt} \\langle {\\sigma}_{1}^{{22}}\\rangle =& 0.5 i g \\left( \\langle a^\\dagger {\\sigma}_{1}^{{12}}\\rangle + \\langle a {\\sigma}_{1}^{{12}}\\rangle \\right) -0.5 i g \\left( \\langle a^\\dagger {\\sigma}_{1}^{{21}}\\rangle + \\langle a {\\sigma}_{1}^{{21}}\\rangle \\right) -1.0 \\gamma \\langle {\\sigma}_{1}^{{22}}\\rangle \n",
- "\\end{align}"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "To calculate the dynamics of the system we create a system of ordinary differential equations with its initial state and numerical parameters."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [],
- "source": [
- "# symbolic ordinary differential equation system\n",
- "@named sys = ODESystem(eqs_sc)\n",
- "\n",
- "# initial state \n",
- "u0 = zeros(ComplexF64, length(eqs_sc));\n",
- "\n",
- "# Parameters\n",
- "ω_ = 1.0\n",
- "Ω_ = 2e3ω_\n",
- "N_ = 1\n",
- "gc_ = sqrt(Ω_*ω_/N) # renormalization of coupling to keep the system intensive\n",
- "g_ = 0.9gc_\n",
- "η_ = 4ω_\n",
- "κ_ = ω_\n",
- "γ_ = ω_\n",
- "ωd_ = sqrt(1-g_^2/gc_^2)*ω_\n",
- "\n",
- "# symbolic and numeric parameter list\n",
- "ps = [ω , Ω , ωd , g , η , κ , γ , N ]\n",
- "p0 = [ω_, Ω_, ωd_, g_, η_, κ_, γ_, N_]\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We solve the dynamics for four different numbers of two-level systems $N = [1, 10, 20, 100]$."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 33,
- "metadata": {},
- "outputs": [],
- "source": [
- "sol_ls = []\n",
- "N_ls = [1,2,10,100]\n",
- "for N_ in N_ls\n",
- " p0_ = [ω_, Ω_, ωd_, g_, η_, κ_, γ_, N_]\n",
- " prob = ODEProblem(sys,u0,(0.0, 4π/ωd_), ps.=>p0_)\n",
- " sol = solve(prob,Tsit5(); saveat=4π/200ωd_, reltol=1e-10,abstol=1e-10)\n",
- " push!(sol_ls,sol)\n",
- "end"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "\"/home/christoph/git/QuantumCumulants.jl/docs/src/examples/jupyter_notebooks/myplot.pdf\""
- ]
- },
- "execution_count": 34,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# plot results\n",
- "c_ls=[:black, :red, :blue, :cyan]\n",
- "p1 = plot(xlabel=\"ω t\", ylabel=\"Δ² O\")\n",
- "p2 = plot(xlabel=\"ω t\", ylabel=\"⟨σz⟩\")\n",
- "for i=1:length(N_ls)\n",
- " sol = sol_ls[i]\n",
- " t_ = sol.t\n",
- " \n",
- " sqx = sol[a'*a'] + sol[a*a] + 2*sol[a'*a] .+ 1 - (sol[a'] + sol[a]).^2\n",
- " sqy = sol[a'*a'] + sol[a*a] - 2*sol[a'*a] .- 1 - (sol[a'] - sol[a]).^2\n",
- " plot!(p1,t_,real.(sqx),label=\"N = $(N_ls[i])\",color=c_ls[i]) \n",
- " plot!(p1,t_,-real.(sqy),ls=:dash,label=nothing,color=c_ls[i])\n",
- "\n",
- " s22 = sol[σ(2,2,1)] \n",
- " plot!(p2,t_,real.(2s22 .- 1),color=c_ls[i],label=nothing)\n",
- "end\n",
- "plot(p1, p2, layout=(1,2), size=(700,250),bottom_margin=5*Plots.mm, left_margin=5*Plots.mm)\n",
- "savefig(\"myplot.pdf\") "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Effective model"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "For a suffeciently low excitation we can adiabatically elminate the dynamics of the two-level system(s). This leads to an effective Hamiltonian "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\\begin{align}\n",
- "H_\\mathrm{a} = \\omega a^\\dagger a - \\frac{g^2}{4 \\Omega}(a + a^\\dagger)^2 + \\eta ( a \\, e^{i \\omega_\\mathrm{d} t} + a^\\dagger e^{-i \\omega_\\mathrm{d} t}).\n",
- "\\end{align}"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We calculate now the dynamics for this effective model and compare it with the full system. Note that this Hamiltonian is quadratic, which means that a second order description is exact. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 35,
- "metadata": {},
- "outputs": [],
- "source": [
- "# effective Hamiltonian\n",
- "@cnumbers gΩ # g^2/4Ω\n",
- "H_a = Hf - gΩ*(a + a')^2\n",
- "\n",
- "eqs_a = meanfield([a, a'a, a*a],H_a,[a];rates=[κ],order=2)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\\begin{align}\n",
- "\\frac{d}{dt} \\langle a\\rangle =& 2 i g\\Omega \\left( \\langle a^\\dagger\\rangle + \\langle a\\rangle \\right) -1 i \\eta e^{-1 i t {\\omega}d} -0.5 \\kappa \\langle a\\rangle -1 i \\omega \\langle a\\rangle \\\\\n",
- "\\frac{d}{dt} \\langle a^\\dagger a\\rangle =& -1.0 \\kappa \\langle a^\\dagger a\\rangle + 2 i g\\Omega \\langle a^\\dagger a^\\dagger\\rangle -2 i g\\Omega \\langle a a\\rangle -1 i \\eta \\langle a^\\dagger\\rangle e^{-1 i t {\\omega}d} + 1 i \\eta \\langle a\\rangle e^{1 i t {\\omega}d} \\\\\n",
- "\\frac{d}{dt} \\langle a a\\rangle =& 2 i g\\Omega + 4 i g\\Omega \\left( \\langle a^\\dagger a\\rangle + \\langle a a\\rangle \\right) -1.0 \\kappa \\langle a a\\rangle -2 i \\omega \\langle a a\\rangle -2 i \\eta \\langle a\\rangle e^{-1 i t {\\omega}d}\n",
- "\\end{align}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {},
- "outputs": [],
- "source": [
- "# symbolic ordinary differential equation system\n",
- "@named sys_a = ODESystem(eqs_a)\n",
- "\n",
- "# initial state \n",
- "u0_a = zeros(ComplexF64, length(eqs_a))\n",
- "\n",
- "# Additional parameter\n",
- "gΩ_ = g_^2/(4Ω_)\n",
- "\n",
- "# symbolic and numeric parameter list\n",
- "ps_a = [ω , ωd , η , κ , N , gΩ ]\n",
- "p0_a = [ω_, ωd_, η_, κ_, N_, gΩ_]\n",
- "\n",
- "# define and solve numeric ordinary differential equation problem\n",
- "prob_a = ODEProblem(sys_a,u0_a,(0.0, 4π/ωd_), ps_a.=>p0_a)\n",
- "sol_a = solve(prob_a,Tsit5(),reltol=1e-8,abstol=1e-8)\n",
- "nothing # hide"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "\"/home/christoph/git/QuantumCumulants.jl/docs/src/examples/jupyter_notebooks/myplot3.pdf\""
- ]
- },
- "execution_count": 39,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# plot results\n",
- "sol = sol_ls[4]\n",
- "t_ = sol.t\n",
- "sqx = sol[a'*a'] + sol[a*a] + 2*sol[a'*a] .+ 1 - (sol[a'] + sol[a]).^2\n",
- "sqy = sol[a'*a'] + sol[a*a] - 2*sol[a'*a] .- 1 - (sol[a'] - sol[a]).^2\n",
- "\n",
- "t_a = sol_a.t\n",
- "sqx_a = sol_a[a'*a'] + sol_a[a*a] + 2*sol_a[a'*a] .+ 1 - (sol_a[a'] + sol_a[a]).^2\n",
- "sqy_a = sol_a[a'*a'] + sol_a[a*a] - 2*sol_a[a'*a] .- 1 - (sol_a[a'] - sol_a[a]).^2\n",
- "\n",
- "p = plot(xlabel=\"ω t\", ylabel=\"Δ² O\")\n",
- "plot!(p,t_,real.(sqx),label=\"X - Full model\") \n",
- "plot!(p,t_,-real.(sqy),label=\"P - Full model\",ls=:dash)\n",
- "plot!(p,t_a,real.(sqx_a),label=\"X - Effective model\") \n",
- "plot!(p,t_a,-real.(sqy_a),label=\"P - Effective model\",ls=:dash)\n",
- "plot(p, size=(500,200))\n",
- "savefig(\"myplot3.pdf\") "
- ]
- }
- ],
- "metadata": {
- "@webio": {
- "lastCommId": null,
- "lastKernelId": null
- },
- "kernelspec": {
- "display_name": "Julia 1.8.5",
- "language": "julia",
- "name": "julia-1.8"
- },
- "language_info": {
- "file_extension": ".jl",
- "mimetype": "application/julia",
- "name": "julia",
- "version": "1.8.5"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/docs/src/examples/jupyter_notebooks/cavity_antiresonance.ipynb b/docs/src/examples/jupyter_notebooks/cavity_antiresonance.ipynb
index 717f82ac..69095466 100644
--- a/docs/src/examples/jupyter_notebooks/cavity_antiresonance.ipynb
+++ b/docs/src/examples/jupyter_notebooks/cavity_antiresonance.ipynb
@@ -231,7 +231,18 @@
"cell_type": "code",
"execution_count": 9,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\"/home/christoph/git/QuantumCumulants.jl/docs/src/examples/jupyter_notebooks/antiresonance.svg\""
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"T = n_ls ./ maximum(n_ls)\n",
"plot(Δ_ls, T, xlabel=\"Δ/Γ\", ylabel=\"T\", legend=false)\n",
@@ -248,17 +259,16 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Julia 1.7.2",
+ "display_name": "Julia 1.10.2",
"language": "julia",
- "name": "julia-1.7"
+ "name": "julia-1.10"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
- "version": "1.7.2"
+ "version": "1.10.2"
},
- "orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "6f38cfe8922d941c92fc591066a74813a9285a455efec88dafae5eaa218834d9"
diff --git a/docs/src/examples/jupyter_notebooks/cavity_antiresonance_indexed.ipynb b/docs/src/examples/jupyter_notebooks/cavity_antiresonance_indexed.ipynb
index 570e2cdb..4022aa9c 100644
--- a/docs/src/examples/jupyter_notebooks/cavity_antiresonance_indexed.ipynb
+++ b/docs/src/examples/jupyter_notebooks/cavity_antiresonance_indexed.ipynb
@@ -39,7 +39,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
@@ -58,9 +58,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(ℋ(cavity) ⊗ ℋ(atom), :j, N, 2)"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# Hilbert space\n",
"hc = FockSpace(:cavity)\n",
@@ -88,7 +99,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
@@ -115,7 +126,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
@@ -140,9 +151,29 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 5,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/latex": [
+ "\\begin{align}\n",
+ "\\frac{d}{dt} \\langle a\\rangle =& -1 i \\left( \\eta + \\underset{i}{\\overset{N}{\\sum}} {g}_{i} \\langle {\\sigma}_{i}^{{12}}\\rangle \\right) -1 i \\langle a\\rangle {\\Delta}c -0.5 \\langle a\\rangle \\kappa \\\\\n",
+ "\\frac{d}{dt} \\langle {\\sigma}_{k}^{{12}}\\rangle =& -0.5 \\underset{j{\\ne}i,k}{\\overset{N}{\\sum}} \\langle {\\sigma}_{j}^{{12}}\\rangle {\\Gamma}_{k,j} + \\underset{j{\\ne}i,k}{\\overset{N}{\\sum}} \\langle {\\sigma}_{j}^{{12}}\\rangle \\langle {\\sigma}_{k}^{{22}}\\rangle {\\Gamma}_{k,j} -1 i \\underset{j{\\ne}k}{\\overset{N}{\\sum}} \\langle {\\sigma}_{j}^{{12}}\\rangle {\\Omega}_{k,j} + 2 i \\underset{j{\\ne}k}{\\overset{N}{\\sum}} \\langle {\\sigma}_{j}^{{12}}\\rangle \\langle {\\sigma}_{k}^{{22}}\\rangle {\\Omega}_{k,j} -1 i {g}_{k} \\langle a\\rangle -0.5 \\langle {\\sigma}_{k}^{{12}}\\rangle {\\Gamma}_{k,k} -1 i \\langle {\\sigma}_{k}^{{12}}\\rangle {\\Delta}a + 2 i {g}_{k} \\langle a\\rangle \\langle {\\sigma}_{k}^{{22}}\\rangle \\\\\n",
+ "\\frac{d}{dt} \\langle {\\sigma}_{k}^{{22}}\\rangle =& -0.5 \\left( \\underset{i{\\ne}k}{\\overset{N}{\\sum}} \\langle {\\sigma}_{i}^{{21}}\\rangle \\langle {\\sigma}_{k}^{{12}}\\rangle {\\Gamma}_{i,k} + \\underset{j{\\ne}i,k}{\\overset{N}{\\sum}} \\langle {\\sigma}_{k}^{{21}}\\rangle \\langle {\\sigma}_{j}^{{12}}\\rangle {\\Gamma}_{k,j} \\right) + 1 i \\underset{i{\\ne}k}{\\overset{N}{\\sum}} \\langle {\\sigma}_{i}^{{21}}\\rangle \\langle {\\sigma}_{k}^{{12}}\\rangle {\\Omega}_{i,k} -1 i \\underset{j{\\ne}k}{\\overset{N}{\\sum}} \\langle {\\sigma}_{k}^{{21}}\\rangle \\langle {\\sigma}_{j}^{{12}}\\rangle {\\Omega}_{k,j} -1.0 \\langle {\\sigma}_{k}^{{22}}\\rangle {\\Gamma}_{k,k} + 1 i {g}_{k} \\langle a^\\dagger\\rangle \\langle {\\sigma}_{k}^{{12}}\\rangle -1 i {g}_{k} \\langle {\\sigma}_{k}^{{21}}\\rangle \\langle a\\rangle \n",
+ "\\end{align}\n"
+ ],
+ "text/plain": [
+ "∂ₜ(⟨a⟩) = (0 - 1im)*(η + var\"∑(i=1:N)gi*⟨σ12i⟩\") + (0 - 1im)*⟨a⟩*Δc - 0.5⟨a⟩*κ\n",
+ "∂ₜ(⟨σ12k⟩) = -0.5var\"∑(j=1:N)(j≠i,k)⟨σ12j⟩*Γkj\" + var\"∑(j=1:N)(j≠i,k)⟨σ12j⟩*⟨σ22k⟩*Γkj\" + (0 - 1im)*var\"∑(j=1:N)(j≠k)⟨σ12j⟩*Ωkj\" + (0 + 2im)*var\"∑(j=1:N)(j≠k)⟨σ12j⟩*⟨σ22k⟩*Ωkj\" + (0 - 1im)*gk*⟨a⟩ - 0.5⟨σ12k⟩*Γkk + (0 - 1im)*⟨σ12k⟩*Δa + (0 + 2im)*gk*⟨a⟩*⟨σ22k⟩\n",
+ "∂ₜ(⟨σ22k⟩) = -0.5(var\"∑(i=1:N)(i≠k)⟨σ21i⟩*⟨σ12k⟩*Γik\" + var\"∑(j=1:N)(j≠i,k)⟨σ21k⟩*⟨σ12j⟩*Γkj\") + (0 + 1im)*var\"∑(i=1:N)(i≠k)⟨σ21i⟩*⟨σ12k⟩*Ωik\" + (0 - 1im)*var\"∑(j=1:N)(j≠k)⟨σ21k⟩*⟨σ12j⟩*Ωkj\" - ⟨σ22k⟩*Γkk + (0 + 1im)*gk*⟨a′⟩*⟨σ12k⟩ + (0 - 1im)*gk*⟨σ21k⟩*⟨a⟩\n"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"eqs = meanfield(a,H,J;rates=rates,order=1)\n",
"complete!(eqs)"
@@ -157,7 +188,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
@@ -176,7 +207,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 54,
"metadata": {},
"outputs": [],
"source": [
@@ -211,7 +242,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 95,
"metadata": {},
"outputs": [],
"source": [
@@ -221,18 +252,16 @@
"# definitions for fast replacement of numerical parameter \n",
"prob = ODEProblem(sys,u0,(0.0, 20Γ_), ps.=>p0)\n",
"prob_ss = SteadyStateProblem(prob)\n",
- "p_sys = parameters(sys)\n",
- "p_idx = [findfirst(isequal(p), ps) for p∈p_sys]\n",
"\n",
"for i=1:length(Δ_ls)\n",
" Δc_ = Δ_ls[i]\n",
" Δa_ = Δc_ + Ωij(1,2) # cavity on resonace with the shifted collective emitter\n",
" p0_ = [Δc_; η_; Δa_; κ_; gi_; Γij_; Ωij_]\n",
" \n",
- " # create new SteadyStateProblem\n",
- " prob_ss_ = remake(prob_ss, p=p0_[p_idx])\n",
- " sol_ss = solve(prob_ss_, DynamicSS(Tsit5(); abstol=1e-8, reltol=1e-8),\n",
- " reltol=1e-14, abstol=1e-14, maxiters=5e7)\n",
+ " # create new ODEProblem\n",
+ " prob_ss_ = remake(prob_ss, p=(ps.=>p0_) )\n",
+ " sol_ss = solve(prob_ss_, DynamicSS(Tsit5(); abstol=1e-6, reltol=1e-6),\n",
+ " reltol=1e-12, abstol=1e-12, maxiters=1e7)\n",
" n_ls[i] = abs2(sol_ss[a])\n",
"end"
]
@@ -246,21 +275,25 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 96,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\"/home/christoph/git/QuantumCumulants.jl/docs/src/examples/jupyter_notebooks/cavity_antiresonance_indexed.svg\""
+ ]
+ },
+ "execution_count": 96,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"T = n_ls ./ maximum(n_ls)\n",
"plot(Δ_ls, T, xlabel=\"Δ/Γ\", ylabel=\"T\", legend=false)\n",
"savefig(\"cavity_antiresonance_indexed.svg\") # hide"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
}
],
"metadata": {
@@ -269,15 +302,15 @@
"lastKernelId": null
},
"kernelspec": {
- "display_name": "Julia 1.8.3",
+ "display_name": "Julia 1.10.2",
"language": "julia",
- "name": "julia-1.8"
+ "name": "julia-1.10"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
- "version": "1.8.3"
+ "version": "1.10.2"
}
},
"nbformat": 4,
diff --git a/docs/src/examples/jupyter_notebooks/filter-cavity_indexed.ipynb b/docs/src/examples/jupyter_notebooks/filter-cavity_indexed.ipynb
index 68b72ebb..f59790b2 100644
--- a/docs/src/examples/jupyter_notebooks/filter-cavity_indexed.ipynb
+++ b/docs/src/examples/jupyter_notebooks/filter-cavity_indexed.ipynb
@@ -36,12 +36,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mWaiting for another process (pid: 20347) to finish precompiling QuantumCumulants [35bcea6d-e19f-57db-af74-8011de6c7255]. Pidfile: /home/christoph/.julia/compiled/v1.10/QuantumCumulants/td6ql_342nI.ji.pidfile\n"
+ ]
+ }
+ ],
"source": [
"using QuantumCumulants\n",
- "using OrdinaryDiffEq, SteadyStateDiffEq, ModelingToolkit\n",
+ "using OrdinaryDiffEq, ModelingToolkit\n",
"using Plots"
]
},
@@ -54,9 +62,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "σ (generic function with 1 method)"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# Paramters\n",
"@cnumbers κ g gf κf R Γ Δ ν N M\n",
@@ -86,7 +105,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
@@ -109,16 +128,32 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 4,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/latex": [
+ "\\begin{align}\n",
+ "\\frac{d}{dt} \\langle a^\\dagger a\\rangle =& 1 i \\left( \\underset{i}{\\overset{M}{\\sum}} gf \\langle a {b}_{i}^\\dagger\\rangle + \\underset{j}{\\overset{N}{\\sum}} g \\langle a {\\sigma}_{j}^{{21}}\\rangle \\right) -1 i \\left( \\underset{i}{\\overset{M}{\\sum}} gf \\langle a^\\dagger {b}_{i}\\rangle + \\underset{j}{\\overset{N}{\\sum}} g \\langle a^\\dagger {\\sigma}_{j}^{{12}}\\rangle \\right) -1.0 \\langle a^\\dagger a\\rangle \\kappa\n",
+ "\\end{align}\n"
+ ],
+ "text/plain": [
+ "∂ₜ(⟨a′*a⟩) = (0 + 1im)*(var\"∑(i=1:M)gf*⟨a*bi'⟩\" + var\"∑(j=1:N)g*⟨a*σ21j⟩\") + (0 - 1im)*(var\"∑(i=1:M)gf*⟨a′*bi⟩\" + var\"∑(j=1:N)g*⟨a′*σ12j⟩\") - ⟨a′*a⟩*κ\n"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"eqs = meanfield(a'a,H,J;rates=rates,order=2)"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
@@ -135,9 +170,17 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 6,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of eqs.: 552\n"
+ ]
+ }
+ ],
"source": [
"M_ = 20\n",
"eqs_sc = scale(eqs_c;h=[ha]) #h=[3]\n",
@@ -154,7 +197,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
@@ -164,7 +207,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
@@ -193,7 +236,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
@@ -209,9 +252,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 10,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\"/home/christoph/git/QuantumCumulants.jl/docs/src/examples/jupyter_notebooks/filter_cavities_indexed.svg\""
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# Plot results\n",
"p1 = plot(t, n_b(1), alpha=0.5, ylabel=\"⟨bᵢ⁺bᵢ⟩\", legend=false)\n",
@@ -232,15 +286,15 @@
"lastKernelId": null
},
"kernelspec": {
- "display_name": "Julia 1.8.3",
+ "display_name": "Julia 1.10.2",
"language": "julia",
- "name": "julia-1.8"
+ "name": "julia-1.10"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
- "version": "1.8.3"
+ "version": "1.10.2"
}
},
"nbformat": 4,
diff --git a/docs/src/examples/jupyter_notebooks/heterodyne_detection.ipynb b/docs/src/examples/jupyter_notebooks/heterodyne_detection.ipynb
index 68115837..cedae23e 100644
--- a/docs/src/examples/jupyter_notebooks/heterodyne_detection.ipynb
+++ b/docs/src/examples/jupyter_notebooks/heterodyne_detection.ipynb
@@ -1,5 +1,14 @@
{
"cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# TODO: using Plots"
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
@@ -10,9 +19,207 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mPrecompiling QuantumCumulants [35bcea6d-e19f-57db-af74-8011de6c7255]\n",
+ "\u001b[91m\u001b[1mERROR: \u001b[22m\u001b[39mLoadError: InitError: UndefVarError: `memset` not defined\n",
+ "Stacktrace:\n",
+ " [1] \u001b[0m\u001b[1mgetproperty\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mBase.jl:31\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [2] \u001b[0m\u001b[1m__init__\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[35mTriangularSolve\u001b[39m \u001b[90m~/.julia/packages/TriangularSolve/Bule6/src/\u001b[39m\u001b[90m\u001b[4mTriangularSolve.jl:269\u001b[24m\u001b[39m\n",
+ " [3] \u001b[0m\u001b[1mregister_restored_modules\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90msv\u001b[39m::\u001b[0mCore.SimpleVector, \u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90mpath\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1115\u001b[24m\u001b[39m\n",
+ " [4] \u001b[0m\u001b[1m_include_from_serialized\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90mpath\u001b[39m::\u001b[0mString, \u001b[90mocachepath\u001b[39m::\u001b[0mString, \u001b[90mdepmods\u001b[39m::\u001b[0mVector\u001b[90m{Any}\u001b[39m\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1061\u001b[24m\u001b[39m\n",
+ " [5] \u001b[0m\u001b[1m_tryrequire_from_serialized\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90mpath\u001b[39m::\u001b[0mString, \u001b[90mocachepath\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1442\u001b[24m\u001b[39m\n",
+ " [6] \u001b[0m\u001b[1m_require\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90menv\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1816\u001b[24m\u001b[39m\n",
+ " [7] \u001b[0m\u001b[1m_require_prelocked\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90muuidkey\u001b[39m::\u001b[0mBase.PkgId, \u001b[90menv\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1660\u001b[24m\u001b[39m\n",
+ " [8] \u001b[0m\u001b[1mmacro expansion\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1648\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [9] \u001b[0m\u001b[1mmacro expansion\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mlock.jl:267\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [10] \u001b[0m\u001b[1mrequire\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90minto\u001b[39m::\u001b[0mModule, \u001b[90mmod\u001b[39m::\u001b[0mSymbol\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1611\u001b[24m\u001b[39m\n",
+ " [11] \u001b[0m\u001b[1minclude\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mmod\u001b[39m::\u001b[0mModule, \u001b[90m_path\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mBase.jl:457\u001b[24m\u001b[39m\n",
+ " [12] \u001b[0m\u001b[1minclude\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mx\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[36mRecursiveFactorization\u001b[39m \u001b[90m~/.julia/packages/RecursiveFactorization/cDP6H/src/\u001b[39m\u001b[90m\u001b[4mRecursiveFactorization.jl:1\u001b[24m\u001b[39m\n",
+ " [13] top-level scope\n",
+ "\u001b[90m @\u001b[39m \u001b[90m~/.julia/packages/RecursiveFactorization/cDP6H/src/\u001b[39m\u001b[90m\u001b[4mRecursiveFactorization.jl:6\u001b[24m\u001b[39m\n",
+ " [14] \u001b[0m\u001b[1minclude\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mBase.jl:457\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [15] \u001b[0m\u001b[1minclude_package_for_output\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90minput\u001b[39m::\u001b[0mString, \u001b[90mdepot_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mdl_load_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mload_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mconcrete_deps\u001b[39m::\u001b[0mVector\u001b[90m{Pair{Base.PkgId, UInt128}}\u001b[39m, \u001b[90msource\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2045\u001b[24m\u001b[39m\n",
+ " [16] top-level scope\n",
+ "\u001b[90m @\u001b[39m \u001b[90m\u001b[4mstdin:3\u001b[24m\u001b[39m\n",
+ "during initialization of module TriangularSolve\n",
+ "in expression starting at /home/christoph/.julia/packages/RecursiveFactorization/cDP6H/src/lu.jl:2\n",
+ "in expression starting at /home/christoph/.julia/packages/RecursiveFactorization/cDP6H/src/RecursiveFactorization.jl:1\n",
+ "in expression starting at stdin:3\n",
+ "\u001b[91m\u001b[1mERROR: \u001b[22m\u001b[39mLoadError: Failed to precompile RecursiveFactorization [f2c3362d-daeb-58d1-803e-2bc74f2840b4] to \"/home/christoph/.julia/compiled/v1.9/RecursiveFactorization/jl_FKWWOV\".\n",
+ "Stacktrace:\n",
+ " [1] \u001b[0m\u001b[1merror\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90ms\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4merror.jl:35\u001b[24m\u001b[39m\n",
+ " [2] \u001b[0m\u001b[1mcompilecache\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90mpath\u001b[39m::\u001b[0mString, \u001b[90minternal_stderr\u001b[39m::\u001b[0mIO, \u001b[90minternal_stdout\u001b[39m::\u001b[0mIO, \u001b[90mkeep_loaded_modules\u001b[39m::\u001b[0mBool\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2296\u001b[24m\u001b[39m\n",
+ " [3] \u001b[0m\u001b[1mcompilecache\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2163\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [4] \u001b[0m\u001b[1m_require\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90menv\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1805\u001b[24m\u001b[39m\n",
+ " [5] \u001b[0m\u001b[1m_require_prelocked\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90muuidkey\u001b[39m::\u001b[0mBase.PkgId, \u001b[90menv\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1660\u001b[24m\u001b[39m\n",
+ " [6] \u001b[0m\u001b[1mmacro expansion\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1648\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [7] \u001b[0m\u001b[1mmacro expansion\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mlock.jl:267\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [8] \u001b[0m\u001b[1mrequire\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90minto\u001b[39m::\u001b[0mModule, \u001b[90mmod\u001b[39m::\u001b[0mSymbol\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1611\u001b[24m\u001b[39m\n",
+ " [9] top-level scope\n",
+ "\u001b[90m @\u001b[39m \u001b[90m~/.julia/packages/LinearSolve/Dqpre/src/\u001b[39m\u001b[90m\u001b[4mLinearSolve.jl:11\u001b[24m\u001b[39m\n",
+ " [10] \u001b[0m\u001b[1meval\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mboot.jl:370\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [11] \u001b[0m\u001b[1mrecompile_invalidations\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90m__module__\u001b[39m::\u001b[0mModule, \u001b[90mexpr\u001b[39m::\u001b[0mAny\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[35mPrecompileTools\u001b[39m \u001b[90m~/.julia/packages/PrecompileTools/L8A3n/src/\u001b[39m\u001b[90m\u001b[4minvalidations.jl:18\u001b[24m\u001b[39m\n",
+ " [12] top-level scope\n",
+ "\u001b[90m @\u001b[39m \u001b[90m~/.julia/packages/LinearSolve/Dqpre/src/\u001b[39m\u001b[90m\u001b[4mLinearSolve.jl:9\u001b[24m\u001b[39m\n",
+ " [13] \u001b[0m\u001b[1minclude\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mBase.jl:457\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [14] \u001b[0m\u001b[1minclude_package_for_output\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90minput\u001b[39m::\u001b[0mString, \u001b[90mdepot_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mdl_load_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mload_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mconcrete_deps\u001b[39m::\u001b[0mVector\u001b[90m{Pair{Base.PkgId, UInt128}}\u001b[39m, \u001b[90msource\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2045\u001b[24m\u001b[39m\n",
+ " [15] top-level scope\n",
+ "\u001b[90m @\u001b[39m \u001b[90m\u001b[4mstdin:3\u001b[24m\u001b[39m\n",
+ "in expression starting at /home/christoph/.julia/packages/LinearSolve/Dqpre/src/LinearSolve.jl:1\n",
+ "in expression starting at stdin:3\n",
+ "\u001b[91m\u001b[1mERROR: \u001b[22m\u001b[39mLoadError: Failed to precompile LinearSolve [7ed4a6bd-45f5-4d41-b270-4a48e9bafcae] to \"/home/christoph/.julia/compiled/v1.9/LinearSolve/jl_FLzMFx\".\n",
+ "Stacktrace:\n",
+ " [1] \u001b[0m\u001b[1merror\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90ms\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4merror.jl:35\u001b[24m\u001b[39m\n",
+ " [2] \u001b[0m\u001b[1mcompilecache\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90mpath\u001b[39m::\u001b[0mString, \u001b[90minternal_stderr\u001b[39m::\u001b[0mIO, \u001b[90minternal_stdout\u001b[39m::\u001b[0mIO, \u001b[90mkeep_loaded_modules\u001b[39m::\u001b[0mBool\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2296\u001b[24m\u001b[39m\n",
+ " [3] \u001b[0m\u001b[1mcompilecache\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2163\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [4] \u001b[0m\u001b[1m_require\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90menv\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1805\u001b[24m\u001b[39m\n",
+ " [5] \u001b[0m\u001b[1m_require_prelocked\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90muuidkey\u001b[39m::\u001b[0mBase.PkgId, \u001b[90menv\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1660\u001b[24m\u001b[39m\n",
+ " [6] \u001b[0m\u001b[1mmacro expansion\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1648\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [7] \u001b[0m\u001b[1mmacro expansion\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mlock.jl:267\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [8] \u001b[0m\u001b[1mrequire\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90minto\u001b[39m::\u001b[0mModule, \u001b[90mmod\u001b[39m::\u001b[0mSymbol\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1611\u001b[24m\u001b[39m\n",
+ " [9] \u001b[0m\u001b[1minclude\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mBase.jl:457\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [10] \u001b[0m\u001b[1minclude_package_for_output\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90minput\u001b[39m::\u001b[0mString, \u001b[90mdepot_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mdl_load_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mload_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mconcrete_deps\u001b[39m::\u001b[0mVector\u001b[90m{Pair{Base.PkgId, UInt128}}\u001b[39m, \u001b[90msource\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2045\u001b[24m\u001b[39m\n",
+ " [11] top-level scope\n",
+ "\u001b[90m @\u001b[39m \u001b[90m\u001b[4mstdin:3\u001b[24m\u001b[39m\n",
+ "in expression starting at /home/christoph/.julia/packages/OrdinaryDiffEq/ZbQoo/src/OrdinaryDiffEq.jl:1\n",
+ "in expression starting at stdin:3\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\u001b[91m\u001b[1mERROR: \u001b[22m\u001b[39mLoadError: Failed to precompile OrdinaryDiffEq [1dea7af3-3e70-54e6-95c3-0bf5283fa5ed] to \"/home/christoph/.julia/compiled/v1.9/OrdinaryDiffEq/jl_xSiUtp\".\n",
+ "Stacktrace:\n",
+ " [1] \u001b[0m\u001b[1merror\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90ms\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4merror.jl:35\u001b[24m\u001b[39m\n",
+ " [2] \u001b[0m\u001b[1mcompilecache\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90mpath\u001b[39m::\u001b[0mString, \u001b[90minternal_stderr\u001b[39m::\u001b[0mIO, \u001b[90minternal_stdout\u001b[39m::\u001b[0mIO, \u001b[90mkeep_loaded_modules\u001b[39m::\u001b[0mBool\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2296\u001b[24m\u001b[39m\n",
+ " [3] \u001b[0m\u001b[1mcompilecache\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2163\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [4] \u001b[0m\u001b[1m_require\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90menv\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1805\u001b[24m\u001b[39m\n",
+ " [5] \u001b[0m\u001b[1m_require_prelocked\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90muuidkey\u001b[39m::\u001b[0mBase.PkgId, \u001b[90menv\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1660\u001b[24m\u001b[39m\n",
+ " [6] \u001b[0m\u001b[1mmacro expansion\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1648\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [7] \u001b[0m\u001b[1mmacro expansion\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mlock.jl:267\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [8] \u001b[0m\u001b[1mrequire\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90minto\u001b[39m::\u001b[0mModule, \u001b[90mmod\u001b[39m::\u001b[0mSymbol\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1611\u001b[24m\u001b[39m\n",
+ " [9] top-level scope\n",
+ "\u001b[90m @\u001b[39m \u001b[90m~/.julia/packages/ModelingToolkit/fsg2r/src/\u001b[39m\u001b[90m\u001b[4mModelingToolkit.jl:70\u001b[24m\u001b[39m\n",
+ " [10] \u001b[0m\u001b[1meval\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mboot.jl:370\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [11] \u001b[0m\u001b[1mrecompile_invalidations\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90m__module__\u001b[39m::\u001b[0mModule, \u001b[90mexpr\u001b[39m::\u001b[0mAny\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[35mPrecompileTools\u001b[39m \u001b[90m~/.julia/packages/PrecompileTools/L8A3n/src/\u001b[39m\u001b[90m\u001b[4minvalidations.jl:18\u001b[24m\u001b[39m\n",
+ " [12] top-level scope\n",
+ "\u001b[90m @\u001b[39m \u001b[90m~/.julia/packages/ModelingToolkit/fsg2r/src/\u001b[39m\u001b[90m\u001b[4mModelingToolkit.jl:6\u001b[24m\u001b[39m\n",
+ " [13] \u001b[0m\u001b[1minclude\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mBase.jl:457\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [14] \u001b[0m\u001b[1minclude_package_for_output\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90minput\u001b[39m::\u001b[0mString, \u001b[90mdepot_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mdl_load_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mload_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mconcrete_deps\u001b[39m::\u001b[0mVector\u001b[90m{Pair{Base.PkgId, UInt128}}\u001b[39m, \u001b[90msource\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2045\u001b[24m\u001b[39m\n",
+ " [15] top-level scope\n",
+ "\u001b[90m @\u001b[39m \u001b[90m\u001b[4mstdin:3\u001b[24m\u001b[39m\n",
+ "in expression starting at /home/christoph/.julia/packages/ModelingToolkit/fsg2r/src/ModelingToolkit.jl:1\n",
+ "in expression starting at stdin:3\n",
+ "\u001b[91m\u001b[1mERROR: \u001b[22m\u001b[39mLoadError: Failed to precompile ModelingToolkit [961ee093-0014-501f-94e3-6117800e7a78] to \"/home/christoph/.julia/compiled/v1.9/ModelingToolkit/jl_kEJqR3\".\n",
+ "Stacktrace:\n",
+ " [1] \u001b[0m\u001b[1merror\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90ms\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4merror.jl:35\u001b[24m\u001b[39m\n",
+ " [2] \u001b[0m\u001b[1mcompilecache\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90mpath\u001b[39m::\u001b[0mString, \u001b[90minternal_stderr\u001b[39m::\u001b[0mIO, \u001b[90minternal_stdout\u001b[39m::\u001b[0mIO, \u001b[90mkeep_loaded_modules\u001b[39m::\u001b[0mBool\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2296\u001b[24m\u001b[39m\n",
+ " [3] \u001b[0m\u001b[1mcompilecache\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2163\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [4] \u001b[0m\u001b[1m_require\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90menv\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1805\u001b[24m\u001b[39m\n",
+ " [5] \u001b[0m\u001b[1m_require_prelocked\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90muuidkey\u001b[39m::\u001b[0mBase.PkgId, \u001b[90menv\u001b[39m::\u001b[0mString\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1660\u001b[24m\u001b[39m\n",
+ " [6] \u001b[0m\u001b[1mmacro expansion\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1648\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [7] \u001b[0m\u001b[1mmacro expansion\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mlock.jl:267\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [8] \u001b[0m\u001b[1mrequire\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90minto\u001b[39m::\u001b[0mModule, \u001b[90mmod\u001b[39m::\u001b[0mSymbol\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:1611\u001b[24m\u001b[39m\n",
+ " [9] \u001b[0m\u001b[1minclude\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mBase.jl:457\u001b[24m\u001b[39m\u001b[90m [inlined]\u001b[39m\n",
+ " [10] \u001b[0m\u001b[1minclude_package_for_output\u001b[22m\u001b[0m\u001b[1m(\u001b[22m\u001b[90mpkg\u001b[39m::\u001b[0mBase.PkgId, \u001b[90minput\u001b[39m::\u001b[0mString, \u001b[90mdepot_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mdl_load_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mload_path\u001b[39m::\u001b[0mVector\u001b[90m{String}\u001b[39m, \u001b[90mconcrete_deps\u001b[39m::\u001b[0mVector\u001b[90m{Pair{Base.PkgId, UInt128}}\u001b[39m, \u001b[90msource\u001b[39m::\u001b[0mNothing\u001b[0m\u001b[1m)\u001b[22m\n",
+ "\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m./\u001b[39m\u001b[90m\u001b[4mloading.jl:2045\u001b[24m\u001b[39m\n",
+ " [11] top-level scope\n",
+ "\u001b[90m @\u001b[39m \u001b[90m\u001b[4mstdin:3\u001b[24m\u001b[39m\n",
+ "in expression starting at /home/christoph/git/QuantumCumulants.jl/src/QuantumCumulants.jl:1\n",
+ "in expression starting at stdin:3\n"
+ ]
+ },
+ {
+ "ename": "LoadError",
+ "evalue": "Failed to precompile QuantumCumulants [35bcea6d-e19f-57db-af74-8011de6c7255] to \"/home/christoph/.julia/compiled/v1.9/QuantumCumulants/jl_O98yl3\".",
+ "output_type": "error",
+ "traceback": [
+ "Failed to precompile QuantumCumulants [35bcea6d-e19f-57db-af74-8011de6c7255] to \"/home/christoph/.julia/compiled/v1.9/QuantumCumulants/jl_O98yl3\".",
+ "",
+ "Stacktrace:",
+ " [1] error(s::String)",
+ " @ Base ./error.jl:35",
+ " [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool)",
+ " @ Base ./loading.jl:2296",
+ " [3] compilecache",
+ " @ ./loading.jl:2163 [inlined]",
+ " [4] _require(pkg::Base.PkgId, env::String)",
+ " @ Base ./loading.jl:1805",
+ " [5] _require_prelocked(uuidkey::Base.PkgId, env::String)",
+ " @ Base ./loading.jl:1660",
+ " [6] macro expansion",
+ " @ ./loading.jl:1648 [inlined]",
+ " [7] macro expansion",
+ " @ ./lock.jl:267 [inlined]",
+ " [8] require(into::Module, mod::Symbol)",
+ " @ Base ./loading.jl:1611"
+ ]
+ }
+ ],
"source": [
"using QuantumCumulants\n",
"using SymbolicUtils\n",
@@ -40,13 +247,23 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "LoadError",
+ "evalue": "LoadError: UndefVarError: `@cnumbers` not defined\nin expression starting at In[2]:1",
+ "output_type": "error",
+ "traceback": [
+ "LoadError: UndefVarError: `@cnumbers` not defined\nin expression starting at In[2]:1",
+ ""
+ ]
+ }
+ ],
"source": [
"@cnumbers N ωa γ η χ ωc κ g ξ ωl\n",
"@syms t::Real\n",
- "@register pulse(t)\n",
+ "@register_symbolic pulse(t)\n",
"\n",
"hc = FockSpace(:resonator)\n",
"ha = NLevelSpace(:atom,2)\n",
@@ -73,9 +290,22 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 3,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "LoadError",
+ "evalue": "UndefVarError: `a` not defined",
+ "output_type": "error",
+ "traceback": [
+ "UndefVarError: `a` not defined",
+ "",
+ "Stacktrace:",
+ " [1] top-level scope",
+ " @ In[3]:1"
+ ]
+ }
+ ],
"source": [
"J = [a*exp(1.0im*ωl*t),σ(1,2,j),σ(2,1,j),σ(2,2,j)]\n",
"rates = [κ,γ,η*pulse(t),2*χ]\n",
@@ -107,9 +337,22 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 4,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "LoadError",
+ "evalue": "UndefVarError: `ξ` not defined",
+ "output_type": "error",
+ "traceback": [
+ "UndefVarError: `ξ` not defined",
+ "",
+ "Stacktrace:",
+ " [1] top-level scope",
+ " @ In[4]:1"
+ ]
+ }
+ ],
"source": [
"efficiencies = [ξ,0,0,0]\n",
"ops = [a',a'*a,σ(2,2,k),σ(1,2,k), a*a];\n",
@@ -126,9 +369,22 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 5,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "LoadError",
+ "evalue": "UndefVarError: `indexed_complete` not defined",
+ "output_type": "error",
+ "traceback": [
+ "UndefVarError: `indexed_complete` not defined",
+ "",
+ "Stacktrace:",
+ " [1] top-level scope",
+ " @ In[5]:1"
+ ]
+ }
+ ],
"source": [
"eqs_c = indexed_complete(eqs)\n",
"scaled_eqs = scale(eqs_c)"
@@ -144,9 +400,22 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 6,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "LoadError",
+ "evalue": "UndefVarError: `N` not defined",
+ "output_type": "error",
+ "traceback": [
+ "UndefVarError: `N` not defined",
+ "",
+ "Stacktrace:",
+ " [1] top-level scope",
+ " @ In[6]:4"
+ ]
+ }
+ ],
"source": [
"ωc_ = 0.0; κ_ = 2.0 * π * 2.26e6; ξ_ = 0.12; N_=5e4; \n",
"ωa_ = 0.0; γ_ = 2.0 * π * 375; η_ = 2.0 * π * 20e3; χ_ = 0.1; \n",
@@ -177,9 +446,19 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 7,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "LoadError",
+ "evalue": "LoadError: UndefVarError: `@named` not defined\nin expression starting at In[7]:1",
+ "output_type": "error",
+ "traceback": [
+ "LoadError: UndefVarError: `@named` not defined\nin expression starting at In[7]:1",
+ ""
+ ]
+ }
+ ],
"source": [
"@named sys = SDESystem(scaled_eqs)\n",
"u0 = zeros(ComplexF64,length(scaled_eqs.equations))\n",
@@ -200,9 +479,22 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 8,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "LoadError",
+ "evalue": "UndefVarError: `sol` not defined",
+ "output_type": "error",
+ "traceback": [
+ "UndefVarError: `sol` not defined",
+ "",
+ "Stacktrace:",
+ " [1] top-level scope",
+ " @ In[8]:1"
+ ]
+ }
+ ],
"source": [
"us = fill(0.0, length(sol.u), length(sol.u[1].t))\n",
"for (i, el) in enumerate(sol.u)\n",
@@ -230,9 +522,22 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 9,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "LoadError",
+ "evalue": "UndefVarError: `sol` not defined",
+ "output_type": "error",
+ "traceback": [
+ "UndefVarError: `sol` not defined",
+ "",
+ "Stacktrace:",
+ " [1] top-level scope",
+ " @ In[9]:1"
+ ]
+ }
+ ],
"source": [
"us = fill(0.0, length(sol.u), length(sol.u[1].t))\n",
"for (i, el) in enumerate(sol.u)\n",
@@ -252,7 +557,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Julia 1.9.3",
+ "display_name": "Julia 1.9.1",
"language": "julia",
"name": "julia-1.9"
},
@@ -260,9 +565,8 @@
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
- "version": "1.9.3"
- },
- "orig_nbformat": 4
+ "version": "1.9.1"
+ }
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/docs/src/examples/jupyter_notebooks/noisy excitation transport.ipynb b/docs/src/examples/jupyter_notebooks/noisy excitation transport.ipynb
index f1d09942..075ffd18 100644
--- a/docs/src/examples/jupyter_notebooks/noisy excitation transport.ipynb
+++ b/docs/src/examples/jupyter_notebooks/noisy excitation transport.ipynb
@@ -47,7 +47,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
@@ -88,7 +88,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@@ -112,9 +112,110 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 3,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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7rw2sVGjRiNGjJgwYUJd3lokEonFYmsG30bPe0nNKhVuSChAZjM+WU+Ez90DWYJQqVTa8Zq1huqlS5eeeeaZhISEqKioTp06PfHEE6dPn677dbt167Znzx7L4z179nTv3t3ymOd5ywOz2Tx16lSNRvPTTz/Zzi17w7YyAABQk+1k+Ouvv/r162cymRISErp3715YWPjzzz//8MMPGzduvMP4XFVz584dPHhwQEBAZWXlunXrjh49SkQcx4nF4iNHjnTu3HnhwoUbNmyYNWuWZXQwODj4pZdesuM3VpMWaycAAKCGWu8+ERsbu23bNuuEl4KCgvHjx8+cOTM9PV0svnuedOvWbfv27T/++KNUKj148KBlro1IJHr//fct1+zWrZuvr6/1/KqPHUSHFiEAANRgIxlKS0uPHz++e/duawoSUXBw8BdffNGqVau0tLQ6rnxPSEhISEiodnDBggWWB4888kgdG5f2omWxvxoAAFRnY4zQMsOz5sL5wMBA61fdEXbcBgCAmmwEYUhISEhIyJdfflnt+KpVq+Ryec0Fhe4CC+oBAKAmG8kgEolee+21F154IS0tbdy4ceHh4QUFBVu3bt22bdvLL7+sVqudX6VdYNYoAADUZDsZ5syZwzDM4sWLn3vuOcsRPz+/RYsWvf76606szc5w6wkAAKip1mR4/vnnn3322YsXLxYWFvr5+bVo0cI5q/0cR8fySjEmywAAwG3u1EQSi8UtW7Z0WimOpjNTQK3bowIAgIeqdWeZc+fOTZ06tU2bNkFBQXFxcUlJScnJyc6szO4wRggAADXZDsLffvutY8eOmzZtio2NHTt2bMuWLXfv3t2jR4/vvvvOyfXZEcYIAQCgJhvJwHHczJkzu3TpsnnzZj8/P8tBrVY7derU2bNnjx071svLy7lF2gd2lgEAgJpstAjz8/MzMzM/+OADawoSkUqlWr58eWVl5YULF5xYnj1pMVkGAABqsBGEvr6+UqlUJpNVO26ZNWrZX8YdYUE9AADUZCMZVCrVY489tnjx4qo3SOI47p133unfv3+jRo2cWqD9YLIMANyHtWvX3tNN6MAu/P39X3nlFee8l+1kaNWq1XvvvdekSZNhw4aFhYUVFBRs3749MzPzhRde+OCDDyznDB48uHXr1s6p0i4wWQYA7sPKlSsfeugh920DuCOO49544w0XB+G/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",
+ "image/svg+xml": [
+ "\n",
+ "\n"
+ ],
+ "text/html": [
+ "\n",
+ "\n"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# Define parameters without noise\n",
"d = 0.75\n",
@@ -154,7 +255,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
@@ -163,12 +264,8 @@
" # Define the new set of parameters\n",
" x_ = x0 .+ s.*randn(N)\n",
" p_ = [γ => 1.0; Δ => 0.0; Ω => 2.0; J0 => 1.25; x .=> x_;]\n",
- "\n",
- " # Convert to numeric values only\n",
- " pnum = ModelingToolkit.varmap_to_vars(p_,parameters(sys))\n",
- "\n",
" # Return new ODEProblem\n",
- " return remake(prob, p=pnum)\n",
+ " return remake(prob, p=p_)\n",
"end\n",
"\n",
"trajectories = 50\n",
@@ -186,16 +283,121 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 12,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdeWBM9/ow8Oec2bdksi+SSILYErFUUfvuUkWLFkXppRSlqlpa6m3R8rstXXW5V/dqUfdy6cZtrUlROyG27Jtkkklmn7O9f5yYbCcRzJKZeT5/nTnznTPPzCTzzHcnOI4DhBBCyF+Rng4AIYQQ8iRMhAghhPwaJkKEEEJ+DRMhQgghv4aJECGEkF/DRIgQQsivYSJECCHk1zARIoQQ8muYCBFCCPk1TIQIIYT8mhckwq1bt168eLGZhVmWxUXj/BDDMJ4OAXkAfu5+iOM4lmWde00vSIT79+9vfiK02+00Tbs0HtQCmc1mT4eAPAA/dz/EMIzNZnPuNb0gESKEEEKug4kQIYSQX8NEiBBCyK9hIkQIIeTXMBEihBDya5gIEUII+TVMhAghhPwaJkKEEEJ+TezpABCqQ2ew5ulM5QZrpcVuMFOVZnul2W60UlqV9OUJ3fgytyotK749zrDVSwhJxSIRwYlEIgB4oE3YU4Pb8+cv5JZ/e/ia4LOM7h43oFMUf/zLmbz95/JtdM0aJRY7zV982bjU5Nhg/uSbu878daO04aUkYvLTeQMCFFIA4AD+/tFBvcnO3yUiCaWs+l8sIlCxYXrv2vGLRaREVP+XaI/EsFlDquM/l6377MBlwfgnPJgwtEsr/njfqZyfz+QJFlswqnPHmCD++MOfL14u0DcsIyaJ//dEz0BldfzLv/rTYhdYkiI8ULF6Ug/+uLTKsnbnacf7z5NLRGIRmdI6eFr/dvyZ8zm6745cFwzsb91iB3aO5o9/PpN36FJhwzIEAU8P6dA2KpC/+c8Dl68XV9UrwzCMVCJ+eUI3jULCx//GjlNmm0D8wWrZ8vFd+eMyg/WdPedZoSWokuOCnxxQHf/FvPJvDgn//YzsGjs4uTr+X87kHRSKHwBmDWnfPlrLH3/8a8bFvPKGZSQi8vUnejriX/ntcYOFql2Af2PrxF9lffu/5wRX0Grm+187/p9P5x7KKBIsNntI+6Tb8X924PKNBu8/AIhIovb7//r2U4J/P7X/f5uIv3Ns0PSBSU3Hz3Hc4E4Ro3okCMZ8b4iWvyDZlClTxo0b98QTTzSnsNVqFYlEEonE1VGh+8RyXInekldmLKgwDe8So5ZXf2TPf54mFpEhGlmAQhqolGqUUq1SqlFIAhTSNpEBjoffqrQ4vojtNKOvMiqVSgAIUslCA+T8eYudviL01Q8A8WGaILWMP9YZrEV6s0wsctzLf/UQBERolcTtkzaaoWiBhZ1EJKGQ1vygtFEMxVQXY1jO8aUsl4qCVLLa8ZtttKOkQ5BaFqqRO54xt9QoGH9UkNLxjlWa7bcqLQ3LEAAJEQEisvoVlFVZK0wC63GIRWRCuMZxs7DcZBJKJAqpOCZExR9zHHezxFAvkVgphmbYSK0yKkjpOHM5v0Iw/vhwjePdqDDasksNgsU6xQTJJNWfS26pUWe01itgNps1alVK6xDHx3S1UC8Yv0ouSbqdUxmWu5BbLvjVVzt+s43OLBT++0mMCOB/OgCAzmDNLRP4mAiC6Bwb5PitU6K3VFnsDYuRBJEYGeCIP6/MaKXqrBvHv7G1//45jruUV9HwjwcAIgIV0cHVH1NTf/+13v8ygzVPKH6o9/6XGXWG+u8/AIhIovb7f6VAL5gIA5XSxIjq+FmOu5hbXu+HFC8qSBmpVTYdP8MwscGKiOCAhnfdM0yELVG+zlRSaS6rsopJ0vHD32SjL+To+H9Ux1+ncxmtFMWwjv8QO80ev1bCcSAVk/wzqmRiuVSskIqCVDJxg9pM03LLjKdvlhVXmIv05sIKU0mFJUgtiwlRtQ7TTOnXlv9Fec8MBoNGo7lzOeRb8HP3QzRNUxSlUCiceE1sGm1ZrhZV/vPA5aIKc0yIKlQj73C7XQsAKoy2n07nFunNJRWW0AB5m8iANpEBbSICEyM0IbfrEM1nsdN5OlNembFAZyqsMBWUmwvLTSzHtYsK3Hi7Bc9kpY5dKWZYzkYxdprlz1goxmKnH2wbvnhMCl/sz6slH/+W4aig8BiWq7LYp/ZvN6Z7HH/mSn5Fgc4YGaRMjQ+JDFJGBytrV8IQQshTsEbYUtyqtGz9/cqFnPInB7Qb2S2WJIjGSjIsl68z3iiuulFSdaO4KutW1bQBSY880Jq/92ZJVb7OpJCKpWJSKROTBGGx05Vme5XZ3r9TlCNdLdl6jGK52BBVq2BVdLAqOljVKljJd3TdLb6R02it07FBEkSAUhKikTfxQpwIawb+CT93P4Q1Qp914vqtf+w+N65n/JKHu8jv1OwpIonWYZrWYZohKa0a3nujuOrE9VtmG22nWYudZjlOIREHKKVBKmnPduGORLh5dl9nBU8ShKNbBSGEvA4mwhYhOTb4s/kDHd3v92N4aszw1Jj7vw5CCPkJTIQtgmOQPUIIITfDCfUeY6fZf5/I8nQUCCHk77Ai4hl2mv1/2/8KVDmhLRQhhND9wBqhB1AM+/qOv9RyybJHUj0dC0II+TtMhO7GAby955xcIl4+vqt7phYghBBqAiZCd/v89yulldbl47s61r5CCCHkQZgI3ernM3mHM4pWT+4hFeM7jxBCLQJ+HbvP5QL914euvjmtl1PmCyKEEHIKTITuEx2k3Di9Ny7CghBCLQpOn3CfQKUU64JezcqA5fYOM2aas9XdBqfSDkIbywiTiUDZ+D+fXAQKkSe7kAOlgF3YyH9gIqyRlll85mbZ3BGdGm6Xej9yS42tQlQ4NOZuldvgpoErMnOFZigycyUWqLSDmQYTzVXc3laP5aDSDgBAgixQVmcXtIaZRkKCWlzzKZhozl4rk3Ec6G/vFmeggN95UG/nOACGhSqq/jWVYkJW98/krpKHjQGzwK5t1awMWBhProZ/V0m9No0E3Nn9zXEygqDuXA75luWdyZe7O/OCmAhrpGeWXMgtv/7Vn6sn9XDs2nqfdh3P2pl+c8vc/lgXbFqxBS6Uc2d13GU9l1nJXa3kKBbaBBDRSohWEtFKokswBEpBJQaVmNTKgM84BIBWBgBQabCyUlXtC9auvfEoFox0zbe7SkxKa31lEwRob39Ejm9zrZQgAEQkBHjfdiae4fgN4R5Go1GtVrvv+VALQNO0HJz8R4aJsMZjvROfHdV51/GsRf86tnpyD8d+1veGYtj39l24WVK1edZDmAXrsbNwRc+dL+fO6biz5dz5co5hITWE6BJMPBRBzGxHdtASEXezy4oBOI2mOdUxrJe7lsa9vxjEdk7jnJ+syGvQIqCc3QqAibBGfLgGAKb1b5cYHrBq24lnhncS3OfojjiAzAL9x79lhAXI33nqIRftJu9FTDRcreSuVnJX9JCh5y5VcDcNXLya6BJMdA0hliaTXYKhlQpTFELIMzARCujTPiI6uPea7aeySw2zh3Ro/gNL9Ja9p3IOZxRJxeTDD7R+pGf8XX27V1EgI0HmtXnTSEGBmcs3QZ6RyzHCTQN308DdrIJyG5cUSCQFEkmBML41sbIr2VFLSHHAMkKoZcBEKKx1mOb9p/teyqu4Y0k7zTpmx2cW6kUksWZyj4SIgOY8i5WBPTnstze48+VcsZmTkmBnIUJBtA2AlGCibwTRN4KManK2RYkFLuu5K3rupoHTWaHcVt0NFiglZCSEyCFcTsSoIFxBBMsgWAZBMsIxXoQD0Ns5vQ30dii3cWVW0NnAQHGVdrDQTQ3lcKi0c3YW9HYos0KZlRMR0EpFxKggRkW0VsOgKGJ2EpkYAK2UBA4VQgi1WJgIq73wZfpL47uGB9Z0TKnlkl7twh03+YTHsFyBzpR1qyrrluF6cWVmQWXvpPAXbq+dPaBT1IBOUc15ulsWePMc8/U1tkcoMaMdubk3GakgFGJgOMgxcter4HQZ9+U1dt5RRi4m2gdCUiARpyZIgCqKYzjIM8K1Ku5qJSchoZOW6KAlEjVE+0AIloFGQgKA3s7ZGCi3QYmFO1QMtyyszgblNii3crV7mYOkRKAUtFIIkhGhcgiVQ5CUaK0GhQhUzejsCZCQMhEESCBUDmFyQoF/TQghL4RfXQAAJht9o7gqWCNvosz8Tw+LSLK4whwWKE8ID0gI14zp0fqFsdq7HV9aaYe3LzAfZbBPtiPPPSqu1zcmIiBRQyRqYEQrAoDkAHKN3NVKuFrJ5Zk4AAiQECICOsXAokAyKZAIbvTJsQqGEELNgokQAOByfkVSdKC4yfa7957uV1Buah2mlonvsROv0g6bL7IfZDBj48jTE8Rx6jvnKgKgtZporYbhrTCxIYSQS2AiBAC4mFtukAf9XsgNiW4036hk4nubUGFn4fdC7scs9j857MNxZPoj4rYBmNUQQqilwEQIAPDnzYr/ca1/O8L0DCO2Dbn3ta04gAvl3NFirsDMlVqhyMzdqIIcI9c1hHgsnlzVrVm1QIQQQu6EiRBolssqqVwwJmR+srjvf+l/Z7OPxt/10H6KhQ3n2HcvMSEyYkAUEaciuodAqzgiQUMkaogmVpVECCHkWfgNDf++VGETK55NkUpJeL2H6OWTzPjW5F0N9/+rjJt1iInXwPFx4sRmrW+CEEKopcBZzbAvozwhKpif3z06llCJYUfWXSxkd6qMe/hX+tVu5H9HYBZECCHvg4kQiqzkQ+0jHTfXdBetO9vcRHitknvkN+az/qLHE/GdRAghr4Rf33BWHDu6c4jj5ogYgmHhj6I7b0JTYYNRvzDrHiDHxuHbiBBC3srfv8GLzMBxdVZ8JgAWdSbfvXjnSuGzacwjrYmnkvz9PUQIIa/m71/i58q51JD6HXsz2pFpJexNQ1OVwi+vsRfKufUPeO0K2QghhAAAE+GBi8WdNfX3tlKK4amkpiqFNw3c8hPMtsEiXF0TIYS8nb8nwksXrrSRC2zy+EKK6LsbbI5RoFJIs/DkH8zKVFFKMI4RRQghr+fXibDCaKMpakCCuuFdEQp4tiO5+pRApfD1M0yAFJ5L9uu3DiGEfIZff5ufzi7XS7Udg4TfhGVdRL/lsxfK61QK9xdw/8xkvxwoxsogQgj5Br9OhFeKjaDQNLZVukYCb/YUjdvP3KiqzoV7c7knD9Lbh4gjFMIPQQgh5HX8erDHLSOtVjS1/+xTSSTFwqB9zDMdyAIz959sdu8Icc8wrA0ihJDvcG2NsKyszGazNXYvy7JlZWV2u92lMTShwmIPbDIRAsCcDuSWviITzXXUEkfGYhZECCFf46pEmJWV1bVr19TU1MjIyC1btjQssGHDhqCgoC5dugQFBT322GNGo9FFkTRBb6ZDmrExxMNxxJs9Rc91JnEfQYQQ8j2uSoRLliwZOnRoQUHBsWPHli9fnp2dXa/A5MmTi4qKCgsLi4qK8vLy3nnnHRdF0gSznQ5X36FGiBBCyLe5JBGWl5fv27dvyZIlANCpU6dhw4Z999139cokJCQolUoACAgI6NGjh06nc0UkTSNjkjrGBrn/eRFCCLUcLhksk5OTI5PJYmNj+Zvt27fPyspqWOz69esHDhy4fv36iRMntm/f3tjVaJq+devWzZs3+ZsymaxVq1ZOifMWqWmtwTXSEELIr7kkEVZVVfG1PZ5Kpbpx40bDYkaj8fr165mZmSKRiKbpxq6WmZl56NChTZs28TeVSuWxY8fEYuHIrVarSCSSSJrV4JlnkGrBZhRaPgZ5F5PJRBDYg+t38HP3QzRNUxTFMEwzy8vl8sbyhYNLEmFYWFhlZSXHcfzfqF6vDw8Pb1isa9euXbt2BYCVK1e+8MILe/fuFbxa586dV65c+cQTTzTnqcVicfMTYYmVahumUvn1FBIfwXGcWi2wQhDybfi5+yE+ESoUzpzN7ZI+wvj4eLlcfv78ef7myZMnU1JSmiifmJhYUVHhikiaoLNynXRnMQsihJCfc0kiVCqVM2fOXL58eWZm5qeffnrp0qUpU6YAwJkzZ/r378+Xeeeddw4dOnTlypX//Oc/69atmzhxoisiacKNcnuATe/mJ0UIIdTSuKpCtGHDhldffXXixImtWrX6+eefAwMDAUAqlUZGRvIFWJZ97bXXdDpdVFTUqlWrZs2a5aJIGpNdSYkkWB9ECCF/56pMoFQqG04N7Ny5844dO/jjZcuWLVu2zEXP3hz5Bkpypx5UhBBCPs9/F90urqIVMpxNjxBC/s5/E2GZiVLKsEaIEEL+zn8TYaWFanrrCYQQQv7AfxOh0UoFyDERIoSQv/PfRGih2CAlJkKEEPJ3/ttJVhQQP/ZBXGgUIYT8nf/WCHV2IkKFiRAhhPydnyZClgMDBYFST8eBEELI0/w0EVbYIUACIly2HiGE/J6fJsJyK5dccjKvzOjpQBBCCHmYvyZCG0gYq4jEKiFCCPk7/02EYpZR4TxChBDye36bCDlgKBUusYYQQn5POBPQNP3ll1/+5z//ycnJMZlMte+6ceOGWwJzrVIzQxCkWOSnvwMQQgg5CCfCOXPmfPHFF126dOnSpYtKpXJzTG5QaqJxM0KEEEIgmAhpmt62bdurr776xhtvuD8g9yg326VS7CBECCEk1Eeo0+lsNtuECRPcH43b6M2MQoo1QoQQQkKJMCwsLC4u7vr16+6Pxm2qaCIsWOPpKBBCCHmeQCIkSfKTTz5Zs2bNmTNn3B+Qe1SINJMHp3g6CoQQQp4n3Dz42muv5eXlde/ePTw8XK1W177LN0aNltsgWObpIBBCCLUAwolwwIABXbt2dXMo7lRu44JluKwMQgihRhLh//3f/7k5DnfiACxWm4QDABw4ihBC/s4fZ5QbKUgwZh3JKPR0IAghhDyv0UR4+vTpyZMnJyUlKZXKxMTEcePGHTp0yJ2RuU6VnZMDrZTirrwIIYQaSYT/+9//+vTp88svv6SkpMyePbtnz57Hjh0bMmTItm3b3ByfK1RRIOdolQzbRRFCCDXSR7h48eLu3bvv27cvODiYP2MymaZMmbJ48eJJkyaJxd49Fd1AgYSjVHLvfhUIIYScQnhlmUuXLm3YsMGRBQFApVK98847paWlV65ccWN4LlFlBxGLNUKEEEIAgomQpmkAUCgU9c4rlUoAoCjKDWG5VBXFkSyNNUKEEEIgmAjDw8NbtWr1zjvvcBxX+/ymTZuUSmWHDh3cFZurVNkBGKwRIoQQAhDsIyQI4vXXX3/66acvXrw4ceLE6Ojo0tLSffv2paWlrV27tmFN0etUUQAMrcRdeRFCCDU2WGb27Nkymez1119fs2YNfyYuLu6DDz549tln3Reay1RREN46TkTiyjIIIYQaSYQAMG3atGnTppWUlJSXlwcGBkZHR7szLJcyUlynLp08HQVCCKEW4Q7NgxEREREREe4JxW2q7BCn8nQQCCGEWoaaRHj16tVDhw49+OCDqamp3377rdlsFnzAnDlz3BWbq1RRECD1dBAIIYRahppEeOzYsblz565fvz41NXXp0qW3bt0SfIAvJEKzrbLUBG3DPB0IQgghz6tJhNOmTRs3bhw/WTAzM5NlWc9F5Vomne56RRn0wUSIEEKoViKUSqWOpWS0Wq2H4nEHG0WrA3HuBEIIIYDGFt2OjIxMS0urdzI9PZ0gfGHKgc1OBypwNj1CCCGAu9qPkGEYb19um0dTdIDCF14IQgih+9fcRGiz2Q4cOBAVFeXSaNyDoagQFdYIEUIIAdSbR7hp06alS5fyx3379m1Y+uWXX3ZHUK5Es0CwVBDWCBFCCAFAvUTYr1+/t956CwDWrl07ffr01q1bO+6Sy+UpKSlDhgxxd4DOVkWBnGBUcqwRIoQQAqiXCHv27NmzZ08AoCiqXiL0GVV2TsrhitsIIYSqCeeDV1991c1xuE0VBdaw+LaRAZ4OBCGEUIvQaMVIr9f/9ttvWVlZFRUVtc/zbafey0CBLDhcIcUaIUIIIYDGEuGJEydGjx6t0+kkEolIJLJarQAgkUjUarW3J8IqO2iwfxAhhNBtwtMnFixYkJiYmJ+fP23atBdeeMFsNu/YsSM6Onrr1q1ujs/pqiguQOoLywIghBByCoEaIUVRZ8+e/emnn1q1agUADMMoFIqJEycqFIqZM2eOHj1aKvXivRv0VpbNvQqA+xEihBACEKwR6nQ6mqb5IaMBAQF6vZ4/P2jQIJ1Od+XKFbcG6GzlRpultNjTUSCEEGopBBJhWFiYRCIpLi4GgLi4uPT0dI7jAODatWsAIJPJ3Byic1VZKIlE5OkoEEIItRQCiVAkEvXp0+fAgQMA8Pjjj2dkZIwdO3bVqlUTJkxo27ZtmzZt3B6kMxlstMSbm3YRQgg5l/Bgmffee2/QoEEAEBMT88033+Tk5LzzzjuxsbG7du3y9nW3TVZKjjVChBBCtwlntdTUVMfx5MmTJ0+e7K54XM5sowNlOH8CIYRQtbvYhsk32GyUCtdXQwghdFtNSjh37tyePXvu+IBVq1a5Mh6Xs1G0WoN9hAghhKrVSYRr16694wO8PRFSNKOWYyJECCFUraZpdMaMGbZm8GCsTlEZFNc3OdbTUSCEEGop/K63zMDJQlU4ahQhhFA1vxssY6JBjYNGEUII3SacCCMjI4lGuDk+pzNSnErs9a8CIYSQszS6Ma/JZHLcNJvNBw8ePHPmzPPPP++uwFylTfFpuzUVZHJPB4IQQqhFEE6ECxcubHjy+eefv3jxoovjcS07CxraIPK79mCEEEKNuovBMgsXLmzXrl1+fn5MTIzrAnIpEwVilsYJ9QghhBzurnLEcZxOp3NRKG5QaWcJYOVSTIQIIYSqNSsR2u32S5cuLVy4UKFQtG/f3tUxuY7ORHEkDpVBCCFUQ7huFBkZWVJSUu+kUql877335HIvHmaiM9MgwuogQgihGs0aNSqVSmNjY/v37x8REeGuwFyiwkwTXr6NFEIIIee6i1GjPqDKQpEinE6PEEKoRlPVI5qm8/LyCgoKIiIiWrduLfX+jd0tDCeWyTwdBUIIoRZEeLAMx3EbN26MiIhITEzs379/UlJSaGjoypUrKYpyc3zOpQkOCe+ceudyCCGE/EajfYTr168fO3bsY489FhUVdevWrZ9//nnjxo1FRUWff/65m0N0IiMFKuwiRAghVItAWrBarZs3b37ppZfeeustx8knn3yyd+/eixcvXr9+fVRUlBsjdCZccRshhFA9Ak2jFRUVZrN5xowZ9c7PmDGD47iCggK3BOYSBhutIDlPR4EQQqgFEUiEYWFhISEheXl59c7n5uZKJJI2bdq4JTCXyLpyvaIg39NRIIQQakEEEqFYLN6wYcOCBQuOHz/uOHnp0qWnnnpq1apVQUFBbgzPyWwULceFZRBCCNUiPHTkhx9+KC0t7d27d3R0dFRUVGlpaV5enkwmIwhi9+7dfJlXX311/PjxbgzVCSiaUUlxe3qEEEI1hBOhVqt98MEHHTeDgoKSkpLqlZF54YQ8mmZUMkyECCGEaggnwu3bt7s5DvdgaEaNiRAhhFAt/rVHLcMwGkyECCGEamk0EV67dm3+/Pl9+vSJjY3t2bPnrFmzzp07587IXIFlGY0cEyFCCKEawonwzz//7Nat29atW2UyWd++fQMDA7dv396zZ8+9e/e6OT4nY5gACSZChBBCNRrdfSIxMXHfvn2xsbH8mdLS0smTJ8+bNy8nJ0ck8tZcYpIFRmq9b4wPQggh1xGoEer1+lOnTm3atMmRBQEgLCzso48+KigoyMzMbOalOY67cuXKjRs3Gitgt9szMjKys7M5zk2rvVwNTg5Te/0eGgghhJxIeK1RAGg4cT4kJMRx7x3p9fpRo0bp9XqbzdapU6ddu3bVm27x/vvvr169OjIy0mAwRERE7N69OyYm5h5fRLOZaVDiotsIIYRqEagRhoeHh4eHf/zxx/XOf/LJJzKZrOGEQkGbN28ODg7OyMjIzMwsKSn56quv6hXo2rXrlStXLl++nJ2dHR8f/8orr9zbC2g+mgUWQOpf42QRQgjdgUD9iCTJlStXLlmyJDMzc9KkSdHR0aWlpXv37t23b9+LL76oVqubc90ffvhh7dq1JElKpdKZM2d+//33c+bMqV2gf//+1RGIxf369du3b9/9v5immRmIpCsAwl39RAghhLyIcEPh4sWLCYJYt27dokWL+DNarXbNmjXNr7fl5uYmJibyx4mJibm5uY2VtNlsX3311axZsxorYLFYLly4EBoayt8MCAiovepN85UaqfalZwFG3MNjEUII+apGe8yee+65BQsWXL16taysTKvVdujQQSJp7lZ+DMNYrVa5XM7fVCgURqNRsCTHcfPnzw8NDV2wYEFjV8vLy7t27Vp6ejp/UyqVbtu2TSwWjtxqtYpEIsFQC8vtHEkaDIZmvgrkRRr7A0O+DT93P0TTNEVRNE03s7xcLr9j8mpq6IhIJOrYsWNzo6v7wNDQ0PLycv5meXl5ZGRkw2Icxy1atCgzM/PXX39tYkpGUlLSuHHjnnjiieY8tUQiaSwR0mVGghRpNJrmvQjkZfCT9U/4ufsbPhEqFAonXrPRoSMXL16cOXNmampqaGhocnLylClTHHWy5ujevbujfFpaWo8ePRqWWbFiRXp6+t69e5vZ73ifqqwMeO0MSIQQQi4iXCP86aefHn30UalUOnTo0D59+uh0ugMHDmzfvn3r1q0zZ85sznUXL148ffr0du3aGY3Gf/3rXwcPHgQAjuNat2793//+NzU1dePGjZs3b3799dd37NgBAFqtdvLkyc57XQKMdoYkccwoQgihOgQSIcuy8+bN69Wr1+7du7VaLX/SbDbPnDlz4cKFEydOVKlUd7zuqFGjPv74461bt0okkl27dnXr1o0///DDD/PXDA0NnTlzpmO6vWDbqXNVWRkSa4QIIYTqIhqu6lJUVBQdHZ2ent67d+/a5/Py8uLi4v766y/Bdk7XmTJlSvP7CJsYLPOPw8V/nM/dt/BeRpyiFs5gMGBfkR/Cz90PuXmbcBgAACAASURBVKmPMDAwUCKRSKX1lyLjswu/vow3MtsZsRhrhAghhOoQaBpVKpVPPvnkunXrvv/+e0fVimXZN954Y/jw4fHx8W4N0HnkGo3W5e2vCCFfs23bNh/YhM7rBAUFvfTSS+55LuHBMp06dVq/fn3btm3Hjh0bFRVVWlr6yy+/5OXlLVmyZMOGDXyZv/3tb126dHFPlE5BKtXhUXfu3UQIodq2bNnSuXNn760DeCOWZV999VUPJ8J//OMfFRUVFRUVH374Ye3z69evdxyHhIR4VyLEFbcRQvdm6tSpjlUhkRvQNL169Wq3PZ1wZiguLnZbBG5jpjmtlPB0FAghhFoWP5pXV1ZaThsrPR0FQgihlsWP2gr1JSUGVglQf59FhBBC/syPaoR2mlVKcPoEQgihOvwoEdI0o5RiIkQIIVSHHyVChmFUMkyECCGE6vCjPkKGYVRYI0QIebkffvihsrKSJMnIyMg2bdo0sVneI4888t5777lnBqTBYGjOzn8tU1M1wrNnz3777bcfffQRfzM/P1+n07klKpdgGCZAjokQIeTdVq9e/csvv2RmZn733XejR4/u2rXrlStXBEt26dLFsUG6q40cOfK3335zz3M5nXCNUK/XT5o06cCBAwDQqlWrZ599FgDWrVt39erV//3vf24N0IkYRoNNowgh7zd9+vQJEyYAgN1uX7x48bhx4y5duiQWi48fP96uXbuMjIxr167NmjVrzJgxAQEBt27dysrK6tWrF/9YvV5/4cIFfn2AysrKo0ePmkymgQMHRkREAEBJSUlhYWFsbOzPP/8cHh4+YsQIgqg//bq4uDgtLc1kMvXo0aNTp04AcPXq1crKyrNnz8pksjZt2iQkJHAcd/To0ZycnK5duyYnJ/MPPHLkSNeuXdPT00tKSkaPHh0SEvLXX39lZGQMHDiwdevWbnv3GhKuEc6fP//SpUu7d+/es2eP4+TUqVMPHz5sNBrdFZuTcSwTiIkQIeRDpFLphg0brl+/npaWBgDz5s0bN27c22+/feLECQB49NFHs7OzaZoeOnRoRUUF/5AtW7Zs2bIFAC5evNijR49du3YdOXKkZ8+eJ0+eBIA//vhjxowZ06ZNO3Xq1LJlyxYuXNjwSceOHXvw4MFz586NGTPmk08+AYBz587pdLqjR4/u2LHj8uXLHMc9+uijS5cuPXPmzMMPP7xu3Tr+gY8//vi4ceN++OGHXbt29erV66233lq/fv2RI0e6d++ek5PjljdMmECN0GKx/Pjjj99+++0jjzxy6NAhx/kOHTrQNJ2Xl9dEk3RLlhPcoXWY2tNRIIS83rsX2Qx9/Q3sXGRwFPFEm6b6sAICAmJiYm7cuDFgwAAAeOCBBzZt2lS7QHR0dP/+/X/44Yd58+YBwFdffbV582YAWLx48YoVK55++mkA6Nu376uvvvrrr78CQEFBwZEjR7RabVZWVseOHd9///16W5rzKRMAZs+ePWLEiGeeeWbSpEmbNm1auHDhmDFjAGDPnj3nzp27cuWKVCpduHBhcnLyjBkzYmNjAWDChAmLFi0CgI4dO2ZmZu7atQsAzGbzjh07li1b5qw37W4JJMLy8nKKohyVWQeRSAQAZrPZHXG5QJE4JACXWEMI3bcOWkLhroGGseo7f2vZ7XaxuDqgoUOHNiwwc+bMd999d968ecePHzcYDMOGDWNZNi0tLTw8nK87VlZWOnbYSE1N5bdPT0hIYBimvLw8NDS09tW+/vrrrVu3FhYWUhRVWFhotVrr9USePHly+PDh/F5+CQkJbdu2PXv2LJ8I+/Xrx5dJSEhwLN+akJBQVFR0F2+Kswl8mCEhITKZ7OLFi/VqfkeOHCFJMiEhwV2xORPLAc0CtowihO7fyBgCoKX8qi4sLCwuLk5JSeFvKpXKhmXGjx//7LPPXrly5csvv5wxY4ZIJGIYhuO40aNHR0VF8WWeeeYZ/qD2ZrQEQbAsW/tSaWlpq1ev3rdvX6dOnSoqKoKDg2marvd0BFFny3eO4xwdjY6LkyTpGGJKkmTDLeLdSSARyuXyCRMmvPzyy506dXJEf/r06eeff37kyJHBwcHujdA5zDQoxC3mLxchhJyhoKBg9uzZgwcP7tq1axPF5HL5448//q9//Wv79u1Hjx4FAJFI9NBDD5WUlEyfPp0vwzBMc54xMzMzOTmZHyOzb98+x3m1Wm0ymfjjnj17Ll682G63S6XSrKysGzduNB2exwlX7997770hQ4akpKRER0eXlZW1b9/+2rVrcXFxH3/8sZvjcxaDnetYfh6gh6cDQQih+7VmzZqPPvqosLAwLy9vwoQJ77zzzh0f8tRTT/Xt2/fBBx/s0KEDf+bDDz8cO3ZsWlpa27Zts7KyxGLxtm3b7nidoUOHLlu2bM6cOSKRKCsry3F+3LhxL7744s6dO5944okJEyZ88cUXDz30UL9+/f7973+/+uqrMTEx9/xi3UA4EYaFhZ04ceLzzz/fv39/QUFBcHDwrFmz5s2bxzcce6MKCxVg9uJJkAghxNu1a5fVagUAmUyWlJRUuyXzu+++q51y9uzZ4+jM6tWr14kTJ8LDwx33duzY8fz582lpaYWFhaNHj37ooYcAYMSIET161FQY/vzzz3qtgHFxcRcvXvz999+Dg4OHDh164cIFvjF2wYIF48aNKykpiY6OJghi586d6enp2dnZc+fO5auPAPDLL78kJibyx5s3bw4Kqt4CYd68efUaYN2M8GzLbHNMmTJl3LhxTzzxRHMKW61WkUjUcHWD9ALLqq/SDqwQ6EZGPsBgMGg0Gk9HgdzNPZ/7gAED1q1bhxvzuhNN0wqFgqIowbsoilIoFE58OuFRue3bt+eHEtV28uRJL+0gBACDlQHSjxZWRQgh1EzCuaGysrLhQCC73V5Z6a0b2xqsDCHCMaMIIYTqu4u5MKdOnYqMjHRdKC5ltGMiRAj5gs8//7y8vNxxMyUlZcSIEc154GuvvdaxY8dmdjN98cUXW7dulUql/FqbTRg0aNB3330XHR19x2sWFhY+/vjjR44caU4A7lQnEW7dupVfC6esrGzSpEm150hWVlbqdDp+YQJvZLQxYkyECCHv9+abbyYnJ7dr146/aTAYmvnA7OzskJCQ5pTU6XSLFi06fvx4c9Lb2bNnbTZbcy6rUCgE5/t7XJ1EGBcXN2zYMAD4+uuve/bsya/BygsODk5OTn788cfdHaCTmOwMKcI+QoSQL3Asuu2Qk5NjMplkMtn+/fvj4+NHjRrluOv333+/evXq4MGDG7taTk7OwYMHFQrF8OHDg4KCqqqqdu3apVAoCgsLWZatN1nAarXu378/Pz+/bdu2gwYN4kcmMgzz73//W6fTjRo1ih+2yjBMenp6RkaGWq0eNmwYP1pVLpf37duXv87Ro0dTUlKOHDlSVFQ0dOhQx2hSj6iTCIcNG8YnQpZlly1b1r59ew9F5XxWmpOI/WjzRYSQX9mxY8fXX38dGhrau3fvTZs2TZkyZc2aNQCwbNmyX3/9deLEiXPmzNHpdLWnRvAOHDgwderUGTNmlJWVLVu27NChQxKJJD093Wq1HjhwoFu3brWX2ywuLh40aFCHDh26dev2xx9/qNXqPn36AMDcuXM7d+5sNptXrFiRkZERFhb2888/f/7556mpqUVFRcuWLTt69GhiYmJxcfGkSZP0ej0ATJ8+PS4urmPHjiRJLl++/MyZM+7ZN1GQcG747LPP3ByHq2kjwqNE3joJEiHUohgO7qJv5bvnuaStO6h61e8CnD179vz58/njdevW8QtnW63WX3/9VSwWjxkzZurUqWvWrMnJyfn000+vX78eHh6+fPlywUyzbNmyjRs3PvXUUwCwYMGCN954Y+vWrYsXLz5w4MBbb71Vr/CaNWv69ev3z3/+s975GTNm8Ff429/+tmfPnqeffvrhhx9++OGH+XtDQ0M/+eSTDRs21HvU+PHjn3/+eQDQ6/U7d+5sWYtu8yiKOn78+M2bN/mZmw5z5851fVTOZ2MItUJ653IIIXQn0laJpNRNG95KouIbnnz33XdHjx7NH6vV1ZvqPPjgg/zS23zdCwDOnz/fsWNHvllSoVDwU+Zroyjq4sWLw4cP52+OHDly9erVTQRz/Pjx119/veF5x5UTExNLSkoAoLy8/OWXXz527JhcLtfpdI7dEBt7FB+wpwgnwitXrowePbr28jkOXpoIzTQosWUUIeQMsnZdZe08uXimRqOptyMEADgWEnGseU2SZO0VRBuuJkoQBEmSjlVdaJoWN9mFVO+CDZ/acbXly5fL5fK//vpLoVC8++67hw8fbvpRnl3aRXj8yNy5c+Vy+cmTJ6dMmbJ06dKbN2++//77UVFR/N5R3sjCcAoRrrmNEPIj3bp1y8zMzM3NBQC9Xs8vt12bWCzu0aPH7t27+Zv/+c9/evfu3cQFBw4cuG3btuYkrRs3bvTr10+hUHAcV3uD95ZJIPnTNH38+PGdO3c+8MADMplMKpUmJCQsXLgwNDR00aJFjzzyiMgL5yHkXb9Ba6SQGu/pQBBC6H4tX758/fr1/PFDDz307rvvChaLjo5euXLlgAEDxowZc+LECcGRmZs3b54wYcKJEydKS0tzc3ObnjW4atWq0aNH9+vXr1u3bpcuXXrjjTcc+wvWM3Xq1KVLl6alpZ09e7b2aqgtk0AiLCsrs9vt/JBRlUpVVVXFnx8zZsyUKVOuXLnSuXNnt8boDDarXaTBtlGEkNfbvXt37aEbAQEBADB9+nSLxcKfCQ4OTk9P549XrFgxduzYq1evrlq1ymq1NtytsFevXpcuXTpx4oRMJuvduzc/fTwpKan2FksOQUFBR44cOXXqVH5+/ty5c7t06QIABw8edEw3XL58Od+4OmfOnD59+ly+fPm5557TarX8qmStWrVyzKbfs2dPmzZt+GOPL7otkBtCQ0NFIlFpaWlSUlJMTIyj1lxYWOje2JyJohmF2PsqsgghVE+9LdN5tad9SySS7t27O24mJyfXngLRUFBQ0MiRI2ufUSgUjp1+6xGLxb169ao9+KX2XoP8NvQNn5fv0ZRKpY7L1r5+c6btu5RAH6FYLH7ggQf4vs3HHnvs5MmTTz/99Icffvj444+3atXKsZyBd6EZVinFRIgQQqg+4cEy69ati4uLA4B27dpt2rRp9+7dCxcuNBqN27Zta/mtvYIYmlHJMBEihBCqT7jbrPZycIsWLVq0aJG37/fGMIwSEyFCCKEGhGuEa9euzcnJqX1Go9Hk5ua+/PLLbonK+RiG0WAiRAgh1IBwIvzggw8KCgrqnSwoKGi4Ro634BhGg32ECCGEGriLDRnKy8sDAwNdF4pL0aQ0VOOVvZsIIYRcqk4f4dGjR/fu3QsARqNxy5YttZcDsNvte/fuTU1NdXeATnItsntMkMTTUSCEvA9BEK+99lrDJc2Q63AcRxDuWwusTiK8cOHCp59+CgAWi2X37t21F52Ty+XJyclvv/222yJzLjMNCr+ZT8/ZLLSumNYVi8NaSSLjPB0OQt5t06ZNN27c8HQUfsed61rXSQ7z58/nt/aIjIzctWtXw6XKvZeFAaUfdBFyNsutd5fSZUXikEhRcIQ9JzNo0kJFqvAaSAih5ujevXvt+enI9wjXkjy7I4bTUSzIGauY9P2m0cq9n0tj20Us38LfpApulH22htYVa4ZM9GxgCCHUYgkPljl//vy5c+f4Y4qi3nzzzfHjx69bt46iKDfG5jRVNrZXSZqno3A5282LlgtpgeNr2hMkrdqEP7/ZfPpgxfb3wKO7nCCEUIslnAgnTpy4f/9+/njt2rUrV668fv362rVrFyxY4MbYnKbCwoAb+109gqPsFds2aScuJBXq2udFgSHhi/6PKso2/G+7p2JDCKGWTCARms3ma9euDRo0CAA4jvvss8/mzZt38eLF77///ssvvzQYDO6O8b5VWWkgfbyHsOqnL6Vx7RXJAnuJETJFyKxVxiN7bFfPuD8whBBq4QQSoV6vB4CwsDAAOHfuXFFR0dSpUwFgxIgRdrs9OzvbvRE6QZWN4ci7mDHpdeiSPPOp37WPzmusgCggKGjK0vJv/8FUVbgzMIQQavkE0kNISAhJknzC+/HHH1Uq1YMPPggA/GZXzdmbuKUx2BjCp2uE5tMHlT2GkKqAJsrIO/RQ9flb+VfrgWXcFhhCCLV8AolQJpMNHjx40aJFGzdu/OSTTx555BGZTAYAly5dIgii9nZT3sJgYwiRLydCy7mjii5971gsYOQ0QiSp/PlrN4SEEELeQrjB8JNPPgkICHjttdeSkpI2btzIn/zqq6+Sk5ODgoLcGJ5zGG2MyHcTIX0rn7WapPECe3XWRxDBM1dYTv1hueD7Y2gRQqiZhOcRtmnT5ujRo/VOvv3226R39rSZ7Azpu4nQfOawIrVfM4fFkkpN8IwVun/9P0l0ojgk0tWxIYRQy3cXiS0gIECtVt+5XMsjkskVXliRbSbL+aN3tXaMNL6Deuik8i/Xc7RXzgpFCCHn8soa3t1SaAJCWid4OgqXoMsKWUOFLKHzXT1KM3CCSBum37XFRVEhhJAX8YtEaGFA4aMto5ZzRxUpfe96uQCCCJr6gj33auXez10TF0IIeQ2/SIRmGpQ+uvWE5ewRRdf+9/BAUq4MW/CW9cqpql++cXpUCCHkRfwiEVZUGgmb2dNROB9dXkJXlMraJN/bw0mFOmzeWvOZw4YDPzg3MIQQ8iJ+kQgL8woqS0o8HYXzWTNOKDr3up/V40i1NmzBW+ZTf+g+X8cYcNEZhJA/qmkxzMzMPHTo0B0f4M7NEp3FTjFyjczTUTifPStD1v5+t0kTBQSHL/vAeHBXyYb5gaNnqB4a7ZTYEELIW9QkwrS0tGeeeeaOD/DGREjRjELig6Nl7NmXA0ZMvf/rECKxZuhkefvu5dveMR7bp+w2QJHaTxzW6v6vjBBCLV9NIpw2bdr48eP54/Pnz0+dOnXGjBmPPfZYRESETqf76aefPvjgg48++shDcd4Xn0yETFUFazGJw2OcdUFJTNuIFz6w3bxoOXuk9P0XSaVGHBEnDokQhUSKAkNJuYpUqAiFipSrSKVXTidFCCFBNYlQKpVKpVL+ePHixS+99NJzzz3H34yNje3atWv79u3nz58/ZswYicTLtnpnGFYp87VEaM++LI3v4OR9FklS1raLrG0X7WPPUgU36NJCuryYKrhpzfiLs5pYi5G1mjiLmbUYSYWaUChJhYZUakilmpQpCKmckCkAgJDKCbEYWJa1moGhWbuVo2yc3c5ajJzdCgwNAKzFCBwQMjkhEoNITMqVpCqAVAWQSg2pDhQFBJNqrUgdSKoDSYXas3tJcgzN2axNFKh+FQghryXwD1xWVnbu3LmRI0fWOz9ixIji4uKMjIzU1FS3xOY0DMOofDARZkjjO7nq6gQhiWkriWnb2P2s2chaTZzZwJqNrMXAWi0cZeNsFgDg7FbWbAWSJJVqEInFUjkhkRJSGalQExIZiCUAQCpUQBCc1cKxDDA0azGx5irWZGBNVXRxru3qWdaoZ4yVrLGSNRtIuZJQqEm5khBX/wIj5ErOZgWOBQCOpji7jWVZA2UDlgaWY60mZ74TIjEhkzdRgLNZOYZuWJ6QyAixFAAIuYIgRfxrJyRSQiIlRBK+DKlQARD8SQCovakyIVfe25YpHEM1lrlZi7Hpx7JWM7DsPTypp9jtdvb2z3fkJ1iWFbfvDh3ud3hEbQKJUCwWEwRx+vTp9u3b1z5/5swZAJB64Z8dwzBqqe8lwssBo6Z76tlJpZpUqiE4wg3PxVpNnNnEWozc7Q2kOKuZkMmBIAGAEEsIqcxkMqmDQgiRBEiClKvcEFVjHDVIjrJxtB0A+HzP14Y5ysZRFEdTnN0KtzMTZ7exZiMA0LrimutYTBx3LznJkWUbqp1ohQvIleBV6wkTIhsp88FxcKgpLAvg5FYigUSo1WpHjhy5YMECm8322GOPaTQai8Xy008/LVmyJDU1tUOHDs6NwA04htH4Vo2QY2h7wU1p6/Z3Lur9SLkK5CoRhDdVRmoQaTRuC6kJhEhMVPehYk+q6xkMmpbxuSO3oWmaopy8TrLwr78vvviiY8eOs2bNCggI0Gg0SqVy4sSJWq32xx9/JDzaYXNvqrRxMSGerCU4HZV/XRwazffJIYQQuh/CnfwRERFHjhw5fPjwmTNn8vPzIyMjU1JShg0bJhZ75aCAUnWrYKVP1Qjt2ZdlCc3YgBAhhNCdNJrYSJIcNGjQoEGD3BiMq5hpTiHyvopsE2zZlxWde3s6CoQQ8gWNJkKDwbBz585Lly6ZTKYtW7YAwO+//67Vart3d+ZYHfewML626LY9KyNwzCxPR4EQQr5AOD9cv3592LBh+fn5YWFhIpHIkQh//vnnU6dOuTdCJ4iquKEQe98Yn8YwlTqOpsWhUZ4OBCGEfIHwYJk5c+Zotdrr169v27bNcfLRRx89c+ZMeXm5u2JzDoONbW3M8qWWUfvNS9hBiBBCziKQCKuqqg4dOvT222/Hx8fXHiPapk0bjuPy8/PdGJ4TVFoZlvCpkTK27MvSeEyECCHkHAKJ0GQycRwXGRnZ8DwAsF618AQAVFppfua1z6DyrknjkjwdBUII+QiBDBEWFhYYGHj48GEAqF0j3Lt3r1Qqbdeunfuic4ZKK8OJfKhGyHFUUbYkOtHTcSCEkI8QXmLt73//+4oVKzQaTUhICAAYDIYdO3YsX7585syZKpWXzUw32Jj72bq2paErbhEyOakK8HQgCCHkI4RHja5bty4nJ2f69OkAQJKkVqtlWXbIkCFvv/22e8NzAqOdubfFi1smqjBLEp3g6SgQQsh3CCdCmUy2Y8eO9PT0AwcOFBQUBAcHDxo0aPjw4d64vprRxoh8qGmUKriJ7aIIIeREwokwJycnIiKiT58+ffr0cZy0Wq2FhYWJiV72LWyys6TYhxJhUZaiS9+mSlRmgDwCZCHuigghhLyb8HDKXr16nT59ut7JM2fOtGnTxvUhOVlQSJAyzssG+DSBKrjZVNPo1Q/hwED4bzv4MQwODIQTz8Ctw26MDiGEvM9drDxGUZTX7U0PABQhVgf4yEYtHGVnKsvEYa2E787ZBhkbYNRJUMWDtQQqM6Aq070BIoSQ96mTCK1Wq8ViAQCWZQ0GQ0VFheOuqqqqnTt3xsTEuDvA+2amfWehUaooSxweS4iEXo/xBpxaCkMPgCoeAEAeAfIIiBjs3gARQsj71PlK3bJly9KlS/njUaNG1StKEMTGjRvdFJfz+NKK21RhlrSxdlFVAoy52FTXYPlpSJ8OPT+G8P4uCg8hhLxRnRQxbNiwTz75BABefPHFefPm1e4R1Gq1ycnJnTp1av6lTSbTsWPHAgMDe/bsSZLCnZElJSUWiyU+Pv5eYm+e7JwiiuEAvK8u2xBVmCVuLBES5B0GyAR3h9T1kDYVwgdC6npQxbkiQoQQ8jp1EmFKSkpKSgoA2O32CRMmtGrVSF9UM1y7dm3QoEEpKSlFRUXh4eE//fRTvf7FY8eOTZo0qaysTK1Wu3Qh78rKKrnU+7o2BVGFNxXJfeqe44CqAklgsx4fMw4ih8Hl/4NfukObOdB5BUicMTGfo8F6C6y3gLFA6O3wWBtc3QKsrU5JsRpICWi7QKhjM0UOKCNIfKQTFyHkjYQbDRcuXHif133jjTcmTZq0efNmm832wAMP/Pjjj0888UTtAm3btj1w4EBFRcXYsWPv87maZqcYrUru0qdwG6ooRxIdX+dU9rdQ9Bv0+aq5lxCrIGUNtJ0L51fBf9tD8kqInwbS4LuLI+srKEsHYzZY8sFaCvZykIWBPBzUCdBvZ/XKrhwLdh2wVJ0HmnKBo8B6qyYRlqbBwb8BbQapFiRakGqrD8QqiJsErR6uLqY7DiUH64fB2oA2Q5vZoLm98mr2d6A/LxAwKYWOy2qy/o1/gk0HIjmIFHWKyUIg9rHbF7dDwX+BE1pZV50AwQ9UH9v1UHwARLL6lwKAoFSQhVUf00aw3qq5iyBrfrtIgwSeAiHkRjWJ8Pjx4998880jjzwyfPjwV155paqqSvAB77//fnOuu2vXrj/++AMAZDLZpEmTdu3aVS8RRkREREREpKen30fwzWKnGIXEFxbdZvSlhEhMqrV1zt78AtrNv+trKaKh179Afx4urgXaBJ1erj5vrwDDdaAqgbUDbQLaDKYsMFwHYxY88D4E396TmTZCYDK0egSUMSAPB3k4QIOVFkQK6PLGnSMJ6wuTqoCjwa4Hux6oSrBXgF0PtAmUsTXFWBrsFfUfS8pAGgSktOaMNFA4rxBknQjterBXAGMBxlqnmERTkwhpE+TvAcYicLWgbjWJ0JQNuduBsQqUbP0EtHm6+jj7O8jYUHMXxwJVWX3cdxtEjaw+PjYVcrbVugQBUi0AACmBUadBebuF5uduYMqpPharat4BeTiMuP0PZb0F+/sBxwjEHzkUHvy0+vjWYfizkR2eOyyBpEXVx9c+gsuCq0oR0OuzmjFZfy2Cwp+ESolh6O818R8YBOY8gWKyUBh5/Hb8JbC/v3D8EYOg17/4Q5HuKPzRyK/2pIXQ4fnq46sfwJVNwsUe/AQih1Ufn5gHxfuF4hfB0D9q4t/fDyxFAsXkETAi7Xb8t2B/f+DopuOHW4fgz9l3jv/ax3D5/+4c/8kFUPSLUPwkDD145/ib+f7X+ftpPP72i6H9c9XHjb7/df9+mvf+i34fyLV6DDovFX7ee0JwHMcfbd++fenSpStWrFiwYEG3bt1KS0sFH9CcbZgqKiqCg4OLi4sjIiIA4Isvvvj000/T0tIalkxPTx8zZkzTTaNjxoxp167dQw89xN9UKBRjxoxprLDVahWJRLWbYcd/evaBNmGvDr33Zt4WwpZxwnhkT8gza2tOmfPIB9BX5gAAGVVJREFUXx9gx+UCKXPKUxBX3ydyvuXEAUBKQawCsRKUcaBuw2naQkgvaMG7WRkMBo3G99pXObDrAQAIUZ1GbNpc0+ZMm4C1Vx+LVSCPqClmzq+5qzaptqYNgGPBlC385PJwEKurjxmL8FcnAChjgbz972Yvrw64HkJcp0/aUiT8C0OsBnl4zU1TjvAXca34DVUVGrLBL6Tq+CNAfHthZNoE1hLhYqo4IG7XB+wVAr+3AIAgqwdj86zFQJsFiokUoKi1XbY5r36LSHX8wdW/bwCAo8GU6/r4RaBqfdfxN+P9d0L8zfr7qfP+M6YCOytTaEKFL9hAYyNUaqupEU6ePHny5Mn88ZkzZ5r5HIJsNhsAOLKRTCazWq1NPqIpOp2utLQ0L6/6J6RcLh84cKBYLNyoyydChqn5/GiakZLc/QTQQlhzrxERcbVfiOT6l2z0BLudA3DSq4ubA3FzhO+yUQBC/9Utg81m88ZJrs1wu8W1TuWVrDlPKuqsilH775wMFV4wg61bTBwt/Mw0AO0oRjRazM4AOP7dlCBWCher/YxEEIgbaRCuXUwUIVymVvw2OyNRNyd+UaPx22gAR71NAeIGTdwNAwMtiLV3LkaGOe/990T8zXj/Ae47/rv/+6G5QIqmiGZ/pUul0sbyhYNLJhaEhYWJRKKysrLg4GAAKC0tjYqKuuOjGpOQkDBu3Lh6LauNIUmyXo2QZdlAlVypbOT99R7W0nxl5151XkjhDnjwU7H3v7T7xzCMD3zE6G7h5+6HaJqmKEqhaCTl3xPhOuO33377zTff1Du5Z88efnLFHYlEol69eh08eJC/efDgQUfDpvsxDKOWtdw2veazF2ZJWtVa6FV3EhhrreGXCCGE7oVwInzhhRcoqn47mFKpXLJkCb9P/R29+OKLr7zyytatW1evXn348OG///3vAFBUVCQSiXJzcwFAr9dv2LDhm2++sVqtGzZs+Oc//3l/L6RRLMsFKrx+Rj1HU0xFiTi81mzIrK8hYYbAKBWEEEJ3QyBDlJeXl5SU9OjRo975Hj16WK3W7Ozszp073/G648ePVygUO3fuDAwMTE9P50fNaDSa119/XautaZ6Oi4t77bXX7u8l3MGt2O6JEV4/fYIuzhWHRtcsrsaxkPtDzRAvhBBC90ogEdI0DQD8oqO18XVBfiBMc4wcOXLkyJG1z6jV6ldeeYU/1mq1L7300t2Gew/MnMQHllijinMkkbXGfREkDPh3nZFsCCGE7olA02hYWFhERMT3339f7/z3338vlUqTkpIaPqQlM9OcUuz17YdUcY44qnWdU6Ee63ZFCCFfIlBXIghiyZIlK1eutNvts2fPjomJKS4u/uGHH95+++25c+eq1eqGD2nJfGP3CaooR9V7hKejQAghHyScIpYvX15UVPTBBx989NFH/BmCIJ588sl//OMfbozNObrnH1KKht25XMtG124apQwgUeMwGYQQcgrhREiS5LvvvrtkyZI//vijtLQ0KCho4MCB7du3d3Nw989oZ8UcJfbyFdY4u40xlItDbs/FPDgauv0fTpxACCGnEE6ENptNJpMlJCQkJNTZ9KekpIQf/+kt9BaGbcELgzUTVZIrDosBfqEgUy4YrkLIA3d6EEIIoWYRrisNHz787Nmz9U7+8ccf3bp1c31IzlRppas3Q/BmddpFbx2EiME1qwsihBC6P40miT59+nz88cf8MU3Tq1atGjZsWJcuXdwVmHPorQwn8v4aYXGOJPL2msW3DkH4QI+GgxBCPkU4Ee7fv//vf//7/PnzJ0+enJGRMXTo0LfeemvdunU//SS0x0oLZrAyQPpAIswVO2qEJQcxESKEkBMJt7DJZLL3339/8ODBM2fO3LFjR2xs7MGDB/v27evm4O6f0c4Q3l8jpItzJPwkQnM+UAYI7OjpiBBCyHc02jRKUdSff/5pMpnUarXJZCorK3NnWM5isDMiL68RcnYbY6gQB0cC8B2Eg3DiBEIIOZFwIszLyxs8ePCmTZvefPPN/Pz8ESNGjB8//plnnmn++motBEuIRU7drcP9qJIccfjtIaMl2EGIEEJOJtw0OmjQII7j0tLSevbsCQDbtm3r37//Cy+8cOrUqb/++su9Ed4XjTYwoF2yp6O4L3RRrSGj4f0h0usXB0AIoRZFuEY4atSoM2fO8FmQ9+yzz6anpxsMBncF5hwm719frc5y2wkzQNHIRs8IIYTuiXAi/PDDDwMDA+ud7Nq1q3dVBwHATIPKBxJhveW2EUIIOU+dRFhZWWm1WhsrqtPpMjIyXB+SM+nNdhlr93QU94UqzhFHYiJECCFXqZMIu3TpsmnTJv6Y47iUlJRffvnFce+vv/7au7eXrW+ZdSO3siDP01HcO85mYY1V1UNGT84H1ssGKyGEUMvX6PQJjuMuXryo1+vdGY3T2ShGLvHiJdaoklxJRCwQBFiKIHcHEBJPR4QQQr7Gi5NEc1htdpXMi5MHVZwr5hdXu3UQwgf4wLqpCCHU0vj4F6vdTmkUUk9Hce/owixJZDwAziBECCFX8fFESNupQG+eP0EV50ii4gH4GuEgzwaDEEI+qX6SuHXr1qVLlwCA4zgAyM/P528CQEFBgZuDu38MZQ/05hohVZQtiY4HazFYS0Gb4ulwEELIB9VPhJs3b968ebPj5osvvvjiiy+6NyRn4mg6WOWtiZA1GzibVRQYCrnbsYMQIYRcpE4iXL16dVVVladCcQmaClF762AZqjBbHBUPBIF7ECKEkOvUSYRPP/20p+JwEYO2lVburbtPUMXZkuh4AADjDWj3rIejQQghH+XFA0maoyC0o/eOlaGKsqtHygz+1cOhIISQ7/LxbiczzanE3rp7H1WYXT13AiGEkMv4eCI0efOi2zQut40QQq7ny4mwpNKiNJfLvTMRMvpSQiojVQGgP+/pWBBCyJf5ciL881pZjLXISxtGqcJsSVQ8sDb47SHw8g00EEKoJfPlRKgz2QmJt04ipIqyJZGtQXcSAjoC6a2vAiGEWj5fToR6M0WKvXYSYXG2OCoeStMgrK+nY0EIIV/my4mw0mwXS7w2EfKLq5WlQdhDno4FIYR8mU8nQgslkXpnImRZ+laBJCIWytIhFBMhQgi5kC8nQqOFUnjnZoR0aYEoIJiw5YFIDsoYT4eDEEK+zJcTodlmV8i9cphJ9eJqpWkQih2ECCHkWr6cCC02Su2dswipwmxJZGso+xPC+ng6FoQQ8nFemSeaqVNyB51K7uko7oU9/7qq1wgIjwZtF0/HghBCPs6Xa4RB0VFqiVfOp6fyr0ti2kLkcJBHeDoWhBDycb6cCI0U5417ETKGCo6yi4PCPR0IQgj5BV9OhCYKvLFGSOVdk8a2A8L7IkcIIW/ks4mwqMJccDNL7YV9oPa865KYtvDXIjBlezoWhBDyfT6bCG+WVBkr9N7YNErlX5fGJEDWlyAJ9HQsCCHk+3w2EVZZ/n97dx/cVLnnAfyXnOQkaUMKpS+W0hYoaMGyoqBSi9CWBQsjQgveS4VhGK5QBhncUUfKZZ1xGJ1xlxmccVRAVHRGLW+7oNCVUIcrgtu9ltby0koLhdKWAmlsSZM0yTlJzv4RrCig1TZ5cs75fv7KCc+cfEvm9NvnvIoBTi/HIhTazvNxAsVmED+MdRYAAOVTbBE6PYKo0Znl9nj6oLtH8vZywjlcSg8AEBkKLkLRp+VlNyMU2s7r08bSj1W41zYAQGQotwi9opfkt2v05imjnf+Le20DAESGYouwp1foJZ3szhoV2i/wyRYK+mhIJussAACqoNgidHpEl6SX3XWEYvsFA99GyQVEMksOACBTii3CXsHvDOqHyGrXaLDXFXA5tJyTRi5gnQUAQC0UW4R/L57s0A8xcKxz/BFi+3l+5Fj6l1cp46+sswAAqIVii9AUa7LIajpIffeUAQCACFJsEToEycLL7DCb0NbEp49jnQIAQF0UW4Q9IslvRnix3mjpJCnIOggAgIooswiv3ejdcfCkhWed44/w29q1vFZbt5ICXtZZAABURJlFaHN4en3+OFnNCH0XTseMMdGwB0kXwzoLAICKKLMInR6R0+vldYzQ13zWOLSL7pnFOggAgLootgg1Or28jhH6Lp7VBRooZTbrIAAA6qLQIvSKkk4vo2OE/h+vaTUuje86xU9mnQUAQF0UWoQeIcjpLPK5v5qv+Yx5jI7umUkaWd0CAABA/pRahKKo5WU0IxSazxiG2HGAEAAg8hRbhD6S0zFCX/MZzt+IIgQAiDxlFiER+TijXGaEgZ6uoLdXk19B5tGsswAAqI4yi/DfFz3kMsTFyeTyCd/5U4bMiRQ/iXUQAAA1UmYREpFDkM0t1nzNZwyZE1mnAABQKcUW4Y8+Gm5kHaI/JMl79v+MWZgOAgCwocwidPQK3T5pmBx2jfqaz5qSHLqml1kHAQBQKQUW4Q238NyOEy4/xcnhZBnP6RPme1opDY+kBwBgQ4FF6OgVDLzOoidt9E8IJUk4Z9XRVUorZh0FAEClFFiETq9oMOiHGaK/Bklo+cE8/BKNW0VaA+ssAAAqpcAidHlFvV4fL4dm8Z76h8lyiTJXsg4CAKBeCizCnl6R0/PD5HCAUGopp+EP4zp6AACGdKwDDD6nV9TodPHGaN81KrQ2xcQ1abI/Yh0EAEDVFDgjdHv9Aa1+aNTPCIXacs4kUUoh6yAAAKqmwCJ0egSfRpcU3VfTB729zppT0tS9pFHgVwAAICMK/C2cnmj2GeOSTFG9a9R94qAhK4cblcc6CACA2imwCOdNTu/h45JMrHPcnSQKruNfDCl4mnUQAABQYhES0XWPlBzFM0L3P63GjGR9yijWQQAAQIlnjRKRzUPRe4wwGAhU/+fQTBfrHAAAQKTIIqy+0GnzJEbtjNBzfNuQpFrN9H+yDgIAAETK2zXqDwRf/+86X5CGRuWdZfwdZ/lL66Xs/6Ch2ayzAAAAkfKK0On1mwx8WqwmCueDkt8brJwTSJzHPbCWdRYAALhJcUXoEfQGXbqZdY47Ef5rroYz8nM/YR0EAAB+FsZjhDU1NbW1tePHj582bdodB3R0dFRWVprN5rlz55pMg3O5g8vr13J8emzUTQi9h9bqPDXaogbScKyzAADAz8I1I9yyZcv8+fNPnTq1fPny9evX3z6grq4uOzv72LFj27Zty83N9Xg8g/K5To8oanVjLFFUhJJf7Ppss777Y82//o82LpV1HAAA+IWwFKHb7d60adOBAwfefvvto0ePvvXWWx0dHb8a89prrz333HMffvih1Wrlef6zzz4blI92ekWnpM8eNigrGzBJ8pypsr35byT6tX+1cyNzWQcCAIBfC0sRnjhxYujQoVOmTCGi9PT0SZMmHTly5NYBkiRVVFQsXLiQiLRa7YIFCyoqKgblo11ev03kJ8YznRF6O8Wze31f/MX5bq6zstzyxDPxy8o0fFSexgoAoHphOUbY0dGRmvrzPsDU1NQrV67cOqCrq8vr9faNGTFixO1Txj6dnZ0HDhy4ePFiaNFisaxatUpzl9NCb7RU/V3/VcrRwO17WkV+apBLDL3WCae5wOU7rUArGGdKmptX4/O+45rgjTuM0hh9xlk3Xwo9Bs8XmsANCri5oE2r6SIpSIGhZMzicjcMu7+QiES//24/HQwKURRFUWSdAiIN37sK+f1+URR1uv6WF8dxWu3vTPnCUoSBQODWotJqtYFA4FcDiKhvDMdx/rtXhSAIbre7q6srtOh2u0VR5Lg7n3IyZogrU/qRfMHb/ykYsAd+ajhdwE7BrjutQBMIdEuan8469dtIusMtYCSNMRDoIdIQkYbXBfnhxKWRIc5vzqSkSdqkLI2eJyLtTz8phFsgEMB/tQrhe1ehwE/6Of53W5DCVIQpKSk2m61v8fr167Nnz751QEJCgl6vt9lsCQkJoQEjRoy429pSU1Pnz5+/ePHi/nz09MK/cdwqvV5/+z/98rTUVXdbQz+Hxfxi6W/9yQbhI4qi0Ri1d9WDcMH3rkJ+v5/juMH93sNyjDAnJ6e9vf3ChQtE1N3dXV1dnZeXR0Qejyc0sdNqtXl5eYcPHw6NP3z4cEFBQTiSAAAA/LawzAjj4+PXrFlTVFS0fPnyffv2FRcXjx07log++uij7du319XVEdGGDRuKiorcbvfly5cbGxt3794djiQAAAC/LVzXEW7evPnVV1/t6upau3btxx9/HHqzoKBg06ZNodf5+flff/11MBicMGFCdXX1sGGDc8VDfX395ct3PAsGlOzo0aOCILBOARHl9/u/+uor1ikg0tra2k6fPj2469RIkjS4axx0JSUl/T9GuG7duoyMjBdffDHcqSCq3HfffZ9//nlWVhbrIBA5LS0tM2bMwB++arN169ba2todO3YM4jqVdq9RIor+agcAgD8nHL/hFViEAAAA/YciBAAAVZPBMcJHH33U4/EkJyf3Z3BTU5PRaExPTw93KogqVVVVDzzwQExMzO8PBaXwer01NTW5ubiFr7q0t7c7nc7x48f3c3xRUdGaNWt+e4wMivCbb75xOBz9fE6T3W7ned5isYQ7FUSVlpaWjIyMu914DxRJkqTLly+PGjWKdRCIKJfL5fF4EhMT+zl+9OjRmZmZvz1GBkUIAAAQPjhGCAAAqoYiBAAAVUMRAgCAqqEIAQBA1cJy021Wurq6rFYrz/OFhYWxsbGs40AkVFdXOxyO0Guz2Tx16lS2eSB8gsFgU1NTe3v7tGnTbn0Kj81mq6ysjI2NLSwsxFOZlMfv9589e7a7uzs/P7/vzZMnT964cfOp6QPf8JVz1uilS5dycnLy8vKcTmdzc3NVVdVg3cgbollubm5vb2/owZZjxozZvn0760QQFh0dHePHj+d53m63t7a2pqWlhd5vaGiYMWNGYWHh1atX7Xb7t99+iz+CleT48eOzZ882m80ej8fl+vkx6dOnT+/p6QldRDFq1KgB3npUOUW4Zs2aQCAQ+j04Z86c/Pz8l19+mXUoCLvc3NwNGzY8+eSTrINAePl8PpvNFh8fbzabby3CpUuXpqSkbN68ORgMTp8+fenSpatXr2YbFQaRw+EQBKG1tXXGjBm/KsIXXnhhwYIFg/IpyjlGePDgwUWLFoVeL1y48NChQ2zzQMScO3fOarW2tbWxDgJhZDAY+srvVocOHVq4cCERabXa4uJibPgKExcXd7dr5xsbG61Wa2tr68A/RSFFGAwGr127lpqaGlpMTU29cuUK20gQGTExMVardcuWLRMmTNi4cSPrOBBRLpfL4XCMHDkytIgNXz1iYmIqKyvffPPN+++/v6ysbIBrU8jJMsFgMBgM9t1hi+M4v9/PNhJExuHDhzmOI6Jz585NmTJl3rx5OF9GPQKBABFhw1ehioqK0Ibf1NQ0efLkp5566rHHHvvTa1PIjFCn0yUmJnZ2doYWr1+/PmLECLaRIDJCGwMRZWVlPfjgg3V1dWzzQCTFxcXFxMRgw1ehvg3/3nvvnTx58vfffz+QtSmkCIkoPz//yJEjoddHjhzJy8tjGgcizel0nj9/Hg8eUZu8vDyr1Rp6jQ1fhVwuV2Nj4wA3fIXsGiWil156qaCgQK/X9/T0fPnllwP8AwFk4dKlS6Wlpbm5uXq9vry8PCsr64knnmAdCsJl3bp1brebiMrKysxm8zvvvKPT6davXz9v3jy/33/16tXvvvvu/fffZx0TBlN3d3dZWZndbvf5fKWlpQkJCa+//npra+uKFSsef/xxvV6/e/fucePGzZkzZyCfopzLJ4iovr5+7969PM8vWbIkIyODdRwIO5/Pt3///h9++IGIJk6cWFRU1LfDBJRn586doij2LT777LNarZaI6urq9u/fbzKZli1bhl2jCuN2uz/99NO+RYvFsnjxYkEQ9u/f39DQQETZ2dnFxcUD3PAVVYQAAAB/lHKOEQIAAPwJKEIAAFA1FCEAAKgaihAAAFQNRQgAAKqGIgQAAFVDEQIAgKqhCAEUor29/b333rPb7ayDAMgMihBAIerr60tLSwfl8WwAqoIiBAAAVUMRAshDQ0NDWlraqlWrfD5f35tutzstLe2VV17Zt2/fokWLiCg/Pz8+Pj4+Pr62tpZdWAA5QRECyENqaurq1as/+OCDHTt29L25a9euK1euPPPMM9OmTdu4cSMRvfHGG3v27NmzZ8/YsWPZhQWQE9x0G0BOlixZ0tTUVF1dHVp85JFHTCbTsWPHiMhqtRYWFtbU1Dz00ENMMwLIDGaEAHKybNmykydPNjY2EtGpU6eqq6tXr17NOhSAvKEIAeRk5syZycnJ5eXlRPTuu+8mJCQUFxezDgUgbyhCADnR6XRPP/30J5984nQ6y8vLV6xYYTAYWIcCkDcUIYDMlJSUNDc3P//88y6Xa+XKlX3vm81mIvJ4POyiAciSjnUAAPhjcnJyRo8evXPnzlmzZt16aui4ceN4nt+2bZskSSaTKSsrKzY2lmFOALnAjBBAZjQaTUlJCRGVlpbe+n5SUtLWrVurqqoKCgqmTJlSX1/PKCCAzODyCQD52bVrV0lJSUtLS0ZGBussALKHGSEAAKgaihAAAFQNRQggPw8//PD27duHDx/OOgiAEuAYIQAAqBpmhAAAoGooQgAAUDUUIQAAqNr/AwHEAcm6gNy0AAAAAElFTkSuQmCC",
+ "image/svg+xml": [
+ "\n",
+ "\n"
+ ],
+ "text/html": [
+ "\n",
+ "\n"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# Average resulting excitations\n",
"tspan = range(0.0, sol.t[end], length=101)\n",
"pops_avg = zeros(length(tspan), N)\n",
"for i=1:N, j=1:trajectories\n",
" sol_ = sim.u[j].(tspan) # interpolate solution\n",
- " p_idx = findfirst(isequal(average(σ(:e,:e,i))), states(eqs))\n",
+ " p_idx = findfirst(isequal(average(σ(:e,:e,i))), unknowns(eqs))\n",
" pop = [u[p_idx] for u ∈ sol_]\n",
" @. pops_avg[:,i] += pop / trajectories\n",
"end\n",
@@ -221,9 +423,206 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 13,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "image/svg+xml": [
+ "\n",
+ "\n"
+ ],
+ "text/html": [
+ "\n",
+ "\n"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"graph2 = plot(xlabel=\"γt\", ylabel=\"Excitation at end of chain\")\n",
"for i=1:trajectories\n",
@@ -244,17 +643,16 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Julia 1.7.2",
+ "display_name": "Julia 1.10.2",
"language": "julia",
- "name": "julia-1.7"
+ "name": "julia-1.10"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
- "version": "1.7.2"
+ "version": "1.10.2"
},
- "orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "6f38cfe8922d941c92fc591066a74813a9285a455efec88dafae5eaa218834d9"
diff --git a/docs/src/examples/jupyter_notebooks/ramsey spectroscopy.ipynb b/docs/src/examples/jupyter_notebooks/ramsey spectroscopy.ipynb
index a38715ff..01ea8360 100644
--- a/docs/src/examples/jupyter_notebooks/ramsey spectroscopy.ipynb
+++ b/docs/src/examples/jupyter_notebooks/ramsey spectroscopy.ipynb
@@ -44,7 +44,7 @@
"source": [
"@cnumbers Δ Ω Γ ν\n",
"@syms t::Real\n",
- "@register f(t)"
+ "@register_symbolic f(t)"
]
},
{
@@ -99,7 +99,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
@@ -139,9 +139,20 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 6,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\"/home/christoph/git/QuantumCumulants.jl/docs/src/examples/jupyter_notebooks/timeevolution_ramsey.svg\""
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"prob = ODEProblem(sys,u0,(0.0, 2tp+tf), ps.=>p0)\n",
"sol = solve(prob,Tsit5(),maxiters=1e7)\n",
@@ -169,9 +180,20 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 7,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\"/home/christoph/git/QuantumCumulants.jl/docs/src/examples/jupyter_notebooks/scan_ramsey.svg\""
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"Δ_ls = [-2000:4:2000;]Γ_\n",
"s22_ls = zeros(length(Δ_ls))\n",
@@ -196,17 +218,16 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Julia 1.7.2",
+ "display_name": "Julia 1.10.2",
"language": "julia",
- "name": "julia-1.7"
+ "name": "julia-1.10"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
- "version": "1.7.2"
+ "version": "1.10.2"
},
- "orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "6f38cfe8922d941c92fc591066a74813a9285a455efec88dafae5eaa218834d9"
diff --git a/docs/src/examples/jupyter_notebooks/superradiant_laser.ipynb b/docs/src/examples/jupyter_notebooks/superradiant_laser.ipynb
index 91d2c1d8..b83fdb8d 100644
--- a/docs/src/examples/jupyter_notebooks/superradiant_laser.ipynb
+++ b/docs/src/examples/jupyter_notebooks/superradiant_laser.ipynb
@@ -311,8 +311,8 @@
"outputs": [],
"source": [
"prob_ss = SteadyStateProblem(prob)\n",
- "sol_ss = solve(prob_ss, DynamicSS(Tsit5(); abstol=1e-8, reltol=1e-8),\n",
- " reltol=1e-14, abstol=1e-14, maxiters=5e7)\n",
+ "sol_ss = solve(prob_ss, DynamicSS(Tsit5(); abstol=1e-6, reltol=1e-6),\n",
+ " reltol=1e-12, abstol=1e-12, maxiters=1e7)\n",
"nothing # hide"
]
},
diff --git a/docs/src/examples/jupyter_notebooks/superradiant_laser_indexed.ipynb b/docs/src/examples/jupyter_notebooks/superradiant_laser_indexed.ipynb
index d8b92164..ea8b16ca 100644
--- a/docs/src/examples/jupyter_notebooks/superradiant_laser_indexed.ipynb
+++ b/docs/src/examples/jupyter_notebooks/superradiant_laser_indexed.ipynb
@@ -36,9 +36,17 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mPrecompiling QuantumCumulants [35bcea6d-e19f-57db-af74-8011de6c7255]\n"
+ ]
+ }
+ ],
"source": [
"using QuantumCumulants\n",
"using OrdinaryDiffEq, SteadyStateDiffEq, ModelingToolkit\n",
@@ -55,7 +63,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@@ -79,9 +87,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(ℋ(cavity) ⊗ ℋ(atom), :j, N, 2)"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"@cnumbers N Δ κ Γ R ν\n",
"g(i) = IndexedVariable(:g, i) \n",
@@ -99,7 +118,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
@@ -121,9 +140,27 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/latex": [
+ "\\begin{align}\n",
+ "\\frac{d}{dt} \\langle a^\\dagger a\\rangle =& 1 i \\underset{i}{\\overset{N}{\\sum}} {g}_{i} \\langle a {\\sigma}_{i}^{{21}}\\rangle -1 i \\underset{i}{\\overset{N}{\\sum}} {g}_{i} \\langle a^\\dagger {\\sigma}_{i}^{{12}}\\rangle -1.0 \\langle a^\\dagger a\\rangle \\kappa \\\\\n",
+ "\\frac{d}{dt} \\langle {\\sigma}_{j}^{{22}}\\rangle =& R -1.0 R \\langle {\\sigma}_{j}^{{22}}\\rangle + 1 i {g}_{j} \\langle a^\\dagger {\\sigma}_{j}^{{12}}\\rangle -1 i {g}_{j} \\langle a {\\sigma}_{j}^{{21}}\\rangle -1.0 \\langle {\\sigma}_{j}^{{22}}\\rangle \\Gamma\n",
+ "\\end{align}\n"
+ ],
+ "text/plain": [
+ "∂ₜ(⟨a′*a⟩) = (0 + 1im)*var\"∑(i=1:N)gi*⟨a*σ21i⟩\" + (0 - 1im)*var\"∑(i=1:N)gi*⟨a′*σ12i⟩\" - ⟨a′*a⟩*κ\n",
+ "∂ₜ(⟨σ22j⟩) = R - R*⟨σ22j⟩ + (0 + 1im)*gj*⟨a′*σ12j⟩ + (0 - 1im)*gj*⟨a*σ21j⟩ - ⟨σ22j⟩*Γ\n"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# Derive equations\n",
"ops = [a'*a, σ(2,2,j)]\n",
@@ -139,9 +176,31 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/latex": [
+ "\\begin{align}\n",
+ "\\frac{d}{dt} \\langle a^\\dagger a\\rangle =& 1 i \\underset{i}{\\overset{N}{\\sum}} {g}_{i} \\langle a {\\sigma}_{i}^{{21}}\\rangle -1 i \\underset{i}{\\overset{N}{\\sum}} {g}_{i} \\langle a^\\dagger {\\sigma}_{i}^{{12}}\\rangle -1.0 \\langle a^\\dagger a\\rangle \\kappa \\\\\n",
+ "\\frac{d}{dt} \\langle {\\sigma}_{j}^{{22}}\\rangle =& R -1.0 R \\langle {\\sigma}_{j}^{{22}}\\rangle + 1 i {g}_{j} \\langle a^\\dagger {\\sigma}_{j}^{{12}}\\rangle -1 i {g}_{j} \\langle a {\\sigma}_{j}^{{21}}\\rangle -1.0 \\langle {\\sigma}_{j}^{{22}}\\rangle \\Gamma \\\\\n",
+ "\\frac{d}{dt} \\langle a^\\dagger {\\sigma}_{j}^{{12}}\\rangle =& 1 i \\underset{i{\\ne}j}{\\overset{N}{\\sum}} {g}_{i} \\langle {\\sigma}_{i}^{{21}} {\\sigma}_{j}^{{12}}\\rangle -0.5 R \\langle a^\\dagger {\\sigma}_{j}^{{12}}\\rangle + 1 i {g}_{j} \\langle {\\sigma}_{j}^{{22}}\\rangle -1 i {g}_{j} \\langle a^\\dagger a\\rangle -0.5 \\langle a^\\dagger {\\sigma}_{j}^{{12}}\\rangle \\left( \\Gamma + \\kappa + \\nu \\right) -1 i \\langle a^\\dagger {\\sigma}_{j}^{{12}}\\rangle \\Delta + 2 i {g}_{j} \\langle {\\sigma}_{j}^{{22}}\\rangle \\langle a^\\dagger a\\rangle \\\\\n",
+ "\\frac{d}{dt} \\langle {\\sigma}_{j}^{{12}} {\\sigma}_{k}^{{21}}\\rangle =& -1.0 R \\langle {\\sigma}_{j}^{{12}} {\\sigma}_{k}^{{21}}\\rangle -1 i {g}_{j} \\langle a {\\sigma}_{k}^{{21}}\\rangle + 1 i {g}_{k} \\langle a^\\dagger {\\sigma}_{j}^{{12}}\\rangle + \\langle {\\sigma}_{j}^{{12}} {\\sigma}_{k}^{{21}}\\rangle \\left( -1.0 \\Gamma -1.0 \\nu \\right) + 2 i {g}_{j} \\langle a {\\sigma}_{k}^{{21}}\\rangle \\langle {\\sigma}_{j}^{{22}}\\rangle -2 i {g}_{k} \\langle a^\\dagger {\\sigma}_{j}^{{12}}\\rangle \\langle {\\sigma}_{k}^{{22}}\\rangle \n",
+ "\\end{align}\n"
+ ],
+ "text/plain": [
+ "∂ₜ(⟨a′*a⟩) = (0 + 1im)*var\"∑(i=1:N)gi*⟨a*σ21i⟩\" + (0 - 1im)*var\"∑(i=1:N)gi*⟨a′*σ12i⟩\" - ⟨a′*a⟩*κ\n",
+ "∂ₜ(⟨σ22j⟩) = R - R*⟨σ22j⟩ + (0 + 1im)*gj*⟨a′*σ12j⟩ + (0 - 1im)*gj*⟨a*σ21j⟩ - ⟨σ22j⟩*Γ\n",
+ "∂ₜ(⟨a′*σ12j⟩) = (0 + 1im)*var\"∑(i=1:N)(i≠j)gi*⟨σ21i*σ12j⟩\" - 0.5R*⟨a′*σ12j⟩ + (0 + 1im)*gj*⟨σ22j⟩ + (0 - 1im)*gj*⟨a′*a⟩ - 0.5⟨a′*σ12j⟩*(Γ + κ + ν) + (0 - 1im)*⟨a′*σ12j⟩*Δ + (0 + 2im)*gj*⟨σ22j⟩*⟨a′*a⟩\n",
+ "∂ₜ(⟨σ12j*σ21k⟩) = -R*⟨σ12j*σ21k⟩ + (0 - 1im)*gj*⟨a*σ21k⟩ + (0 + 1im)*gk*⟨a′*σ12j⟩ + ⟨σ12j*σ21k⟩*(-Γ - ν) + (0 + 2im)*gj*⟨a*σ21k⟩*⟨σ22j⟩ + (0 - 2im)*gk*⟨a′*σ12j⟩*⟨σ22k⟩\n"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# custom filter function\n",
"φ(x::Average) = φ(x.arguments[1])\n",
@@ -167,9 +226,31 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/latex": [
+ "\\begin{align}\n",
+ "\\frac{d}{dt} \\langle a^\\dagger a\\rangle =& -1.0 \\langle a^\\dagger a\\rangle \\kappa + 1 i N g_{1} \\langle a {\\sigma}_{1}^{{21}}\\rangle -1 i N g_{1} \\langle a^\\dagger {\\sigma}_{1}^{{12}}\\rangle \\\\\n",
+ "\\frac{d}{dt} \\langle {\\sigma}_{1}^{{22}}\\rangle =& R -1.0 R \\langle {\\sigma}_{1}^{{22}}\\rangle -1 i g_{1} \\langle a {\\sigma}_{1}^{{21}}\\rangle + 1 i g_{1} \\langle a^\\dagger {\\sigma}_{1}^{{12}}\\rangle -1.0 \\langle {\\sigma}_{1}^{{22}}\\rangle \\Gamma \\\\\n",
+ "\\frac{d}{dt} \\langle a^\\dagger {\\sigma}_{1}^{{12}}\\rangle =& -0.5 R \\langle a^\\dagger {\\sigma}_{1}^{{12}}\\rangle + 1 i g_{1} \\langle {\\sigma}_{1}^{{22}}\\rangle -1 i g_{1} \\langle a^\\dagger a\\rangle -0.5 \\langle a^\\dagger {\\sigma}_{1}^{{12}}\\rangle \\left( \\Gamma + \\kappa + \\nu \\right) -1 i \\langle a^\\dagger {\\sigma}_{1}^{{12}}\\rangle \\Delta + 1 i \\left( -1 + N \\right) g_{1} \\langle {\\sigma}_{1}^{{12}} {\\sigma}_{2}^{{21}}\\rangle + 2 i g_{1} \\langle {\\sigma}_{1}^{{22}}\\rangle \\langle a^\\dagger a\\rangle \\\\\n",
+ "\\frac{d}{dt} \\langle {\\sigma}_{1}^{{12}} {\\sigma}_{2}^{{21}}\\rangle =& -1.0 R \\langle {\\sigma}_{1}^{{12}} {\\sigma}_{2}^{{21}}\\rangle -1 i g_{1} \\langle a {\\sigma}_{1}^{{21}}\\rangle + 1 i g_{1} \\langle a^\\dagger {\\sigma}_{1}^{{12}}\\rangle + \\langle {\\sigma}_{1}^{{12}} {\\sigma}_{2}^{{21}}\\rangle \\left( -1.0 \\Gamma -1.0 \\nu \\right) + 2 i g_{1} \\langle {\\sigma}_{1}^{{22}}\\rangle \\langle a {\\sigma}_{1}^{{21}}\\rangle -2 i g_{1} \\langle {\\sigma}_{1}^{{22}}\\rangle \\langle a^\\dagger {\\sigma}_{1}^{{12}}\\rangle \n",
+ "\\end{align}\n"
+ ],
+ "text/plain": [
+ "∂ₜ(⟨a′*a⟩) = -⟨a′*a⟩*κ + (0 + 1im)*N*g_1*⟨a*σ211⟩ + (0 - 1im)*N*g_1*⟨a′*σ121⟩\n",
+ "∂ₜ(⟨σ221⟩) = R - R*⟨σ221⟩ + (0 - 1im)*g_1*⟨a*σ211⟩ + (0 + 1im)*g_1*⟨a′*σ121⟩ - ⟨σ221⟩*Γ\n",
+ "∂ₜ(⟨a′*σ121⟩) = -0.5R*⟨a′*σ121⟩ + (0 + 1im)*g_1*⟨σ221⟩ + (0 - 1im)*g_1*⟨a′*a⟩ - 0.5⟨a′*σ121⟩*(Γ + κ + ν) + (0 - 1im)*⟨a′*σ121⟩*Δ + (0 + 1im)*(-1 + N)*g_1*⟨σ121*σ212⟩ + (0 + 2im)*g_1*⟨σ221⟩*⟨a′*a⟩\n",
+ "∂ₜ(⟨σ121*σ212⟩) = -R*⟨σ121*σ212⟩ + (0 - 1im)*g_1*⟨a*σ211⟩ + (0 + 1im)*g_1*⟨a′*σ121⟩ + ⟨σ121*σ212⟩*(-Γ - ν) + (0 + 2im)*g_1*⟨σ221⟩*⟨a*σ211⟩ + (0 - 2im)*g_1*⟨σ221⟩*⟨a′*σ121⟩\n"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"eqs_sc = scale(eqs_c)"
]
@@ -183,7 +264,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
@@ -200,7 +281,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
@@ -224,9 +305,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\"/home/christoph/git/QuantumCumulants.jl/docs/src/examples/jupyter_notebooks/superradiant_laser_indexed.svg\""
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# Solve the numeric problem\n",
"sol = solve(prob,Tsit5(),maxiters=1e7)\n",
@@ -258,7 +350,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
@@ -277,9 +369,27 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/latex": [
+ "\\begin{align}\n",
+ "\\frac{d}{d\\tau} \\langle a^\\dagger a_0\\rangle =& -1 i \\langle a^\\dagger a_0\\rangle \\Delta -0.5 \\langle a^\\dagger a_0\\rangle \\kappa + 1 i N g_{1} \\langle {\\sigma}_{1}^{{21}} a_0\\rangle \\\\\n",
+ "\\frac{d}{d\\tau} \\langle {\\sigma}_{1}^{{21}} a_0\\rangle =& -0.5 R \\langle {\\sigma}_{1}^{{21}} a_0\\rangle + 1 i g_{1} \\langle a^\\dagger a_0\\rangle -0.5 \\langle {\\sigma}_{1}^{{21}} a_0\\rangle \\left( \\Gamma + \\nu \\right) -2 i g_{1} \\langle {\\sigma}_{1}^{{22}}\\rangle \\langle a^\\dagger a_0\\rangle \n",
+ "\\end{align}\n"
+ ],
+ "text/plain": [
+ "∂ₜ(⟨a′*a_0⟩) = (0 - 1im)*⟨a′*a_0⟩*Δ - 0.5⟨a′*a_0⟩*κ + (0 + 1im)*N*g_1*⟨σ211*a_0⟩\n",
+ "∂ₜ(⟨σ211*a_0⟩) = -0.5R*⟨σ211*a_0⟩ + (0 + 1im)*g_1*⟨a′*a_0⟩ - 0.5⟨σ211*a_0⟩*(Γ + ν) + (0 - 2im)*g_1*⟨σ221⟩*⟨a′*a_0⟩\n"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"corr_sc.de"
]
@@ -293,13 +403,13 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"prob_ss = SteadyStateProblem(prob)\n",
- "sol_ss = solve(prob_ss, DynamicSS(Tsit5(); abstol=1e-8, reltol=1e-8), \n",
- " reltol=1e-14, abstol=1e-14, maxiters=5e7)\n",
+ "sol_ss = solve(prob_ss, DynamicSS(Tsit5(); abstol=1e-6, reltol=1e-6), \n",
+ " reltol=1e-12, abstol=1e-12, maxiters=1e7)\n",
"nothing # hide"
]
},
@@ -312,9 +422,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1.0"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"ω = [-10:0.01:10;]Γ_\n",
"spec = S(ω,sol_ss.u,p0)\n",
@@ -324,9 +445,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\"/home/christoph/git/QuantumCumulants.jl/docs/src/examples/jupyter_notebooks/spectrum_superradiant_laser_indexed.svg\""
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"plot(ω, spec_n, xlabel=\"ω/Γ\", legend=false, size=(500,300))\n",
"savefig(\"spectrum_superradiant_laser_indexed.svg\") # hide"
@@ -346,15 +478,15 @@
"lastKernelId": null
},
"kernelspec": {
- "display_name": "Julia 1.8.5",
+ "display_name": "Julia 1.10.2",
"language": "julia",
- "name": "julia-1.8"
+ "name": "julia-1.10"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
- "version": "1.8.5"
+ "version": "1.10.2"
}
},
"nbformat": 4,
diff --git a/docs/src/examples/ramsey_spectroscopy.md b/docs/src/examples/ramsey_spectroscopy.md
index 33b09f05..0d1beecb 100644
--- a/docs/src/examples/ramsey_spectroscopy.md
+++ b/docs/src/examples/ramsey_spectroscopy.md
@@ -22,7 +22,7 @@ Beside defining the symbolic parameters we additionally need to [register](https
```@example ramsey
@cnumbers Δ Ω Γ ν
@syms t::Real
-@register f(t)
+@register_symbolic f(t)
```
After defining the Hilbert space and the operator of the two-level atom we construct the time dependent Hamiltonian as well as the jump operator list with the corresponding rates.
diff --git a/docs/src/examples/superradiant-laser.md b/docs/src/examples/superradiant-laser.md
index 14ae5045..098e1234 100644
--- a/docs/src/examples/superradiant-laser.md
+++ b/docs/src/examples/superradiant-laser.md
@@ -193,8 +193,8 @@ To ensure we are in the steady state we use a steady solver to calculate it. To
```@example superradiant-laser
prob_ss = SteadyStateProblem(prob)
-sol_ss = solve(prob_ss, DynamicSS(Tsit5(); abstol=1e-8, reltol=1e-8),
- reltol=1e-14, abstol=1e-14, maxiters=5e7)
+sol_ss = solve(prob_ss, DynamicSS(Tsit5(); abstol=1e-6, reltol=1e-6),
+ reltol=1e-12, abstol=1e-12, maxiters=1e7)
nothing # hide
```
diff --git a/docs/src/examples/superradiant_laser_indexed.md b/docs/src/examples/superradiant_laser_indexed.md
index 79e06599..e7d2752e 100644
--- a/docs/src/examples/superradiant_laser_indexed.md
+++ b/docs/src/examples/superradiant_laser_indexed.md
@@ -217,8 +217,8 @@ To ensure we are in the steady state we use a steady solver to calculate it. To
```@example superradiant_laser_indexed
prob_ss = SteadyStateProblem(prob)
-sol_ss = solve(prob_ss, DynamicSS(Tsit5(); abstol=1e-8, reltol=1e-8),
- reltol=1e-14, abstol=1e-14, maxiters=5e7)
+sol_ss = solve(prob_ss, DynamicSS(Tsit5(); abstol=1e-6, reltol=1e-6),
+ reltol=1e-12, abstol=1e-12, maxiters=1e7)
nothing # hide
```
diff --git a/src/cnumber.jl b/src/cnumber.jl
index 6b1862e6..f537eaec 100644
--- a/src/cnumber.jl
+++ b/src/cnumber.jl
@@ -27,6 +27,9 @@ Base.one(::Type{Parameter}) = 1
Base.zero(::Type{Parameter}) = 0
Base.adjoint(x::SymbolicUtils.Symbolic{<:CNumber}) = conj(x)
+# TODO: this doesn't work with just setting Complex for some reason; am I doing this right?
+MTK.concrete_symtype(::Symbolics.BasicSymbolic{T}) where T <: CNumber = ComplexF64
+
"""
@cnumbers(ps...)
@@ -130,6 +133,8 @@ Base.adjoint(x::SymbolicUtils.Symbolic{<:RNumber}) = x
Base.adjoint(x::RNumber) = x
Base.conj(x::RNumber) = x
+MTK.concrete_symtype(::Symbolics.BasicSymbolic{T}) where T<:RNumber = Real
+
"""
@rnumbers(ps...)
diff --git a/src/correlation.jl b/src/correlation.jl
index d7acdebd..72d032d1 100644
--- a/src/correlation.jl
+++ b/src/correlation.jl
@@ -271,7 +271,7 @@ function (s::Spectrum)(ω_ls,usteady,ps=[];wtol=0)
end
# Convert to ODESystem
-function MTK.ODESystem(c::CorrelationFunction; kwargs...)
+function MTK.ODESystem(c::CorrelationFunction; complete_sys = true, kwargs...)
τ = MTK.get_iv(c.de)
ps = []
@@ -343,7 +343,8 @@ function MTK.ODESystem(c::CorrelationFunction; kwargs...)
end
eqs = MTK.equations(de_)
- return MTK.ODESystem(eqs, τ; kwargs...)
+ sys = MTK.ODESystem(eqs, τ; kwargs...)
+ return complete_sys ? complete(sys) : sys
end
substitute(c::CorrelationFunction, args...; kwargs...) =
diff --git a/src/diffeq.jl b/src/diffeq.jl
index e23e755e..257398b1 100644
--- a/src/diffeq.jl
+++ b/src/diffeq.jl
@@ -1,11 +1,11 @@
# Relevant parts of ODESystem interface
MTK.get_iv(me::AbstractMeanfieldEquations) = me.iv
-MTK.states(me::AbstractMeanfieldEquations) = me.states
+MTK.unknowns(me::AbstractMeanfieldEquations) = me.states
function MTK.equations(me::AbstractMeanfieldEquations)
# Get the MTK variables
varmap = me.varmap
- vs = MTK.states(me)
+ vs = MTK.unknowns(me)
vhash = map(hash, vs)
# Substitute conjugate variables by explicit conj
@@ -53,22 +53,28 @@ function substitute_conj(t,vs′,vs′hash)
end
end
-function MTK.ODESystem(me::AbstractMeanfieldEquations, iv=me.iv; kwargs...)
+function MTK.ODESystem(me::AbstractMeanfieldEquations, iv=me.iv;
+ complete_sys = true,
+ kwargs...)
eqs = MTK.equations(me)
- return MTK.ODESystem(eqs, iv; kwargs...)
+ sys = MTK.ODESystem(eqs, iv; kwargs...)
+ return complete_sys ? complete(sys) : sys
end
const AbstractIndexedMeanfieldEquations = Union{IndexedMeanfieldEquations,EvaledMeanfieldEquations}
-function MTK.ODESystem(me::AbstractIndexedMeanfieldEquations, iv=me.iv; kwargs...)
+function MTK.ODESystem(me::AbstractIndexedMeanfieldEquations, iv=me.iv;
+ complete_sys = true,
+ kwargs...)
eqs = MTK.equations(me)
- return MTK.ODESystem(eqs, iv; kwargs...)
+ sys = MTK.ODESystem(eqs, iv; kwargs...)
+ return complete_sys ? complete(sys) : sys
end
function MTK.equations(me::AbstractIndexedMeanfieldEquations)
# Get the MTK variables
varmap = me.varmap
- vs = MTK.states(me)
+ vs = MTK.unknowns(me)
vhash = map(hash, vs)
# Substitute conjugate variables by explicit conj
diff --git a/src/equations.jl b/src/equations.jl
index 4402bddb..ad44fca6 100644
--- a/src/equations.jl
+++ b/src/equations.jl
@@ -35,7 +35,7 @@ struct MeanfieldEquations <: AbstractMeanfieldEquations
jumps::Vector
jumps_dagger
rates::Vector
- iv::SymbolicUtils.BasicSymbolic
+ iv::MTK.Num
varmap::Vector{Pair}
order::Union{Int,Vector{<:Int},Nothing}
end
@@ -73,7 +73,7 @@ struct IndexedMeanfieldEquations <: AbstractMeanfieldEquations #these are for ea
jumps::Vector
jumps_dagger
rates::Vector
- iv::SymbolicUtils.BasicSymbolic
+ iv::MTK.Num
varmap::Vector{Pair}
order::Union{Int,Vector{<:Int},Nothing}
end
@@ -111,7 +111,7 @@ struct EvaledMeanfieldEquations <: AbstractMeanfieldEquations
jumps::Vector
jumps_dagger
rates::Vector
- iv::SymbolicUtils.BasicSymbolic
+ iv::MTK.Num
varmap::Vector{Pair}
order::Union{Int,Vector{<:Int},Nothing}
end
@@ -198,7 +198,7 @@ struct ScaledMeanfieldEquations <: AbstractMeanfieldEquations
jumps::Vector
jumps_dagger
rates::Vector
- iv::SymbolicUtils.BasicSymbolic
+ iv::MTK.Num
varmap::Vector{Pair}
order::Union{Int,Vector{<:Int},Nothing}
scale_aons
diff --git a/src/index_meanfield.jl b/src/index_meanfield.jl
index dd7873b4..d62640b3 100644
--- a/src/index_meanfield.jl
+++ b/src/index_meanfield.jl
@@ -35,7 +35,7 @@ See also: [`meanfield`](@ref).
If `nothing`, this step is skipped.
*`mix_choice=maximum`: If the provided `order` is a `Vector`, `mix_choice` determines
which `order` to prefer on terms that act on multiple Hilbert spaces.
-*`iv=SymbolicUtils.Sym{Real}(:t)`: The independent variable (time parameter) of the system.
+*`iv=ModelingToolkit.t`: The independent variable (time parameter) of the system.
"""
function indexed_meanfield(a::Vector,H,J;Jdagger::Vector=adjoint.(J),rates=ones(Int,length(J)),
@@ -43,7 +43,7 @@ function indexed_meanfield(a::Vector,H,J;Jdagger::Vector=adjoint.(J),rates=ones(
simplify::Bool=true,
order=nothing,
mix_choice=maximum,
- iv=SymbolicUtils.Sym{Real}(:t),
+ iv=MTK.t_nounits,
kwargs...)
ind_J = []
diff --git a/src/meanfield.jl b/src/meanfield.jl
index f02eae5b..6d3ed0dc 100644
--- a/src/meanfield.jl
+++ b/src/meanfield.jl
@@ -31,7 +31,7 @@ equivalent to the Quantum-Langevin equation where noise is neglected.
If `nothing`, this step is skipped.
*`mix_choice=maximum`: If the provided `order` is a `Vector`, `mix_choice` determines
which `order` to prefer on terms that act on multiple Hilbert spaces.
-*`iv=SymbolicUtils.Sym{Real}(:t)`: The independent variable (time parameter) of the system.
+*`iv=ModelingToolkit.t`: The independent variable (time parameter) of the system.
"""
function meanfield(a::Vector,H,J;kwargs...)
inds = vcat(get_indices(a),get_indices(H),get_indices(J))
@@ -50,7 +50,8 @@ function _meanfield(a::Vector,H,J;Jdagger::Vector=adjoint.(J),rates=ones(Int,len
simplify=true,
order=nothing,
mix_choice=maximum,
- iv=SymbolicUtils.Sym{Real}(:t)) # this creates with Symbolics v5.0 a BasicSymbolic, not a Sym anymore
+ iv=MTK.t_nounits
+ )
if rates isa Matrix
J = [J]; Jdagger = [Jdagger]; rates = [rates]
diff --git a/src/measurement_backaction.jl b/src/measurement_backaction.jl
index 51ee2a05..806ebf73 100644
--- a/src/measurement_backaction.jl
+++ b/src/measurement_backaction.jl
@@ -16,7 +16,7 @@ struct MeanfieldNoiseEquations <: AbstractMeanfieldEquations
jumps_dagger
rates::Vector
efficiencies::Vector
- iv::SymbolicUtils.BasicSymbolic
+ iv::MTK.Num
varmap::Vector{Pair}
order::Union{Int,Vector{<:Int},Nothing}
end
@@ -61,7 +61,8 @@ function _meanfield_backaction(a::Vector,H,J;Jdagger::Vector=adjoint.(J),rates=o
simplify=true,
order=nothing,
mix_choice=maximum,
- iv=SymbolicUtils.Sym{Real}(:t)) # this creates with Symbolics v5.0 a BasicSymbolic, not a Sym anymore
+ iv=MTK.t_nounits
+ )
if rates isa Matrix
J = [J]; Jdagger = [Jdagger]; rates = [rates]
diff --git a/src/measurement_backaction_indices.jl b/src/measurement_backaction_indices.jl
index 2d90b77e..ddd558ba 100644
--- a/src/measurement_backaction_indices.jl
+++ b/src/measurement_backaction_indices.jl
@@ -151,7 +151,7 @@ struct IndexedMeanfieldNoiseEquations <: AbstractMeanfieldEquations
jumps_dagger
rates::Vector
efficiencies::Vector
- iv::SymbolicUtils.BasicSymbolic
+ iv::MTK.Num
varmap::Vector{Pair}
order::Union{Int,Vector{<:Int},Nothing}
end
@@ -198,7 +198,7 @@ See also: [`indexed_meanfield`](@ref).
If `nothing`, this step is skipped.
*`mix_choice=maximum`: If the provided `order` is a `Vector`, `mix_choice` determines
which `order` to prefer on terms that act on multiple Hilbert spaces.
-*`iv=SymbolicUtils.Sym{Real}(:t)`: The independent variable (time parameter) of the system.
+*`iv=ModelingToolkit.t`: The independent variable (time parameter) of the system.
"""
function indexed_meanfield_backaction(a::Vector,H,J;Jdagger::Vector=adjoint.(J),
rates=ones(Int,length(J)),
@@ -207,7 +207,7 @@ function indexed_meanfield_backaction(a::Vector,H,J;Jdagger::Vector=adjoint.(J),
simplify::Bool=true,
order=nothing,
mix_choice=maximum,
- iv=SymbolicUtils.Sym{Real}(:t),
+ iv=MTK.t_nounits,
kwargs...)
check_index_collision(a, H, J)
diff --git a/src/qnumber.jl b/src/qnumber.jl
index b973eba3..d99aa474 100644
--- a/src/qnumber.jl
+++ b/src/qnumber.jl
@@ -41,7 +41,7 @@ Base.isless(a::QSym, b::QSym) = a.name < b.name
## Interface for SymbolicUtils
-TermInterface.exprhead(::QNumber) = :call
+TermInterface.head(::QNumber) = :call
SymbolicUtils.istree(::QSym) = false
SymbolicUtils.istree(::QTerm) = true
SymbolicUtils.istree(::Type{T}) where {T<:QTerm} = true
diff --git a/test/test_correlation.jl b/test/test_correlation.jl
index 5a395541..76ab47ad 100644
--- a/test/test_correlation.jl
+++ b/test/test_correlation.jl
@@ -28,7 +28,7 @@ ps = (Δ, g, γ, κ, ν)
# Numerical solution
# p0 = [0.0,0.5,1.0,0.1,0.9]
p0 = ps .=> ComplexF64[1, 1.5, 0.25, 1, 4]
-u0 = states(sys) .=> zeros(ComplexF64,length(he_comp))
+u0 = unknowns(sys) .=> zeros(ComplexF64,length(he_comp))
tmax = 10.0
prob = ODEProblem(sys,u0,(0.0,tmax),p0)
@@ -153,7 +153,7 @@ ps = (ωc,κ)
@named sys = ODESystem(he)
n0 = 20.0
u0 = [n0]
-p0 = (1 + 0im, 1 + 0im)
+p0 = (ωc => 1 + 0im, κ => 1 + 0im)
prob = ODEProblem(sys,u0,(0.0,10.0),p0)
sol = solve(prob,RK4())
@@ -166,7 +166,7 @@ sol_c = solve(prob_c,RK4(),save_idxs=1)
# plot(sol_c.t,real.(sol_c.u), label="Re(g) -- numeric")
# plot(sol_c.t,imag.(sol_c.u), label="Im(g) -- numeric")
-gfunc(τ) = @. sol.u[idx] * exp((im*p0[1]-0.5p0[2])*τ)
+gfunc(τ) = @. sol.u[idx] * exp((im*p0[1][2]-0.5p0[2][2])*τ)
# plot(sol_c.t, real.(gfunc(sol_c.t)), ls="dashed", label="Re(g) -- analytic")
# plot(sol_c.t, imag.(gfunc(sol_c.t)), ls="dashed", label="Re(g) -- analyitc")
# legend()
diff --git a/test/test_index_basic.jl b/test/test_index_basic.jl
index 62abf67a..6e59469c 100644
--- a/test/test_index_basic.jl
+++ b/test/test_index_basic.jl
@@ -248,7 +248,7 @@ ai(i) = IndexedOperator(Destroy(h_,:a),i)
@test to_numeric(ai(1),b_;ranges=ranges) == LazyTensor(b_, [5], (destroy(bfock),))
@test to_numeric(ai(2),b_;ranges=ranges) == LazyTensor(b_, [6], (destroy(bfock),))
-@test to_numeric(σi(1,2,4),b_;ranges=ranges) == LazyTensor(b_, [4], (transition(bnlevel,1,2),))
+@test to_numeric(σi(1,2,4),b_;ranges=ranges) == LazyTensor(b_, [4], (QuantumOpticsBase.transition(bnlevel,1,2),))
@test_throws MethodError to_numeric(σi(1,2,5),b_;ranges=ranges)
ai2(i) = IndexedOperator(Destroy(hfock,:a),i)
diff --git a/test/test_measurement_backaction_indices_comparison.jl b/test/test_measurement_backaction_indices_comparison.jl
index 3e77931b..64542aa0 100644
--- a/test/test_measurement_backaction_indices_comparison.jl
+++ b/test/test_measurement_backaction_indices_comparison.jl
@@ -7,7 +7,7 @@ using Symbolics
@cnumbers N ωa γ η χ ωc κ g ξ ωl
@syms t::Real
-@register pulse(t)
+@register_symbolic pulse(t)
hc = FockSpace(:resonator)
ha = NLevelSpace(:atom,2)
diff --git a/test/test_numeric_conversion.jl b/test/test_numeric_conversion.jl
index 335a2366..e091fbbf 100644
--- a/test/test_numeric_conversion.jl
+++ b/test/test_numeric_conversion.jl
@@ -1,6 +1,6 @@
using QuantumCumulants
using QuantumOpticsBase
-using ModelingToolkit
+using ModelingToolkit: ODESystem
using OrdinaryDiffEq
using Test
using Random; Random.seed!(0)
@@ -20,7 +20,7 @@ hnlevel = NLevelSpace(:nlevel, 3)
bnlevel = NLevelBasis(3)
for i=1:3, j=1:3
op = σ(i,j)
- @test to_numeric(op, bnlevel) == transition(bnlevel, i, j)
+ @test to_numeric(op, bnlevel) == QuantumOpticsBase.transition(bnlevel, i, j)
end
# with symbolic levels
@@ -33,7 +33,7 @@ for i=1:3, j=1:3
lvl1 = levels[i]
lvl2 = levels[j]
op = σ_sym(lvl1, lvl2)
- @test to_numeric(op, bnlevel; level_map=level_map) == transition(bnlevel, i, j)
+ @test to_numeric(op, bnlevel; level_map=level_map) == QuantumOpticsBase.transition(bnlevel, i, j)
end
# On composite bases
@@ -45,17 +45,17 @@ for i=1:3, j=1:3
i == j == 1 && continue # rewritten as sum, see below
op1 = a*σprod(i,j)
op2 = a'*σprod(i,j)
- @test to_numeric(op1, bprod) == LazyTensor(bprod, [1, 2], (destroy(bfock), transition(bnlevel, i, j)))
- @test to_numeric(op2, bprod) == LazyTensor(bprod, [1, 2], (create(bfock), transition(bnlevel, i, j)))
+ @test to_numeric(op1, bprod) == LazyTensor(bprod, [1, 2], (destroy(bfock), QuantumOpticsBase.transition(bnlevel, i, j)))
+ @test to_numeric(op2, bprod) == LazyTensor(bprod, [1, 2], (create(bfock), QuantumOpticsBase.transition(bnlevel, i, j)))
end
op1_num = to_numeric(a*σprod(1, 1), bprod)
@test op1_num isa LazySum
-@test sparse(op1_num) == destroy(bfock) ⊗ transition(bnlevel, 1, 1)
+@test sparse(op1_num) == destroy(bfock) ⊗ QuantumOpticsBase.transition(bnlevel, 1, 1)
op2_num = to_numeric(a'*σprod(1, 1), bprod)
@test op2_num isa LazySum
-@test sparse(op2_num) == create(bfock) ⊗ transition(bnlevel, 1, 1)
+@test sparse(op2_num) == create(bfock) ⊗ QuantumOpticsBase.transition(bnlevel, 1, 1)
@test to_numeric(a'*a, bprod) == LazyTensor(bprod, [1], (create(bfock) * destroy(bfock),))
@@ -67,17 +67,17 @@ for i=1:3, j=1:3
i == j == 1 && continue # see below
op1 = a*σsym_prod(levels[i],levels[j])
op2 = a'*σsym_prod(levels[i],levels[j])
- @test to_numeric(op1, bprod; level_map=level_map) == LazyTensor(bprod, [1,2], (destroy(bfock), transition(bnlevel, i, j)))
- @test to_numeric(op2, bprod; level_map=level_map) == LazyTensor(bprod, [1,2], (create(bfock), transition(bnlevel, i, j)))
+ @test to_numeric(op1, bprod; level_map=level_map) == LazyTensor(bprod, [1,2], (destroy(bfock), QuantumOpticsBase.transition(bnlevel, i, j)))
+ @test to_numeric(op2, bprod; level_map=level_map) == LazyTensor(bprod, [1,2], (create(bfock), QuantumOpticsBase.transition(bnlevel, i, j)))
end
op1_num = to_numeric(a*σsym_prod(:g, :g), bprod; level_map=level_map)
@test op1_num isa LazySum
-@test sparse(op1_num) == destroy(bfock) ⊗ transition(bnlevel, 1, 1)
+@test sparse(op1_num) == destroy(bfock) ⊗ QuantumOpticsBase.transition(bnlevel, 1, 1)
op2_num = to_numeric(a'*σsym_prod(:g, :g), bprod; level_map=level_map)
@test op2_num isa LazySum
-@test sparse(op2_num) == create(bfock) ⊗ transition(bnlevel, 1, 1)
+@test sparse(op2_num) == create(bfock) ⊗ QuantumOpticsBase.transition(bnlevel, 1, 1)
# composite basis with a "gap"
hprod_gap = hfock ⊗ hnlevel ⊗ hnlevel
@@ -88,17 +88,17 @@ for i=1:3, j=1:3
i == j == 1 && continue
op1 = a*σprod_gap(i,j)
op2 = a'*σprod_gap(i,j)
- @test to_numeric(op1, bprod_gap) == LazyTensor(bprod_gap, [1,3], (destroy(bfock), transition(bnlevel, i, j)))
- @test to_numeric(op2, bprod_gap) == LazyTensor(bprod_gap, [1,3], (create(bfock), transition(bnlevel, i, j)))
+ @test to_numeric(op1, bprod_gap) == LazyTensor(bprod_gap, [1,3], (destroy(bfock), QuantumOpticsBase.transition(bnlevel, i, j)))
+ @test to_numeric(op2, bprod_gap) == LazyTensor(bprod_gap, [1,3], (create(bfock), QuantumOpticsBase.transition(bnlevel, i, j)))
end
op1_num = to_numeric(a*σprod_gap(1, 1), bprod_gap)
@test op1_num isa LazySum
-@test sparse(op1_num) == destroy(bfock) ⊗ one(bnlevel) ⊗ transition(bnlevel, 1, 1)
+@test sparse(op1_num) == destroy(bfock) ⊗ one(bnlevel) ⊗ QuantumOpticsBase.transition(bnlevel, 1, 1)
op2_num = to_numeric(a'*σprod_gap(1, 1), bprod_gap)
@test op2_num isa LazySum
-@test sparse(op2_num) == create(bfock) ⊗ one(bnlevel) ⊗ transition(bnlevel, 1, 1)
+@test sparse(op2_num) == create(bfock) ⊗ one(bnlevel) ⊗ QuantumOpticsBase.transition(bnlevel, 1, 1)
# Numeric average values
@@ -114,7 +114,7 @@ idfock = one(bfock)
for i=1:3, j=1:3
op = σprod(i, j)
op_sym = σsym_prod(levels[i],levels[j])
- op_num = idfock ⊗ transition(bnlevel, i, j)
+ op_num = idfock ⊗ QuantumOpticsBase.transition(bnlevel, i, j)
@test numeric_average(op, ψprod) ≈ expect(op_num, ψprod)
@test numeric_average(op_sym, ψprod; level_map=level_map) ≈ expect(op_num, ψprod)
end
@@ -126,7 +126,7 @@ if isdefined(QuantumOpticsBase, :LazyKet)
for i=1:3, j=1:3
op = σprod(i, j)
op_sym = σsym_prod(levels[i],levels[j])
- op_num = LazyTensor(bprod, [2], (transition(bnlevel, i, j),))
+ op_num = LazyTensor(bprod, [2], (QuantumOpticsBase.transition(bnlevel, i, j),))
@test numeric_average(op, ψlazy) ≈ expect(op_num, ψlazy)
@test numeric_average(op_sym, ψlazy; level_map=level_map) ≈ expect(op_num, ψlazy)
end
@@ -153,10 +153,10 @@ level_map = Dict((levels .=> [1,2])...)
u0 = initial_values(eqs, ψ0; level_map=level_map)
@test u0[1] ≈ expect(destroy(bcav) ⊗ one(batom), ψ0)
-@test u0[2] ≈ expect(one(bcav) ⊗ transition(batom, 1, 2), ψ0)
+@test u0[2] ≈ expect(one(bcav) ⊗ QuantumOpticsBase.transition(batom, 1, 2), ψ0)
@test u0[3] ≈ expect(number(bcav) ⊗ one(batom), ψ0)
-@test u0[4] ≈ expect(one(bcav) ⊗ transition(batom, 2, 2), ψ0)
-@test u0[5] ≈ expect(create(bcav) ⊗ transition(batom, 1, 2), ψ0)
+@test u0[4] ≈ expect(one(bcav) ⊗ QuantumOpticsBase.transition(batom, 2, 2), ψ0)
+@test u0[5] ≈ expect(create(bcav) ⊗ QuantumOpticsBase.transition(batom, 1, 2), ψ0)
if isdefined(QuantumOpticsBase, :LazyKet)
@@ -165,10 +165,10 @@ if isdefined(QuantumOpticsBase, :LazyKet)
u0 = initial_values(eqs, ψlazy; level_map=level_map)
@test u0[1] ≈ expect(destroy(bcav) ⊗ one(batom), ψfull)
- @test u0[2] ≈ expect(one(bcav) ⊗ transition(batom, 1, 2), ψfull)
+ @test u0[2] ≈ expect(one(bcav) ⊗ QuantumOpticsBase.transition(batom, 1, 2), ψfull)
@test u0[3] ≈ expect(number(bcav) ⊗ one(batom), ψfull)
- @test u0[4] ≈ expect(one(bcav) ⊗ transition(batom, 2, 2), ψfull)
- @test u0[5] ≈ expect(create(bcav) ⊗ transition(batom, 1, 2), ψfull)
+ @test u0[4] ≈ expect(one(bcav) ⊗ QuantumOpticsBase.transition(batom, 2, 2), ψfull)
+ @test u0[5] ≈ expect(create(bcav) ⊗ QuantumOpticsBase.transition(batom, 1, 2), ψfull)
end
# Test sufficiently large hilbert space; from issue #109
@@ -201,7 +201,7 @@ b = tensor(bc, [ba for i=1:order]...)
ψa = normalize(nlevelstate(ba,1) + nlevelstate(ba,2))
ψ = tensor(ψc, [ψa for i=1:order]...)
a_ = LazyTensor(b, [1], (destroy(bc),))
-σ_(i,j,k) = LazyTensor(b,[1+k],(transition(ba,i,j),))
+σ_(i,j,k) = LazyTensor(b,[1+k],(QuantumOpticsBase.transition(ba,i,j),))
ranges=[1,2]
@test to_numeric(σ(1,2,1),b; ranges=ranges) == σ_(1,2,1)
@test to_numeric(σ(2,2,2),b; ranges=ranges) == σ_(2,2,2)
diff --git a/test/test_spin.jl b/test/test_spin.jl
index d596c063..33b886d0 100644
--- a/test/test_spin.jl
+++ b/test/test_spin.jl
@@ -46,7 +46,7 @@ eqs2_c = complete(eqs2, order=2)
@test length(eqs2_c) == 14
# Time evolution driven Dicke model
-@cnumbers Δ g κ η
+@cnumbers Δ_ g κ η
hf = FockSpace(:cavity)
ha1 = NLevelSpace(:atom1,2)
ha2 = NLevelSpace(:atom2,2)
@@ -54,13 +54,13 @@ h = hf ⊗ ha1 ⊗ ha2
a = Destroy(h,:a)
s1(i,j) = Transition(h,:s1,i,j,2)
s2(i,j) = Transition(h,:s2,i,j,3)
-H = Δ*a'*a + g*(a' + a)*(s1(2,1) + s1(1,2) + s2(2,1) + s2(1,2)) + η*(a' + a)
+H = Δ_*a'*a + g*(a' + a)*(s1(2,1) + s1(1,2) + s2(2,1) + s2(1,2)) + η*(a' + a)
J = [a]
rates = [κ]
#
eq = meanfield(a'a,H,J;rates=rates,order=2)
eqs = complete(eq)
-ps = [Δ, g, κ, η]
+ps = [Δ_, g, κ, η]
@named sys = ODESystem(eqs)
u0 = zeros(ComplexF64, length(eqs))
p0 = [0.5, 1.0, 1.25, 0.85]
@@ -81,14 +81,14 @@ h_ = hf ⊗ hs1 ⊗ hs2
a2 = Destroy(h_,:a2)
σ1(axis) = Sigma(h_,:σ1,axis,2)
σ2(axis) = Sigma(h_,:σ2,axis,3)
-H = Δ*a2'*a2 + g*(a2' + a2)*(σ1(1) + σ2(1)) + η*(a2' + a2)
+H = Δ_*a2'*a2 + g*(a2' + a2)*(σ1(1) + σ2(1)) + η*(a2' + a2)
J = [a2]
rates = [κ]
#
eq_ = meanfield([σ1(3), σ2(3), σ1(3)*σ2(3)],H,J;rates=rates,order=2)
eqs_ = complete(eq_)
eqs_.states
-ps = [Δ, g, κ, η]
+ps = [Δ_, g, κ, η]
@named sys_ = ODESystem(eqs_)
u0_ = zeros(ComplexF64, length(eqs_))
u0_[1] = u0_[2] = -1