diff --git a/docs/make.jl b/docs/make.jl
index 5ca95a33..f91ff7ce 100644
--- a/docs/make.jl
+++ b/docs/make.jl
@@ -120,7 +120,7 @@ cp(
repo_url = "github.com/control-toolbox/OptimalControl.jl"
-# if draft is true, then the julia code from .md is not executed # debug
+# if draft is true, then the julia code from .md is not executed
# to disable the draft mode in a specific markdown file, use the following:
#=
```@meta
@@ -128,7 +128,7 @@ Draft = false
```
=#
makedocs(;
- draft=false,
+ draft=false, # debug
sitename="OptimalControl.jl",
format=Documenter.HTML(;
repolink="https://" * repo_url,
@@ -174,9 +174,10 @@ makedocs(;
"OptimalControl.jl" => "api-optimalcontrol-dev.md",
],
],
- "JuliaCon Paris 2025" => "juliacon-paris-2025.md",
+ "RDNOPA 2025" => "rdnopa-2025.md",
],
plugins=[links],
)
deploydocs(; repo=repo_url * ".git", devbranch="main", push_preview=true)
+# push_preview: use https://control-toolbox.org/OptimalControl.jl/previews/PRXXX where XXX is the pull request number
diff --git a/docs/src/assets/Manifest.toml b/docs/src/assets/Manifest.toml
index 023e60bd..78e84667 100644
--- a/docs/src/assets/Manifest.toml
+++ b/docs/src/assets/Manifest.toml
@@ -1,8 +1,8 @@
# This file is machine-generated - editing it directly is not advised
-julia_version = "1.11.7"
+julia_version = "1.12.1"
manifest_format = "2.0"
-project_hash = "9b6e0817ee9912a4be0b8035c284f9703f84de08"
+project_hash = "ed383b814e8d550b2e19c67b5eb177cab6b8ccff"
[[deps.ADNLPModels]]
deps = ["ADTypes", "ForwardDiff", "LinearAlgebra", "NLPModels", "Requires", "ReverseDiff", "SparseArrays", "SparseConnectivityTracer", "SparseMatrixColorings"]
@@ -90,15 +90,15 @@ version = "1.1.2"
[[deps.ArrayInterface]]
deps = ["Adapt", "LinearAlgebra"]
-git-tree-sha1 = "dbd8c3bbbdbb5c2778f85f4422c39960eac65a42"
+git-tree-sha1 = "d81ae5489e13bc03567d4fbbb06c546a5e53c857"
uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
-version = "7.20.0"
+version = "7.22.0"
[deps.ArrayInterface.extensions]
ArrayInterfaceBandedMatricesExt = "BandedMatrices"
ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices"
ArrayInterfaceCUDAExt = "CUDA"
- ArrayInterfaceCUDSSExt = "CUDSS"
+ ArrayInterfaceCUDSSExt = ["CUDSS", "CUDA"]
ArrayInterfaceChainRulesCoreExt = "ChainRulesCore"
ArrayInterfaceChainRulesExt = "ChainRules"
ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore"
@@ -124,9 +124,9 @@ version = "7.20.0"
[[deps.ArrayLayouts]]
deps = ["FillArrays", "LinearAlgebra", "StaticArrays"]
-git-tree-sha1 = "120e392af69350960b1d3b89d41dcc1d66543858"
+git-tree-sha1 = "355ab2d61069927d4247cd69ad0e1f140b31e30d"
uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
-version = "1.11.2"
+version = "1.12.0"
weakdeps = ["SparseArrays"]
[deps.ArrayLayouts.extensions]
@@ -159,9 +159,9 @@ version = "0.1.6"
[[deps.BracketingNonlinearSolve]]
deps = ["CommonSolve", "ConcreteStructs", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"]
-git-tree-sha1 = "90740f16aef91d898424bc11c1cabada475435e0"
+git-tree-sha1 = "57f9f59bec88ce80cd3e46efc39f126395789bb0"
uuid = "70df07ce-3d50-431d-a3e7-ca6ddb60ac1e"
-version = "1.4.0"
+version = "1.5.0"
weakdeps = ["ChainRulesCore", "ForwardDiff"]
[deps.BracketingNonlinearSolve.extensions]
@@ -206,9 +206,9 @@ weakdeps = ["ADNLPModels", "ExaModels", "MadNLP", "NLPModelsIpopt", "NLPModelsKn
[[deps.CTFlows]]
deps = ["CTBase", "CTModels", "DocStringExtensions", "ForwardDiff", "LinearAlgebra", "MLStyle", "MacroTools"]
-git-tree-sha1 = "4bb18901f7ed3779b010e67c6562239e9f2990e8"
+git-tree-sha1 = "fc6d7425e7e54a6cb023b24e05a7c0430c9165bf"
uuid = "1c39547c-7794-42f7-af83-d98194f657c2"
-version = "0.8.8"
+version = "0.8.9"
weakdeps = ["OrdinaryDiffEq"]
[deps.CTFlows.extensions]
@@ -216,9 +216,9 @@ weakdeps = ["OrdinaryDiffEq"]
[[deps.CTModels]]
deps = ["CTBase", "DocStringExtensions", "Interpolations", "LinearAlgebra", "MLStyle", "MacroTools", "OrderedCollections", "Parameters", "RecipesBase"]
-git-tree-sha1 = "f5e80274149d9910656b0c94c378cdead3f689ad"
+git-tree-sha1 = "072e5e867715b060729158d4c5fb3b16ff7e82b0"
uuid = "34c4fa32-2049-4079-8329-de33c2a22e2d"
-version = "0.6.8"
+version = "0.6.9"
weakdeps = ["JLD2", "JSON3", "Plots"]
[deps.CTModels.extensions]
@@ -228,9 +228,9 @@ weakdeps = ["JLD2", "JSON3", "Plots"]
[[deps.CTParser]]
deps = ["CTBase", "DocStringExtensions", "MLStyle", "OrderedCollections", "Parameters", "Unicode"]
-git-tree-sha1 = "7e95684a3b47015e3d2feac81292a89d60a9dae6"
+git-tree-sha1 = "48ec8193487a79277ff278752337c4ffb8fff691"
uuid = "32681960-a1b1-40db-9bff-a1ca817385d1"
-version = "0.7.0"
+version = "0.7.1"
[[deps.Cairo_jll]]
deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"]
@@ -327,9 +327,9 @@ version = "1.0.0"
[[deps.Compat]]
deps = ["TOML", "UUIDs"]
-git-tree-sha1 = "0037835448781bb46feb39866934e243886d756a"
+git-tree-sha1 = "9d8a54ce4b17aa5bdce0ea5c34bc5e7c340d16ad"
uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
-version = "4.18.0"
+version = "4.18.1"
weakdeps = ["Dates", "LinearAlgebra"]
[deps.Compat.extensions]
@@ -338,7 +338,7 @@ weakdeps = ["Dates", "LinearAlgebra"]
[[deps.CompilerSupportLibraries_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
-version = "1.1.1+0"
+version = "1.3.0+1"
[[deps.CompositionsBase]]
git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad"
@@ -398,9 +398,9 @@ version = "1.16.0"
[[deps.DataFrames]]
deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"]
-git-tree-sha1 = "c967271c27a95160e30432e011b58f42cd7501b5"
+git-tree-sha1 = "d8928e9169ff76c6281f39a659f9bca3a573f24c"
uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
-version = "1.8.0"
+version = "1.8.1"
[[deps.DataStructures]]
deps = ["OrderedCollections"]
@@ -483,9 +483,9 @@ version = "1.15.1"
[[deps.DifferentiationInterface]]
deps = ["ADTypes", "LinearAlgebra"]
-git-tree-sha1 = "16946a4d305607c3a4af54ff35d56f0e9444ed0e"
+git-tree-sha1 = "529bebbc74b36a4cfea09dd2aecb1288cd713a6d"
uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63"
-version = "0.7.7"
+version = "0.7.9"
[deps.DifferentiationInterface.extensions]
DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore"
@@ -549,9 +549,9 @@ version = "0.9.5"
[[deps.Documenter]]
deps = ["ANSIColoredPrinters", "AbstractTrees", "Base64", "CodecZlib", "Dates", "DocStringExtensions", "Downloads", "Git", "IOCapture", "InteractiveUtils", "JSON", "Logging", "Markdown", "MarkdownAST", "Pkg", "PrecompileTools", "REPL", "RegistryInstances", "SHA", "TOML", "Test", "Unicode"]
-git-tree-sha1 = "47ffb8f27ffc01e2e57e7ae5365ae5ceef87b03d"
+git-tree-sha1 = "352b9a04e74edd16429aec79f033620cf8e780d4"
uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
-version = "1.14.1"
+version = "1.15.0"
[[deps.DocumenterInterLinks]]
deps = ["CodecZlib", "DocInventories", "Documenter", "Markdown", "MarkdownAST", "TOML"]
@@ -576,9 +576,9 @@ uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56"
version = "1.0.5"
[[deps.EnzymeCore]]
-git-tree-sha1 = "787f5e2efb33af12cc3fde313c1b0195a3f08eba"
+git-tree-sha1 = "f91e7cb4c17dae77c490b75328f22a226708557c"
uuid = "f151be2c-9106-41f4-ab19-57ee4f262869"
-version = "0.8.13"
+version = "0.8.15"
weakdeps = ["Adapt"]
[deps.EnzymeCore.extensions]
@@ -629,9 +629,9 @@ version = "0.1.11"
[[deps.Expat_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
-git-tree-sha1 = "7bb1361afdb33c7f2b085aa49ea8fe1b0fb14e58"
+git-tree-sha1 = "27af30de8b5445644e8ffe3bcb0d72049c089cf1"
uuid = "2e619515-83b5-522b-bb60-26c02a35a201"
-version = "2.7.1+0"
+version = "2.7.3+0"
[[deps.ExponentialUtilities]]
deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "PrecompileTools", "Printf", "SparseArrays", "libblastrampoline_jll"]
@@ -655,15 +655,15 @@ version = "0.10.14"
[[deps.FFMPEG]]
deps = ["FFMPEG_jll"]
-git-tree-sha1 = "83dc665d0312b41367b7263e8a4d172eac1897f4"
+git-tree-sha1 = "95ecf07c2eea562b5adbd0696af6db62c0f52560"
uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a"
-version = "0.4.4"
+version = "0.4.5"
[[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 = "3a948313e7a41eb1db7a1e733e6335f17b4ab3c4"
+git-tree-sha1 = "ccc81ba5e42497f4e76553a5545665eed577a663"
uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5"
-version = "7.1.1+0"
+version = "8.0.0+0"
[[deps.FastBroadcast]]
deps = ["ArrayInterface", "LinearAlgebra", "Polyester", "Static", "StaticArrayInterface", "StrideArraysCore"]
@@ -678,14 +678,14 @@ version = "0.3.2"
[[deps.FastGaussQuadrature]]
deps = ["LinearAlgebra", "SpecialFunctions", "StaticArrays"]
-git-tree-sha1 = "fd923962364b645f3719855c88f7074413a6ad92"
+git-tree-sha1 = "0044e9f5e49a57e88205e8f30ab73928b05fe5b6"
uuid = "442a2c76-b920-505d-bb47-c5924d526838"
-version = "1.0.2"
+version = "1.1.0"
[[deps.FastPower]]
-git-tree-sha1 = "5f7afd4b1a3969dc34d692da2ed856047325b06e"
+git-tree-sha1 = "e47c70bf430175e077d1955d7f04923504acc74c"
uuid = "a4df4552-cc26-4903-aec0-212e50a0e84b"
-version = "1.1.3"
+version = "1.2.0"
[deps.FastPower.extensions]
FastPowerEnzymeExt = "Enzyme"
@@ -707,9 +707,9 @@ version = "1.1.3"
[[deps.FileIO]]
deps = ["Pkg", "Requires", "UUIDs"]
-git-tree-sha1 = "b66970a70db13f45b7e57fbda1736e1cf72174ea"
+git-tree-sha1 = "d60eb76f37d7e5a40cc2e7c36974d864b82dc802"
uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
-version = "1.17.0"
+version = "1.17.1"
weakdeps = ["HTTP"]
[deps.FileIO.extensions]
@@ -737,9 +737,9 @@ version = "1.14.0"
[[deps.FiniteDiff]]
deps = ["ArrayInterface", "LinearAlgebra", "Setfield"]
-git-tree-sha1 = "31fd32af86234b6b71add76229d53129aa1b87a9"
+git-tree-sha1 = "9340ca07ca27093ff68418b7558ca37b05f8aeb1"
uuid = "6a86dc24-6348-571c-b903-95158fe2bd41"
-version = "2.28.1"
+version = "2.29.0"
[deps.FiniteDiff.extensions]
FiniteDiffBandedMatricesExt = "BandedMatrices"
@@ -772,9 +772,9 @@ version = "1.3.7"
[[deps.ForwardDiff]]
deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"]
-git-tree-sha1 = "dc41303865a16274ecb8450c220021ce1e0cf05f"
+git-tree-sha1 = "ba6ce081425d0afb2bedd00d9884464f764a9225"
uuid = "f6369f11-7733-5829-9624-2563aa707210"
-version = "1.2.1"
+version = "1.2.2"
weakdeps = ["StaticArrays"]
[deps.ForwardDiff.extensions]
@@ -834,9 +834,9 @@ version = "0.73.17+0"
[[deps.GenericSchur]]
deps = ["LinearAlgebra", "Printf"]
-git-tree-sha1 = "f88e0ba1f6b42121a7c1dfe93a9687d8e164c91b"
+git-tree-sha1 = "a694e2a57394e409f7a11ee0977362a9fafcb8c7"
uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e"
-version = "0.5.5"
+version = "0.5.6"
[[deps.GettextRuntime_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll"]
@@ -864,9 +864,9 @@ version = "3.7.0+0"
[[deps.Git_jll]]
deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"]
-git-tree-sha1 = "e2aef26f7d273f1e5b1daba56837c47b49b4388f"
+git-tree-sha1 = "96fbb1a5c700942301cf65d8546690dd3b2a6a79"
uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb"
-version = "2.51.1+0"
+version = "2.51.2+0"
[[deps.Glib_jll]]
deps = ["Artifacts", "GettextRuntime_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"]
@@ -899,9 +899,9 @@ version = "4.0.4+0"
[[deps.HTTP]]
deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"]
-git-tree-sha1 = "ed5e9c58612c4e081aecdb6e1a479e18462e041e"
+git-tree-sha1 = "5e6fe50ae7f23d171f44e311c2960294aaa0beb5"
uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3"
-version = "1.10.17"
+version = "1.10.19"
[[deps.HarfBuzz_jll]]
deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"]
@@ -986,9 +986,9 @@ version = "1.3.1"
[[deps.Ipopt]]
deps = ["Ipopt_jll", "LinearAlgebra", "OpenBLAS32_jll", "PrecompileTools"]
-git-tree-sha1 = "ef90a75a3ee8c2b170f6c177d4d003348dd30f67"
+git-tree-sha1 = "84be69cbb8229dd4ac8776f37d4cfd0a16a44482"
uuid = "b6b21f68-93f8-5de0-b562-5493be1d77c9"
-version = "1.11.0"
+version = "1.12.1"
[deps.Ipopt.extensions]
IpoptMathOptInterfaceExt = "MathOptInterface"
@@ -1003,9 +1003,9 @@ uuid = "9cc047cb-c261-5740-88fc-0cf96f7bdcc7"
version = "300.1400.1900+0"
[[deps.IrrationalConstants]]
-git-tree-sha1 = "e2222959fbc6c19554dc15174c81bf7bf3aa691c"
+git-tree-sha1 = "b2d91fe939cae05960e760110b328288867b5758"
uuid = "92d709cd-6900-40b7-9082-c6be49f344b6"
-version = "0.2.4"
+version = "0.2.6"
[[deps.IteratorInterfaceExtensions]]
git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856"
@@ -1064,11 +1064,16 @@ git-tree-sha1 = "4255f0032eafd6451d707a51d5f0248b8a165e4d"
uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8"
version = "3.1.3+0"
+[[deps.JuliaSyntaxHighlighting]]
+deps = ["StyledStrings"]
+uuid = "ac6e5ff7-fb65-4e79-a425-ec3bc9c03011"
+version = "1.12.0"
+
[[deps.KNITRO]]
deps = ["KNITRO_jll", "Libdl"]
-git-tree-sha1 = "c909d83df7210d35fc9e18085752ab227eb1f130"
+git-tree-sha1 = "37e774dc3e94ef238991addb4a6308b0f685d69c"
uuid = "67920dd8-b58e-52a8-8622-53c4cffbe346"
-version = "0.14.9"
+version = "0.14.10"
[deps.KNITRO.extensions]
KNITROMathOptInterfaceExt = ["MathOptInterface"]
@@ -1154,9 +1159,9 @@ version = "1.3.0"
[[deps.LazyArrays]]
deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "MacroTools", "SparseArrays"]
-git-tree-sha1 = "21057b6f4f5db1475e653735fda7d1de1c267b46"
+git-tree-sha1 = "79ee64f6ba0a5a49930f51c86f60d7526b5e12c8"
uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02"
-version = "2.6.3"
+version = "2.8.0"
[deps.LazyArrays.extensions]
LazyArraysBandedMatricesExt = "BandedMatrices"
@@ -1181,24 +1186,24 @@ uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
version = "0.6.4"
[[deps.LibCURL_jll]]
-deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"]
+deps = ["Artifacts", "LibSSH2_jll", "Libdl", "OpenSSL_jll", "Zlib_jll", "nghttp2_jll"]
uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
-version = "8.6.0+0"
+version = "8.11.1+1"
[[deps.LibGit2]]
-deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"]
+deps = ["LibGit2_jll", "NetworkOptions", "Printf", "SHA"]
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
version = "1.11.0"
[[deps.LibGit2_jll]]
-deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"]
+deps = ["Artifacts", "LibSSH2_jll", "Libdl", "OpenSSL_jll"]
uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5"
-version = "1.7.2+0"
+version = "1.9.0+0"
[[deps.LibSSH2_jll]]
-deps = ["Artifacts", "Libdl", "MbedTLS_jll"]
+deps = ["Artifacts", "Libdl", "OpenSSL_jll"]
uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
-version = "1.11.0+1"
+version = "1.11.3+1"
[[deps.Libdl]]
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
@@ -1259,7 +1264,7 @@ version = "7.4.0"
[[deps.LinearAlgebra]]
deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"]
uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
-version = "1.11.0"
+version = "1.12.0"
[[deps.LinearOperators]]
deps = ["FastClosures", "LinearAlgebra", "Printf", "Requires", "SparseArrays", "TimerOutputs"]
@@ -1284,10 +1289,10 @@ version = "2.11.0"
Metal = "dde4c033-4e86-420c-a63e-0dd931031962"
[[deps.LinearSolve]]
-deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "GPUArraysCore", "InteractiveUtils", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "OpenBLAS_jll", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "StaticArraysCore", "UnPack"]
-git-tree-sha1 = "e479c96c20e3fe6067d7ee6618839236d156f060"
+deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "GPUArraysCore", "InteractiveUtils", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "OpenBLAS_jll", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLLogging", "SciMLOperators", "Setfield", "StaticArraysCore", "UnPack"]
+git-tree-sha1 = "b5def83652705bdc00035dff671039e707588a00"
uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae"
-version = "3.40.1"
+version = "3.46.1"
[deps.LinearSolve.extensions]
LinearSolveAMDGPUExt = "AMDGPU"
@@ -1307,6 +1312,7 @@ version = "3.40.1"
LinearSolveKernelAbstractionsExt = "KernelAbstractions"
LinearSolveKrylovKitExt = "KrylovKit"
LinearSolveMetalExt = "Metal"
+ LinearSolveMooncakeExt = "Mooncake"
LinearSolvePardisoExt = ["Pardiso", "SparseArrays"]
LinearSolveRecursiveFactorizationExt = "RecursiveFactorization"
LinearSolveSparseArraysExt = "SparseArrays"
@@ -1330,6 +1336,7 @@ version = "3.40.1"
KrylovKit = "0b1a1467-8014-51b9-945f-bf0ae24f4b77"
LAPACK_jll = "51474c39-65e3-53ba-86ba-03b1b862ec14"
Metal = "dde4c033-4e86-420c-a63e-0dd931031962"
+ Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6"
Pardiso = "46dd5b70-b6fb-5a00-ae2d-e8fea33afaf2"
RecursiveFactorization = "f2c3362d-daeb-58d1-803e-2bc74f2840b4"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
@@ -1358,9 +1365,9 @@ version = "1.11.0"
[[deps.LoggingExtras]]
deps = ["Dates", "Logging"]
-git-tree-sha1 = "f02b56007b064fbfddb4c9cd60161b6dd0f40df3"
+git-tree-sha1 = "f00544d95982ea270145636c181ceda21c4e2575"
uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36"
-version = "1.1.0"
+version = "1.2.0"
[[deps.METIS_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
@@ -1426,7 +1433,7 @@ uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667"
version = "0.1.8"
[[deps.Markdown]]
-deps = ["Base64"]
+deps = ["Base64", "JuliaSyntaxHighlighting", "StyledStrings"]
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
version = "1.11.0"
@@ -1453,9 +1460,10 @@ uuid = "739be429-bea8-5141-9913-cc70e7f3736d"
version = "1.1.9"
[[deps.MbedTLS_jll]]
-deps = ["Artifacts", "Libdl"]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "3cce3511ca2c6f87b19c34ffc623417ed2798cbd"
uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
-version = "2.28.6+0"
+version = "2.28.10+0"
[[deps.Measures]]
git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102"
@@ -1480,7 +1488,7 @@ version = "0.3.7"
[[deps.MozillaCACerts_jll]]
uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
-version = "2023.12.12"
+version = "2025.5.20"
[[deps.MuladdMacro]]
git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab"
@@ -1525,13 +1533,13 @@ version = "1.1.3"
[[deps.NetworkOptions]]
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
-version = "1.2.0"
+version = "1.3.0"
[[deps.NonlinearSolve]]
deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "NonlinearSolveBase", "NonlinearSolveFirstOrder", "NonlinearSolveQuasiNewton", "NonlinearSolveSpectralMethods", "PrecompileTools", "Preferences", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "StaticArraysCore", "SymbolicIndexingInterface"]
-git-tree-sha1 = "627967f6e36aac9f5afb2fb285e33b676a6892f9"
+git-tree-sha1 = "1d091cfece012662b06d25c792b3a43a0804c47b"
uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec"
-version = "4.11.0"
+version = "4.12.0"
[deps.NonlinearSolve.extensions]
NonlinearSolveFastLevenbergMarquardtExt = "FastLevenbergMarquardt"
@@ -1562,9 +1570,9 @@ version = "4.11.0"
[[deps.NonlinearSolveBase]]
deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLOperators", "SciMLStructures", "Setfield", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"]
-git-tree-sha1 = "f05e5f3d0f280598ecdc26b06ec9acd71dcaef31"
+git-tree-sha1 = "9dba8e7ccfaf4c10b3a3b4cc52abf639f8558efd"
uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0"
-version = "1.16.1"
+version = "2.0.0"
[deps.NonlinearSolveBase.extensions]
NonlinearSolveBaseBandedMatricesExt = "BandedMatrices"
@@ -1594,15 +1602,15 @@ version = "1.16.1"
[[deps.NonlinearSolveFirstOrder]]
deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConcreteStructs", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLJacobianOperators", "Setfield", "StaticArraysCore"]
-git-tree-sha1 = "b9702235120d1161f8041b326eccebd334340de2"
+git-tree-sha1 = "01c48c37ba47721ec6489a1668ab3bb1f5b603c0"
uuid = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d"
-version = "1.8.0"
+version = "1.9.0"
[[deps.NonlinearSolveQuasiNewton]]
deps = ["ArrayInterface", "CommonSolve", "ConcreteStructs", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLOperators", "StaticArraysCore"]
-git-tree-sha1 = "4e0e34601c6c9890aa9443003180967f75c6929d"
+git-tree-sha1 = "a233b7bbb32426170b238e2e2b82b0f9f1c5caba"
uuid = "9a2c21bd-3a47-402d-9113-8faf9a0ee114"
-version = "1.9.0"
+version = "1.10.0"
weakdeps = ["ForwardDiff"]
[deps.NonlinearSolveQuasiNewton.extensions]
@@ -1610,9 +1618,9 @@ weakdeps = ["ForwardDiff"]
[[deps.NonlinearSolveSpectralMethods]]
deps = ["CommonSolve", "ConcreteStructs", "LineSearch", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"]
-git-tree-sha1 = "6c613302febe2bb408a888105d07073cf6824911"
+git-tree-sha1 = "139bf9211930a829703481b3ffd86b1ab309cd07"
uuid = "26075421-4e9a-44e1-8bd1-420ed7ad02b2"
-version = "1.4.0"
+version = "1.5.0"
weakdeps = ["ForwardDiff"]
[deps.NonlinearSolveSpectralMethods.extensions]
@@ -1642,18 +1650,18 @@ version = "0.3.29+0"
[[deps.OpenBLAS_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
-version = "0.3.27+1"
+version = "0.3.29+0"
[[deps.OpenLibm_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
-version = "0.8.5+0"
+version = "0.8.7+0"
[[deps.OpenSSH_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "OpenSSL_jll", "Zlib_jll"]
-git-tree-sha1 = "1f2f0911e1c02f28a390bb720f97f3349c4dcefb"
+git-tree-sha1 = "301412a644646fdc0ad67d0a87487466b491e53d"
uuid = "9bd350c2-7e96-507f-8002-3f2e150b4e1b"
-version = "10.0.2+0"
+version = "10.2.1+0"
[[deps.OpenSSL]]
deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"]
@@ -1662,10 +1670,9 @@ uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c"
version = "1.5.0"
[[deps.OpenSSL_jll]]
-deps = ["Artifacts", "JLLWrappers", "Libdl"]
-git-tree-sha1 = "2ae7d4ddec2e13ad3bddf5c0796f7547cf682391"
+deps = ["Artifacts", "Libdl"]
uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
-version = "3.5.2+0"
+version = "3.5.1+0"
[[deps.OpenSpecFun_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"]
@@ -1677,7 +1684,7 @@ version = "0.5.6+0"
deps = ["ADNLPModels", "CTBase", "CTDirect", "CTFlows", "CTModels", "CTParser", "CommonSolve", "DocStringExtensions", "ExaModels", "RecipesBase"]
path = "/Users/ocots/Research/logiciels/dev/control-toolbox/OptimalControl"
uuid = "5f98b655-cc9a-415a-b60e-744165666948"
-version = "1.1.4"
+version = "1.1.5"
[[deps.Opus_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
@@ -1692,9 +1699,9 @@ version = "1.8.1"
[[deps.OrdinaryDiffEq]]
deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FillArrays", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "InteractiveUtils", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "MacroTools", "MuladdMacro", "NonlinearSolve", "OrdinaryDiffEqAdamsBashforthMoulton", "OrdinaryDiffEqBDF", "OrdinaryDiffEqCore", "OrdinaryDiffEqDefault", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqExplicitRK", "OrdinaryDiffEqExponentialRK", "OrdinaryDiffEqExtrapolation", "OrdinaryDiffEqFIRK", "OrdinaryDiffEqFeagin", "OrdinaryDiffEqFunctionMap", "OrdinaryDiffEqHighOrderRK", "OrdinaryDiffEqIMEXMultistep", "OrdinaryDiffEqLinear", "OrdinaryDiffEqLowOrderRK", "OrdinaryDiffEqLowStorageRK", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqNordsieck", "OrdinaryDiffEqPDIRK", "OrdinaryDiffEqPRK", "OrdinaryDiffEqQPRK", "OrdinaryDiffEqRKN", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqSDIRK", "OrdinaryDiffEqSSPRK", "OrdinaryDiffEqStabilizedIRK", "OrdinaryDiffEqStabilizedRK", "OrdinaryDiffEqSymplecticRK", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "Polyester", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleNonlinearSolve", "SimpleUnPack", "SparseArrays", "Static", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"]
-git-tree-sha1 = "89cd4e81d7a668f8858fba6779212f41a0360260"
+git-tree-sha1 = "89172157d16139165d470602f1e552484b357771"
uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
-version = "6.102.1"
+version = "6.103.0"
[[deps.OrdinaryDiffEqAdamsBashforthMoulton]]
deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqLowOrderRK", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"]
@@ -1710,9 +1717,9 @@ version = "1.10.1"
[[deps.OrdinaryDiffEqCore]]
deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "FastBroadcast", "FastClosures", "FastPower", "FillArrays", "FunctionWrappersWrappers", "InteractiveUtils", "LinearAlgebra", "Logging", "MacroTools", "MuladdMacro", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleUnPack", "Static", "StaticArrayInterface", "StaticArraysCore", "SymbolicIndexingInterface", "TruncatedStacktraces"]
-git-tree-sha1 = "688c717e8eee84dcfef02ddf71c8028215b329ca"
+git-tree-sha1 = "4b68f9ca0cfa68cb9ee544df96391d47ca0e62a9"
uuid = "bbf590c4-e513-4bbe-9b18-05decba2e5d8"
-version = "1.34.0"
+version = "1.36.0"
[deps.OrdinaryDiffEqCore.extensions]
OrdinaryDiffEqCoreEnzymeCoreExt = "EnzymeCore"
@@ -1806,9 +1813,9 @@ version = "1.7.0"
[[deps.OrdinaryDiffEqNonlinearSolve]]
deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "FastClosures", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MuladdMacro", "NonlinearSolve", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "PreallocationTools", "RecursiveArrayTools", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleNonlinearSolve", "StaticArrays"]
-git-tree-sha1 = "b05226afc8fa6b8fc6f2258a89987b4f5bd0db4e"
+git-tree-sha1 = "f59c1c07cfa674c1d3f5dd386c4274d9bc2be221"
uuid = "127b3ac7-2247-4354-8eb6-78cf4e7c58e8"
-version = "1.14.1"
+version = "1.15.0"
[[deps.OrdinaryDiffEqNordsieck]]
deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqTsit5", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"]
@@ -1891,7 +1898,7 @@ version = "1.6.0"
[[deps.PCRE2_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15"
-version = "10.42.0+1"
+version = "10.44.0+1"
[[deps.Pango_jll]]
deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"]
@@ -1920,7 +1927,7 @@ version = "0.44.2+0"
[[deps.Pkg]]
deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"]
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
-version = "1.11.0"
+version = "1.12.0"
weakdeps = ["REPL"]
[deps.Pkg.extensions]
@@ -1990,9 +1997,9 @@ weakdeps = ["ForwardDiff", "ReverseDiff", "SparseConnectivityTracer"]
[[deps.PrecompileTools]]
deps = ["Preferences"]
-git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f"
+git-tree-sha1 = "07a921781cab75691315adc645096ed5e370cb77"
uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
-version = "1.2.1"
+version = "1.3.3"
[[deps.Preferences]]
deps = ["TOML"]
@@ -2001,10 +2008,10 @@ uuid = "21216c6a-2e73-6563-6e65-726566657250"
version = "1.5.0"
[[deps.PrettyTables]]
-deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"]
-git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34"
+deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "REPL", "Reexport", "StringManipulation", "Tables"]
+git-tree-sha1 = "6b8e2f0bae3f678811678065c09571c1619da219"
uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d"
-version = "2.4.0"
+version = "3.1.0"
[[deps.Printf]]
deps = ["Unicode"]
@@ -2018,9 +2025,9 @@ version = "1.3.0"
[[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 = "eb38d376097f47316fe089fc62cb7c6d85383a52"
+git-tree-sha1 = "34f7e5d2861083ec7596af8b8c092531facf2192"
uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56"
-version = "6.8.2+1"
+version = "6.8.2+2"
[[deps.Qt6Declarative_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6ShaderTools_jll"]
@@ -2036,9 +2043,9 @@ version = "6.8.2+1"
[[deps.Qt6Wayland_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6Declarative_jll"]
-git-tree-sha1 = "e1d5e16d0f65762396f9ca4644a5f4ddab8d452b"
+git-tree-sha1 = "8f528b0851b5b7025032818eb5abbeb8a736f853"
uuid = "e99dba38-086e-5de3-a5b1-6e4c66e897c3"
-version = "6.8.2+1"
+version = "6.8.2+2"
[[deps.Quadmath]]
deps = ["Compat", "Printf", "Random", "Requires"]
@@ -2047,7 +2054,7 @@ uuid = "be4d8f0f-7fa4-5f49-b795-2f01399ab2dd"
version = "0.5.13"
[[deps.REPL]]
-deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"]
+deps = ["InteractiveUtils", "JuliaSyntaxHighlighting", "Markdown", "Sockets", "StyledStrings", "Unicode"]
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
version = "1.11.0"
@@ -2080,9 +2087,9 @@ version = "0.6.12"
[[deps.RecursiveArrayTools]]
deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"]
-git-tree-sha1 = "96bef5b9ac123fff1b379acf0303cf914aaabdfd"
+git-tree-sha1 = "51bdb23afaaa551f923a0e990f7c44a4451a26f1"
uuid = "731186ca-8d62-57ce-b412-fbd966d074cd"
-version = "3.37.1"
+version = "3.39.0"
[deps.RecursiveArrayTools.extensions]
RecursiveArrayToolsFastBroadcastExt = "FastBroadcast"
@@ -2161,13 +2168,14 @@ uuid = "319450e9-13b8-58e8-aa9f-8fd1420848ab"
version = "2025.5.20+0"
[[deps.SciMLBase]]
-deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PreallocationTools", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"]
-git-tree-sha1 = "16fa030fb4bd4df373a677eca0460c3eee791ab2"
+deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PreallocationTools", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLLogging", "SciMLOperators", "SciMLPublic", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"]
+git-tree-sha1 = "7614a1b881317b6800a8c66eb1180c6ea5b986f3"
uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
-version = "2.120.0"
+version = "2.124.0"
[deps.SciMLBase.extensions]
SciMLBaseChainRulesCoreExt = "ChainRulesCore"
+ SciMLBaseDifferentiationInterfaceExt = "DifferentiationInterface"
SciMLBaseDistributionsExt = "Distributions"
SciMLBaseEnzymeExt = "Enzyme"
SciMLBaseForwardDiffExt = "ForwardDiff"
@@ -2187,6 +2195,7 @@ version = "2.120.0"
[deps.SciMLBase.weakdeps]
ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2"
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
+ DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63"
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
@@ -2209,11 +2218,17 @@ git-tree-sha1 = "a273b291c90909ba6fe08402dd68e09aae423008"
uuid = "19f34311-ddf3-4b8b-af20-060888a46c0e"
version = "0.1.11"
+[[deps.SciMLLogging]]
+deps = ["Logging", "LoggingExtras", "Preferences"]
+git-tree-sha1 = "5a026f5549ad167cda34c67b62f8d3dc55754da3"
+uuid = "a6db7da4-7206-11f0-1eab-35f2a5dbe1d1"
+version = "1.3.1"
+
[[deps.SciMLOperators]]
deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"]
-git-tree-sha1 = "024d829102878141aaee5cf8f8288bcabd2f57a0"
+git-tree-sha1 = "c1053ba68ede9e4005fc925dd4e8723fcd96eef8"
uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961"
-version = "1.7.2"
+version = "1.9.0"
weakdeps = ["SparseArrays", "StaticArraysCore"]
[deps.SciMLOperators.extensions]
@@ -2277,9 +2292,9 @@ version = "1.2.0"
[[deps.SimpleNonlinearSolve]]
deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "Setfield", "StaticArraysCore"]
-git-tree-sha1 = "782c67176b473abf62a6786399c4b7ddcc1a2d77"
+git-tree-sha1 = "8825064775bf4ae0f22d04ea63979d8c868fd510"
uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7"
-version = "2.8.0"
+version = "2.9.0"
[deps.SimpleNonlinearSolve.extensions]
SimpleNonlinearSolveChainRulesCoreExt = "ChainRulesCore"
@@ -2315,13 +2330,13 @@ version = "1.2.2"
[[deps.SparseArrays]]
deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"]
uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
-version = "1.11.0"
+version = "1.12.0"
[[deps.SparseConnectivityTracer]]
deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"]
-git-tree-sha1 = "3c3a42a29f696f16273741ffe589b4003f539088"
+git-tree-sha1 = "ba6dc9b87304964647bd1c750b903cb360003a36"
uuid = "9f842d2f-2579-4b1d-911e-f412cf18a3f5"
-version = "1.1.0"
+version = "1.1.2"
[deps.SparseConnectivityTracer.extensions]
SparseConnectivityTracerChainRulesCoreExt = "ChainRulesCore"
@@ -2339,9 +2354,9 @@ version = "1.1.0"
[[deps.SparseMatrixColorings]]
deps = ["ADTypes", "DocStringExtensions", "LinearAlgebra", "PrecompileTools", "Random", "SparseArrays"]
-git-tree-sha1 = "9de43e0b9b976f1019bf7a879a686c4514520078"
+git-tree-sha1 = "d3f3b7bb8a561b5ff20ee7cf9574841ee4e4e137"
uuid = "0a514795-09f3-496d-8182-132a7b665d35"
-version = "0.4.21"
+version = "0.4.22"
[deps.SparseMatrixColorings.extensions]
SparseMatrixColoringsCUDAExt = "CUDA"
@@ -2355,9 +2370,9 @@ version = "0.4.21"
[[deps.SpecialFunctions]]
deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"]
-git-tree-sha1 = "41852b8679f78c8d8961eeadc8f62cef861a52e3"
+git-tree-sha1 = "f2685b435df2613e25fc10ad8c26dddb8640f547"
uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
-version = "2.5.1"
+version = "2.6.1"
weakdeps = ["ChainRulesCore"]
[deps.SpecialFunctions.extensions]
@@ -2371,9 +2386,9 @@ version = "1.0.3"
[[deps.Static]]
deps = ["CommonWorldInvalidations", "IfElse", "PrecompileTools", "SciMLPublic"]
-git-tree-sha1 = "1e44e7b1dbb5249876d84c32466f8988a6b41bbb"
+git-tree-sha1 = "49440414711eddc7227724ae6e570c7d5559a086"
uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3"
-version = "1.3.0"
+version = "1.3.1"
[[deps.StaticArrayInterface]]
deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Static"]
@@ -2398,9 +2413,9 @@ weakdeps = ["ChainRulesCore", "Statistics"]
StaticArraysStatisticsExt = "Statistics"
[[deps.StaticArraysCore]]
-git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682"
+git-tree-sha1 = "6ab403037779dae8c514bad259f32a447262455a"
uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
-version = "1.4.3"
+version = "1.4.4"
[[deps.Statistics]]
deps = ["LinearAlgebra"]
@@ -2420,9 +2435,9 @@ version = "1.7.1"
[[deps.StatsBase]]
deps = ["AliasTables", "DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"]
-git-tree-sha1 = "2c962245732371acd51700dbb268af311bddd719"
+git-tree-sha1 = "a136f98cefaf3e2924a66bd75173d1c891ab7453"
uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
-version = "0.34.6"
+version = "0.34.7"
[[deps.StrideArraysCore]]
deps = ["ArrayInterface", "CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface", "ThreadingUtilities"]
@@ -2453,7 +2468,7 @@ uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9"
[[deps.SuiteSparse_jll]]
deps = ["Artifacts", "Libdl", "libblastrampoline_jll"]
uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c"
-version = "7.7.0+0"
+version = "7.8.3+2"
[[deps.Suppressor]]
deps = ["Logging"]
@@ -2463,9 +2478,9 @@ version = "0.2.8"
[[deps.SymbolicIndexingInterface]]
deps = ["Accessors", "ArrayInterface", "RuntimeGeneratedFunctions", "StaticArraysCore"]
-git-tree-sha1 = "b19cf024a2b11d72bef7c74ac3d1cbe86ec9e4ed"
+git-tree-sha1 = "94c58884e013efff548002e8dc2fdd1cb74dfce5"
uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5"
-version = "0.3.44"
+version = "0.3.46"
weakdeps = ["PrettyTables"]
[deps.SymbolicIndexingInterface.extensions]
@@ -2583,9 +2598,9 @@ version = "1.0.0"
[[deps.XML2_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"]
-git-tree-sha1 = "59071150afa35787c1656ba234cf03fdf8e2603f"
+git-tree-sha1 = "80d3930c6347cfce7ccf96bd3bafdf079d9c0390"
uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a"
-version = "2.13.8+0"
+version = "2.13.9+0"
[[deps.XZ_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
@@ -2637,9 +2652,9 @@ version = "1.3.7+0"
[[deps.Xorg_libXfixes_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"]
-git-tree-sha1 = "9caba99d38404b285db8801d5c45ef4f4f425a6d"
+git-tree-sha1 = "75e00946e43621e09d431d9b95818ee751e6b2ef"
uuid = "d091e8ba-531a-589c-9de9-94069b037ed8"
-version = "6.0.1+0"
+version = "6.0.2+0"
[[deps.Xorg_libXi_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll", "Xorg_libXfixes_jll"]
@@ -2685,9 +2700,9 @@ version = "1.1.3+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 = "c5bf2dad6a03dfef57ea0a170a1fe493601603f2"
+git-tree-sha1 = "9750dc53819eba4e9a20be42349a6d3b86c7cdf8"
uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43"
-version = "0.1.5+0"
+version = "0.1.6+0"
[[deps.Xorg_xcb_util_image_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_jll"]
@@ -2740,7 +2755,7 @@ version = "1.6.0+0"
[[deps.Zlib_jll]]
deps = ["Libdl"]
uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
-version = "1.2.13+1"
+version = "1.3.1+2"
[[deps.Zstd_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
@@ -2768,9 +2783,9 @@ version = "0.61.1+0"
[[deps.libaom_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
-git-tree-sha1 = "4bba74fa59ab0755167ad24f98800fe5d727175b"
+git-tree-sha1 = "371cc681c00a3ccc3fbc5c0fb91f58ba9bec1ecf"
uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b"
-version = "3.12.1+0"
+version = "3.13.1+0"
[[deps.libass_jll]]
deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
@@ -2781,7 +2796,7 @@ version = "0.17.4+0"
[[deps.libblastrampoline_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
-version = "5.11.0+0"
+version = "5.15.0+0"
[[deps.libdecor_jll]]
deps = ["Artifacts", "Dbus_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pango_jll", "Wayland_jll", "xkbcommon_jll"]
@@ -2828,18 +2843,18 @@ version = "1.1.7+0"
[[deps.nghttp2_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
-version = "1.59.0+0"
+version = "1.64.0+1"
[[deps.oneTBB_jll]]
deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"]
-git-tree-sha1 = "d5a767a3bb77135a99e433afe0eb14cd7f6914c3"
+git-tree-sha1 = "1350188a69a6e46f799d3945beef36435ed7262f"
uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e"
-version = "2022.0.0+0"
+version = "2022.0.0+1"
[[deps.p7zip_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
-version = "17.4.0+2"
+version = "17.5.0+2"
[[deps.x264_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
diff --git a/docs/src/assets/ct-qr-code.svg b/docs/src/assets/ct-qr-code.svg
new file mode 100644
index 00000000..bc23628b
--- /dev/null
+++ b/docs/src/assets/ct-qr-code.svg
@@ -0,0 +1,1606 @@
+
+
+
\ No newline at end of file
diff --git a/docs/src/assets/rdnopa-2025.jpg b/docs/src/assets/rdnopa-2025.jpg
new file mode 100644
index 00000000..17e92ed4
Binary files /dev/null and b/docs/src/assets/rdnopa-2025.jpg differ
diff --git a/docs/src/assets/rocket-def.jpg b/docs/src/assets/rocket-def.jpg
new file mode 100644
index 00000000..a4522891
Binary files /dev/null and b/docs/src/assets/rocket-def.jpg differ
diff --git a/docs/src/assets/rocket-def.pdf b/docs/src/assets/rocket-def.pdf
new file mode 100644
index 00000000..f711aeea
Binary files /dev/null and b/docs/src/assets/rocket-def.pdf differ
diff --git a/docs/src/assets/rocket-def.png b/docs/src/assets/rocket-def.png
new file mode 100644
index 00000000..90ffd8ac
Binary files /dev/null and b/docs/src/assets/rocket-def.png differ
diff --git a/docs/src/assets/rocket-def.svg b/docs/src/assets/rocket-def.svg
new file mode 100644
index 00000000..c8137069
--- /dev/null
+++ b/docs/src/assets/rocket-def.svg
@@ -0,0 +1,517 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+M
+
+a
+
+t
+
+h
+
+e
+
+m
+
+a
+
+ti
+
+c
+
+a
+
+l
+
+
+f
+
+o
+
+r
+
+m
+
+u
+
+l
+
+a
+
+ti
+
+o
+
+n
+
+The problem can be stated as
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+P
+
+a
+
+r
+
+a
+
+m
+
+e
+
+t
+
+e
+
+r
+
+s
+
+
+
+
+P
+
+a
+
+r
+
+a
+
+m
+
+e
+
+t
+
+e
+
+r
+
+S
+
+y
+
+m
+
+b
+
+o
+
+l
+
+V
+
+a
+
+l
+
+u
+
+e
+Initial altitude
+1
+Initial velocity
+0
+Initial mass
+1
+Gravitational constant
+1
+Thrust coe
+ffi
+cient
+3.5
+Drag coe
+ffi
+cient
+Characteristic altitude
+500
+Characteristic velocity
+620
+Characteristic mass ratio
+0.6
+Final mass
+
+
+where the Drag, Gravity, Fuel constant, and Maximum thrust are de
+fi
+ned as
+
+
+
+
+
+h
+,
+v
+,
+m
+,
+T
+m
+i
+n
+s.t.
+(
+t
+)
+h
+˙
+(
+t
+)
+v
+˙
+(
+t
+)
+m
+˙
+0
+≤
+T
+(
+t
+)
+h
+(
+t
+)
+v
+(
+t
+)
+m
+
+≤
+m
+(
+t
+)
+f
+h
+(
+0
+)
+m
+(
+T
+)
+J
+=
+−
+h
+(
+T
+)
+=
+v
+(
+t
+)
+,
+=
+
+,
+m
+(
+t
+)
+
+T
+(
+t
+)
+−
+D
+(
+h
+(
+t
+)
+,
+v
+(
+t
+))
+−
+m
+(
+t
+)
+g
+(
+h
+(
+t
+))
+=
+−
+
+,
+c
+
+T
+(
+t
+)
+≤
+T
+
+,
+m
+a
+x
+≥
+h
+
+,
+0
+≥
+v
+
+,
+0
+≤
+m
+
+,
+0
+=
+h
+
+,
+v
+(
+0
+)
+=
+v
+
+,
+m
+(
+0
+)
+=
+m
+
+,
+0
+0
+0
+=
+m
+
+,
+f
+
+
+h
+
+0
+v
+
+0
+m
+
+0
+g
+
+0
+T
+
+c
+D
+
+c
+
+v
+
+
+2
+
+1
+c
+g
+
+0
+
+m
+
+0
+h
+
+c
+v
+
+c
+m
+
+c
+m
+
+f
+m
+
+m
+
+c
+0
+
+
+D
+(
+h
+,
+v
+)
+=
+D
+
+v
+e
+x
+p
+−
+h
+
+,
+g
+(
+h
+)
+=
+c
+2
+(
+c
+h
+
+0
+
+h
+−
+h
+0
+)
+g
+
+
+,
+c
+=
+0
+(
+h
+
+h
+
+0
+)
+2
+
+
+,
+T
+
+=
+2
+
+1
+g
+
+h
+
+0
+0
+
+
+
+
+
+m
+a
+x
+T
+
+m
+
+g
+
+.
+c
+0
+0
+
+
+
diff --git a/docs/src/example-double-integrator-time.md b/docs/src/example-double-integrator-time.md
index 77faee83..984fd081 100644
--- a/docs/src/example-double-integrator-time.md
+++ b/docs/src/example-double-integrator-time.md
@@ -9,7 +9,7 @@ The problem consists in minimising the final time $t_f$ for the double integrato
and the limit conditions
```math
- x(0) = (1,2), \quad x(t_f) = (0,0).
+ x(0) = (-1,0), \quad x(t_f) = (0,0).
```
This problem can be interpreted as a simple model for a wagon with constant mass moving along a line without friction.
diff --git a/docs/src/manual-abstract.md b/docs/src/manual-abstract.md
index ffa2b326..80ce45e9 100644
--- a/docs/src/manual-abstract.md
+++ b/docs/src/manual-abstract.md
@@ -23,7 +23,7 @@ end
```
!!! warning
- Note that the full code of the definition above is not provided (hence the `...`) The same is true for most examples below (only those without `...` are indeed complete). Also note that problem definitions must at least include definitions for time, state, control, and dynamics.
+ Note that the full code of the definition above is not provided (hence the `...`) The same is true for most examples below (only those without `...` are indeed complete). Also note that problem definitions must at least include definitions for time, state, control, dynamics and cost.
Aliases `v₁`, `v₂` (and `v1`, `v2`) are automatically defined and can be used in subsequent expressions instead of `v[1]` and `v[2]`. The user can also define her own aliases for the components (one alias per dimension):
@@ -44,6 +44,9 @@ A one dimensional variable can be declared according to
end
```
+!!! warning
+ Aliases during definition of variable, state or control are only allowed for multidimensional (dimension two or more) cases. Something like `u = T ∈ R, control` is not allowed... and useless (directly write `T ∈ R, control`).
+
## Time
```julia
@@ -496,7 +499,7 @@ end
```
!!! warning
- Such aliases do *not* define any additional function and are just replaced textually by the parser. In particular, they cannot be used outside the `@def` `begin ... end` block.
+ Such aliases do *not* define any additional function and are just replaced textually by the parser. In particular, they cannot be used outside the `@def` `begin ... end` block. Conversely, constants and functions used within the `@def` block must be defined outside and before this block.
!!! hint
You can rely on a trace mode for the macro `@def` to look at your code after expansions of the aliases using the `@def ocp ...` syntax and adding `true` after your `begin ... end` block:
diff --git a/docs/src/manual-ai-llm.md b/docs/src/manual-ai-llm.md
index db87ecbc..41c05511 100644
--- a/docs/src/manual-ai-llm.md
+++ b/docs/src/manual-ai-llm.md
@@ -114,3 +114,89 @@ Use a form compatible with examodels.
tf → min
end
```
+
+It is also possible to feed the model directly with math definitions (here from a snapshot), as in the [example](https://control-toolbox.org/OptimalControlProblems.jl/stable/problems/rocket.html) below:
+
+```text
+translate the problem below into OptimalControl.jl DSL:
+```
+
+```@raw html
+
+
+```
+
+This prompt generates the syntactically correct code:
+
+```julia
+# Parameters
+h₀ = 1
+v₀ = 0
+m₀ = 1
+g₀ = 1
+Tc = 3.5
+hc = 500
+vc = 620
+mc = 0.6
+
+# Derived constants
+Dc = 0.5 * vc * m₀ / g₀
+mf = mc * m₀
+c = 0.5 * sqrt(g₀ * h₀)
+Tmax = Tc * m₀ * g₀
+
+# Auxiliary functions
+D(h, v) = Dc * v^2 * exp(-hc * (h - h₀) / h₀)
+g(h) = g₀ * (h₀ / h)^2
+
+rocket = @def begin
+ # Variable (free final time)
+ tf ∈ R, variable
+
+ # Time
+ t ∈ [0, tf], time
+
+ # State: (altitude, velocity, mass)
+ x = (h, v, m) ∈ R³, state
+
+ # Control: thrust
+ T ∈ R, control
+
+ # Dynamics
+ ∂(h)(t) == v(t)
+ ∂(v)(t) == (T(t) - D(h(t), v(t)) - m(t) * g(h(t))) / m(t)
+ ∂(m)(t) == -T(t) / c
+
+ # Initial conditions
+ h(0) == h₀
+ v(0) == v₀
+ m(0) == m₀
+
+ # Final condition
+ m(tf) == mf
+
+ # State constraints
+ h(t) ≥ h₀
+ v(t) ≥ v₀
+ mf ≤ m(t) ≤ m₀
+
+ # Control constraint
+ 0 ≤ T(t) ≤ Tmax
+
+ # Variable constraint
+ tf ≥ 0
+
+ # Objective: maximize final altitude h(tf)
+ -h(tf) → min
+end
+```
\ No newline at end of file
diff --git a/docs/src/manual-solve-gpu.md b/docs/src/manual-solve-gpu.md
index 130f68f3..fc44315c 100644
--- a/docs/src/manual-solve-gpu.md
+++ b/docs/src/manual-solve-gpu.md
@@ -28,10 +28,7 @@ end
```
!!! note
- We have used MadNLPGPU instead of MadNLP, that is able to solve on GPU (leveraging [CUDSS.jl](https://github.com/exanauts/CUDSS.jl)) optimisation problems modelled with ExaModels.jl. As a direct transcription towards an `ExaModels.ExaModel` is performed, there are limitations on the syntax:
- - dynamics must be declared coordinate by coordinate (not globally as a vector valued expression)
- - nonlinear constraints (boundary, variable, control, state, mixed ones, see [Constraints](@ref manual-abstract-constraints) must also be scalar expressions (linear constraints *aka.* ranges, on the other hand, can be vectors)
- - all expressions must only involve algebraic operations that are known to ExaModels (check the [documentation](https://exanauts.github.io/ExaModels.jl/stable)), although one can provide additional user defined functions through *registration* (check [ExaModels API](https://exanauts.github.io/ExaModels.jl/stable/core/#ExaModels.@register_univariate-Tuple%7BAny,%2520Any,%2520Any%7D))
+ We have used MadNLPGPU instead of MadNLP, that is able to solve on GPU (leveraging [CUDSS.jl](https://github.com/exanauts/CUDSS.jl)) optimisation problems modelled with ExaModels.jl. As a direct transcription towards an `ExaModels.ExaModel` is performed (`:exa` keyword below), there are limitations on the syntax (check the [Solve section](@ref manual-solve-methods)).
Computation on GPU is currently only tested with CUDA, and the associated backend must be passed to ExaModels as is done below (also note the `:exa` keyword to indicate the modeller, and `:madnlp` for the solver):
diff --git a/docs/src/manual-solve.md b/docs/src/manual-solve.md
index d8d0ce21..580fb7f0 100644
--- a/docs/src/manual-solve.md
+++ b/docs/src/manual-solve.md
@@ -89,7 +89,10 @@ solve(ocp, :direct, :adnlp, :ipopt)
!!! warning
- Dynamics and nonlinear constraints must be defined coordinatewise to use ExaModels.jl (`:exa`). Check [the problem definition manual](@ref manual-abstract-dynamics-coord) for more information.
+ When using `:exa` for more performance (in particular to [solve on GPU](@ref manual-solve-gpu)), there are limitations on the syntax:
+ - dynamics must be declared coordinate by coordinate (not globally as a vector valued expression)
+ - nonlinear constraints (boundary, variable, control, state, mixed ones, see [Constraints](@ref manual-abstract-constraints) must also be scalar expressions (linear constraints *aka.* ranges, on the other hand, can be vectors)
+ - all expressions must only involve algebraic operations that are known to ExaModels (check the [documentation](https://exanauts.github.io/ExaModels.jl/stable)), although one can provide additional user defined functions through *registration* (check [ExaModels API](https://exanauts.github.io/ExaModels.jl/stable/core/#ExaModels.@register_univariate-Tuple%7BAny,%2520Any,%2520Any%7D))
!!! note
diff --git a/docs/src/rdnopa-2025.md b/docs/src/rdnopa-2025.md
new file mode 100644
index 00000000..57372938
--- /dev/null
+++ b/docs/src/rdnopa-2025.md
@@ -0,0 +1,236 @@
+```@raw html
+
+```
+
+# Numerical developments to solve optimal control problems in Julia
+
+### [Jean-Baptiste Caillau](http://caillau.perso.math.cnrs.fr), [Olivier Cots](https://ocots.github.io), [Joseph Gergaud](https://github.com/joseph-gergaud), [Pierre Martinon](https://github.com/PierreMartinon), [Sophia Sed](https://sed-sam-blog.gitlabpages.inria.fr)
+
+```@raw html
+
+```
+
+## What it's about
+
+- Nonlinear optimal control of ODEs:
+
+```math
+g(x(t_0),x(t_f)) + \int_{t_0}^{t_f} f^0(x(t), u(t))\, \mathrm{d}t \to \min
+```
+
+subject to
+
+```math
+\dot{x}(t) = f(x(t), u(t)),\quad t \in [t_0, t_f]
+```
+
+plus boundary, control and state constraints
+
+- Our core interests: numerical & geometrical methods in control, applications
+- Why Julia: fast (+ JIT), strongly typed, high-level (AD, macros), fast optimisation and ODE solvers available, rapidly growing community
+
+**What is important to solve such a problem numerically?**
+
+## Syntax matters
+
+- [Simple example](@ref example-double-integrator-time)
+- [Use LLM](@ref manual-ai-llm)
+
+```@raw html
+Do more...
+```
+
+```text
+rewrite in OptimalControl.jl DSL the free time problem below as a problem with fixed final time using:
+- a change time from t to s = t / tf
+- tf as an additional state variable subject to dtf / ds = 0
+ocp = @def begin
+ tf ∈ R, variable
+ t ∈ [0, tf], time
+ x = (q, v) ∈ R², state
+ u ∈ R, control
+ -1 ≤ u(t) ≤ 1
+ q(0) == -1
+ v(0) == 0
+ q(tf) == 0
+ v(tf) == 0
+ ẋ(t) == [v(t), u(t)]
+ tf → min
+end
+```
+
+```julia
+ocp_fixed = @def begin
+ # Fixed time domain
+ s ∈ [0, 1], time
+
+ # Augmented state: (position, velocity, final_time)
+ y = (q, v, tf) ∈ R³, state
+
+ # Control
+ u ∈ R, control
+
+ # Transformed dynamics (multiply by tf due to ds = dt/tf)
+ ∂(q)(s) == tf(s) * v(s)
+ ∂(v)(s) == tf(s) * u(s)
+ ∂(tf)(s) == 0
+
+ # Initial conditions
+ q(0) == -1
+ v(0) == 0
+ # tf(0) is free (no initial condition needed)
+
+ # Final conditions
+ q(1) == 0
+ v(1) == 0
+ # tf(1) is what we minimize
+
+ # Control constraints
+ -1 ≤ u(s) ≤ 1
+
+ # Cost: minimize final time
+ tf(1) → min
+end
+```
+
+```@raw html
+
+```
+
+## Performance matters
+
+- Discretising an OCP into an NLP: $h_i := t_{i+1}-t_i$,
+
+```math
+g(X_0,X_N) + \sum_{i=0}^{N} h_i f^0(X_i,U_i) \to \min
+```
+
+subject to
+
+```math
+X_{i+1} - X_i - h_i f(X_i, U_i) = 0,\quad i = 0,\dots,N-1
+```
+
+plus other constraints on $X := (X_i)_{i=0,N}$ and $U := (U_i)_{i=0,N}$ such as boundary and path (state and / or control) constraints :
+
+```math
+b(t_0, X_0, t_N, X_N) = 0
+```
+
+```math
+c(X_i, U_i) \leq 0,\quad i = 0,\dots,N
+```
+
+- SIMD parallelism ($f_0$, $f$, $g$) + sparsity: Kernels for GPU ([KernelAbstraction.jl](https://juliagpu.github.io/KernelAbstractions.jl/stable/)) and sparse linear algebra ([CUDSS.jl](https://github.com/exanauts/CUDSS.jl))
+- Modelling and optimising for GPU: [ExaModels.jl](https://exanauts.github.io/ExaModels.jl/dev/guide) + [MadNLP.jl](https://madnlp.github.io/MadNLP.jl), with **built-in AD**
+- Compile into an ExaModel (one pass compiler, [syntax + semantics](https://github.com/control-toolbox/CTParser.jl/blob/20c6be5c953587fef10b054a95f9dc8c66b90577/src/onepass.jl#L145))
+
+
+```@raw html
+Solving (MadNLP + CUDSS)
+```
+
+```julia
+This is MadNLP version v0.8.7, running with cuDSS v0.4.0
+
+Number of nonzeros in constraint Jacobian............: 12005
+Number of nonzeros in Lagrangian Hessian.............: 9000
+
+Total number of variables............................: 4004
+ variables with only lower bounds: 0
+ variables with lower and upper bounds: 0
+ variables with only upper bounds: 0
+Total number of equality constraints.................: 3005
+Total number of inequality constraints...............: 0
+ inequality constraints with only lower bounds: 0
+ inequality constraints with lower and upper bounds: 0
+ inequality constraints with only upper bounds: 0
+
+iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls
+ 0 1.0000000e-01 1.10e+00 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0
+ 1 1.0001760e-01 1.10e+00 3.84e-03 -1.0 6.88e+02 -4.0 1.00e+00 2.00e-07h 2
+ 2 -5.2365072e-03 1.89e-02 1.79e-07 -1.0 6.16e+00 -4.5 1.00e+00 1.00e+00h 1
+ 3 5.9939621e+00 2.28e-03 1.66e-04 -3.8 6.00e+00 -5.0 9.99e-01 1.00e+00h 1
+ 4 5.9996210e+00 2.94e-06 8.38e-07 -3.8 7.70e-02 - 1.00e+00 1.00e+00h 1
+
+Number of Iterations....: 4
+
+ (scaled) (unscaled)
+Objective...............: 5.9996210189633494e+00 5.9996210189633494e+00
+Dual infeasibility......: 8.3756005011360529e-07 8.3756005011360529e-07
+Constraint violation....: 2.9426923277963834e-06 2.9426923277963834e-06
+Complementarity.........: 2.0007459547789288e-06 2.0007459547789288e-06
+Overall NLP error.......: 2.9426923277963834e-06 2.9426923277963834e-06
+
+Number of objective function evaluations = 6
+Number of objective gradient evaluations = 5
+Number of constraint evaluations = 6
+Number of constraint Jacobian evaluations = 5
+Number of Lagrangian Hessian evaluations = 4
+Total wall-clock secs in solver (w/o fun. eval./lin. alg.) = 0.072
+Total wall-clock secs in linear solver = 0.008
+Total wall-clock secs in NLP function evaluations = 0.003
+Total wall-clock secs = 0.083
+```
+
+- Mini-benchmark: [Goddard](https://control-toolbox.org/Tutorials.jl/stable/tutorial-goddard.html) and [Quadrotor](https://github.com/control-toolbox/CTParser.jl/blob/211042b061be17b3f7fdff41cb53701d30b128db/test/test_onepass_exa.jl#L926) problems
+- Goddard, H100 run
+```@raw html
+
+```
+- Quadrotor, H100 run
+```@raw html
+
+```
+
+```@raw html
+
+```
+
+## Maths matters
+
+- Coupling direct *and* indirect (*aka* shooting methods)
+- Easy access to differential-geometric tools with AD
+- [Goddard tutorial](https://control-toolbox.org/Tutorials.jl/stable/tutorial-goddard.html)
+
+## Applications matter
+
+- Use case approach: aerospace engineering, quantum mechanics, biology, environment...
+- [Magnetic Resonance Imaging](https://control-toolbox.org/MagneticResonanceImaging.jl/stable/saturation.html)
+
+## Wrap up
+
+- High level modelling of optimal control problems
+- High performance solving both on CPU and GPU
+- Driven by applications
+
+## control-toolbox.org
+
+```@raw html
+
+```
+
+- Collection of Julia Packages rooted at [OptimalControl.jl](https://control-toolbox.org/OptimalControl.jl)
+```@raw html
+
+```
+- Open to contributions! Give it a [try](@ref manual-ai-llm), give it a star ⭐️
+- Collection of problems: [OptimalControlProblems.jl](https://control-toolbox.org/OptimalControlProblems.jl/stable/problems_browser.html)
+
+## Credits (not exhaustive!)
+
+- [ADNLPModels.jl](https://jso.dev/ADNLPModels.jl)
+- [DifferentiationInterface.jl](https://juliadiff.org/DifferentiationInterface.jl/DifferentiationInterface)
+- [DifferentialEquations.jl](https://docs.sciml.ai/DiffEqDocs)
+- [ExaModels.jl](https://exanauts.github.io/ExaModels.jl/dev/guide)
+- [Ipopt.jl](https://github.com/jump-dev/Ipopt.jl)
+- [MadNLP.jl](https://madnlp.github.io/MadNLP.jl)
+- [MLStyle.jl](https://thautwarm.github.io/MLStyle.jl)
+
+## Acknowledgements
+
+Jean-Baptiste Caillau is partially funded by a **France 2030** support managed by the *Agence Nationale de la Recherche*, under the reference ANR-23-PEIA-0004 ([PDE-AI](https://pde-ai.math.cnrs.fr) project).
+
+```@raw html
+
+```
\ No newline at end of file