diff --git a/.gitignore b/.gitignore index f57be035..1be21443 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ deps/deps.jl *.mem *.h5 +.vscode/settings.json Manifest.toml diff --git a/Manifest.toml b/Manifest.toml new file mode 100644 index 00000000..7578970e --- /dev/null +++ b/Manifest.toml @@ -0,0 +1,530 @@ +# This file is machine-generated - editing it directly is not advised + +[[AbstractFFTs]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "051c95d6836228d120f5f4b984dd5aba1624f716" +uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" +version = "0.5.0" + +[[ArgParse]] +deps = ["Logging", "TextWrap"] +git-tree-sha1 = "a8fc2e149cd6db276c76faebe197ccd3a92fb9ff" +uuid = "c7e460c6-2fb9-53a9-8c5b-16f535851c63" +version = "1.1.0" + +[[Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[BenchmarkTools]] +deps = ["JSON", "Logging", "Printf", "Statistics", "UUIDs"] +git-tree-sha1 = "9e62e66db34540a0c919d72172cc2f642ac71260" +uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" +version = "0.5.0" + +[[BinDeps]] +deps = ["Libdl", "Pkg", "SHA", "URIParser", "Unicode"] +git-tree-sha1 = "66158ad56b4bf6cc8413b37d0b7bc52402682764" +uuid = "9e28174c-4ba2-5203-b857-d8d62c4213ee" +version = "1.0.0" + +[[BinaryProvider]] +deps = ["Libdl", "SHA"] +git-tree-sha1 = "5b08ed6036d9d3f0ee6369410b830f8873d4024c" +uuid = "b99e7846-7c00-51b0-8f62-c81ae34c0232" +version = "0.5.8" + +[[Blosc]] +deps = ["BinaryProvider", "CMakeWrapper", "Libdl"] +git-tree-sha1 = "9981f1795919b8f770dc064fe733ba09c2e7c7a9" +uuid = "a74b3585-a348-5f62-a45c-50e91977d574" +version = "0.6.0" + +[[CMake]] +deps = ["BinDeps"] +git-tree-sha1 = "50a8b41d2c562fccd9ab841085fc7d1e2706da82" +uuid = "631607c0-34d2-5d66-819e-eb0f9aa2061a" +version = "1.2.0" + +[[CMakeWrapper]] +deps = ["BinDeps", "CMake", "Libdl", "Parameters", "Test"] +git-tree-sha1 = "16d4acb3d37dc05b714977ffefa8890843dc8985" +uuid = "d5fb7624-851a-54ee-a528-d3f3bac0b4a0" +version = "0.2.3" + +[[CSV]] +deps = ["CategoricalArrays", "DataFrames", "Dates", "FilePathsBase", "Mmap", "Parsers", "PooledArrays", "Tables", "Unicode", "WeakRefStrings"] +git-tree-sha1 = "c5ef3e34d21aa4b0e88521f1dc8031515d389148" +uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" +version = "0.5.26" + +[[Calculus]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" +uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" +version = "0.5.1" + +[[CategoricalArrays]] +deps = ["Compat", "DataAPI", "Future", "JSON", "Missings", "Printf", "Reexport", "Statistics", "Unicode"] +git-tree-sha1 = "23d7324164c89638c18f6d7f90d972fa9c4fa9fb" +uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" +version = "0.7.7" + +[[CodeTracking]] +deps = ["InteractiveUtils", "UUIDs"] +git-tree-sha1 = "0becdab7e6fbbcb7b88d8de5b72e5bb2f28239f3" +uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" +version = "0.5.8" + +[[ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "c4c1cca28748906265ed62c788d6fe6f0134d264" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.10.0" + +[[Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "InteractiveUtils", "Reexport"] +git-tree-sha1 = "2fdeb981ebcf52cd800ddb6a0aa5eac34153552d" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.12.0" + +[[Combinatorics]] +deps = ["Polynomials"] +git-tree-sha1 = "140cc833258df8e5aafabdb068875ac0c256be23" +uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" +version = "1.0.0" + +[[CommonSubexpressions]] +deps = ["Test"] +git-tree-sha1 = "efdaf19ab11c7889334ca247ff4c9f7c322817b0" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.2.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 = "0198d18b28c093bef39872a22f1a897218a925f5" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "3.8.0" + +[[Conda]] +deps = ["JSON", "VersionParsing"] +git-tree-sha1 = "7a58bb32ce5d85f8bf7559aa7c2842f9aecf52fc" +uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" +version = "1.4.1" + +[[ConstructionBase]] +git-tree-sha1 = "a2a6a5fea4d6f730ec4c18a76d27ec10e8ec1c50" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.0.0" + +[[CoolProp]] +deps = ["Compat", "JSON", "LibGit2", "Libdl", "Markdown", "Unitful"] +git-tree-sha1 = "0ffe8a45e0437b15241b205c4f8c016cda91e170" +repo-rev = "master" +repo-url = "https://github.com/CoolProp/CoolProp.jl.git" +uuid = "e084ae63-2819-5025-826e-f8e611a84251" +version = "0.0.0" + +[[Cubature]] +deps = ["BinaryProvider", "Libdl"] +git-tree-sha1 = "2c8c4102e905a2444cdbf6f7c1a71771815f2910" +uuid = "667455a9-e2ce-5579-9412-b964f529a492" +version = "1.4.1" + +[[DSP]] +deps = ["FFTW", "IterTools", "LinearAlgebra", "Polynomials", "Random", "Reexport", "SpecialFunctions", "Statistics"] +git-tree-sha1 = "e10f3c579404419c172a8aa8d83a12fde99e9964" +uuid = "717857b8-e6f2-59f4-9121-6e50c889abd2" +version = "0.6.3" + +[[DataAPI]] +git-tree-sha1 = "674b67f344687a88310213ddfa8a2b3c76cc4252" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.1.0" + +[[DataFrames]] +deps = ["CategoricalArrays", "Compat", "DataAPI", "Future", "InvertedIndices", "IteratorInterfaceExtensions", "Missings", "PooledArrays", "Printf", "REPL", "Reexport", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] +git-tree-sha1 = "7d5bf815cc0b30253e3486e8ce2b93bf9d0faff6" +uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +version = "0.20.2" + +[[DataStructures]] +deps = ["InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "5a431d46abf2ef2a4d5d00bd0ae61f651cf854c8" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.17.10" + +[[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 = "da24935df8e0c6cf28de340b958f6aac88eaa0cc" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.0.2" + +[[DiffRules]] +deps = ["NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "eb0c34204c8410888844ada5359ac8b96292cfd1" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.0.1" + +[[Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[FFTW]] +deps = ["AbstractFFTs", "BinaryProvider", "Conda", "Libdl", "LinearAlgebra", "Reexport"] +git-tree-sha1 = "4cfd3d43819228b9e73ab46600d0af0aa5cedceb" +uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" +version = "1.1.0" + +[[FilePathsBase]] +deps = ["Dates", "LinearAlgebra", "Printf", "Test", "UUIDs"] +git-tree-sha1 = "2cd6e2e7965934f72cb80251f760228e2264bab3" +uuid = "48062228-2e41-5def-b9a4-89aafe57970f" +version = "0.7.0" + +[[FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[FiniteDifferences]] +deps = ["LinearAlgebra", "Printf"] +git-tree-sha1 = "f7f69a1cb10c04958b3da91913ce5af992924150" +uuid = "26cc04aa-876d-5657-8c51-4c34ba976000" +version = "0.9.2" + +[[FixedPointNumbers]] +git-tree-sha1 = "3ba9ea634d4c8b289d590403b4a06f8e227a6238" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.0" + +[[ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "NaNMath", "Random", "SpecialFunctions", "StaticArrays"] +git-tree-sha1 = "88b082d492be6b63f967b6c96b352e25ced1a34c" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "0.10.9" + +[[FunctionZeros]] +deps = ["Roots", "SpecialFunctions", "Test"] +git-tree-sha1 = "a7d31aabf0fb8ec1947b93de51230d1875c0face" +uuid = "b21f74c0-b399-568f-9643-d20f4fa2c814" +version = "0.1.1" + +[[Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" + +[[GSL]] +deps = ["BinaryProvider", "Libdl", "Markdown"] +git-tree-sha1 = "5412051557d2c0d5a76f8d4b6a9b849123fac892" +uuid = "92c85e6c-cbff-5e0c-80f7-495c94daaecd" +version = "0.6.0" + +[[HCubature]] +deps = ["Combinatorics", "DataStructures", "LinearAlgebra", "QuadGK", "StaticArrays"] +git-tree-sha1 = "fc4adde0a029bf69c0da3f7c25ca24b5e0e389ed" +uuid = "19dc6840-f33b-545b-b366-655c7e3ffd49" +version = "1.4.0" + +[[HDF5]] +deps = ["BinaryProvider", "Blosc", "CMakeWrapper", "Libdl", "Mmap"] +git-tree-sha1 = "d3ea5532668bf9bdd5e8d5f16571e0b520cbbb9f" +uuid = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" +version = "0.12.5" + +[[InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[InvertedIndices]] +deps = ["Test"] +git-tree-sha1 = "15732c475062348b0165684ffe28e85ea8396afc" +uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" +version = "1.0.0" + +[[IterTools]] +git-tree-sha1 = "05110a2ab1fc5f932622ffea2a003221f4782c18" +uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" +version = "1.3.0" + +[[IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "b34d7cef7b337321e97d22242c3c2b91f476748e" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.0" + +[[JuliaInterpreter]] +deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] +git-tree-sha1 = "2eadbbde5534346cbb837c3a75b377cba477a06d" +uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" +version = "0.7.13" + +[[LaTeXStrings]] +git-tree-sha1 = "de44b395389b84fd681394d4e8d39ef14e3a2ea8" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.1.0" + +[[LibGit2]] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[LinearAlgebra]] +deps = ["Libdl"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[LoweredCodeUtils]] +deps = ["JuliaInterpreter"] +git-tree-sha1 = "1c41621653250b2824b6e664ac5bd805558aeff9" +uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" +version = "0.4.3" + +[[MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "f7d2e3f654af75f01ec49be82c231c382214223a" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.5" + +[[Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[Measurements]] +deps = ["Calculus", "LinearAlgebra", "RecipesBase", "Requires"] +git-tree-sha1 = "f65e8d655774a16e15938339a43ec47bcfc84cf2" +uuid = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" +version = "2.1.1" + +[[Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "de0a5ce9e5289f27df672ffabef4d1e5861247d5" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "0.4.3" + +[[Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[NaNMath]] +git-tree-sha1 = "928b8ca9b2791081dc71a51c55347c27c618760f" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "0.3.3" + +[[NumericalIntegration]] +deps = ["InteractiveUtils", "LinearAlgebra", "Logging", "Test"] +git-tree-sha1 = "71a5bf35469ec57e1bfdeec7dbb5757e51949bbb" +uuid = "e7bfaba1-d571-5449-8927-abc22e82249b" +version = "0.2.0" + +[[OrderedCollections]] +deps = ["Random", "Serialization", "Test"] +git-tree-sha1 = "c4c13474d23c60d20a67b217f1d7f22a40edf8f1" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.1.0" + +[[Parameters]] +deps = ["OrderedCollections"] +git-tree-sha1 = "b62b2558efb1eef1fa44e4be5ff58a515c287e38" +uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" +version = "0.12.0" + +[[Parsers]] +deps = ["Dates", "Test"] +git-tree-sha1 = "0c16b3179190d3046c073440d94172cfc3bb0553" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "0.3.12" + +[[PhysicalConstants]] +deps = ["Measurements", "Roots", "Unitful"] +git-tree-sha1 = "f15e25a6fa064e0805ef7819d91d79e0ff0bedf4" +uuid = "5ad8b20f-a522-5ce9-bfc9-ddf1d5bda6ab" +version = "0.2.0" + +[[Pidfile]] +deps = ["FileWatching", "Test"] +git-tree-sha1 = "1ffd82728498b5071cde851bbb7abd780d4445f3" +uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" +version = "1.1.0" + +[[Pkg]] +deps = ["Dates", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Test", "UUIDs"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" + +[[Polynomials]] +deps = ["LinearAlgebra", "RecipesBase"] +git-tree-sha1 = "1185511cac8ab9d0b658b663eae34fe9a95d4332" +uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45" +version = "0.6.1" + +[[PooledArrays]] +deps = ["DataAPI"] +git-tree-sha1 = "b1333d4eced1826e15adbdf01a4ecaccca9d353c" +uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" +version = "0.5.3" + +[[Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[PyCall]] +deps = ["Conda", "Dates", "Libdl", "LinearAlgebra", "MacroTools", "Serialization", "VersionParsing"] +git-tree-sha1 = "3a3fdb9000d35958c9ba2323ca7c4958901f115d" +uuid = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" +version = "1.91.4" + +[[PyPlot]] +deps = ["Colors", "LaTeXStrings", "PyCall", "Sockets", "Test", "VersionParsing"] +git-tree-sha1 = "ccecc72cf5b41a5de686bd76999040050a8a3472" +uuid = "d330b81b-6aea-500a-939a-2ce795aea3ee" +version = "2.8.2" + +[[QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "dc84e810393cfc6294248c9032a9cdacc14a3db4" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.3.1" + +[[REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[Random]] +deps = ["Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[RecipesBase]] +git-tree-sha1 = "b4ed4a7f988ea2340017916f7c9e5d7560b52cae" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "0.8.0" + +[[Reexport]] +deps = ["Pkg"] +git-tree-sha1 = "7b1d07f411bc8ddb7977ec7f377b97b158514fe0" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "0.2.0" + +[[Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "d37400976e98018ee840e0ca4f9d20baa231dc6b" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.0.1" + +[[Revise]] +deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Pkg", "REPL", "UUIDs", "Unicode"] +git-tree-sha1 = "3c04c929f8720c2fabb12534cd102a2356a7705c" +uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" +version = "2.5.4" + +[[Roots]] +deps = ["Printf"] +git-tree-sha1 = "dcc013908465ca1019b34b4bf547b6a187d195f9" +uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" +version = "0.8.4" + +[[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" + +[[SortingAlgorithms]] +deps = ["DataStructures", "Random", "Test"] +git-tree-sha1 = "03f5898c9959f8115e30bc7226ada7d0df554ddd" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "0.3.1" + +[[SparseArrays]] +deps = ["LinearAlgebra", "Random"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[SpecialFunctions]] +deps = ["BinDeps", "BinaryProvider", "Libdl"] +git-tree-sha1 = "3bdd374b6fd78faf0119b8c5d538788dbf910c6e" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "0.8.0" + +[[StaticArrays]] +deps = ["LinearAlgebra", "Random", "Statistics"] +git-tree-sha1 = "5a3bcb6233adabde68ebc97be66e95dcb787424c" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "0.12.1" + +[[Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "b1ad568ba658d8cbb3b892ed5380a6f3e781a81e" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.0" + +[[Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "TableTraits", "Test"] +git-tree-sha1 = "242b7fde70b8bc6a30d6476adf17ca3cf1ced6ee" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.0.3" + +[[Test]] +deps = ["Distributed", "InteractiveUtils", "Logging", "Random"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[TextWrap]] +git-tree-sha1 = "9250ef9b01b66667380cf3275b3f7488d0e25faf" +uuid = "b718987f-49a8-5099-9789-dcd902bef87d" +version = "1.0.1" + +[[URIParser]] +deps = ["Test", "Unicode"] +git-tree-sha1 = "6ddf8244220dfda2f17539fa8c9de20d6c575b69" +uuid = "30578b45-9adc-5946-b283-645ec420af67" +version = "0.4.0" + +[[UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[Unitful]] +deps = ["ConstructionBase", "LinearAlgebra", "Random"] +git-tree-sha1 = "0b95bcc0745541528ff3a95b722367e6cc12f43e" +uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" +version = "1.0.0" + +[[VersionParsing]] +git-tree-sha1 = "80229be1f670524750d905f8fc8148e5a8c4537f" +uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" +version = "1.2.0" + +[[WeakRefStrings]] +deps = ["DataAPI", "Random", "Test"] +git-tree-sha1 = "28807f85197eaad3cbd2330386fac1dcb9e7e11d" +uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" +version = "0.6.2" diff --git a/src/LinearOps.jl b/src/LinearOps.jl index bfe970d6..dde0415e 100644 --- a/src/LinearOps.jl +++ b/src/LinearOps.jl @@ -3,13 +3,22 @@ import FFTW import Luna: Modes, Grid, PhysData import Luna.PhysData: wlfreq +"Limit α so that we do not get overflow in exp(α*dz)." +function αlim!(α) + # magic number: this is 130 dB/cm + # a test script sensitive this is test_main_rect_env.jl + clamp!(α, 0.0, 3000.0) +end + function make_const_linop(grid::Grid.RealGrid, βfun, αfun, frame_vel) β = similar(grid.ω) βfun(β, grid.ω, 0) - α = αfun(grid.ω, 0) + α = zeros(length(grid.ω)) + α[2:end] .= αfun(grid.ω[2:end], 0) + αlim!(α) β1 = 1/frame_vel(0) linop = @. -im*(β-β1*grid.ω) - α/2 - linop[1] = 1 + linop[1] = 0 return linop end @@ -17,9 +26,10 @@ function make_const_linop(grid::Grid.EnvGrid, βfun, αfun, frame_vel, β0ref) β = similar(grid.ω) βfun(β, grid.ω, 0) α = αfun(grid.ω, 0) + αlim!(α) β1 = 1/frame_vel(0) linop = -im.*(β .- β1.*(grid.ω .- grid.ω0) .- β0ref) .- α./2 - linop[.!grid.sidx] .= 1 + linop[.!grid.sidx] .= 0 return linop end @@ -62,7 +72,9 @@ function make_const_linop(grid::Grid.RealGrid, modes, λ0; ref_mode=1) βconst = zero(grid.ω) βconst[2:end] = Modes.β.(modes[i], grid.ω[2:end]) βconst[1] = 1 - α = Modes.α.(modes[i], grid.ω) + α = zeros(length(grid.ω)) + α[2:end] .= Modes.α.(modes[i], grid.ω[2:end]) + αlim!(α) linops[:,i] = im.*(-βconst .+ grid.ω./vel) .- α./2 end linops @@ -82,6 +94,7 @@ function make_const_linop(grid::Grid.EnvGrid, modes, λ0; ref_mode=1, thg=false) βconst[grid.sidx] = Modes.β.(modes[i], grid.ω[grid.sidx]) βconst[.!grid.sidx] .= 1 α = Modes.α.(modes[i], grid.ω) + αlim!(α) linops[:,i] = -im.*(βconst .- (grid.ω .- grid.ω0)./vel .- βref) .- α./2 end linops diff --git a/src/Maths.jl b/src/Maths.jl index 1b8dc4b9..67202ca9 100644 --- a/src/Maths.jl +++ b/src/Maths.jl @@ -13,7 +13,7 @@ function derivative(f, x, order::Integer) else # use 5th order central finite differences with 4 adaptive steps scale = abs(x) > 0 ? x : 1.0 - FiniteDifferences.fdm(FiniteDifferences.central_fdm(9, order), y->f(y*scale), x/scale, adapt=4)/scale^order + FiniteDifferences.fdm(FiniteDifferences.central_fdm(order+4, order), y->f(y*scale), x/scale, adapt=4)/scale^order end end diff --git a/src/PhysData.jl b/src/PhysData.jl index 4d240434..e539ab16 100644 --- a/src/PhysData.jl +++ b/src/PhysData.jl @@ -48,7 +48,7 @@ const gas_str = Dict( :Air => "Air" ) const glass = (:SiO2, :BK7, :KBr, :CaF2, :BaF2, :Si) -const metal = (:Ag,) +const metal = (:Ag,:Al) "Change from ω to λ and vice versa" wlfreq(ωλ) = 2π*c/ωλ @@ -369,14 +369,238 @@ function lookup_glass(material::Symbol) return spl end - -"Lookup tables for complex refractive indices of metals. Returns function of wavelength in μm which in turn - returns the refractive index directly" -function lookup_metal(material::Symbol) - if material == :Ag - # S. Babar and J. H. Weaver. - # Optical constants of Cu, Ag, and Au revisited, Appl. Opt. 54, 477-481 (2015) - data = [ +"Lookup tables for complex refractive indices of metals." +function data_metal(material::Symbol) + # Below: 0.127: W. S. M. Werner, K. Glantschnig, C. Ambrosch-Draxl. + # Optical constants and inelastic electron-scattering data for 17 elemental metals, + # J. Phys Chem Ref. Data 38, 1013-1092 (2009) + # Above 0.206: S. Babar and J. H. Weaver. + # Optical constants of Cu, Ag, and Au revisited, Appl. Opt. 54, 477-481 (2015) + # Below 0.206: K. Stahrenberg, Th. Herrmann, K. Wilmers, N. Esser, W. Richter, and M. J. G. Lee. + # Optical properties of copper and silver in the energy range 2.5-9.0 eV, + # Phys Rev. B 64, 115111 (2001) (Numerical data kindly provided by Prof. Dr. Norbert Esser) + # above 12.4: H.-J. Hagemann, W. Gudat, and C. Kunz. + # Optical constants from the far infrared to the x-ray region: Mg, Al, Cu, Ag, Au, Bi, C, and Al2O3, + # J. Opt. Soc. Am. 65, 742-744 (1975) + dat = ( Ag = Float64[ + 0.00236 0.99667 0.00774; + 0.00316 0.99770 0.00530; + 0.00447 0.99198 0.00237; + 0.00676 0.9813 0.00291; + 0.01140 0.9172 0.00818; + 0.01355 0.860 0.0423; + 0.01714 0.863 0.293; + 0.02430 0.928 0.310; + 0.02563 0.927 0.346; + 0.03038 0.895 0.302; + 0.03270 0.894 0.304; + 0.03568 0.872 0.351; + 0.03793 0.896 0.427; + 0.04059 0.953 0.451; + 0.04478 0.889 0.425; + 0.04607 0.848 0.446; + 0.04895 0.833 0.507; + 0.05391 1.04 0.746; + 0.05843 1.09 0.658; + 0.06163 1.06 0.564; + 0.06714 1.03 0.586; + 0.07185 0.982 0.596; + 0.07359 1.13 0.751; + 0.07437 1.17 0.721; + 0.08345 1.28 0.750; + 0.08780 1.37 0.688; + 0.09198 1.32 0.657; + 0.09321 1.27 0.625; + 0.09888 1.32 0.586; + 0.10258 1.23 0.571; + 0.10482 1.27 0.577; + 0.10667 1.30 0.565; + 0.10857 1.30 0.550; + 0.11350 1.33 0.518; + 0.12007 1.27 0.490; + 0.12157 1.21 0.515; + 0.12782 1.10047 0.72025; + 0.12808 1.10131 0.72092; + 0.12835 1.10177 0.72135; + 0.12861 1.10169 0.72134; + 0.12888 1.10100 0.72080; + 0.12915 1.09967 0.71975; + 0.12942 1.09762 0.71822; + 0.12969 1.09481 0.71619; + 0.12996 1.09145 0.71374; + 0.13024 1.08796 0.71109; + 0.13051 1.08474 0.70849; + 0.13078 1.08194 0.70609; + 0.13106 1.07956 0.70392; + 0.13134 1.07761 0.70203; + 0.13162 1.07600 0.70043; + 0.13190 1.07450 0.69911; + 0.13218 1.07305 0.69803; + 0.13246 1.07165 0.69717; + 0.13275 1.07019 0.69646; + 0.13303 1.06863 0.69586; + 0.13332 1.06700 0.69539; + 0.13360 1.06519 0.69501; + 0.13389 1.06311 0.69468; + 0.13418 1.06069 0.69431; + 0.13447 1.05788 0.69384; + 0.13477 1.05470 0.69326; + 0.13506 1.05129 0.69264; + 0.13535 1.04786 0.69208; + 0.13565 1.04452 0.69169; + 0.13595 1.04136 0.69159; + 0.13625 1.03835 0.69186; + 0.13655 1.03546 0.69254; + 0.13685 1.03258 0.69357; + 0.13715 1.02959 0.69486; + 0.13745 1.02649 0.69631; + 0.13776 1.02333 0.69786; + 0.13807 1.02008 0.69935; + 0.13838 1.01667 0.70070; + 0.13868 1.01312 0.70195; + 0.13900 1.00959 0.70326; + 0.13931 1.00630 0.70479; + 0.13962 1.00327 0.70659; + 0.13994 1.00043 0.70860; + 0.14025 0.99765 0.71068; + 0.14057 0.99478 0.71266; + 0.14089 0.99170 0.71446; + 0.14121 0.98833 0.71602; + 0.14153 0.98477 0.71742; + 0.14186 0.98106 0.71871; + 0.14218 0.97724 0.71992; + 0.14251 0.97339 0.72109; + 0.14284 0.96943 0.72222; + 0.14317 0.96532 0.72333; + 0.14350 0.96113 0.72452; + 0.14383 0.95706 0.72591; + 0.14417 0.95333 0.72764; + 0.14450 0.95000 0.72972; + 0.14484 0.94698 0.73206; + 0.14518 0.94414 0.73458; + 0.14552 0.94137 0.73720; + 0.14586 0.93855 0.73982; + 0.14621 0.93563 0.74239; + 0.14655 0.93257 0.74486; + 0.14690 0.92931 0.74718; + 0.14725 0.92578 0.74931; + 0.14760 0.92200 0.75125; + 0.14795 0.91810 0.75314; + 0.14831 0.91416 0.75509; + 0.14866 0.91017 0.75713; + 0.14902 0.90608 0.75929; + 0.14938 0.90197 0.76166; + 0.14974 0.89796 0.76437; + 0.15010 0.89411 0.76744; + 0.15047 0.89043 0.77090; + 0.15083 0.88696 0.77474; + 0.15120 0.88370 0.77897; + 0.15157 0.88061 0.78354; + 0.15194 0.87762 0.78837; + 0.15231 0.87469 0.79342; + 0.15269 0.87180 0.79864; + 0.15307 0.86889 0.80393; + 0.15345 0.86587 0.80921; + 0.15383 0.86267 0.81443; + 0.15421 0.85933 0.81961; + 0.15459 0.85590 0.82477; + 0.15498 0.85246 0.82997; + 0.15537 0.84911 0.83528; + 0.15576 0.84597 0.84077; + 0.15615 0.84313 0.84652; + 0.15655 0.84073 0.85258; + 0.15694 0.83879 0.85897; + 0.15734 0.83725 0.86563; + 0.15774 0.83597 0.87247; + 0.15814 0.83480 0.87934; + 0.15855 0.83363 0.88619; + 0.15895 0.83246 0.89296; + 0.15936 0.83130 0.89969; + 0.15977 0.83023 0.90640; + 0.16019 0.82930 0.91312; + 0.16060 0.82853 0.91987; + 0.16102 0.82797 0.92667; + 0.16144 0.82762 0.93353; + 0.16186 0.82750 0.94043; + 0.16228 0.82762 0.94737; + 0.16271 0.82798 0.95434; + 0.16314 0.82857 0.96136; + 0.16357 0.82933 0.96839; + 0.16400 0.83021 0.97545; + 0.16444 0.83118 0.98251; + 0.16487 0.83223 0.98958; + 0.16531 0.83088 0.99959; + 0.16575 0.83127 1.01158; + 0.16620 0.82727 1.02560; + 0.16665 0.82808 1.03261; + 0.16709 0.82886 1.03820; + 0.16755 0.82962 1.04289; + 0.16800 0.83035 1.04727; + 0.16846 0.83108 1.05195; + 0.16892 0.83186 1.05693; + 0.16938 0.83273 1.06215; + 0.16984 0.83368 1.06808; + 0.17031 0.83476 1.07462; + 0.17078 0.83595 1.08125; + 0.17125 0.83723 1.08787; + 0.17172 0.83860 1.09421; + 0.17220 0.84003 1.10000; + 0.17268 0.84149 1.10533; + 0.17316 0.84298 1.11071; + 0.17365 0.84453 1.11637; + 0.17413 0.84615 1.12232; + 0.17463 0.84786 1.12868; + 0.17512 0.84966 1.13554; + 0.17561 0.85155 1.14216; + 0.17611 0.85353 1.14846; + 0.17662 0.85559 1.15476; + 0.17712 0.85774 1.16112; + 0.17763 0.85997 1.16755; + 0.17814 0.86228 1.17387; + 0.17865 0.86465 1.18014; + 0.17917 0.86708 1.18656; + 0.17969 0.86952 1.19291; + 0.18021 0.87199 1.19907; + 0.18073 0.87449 1.20500; + 0.18126 0.87706 1.21088; + 0.18179 0.87969 1.21643; + 0.18233 0.88237 1.22161; + 0.18287 0.88512 1.22669; + 0.18341 0.88797 1.23201; + 0.18395 0.89094 1.23792; + 0.18450 0.89402 1.24420; + 0.18505 0.89720 1.25057; + 0.18560 0.90045 1.25677; + 0.18616 0.90374 1.26250; + 0.18672 0.90705 1.26788; + 0.18729 0.91045 1.27341; + 0.18785 0.91394 1.27929; + 0.18843 0.91750 1.28535; + 0.18900 0.92111 1.29122; + 0.18958 0.92475 1.29654; + 0.19016 0.92845 1.30169; + 0.19074 0.93225 1.30693; + 0.19133 0.93614 1.31227; + 0.19193 0.94009 1.31770; + 0.19252 0.94411 1.32307; + 0.19312 0.94815 1.32826; + 0.19373 0.95224 1.33342; + 0.19433 0.95637 1.33861; + 0.19494 0.96053 1.34372; + 0.19556 0.96469 1.34858; + 0.19618 0.96886 1.35307; + 0.19680 0.97303 1.35722; + 0.19743 0.97727 1.36115; + 0.19806 0.98163 1.36507; + 0.19869 0.98618 1.36935; + 0.19933 0.99098 1.37427; + 0.19997 0.99599 1.37936; + 0.20062 1.00116 1.38449; + 0.20127 1.00650 1.38965; + 0.20193 1.01200 1.39469; + 0.20259 1.01760 1.39932; + 0.20325 1.02330 1.40363; + 0.20392 1.02910 1.40767; 0.2066 1.079 1.247; 0.2101 1.101 1.258; 0.2138 1.121 1.267; @@ -445,13 +669,487 @@ function lookup_metal(material::Symbol) 4.959 1.228 36.37; 6.199 1.851 45.26; 8.266 3.227 59.73; - 12.4000 5.079 86.53 - ] - else - throw(DomainError(material, "Unknown metal $material")) - end + 12.4000 5.079 86.53; + 2.480E+01 3.670E+01 1.73E+02; + 4.959E+01 1.180E+02 3.06E+02; + 1.240E+02 3.090E+02 5.06E+02; + 2.480E+02 5.310E+02 6.89E+02 + ], + # Below 0.14: H.-J. Hagemann, W. Gudat, and C. Kunz. + # Optical constants from the far infrared to the x-ray region: Mg, Al, Cu, Ag, Au, Bi, C, and Al2O3, + # J. Opt. Soc. Am. 65, 742-744 (1975) + # K. M. McPeak, S. V. Jayanti, S. J. P. Kress, S. Meyer, S. Iotti, A. Rossinelli, and D. J. Norris. + # Plasmonic films can easily be better: Rules and recipes, ACS Photonics 2, 326-333 (2015) + # Above 2.0: M. A. Ordal, R. J. Bell, R. W. Alexander, L. A. Newquist, M. R. Querry. + # Optical properties of Al, Fe, Ti, Ta, W, and Mo at submillimeter wavelengths, + # Appl. Opt. 27, 1203-1209 (1988) + Al = Float64[ + 1.033E-05 9.990E-01 8.24E-12; + 1.240E-05 1.001E+00 9.88E-12; + 1.550E-05 1.000E+00 2.47E-11; + 2.066E-05 1.001E+00 8.09E-11; + 2.480E-05 1.001E+00 1.50E-10; + 3.100E-05 1.002E+00 3.77E-10; + 4.133E-05 1.002E+00 1.06E-09; + 6.199E-05 1.001E+00 4.68E-09; + 8.266E-05 1.000E+00 1.46E-08; + 1.127E-04 1.002E+00 5.14E-08; + 1.378E-04 1.000E+00 1.12E-07; + 1.771E-04 1.003E+00 2.97E-07; + 2.480E-04 1.002E+00 1.05E-06; + 4.133E-04 1.001E+00 7.51E-06; + 6.199E-04 1.000E+00 3.24E-05; + 7.293E-04 1.000E+00 6.13E-05; + 7.514E-04 1.000E+00 4.62E-05; + 7.749E-04 1.000E+00 2.32E-05; + 7.999E-04 1.000E+00 6.43E-06; + 8.266E-04 1.000E+00 7.14E-06; + 1.240E-03 1.000E+00 3.10E-05; + 1.550E-03 1.000E+00 7.52E-05; + 2.066E-03 9.990E-01 2.27E-04; + 2.480E-03 9.990E-01 4.66E-04; + 3.100E-03 9.980E-01 1.01E-03; + 3.542E-03 9.960E-01 1.54E-03; + 4.133E-03 9.960E-01 2.57E-03; + 4.428E-03 9.960E-01 3.31E-03; + 4.769E-03 9.920E-01 4.26E-03; + 5.166E-03 9.930E-01 5.46E-03; + 5.636E-03 9.930E-01 6.96E-03; + 6.199E-03 9.910E-01 8.76E-03; + 6.525E-03 9.890E-01 9.87E-03; + 6.888E-03 9.890E-01 1.11E-02; + 7.293E-03 9.880E-01 1.37E-02; + 7.749E-03 9.880E-01 1.60E-02; + 8.266E-03 9.890E-01 1.73E-02; + 8.551E-03 9.880E-01 1.81E-02; + 8.856E-03 9.880E-01 1.91E-02; + 8.984E-03 9.880E-01 1.97E-02; + 9.116E-03 9.870E-01 2.04E-02; + 9.253E-03 9.870E-01 2.13E-02; + 9.393E-03 9.860E-01 2.26E-02; + 9.537E-03 9.860E-01 2.44E-02; + 9.686E-03 9.870E-01 2.61E-02; + 9.840E-03 9.880E-01 2.77E-02; + 9.999E-03 9.890E-01 2.88E-02; + 1.016E-02 9.910E-01 2.92E-02; + 1.033E-02 9.920E-01 2.94E-02; + 1.042E-02 9.920E-01 2.97E-02; + 1.051E-02 9.920E-01 3.00E-02; + 1.060E-02 9.930E-01 3.03E-02; + 1.069E-02 9.930E-01 3.01E-02; + 1.078E-02 9.940E-01 3.04E-02; + 1.088E-02 9.940E-01 3.06E-02; + 1.097E-02 9.950E-01 3.07E-02; + 1.107E-02 9.950E-01 3.09E-02; + 1.117E-02 9.950E-01 3.09E-02; + 1.127E-02 9.960E-01 3.07E-02; + 1.137E-02 9.970E-01 3.05E-02; + 1.148E-02 9.970E-01 2.99E-02; + 1.159E-02 9.970E-01 2.93E-02; + 1.170E-02 9.960E-01 2.86E-02; + 1.181E-02 9.960E-01 2.81E-02; + 1.192E-02 9.940E-01 2.81E-02; + 1.204E-02 9.920E-01 2.86E-02; + 1.216E-02 9.920E-01 2.99E-02; + 1.228E-02 9.890E-01 3.24E-02; + 1.240E-02 9.890E-01 3.63E-02; + 1.252E-02 9.910E-01 3.96E-02; + 1.265E-02 9.940E-01 4.27E-02; + 1.278E-02 9.980E-01 4.42E-02; + 1.292E-02 1.001E+00 4.42E-02; + 1.305E-02 1.005E+00 4.39E-02; + 1.319E-02 1.007E+00 4.26E-02; + 1.333E-02 1.009E+00 4.11E-02; + 1.348E-02 1.011E+00 3.98E-02; + 1.362E-02 1.012E+00 3.86E-02; + 1.378E-02 1.013E+00 3.66E-02; + 1.393E-02 1.014E+00 3.51E-02; + 1.409E-02 1.014E+00 3.35E-02; + 1.425E-02 1.014E+00 3.21E-02; + 1.442E-02 1.014E+00 3.15E-02; + 1.459E-02 1.014E+00 3.12E-02; + 1.476E-02 1.016E+00 3.06E-02; + 1.494E-02 1.017E+00 2.89E-02; + 1.512E-02 1.017E+00 2.69E-02; + 1.531E-02 1.016E+00 2.50E-02; + 1.550E-02 1.016E+00 2.43E-02; + 1.569E-02 1.015E+00 2.38E-02; + 1.590E-02 1.014E+00 2.38E-02; + 1.610E-02 1.015E+00 2.45E-02; + 1.631E-02 1.016E+00 2.40E-02; + 1.653E-02 1.018E+00 2.40E-02; + 1.675E-02 1.021E+00 2.36E-02; + 1.687E-02 1.025E+00 2.40E-02; + 1.691E-02 1.028E+00 2.38E-02; + 1.696E-02 1.030E+00 1.96E-02; + 1.701E-02 1.036E+00 1.74E-02; + 1.705E-02 1.031E+00 6.06E-03; + 1.710E-02 1.026E+00 4.79E-03; + 1.722E-02 1.021E+00 4.61E-03; + 1.746E-02 1.015E+00 4.50E-03; + 1.771E-02 1.012E+00 4.45E-03; + 1.797E-02 1.009E+00 4.40E-03; + 1.851E-02 1.005E+00 4.33E-03; + 1.907E-02 1.001E+00 4.27E-03; + 2.066E-02 9.920E-01 4.51E-03; + 2.480E-02 9.740E-01 5.84E-03; + 3.100E-02 9.440E-01 8.64E-03; + 4.133E-02 8.820E-01 1.25E-02; + 6.199E-02 6.730E-01 2.67E-02; + 6.888E-02 5.640E-01 3.55E-02; + 7.749E-02 3.460E-01 6.48E-02; + 7.999E-02 2.520E-01 9.97E-02; + 8.266E-02 1.520E-01 1.87E-01; + 8.551E-02 1.070E-01 3.01E-01; + 8.856E-02 8.400E-02 4.04E-01; + 9.537E-02 6.500E-02 5.93E-01; + 1.033E-01 6.100E-02 7.67E-01; + 1.127E-01 6.100E-02 9.46E-01; + 1.378E-01 7.300E-02 1.35E+00; + 0.15 0.095390828 1.283666394; + 0.155 0.095510386 1.337393822; + 0.16 0.09903925 1.402928641; + 0.165 0.098692838 1.46616516; + 0.17 0.100850207 1.532569987; + 0.175 0.1069563 1.596539899; + 0.18 0.099715746 1.657661977; + 0.185 0.108316112 1.734368006; + 0.19 0.106567769 1.79116071; + 0.195 0.111513266 1.853411775; + 0.2 0.110803374 1.908606137; + 0.205 0.111587326 1.969936987; + 0.21 0.11365555 2.028057589; + 0.215 0.115928445 2.091850713; + 0.22 0.116173424 2.151998203; + 0.225 0.119771906 2.213039835; + 0.23 0.124315543 2.274896559; + 0.235 0.129276519 2.336773934; + 0.24 0.133002743 2.395514502; + 0.245 0.139688588 2.457358928; + 0.25 0.141162655 2.515219055; + 0.255 0.148765766 2.573777623; + 0.26 0.150722638 2.633214255; + 0.265 0.161465056 2.693431077; + 0.27 0.164610587 2.750035753; + 0.275 0.172365826 2.81099804; + 0.28 0.178635303 2.868973784; + 0.285 0.18587018 2.923276881; + 0.29 0.188953314 2.98248275; + 0.295 0.197315218 3.042340102; + 0.3 0.204991638 3.100858199; + 0.305 0.210097266 3.157347124; + 0.31 0.218816718 3.214790935; + 0.315 0.224454799 3.267473023; + 0.32 0.237666454 3.323775766; + 0.325 0.24464928 3.37932734; + 0.33 0.251892832 3.436779015; + 0.335 0.259391824 3.493749292; + 0.34 0.267481852 3.550147397; + 0.345 0.275201252 3.607178361; + 0.35 0.28349792 3.663518946; + 0.355 0.291774119 3.719829584; + 0.36 0.300125667 3.776251503; + 0.365 0.308578012 3.831608068; + 0.37 0.317597538 3.889198914; + 0.375 0.32692637 3.945995546; + 0.38 0.335956002 4.002607455; + 0.385 0.345714203 4.058265431; + 0.39 0.354901676 4.114238107; + 0.395 0.364968364 4.169676475; + 0.4 0.375150842 4.226433266; + 0.405 0.385211589 4.281283449; + 0.41 0.396086448 4.336805792; + 0.415 0.40706511 4.391435073; + 0.42 0.417647849 4.447407079; + 0.425 0.429543735 4.503499508; + 0.43 0.440996226 4.559109307; + 0.435 0.452837879 4.613682059; + 0.44 0.464232752 4.669101846; + 0.445 0.477070026 4.724044433; + 0.45 0.489220122 4.778319404; + 0.455 0.501228231 4.832828338; + 0.46 0.514817248 4.887948117; + 0.465 0.528042125 4.943260916; + 0.47 0.53987657 4.997345967; + 0.475 0.554932886 5.051331558; + 0.48 0.568005038 5.105940631; + 0.485 0.582771419 5.159226931; + 0.49 0.596705366 5.212874187; + 0.495 0.610784373 5.265933683; + 0.5 0.625686295 5.320477736; + 0.505 0.640306464 5.374848125; + 0.51 0.655709839 5.428163169; + 0.515 0.672565753 5.481545831; + 0.52 0.688336416 5.535955836; + 0.525 0.704045108 5.58799423; + 0.53 0.720793584 5.641767754; + 0.535 0.737603948 5.693773756; + 0.54 0.75446839 5.746496546; + 0.545 0.772330366 5.799008035; + 0.55 0.789405353 5.851936501; + 0.555 0.808351698 5.905288517; + 0.56 0.829205097 5.958236408; + 0.565 0.848630853 6.009090973; + 0.57 0.867376853 6.060226283; + 0.575 0.887661988 6.112687118; + 0.58 0.908569739 6.165184423; + 0.585 0.928308533 6.215605902; + 0.59 0.948955518 6.267417058; + 0.595 0.9714896 6.317103137; + 0.6 0.992465612 6.368986418; + 0.605 1.016073317 6.417351867; + 0.61 1.038145667 6.46681888; + 0.615 1.062059906 6.517052343; + 0.62 1.088160063 6.566589093; + 0.625 1.112663572 6.61475776; + 0.63 1.136328574 6.66312559; + 0.635 1.165731637 6.710806975; + 0.64 1.190265203 6.759417967; + 0.645 1.218505245 6.807110623; + 0.65 1.246364405 6.852329839; + 0.655 1.275302761 6.898361917; + 0.66 1.304382818 6.942363757; + 0.665 1.333854457 6.987643931; + 0.67 1.365410391 7.031951759; + 0.675 1.395892303 7.071104251; + 0.68 1.426024482 7.116287362; + 0.685 1.457391234 7.157652493; + 0.69 1.493230683 7.197481356; + 0.695 1.5274935 7.23603734; + 0.7 1.559751729 7.27391404; + 0.705 1.596346402 7.311383032; + 0.71 1.631621525 7.34575992; + 0.715 1.669698976 7.380372258; + 0.72 1.706780893 7.414249862; + 0.725 1.745260386 7.446739811; + 0.73 1.786398844 7.475374294; + 0.735 1.827772224 7.502849546; + 0.74 1.872189153 7.528352557; + 0.745 1.916802427 7.55216072; + 0.75 1.958355454 7.571403838; + 0.755 2.005349601 7.585211073; + 0.76 2.054224115 7.599462923; + 0.765 2.09984451 7.605086914; + 0.77 2.144528834 7.61216158; + 0.775 2.189915668 7.610567038; + 0.78 2.231500036 7.603853787; + 0.785 2.275479945 7.589387919; + 0.79 2.314643646 7.572223927; + 0.795 2.350258044 7.547894599; + 0.8 2.373653298 7.522581337; + 0.805 2.399438967 7.486541749; + 0.81 2.409296598 7.449477169; + 0.815 2.414395973 7.410756231; + 0.82 2.410049326 7.369351244; + 0.825 2.399462094 7.325600203; + 0.83 2.375277499 7.288411569; + 0.835 2.342102357 7.253098886; + 0.84 2.301774531 7.225729444; + 0.845 2.257656113 7.204374444; + 0.85 2.204898553 7.188085811; + 0.855 2.148111401 7.177700369; + 0.86 2.092718783 7.181328004; + 0.865 2.03127715 7.184642431; + 0.87 1.973568962 7.198887028; + 0.875 1.915492386 7.218248477; + 0.88 1.854996083 7.243411521; + 0.885 1.802564727 7.274079983; + 0.89 1.750120449 7.309782595; + 0.895 1.694671727 7.350096072; + 0.9 1.64715608 7.393045594; + 0.905 1.602399525 7.439468008; + 0.91 1.557188172 7.48978204; + 0.915 1.516837858 7.542665118; + 0.92 1.483545494 7.592621895; + 0.925 1.447230511 7.647710517; + 0.93 1.415213787 7.70342976; + 0.935 1.385433286 7.756057335; + 0.94 1.355589911 7.812465936; + 0.945 1.325884954 7.872100794; + 0.95 1.302164463 7.928721983; + 0.955 1.280288795 7.985307721; + 0.96 1.25976713 8.04593147; + 0.965 1.23821822 8.1051949; + 0.97 1.218188621 8.163760378; + 0.975 1.201067407 8.22268587; + 0.98 1.182294465 8.279240316; + 0.985 1.167631515 8.338247019; + 0.99 1.153696234 8.399524689; + 0.995 1.140905235 8.457757667; + 1 1.126639087 8.511598888; + 1.005 1.114680776 8.571960874; + 1.01 1.102964941 8.629920722; + 1.015 1.09358083 8.687515124; + 1.02 1.08727974 8.74843856; + 1.025 1.081445553 8.809967337; + 1.03 1.071397488 8.867857271; + 1.035 1.061537336 8.920081923; + 1.04 1.055494597 8.978255334; + 1.045 1.051806876 9.036830069; + 1.05 1.043454926 9.083765639; + 1.055 1.036482441 9.148731926; + 1.06 1.033133204 9.204040646; + 1.065 1.02747793 9.264432573; + 1.07 1.025591906 9.318521275; + 1.075 1.024418445 9.373122913; + 1.08 1.020244607 9.42862127; + 1.085 1.015304156 9.479917855; + 1.09 1.014378517 9.5368739; + 1.095 1.011890304 9.593431189; + 1.1 1.009905005 9.649917519; + 1.105 1.008451539 9.704482186; + 1.11 1.005344855 9.750882949; + 1.115 1.00382405 9.806001363; + 1.12 1.004294808 9.860152537; + 1.125 1.003882164 9.917498646; + 1.13 1.003972742 9.968398129; + 1.135 1.00500573 10.02382345; + 1.14 1.002828586 10.07500199; + 1.145 1.003941179 10.12708734; + 1.15 1.005317282 10.18335224; + 1.155 1.003754384 10.23706613; + 1.16 1.008818757 10.28628773; + 1.165 1.007932489 10.34146643; + 1.17 1.008357257 10.39215013; + 1.175 1.012688334 10.44200832; + 1.18 1.015213183 10.49336256; + 1.185 1.014759181 10.5517646; + 1.19 1.017683803 10.60545522; + 1.195 1.01813905 10.65817091; + 1.2 1.021736807 10.70579031; + 1.205 1.022859293 10.75807795; + 1.21 1.024257787 10.80782605; + 1.215 1.026450838 10.85926339; + 1.22 1.029738722 10.9110202; + 1.225 1.035047848 10.96181208; + 1.23 1.038667581 11.01266681; + 1.235 1.039978895 11.06849385; + 1.24 1.043389606 11.11569439; + 1.245 1.046657092 11.16984741; + 1.25 1.049913391 11.21616325; + 1.255 1.051297547 11.26655345; + 1.26 1.056495057 11.31619114; + 1.265 1.057188404 11.36079431; + 1.27 1.061492702 11.41081797; + 1.275 1.066383574 11.47288865; + 1.28 1.070500901 11.51937378; + 1.285 1.073080696 11.56250415; + 1.29 1.078091053 11.61775711; + 1.295 1.081263285 11.66829595; + 1.3 1.08667656 11.71967858; + 1.305 1.090905752 11.7737027; + 1.31 1.094227716 11.82020872; + 1.315 1.097106966 11.86438552; + 1.32 1.104427092 11.91930196; + 1.325 1.108138114 11.96737106; + 1.33 1.109282178 12.01542787; + 1.335 1.112492808 12.06389822; + 1.34 1.123987022 12.1162431; + 1.345 1.129233973 12.16532652; + 1.35 1.132981867 12.21775953; + 1.355 1.135566133 12.26700903; + 1.43 1.20897633 12.99198306; + 1.435 1.215774284 13.0402495; + 1.44 1.222359347 13.08984959; + 1.445 1.225637477 13.13438949; + 1.45 1.232348412 13.19350911; + 1.455 1.235053048 13.23424936; + 1.46 1.23989324 13.2825952; + 1.465 1.245674136 13.32973008; + 1.47 1.25590184 13.37524914; + 1.475 1.252421713 13.42119816; + 1.48 1.265153644 13.46516297; + 1.485 1.264792932 13.51960433; + 1.49 1.275023692 13.56523813; + 1.495 1.277693673 13.61515704; + 1.5 1.285699173 13.66027168; + 1.505 1.290149697 13.70964938; + 1.51 1.296809948 13.75760575; + 1.515 1.304059962 13.81378197; + 1.52 1.313924676 13.8577198; + 1.525 1.31627889 13.90548777; + 1.53 1.325289614 13.94978109; + 1.535 1.332565366 13.9955611; + 1.54 1.338103685 14.0463704; + 1.545 1.342317392 14.08906725; + 1.55 1.347399401 14.13278052; + 1.555 1.354287918 14.18605286; + 1.56 1.36162657 14.2300396; + 1.565 1.367953829 14.27204602; + 1.57 1.374881699 14.33214219; + 1.575 1.374949427 14.37325593; + 1.58 1.385662006 14.41873986; + 1.585 1.390425967 14.47146449; + 1.59 1.400170689 14.51965833; + 1.595 1.39786136 14.56653756; + 1.6 1.400984694 14.60865354; + 1.605 1.402928097 14.65292487; + 1.61 1.421414675 14.70647543; + 1.615 1.424742484 14.75635087; + 1.62 1.436002763 14.82100212; + 1.625 1.439358574 14.84862799; + 1.63 1.44609075 14.8956765; + 1.635 1.447904247 14.94712102; + 1.64 1.45643876 14.99170484; + 1.645 1.458873135 15.02392461; + 1.65 1.469917493 15.08179888; + 1.655 1.478177828 15.1223348; + 1.66 1.474977808 15.17582154; + 1.665 1.477843053 15.23233469; + 1.67 1.462292742 15.2773787; + 1.675 1.425778483 15.34740513; + 1.68 1.427335087 15.38951869; + 1.685 1.454908413 15.4724516; + 1.69 1.514176047 15.49621661; + 1.695 1.555668449 15.53351552; + 1.7 1.584018511 15.55632073; + 2.00 2.1962737 20.969371; + 2.11 2.4038118 22.062867; + 2.22 2.6179915 23.257800; + 2.35 2.8842412 24.591905; + 2.50 3.1815630 26.073820; + 2.67 3.5693590 27.735962; + 2.86 4.0097886 29.575977; + 3.08 4.5104289 31.653186; + 3.33 5.0466806 34.058286; + 3.64 5.7888000 36.878956; + 4.00 6.5579910 40.184716; + 4.44 7.6669569 44.210650; + 5.00 8.8866481 49.131664; + 5.71 10.625810 55.544522; + 6.67 13.385937 63.967532; + 8.00 17.708575 75.320562; + 10.0 25.832564 90.720430; + 11.1 30.167884 98.172167; + 12.5 35.492290 107.26425; + 14.3 42.226361 117.86671; + 16.7 50.744867 131.07397; + 20.0 61.871514 148.17314; + 22.2 68.262241 159.23227; + 25.0 76.681189 174.09538; + 28.6 88.918176 192.23917; + 33.3 108.95823 213.37170; + 40.0 134.05166 235.70537; + 44.4 149.32871 248.55977; + 50.0 167.07810 263.04366; + 57.1 188.04844 279.77106; + 66.7 213.38844 299.72607; + 80.0 245.00980 324.59867; + 100 286.08777 357.47647; + 125 329.97183 393.77470; + 154 374.73526 431.44791; + 200 436.98909 485.19932 + ]) + dat[material] +end + +"Returns function of wavelength in μm which in turn + returns the refractive index directly" +function lookup_metal(material::Symbol) + data = data_metal(material)::Array{Float64,2} nspl = Maths.CSpline(data[:,1], data[:,2] .+ im.*data[:,3]) return nspl end + end \ No newline at end of file diff --git a/src/RectModes.jl b/src/RectModes.jl index 78bd241b..bb2ec0aa 100644 --- a/src/RectModes.jl +++ b/src/RectModes.jl @@ -40,7 +40,7 @@ end dimlimits(m::RectMode) = (:cartesian, (-m.a, -m.b), (m.a, m.b)) -"effective index of rectabgular mode with dielectric core and arbitrary +"effective index of rectangular mode with dielectric core and arbitrary (metal or dielectric) cladding. Adapted from diff --git a/src/Tools.jl b/src/Tools.jl index d28822ee..f5125f69 100644 --- a/src/Tools.jl +++ b/src/Tools.jl @@ -85,7 +85,8 @@ function params(E, τfw, λ, mode, material; shape=:sech, P=1.0, T=PhysData.room Lfiss=Lfiss(P0, τfw, γ, β2, shape=shape), zdw=Modes.zdw(mode), Lloss=Modes.losslength(mode, ω), - Aeff=Modes.Aeff(mode)) + Aeff=Modes.Aeff(mode), + mode=mode) end function capillary_params(E, τfw, λ, a, material; shape=:sech, P=1.0, T=PhysData.roomtemp, clad=:SiO2, n=1, m=1, kind=:HE, ϕ=0.0) diff --git a/test/test_main_rect.jl b/test/test_main_rect.jl index a3004f9c..3de84aa7 100644 --- a/test/test_main_rect.jl +++ b/test/test_main_rect.jl @@ -1,5 +1,5 @@ import Luna -import Luna: Grid, Maths, RectModes, PhysData, Nonlinear, Ionisation, NonlinearRHS, Output, Stats, LinearOps +import Luna: Grid, Maths, RectModes, PhysData, Modes, Nonlinear, Ionisation, NonlinearRHS, Output, Stats, LinearOps import Logging import FFTW import NumericalIntegration: integrate, SimpsonEven @@ -13,13 +13,15 @@ a = 50e-6 b = 10e-6 gas = :Ar pres = 5 +L = 15e-2 +energy = 5e-6 τ = 30e-15 λ0 = 800e-9 -grid = Grid.RealGrid(15e-2, 800e-9, (160e-9, 3000e-9), 1e-12) +grid = Grid.RealGrid(L, λ0, (160e-9, 3000e-9), 1e-12) -m = RectModes.RectMode(a, b, gas, pres, :Ag) +m = RectModes.RectMode(a, b, gas, pres, :Al) energyfun = NonlinearRHS.energy_mode_avg(m) @@ -42,7 +44,7 @@ linop, βfun, frame_vel, αfun = LinearOps.make_const_linop(grid, m, λ0) normfun = NonlinearRHS.norm_mode_average(grid.ω, βfun) -in1 = (func=gausspulse, energy=5e-6) +in1 = (func=gausspulse, energy=energy) inputs = (in1, ) Eω, transform, FT = Luna.setup(grid, energyfun, densityfun, normfun, responses, inputs) diff --git a/test/test_main_rect_env.jl b/test/test_main_rect_env.jl new file mode 100644 index 00000000..34b7ddea --- /dev/null +++ b/test/test_main_rect_env.jl @@ -0,0 +1,100 @@ +import Luna +import Luna: Grid, Maths, RectModes, PhysData, Nonlinear, Ionisation, NonlinearRHS, Output, Stats, LinearOps +import Logging +import FFTW +import NumericalIntegration: integrate, SimpsonEven +Logging.disable_logging(Logging.BelowMinLevel) + +import DSP.Unwrap: unwrap + +import PyPlot:pygui, plt + +a = 50e-6 +b = 10e-6 +gas = :Ar +pres = 5 + +τ = 30e-15 +λ0 = 800e-9 +energy = 5e-6 + +grid = Grid.EnvGrid(15e-2, 800e-9, (160e-9, 3000e-9), 1e-12) + +m = RectModes.RectMode(a, b, gas, pres, :Al) + +energyfun = NonlinearRHS.energy_env_mode_avg(m) + +function gausspulse(t) + It = Maths.gauss(t, fwhm=τ) + Et = @. sqrt(It) +end + +dens0 = PhysData.density(gas, pres) +densityfun(z) = dens0 + +ionpot = PhysData.ionisation_potential(gas) +ionrate = Ionisation.ionrate_fun!_ADK(ionpot) + +responses = (Nonlinear.Kerr_field(PhysData.γ3_gas(gas)),) + #Nonlinear.PlasmaCumtrapz(grid.to, grid.to, ionrate, ionpot)) + +linop, βfun, frame_vel, αfun = LinearOps.make_const_linop(grid, m, λ0) + +normfun = NonlinearRHS.norm_mode_average(grid.ω, βfun) + +in1 = (func=gausspulse, energy=energy) +inputs = (in1, ) + +Eω, transform, FT = Luna.setup(grid, energyfun, densityfun, normfun, responses, inputs) + +statsfun = Stats.collect_stats((Stats.ω0(grid), )) +output = Output.MemoryOutput(0, grid.zmax, 201, (length(grid.ω),), statsfun) + +Luna.run(Eω, grid, linop, transform, FT, output) + +ω = grid.ω +t = grid.t +f = FFTW.fftshift(ω, 1)./2π.*1e-15 + +zout = output.data["z"] +Eout = output.data["Eω"] + +Etout = FFTW.ifft(Eout, 1) + +Ilog = log10.(Maths.normbymax(abs2.(Eout))) + +idcs = @. (t < 30e-15) & (t >-30e-15) +to, Eto = Maths.oversample(t[idcs], Etout[idcs, :], factor=8, dim=1) +It = abs2.(Eto) +zpeak = argmax(dropdims(maximum(It, dims=1), dims=1)) + +energy = zeros(length(zout)) +for ii = 1:size(Etout, 2) + energy[ii] = energyfun(t, Etout[:, ii]) +end + +pygui(true) +plt.figure() +plt.pcolormesh(f, zout, transpose(FFTW.fftshift(Ilog, 1))) +plt.clim(-6, 0) +plt.xlim(0.19, 1.9) +plt.colorbar() + +plt.figure() +plt.pcolormesh(to*1e15, zout, transpose(It)) +plt.colorbar() +plt.xlim(-30, 30) + +plt.figure() +plt.plot(zout.*1e2, energy.*1e6) +plt.xlabel("Distance [cm]") +plt.ylabel("Energy [μJ]") + +plt.figure() +plt.plot(to*1e15, abs2.(Eto[:, 121])) +plt.xlim(-20, 20) + +plt.figure() +plt.plot(to*1e15, real.(exp.(1im*grid.ω0.*to).*Eto[:, 121])) +plt.plot(t*1e15, real.(exp.(1im*grid.ω0.*t).*Etout[:, 121])) +plt.xlim(-10, 20) \ No newline at end of file diff --git a/test/test_rect_modes.jl b/test/test_rect_modes.jl index 8c0dd7a9..cd3ce900 100644 --- a/test/test_rect_modes.jl +++ b/test/test_rect_modes.jl @@ -10,7 +10,7 @@ m = RectMode(a, b, :Ar, 0.0, :Ag) # these were checked with FEM using JCMwave @test isapprox(Aeff(m), 1.111111111111111e-09) -@test isapprox(Modes.dB_per_m(m, wlfreq(210e-9)), 3.908368640803528, rtol=1e-4) +@test isapprox(Modes.dB_per_m(m, wlfreq(210e-9)), 3.908368640803528, rtol=1e-2) @test isapprox(Modes.dB_per_m(m, wlfreq(800e-9)), 0.44317059469197245, rtol=1e-2) @test isapprox(β(m, wlfreq(800e-9)), 7852915.234685494) @test isapprox(β(m, wlfreq(210e-9)), 29919650.305427298) diff --git a/test/test_tools.jl b/test/test_tools.jl index acd133f7..41be4041 100644 --- a/test/test_tools.jl +++ b/test/test_tools.jl @@ -3,10 +3,10 @@ import Luna: Capillary, Tools, PhysData @testset "All" begin m = Capillary.MarcatilliMode(125e-6, :He, 0.4, model=:reduced) - p = Tools.params(300e-6, 10e-15, 2π*PhysData.c/800e-9, m, :He, P=0.4) + p = Tools.params(300e-6, 10e-15, 800e-9, m, :He, P=0.4) # compare to Pufe @test isapprox(p.N, 2.239) @test isapprox(p.Lfiss, 1.768) - @test isapprox(p.λz, 378.8) + @test isapprox(p.zdw, 378.8e-9) @test isapprox(p.P0/p.Pcr, 0.0398) end