3434
3535function test_onepass_exa ()
3636 __test_onepass_exa (; scheme= :euler )
37- __test_onepass_exa (; scheme= :euler_b )
37+ __test_onepass_exa (; scheme= :euler_implicit )
3838 __test_onepass_exa (; scheme= :midpoint )
3939 __test_onepass_exa (; scheme= :trapeze )
4040 if CUDA. functional ()
4141 __test_onepass_exa (CUDABackend (); scheme= :euler )
42- __test_onepass_exa (CUDABackend (); scheme= :euler_b )
42+ __test_onepass_exa (CUDABackend (); scheme= :euler_implicit )
4343 __test_onepass_exa (CUDABackend (); scheme= :midpoint )
4444 __test_onepass_exa (CUDABackend (); scheme= :trapeze )
4545 else
@@ -48,7 +48,7 @@ function test_onepass_exa()
4848end
4949
5050function __test_onepass_exa (
51- backend= nothing ; scheme= CTParser. __default_scheme_exa (), tolerance= 1e-8
51+ backend= nothing ; scheme= CTParser. __default_scheme_exa (), tolerance= 1e-8 , kwargs ...
5252)
5353 backend_name = isnothing (backend) ? " CPU" : " GPU"
5454
@@ -768,11 +768,11 @@ function __test_onepass_exa(
768768
769769 @test discretise_exa (o; backend= backend, scheme= scheme) isa ExaModels. ExaModel
770770 m, _ = discretise_exa_full (o; backend= backend, scheme= scheme)
771- s = madnlp (m; tol= tolerance)
771+ s = madnlp (m; tol= tolerance, kwargs ... )
772772 @test s. objective ≈ 6 atol = 1e-2
773773 N = 1000
774774 m, _ = discretise_exa_full (o; backend= backend, grid_size= N, scheme= scheme)
775- s = madnlp (m; tol= tolerance)
775+ s = madnlp (m; tol= tolerance, kwargs ... )
776776 @test s. objective ≈ 6 atol = 1e-3
777777 end
778778
@@ -793,7 +793,7 @@ function __test_onepass_exa(
793793 end
794794 N = 1000
795795 m, getter = discretise_exa_full (o; backend= backend, grid_size= N, scheme= scheme)
796- s = madnlp (m; tol= tolerance)
796+ s = madnlp (m; tol= tolerance, kwargs ... )
797797 @test size (getter (s; val= :state )) == (3 , N + 1 )
798798 @test size (getter (s; val= :control )) == (1 , N + 1 )
799799 @test size (getter (s; val= :variable )) == (0 ,)
@@ -826,7 +826,7 @@ function __test_onepass_exa(
826826 end
827827 N = 1000
828828 m, getter = discretise_exa_full (o; backend= backend, grid_size= N, scheme= scheme)
829- s = madnlp (m; tol= tolerance)
829+ s = madnlp (m; tol= tolerance, kwargs ... )
830830 @test size (getter (s; val= :state )) == (3 , N + 1 )
831831 @test size (getter (s; val= :control )) == (2 , N + 1 )
832832 @test size (getter (s; val= :variable )) == (4 ,)
@@ -856,10 +856,10 @@ function __test_onepass_exa(
856856
857857 m, _ = discretise_exa_full (o; backend= backend, scheme= scheme)
858858 @test m isa ExaModels. ExaModel
859- s = madnlp (m; tol= tolerance)
859+ s = madnlp (m; tol= tolerance, kwargs ... )
860860 @test s. objective ≈ 6 atol = 1e-2
861861 m, _ = discretise_exa_full (o; backend= backend, grid_size= 1000 , scheme= scheme)
862- s = madnlp (m; tol= tolerance)
862+ s = madnlp (m; tol= tolerance, kwargs ... )
863863 @test s. objective ≈ 6 atol = 1e-3
864864 end
865865
@@ -881,10 +881,10 @@ function __test_onepass_exa(
881881
882882 m, _ = discretise_exa_full (o; backend= backend, scheme= scheme)
883883 @test m isa ExaModels. ExaModel
884- s = madnlp (m; tol= tolerance)
884+ s = madnlp (m; tol= tolerance, kwargs ... )
885885 @test s. objective ≈ 2 * 6 atol = 1e-2
886886 m, _ = discretise_exa_full (o; backend= backend, grid_size= 1000 , scheme= scheme)
887- s = madnlp (m; tol= tolerance)
887+ s = madnlp (m; tol= tolerance, kwargs ... )
888888 @test s. objective ≈ 2 * 6 atol = 1e-3
889889 end
890890
@@ -919,7 +919,7 @@ function __test_onepass_exa(
919919 - Cd * v (t)^ 2 * exp (- β * (r (t) - 1 )) / m (t) - 1 / r (t)^ 2 + u (t) * Tmax / m (t)
920920 ∂ (m)(t) == - b * Tmax * u (t)
921921
922- r (tf) → max
922+ - r (tf) → min # todo: also add max when issue with GPU solved
923923 end
924924
925925 tfs = 0.18761155665063417
@@ -948,8 +948,8 @@ function __test_onepass_exa(
948948 m, _ = discretise_exa_full (
949949 o; backend= backend, grid_size= N, init= (tfs, xs, us), scheme= scheme
950950 )
951- s = madnlp (m; tol= tolerance)
952- __atol = scheme ∈ (:euler , :euler_b ) ? 1e-3 : 1e-5
951+ s = madnlp (m; tol= tolerance, kwargs ... )
952+ __atol = scheme ∈ (:euler , :euler_implicit ) ? 1e-3 : 1e-5
953953 @test s. objective ≈ - 1.0125736217178989e+00 atol = __atol
954954 end
955955
@@ -1002,7 +1002,7 @@ function __test_onepass_exa(
10021002 N = 100
10031003 m, _ = discretise_exa_full (o; grid_size= N, backend= backend, scheme= scheme)
10041004 @test m isa ExaModels. ExaModel
1005- sol = madnlp (m; tol= tolerance)
1005+ sol = madnlp (m; tol= tolerance, kwargs ... )
10061006 @test sol. status == MadNLP. SOLVE_SUCCEEDED
10071007 end
10081008end
0 commit comments