@@ -62,7 +62,7 @@ for i=2:Ntraj
62
62
end
63
63
=#
64
64
65
- using OrdinaryDiffEq, DiffEqCallbacks, Test
65
+ using OrdinaryDiffEq, NonlinearSolve, DiffEqCallbacks, Test
66
66
67
67
# Initial state
68
68
u0 = [0 , - 0.25 , 0.42081 , 0 ]
84
84
const E = Hhh (u0)
85
85
86
86
function ghh (resid, u, p)
87
- resid[1 ] = Hhh (u[1 ], u[2 ], u[3 ], u[4 ]) - E
88
- resid[2 : 4 ] .= 0
87
+ resid[1 ] = - Hhh (u[1 ], u[2 ], u[3 ], u[4 ]) + E
89
88
end
90
89
91
90
# energy conserving callback:
92
91
# important to use save = false, I don't want rescaling points
93
- cb = ManifoldProjection (ghh, abstol = 1e-13 , save = false , autodiff = AutoForwardDiff ())
92
+ cb = ManifoldProjection (ghh, resid_prototype = ones ( 1 ), nlsolve = TrustRegion (), abstol = 1e-9 , save = false , autodiff = AutoForwardDiff ())
94
93
95
94
# Callback for Poincare surface of section
96
95
function psos_callback (j, direction = + 1 , offset:: Real = 0 ,
@@ -113,7 +112,7 @@ totalcb = CallbackSet(poincarecb, cb)
113
112
prob = ODEProblem (hheom!, u0, (0.0 , 100.0 ), callback = totalcb)
114
113
115
114
extra_kw = Dict (:save_start => false , :save_end => false )
116
- DEFAULT_DIFFEQ_KWARGS = Dict {Symbol, Any} (:abstol => 1e-9 , :reltol => 1e-9 )
115
+ DEFAULT_DIFFEQ_KWARGS = Dict {Symbol, Any} (:abstol => 1e-10 , :reltol => 1e-10 )
117
116
118
117
sol = solve (prob, Vern9 (); extra_kw... , DEFAULT_DIFFEQ_KWARGS... , save_everystep = false )
119
118
0 commit comments