diff --git a/julia/.gitignore b/julia/.gitignore new file mode 100644 index 0000000..c22cd04 --- /dev/null +++ b/julia/.gitignore @@ -0,0 +1 @@ +plots \ No newline at end of file diff --git a/julia/Manifest.toml b/julia/Manifest.toml new file mode 100644 index 0000000..1dbf6e2 --- /dev/null +++ b/julia/Manifest.toml @@ -0,0 +1,513 @@ +# This file is machine-generated - editing it directly is not advised + +[[ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" + +[[ArrayInterface]] +deps = ["IfElse", "LinearAlgebra", "Requires", "SparseArrays", "Static"] +git-tree-sha1 = "baf4ef9082070477046bd98306952292bfcb0af9" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "3.1.25" + +[[Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[AssetRegistry]] +deps = ["Distributed", "JSON", "Pidfile", "SHA", "Test"] +git-tree-sha1 = "b25e88db7944f98789130d7b503276bc34bc098e" +uuid = "bf4720bc-e11a-5d0c-854e-bdca1663c893" +version = "0.1.0" + +[[Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[BinDeps]] +deps = ["Libdl", "Pkg", "SHA", "URIParser", "Unicode"] +git-tree-sha1 = "1289b57e8cf019aede076edab0587eb9644175bd" +uuid = "9e28174c-4ba2-5203-b857-d8d62c4213ee" +version = "1.0.2" + +[[Blink]] +deps = ["Base64", "BinDeps", "Distributed", "JSExpr", "JSON", "Lazy", "Logging", "MacroTools", "Mustache", "Mux", "Reexport", "Sockets", "WebIO", "WebSockets"] +git-tree-sha1 = "08d0b679fd7caa49e2bca9214b131289e19808c0" +uuid = "ad839575-38b3-5650-b840-f874b8c74a25" +version = "0.12.5" + +[[ChainRulesCore]] +deps = ["Compat", "LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "bdc0937269321858ab2a4f288486cb258b9a0af7" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.3.0" + +[[ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "024fe24d83e4a5bf5fc80501a314ce0d1aa35597" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.0" + +[[Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "417b0ed7b8b838aa6ca0a87aadf1bb9eb111ce40" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.12.8" + +[[CommonSubexpressions]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.0" + +[[Compat]] +deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] +git-tree-sha1 = "727e463cfebd0c7b999bbf3e9e7e16f254b94193" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "3.34.0" + +[[CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" + +[[DataAPI]] +git-tree-sha1 = "ee400abb2298bd13bfc3df1c412ed228061a2385" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.7.0" + +[[DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[DelimitedFiles]] +deps = ["Mmap"] +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" + +[[DiffResults]] +deps = ["StaticArrays"] +git-tree-sha1 = "c18e98cba888c6c25d1c3b048e4b3380ca956805" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.0.3" + +[[DiffRules]] +deps = ["NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "3ed8fa7178a10d1cd0f1ca524f249ba6937490c0" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.3.0" + +[[Distances]] +deps = ["LinearAlgebra", "Statistics", "StatsAPI"] +git-tree-sha1 = "abe4ad222b26af3337262b8afb28fab8d215e9f8" +uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" +version = "0.10.3" + +[[Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "a32185f5428d3986f47c2ab78b1f216d5e6cc96f" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.8.5" + +[[Downloads]] +deps = ["ArgTools", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" + +[[FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[FiniteDiff]] +deps = ["ArrayInterface", "LinearAlgebra", "Requires", "SparseArrays", "StaticArrays"] +git-tree-sha1 = "8b3c09b56acaf3c0e581c66638b85c8650ee9dca" +uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" +version = "2.8.1" + +[[FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "NaNMath", "Printf", "Random", "SpecialFunctions", "StaticArrays"] +git-tree-sha1 = "b5e930ac60b613ef3406da6d4f42c35d8dc51419" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "0.10.19" + +[[FunctionalCollections]] +deps = ["Test"] +git-tree-sha1 = "04cb9cfaa6ba5311973994fe3496ddec19b6292a" +uuid = "de31a74c-ac4f-5751-b3fd-e18cd04993ca" +version = "0.5.0" + +[[HTTP]] +deps = ["Base64", "Dates", "IniFile", "Logging", "MbedTLS", "NetworkOptions", "Sockets", "URIs"] +git-tree-sha1 = "44e3b40da000eab4ccb1aecdc4801c040026aeb5" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "0.9.13" + +[[Hiccup]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "6187bb2d5fcbb2007c39e7ac53308b0d371124bd" +uuid = "9fb69e20-1954-56bb-a84f-559cc56a8ff7" +version = "0.2.2" + +[[IfElse]] +git-tree-sha1 = "28e837ff3e7a6c3cdb252ce49fb412c8eb3caeef" +uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" +version = "0.1.0" + +[[IniFile]] +deps = ["Test"] +git-tree-sha1 = "098e4d2c533924c921f9f9847274f2ad89e018b8" +uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" +version = "0.5.0" + +[[InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[IrrationalConstants]] +git-tree-sha1 = "f76424439413893a832026ca355fe273e93bce94" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.1.0" + +[[IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[JLLWrappers]] +deps = ["Preferences"] +git-tree-sha1 = "642a199af8b68253517b80bd3bfd17eb4e84df6e" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.3.0" + +[[JSExpr]] +deps = ["JSON", "MacroTools", "Observables", "WebIO"] +git-tree-sha1 = "bd6c034156b1e7295450a219c4340e32e50b08b1" +uuid = "97c1335a-c9c5-57fe-bc5d-ec35cebe8660" +version = "0.5.3" + +[[JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "8076680b162ada2a031f707ac7b4953e30667a37" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.2" + +[[Kaleido_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "2ef87eeaa28713cb010f9fb0be288b6c1a4ecd53" +uuid = "f7e6163d-2fa5-5f23-b69c-1db539e41963" +version = "0.1.0+0" + +[[LaTeXStrings]] +git-tree-sha1 = "c7f1c695e06c01b95a67f0cd1d34994f3e7db104" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.2.1" + +[[Lazy]] +deps = ["MacroTools"] +git-tree-sha1 = "1370f8202dac30758f3c345f9909b97f53d87d3f" +uuid = "50d2b5c4-7a5e-59d5-8109-a42b560f39c0" +version = "0.15.1" + +[[LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" + +[[LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" + +[[LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" + +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[LineSearches]] +deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] +git-tree-sha1 = "f27132e551e959b3667d8c93eae90973225032dd" +uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" +version = "7.1.1" + +[[LinearAlgebra]] +deps = ["Libdl"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "3d682c07e6dd250ed082f883dc88aee7996bf2cc" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.0" + +[[Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "0fb723cd8c45858c22169b2e42269e53271a6df7" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.7" + +[[Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "Random", "Sockets"] +git-tree-sha1 = "1c38e51c3d08ef2278062ebceade0e46cefc96fe" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.0.3" + +[[MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" + +[[Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" + +[[Mustache]] +deps = ["Printf", "Tables"] +git-tree-sha1 = "36995ef0d532fe08119d70b2365b7b03d4e00f48" +uuid = "ffc61752-8dc7-55ee-8c37-f3e9cdd09e70" +version = "1.0.10" + +[[Mux]] +deps = ["AssetRegistry", "Base64", "HTTP", "Hiccup", "Pkg", "Sockets", "WebSockets"] +git-tree-sha1 = "82dfb2cead9895e10ee1b0ca37a01088456c4364" +uuid = "a975b10e-0019-58db-a62f-e48ff68538c9" +version = "0.7.6" + +[[NLSolversBase]] +deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] +git-tree-sha1 = "144bab5b1443545bc4e791536c9f1eacb4eed06a" +uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" +version = "7.8.1" + +[[NLsolve]] +deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"] +git-tree-sha1 = "019f12e9a1a7880459d0173c182e6a99365d7ac1" +uuid = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" +version = "4.5.1" + +[[NaNMath]] +git-tree-sha1 = "bfe47e760d60b82b66b61d2d44128b62e3a369fb" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "0.3.5" + +[[NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" + +[[Observables]] +git-tree-sha1 = "3469ef96607a6b9a1e89e54e6f23401073ed3126" +uuid = "510215fc-4207-5dde-b226-833fc4488ee2" +version = "0.3.3" + +[[OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[OrderedCollections]] +git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.4.1" + +[[Parameters]] +deps = ["OrderedCollections", "UnPack"] +git-tree-sha1 = "2276ac65f1e236e0a6ea70baff3f62ad4c625345" +uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" +version = "0.12.2" + +[[Parsers]] +deps = ["Dates"] +git-tree-sha1 = "438d35d2d95ae2c5e8780b330592b6de8494e779" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.0.3" + +[[Pidfile]] +deps = ["FileWatching", "Test"] +git-tree-sha1 = "1be8660b2064893cd2dae4bd004b589278e4440d" +uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" +version = "1.2.0" + +[[Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" + +[[PlotlyBase]] +deps = ["Base64", "Dates", "DelimitedFiles", "DocStringExtensions", "JSON", "Kaleido_jll", "LaTeXStrings", "Logging", "Pkg", "REPL", "Requires", "Statistics", "UUIDs"] +git-tree-sha1 = "bca220daa9705b891a42c6ce0c20534a3196e73e" +uuid = "a03496cd-edff-5a9b-9e67-9cda94a718b5" +version = "0.5.4" + +[[PlotlyJS]] +deps = ["Blink", "DelimitedFiles", "JSExpr", "JSON", "Markdown", "Pkg", "PlotlyBase", "REPL", "Reexport", "Requires", "WebIO"] +git-tree-sha1 = "882ec81d5cf7d32168946397652ead9df99e0346" +uuid = "f0f68f2c-4968-5e81-91da-67840de0976a" +version = "0.15.0" + +[[Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00cfd92944ca9c760982747e9a1d0d5d86ab1e5a" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.2.2" + +[[Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[Random]] +deps = ["Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "4036a3bd08ac7e968e27c203d45f5fff15020621" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.1.3" + +[[SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" + +[[Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" + +[[Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[SparseArrays]] +deps = ["LinearAlgebra", "Random"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[SpecialFunctions]] +deps = ["ChainRulesCore", "LogExpFunctions", "OpenSpecFun_jll"] +git-tree-sha1 = "a322a9493e49c5f3a10b50df3aedaf1cdb3244b7" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "1.6.1" + +[[Static]] +deps = ["IfElse"] +git-tree-sha1 = "62701892d172a2fa41a1f829f66d2b0db94a9a63" +uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" +version = "0.3.0" + +[[StaticArrays]] +deps = ["LinearAlgebra", "Random", "Statistics"] +git-tree-sha1 = "3240808c6d463ac46f1c1cd7638375cd22abbccb" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.2.12" + +[[Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[StatsAPI]] +git-tree-sha1 = "1958272568dc176a1d881acb797beb909c785510" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.0.0" + +[[TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" + +[[TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "TableTraits", "Test"] +git-tree-sha1 = "d0c690d37c73aeb5ca063056283fde5585a41710" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.5.0" + +[[Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" + +[[Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[URIParser]] +deps = ["Unicode"] +git-tree-sha1 = "53a9f49546b8d2dd2e688d216421d050c9a31d0d" +uuid = "30578b45-9adc-5946-b283-645ec420af67" +version = "0.4.1" + +[[URIs]] +git-tree-sha1 = "97bbe755a53fe859669cd907f2d96aee8d2c1355" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.3.0" + +[[UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[UnPack]] +git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" +uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +version = "1.0.2" + +[[Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[WebIO]] +deps = ["AssetRegistry", "Base64", "Distributed", "FunctionalCollections", "JSON", "Logging", "Observables", "Pkg", "Random", "Requires", "Sockets", "UUIDs", "WebSockets", "Widgets"] +git-tree-sha1 = "adc25e225bc334c7df6eec3b39496edfc451cc38" +uuid = "0f1e0344-ec1d-5b48-a673-e5cf874b6c29" +version = "0.8.15" + +[[WebSockets]] +deps = ["Base64", "Dates", "HTTP", "Logging", "Sockets"] +git-tree-sha1 = "f91a602e25fe6b89afc93cf02a4ae18ee9384ce3" +uuid = "104b5d7c-a370-577a-8038-80a2059c5097" +version = "1.5.9" + +[[Widgets]] +deps = ["Colors", "Dates", "Observables", "OrderedCollections"] +git-tree-sha1 = "eae2fbbc34a79ffd57fb4c972b08ce50b8f6a00d" +uuid = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" +version = "0.6.3" + +[[Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" + +[[nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" + +[[p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" diff --git a/julia/Project.toml b/julia/Project.toml new file mode 100644 index 0000000..f1f1f35 --- /dev/null +++ b/julia/Project.toml @@ -0,0 +1,14 @@ +name = "Thesis" +uuid = "143f99ee-ad45-4870-8aaa-7b5c293c7803" +authors = ["Connor Johnstone "] +version = "0.1.0" + +[deps] +Blink = "ad839575-38b3-5650-b840-f874b8c74a25" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" +PlotlyBase = "a03496cd-edff-5a9b-9e67-9cda94a718b5" +PlotlyJS = "f0f68f2c-4968-5e81-91da-67840de0976a" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/julia/main.jl b/julia/main.jl deleted file mode 100644 index 942ca8b..0000000 --- a/julia/main.jl +++ /dev/null @@ -1,10 +0,0 @@ -using LinearAlgebra, ForwardDiff, Blink, PlotlyJS - -include("constants.jl") -include("conversions.jl") -include("spacecraft.jl") -include("plotting.jl") -include("laguerre-conway.jl") -include("propagator.jl") -include("result.jl") -include("single_shoot.jl") diff --git a/julia/result.jl b/julia/result.jl deleted file mode 100644 index 29d6f52..0000000 --- a/julia/result.jl +++ /dev/null @@ -1,16 +0,0 @@ -struct Result - converged::Bool - ΔVs::Matrix{Float64} - start::Vector{Float64} - final::Vector{Float64} -end - -function Result(name::String) - if name == "test_converged" - return Result(true, Matrix(undef,0,0), Vector{Float64}(), Vector{Float64}()) - elseif name == "test_unconverged" - return Result(false, Matrix(undef,0,0), Vector{Float64}(), Vector{Float64}()) - else - throw(ErrorException("Bad result name")) - end -end diff --git a/julia/single_shoot.jl b/julia/single_shoot.jl deleted file mode 100644 index 5413188..0000000 --- a/julia/single_shoot.jl +++ /dev/null @@ -1,87 +0,0 @@ -using NLsolve, NLopt - -function treat_inputs(x::AbstractVector) - n::Int = length(x)/3 - reshape(x,(3,n))' -end - -function single_shoot(start::Vector{Float64}, - final::Vector{Float64}, - craft::Sc, - μ::Float64, - t0::Float64, - tf::Float64, - n::Int, - x0::AbstractVector, - tol=1e-2) - - function f!(F,x) - F[1:6] .= prop(treat_inputs(x), start, craft, μ, tf-t0)[1][end,:] - final - F[7:3n] .= 0. - end - - return nlsolve(f!, x0, ftol=tol, autodiff=:forward, iterations=10_000) - -end - -function single_shoot2(start::Vector, - final::Vector, - craft::Sc, - μ::AbstractFloat, - t0::AbstractFloat, - tf::AbstractFloat, - x0::Vector, - tol=1e-8) - - n::Int = length(x0)/3 - m0 = craft.mass - - f(x::Vector) = m0 - prop(treat_inputs(x), start, craft, μ, tf-t0)[2][end] - f_constraint(x::Vector) = norm(prop(treat_inputs(x), start, craft, μ, tf-t0)[1][end,:] - final) - - function nlfunc(x::Vector, grad::Vector) - try - if length(grad) != 0 - ForwardDiff.gradient!(grad, f, x) - end - f(x) - catch e - println("Error was $e") - throw(e) - end - end - - function nlconstraint(x::Vector, grad::Vector) - if length(grad) != 0 - ForwardDiff.gradient!(grad, f_constraint, x) - end - f_constraint(x) - end - - opt = Opt(:LD_MMA, 3n) - lower_bounds = Vector{Float64}() - upper_bounds = Vector{Float64}() - for i in 1:3n - if i%3 == 1 - push!(lower_bounds, 0.) - push!(upper_bounds, 1.) - elseif i%3 == 2 - push!(lower_bounds, -π) - push!(upper_bounds, π) - elseif i%3 == 0 - push!(lower_bounds, -π/2) - push!(upper_bounds, π/2) - end - end - opt.lower_bounds = lower_bounds - opt.upper_bounds = upper_bounds - opt.xtol_rel = 1e-4 - opt.min_objective = nlfunc - inequality_constraint!(opt, nlconstraint, 1e-8) - - (minf, minx, ret) = optimize(opt, x0) - numevals = opt.numevals - - return minf, minx, ret, numevals - -end diff --git a/julia/src/Thesis.jl b/julia/src/Thesis.jl new file mode 100644 index 0000000..18cd0f6 --- /dev/null +++ b/julia/src/Thesis.jl @@ -0,0 +1,12 @@ +module Thesis + + using LinearAlgebra, ForwardDiff, Blink, PlotlyJS + + include("./constants.jl") + include("./conversions.jl") + include("./spacecraft.jl") + include("./plotting.jl") + include("./laguerre-conway.jl") + include("./propagator.jl") + include("./find_closest.jl") +end \ No newline at end of file diff --git a/julia/constants.jl b/julia/src/constants.jl similarity index 98% rename from julia/constants.jl rename to julia/src/constants.jl index d410086..cf459a3 100644 --- a/julia/constants.jl +++ b/julia/src/constants.jl @@ -2,7 +2,7 @@ # DEFINING CONSTANTS # ----------------------------------------------------------------------------- -export μs, G, GMs, μ, rs, as, es +export μs, G, GMs, μ, rs, as, es, AU # Gravitational Constants μs = Dict( diff --git a/julia/conversions.jl b/julia/src/conversions.jl similarity index 96% rename from julia/conversions.jl rename to julia/src/conversions.jl index 30168aa..6bc40d2 100644 --- a/julia/conversions.jl +++ b/julia/src/conversions.jl @@ -1,3 +1,5 @@ +export oe_to_rθh, rθh_to_xyz, oe_to_xyz, xyz_to_oe + function oe_to_rθh(oe::Vector,μ::Real) :: Vector a,e,i,Ω,ω,ν = oe diff --git a/julia/src/find_closest.jl b/julia/src/find_closest.jl new file mode 100644 index 0000000..2061726 --- /dev/null +++ b/julia/src/find_closest.jl @@ -0,0 +1,24 @@ +using NLsolve + +function treat_inputs(x::AbstractVector) + n::Int = length(x)/3 + reshape(x,(3,n))' +end + +function single_shoot(start::Vector{Float64}, + final::Vector{Float64}, + craft::Sc, + μ::Float64, + t0::Float64, + tf::Float64, + x0::AbstractVector, + tol=1e-2) + + function f!(F,x) + F[1:6] .= prop(treat_inputs(x), start, craft, μ, tf-t0)[1][end,:] - final + F[7:3n] .= 0. + end + + return nlsolve(f!, x0, ftol=tol, autodiff=:forward, iterations=10_000) + +end \ No newline at end of file diff --git a/julia/laguerre-conway.jl b/julia/src/laguerre-conway.jl similarity index 100% rename from julia/laguerre-conway.jl rename to julia/src/laguerre-conway.jl diff --git a/julia/plotting.jl b/julia/src/plotting.jl similarity index 99% rename from julia/plotting.jl rename to julia/src/plotting.jl index 3662953..e9fccf3 100644 --- a/julia/plotting.jl +++ b/julia/src/plotting.jl @@ -3,6 +3,8 @@ using Random, PlotlyJS, Base.Iterators +export plot_orbits + function random_color() num1 = rand(0:255) num2 = rand(0:255) diff --git a/julia/propagator.jl b/julia/src/propagator.jl similarity index 99% rename from julia/propagator.jl rename to julia/src/propagator.jl index b6e21de..e6ee9f6 100644 --- a/julia/propagator.jl +++ b/julia/src/propagator.jl @@ -1,3 +1,5 @@ +export prop + """ Maximum ΔV that a spacecraft can impulse for a given single time step """ diff --git a/julia/spacecraft.jl b/julia/src/spacecraft.jl similarity index 96% rename from julia/spacecraft.jl rename to julia/src/spacecraft.jl index 4436683..a3c9169 100644 --- a/julia/spacecraft.jl +++ b/julia/src/spacecraft.jl @@ -1,3 +1,5 @@ +export Sc + struct Sc{T <: Real} mass::T mass_flow_rate::Float64 diff --git a/julia/test/single_shoot.jl b/julia/test/find_closest.jl similarity index 88% rename from julia/test/single_shoot.jl rename to julia/test/find_closest.jl index 96c36dc..0f06bc4 100644 --- a/julia/test/single_shoot.jl +++ b/julia/test/find_closest.jl @@ -1,4 +1,4 @@ -@testset "Single Shooting" begin +@testset "Find Closest" begin # Initial Setup sc = Sc("test") @@ -17,7 +17,7 @@ # This should be close enough to 0.6 x0 = repeat([0.59, 0., 0.], n) - result = single_shoot2(start, final, sc, μs["Earth"], 0.0, prop_time, x0) + result = Thesis.single_shoot(start, final, sc, μs["Earth"], 0.0, prop_time, x0) # Test and plot @test result[3] == :XTOL_REACHED @@ -28,7 +28,7 @@ savefig(plot_orbits([path1, path2, path3, path4], labels=["inital", "transit", "after transit", "final"], colors=["#FFFFFF","#FF4444","#44FF44","#4444FF"]), - "single_shoot_test.html") + "plots/find_closest_test.html") if result[3] == :XTOL_REACHED @test norm(path2[end,:] - final) < 1e-6 end diff --git a/julia/test/laguerre-conway.jl b/julia/test/laguerre-conway.jl index bfa0ddf..5df2b54 100644 --- a/julia/test/laguerre-conway.jl +++ b/julia/test/laguerre-conway.jl @@ -1,4 +1,5 @@ @testset "Laguerre-Conway" begin + using Thesis: laguerre_conway # Test that the propagator produces good periodic orbits (forwards and backwards) for T in rand(3600*1.5:3600*4, (5)) diff --git a/julia/test/plotting.jl b/julia/test/plotting.jl index ec5d4db..ada5689 100644 --- a/julia/test/plotting.jl +++ b/julia/test/plotting.jl @@ -1,5 +1,7 @@ @testset "Plotting" begin + using PlotlyJS + # First some setup sc = Sc("test") T = rand(3600*2:0.01:3600*4) @@ -13,7 +15,7 @@ ΔVs = repeat([0.5, 0., 0.]', outer=(n,1)) path = prop(ΔVs, start, sc, μs["Earth"], 3T)[1] p = plot_orbits([path]) - savefig(p,"plot_test.html") + savefig(p,"../plots/plot_test.html") @test typeof(p) == PlotlyJS.SyncPlot end diff --git a/julia/test/propagator.jl b/julia/test/propagator.jl index 13b8ab1..b985443 100644 --- a/julia/test/propagator.jl +++ b/julia/test/propagator.jl @@ -1,5 +1,7 @@ @testset "Propagator" begin + using Thesis: prop_one + # Set up start = oe_to_xyz([ (μs["Earth"]*(rand(3600*1.5:0.01:3600*4)/(2π))^2)^(1/3), rand(0.01:0.01:0.5), diff --git a/julia/test/result.jl b/julia/test/result.jl deleted file mode 100644 index 5d58f8c..0000000 --- a/julia/test/result.jl +++ /dev/null @@ -1,16 +0,0 @@ -@testset "Result Construction" begin - - # Test that the standard results can be created - result = Result("test_converged") - @test result.converged == true - @test length(result.ΔVs) == 0 - @test length(result.start) == 0 - @test length(result.final) == 0 - - result = Result("test_unconverged") - @test result.converged == false - @test length(result.ΔVs) == 0 - @test length(result.start) == 0 - @test length(result.final) == 0 - -end diff --git a/julia/test/test.jl b/julia/test/runtests.jl similarity index 73% rename from julia/test/test.jl rename to julia/test/runtests.jl index 3f2a618..cd904bc 100644 --- a/julia/test/test.jl +++ b/julia/test/runtests.jl @@ -1,8 +1,8 @@ using Test using Random using LinearAlgebra +using Thesis -include("../main.jl") # Tests @testset "All Tests" begin @@ -10,8 +10,7 @@ include("../main.jl") include("laguerre-conway.jl") include("propagator.jl") include("plotting.jl") - include("result.jl") - include("single_shoot.jl") + include("find_closest.jl") end print()