diff --git a/Manifest.toml b/Manifest.toml index a6df5fef..e83e4701 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,14 +1,14 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.0" +julia_version = "1.10.0" manifest_format = "2.0" -project_hash = "dd7b4a4d19c7b70a09e31975bfcbbdc16981125d" +project_hash = "395d46e75f99ea51aa5c4a1c59667cca84be5c3a" [[deps.Adapt]] deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "cc37d689f599e8df4f464b2fa3870ff7db7492ef" +git-tree-sha1 = "cde29ddf7e5726c9fb511f340244ea3481267608" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.6.1" +version = "3.7.2" [deps.Adapt.extensions] AdaptStaticArraysExt = "StaticArrays" @@ -25,6 +25,18 @@ version = "2.3.0" uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" version = "1.1.1" +[[deps.Arpack]] +deps = ["Arpack_jll", "Libdl", "LinearAlgebra", "Logging"] +git-tree-sha1 = "9b9b347613394885fd1c8c7729bfc60528faa436" +uuid = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97" +version = "0.5.4" + +[[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.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" @@ -34,10 +46,24 @@ uuid = "2119f1ac-fb78-50f5-8cc0-dda848ebdb19" version = "1.0.1" [[deps.BangBang]] -deps = ["Compat", "ConstructionBase", "Future", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables", "ZygoteRules"] -git-tree-sha1 = "7fe6d92c4f281cf4ca6f2fba0ce7b299742da7ca" +deps = ["Compat", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables"] +git-tree-sha1 = "e28912ce94077686443433c2800104b061a827ed" uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.3.37" +version = "0.3.39" + + [deps.BangBang.extensions] + BangBangChainRulesCoreExt = "ChainRulesCore" + BangBangDataFramesExt = "DataFrames" + BangBangStaticArraysExt = "StaticArrays" + BangBangStructArraysExt = "StructArrays" + BangBangTypedTablesExt = "TypedTables" + + [deps.BangBang.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" @@ -47,17 +73,66 @@ git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" uuid = "9718e550-a3fa-408a-8086-8db961cd8217" version = "0.1.1" +[[deps.BitFlags]] +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.8" + +[[deps.Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.8+0" + +[[deps.Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.16.1+1" + [[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "e7ff6cadf743c098e08fca25c91103ee4303c9bb" +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "2118cb2765f8197b08e5958cdd17c165427425ee" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.15.6" - -[[deps.ChangesOfVariables]] -deps = ["ChainRulesCore", "LinearAlgebra", "Test"] -git-tree-sha1 = "38f7a08f19d8810338d4f5085211c7dfa5d5bdd8" -uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" -version = "0.1.4" +version = "1.19.0" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.3" + +[[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" @@ -65,30 +140,46 @@ uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" version = "1.0.2" [[deps.Compat]] -deps = ["Dates", "LinearAlgebra", "UUIDs"] -git-tree-sha1 = "00a2cccc7f098ff3b66806862d275ca3db9e6e5a" +deps = ["UUIDs"] +git-tree-sha1 = "886826d76ea9e72b35fcd000e535588f7b60f21d" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.5.0" +version = "4.10.1" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.2+0" +version = "1.0.5+1" [[deps.CompositionsBase]] -git-tree-sha1 = "455419f7e328a1a2493cabc6428d79e951349769" +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.1" +version = "0.1.2" + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" + + [deps.CompositionsBase.weakdeps] + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.3.0" [[deps.ConstructionBase]] deps = ["LinearAlgebra"] -git-tree-sha1 = "89a9db8d28102b094992472d333674bd1a83ce2a" +git-tree-sha1 = "c53fc348ca4d40d7b371e71fd52251839080cbc9" uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.1" +version = "1.5.4" [deps.ConstructionBase.extensions] - IntervalSetsExt = "IntervalSets" - StaticArraysExt = "StaticArrays" + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseStaticArraysExt = "StaticArrays" [deps.ConstructionBase.weakdeps] IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" @@ -100,16 +191,21 @@ git-tree-sha1 = "25cc3803f1030ab855e383129dcd3dc294e322cc" uuid = "6add18c4-b38d-439d-96f6-d6bc489c04c5" version = "0.1.3" +[[deps.Contour]] +git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.6.2" + [[deps.DataAPI]] -git-tree-sha1 = "e8119c1a33d267e16108be441a287a6981ba1630" +git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.14.0" +version = "1.15.0" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0" +git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.13" +version = "0.18.15" [[deps.DataValueInterfaces]] git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" @@ -125,6 +221,12 @@ git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" version = "0.1.2" +[[deps.DelimitedFiles]] +deps = ["Mmap"] +git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" +version = "1.9.1" + [[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" @@ -140,10 +242,40 @@ deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" version = "1.6.0" +[[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.ExprTools]] -git-tree-sha1 = "56559bbef6ca5ea0c0818fa5c90320398a6fbf8d" +git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.8" +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.FLoops]] deps = ["BangBang", "Compat", "FLoopsBase", "InitialValues", "JuliaVariables", "MLStyle", "Serialization", "Setfield", "Transducers"] @@ -160,37 +292,124 @@ version = "0.1.1" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +[[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.Formatting]] +deps = ["Printf"] +git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" +uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" +version = "0.4.2" + +[[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.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 = "27442171f28c952804dede8ff72828a96f2bfc1f" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.72.10" + +[[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 = "025d171a2847f616becc0f84c8dc62fe18f0f6dd" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.72.10+0" + +[[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.Glib_jll]] +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.76.5+0" + [[deps.Glob]] -git-tree-sha1 = "4df9f7e06108728ebf00a0a11edee4b29a482bb2" +git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" uuid = "c27321d9-0574-5035-807b-f59d2c89b15c" -version = "1.3.0" +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.Grisu]] +git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" +uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" +version = "1.0.2" [[deps.HDF5]] -deps = ["Compat", "HDF5_jll", "Libdl", "Mmap", "Random", "Requires", "UUIDs"] -git-tree-sha1 = "c73fdc3d9da7700691848b78c61841274076932a" +deps = ["Compat", "HDF5_jll", "Libdl", "MPIPreferences", "Mmap", "Preferences", "Printf", "Random", "Requires", "UUIDs"] +git-tree-sha1 = "26407bd1c60129062cec9da63dc7d08251544d53" uuid = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" -version = "0.16.15" +version = "0.17.1" +weakdeps = ["MPI"] + + [deps.HDF5.extensions] + MPIExt = "MPI" [[deps.HDF5_jll]] -deps = ["Artifacts", "JLLWrappers", "LibCURL_jll", "Libdl", "OpenSSL_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "4cc2bb72df6ff40b055295fdef6d92955f9dede8" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "LazyArtifacts", "LibCURL_jll", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "OpenSSL_jll", "TOML", "Zlib_jll", "libaec_jll"] +git-tree-sha1 = "38c8874692d48d5440d5752d6c74b0c6b0b60739" uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" -version = "1.12.2+2" +version = "1.14.2+1" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "abbbb9ec3afd783a7cbd82ef01dcd088ea051398" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.1" [[deps.HalfIntegers]] -git-tree-sha1 = "00db638039558e6396b93e2702862d6a884ac50e" +git-tree-sha1 = "1cfb497b72e1e8ab2256334dee1aaad43fa279ad" uuid = "f0d1745a-41c9-11e9-1dd9-e5d34d218721" -version = "1.4.3" +version = "1.5.1" + +[[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.InitialValues]] git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" @@ -198,9 +417,9 @@ uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" version = "0.3.1" [[deps.IntegerMathUtils]] -git-tree-sha1 = "f366daebdfb079fd1fe4e3d560f99a0c892e15bc" +git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30" uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" -version = "0.1.0" +version = "0.1.2" [[deps.IntelOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -212,27 +431,39 @@ version = "2023.2.0+0" deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -[[deps.InverseFunctions]] -deps = ["Test"] -git-tree-sha1 = "49510dfcb407e572524ba94aeae2fced1f3feb0f" -uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.8" - [[deps.IrrationalConstants]] -git-tree-sha1 = "7fd44fd4ff43fc60815f8e764c0f352b83c49151" +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.1.1" +version = "0.2.2" [[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 = ["Preferences"] -git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.4.1" +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 = "60b1194df0a3298f460063de985eae7b01bc011a" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "3.0.1+0" [[deps.JuliaVariables]] deps = ["MLStyle", "NameResolution"] @@ -246,21 +477,59 @@ git-tree-sha1 = "1a5e1d9941c783b0119897d29f2eb665d876ecf3" uuid = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" version = "0.6.0" +[[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 = "d862633ef6097461037a00a13f709a62ae4bdfdd" +git-tree-sha1 = "5930ef949f30a9a947c69ef6b069c0b1aa27619d" uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" -version = "1.4.0" +version = "1.6.0" + +[[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 = "f2355693d6778a178ade15952b7ac47a4ff97996" +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.0" +version = "1.3.1" + +[[deps.Latexify]] +deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] +git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.1" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SymEngineExt = "SymEngine" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" [[deps.LatinHypercubeSampling]] deps = ["Random", "StableRNGs", "StatsBase", "Test"] -git-tree-sha1 = "42938ab65e9ed3c3029a8d2c58382ca75bdab243" +git-tree-sha1 = "825289d43c753c7f1bf9bed334c253e9913997f8" uuid = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" -version = "1.8.0" +version = "1.9.0" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] @@ -269,43 +538,112 @@ uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" +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 = "7.84.0+0" +version = "8.4.0+0" [[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +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.10.2+0" +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", "Pkg"] +git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.35.0+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", "Pkg"] +git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.36.0+0" + [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" [[deps.LogExpFunctions]] -deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "946607f84feb96220f480e0422d3484c49c00239" +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.19" +version = "0.3.26" + + [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.MKL]] deps = ["Artifacts", "Libdl", "LinearAlgebra", "MKL_jll"] -git-tree-sha1 = "100521a1d2181cb39036ee1a6955d6b9686bb363" +git-tree-sha1 = "0e25aae49a4a43b3a03eb7ac7aba8473c60a87d2" uuid = "33e6dc65-8f57-5167-99aa-e5a354878fb2" -version = "0.6.1" +version = "0.6.2" [[deps.MKL_jll]] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] @@ -319,43 +657,62 @@ uuid = "d8e11817-5142-5d16-987a-aa16d5891078" version = "0.4.17" [[deps.MPI]] -deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "Requires", "Serialization", "Sockets"] -git-tree-sha1 = "3bb087eb4322bd73db110722f97624f3f2edb047" +deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] +git-tree-sha1 = "4e3136db3735924f96632a5b40a5979f1f53fa07" uuid = "da04e1cc-30fd-572f-bb4f-1f8673147195" -version = "0.20.7" +version = "0.20.19" + + [deps.MPI.extensions] + AMDGPUExt = "AMDGPU" + CUDAExt = "CUDA" + + [deps.MPI.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" [[deps.MPICH_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "Pkg", "TOML"] -git-tree-sha1 = "6d4fa43afab4611d090b11617ecea1a144b21d35" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "2ee75365ca243c1a39d467e35ffd3d4d32eef11e" uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.0.2+5" +version = "4.1.2+1" [[deps.MPIPreferences]] deps = ["Libdl", "Preferences"] -git-tree-sha1 = "71f937129731a29eabe6969db2c90368a4408933" +git-tree-sha1 = "8f6af051b9e8ec597fa09d8885ed79fd582f33c9" uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" -version = "0.1.7" +version = "0.1.10" [[deps.MPItrampoline_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "Pkg", "TOML"] -git-tree-sha1 = "b3f9e42685b4ad614eca0b44bd863cd41b1c86ea" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "8eeb3c73bbc0ca203d0dc8dad4008350bbe5797b" uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.0.2+1" +version = "5.3.1+1" [[deps.MacroTools]] deps = ["Markdown", "Random"] -git-tree-sha1 = "42324d08725e200c23d4dfb549e0d5d89dede2d2" +git-tree-sha1 = "b211c553c199c111d998ecdaf7623d1b89b69f93" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.10" +version = "0.5.12" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +[[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+0" +version = "2.28.2+1" + +[[deps.Measures]] +git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.2" [[deps.MicroCollections]] deps = ["BangBang", "InitialValues", "Setfield"] @@ -365,9 +722,9 @@ version = "0.1.4" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "a16aa086d335ed7e0170c5265247db29172af2f9" +git-tree-sha1 = "b01beb91d20b0d1312a9471a36017b5b339d26de" uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" -version = "10.1.3+2" +version = "10.1.4+1" [[deps.Missings]] deps = ["DataAPI"] @@ -380,7 +737,13 @@ uuid = "a63ad114-7e13-5084-954f-fe012c677804" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" +version = "2023.1.10" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.2" [[deps.NameResolution]] deps = ["PrettyPrint"] @@ -392,27 +755,39 @@ version = "0.1.5" uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" +[[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.21+4" +version = "0.3.23+2" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" +version = "0.8.1+2" [[deps.OpenMPI_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "Pkg", "TOML"] -git-tree-sha1 = "346d6b357a480300ed7854dbc70e746ac52e10fd" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "e25c1778a98e34219a00455d6e4384e017ea9762" uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" -version = "4.1.3+3" +version = "4.1.6+0" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.1" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1aa4b74f80b01c6bc2b89992b861b5f210e665b5" +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.21+0" +version = "3.0.12+0" [[deps.OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -420,21 +795,93 @@ git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" version = "0.5.5+0" +[[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 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.4.1" +version = "1.6.3" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+1" + +[[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.9.0" +version = "1.10.0" + +[[deps.PkgVersion]] +deps = ["Pkg"] +git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" +uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" +version = "0.3.3" + +[[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 = "862942baf5663da528f66d24996eb6da85218e76" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.4.0" + +[[deps.Plots]] +deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] +git-tree-sha1 = "ccee59c6e48e6f2edf8a5b64dc817b6729f99eb5" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.39.0" + + [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.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" [[deps.Preferences]] deps = ["TOML"] -git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d" +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.3.0" +version = "1.4.1" [[deps.PrettyPrint]] git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" @@ -443,20 +890,26 @@ version = "0.2.0" [[deps.Primes]] deps = ["IntegerMathUtils"] -git-tree-sha1 = "311a2aa90a64076ea0fac2ad7492e914e6feeb81" +git-tree-sha1 = "1d05623b5952aed1307bf8b43bec8b8d1ef94b6e" uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" -version = "0.5.3" +version = "0.5.5" [[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.REPL]] deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Random]] -deps = ["SHA", "Serialization"] +deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.RationalRoots]] @@ -464,6 +917,29 @@ git-tree-sha1 = "52315cf3098691c1416a356925027af5ab5bf548" uuid = "308eb6b3-cc68-5ff3-9e97-c3c4da4fa681" version = "0.2.0" +[[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.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[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" @@ -474,6 +950,12 @@ version = "1.3.0" uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" version = "0.7.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" @@ -483,24 +965,40 @@ git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" version = "1.1.1" +[[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.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" [[deps.SortingAlgorithms]] deps = ["DataStructures"] -git-tree-sha1 = "a4ada03f999bd01b3a25dcaa30b2d929fe537e00" +git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.0" +version = "1.2.1" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.10.0" [[deps.SpecialFunctions]] -deps = ["ChainRulesCore", "IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "d75bda01f8c31ebb72df80a46c88b25d1c79c56d" +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.1.7" +version = "2.3.1" +weakdeps = ["ChainRulesCore"] + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" [[deps.SplittablesBase]] deps = ["Setfield", "Test"] @@ -510,36 +1008,36 @@ version = "0.1.15" [[deps.StableRNGs]] deps = ["Random", "Test"] -git-tree-sha1 = "3be7d49667040add7ee151fefaf1f8c04c8c8276" +git-tree-sha1 = "ddc1a7b85e760b5285b50b882fa91e40c603be47" uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" -version = "1.0.0" +version = "1.0.1" [[deps.StaticArraysCore]] -git-tree-sha1 = "6b7ba252635a5eff6a0b0664a41ee140a1c9e72a" +git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.0" +version = "1.4.2" [[deps.Statistics]] deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.9.0" +version = "1.10.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] -git-tree-sha1 = "f9af7f195fb13589dd2e2d57fdb401717d2eb1f6" +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.5.0" +version = "1.7.0" [[deps.StatsBase]] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" +git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.33.21" +version = "0.34.2" [[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "5.10.1+6" +version = "7.2.1+1" [[deps.TOML]] deps = ["Dates"] @@ -553,31 +1051,65 @@ uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" version = "1.0.1" [[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] -git-tree-sha1 = "1544b926975372da01227b382066ab70e574a3ec" +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.10.1" +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.TimerOutputs]] deps = ["ExprTools", "Printf"] -git-tree-sha1 = "f2fd3f288dfc6f507b0c3a2eb3bac009251e548b" +git-tree-sha1 = "f548a9e9c490030e545f72074a41edfd0e5bcdd7" uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" -version = "0.5.22" +version = "0.5.23" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] [[deps.Transducers]] -deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] -git-tree-sha1 = "c42fa452a60f022e9e087823b47e5a5f8adc53d5" +deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] +git-tree-sha1 = "e579d3c991938fecbb225699e8f611fa3fbf2141" uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" -version = "0.4.75" +version = "0.4.79" + + [deps.Transducers.extensions] + TransducersBlockArraysExt = "BlockArrays" + TransducersDataFramesExt = "DataFrames" + TransducersLazyArraysExt = "LazyArrays" + TransducersOnlineStatsBaseExt = "OnlineStatsBase" + TransducersReferenceablesExt = "Referenceables" + + [deps.Transducers.weakdeps] + BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" + OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" + Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -586,34 +1118,335 @@ uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" [[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.Unzip]] +git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" +uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" +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 = "801cbe47eae69adc50f36c3caec4758d2650741b" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.12.2+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 = "522b8414d40c4cbbab8dee346ac3a09f9768f25d" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.4.5+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+0" +version = "1.2.13+1" -[[deps.ZygoteRules]] -deps = ["MacroTools"] -git-tree-sha1 = "8c1a8e4dfacb1fd631745552c8db35d0deb09ea0" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.2" +[[deps.Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.5+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.libaec_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "eddd19a8dea6b139ea97bdc8a0e2667d4b661720" +uuid = "477f73a3-ac25-53e9-8cc3-50b2fa2566f0" +version = "1.0.6+1" + +[[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.7.0+0" +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 = "93284c28274d9e75218a416c65ec49d0e0fcdf3d" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.40+0" + +[[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.48.0+0" +version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" +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/Project.toml b/Project.toml index 31746ce4..e4b9c886 100644 --- a/Project.toml +++ b/Project.toml @@ -1,9 +1,10 @@ name = "NuclearToolkit" uuid = "89bb3bae-bcec-43ae-87b7-9dd181dc6334" -authors = ["SotaYoshida and contributors"] +authors = ["SotaYoshida and contributors"] version = "0.3.6" [deps] +Arpack = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97" AssociatedLegendrePolynomials = "2119f1ac-fb78-50f5-8cc0-dda848ebdb19" Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" FLoops = "cc61a311-1640-44b5-9fba-1b764f453329" @@ -15,6 +16,8 @@ LatinHypercubeSampling = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" MKL = "33e6dc65-8f57-5167-99aa-e5a354878fb2" MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" +Measures = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" @@ -24,6 +27,7 @@ TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" WignerSymbols = "9f57e263-0b3d-5e2e-b1be-24f2bb48858b" [compat] +Arpack = "0.5" AssociatedLegendrePolynomials = "1" Combinatorics = "1" FLoops = "0.2" diff --git a/example/log_sample_script.txt b/example/log_sample_script.txt index 9796cefd..e99ac81c 100644 --- a/example/log_sample_script.txt +++ b/example/log_sample_script.txt @@ -1,8 +1,7 @@ size of dWS (jmax 9 lmax 40 e2max 8 Nnmax 20): dtri 4.46 MB dcgm0 1.11 MB d6j_int 1.11 MB d6j_lj 0.28 MB d9j_lsj 1.76 MB dictHOB 0.44 MB -BLAS.get_config() LBTConfig([ILP64] libmkl_rt.so, [LP64] libmkl_rt.so) -BLAS.get_num_threads() 1 nthreads 4 +E(2H): bare = -2.23001 srg = -2.23001 Diff.1.487e-10 size of dWS (jmax 9 lmax 40 e2max 8 Nnmax 20): dtri 4.46 MB dcgm0 1.11 MB d6j_int 1.11 MB d6j_lj 0.28 MB d9j_lsj 1.76 MB dictHOB 0.44 MB @@ -14,8 +13,8 @@ E_HF -132.95058 E_MBPT(3) = -156.2804 Eexp: -127.619 parameters in optional_parameters.jl will be used. def-by-run d6j_lj done! 4191 step: s E0 ||Omega_1|| ||Omega_2|| ||Eta_1|| ||Eta_2|| Ncomm. nwritten - 0 0.000 -132.95057781 0.000000e+00 0.000000e+00 1.033824e-16 1.410292e+00 0 0 - 1 0.500 -150.64837609 5.169121e-17 7.051459e-01 4.457285e-02 6.465559e-01 10 0 + 0 0.000 -132.95057781 0.000000e+00 0.000000e+00 1.884675e-16 1.410292e+00 0 0 + 1 0.500 -150.64837609 9.423374e-17 7.051459e-01 4.457285e-02 6.465559e-01 10 0 2 1.000 -154.78704838 2.228643e-02 3.232779e-01 5.387093e-02 3.441643e-01 18 1 3 1.500 -156.02709507 2.693546e-02 1.720822e-01 5.200791e-02 1.968159e-01 25 2 4 2.000 -156.46234611 5.291574e-02 2.697514e-01 4.609815e-02 1.192463e-01 34 2 diff --git a/src/IMSRG.jl/emulator_imsrg.jl b/src/IMSRG.jl/emulator_imsrg.jl index e715ea96..49f5b335 100644 --- a/src/IMSRG.jl/emulator_imsrg.jl +++ b/src/IMSRG.jl/emulator_imsrg.jl @@ -1,4 +1,3 @@ - """ read_fvec_hdf5(fname) @@ -267,15 +266,6 @@ function svd_Op_twobody(s,Op::Operator,Chan2b;verbose=true,max_rank=20) hit += 1 println("rank=",@sprintf("%4i",trank), " norm(V-V') ",@sprintf("%12.5e",norm(mat-Vtilde,2))) dimtr += 2*trank*dim + trank - # if trank != fullrank - # trank = fullrank - # U = SVD.U; Sig = deepcopy(SVD.S); Vt = SVD.Vt - # Sig[trank+1:end] .= 0.0 - # SV = Diagonal(Sig)* Vt - # Vtilde = BLAS.gemm('N','N',1.0,U,SV) - # tnorm = norm(mat-Vtilde,2) - # println("rank=",@sprintf("%4i",trank), " norm(V-V') ",@sprintf("%12.5e",norm(mat-Vtilde,2))) - # end break end end @@ -284,4 +274,159 @@ function svd_Op_twobody(s,Op::Operator,Chan2b;verbose=true,max_rank=20) end println("dimfull $dimfull dimtr $dimtr") return nothing -end \ No newline at end of file +end + +function constructor_snapshot_matrix(fns) + num_snapshots = length(fns) + fvec_dim = length(read_fvec_hdf5(fns[1])) -2 + + X = zeros(Float64,fvec_dim,num_snapshots-1) + Y = zeros(Float64,fvec_dim,num_snapshots-1) + for (i,fname) in enumerate(fns[1:end-1]) + fvec = read_fvec_hdf5(fname)[3:end] + X[:,i] .= fvec + if i > 1 + Y[:,i-1] .= fvec + end + end + Y[:,end] .= read_fvec_hdf5(fns[end])[3:end] + s_end = split(split(fns[end],"_s")[end],".h5")[1] + return parse(Float64,s_end),X,Y +end + +function get_DMD_operator(X,Y,r) + Z = svds(X; nsv=r)[1] + U_r, S_r, Vt_r = Z.U, Z.S, Z.Vt + + S_r_inv = diagm( 1.0 ./ S_r) + Z = BLAS.gemm('T', 'N', 1.0, Vt_r, S_r_inv) + YZ = BLAS.gemm('N','N',1.0, Y, Z) + Atilde = BLAS.gemm('T', 'N', 1.0, U_r, YZ) + + return U_r, Atilde +end + +function check_DMD_norm(X, Y, r, U_r, Atilde; verbose=false) + Y_latent = zeros(Float64, r, size(Y)[2]) + x1 = X[:,1] + x1_r = BLAS.gemv('T', 1.0, U_r, x1) + x_k = zeros(Float64,r) + x_new = zeros(Float64,r) .+ x1_r + for k = 1:size(Y)[2] + x_k .= x_new + BLAS.gemv!('N', 1.0, Atilde, x_k, 0.0, x_new) + Y_latent[:,k] .= x_new + + end + Yapprox = BLAS.gemm('N', 'N', 1.0, U_r, Y_latent) + if verbose + for k = 1:size(Y)[2] + println("k $k normvec ", norm(Yapprox[:,k]-Y[:,k])) + print_vec("Yap", Yapprox[1:10,k]) + print_vec("Y ", Y[1:10,k]) + end + end + println("norm(Y-Yapprox,Inf) = ", @sprintf("%10.4e",norm(Y - Yapprox,Inf)), " Fro. ", @sprintf("%10.4e",norm(Y - Yapprox,2))) +end + +function extrapolate_DMD(x_start, U_r, Atilde, s_pred, fn_exact, s_end, ds, nuc, inttype, emax, oupdir) + @assert length(s_pred) == length(fn_exact) "s_pred and fn_exact must have the same length" + if length(s_pred) > 0 + r = size(U_r)[2] + x1_r = BLAS.gemv('T', 1.0, U_r, x_start) + x_k = zeros(Float64,r) + x_new = zeros(Float64,r) .+ x1_r + for ith = 1:length(s_pred) + s_target = s_pred[ith] + x_k .= 0.0 + x_new .= x1_r + s = s_end + while true + x_k .= x_new + BLAS.gemv!('N', 1.0, Atilde, x_k, 0.0, x_new) + s += ds + if s >= s_target; break; end + end + x_pred = BLAS.gemv('N', 1.0, U_r, x_k) + E_imsrg = 0.0 + if isfile(fn_exact[ith]) + fvec_inf = read_fvec_hdf5(fn_exact[ith]) + s_file = fvec_inf[1] + @assert s == s_file "s $s must be equal to s_file $s_file for $(fn_exact[ith])" + E_imsrg = fvec_inf[2] + x_inf = fvec_inf[3:end] + println("s = ",@sprintf("%6.2f", s)," ||x'-x|| ", @sprintf("%10.4e", norm(x_inf-x_pred)), " ", @sprintf("%10.4e",norm(x_inf-x_pred,Inf))) + end + write_dmdvec_hdf5(x_pred,s,E_imsrg,nuc,inttype,emax,oupdir) + end + end + return nothing +end + +function write_dmdvec_hdf5(vec_in,s,E_imsrg,nuc,inttype,emax,oupdir) + vec = zeros(Float64,length(vec_in)+2) + vec[1] = s + vec[2] = E_imsrg + vec[3:end] .= vec_in + fname = oupdir*"omega_dmdvec_$(inttype)_e$(emax)_$(nuc)_s"*strip(@sprintf("%6.2f",s))*".h5" + io = h5open(fname,"w") + write(io,"vec",vec) + close(io) + return nothing +end + +function read_dmdvec_hdf5(fn) + io = h5open(fn,"r") + vec = read(io,"vec") + close(io) + return vec +end + +""" +main API for DMD + +# Arguments +- `emax::Int64`: maximum energy for the IMSRG calculation, which is used only for the filename of the emulated fvec data +- `nuc::String`: nucleus name +- `fns::Vector{String}`: filenames of the snapshot data +- `trank::Int64`: specified largest rank of truncated SVD +- `smin::Float64`: starting value of `s` for the training data +- `ds::Float64`: step size of `s` for the training data + +# Optional arguments +- `s_pred::Vector{Float64}`: values of `s` for the extrapolation +- `fn_exact::Vector{String}`: filenames of the exact data for the extrapolation, which must have the same length as `s_pred` +- `allow_fullSVD::Bool`: if `true`, the full SVD is performed and the rank is determined by `trank` and the tolerance `tol_svd` +- `tol_svd::Float64`: tolerance for the singular values for the truncated SVD +- `inttype::String`: interaction type, which is used for the filename of the output data +""" +function dmd_main(emax, nuc, fns, trank, smin, ds;s_pred=Float64[],fn_exact=String[], + allow_fullSVD=true,tol_svd=1e-7,inttype="",oupdir="flowOmega/") + if !isdir("flowOmega") + println("dir. flowOmega is created!") + mkdir("flowOmega") + end + println("Trying to perform DMD....") + + # construct snapshot matrices X and Y + s_end, X,Y = constructor_snapshot_matrix(fns) + println("Snapshot from smin $smin s_end $s_end ds $ds") + + # truncated SVD using Arpack.jl and construct tilde(A) + fullrank = rank(X) + r = trank + if allow_fullSVD + SVD = svd(X) + sigma_full = SVD.S + r = min(r, fullrank, sum(sigma_full .> tol_svd)) + println("fullrank $(fullrank) rank $r") + print_vec("singular values", sigma_full[1:r];ine=true) + end + U_r, Atilde = get_DMD_operator(X,Y,r) + check_DMD_norm(X, Y, r, U_r, Atilde) + + # extrapolation + extrapolate_DMD(Y[:,end],U_r, Atilde, s_pred, fn_exact, s_end, ds, nuc, inttype, emax, oupdir) + + return nothing +end diff --git a/src/IMSRG.jl/imsrg_util.jl b/src/IMSRG.jl/imsrg_util.jl index 4dea1ecc..672cc314 100644 --- a/src/IMSRG.jl/imsrg_util.jl +++ b/src/IMSRG.jl/imsrg_util.jl @@ -13,13 +13,15 @@ - `to` TimerOutput object to measure runtime&memory allocations # Optional Arguments +- `delete_Ops` if true, delete Operators with current pid after IMSRGflow - `core_generator_type` only the "atan" is available - `valence_generator_type` only the "shell-model-atan" is available - `denominatorDelta::Float` denominator Delta, which is needed for multi-major shell decoupling -- `debugmode::Int` 2: sample HF/IMSRG files +- `debugmode=0`: 0: no debug, 1: debug, 2: debug with more info +- `restart_from_files`: files to be read for restart 1st one is for IMSRG and 2nd one is for VSIMSRG """ function imsrg_main(binfo::basedat,Chan1b::chan1b,Chan2bD::chan2bD,HFobj::HamiltonianNormalOrdered,dictsnt,dWS,valencespace,Operators,MatOp,to; - core_generator_type="atan",valence_generator_type="shell-model-atan",fn_params="optional_parameters.jl",debugmode=2,Hsample=false,restart_from_files=String[]) + delete_Ops=false,core_generator_type="atan",valence_generator_type="shell-model-atan",fn_params="optional_parameters.jl",debugmode=0,Hsample=false,restart_from_files=String[]) dictMono = deepcopy(dictsnt.dictMonopole) vsIMSRG = ifelse(valencespace!=[]&&valencespace!="",true,false) @@ -31,7 +33,7 @@ function imsrg_main(binfo::basedat,Chan1b::chan1b,Chan2bD::chan2bD,HFobj::Hamilt init_dictMonopole!(dictMono,Chan2b) IMSRGobj = init_IMSRGobject(HFobj,fn_params) PandyaObj = prep_PandyaLookup(binfo,HFobj,Chan1b,Chan2bD) - if length(restart_from_files) >= 1; IMSRGobj.smax = 0.5;end + if length(restart_from_files) >= 1; IMSRGobj.smax = IMSRGobj.dsmax;end d6j_defbyrun = Dict{UInt64,Float64}() IMSRGflow(binfo,HFobj,IMSRGobj,PandyaObj,Chan1b,Chan2bD,dictMono,d6j_defbyrun,core_generator_type,valence_generator_type,to;debugmode=debugmode,Hsample=Hsample,restart_from_files=restart_from_files) if vsIMSRG && length(restart_from_files) == 0 @@ -54,7 +56,6 @@ function imsrg_main(binfo::basedat,Chan1b::chan1b,Chan2bD::chan2bD,HFobj::Hamilt end if length(restart_from_files) >= 1 - println("cZ $(binfo.nuc.cZ) Z $(binfo.nuc.Z) cN $(binfo.nuc.cN) N $(binfo.nuc.N)") if binfo.nuc.cZ != binfo.nuc.Z || binfo.nuc.cN != binfo.nuc.N println("normal ordering...") getNormalOrderedO(HFobj,IMSRGobj.H,Chan1b,Chan2bD,to;undo=true,OpeqH=true) @@ -69,9 +70,14 @@ function imsrg_main(binfo::basedat,Chan1b::chan1b,Chan2bD::chan2bD,HFobj::Hamilt getNormalOrderedO(HFobj,Op,Chan1b,Chan2bD,to;OpeqH=false) end end - write_vs_snt(binfo,HFobj,IMSRGobj,Operators,Chan1b,Chan2bD,valencespace) + #write_vs_snt(binfo,HFobj,IMSRGobj,Operators,Chan1b,Chan2bD,valencespace) + end + if !delete_Ops + pid = getpid() + for f in glob("flowOmega/Omega_$(pid)*.bin") + rm(f) + end end - return IMSRGobj end @@ -691,7 +697,6 @@ function IMSRGflow(binfo::basedat,HFobj::HamiltonianNormalOrdered,IMSRGobj::IMSR dict_idx_op_to_flatvec, dict_idx_flatvec_to_op, dict_if_idx_for_hdf5 = get_non0omega_idxs(HFobj,nOmega,Chan2b) fvec = get_fvec_from_Op(s, nOmega, dict_idx_op_to_flatvec, dict_idx_flatvec_to_op) - set_dictMonopole!(dictMono,HFobj,Hs.twobody) func_Eta(HFobj,IMSRGobj,Chan2b,dictMono,norms) @@ -725,14 +730,15 @@ function IMSRGflow(binfo::basedat,HFobj::HamiltonianNormalOrdered,IMSRGobj::IMSR func_Eta(HFobj,IMSRGobj,Chan2b,dictMono,norms) # remnant for IMSRG-Net sampling - if Hsample && ( ( 15.0 <= s <= 20.00 || s == 30.0 || s == 50.0 ) || valenceflow) #(istep <=10 && valenceflow) + #if Hsample && ( ( 15.0 <= s <= 20.00 || s == 30.0 || s == 50.0 ) || valenceflow) #(istep <=10 && valenceflow) + if Hsample && ( ( s <= 20.00 || s == 30.0 || s == 50.0 ) || valenceflow) #(istep <=10 && valenceflow) Nested = deepcopy(IMSRGobj.Omega) gather_omega_sofar_write(Hsample,istep, s, fvec, Omega, nOmega, tmpOp, binfo, Chan1b, Chan2bD, HFobj, IMSRGobj, dictMono, d6j_lj, PandyaObj,to,dict_idx_op_to_flatvec, dict_idx_flatvec_to_op,dict_if_idx_for_hdf5) end print_flowstatus(istep,s,ncomm,norms,IMSRGobj,Chan2b) if sqrt(norms[3]^2+norms[4]^2) < eta_criterion || s >= smax - aOp1_p_bOp2!(nOmega,Omega,1.0,0.0) + aOp1_p_bOp2!(nOmega,Omega,1.0,0.0) write_omega_bin(binfo,Chan2b,IMSRGobj.n_written_omega[1],nOmega,s,IMSRGobj.H.zerobody[1]) gather_omega_sofar_write(Hsample,istep+1, s, fvec, Omega, nOmega, tmpOp, binfo, Chan1b, Chan2bD, HFobj, IMSRGobj, dictMono, d6j_lj, PandyaObj,to,dict_idx_op_to_flatvec, dict_idx_flatvec_to_op,dict_if_idx_for_hdf5) #svd_Op_twobody(s,Omega,Chan2b;verbose=true,max_rank=20) @@ -742,39 +748,43 @@ function IMSRGflow(binfo::basedat,HFobj::HamiltonianNormalOrdered,IMSRGobj::IMSR end if length(restart_from_files) >= 1 + s = 0.0 + fvec = zeros(Float64,1) + emutype = "" + fn1 = restart_from_files[1][1] + if occursin("annomega",fn1) + emutype = ";IMSRGNet" + elseif occursin("dmd",fn1) + emutype = ";DMD" + end for (nth,fn) in enumerate(restart_from_files[1]) + inttype = aOp!(Omega,0.0) - fvec = read_fvec_hdf5(fn) s = parse(Float64,split(split(split(fn,"_")[end],"s")[end],".h5")[1]) + if occursin("dmdvec",fn) # make fvec from dmdvec + dmdvec = read_dmdvec_hdf5(fn) + write_fvec_hdf5(binfo,dmdvec,dict_if_idx_for_hdf5,s,IMSRGobj.H.zerobody[1];label="omega_dmd") + pid = getpid() + fn = "flowOmega/omega_dmd_vec_$pid"*binfo.nuc.cnuc*"_s"*strip(@sprintf("%6.2f",s))*".h5" + end + fvec = read_fvec_hdf5(fn) update_Op_with_fvec!(fvec,Omega,dict_idx_flatvec_to_op) BCH_Transform(Omega,HFobj.H,tmpOp,nOmega,Nested,ncomm,norms,Chan1b,Chan2bD,HFobj,dictMono,d6j_lj,PandyaObj,to) println("IMSRG from file $fn") - println("En(s=",strip(@sprintf("%8.2f",s)),") = ",tmpOp.zerobody[1]) + println("En(s=",strip(@sprintf("%8.2f",s)),"$emutype) = ",tmpOp.zerobody[1]) if length(restart_from_files) == 2 - Hcopy = deepcopy(tmpOp) - - # to check - # nw = 2 - # read_omega_bin!(binfo,Chan2b,nw,Omega;fn="vsrunlog_e4_em500/Omega_82794O18_2.bin") - # println("Onebody from Omega ", Omega.onebody[1][1,:]) - # s = parse(Float64,split(split(fn,"_s")[end],".h5")[1]) - # BCH_Transform(Omega,Hcopy,tmpOp,nOmega,Nested,ncomm,norms,Chan1b,Chan2bD,HFobj,dictMono,d6j_lj,PandyaObj,to) - # println("p1b=> ", tmpOp.onebody[1][1,:]) - # - + if length(restart_from_files[2]) == 0; continue; end fn = restart_from_files[2][nth] fvec = read_fvec_hdf5(fn) update_Op_with_fvec!(fvec,Omega,dict_idx_flatvec_to_op) - println("Onebody from fvecENN ", Omega.onebody[1][1,:]) + println("Onebody from fvec ", Omega.onebody[1][1,:]) BCH_Transform(Omega,Hcopy,tmpOp,nOmega,Nested,ncomm,norms,Chan1b,Chan2bD,HFobj,dictMono,d6j_lj,PandyaObj,to) println("p1b=> ", tmpOp.onebody[1][1,:]) - println("VSIMSRG from file $fn \nEn(s=",strip(@sprintf("%8.2f",s)),") = ",tmpOp.zerobody[1]) aOp1_p_bOp2!(tmpOp,Hs,1.0,0.0) end end end - return nothing end @@ -817,8 +827,7 @@ function gather_omega_sofar_write(Hsample::Bool, istep, s, fvec, oOmega, nOmega, end get_fvec_from_Op!(s, fvec, tildeO, dict_idx_op_to_flatvec, dict_idx_flatvec_to_op) - write_fvec_hdf5(binfo,fvec,dict_if_idx_for_hdf5,s,IMSRGobj.H.zerobody[1];label="omega") - + write_fvec_hdf5(binfo,fvec,dict_if_idx_for_hdf5,s,IMSRGobj.H.zerobody[1];label="omega") get_fvec_from_Op!(s, fvec, IMSRGobj.eta, dict_idx_op_to_flatvec, dict_idx_flatvec_to_op) write_fvec_hdf5(binfo,fvec,dict_if_idx_for_hdf5,s,IMSRGobj.H.zerobody[1];label="eta") return nothing @@ -902,33 +911,35 @@ function write_omega_bin(binfo::basedat,Chan2b::Vector{chan2b},n_written::Int,Om end close(io) - dim_pp = dim_nn = dim_pn = 0 - for ch = 1:nch - dim = dims[ch] - J = Chan2b[ch].J - P = Chan2b[ch].prty - Tz = Chan2b[ch].Tz - O2b = Omega.twobody[ch] - #println("ch $ch JPT $J $P $Tz") - if Tz == -2; dim_pp += dim*(dim+1)÷2;end - if Tz == 0; dim_pn += dim*(dim+1)÷2;end - if Tz == 2; dim_nn += dim*(dim+1)÷2;end - if Tz != -2; continue;end - for chp = 1:nch - Jp = Chan2b[chp].J - Pp = Chan2b[chp].prty - Tzp = Chan2b[chp].Tz - if J != Jp; continue; end - if P != Pp; continue; end - if Tz != - Tzp;continue;end - O2bp = Omega.twobody[chp] - #println("s $s ch $ch J $J P $P O-O' ",norm(O2b-O2bp,2)) - end - end + # dim_pp = dim_nn = dim_pn = 0 + # for ch = 1:nch + # dim = dims[ch] + # J = Chan2b[ch].J + # P = Chan2b[ch].prty + # Tz = Chan2b[ch].Tz + # O2b = Omega.twobody[ch] + # #println("ch $ch JPT $J $P $Tz") + # if Tz == -2; dim_pp += dim*(dim+1)÷2;end + # if Tz == 0; dim_pn += dim*(dim+1)÷2;end + # if Tz == 2; dim_nn += dim*(dim+1)÷2;end + # if Tz != -2; continue;end + # for chp = 1:nch + # Jp = Chan2b[chp].J + # Pp = Chan2b[chp].prty + # Tzp = Chan2b[chp].Tz + # if J != Jp; continue; end + # if P != Pp; continue; end + # if Tz != - Tzp;continue;end + # O2bp = Omega.twobody[chp] + # #println("s $s ch $ch J $J P $P O-O' ",norm(O2b-O2bp,2)) + # end + # end #println("dim: $(2*count1b+dim_pp+dim_pn+dim_nn) 1b $count1b 2bsum $(dim_pp+dim_pn+dim_nn) pp $dim_pp pn $dim_pn nn $dim_nn") return nothing end + + """ read_omega_bin!(nw,Op,verbose=false) diff --git a/src/NuclearToolkit.jl b/src/NuclearToolkit.jl index 14d3704e..ff12eaaf 100644 --- a/src/NuclearToolkit.jl +++ b/src/NuclearToolkit.jl @@ -1,6 +1,7 @@ module NuclearToolkit using AssociatedLegendrePolynomials +using Arpack using Base.Threads using Combinatorics using FLoops @@ -10,8 +11,10 @@ using KrylovKit using LatinHypercubeSampling using LaTeXStrings using LinearAlgebra +using Measures using MKL # for intel machine using MPI +using Plots using Printf using Random using StatsBase @@ -58,6 +61,7 @@ include("IMSRG.jl/commutator.jl") include("IMSRG.jl/valencespace.jl") include("IMSRG.jl/emulator_imsrg.jl") export imsrg_flow_check +export dmd_main ### ShellModel.jl include("ShellModel/shellmodel_main.jl") diff --git a/src/ShellModel/KSHELL.jl b/src/ShellModel/KSHELL.jl index 06778d67..053eb50c 100644 --- a/src/ShellModel/KSHELL.jl +++ b/src/ShellModel/KSHELL.jl @@ -68,17 +68,17 @@ function read_kshell_summary(fns::Vector{String};targetJpi="",nuc="") if !(state in states) push!(states,state) end - tmpJpi = "j"*string(J2)*ifelse(tl[3]=="+","p","n") + tmpJpi = "j"*string(J2)*ifelse(tl[3]=="+","p","n") Egs = min(Energy,Egs) if targetJpi == "" Egs_target = Egs end if targetJpi == tmpJpi Egs_target = min(Energy,Egs_target) - end - + end end end + @assert Egs_target != 1.e+5 "Egs_target error" nuclei = def_nuc(string(nuc),"","") return kshell_nuc(nuclei,sntf,Egs,Egs_target,states) end diff --git a/src/ShellModel/lanczos_methods.jl~ b/src/ShellModel/lanczos_methods.jl~ new file mode 100644 index 00000000..34a192a2 --- /dev/null +++ b/src/ShellModel/lanczos_methods.jl~ @@ -0,0 +1,692 @@ +function TRL(vks,uks,Tmat,k, + pbits,nbits,jocc_p,jocc_n, + SPEs,pp_2bjump,nn_2bjump,bis,bfs,block_tasks, + p_NiNfs,n_NiNfs,Mps,delMs,Vpn, + eval_jj,oPP,oNN,oPNu,oPNd,Jidxs, + tdims,num_ev,num_history,lm,ls,en,tol,to,doubleLanczos=false,checkorth=false) + + mdim = tdims[end] + TF=[false] + + lnJ = ls + Jvs = [zeros(Float64,mdim) for i=1:lnJ] + Jvret = [zeros(Float64,mdim)] + Jmat = zeros(Float64,lnJ,lnJ) + Jvs[1] .= vks[1] + Jtol = 1.e-6 + JTF = [false];beta_J = 1.0 + if doubleLanczos + Jlanczos(Jvs,Jmat,TF,JTF,Jtol,Jvret,pbits,nbits,tdims,eval_jj, + Jidxs,oPP,oNN,oPNu,oPNd,beta_J,to) + vks[1] .= Jvs[1] + for i=1:lnJ;Jvs[i] .=0.0;end + end + elit = 1 + while TF[1]==false + for it = k:lm-1 + vk =vks[it]; vkp1 =vks[it+1] + @timeit to "operate H" begin + operate_H!(vks[it],vks[it+1],vks[it+2], + pbits,nbits, + jocc_p,jocc_n,SPEs, + pp_2bjump,nn_2bjump, + tdims,bis,bfs,block_tasks, + p_NiNfs,n_NiNfs,Vpn,Mps,delMs,to) + end + talpha = dot(vk,vkp1) + Tmat[it,it] = talpha + diagonalize_T!(it,num_ev,Tmat,en,num_history,TF,tol) + if it == mdim; TF[1]=true;end + if TF[1];elit=it;break;end + svks = @views vks[1:it] + @timeit to "ReORTH" ReORTH(it,vkp1,svks) + tbeta = sqrt(dot(vkp1,vkp1)) + vkp1 .*= 1.0/tbeta + if checkorth; Check_Orthogonality(it,vks,en); end + Tmat[it+1,it] = tbeta; Tmat[it,it+1] = tbeta + if doubleLanczos + if tbeta < Jtol;TF[1]=true;elit=it;break;end + @timeit to "JJ lanczos" begin + for i = 2:length(Jvs);Jvs[i] .=0.0;end + Jmat .= 0.0;JTF[1] = false + Jvs[1] .= vkp1 + Jlanczos(Jvs,Jmat,TF,JTF,Jtol,Jvret,pbits,nbits,tdims,eval_jj,Jidxs,oPP,oNN,oPNu,oPNd,beta_J,to) + vkp1 .= Jvs[1] + if TF[1];elit=it;break;end + end + end + end + if TF[1] == false + @timeit to "Restart" begin + ThickRestart(vks,uks,Tmat,lm,ls) + end + end + k = ls+1 + end + return elit +end + +function Jlanczos(Jvs,Jmat,TF,JTF,Jtol,Jvret, + pbits,nbits,tdims,eval_jj, + Jidxs,oPP,oNN,oPNu,oPNd,beta_J,to) + mdim = tdims[end] + lnJ = length(Jvs) + eljit=1; k = 1; inow=k + while JTF[1] == false + for it = k:lnJ-1 + inow = it + vk = Jvs[it]; vkp1 = Jvs[it+1] + operate_J!(vk,vkp1,pbits,nbits,tdims, + Jidxs,oPP,oNN,oPNu,oPNd,beta_J) + axpy!(eval_jj,vk,vkp1)## vkp1 .+= eval_jj .* vk + Jmat[it,it] = dot(vk,vkp1) + teval = eigvals(@views Jmat[1:it,1:it])[1] + if abs(teval-eval_jj) < Jtol + eljit=it;JTF[1] = true;break + end + if JTF[1];eljit=it;break;end + ReORTH(it,vkp1,Jvs) + beta = sqrt(dot(vkp1,vkp1)) + if beta < 1.e-4;eljit=it;TF[1]=true;JTF[1]=true;break;end + vkp1 .*= 1.0/beta + Jmat[it+1,it] = beta; Jmat[it,it+1] = beta + eljit = it + end + if JTF[1]==false + ThickRestart_J(Jvs,Jvret,Jmat,eljit+1,1,eval_jj,Jtol) + k=2 + end + end + if inow > k + ThickRestart_J(Jvs,Jvret,Jmat,eljit+1,1,eval_jj,Jtol) + end + return nothing +end + +function get_mscheme_idx()::Int64 + +end + +function operate_H!(wf,twf,vkp2,pbits,nbits,jocc_p,jocc_n,SPEs,pp_2bjump,nn_2bjump,tdims,bis,bfs,block_tasks,p_NiNfs,n_NiNfs,Vpn,Mps,delMs,to=nothing) + @inbounds @threads for bi in block_tasks + if bi==0; continue;end #empty job + ret = [0,0,0]; ret2 = [0,0,0] + idim = tdims[bi] + l_Np = length(pbits[bi]) + l_Nn = length(nbits[bi]) + offset = idim -l_Nn + #@timeit to "pn1" begin + for (bfidx,bf) in enumerate(bfs[bi]) + bisearch!(delMs,Mps[bf]-Mps[bi],ret) #!! bf = bfs[bi][j] + Vs = Vpn[ret[1]] + fdim = tdims[bf] + l_Nn_f = length(nbits[bf]) + p_NiNf = p_NiNfs[bi][bfidx] + n_NiNf = n_NiNfs[bi][bfidx] + off_f = fdim-l_Nn_f + for (nth,V) in enumerate(Vs) + Npifs = p_NiNf[nth]; Nnifs = n_NiNf[nth] + for Npif in Npifs + tMi = offset+ Npif.i * l_Nn + tMf = off_f + Npif.f * l_Nn_f + phase_p = Npif.phase + for Nnif in Nnifs + Mi = tMi + Nnif.i; Mf = tMf + Nnif.f + phase_n = Nnif.phase + twf[Mi] += ifelse(phase_p!=phase_n,-V,V) * wf[Mf] + end + end + end + end + #@timeit to "pn2" begin + for j = 1:length(bis[bi])-1 #### tbf = bi !!! + tbi = bis[bi][j] + bisearch!(delMs,Mps[bi]-Mps[tbi],ret) + bisearch_ord!(bfs[tbi],bi,ret2) + fdim=tdims[tbi] + l_Nn_i=length(nbits[tbi]) + p_NiNf = p_NiNfs[tbi][ret2[1]] + n_NiNf = n_NiNfs[tbi][ret2[1]] + off_f = fdim - l_Nn_i + for (nth,V) in enumerate(Vpn[ret[1]]) + Npifs = p_NiNf[nth] + Nnifs = n_NiNf[nth] + for Npif in Npifs + tMi = off_f + Npif.i *l_Nn_i #idim <-> fdim + tMf = offset + Npif.f*l_Nn + phase_p = Npif.phase + for Nnif in Nnifs + Mi = tMi + Nnif.i; Mf = tMf + Nnif.f + phase_n = Nnif.phase + twf[Mf] += ifelse(phase_p!=phase_n,-V,V) * wf[Mi] + end + end + end + end + #@timeit to "pp/nn" begin + ### pp/nn interaction + for (Npi,tinfo) in enumerate(pp_2bjump[bi]) + tMi = offset + Npi*l_Nn + for (jj,tmp) in enumerate(tinfo) + tMf = offset + l_Nn*tmp.f + fac = tmp.coef + for nidx = 1:l_Nn + Mi = tMi + nidx; Mf = tMf + nidx + twf[Mf] += fac * wf[Mi] + twf[Mi] += fac * wf[Mf] + end + end + end + for (Nni,tinfo) in enumerate(nn_2bjump[bi]) + tMi = offset + Nni + for (jj,tmp) in enumerate(tinfo) + tMf = offset + tmp.f + fac = tmp.coef + for pidx = 1:l_Np + Mi = tMi + pidx*l_Nn; Mf = tMf + pidx*l_Nn + twf[Mf] += fac * wf[Mi] + twf[Mi] += fac * wf[Mf] + end + end + end + + #@timeit to "1b" begin + ### one-body operator + for pidx = 1:l_Np + tMi = offset + pidx*l_Nn + for nidx =1:l_Nn + Mi = tMi + nidx + twf[Mi] += (dot(SPEs[1],jocc_p[bi][pidx])+ + dot(SPEs[2],jocc_n[bi][nidx])) * wf[Mi] + end + end + end + return nothing +end + +function diagonalize_T!(k::Int64,num_ev::Int64,Tmat,en::Array{Array{Float64,1}},num_history::Int64, TF::Array{Bool,1}, tol::Float64) + for ith = num_history:-1:2 + en[ith] .= en[ith-1] + end + n = minimum([num_ev,k]) + @views en[1][1:n] .= eigvals(@views Tmat[1:k,1:k] )[1:n] + if all( en[2]-en[1] .< tol) ; TF[1]=true; end + return nothing +end + +function TRBL(q,vks,uks,Tmat,Beta_H,pbits,nbits,jocc_p,jocc_n,SPEs, + pp_2bjump,nn_2bjump,bis,bfs,block_tasks, + p_NiNfs,n_NiNfs,Mps,delMs,Vpn,tdims, + eval_jj,oPP,oNN,oPNu,oPNd,Jidxs, + num_ev,num_history,lm,ls_sub,en,tol,to, + doubleLanczos=false) + ls = q*ls_sub + mdim = tdims[end] + TF=[false] + elit = 1 + inow = 1; itmin = 1; itmax = div(lm,q)-1 + rescount = 0 + Vt = zeros(Float64,q,mdim) + R = zeros(Float64,q,q) + Beta_J = zeros(Float64,q,q) + + lnJ = 20 # maximum([q*4,10]) + Jvs = [zeros(Float64,q,mdim) for i=1:lnJ] + Jvret = [zeros(Float64,q,mdim) ] + Jmat = zeros(Float64,lnJ*q,lnJ*q) + JTF = [false];Jtol=1.e-6 + U = zeros(Float64,mdim,lnJ*q) + Mat = zeros(Float64,mdim,q) + if doubleLanczos + @timeit to "JJ lanczos" begin + Jvs[1] .= vks[1] + bl_JJ_Lanczos(q,Jvs,Jmat,Vt,R,Beta_J,JTF,Jtol,Jvret,pbits,nbits,tdims,eval_jj,Jidxs,oPP,oNN,oPNu,oPNd,to,Beta_H,U,Mat) + vks[1] .= Jvs[1];Beta_J .= 0.0;JTF[1]=false + for i=1:lnJ;Jvs[i] .= 0.0;end + V = vks[1] + end + end + while TF[1]==false + for it = itmin:itmax + inow = it + V = vks[it] + HV = vks[it+1] + @timeit to "bl_operateH" begin + bl_operate_H!(q,V,HV,pbits,nbits, + jocc_p,jocc_n,SPEs,pp_2bjump,nn_2bjump, + tdims,bis,bfs,block_tasks, + p_NiNfs,n_NiNfs,Vpn,Mps,delMs,to) + end + BLAS.gemm!('N','T',1.0,V,HV,0.0,R) ##mul!(R,V,HV') + if issymmetric(R) == false + @inbounds for i=1:q;for j=i:q + R[i,j] = R[j,i] + end;end + end + @views Tmat[q*it-q+1:q*it,q*it-q+1:q*it] .= R + diagonalize_T!(it*q,num_ev,Tmat,en,num_history,TF,tol) + #print_vec("En TR(d)BL $it ",en[1]) + BLAS.gemm!('N','N',-1.0,R,V,1.0,HV)#mul!(HV,R,V,-1.0,1.0) + s_vks = @views vks[1:it-1] + @timeit to "ReORTH" bl_ReORTH(q,it,mdim,s_vks,HV,Vt,R) + bl_QR!(HV',Beta_H,mdim,q)#myQR!(HV',Beta_H,mdim,q) + if doubleLanczos + tnorm = norm(Diagonal(Beta_H),Inf) + if tnorm < Jtol + println("Hbn norm $tnorm");TF[1]=true;elit=it;break + end + @timeit to "JJ lanczos" begin + for i=2:lnJ; Jvs[i] .= 0.0; end + JTF[1] = false; Jmat .= 0.0;Jvs[1] .= HV + Vt .= 0.0; R .= 0.0 + bl_JJ_Lanczos(q,Jvs,Jmat,Vt,R,Beta_J,JTF,Jtol,Jvret,pbits,nbits,tdims,eval_jj,Jidxs,oPP,oNN,oPNu,oPNd,to,Beta_H,U,Mat) + HV .= Jvs[1]; Beta_J .=0.0 + end + end + add_bl_T!(q,it,Tmat,Beta_H) + if TF[1];elit = it;break;end + end + if TF[1] == false + @timeit to "bl_Restart" begin + bl_ThickRestart(q,vks,uks,Beta_H,Tmat,inow,ls_sub,mdim,Vt) + end + itmin = ls_sub + 1 + end + end + return elit +end + +function bl_ReORTH(q,it,mdim,vks,HV,Vt,R) + #LinearAlgebra.jl: mul!(C, A, B, α, β) -> C: ABalpha + Cbeta + #BLAS.gemm!(tA, tB, alpha, A, B,beta,C) C := alpha*A*B + beta*C + # :tA,tB 'N': normal 'T': transpose + @inbounds for l = it-1:-1:1 + Vt .= vks[l] + BLAS.gemm!('N','T', 1.0,HV,Vt,0.0,R) #mul!(R,HV,Vt') + BLAS.gemm!('N','N',-1.0,R,Vt,1.0,HV) #mul!(HV,R,Vt,-1.0,1.0) + end + R .= 0.0 + return nothing +end + +# wf:V, twf:HV +function bl_operate_H!(q,wf,twf,pbits,nbits,jocc_p,jocc_n, + SPEs,pp_2bjump,nn_2bjump,tdims,bis,bfs,block_tasks, + p_NiNfs,n_NiNfs,Vpn, Mps,delMs,to=nothing) + #lblock = length(pbits) + @inbounds @threads for bi in block_tasks + if bi==0; continue;end #empty job + ret = [0,0,0]; ret2 = [0,0,0] + idim = tdims[bi] + l_Np = length(pbits[bi]) + l_Nn = length(nbits[bi]) + offset = idim -l_Nn + #@timeit to "pn1" begin + @inbounds for (bfidx,bf) in enumerate(bfs[bi]) + bisearch!(delMs,Mps[bf]-Mps[bi],ret) #!! bf = bfs[bi][j] + Vs = Vpn[ret[1]] + fdim = tdims[bf] + l_Nn_f = length(nbits[bf]) + p_NiNf = p_NiNfs[bi][bfidx] + n_NiNf = n_NiNfs[bi][bfidx] + off_f = fdim-l_Nn_f + @inbounds for (nth,V) in enumerate(Vs) + Npifs = p_NiNf[nth]; Nnifs = n_NiNf[nth] + @inbounds for Npif in Npifs + tMi = offset+ Npif.i * l_Nn + tMf = off_f + Npif.f * l_Nn_f + phase_p = Npif.phase + @inbounds for Nnif in Nnifs + Mi = tMi + Nnif.i; Mf = tMf + Nnif.f + phase_n = Nnif.phase + coeff = ifelse(phase_p!=phase_n,-V,V) + w_f = @views twf[:,Mi] + w_i = @views wf[:,Mf] + @inbounds for b=1:q + w_f[b] += coeff * w_i[b] + end + end + end + end + end + #end + #@timeit to "pn2" begin + @inbounds for j = 1:length(bis[bi])-1 #### tbf = bi !!! + tbi = bis[bi][j] + bisearch!(delMs,Mps[bi]-Mps[tbi],ret) + bisearch_ord!(bfs[tbi],bi,ret2) + fdim=tdims[tbi] + l_Nn_i=length(nbits[tbi]) + p_NiNf = p_NiNfs[tbi][ret2[1]] + n_NiNf = n_NiNfs[tbi][ret2[1]] + off_f = fdim - l_Nn_i + @inbounds for (nth,V) in enumerate(Vpn[ret[1]]) + Npifs = p_NiNf[nth] + Nnifs = n_NiNf[nth] + @inbounds for Npif in Npifs + tMi = off_f + Npif.i *l_Nn_i #idim <-> fdim + tMf = offset + Npif.f*l_Nn + phase_p = Npif.phase + @inbounds for Nnif in Nnifs + Mi = tMi + Nnif.i; Mf = tMf + Nnif.f + phase_n = Nnif.phase + coeff = ifelse(phase_p!=phase_n,-V,V) + w_f = @views twf[:,Mf] + w_i = @views wf[:,Mi] + @inbounds for b=1:q + w_f[b] += coeff * w_i[b] + end + end + end + end + end + #end + #@timeit to "pp/nn" begin + ### pp/nn interaction + @inbounds for (Npi,tinfo) in enumerate(pp_2bjump[bi]) + tMi = offset + Npi*l_Nn + @inbounds for (jj,tmp) in enumerate(tinfo) + tMf = offset + l_Nn*tmp.f + fac = tmp.coef + @inbounds for nidx = 1:l_Nn + Mi = tMi + nidx; Mf = tMf + nidx + w_f1 = @views twf[:,Mf] + w_i1 = @views wf[:,Mi] + w_f2 = @views twf[:,Mi] + w_i2 = @views wf[:,Mf] + @inbounds for b=1:q + w_f1[b] += fac * w_i1[b] + w_f2[b] += fac * w_i2[b] + end + end + end + end + @inbounds for (Nni,tinfo) in enumerate(nn_2bjump[bi]) + tMi = offset + Nni + @inbounds for (jj,tmp) in enumerate(tinfo) + tMf = offset + tmp.f + fac = tmp.coef + @inbounds for pidx = 1:l_Np + Mi = tMi + pidx*l_Nn; Mf = tMf + pidx*l_Nn + w_f1 = @views twf[:,Mf] + w_i1 = @views wf[:,Mi] + w_f2 = @views twf[:,Mi] + w_i2 = @views wf[:,Mf] + @inbounds for b=1:q + w_f1[b] += fac * w_i1[b] + w_f2[b] += fac * w_i2[b] + end + end + end + end + #end + #@timeit to "1b" begin + ### one-body operator + @inbounds for pidx = 1:l_Np + tMi = offset + pidx*l_Nn + @inbounds for nidx =1:l_Nn + Mi = tMi + nidx + coeff = (dot(SPEs[1],jocc_p[bi][pidx])+ + dot(SPEs[2],jocc_n[bi][nidx])) + w_f = @views twf[:,Mi] + w_i = @views wf[:,Mi] + @inbounds for b=1:q + w_f[b] += coeff * w_i[b] + end + + end + end + #end + end + return nothing +end + +function Jcompress(q,vks,Tmat,inow,ls_sub,mdim,R,bnout,U,Mat,Beta_J;use_LAPACK=false) + lm = q*inow; ls = q*ls_sub + vals = [0.0] + vecs = [0.0;0.0] + if use_LAPACK # used for only for debug (you need "l_diag.F90" by S.Yoshida) + M = Tmat[1:lm,1:lm] + ccall((:diagonalize_double_,"l_diag.so"),Nothing, + (Ref{Int64},Ref{Float64},Ref{Float64},Ref{Float64},Ref{Int64}), + lm,M,vals,vecs,ls) + else + M = @views Tmat[1:lm,1:lm] + vals,vecs = eigen(M) # eigen(Symmetric(M,:L)) + end + # x = maximum([ 1.0-sum(vecs[1:lm,i].^2) for i=1:ls]) + # if x > 1.e-6 + # println("WARNING: JJ block norm diff. in jj_refine ", x) + # end + + tv = @views vecs[1:ls,1:ls] + BLAS.gemm!('T','N',1.0,tv,bnout,0.0,R)# mul!(R,tv,bnout) + bnout .= R + + Tmat .= 0.0; U .= 0.0 + for i=1:inow + bv = vks[i] + for b=1:q + j = q*(i-1)+b + u = @views U[:,j] + u .= @views bv[b,:] + end + end + tU = @views U[:,1:lm] + tv = @views vecs[1:lm,1:ls] + BLAS.gemm!('T','T',1.0,tv,tU,0.0,vks[1]) + Beta_J .= @views vecs[1:ls,1:ls] + + #println("V1 compressed ",vks[1][1,:]) + #println("V2 compressed ",vks[1][2,:]) + return nothing +end + +function bl_ThickRestart(q,vks,uks,R,Tmat,inow,ls_sub,mdim,Vt) + lm = q*inow + ls = q*ls_sub + r = zeros(Float64,q,ls) + vals,vecs = eigen(@views Tmat[1:lm,1:lm]) + Tmat .= 0.0 + for k = 1:ls; Tmat[k,k] = vals[k]; end + tv = @views vecs[lm-q+1:lm,1:ls] + mul!(r,R,tv) #BLAS.gemm!('N','N',1.0,R,tv,0.0,r) + Tmat[ls+1:ls+q,1:ls] .= r + Tmat[1:ls,ls+1:ls+q] .= r' + for bi = 1:ls_sub + uk = uks[bi] #.= 0.0 + uk .= 0.0 + for b=1:q + k = q*(bi-1) + b + for j=1:inow + vk = vks[j] + for bj = 1:q + v = @views vk[bj,:] + idx = q*(j-1) +bj + fac = vecs[idx,k] + @inbounds for m=1:mdim + uk[b,m] += fac * v[m] + end + end + end + end + end + for i = 1:ls_sub + vks[i] .= uks[i] + end + vks[ls_sub+1] .= vks[inow+1] + for i= ls_sub+2:length(vks) + vks[i] .= 0.0 + end + for i=1:ls_sub+1 + V = vks[i] + if i>1 + for j = i-1:-1:1 + Vt .= vks[j] + mul!(R,V,Vt') + mul!(V,R,Vt,-1.0,1.0) + end + bl_QR!(V',R,mdim,q) + end + end + return nothing +end + +function bl_JJ_Lanczos(q,Jvs,Jmat,Vt,R,Beta_J,JTF,Jtol,Jvret,pbits,nbits,tdims,eval_jj, + Jidxs,oPP,oNN,oPNu,oPNd,to,bnout,U,Mat;verbose=false) + mdim = tdims[end] + lnJ = length(Jvs) + itmin = 1;itmax = lnJ-1; inow = 0 + rescount = 0 + while JTF[1] == false + for it = itmin:itmax + inow = it + V = Jvs[it]; JV = Jvs[it+1] + bl_operate_J!(q,V,JV,pbits,nbits,tdims, + Jidxs,oPP,oNN,oPNu,oPNd) + axpy!(eval_jj,V,JV)##JV .+= eval_jj .* V + BLAS.gemm!('N','T',1.0,V,JV,0.0,R) + @inbounds for j=1:q;for i=1:j + R[j,i] = R[i,j] + end;end + @views Jmat[q*it-q+1:q*it,q*it-q+1:q*it] .= R + tJmat = @views Jmat[1:it*q,1:it*q] + + jeval = eigvals(tJmat)[1:q] + if verbose; print_vec("$it jeval=> ",jeval);end + if jeval[1] - eval_jj < -Jtol + if verbose;println("neg JJ @$it jeval");end + JTF[1] = true;break + end + if all( abs.(jeval.-eval_jj) .< Jtol) + if verbose;println("J converged @$it");end + JTF[1] = true;break + end + BLAS.gemm!('N','N',-1.0,R,V,1.0,JV) #mul!(JV,R,V,-1.0,1.0) + s_vs = @views Jvs[1:it-1] + bl_ReORTH(q,it,mdim,s_vs,JV,Vt,R) + bl_QR!(JV',Beta_J,mdim,q) + + tnorm = norm(Diagonal(Beta_J),Inf) + add_bl_T!(q,it,Jmat,Beta_J) + if tnorm < Jtol + println("Jbn norm $tnorm") + JTF[1]=true;break + end + end + if rescount == 20;println("JJ not converged");return nothing;end + if JTF[1]==false + tJmat = @views Jmat[1:inow*q,1:inow*q] + bl_ThickRestart(q,Jvs,Jvret,Beta_J,Jmat, + inow,1,mdim,Vt) + itmin = 2;rescount += 1 + end + end + if inow > itmin + #@timeit to "Restart" + Jcompress(q,Jvs,Jmat,inow,1,mdim,R,bnout,U,Mat,Beta_J) + end + return nothing +end + +function bl_operate_J!(q,Rvec,Jv,pbits,nbits,tdims,Jidxs,oPP,oNN,oPNu,oPNd,beta_J=1.0) + lblock=length(pbits) + @inbounds @threads for bi in Jidxs + if bi==0;continue;end + idim = tdims[bi] + lNn = length(nbits[bi]) + lNp = length(pbits[bi]) + opPP = oPP[bi] + opNN = oNN[bi] + offset = idim-lNn + @inbounds for tmp in opPP + Npi =tmp.Mi; Npf=tmp.Mf; fac=tmp.fac * beta_J + tMi = offset + Npi*lNn + tMf = offset + Npf*lNn + @inbounds for nidx = 1:lNn + Mi = tMi+nidx; Mf = tMf+nidx + w_f1 = @views Jv[:,Mf] + w_i1 = @views Rvec[:,Mi] + w_f2 = @views Jv[:,Mi] + w_i2 = @views Rvec[:,Mf] + @inbounds for b=1:q + w_f1[b] += fac * w_i1[b] + w_f2[b] += fac * w_i2[b] + end + end + end + @inbounds for tmp in opNN #nn + Nni =tmp.Mi; Nnf=tmp.Mf; fac=tmp.fac * beta_J + tMi = offset + Nni + tMf = offset + Nnf + @inbounds for pidx = 1:lNp + Mi = tMi+pidx*lNn; Mf = tMf+pidx*lNn + w_f1 = @views Jv[:,Mf] + w_i1 = @views Rvec[:,Mi] + w_f2 = @views Jv[:,Mi] + w_i2 = @views Rvec[:,Mf] + @inbounds for b=1:q + w_f1[b] += fac * w_i1[b] + w_f2[b] += fac * w_i2[b] + end + end + end + end + @inbounds @threads for bi = 2:lblock + operator = oPNd[bi] + bf = bi-1 + l_Nn_i = length(nbits[bi]) + l_Nn_f = length(nbits[bf]) + off_i = tdims[bi] - l_Nn_i + off_f = tdims[bf] - l_Nn_f + @inbounds for top in operator + pj = top.pjump + nj = top.njump + fac =top.fac * beta_J + @inbounds for tmp_p in pj + phase_p=tmp_p.phase + tMi = off_i + tmp_p.i * l_Nn_i + tMf = off_f + tmp_p.f * l_Nn_f + @inbounds for tmp_n in nj + phase_n=tmp_n.phase + Mi = tMi + tmp_n.i + Mf = tMf + tmp_n.f + coeff = ifelse(phase_p!=phase_n,-fac,fac) + w_f = @views Jv[:,Mf]; w_i = @views Rvec[:,Mi] + @inbounds for b=1:q + w_f[b] += coeff * w_i[b] + end + end + end + end + end + @inbounds @threads for bi = 1:lblock-1 + operator = oPNu[bi] + bf = bi+1 + l_Nn_i = length(nbits[bi]) + l_Nn_f = length(nbits[bf]) + off_i = tdims[bi] - l_Nn_i + off_f = tdims[bf] - l_Nn_f + @inbounds for top in operator + pj = top.pjump + nj = top.njump + fac = top.fac * beta_J + @inbounds for tmp_p in pj + phase_p=tmp_p.phase + tMi = off_i + tmp_p.i * l_Nn_i + tMf = off_f + tmp_p.f * l_Nn_f + @inbounds for tmp_n in nj + Nni = tmp_n.i; Nnf = tmp_n.f; phase_n=tmp_n.phase + Mi = tMi + tmp_n.i + Mf = tMf + tmp_n.f + coeff = ifelse(phase_p!=phase_n,-fac,fac) + w_f = @views Jv[:,Mf]; w_i = @views Rvec[:,Mi] + @inbounds for b=1:q + w_f[b] += coeff * w_i[b] + end + end + end + end + end + return nothing +end diff --git a/src/chiEFTint/main_chiEFTint.jl b/src/chiEFTint/main_chiEFTint.jl index 679ddf92..820071b4 100644 --- a/src/chiEFTint/main_chiEFTint.jl +++ b/src/chiEFTint/main_chiEFTint.jl @@ -22,8 +22,11 @@ function make_chiEFTint(;is_show=false,itnum=1,writesnt=true,nucs=[],optimizer=" io = select_io(MPIcomm,optimizer,nucs) @timeit to "prep." chiEFTobj,OPTobj,dWS = construct_chiEFTobj(do2n3ncalib,itnum,optimizer,MPIcomm,io,to;fn_params) @timeit to "NNcalc" calcualte_NNpot_in_momentumspace(chiEFTobj,to) - @timeit to "deutron" BE_d = Calc_Deuteron(chiEFTobj,to;io=io) + BE_d_bare = Calc_Deuteron(chiEFTobj,to;io=io) @timeit to "renorm." SRG(chiEFTobj,to) + BE_d_srg = Calc_Deuteron(chiEFTobj,to;io=io) + println("E(2H): bare = ",@sprintf("%8.5f", BE_d_bare), + " srg = ", @sprintf("%8.5f", BE_d_srg), " Diff.", @sprintf("%8.3e", BE_d_bare - BE_d_srg)) HFdata = prepHFdata(nucs,ref,["E"],corenuc) if do_svd; target_LSJ = [[0,0,0,0],[0,2,1,1],[1,1,1,0],[2,2,0,2]]; svd_vmom(chiEFTobj,target_LSJ); end @@ -31,6 +34,8 @@ function make_chiEFTint(;is_show=false,itnum=1,writesnt=true,nucs=[],optimizer=" if write_vmom target_LSJ = [[0,0,1,1],[1,1,1,0],[1,1,0,1],[1,1,1,1],[0,0,0,0],[0,2,1,1],[3,3,1,3]] write_onshell_vmom(chiEFTobj,2,target_LSJ;label="pn"); write_onshell_vmom(chiEFTobj,3,target_LSJ;label="nn") + momplot(chiEFTobj,2,target_LSJ; fnlabel=ifelse(chiEFTobj.params.srg,"srg","bare")) + momplot(chiEFTobj,3,target_LSJ; fnlabel=ifelse(chiEFTobj.params.srg,"srg","bare")) end if do2n3ncalib #calibrate 2n3n LECs by HFMBPT @@ -42,6 +47,7 @@ function make_chiEFTint(;is_show=false,itnum=1,writesnt=true,nucs=[],optimizer=" end if io != stdout; close(io);end show_TimerOutput_results(to;tf=is_show) + return true end @@ -718,7 +724,7 @@ function Calc_Deuteron(chiEFTobj::ChiralEFTobject,to;io=stdout) H_d .+= T_d evals,evecs = eigen(H_d) E_d = minimum(evals) - #println(stdout,"Deuteron energy:",@sprintf("%12.6f",E_d)," MeV") + #println(io,"Deuteron energy:",@sprintf("%12.6f",E_d)," MeV") return E_d end diff --git a/src/chiEFTint/struct_const_io.jl b/src/chiEFTint/struct_const_io.jl index 443df91a..dac95d53 100644 --- a/src/chiEFTint/struct_const_io.jl +++ b/src/chiEFTint/struct_const_io.jl @@ -23,7 +23,7 @@ const fsalpha = 7.2973525693* 1.e-3 #fine structure const. const l2l = [ wigner3j(Float64,l,2,l,0,0,0) for l=0:8] const l2lnd =[[ wigner3j(Float64,l1,2,l2,0,0,0) for l2=0:8] for l1=0:8] const nuclist = [ - "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", + "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", @@ -645,10 +645,10 @@ function svd_vmom(chiEFTobj::ChiralEFTobject,target_LSJ;pnrank=2,verbose=false,t end end - """ - write_onshell_vmom(chiEFTobj::ChiralEFTobject,pnrank::Int;label="") +write_onshell_vmom(chiEFTobj::ChiralEFTobject,pnrank::Int;label="") +Function to write out potentials in momentum space. """ function write_onshell_vmom(chiEFTobj::ChiralEFTobject,pnrank::Int,target_LSJ;label="") n_mesh = chiEFTobj.params.n_mesh @@ -712,7 +712,10 @@ end plot nn potential in partial wave over relative momentum space """ -function momplot(xr,V12mom,tdict,pnrank,llpSJ_s;ctext="",fpath="") +function momplot(chiEFTobj,pnrank,llpSJ_s;fnlabel="",ctext="",fpath="",write_hdf5=true) + xr = chiEFTobj.xr_fm + V12mom = chiEFTobj.V12mom + tdict = chiEFTobj.dict_pwch[pnrank] tfdat = [] if fpath != ""; xf,yfs = compfdat(fpath); end itt = 2 *(pnrank -2) @@ -720,7 +723,7 @@ function momplot(xr,V12mom,tdict,pnrank,llpSJ_s;ctext="",fpath="") for vidx = 1:7 l,lp,S,J= llpSJ_s[vidx] V12idx = get(tdict,[itt,l,lp,S,J],-1) - if V12idx==-1;println("V12idx==$V12idx");continue;end + if V12idx==-1;continue;end V = V12mom[V12idx] tx = "" cS = ifelse(S==0,"1","3") @@ -732,38 +735,88 @@ function momplot(xr,V12mom,tdict,pnrank,llpSJ_s;ctext="",fpath="") end for i =1:n_mesh; tv[i] = V[i,i]; end if fpath != ""; tfdat = [xf,yfs[vidx]];end - pw_plt(tx,xr,V,tv,pnrank;fdat=tfdat) + #pw_plt(tx,xr,V,tv,pnrank,fnlabel;fdat=tfdat) + if write_hdf5 + fn = "vmom_"*fnlabel*"_chiEFT_"*tx*"_"*string(pnrank)*".h5" + h5open(fn,"w") do file + write(file,"pnrank",pnrank) + write(file,"srg",chiEFTobj.params.srg) + write(file,"x",xr) + write(file,"V",V) + end + end + momplot_from_file(pnrank,tx) end return nothing end +function momplot_from_file(pnrank,tx) + fn_bare = "vmom_bare_chiEFT_"*tx*"_"*string(pnrank)*".h5" + fn_srg = "vmom_srg_chiEFT_"*tx*"_"*string(pnrank)*".h5" + if !isfile(fn_bare);println("file $fn_bare is not found");return nothing;end + if !isfile(fn_srg);println("file $fn_srg is not found");return nothing;end + file = h5open(fn_bare,"r"); x_b = read(file,"x"); V_b = read(file,"V"); V_b_diag = diag(V_b); close(file) + file = h5open(fn_srg,"r"); x_s = read(file,"x"); V_s = read(file,"V"); V_s_diag = diag(V_s); close(file) + tls = ["pp", "pn", "nn"] + cpnrank = tls[pnrank] + fig = plot(layout=(1, 3), size=(1200, 300), dpi=400, + left_margin = 10mm, bottom_margin = 8mm, + xtick_direction = :out, ytick_direction = :out) + plot!(fig[1], x_b, V_b_diag, + label="bare",grid=:true) + plot!(fig[1], x_s, V_s_diag, + xlabel=latexstring("p=p' \\ \\mathrm{fm}^{-1}"), + ylabel=latexstring("V(p,p) \\ \\mathrm{MeV}\\ \\mathrm{fm}^3"), + label="SRG",grid=:true) + cmin = minimum([minimum(V_b),minimum(V_s)]) + cmax = maximum([maximum(V_b),maximum(V_s)]) + heatmap!(fig[2], x_b, x_b, V_b, + xlabel=latexstring("p \\ \\mathrm{fm}^{-1}"), + ylabel=latexstring("p' \\ \\mathrm{fm}^{-1}"), + c = :jet, grid=:true, clims=(cmin,cmax)) + heatmap!(fig[3], x_s, x_s, V_s, + xlabel=latexstring("p \\ \\mathrm{fm}^{-1}"), + ylabel=latexstring("p' \\ \\mathrm{fm}^{-1}"), + c = :jet, grid=:true, clims=(cmin,cmax)) + pntext = cpnrank*":" + annotate!(fig[2], 3.5, 4.5, + pntext*latex_pw(tx), halign = :left, valign = :bottom, c=:white) + #savefig(fig, "vmom_bare_vs_SRG_chiEFT_"*tx*"_"*cpnrank*".pdf") + savefig(fig, "vmom_bare_vs_SRG_chiEFT_"*tx*"_"*cpnrank*".png") + return nothing +end + +function latex_pw(tx) + ret = latexstring("{}^{"*tx[1]*"}\\mathrm{$(tx[2])}_{"*tx[3]*"}") + return ret +end + """ pw_plt(tx,xr,z,zds,pnrank;fdat=[]) +Function to fdat: normally no need to specify. optional array to specify text file for cross check """ -function pw_plt(tx,xr,z,zds,pnrank;fdat=[]) - tls = ["pp","pn","nn"] - cpnrank = tls[pnrank] - xr *= 1.0/hc; yr = copy(xr) - fig = plt.figure(figsize=(10,4)) - axs = [fig.add_subplot(121),fig.add_subplot(122)] - axs[2].set_xlabel(latexstring("p ")*" [fm"*latexstring("^{-1}")*"]") - axs[2].set_ylabel(latexstring("p'")*" [fm"*latexstring("^{-1}")*"]") - CS = axs[2].contourf(xr, yr, z) - fig.colorbar(CS) - axs[1].set_xlabel(latexstring("p=p' ")*" [fm"*latexstring("^{-1}")*"]") - axs[1].set_ylabel(latexstring("V(p,p)")*" [MeV fm"*latexstring("^3")*"]") - axs[1].plot(xr,zds,marker="o",markersize=2) - if fdat != [] - axs[1].plot(fdat[1],fdat[2],marker="x",markersize=2,alpha=0.4,label="Fortran") - axs[1].legend() - end - axs[1].grid(color="gray",linestyle="dotted") - plt.savefig("pic/chiEFT_"*tx*"_"*cpnrank*".pdf",pad_inches=0) - plt.close() +function pw_plt(tx, xr, z, zds, pnrank, fnlabel; fdat=[]) + tls = ["pp", "pn", "nn"] + cpnrank = tls[pnrank] + yr = copy(xr) + fig = plot(layout=(1, 2), size=(800, 300), dpi=400, + left_margin = 5mm, bottom_margin = 5mm, + xtick_direction = :out, ytick_direction = :out) + plot!(fig[1], xr, zds, + xlabel=latexstring("p=p' \\ \\mathrm{fm}^{-1}"), + ylabel=latexstring("V(p,p) \\ \\mathrm{MeV}\\ \\mathrm{fm}^3"), + label=nothing,grid=:true) + heatmap!(fig[2], xr, yr, z, + xlabel=latexstring("p \\ \\mathrm{fm}^{-1}"), + ylabel=latexstring("p' \\ \\mathrm{fm}^{-1}"), + c = :viridis, grid=:true) + savefig(fig, "vmom_"*fnlabel*"_chiEFT_"*tx*"_"*cpnrank*".png") + return nothing end +# unused function compfdat(inpf) f = open(inpf,"r");lines = readlines(f);close(f) xs = Float64[] diff --git a/src/hartreefock.jl/main.jl b/src/hartreefock.jl/main.jl index 76475c17..99182771 100644 --- a/src/hartreefock.jl/main.jl +++ b/src/hartreefock.jl/main.jl @@ -13,14 +13,24 @@ Main API to carry out HF/HFMBPT or IMSRG calculation from snt file - `Operators=String[]` target observables other than Hamiltonian - `is_show=false` to show TimerOutput log (summary of run time and memory allocation) - `doIMSRG=false` to carry out IMSRG/VSIMSRG calculation -- `valencespace=[]` to spacify the valence space (e.g., "sd-shell" or ["sd-shell"], [[0,1,1,-1],[0,1,3,-1], [0,1,1,1],[0,1,3,1]]), if this is not empty, it tries to perform VS-IMSRG calculations +- `valencespace=""` to spacify the valence space (e.g., "sd-shell" or ["sd-shell"], [[0,1,1,-1],[0,1,3,-1], [0,1,1,1],[0,1,3,1]]), if this is not empty, it tries to perform VS-IMSRG calculations - `corenuc=""` core nucleus, example=> "He4" -- `ref="nucl"` to specify target reference state, "core" or "nucl" is supported +- `ref="nucl"` to specify target reference state, "core" or "nucl" is supported. +- `return_obj=false` to return `hfdata` or `imsrgdata` object from this function +- `oupfn=""` to specify output file (writing stdout) name +- `fn_params="optional_parameters.jl"` to specify the name of file to read optional parameters +- `debugmode=0` to specify debug mode (0: no debug, 1: debug, 2: debug with more details) +- `Hsample=false` to specify whether to sample IMSRG omega and eta operators for emulators in hdf5 format +- `restart_from_files=String[]` to specify the files to restart IMSRG flow from (e.g., ["ann_omega_vec_s20.h5"]). If this has two elements, the first one is for IMSRG and the other one is for VS-IMSRG. """ -function hf_main(nucs,sntf,hw,emax_calc;verbose=false,Operators=String[],is_show=false,doIMSRG=false,valencespace="",corenuc="",ref="nucl",return_obj=false,oupfn="",fn_params="optional_parameters.jl",debugmode=0,Hsample=false,restart_from_files=String[]) +function hf_main(nucs,sntf,hw,emax_calc;verbose=false,Operators=String[],is_show=false, + doIMSRG=false,delete_Ops=false,valencespace="",corenuc="",ref="nucl",return_obj=false,oupfn="", + fn_params="optional_parameters.jl",debugmode=0,Hsample=false,restart_from_files=String[]) BLAS.set_num_threads(1) - println("BLAS.get_config() ",BLAS.get_config()) - println("BLAS.get_num_threads() $(BLAS.get_num_threads()) nthreads $(Base.Threads.nthreads())") + if debugmode != 0 + println("BLAS.get_config() ",BLAS.get_config()) + println("BLAS.get_num_threads() $(BLAS.get_num_threads()) nthreads $(Base.Threads.nthreads())") + end @assert isfile(sntf) "sntf:$sntf is not found!" to = TimerOutput() io = select_io(false,"",nucs;use_stdout=true,fn=oupfn) @@ -76,7 +86,7 @@ function hf_main(nucs,sntf,hw,emax_calc;verbose=false,Operators=String[],is_show HFobj = hf_iteration(binfo,HFdata[i],sps,Hamil,dictsnt.dictTBMEs,Chan1b,Chan2bD,Gamma,maxnpq,dWS,to;verbose=verbose,io=io,E0cm=E0cm) end if doIMSRG - IMSRGobj = imsrg_main(binfo,Chan1b,Chan2bD,HFobj,dictsnt,dWS,valencespace,Operators,MatOp,to;fn_params=fn_params,debugmode=debugmode,Hsample=Hsample,restart_from_files=restart_from_files) + IMSRGobj = imsrg_main(binfo,Chan1b,Chan2bD,HFobj,dictsnt,dWS,valencespace,Operators,MatOp,to;delete_Ops=delete_Ops,fn_params=fn_params,debugmode=debugmode,Hsample=Hsample,restart_from_files=restart_from_files) if return_obj; return IMSRGobj;end else if "Rp2" in Operators diff --git a/src/hartreefock.jl/operator.jl b/src/hartreefock.jl/operator.jl index 45b27463..f4d5d9ec 100644 --- a/src/hartreefock.jl/operator.jl +++ b/src/hartreefock.jl/operator.jl @@ -720,6 +720,7 @@ end evaluate charge radii with IMSRG. """ function eval_rch_imsrg(binfo,Chan1b,Chan2bD,HFobj,IMSRGobj,PandyaObj,dWS,d6j_defbyrun,dictMono,MatOp,restart_from_files,to;debug_mode=false) + emulating = length(restart_from_files) >= 1 Chan2b = Chan2bD.Chan2b; dict_2b_ch = Chan2bD.dict_ch_JPT tnuc = binfo.nuc N = tnuc.N @@ -732,8 +733,10 @@ function eval_rch_imsrg(binfo,Chan1b,Chan2bD,HFobj,IMSRGobj,PandyaObj,dWS,d6j_de Rpp_HF = Op_Rp2.zerobody[1] Rch2_HF = Rpp_HF + Rp2 + N/Z *Rn2 + DF Rch_HF = sqrt(Rch2_HF) - println(" HF point proton radius ",@sprintf("%12.6f", sqrt(Rpp_HF)), - " charge radius ",@sprintf("%12.6f", Rch_HF), " => HF+PT ",@sprintf("%12.6f", sqrt(Rch2_HF+Rp_PT))) + if !emulating + println(" HF point proton radius ",@sprintf("%12.6f", sqrt(Rpp_HF)), + " charge radius ",@sprintf("%12.6f", Rch_HF), " => HF+PT ",@sprintf("%12.6f", sqrt(Rch2_HF+Rp_PT))) + end ##IMSRG(2) level ncomm = [0] @@ -746,17 +749,29 @@ function eval_rch_imsrg(binfo,Chan1b,Chan2bD,HFobj,IMSRGobj,PandyaObj,dWS,d6j_de if length(restart_from_files) >= 1 # hf5 files by emulator are specified tOmega = deepcopy(Omega); aOp!(tOmega,0.0) dict_idx_op_to_flatvec, dict_idx_flatvec_to_op, dict_if_idx_for_hdf5 = get_non0omega_idxs(HFobj,Omega,Chan2b) + emutype = "Exact" + fn1 = restart_from_files[1][1] + if occursin("ann",fn1) + emutype = "IMSRGNet" + elseif occursin("dmd",fn1) + emutype = "DMD" + end for fn in restart_from_files[1] - aOp!(tOmega,0.0) - fvec = read_fvec_hdf5(fn) s = parse(Float64,split(split(split(fn,"_")[end],"s")[end],".h5")[1]) + if emutype == "DMD" # we need to rename `fn`, because fvecfile is made online in emulator.jl + pid = getpid() + fn = "flowOmega/omega_dmd_vec_$pid"*binfo.nuc.cnuc*"_s"*strip(@sprintf("%6.2f",s))*".h5" + end + println("fn $fn emutype $emutype") + aOp!(tOmega,0.0) + fvec = read_fvec_hdf5(fn) aOp!(tmpOp,0.0); aOp!(tmpOp2,0.0); aOp!(Nested,0.0) update_Op_with_fvec!(fvec,tOmega,dict_idx_flatvec_to_op) BCH_Transform(tOmega,Op_Rp2,tmpOp,tmpOp2,Nested,ncomm,norms,Chan1b,Chan2bD,HFobj,dictMono,d6j_defbyrun,PandyaObj,to) Rpp = tmpOp.zerobody[1] Rch2_emu = Rpp + Rp2 + N/Z *Rn2 + DF Rch_emu = sqrt(Rch2_emu) - println("s="*strip(@sprintf("%10.2f",s))*"(Net): point proton radius ",@sprintf("%12.6f", sqrt(Rpp))," charge radius ",@sprintf("%12.6f", Rch_emu)) + println("emutype $emutype s="*strip(@sprintf("%10.2f",s))*": point proton radius ",@sprintf("%12.6f", sqrt(Rpp))," charge radius ",@sprintf("%12.6f", Rch_emu)) aOp!(tOmega,0.0) ## remnant for IMSRG-Net ## @@ -795,11 +810,11 @@ function eval_rch_imsrg(binfo,Chan1b,Chan2bD,HFobj,IMSRGobj,PandyaObj,dWS,d6j_de BCH_Transform(tOmega,Op_Rp2,tmpOp,tmpOp2,Nested,ncomm,norms,Chan1b,Chan2bD,HFobj,dictMono,d6j_defbyrun,PandyaObj,to) aOp1_p_bOp2!(tmpOp,Op_Rp2,1.0,0.0) end + Rpp = Op_Rp2.zerobody[1] + Rch2 = Rpp + Rp2 + N/Z *Rn2 + DF + Rch = sqrt(Rch2) + println("IMSRG point proton radius ",@sprintf("%12.6f", sqrt(Rpp))," charge radius ",@sprintf("%12.6f", Rch)) end - Rpp = Op_Rp2.zerobody[1] - Rch2 = Rpp + Rp2 + N/Z *Rn2 + DF - Rch = sqrt(Rch2) - println("IMSRG point proton radius ",@sprintf("%12.6f", sqrt(Rpp))," charge radius ",@sprintf("%12.6f", Rch)) return tmpOp end