@@ -120,6 +120,8 @@ function kerr_geo_orbit_generic(a::Real, p::Real, e::Real, x::Real; initPhases =
120120 # Radial and polar Jacobi amplitudes
121121 ψr(qr) = Elliptic. Jacobi. am(Elliptic. K(kr)/ π * qr, kr)
122122 ψθ(qθ) = Elliptic. Jacobi. am(Elliptic. K(kθ)* 2 / π* (qθ+ π/ 2 ), kθ)
123+ dψr(qr) = Elliptic. Jacobi. dn(Elliptic. K(kr)/ π * qr, kr) * Elliptic. K(kr) / π
124+ dψθ(qθ) = 2 * Elliptic. Jacobi. dn(Elliptic. K(kθ)* 2 / π* (qθ+ π/ 2 ), kθ) * Elliptic. K(kθ) / π
123125
124126 # t and phi increments due to radial motion
125127
@@ -157,7 +159,7 @@ function kerr_geo_orbit_generic(a::Real, p::Real, e::Real, x::Real; initPhases =
157159 return complete* 2 * ((qθ+ π/ 2 )/ π) - incomplete
158160 end
159161
160- function tr (qr)
162+ function Δtr (qr)
161163 prefac = - En / sqrt((1 - En^ 2 ) * (r1 - r3) * (r2 - r4))
162164 term1 = 4 * (r2 - r3) * elliptic_pi_r(hr, kr, qr)
163165 term2 = - 4 * (r2 - r3) / (rp - rm) * ((- 1 / ((- rm + r2) * (- rm + r3))) * (- 2 * a^ 2 + rm* (4 - (a* Lz)/ En)) *
@@ -168,16 +170,41 @@ function kerr_geo_orbit_generic(a::Real, p::Real, e::Real, x::Real; initPhases =
168170 return prefac * (term1 + term2 + term3 + term4)
169171 end
170172
171- function ϕr (qr)
173+ function Δϕr (qr)
172174 prefac = 2 * a * En / ((- rm + rp) * sqrt((1 - En^ 2 ) * (r1 - r3) * (r2 - r4)))
173175 term_rm = (- 1 / ((- rm + r2) * (- rm + r3))) * (2 * rm - (a* Lz)/ En) * (r2 - r3) * elliptic_pi_r(hm, kr, qr)
174176 term_rp = (1 / ((- rp + r2) * (- rp + r3))) * (2 * rp - (a* Lz)/ En) * (r2 - r3) * elliptic_pi_r(hp, kr, qr)
175177 return prefac * (term_rm + term_rp)
176178 end
177179
178180 # t and phi increments due to polar motion
179- tθ(qθ) = En* zp/ (1 - En^ 2 ) * (Elliptic. E(kθ)* 2 * ((qθ+ π/ 2 )/ π) - Elliptic. E(ψθ(qθ), kθ))
180- ϕθ(qθ) = - Lz/ zp * elliptic_pi_θ(zm^ 2 , kθ, qθ)
181+ Δtθ(qθ) = En* zp/ (1 - En^ 2 ) * (Elliptic. E(kθ)* 2 * ((qθ+ π/ 2 )/ π) - Elliptic. E(ψθ(qθ), kθ))
182+ Δϕθ(qθ) = - Lz/ zp * elliptic_pi_θ(zm^ 2 , kθ, qθ)
183+
184+ function dtr(qr)
185+ ellip_diff_pi_r(h, k, q) = Elliptic. Pi(h, π/ 2 , k)/ π - dψr(q)/ ((1 - h * sin(ψr(q))^ 2 ) * sqrt(1 - k * sin(ψr(q))^ 2 ))
186+ return begin
187+ - ((En * (4 * (r2 - r3) * ellip_diff_pi_r(hr, kr, qr) + (r2 - r3) * (r1 + r2 + r3 + r4) * ellip_diff_pi_r(hr, kr, qr) +
188+ (r1 - r3) * (r2 - r4) * (Elliptic. E(kr)/ π - (hr * kr * cos(ψr(qr))^ 2 * sin(ψr(qr))^ 2 * dψr(qr))/ ((1 - hr * sin(ψr(qr))^ 2 ) * sqrt(1 - kr * sin(ψr(qr))^ 2 )) -
189+ sqrt(1 - kr * sin(ψr(qr))^ 2 ) * dψr(qr) + (2 * hr^ 2 * cos(ψr(qr))^ 2 * sin(ψr(qr))^ 2 * sqrt(1 - kr * sin(ψr(qr))^ 2 ) * dψr(qr))/ (1 - hr * sin(ψr(qr))^ 2 )^ 2 +
190+ (hr * cos(ψr(qr))^ 2 * sqrt(1 - kr * sin(ψr(qr))^ 2 ) * dψr(qr))/ (1 - hr * sin(ψr(qr))^ 2 ) -
191+ (hr * sin(ψr(qr))^ 2 * sqrt(1 - kr * sin(ψr(qr))^ 2 ) * dψr(qr))/ (1 - hr * sin(ψr(qr))^ 2 )) -
192+ (1 / (- rm + rp)) * 4 * (r2 - r3) * (- (((- 2 * a^ 2 + (4 - (a* Lz)/ En) * rm) * ellip_diff_pi_r(hm, kr, qr))/ ((r2 - rm) * (r3 - rm))) +
193+ ((- 2 * a^ 2 + (4 - (a* Lz)/ En) * rp) * ellip_diff_pi_r(hp, kr, qr)/ ((r2 - rp) * (r3 - rp)))))) /
194+ sqrt((1 - En^ 2 ) * (r1 - r3) * (r2 - r4)))
195+ end
196+ end
197+
198+ function dϕr(qr)
199+ return begin
200+ (2 * a * En * (r2 - r3) * (- (((- a* Lz/ En+ 2 * rm) * (Elliptic. Pi(hm, π/ 2 , kr)/ π + dψr(qr)/ ((- 1 + hm* sin(ψr(qr))^ 2 )
201+ * sqrt(1 - kr* sin(ψr(qr))^ 2 )))) / ((r2 - rm) * (r3 - rm))) + ((- a* Lz/ En + 2 * rp) * (Elliptic. Pi(hp, π/ 2 , kr)/ π
202+ + dψr(qr)/ ((- 1 + hp* sin(ψr(qr))^ 2 ) * sqrt(1 - kr* sin(ψr(qr))^ 2 )))) / ((r2 - rp) * (r3 - rp)))) / ( sqrt( - ((- 1 + En^ 2 ) * (r1 - r3) * (r2 - r4)) ) * (- rm + rp))
203+ end
204+ end
205+
206+ dtθ(qθ) = (En * zp * (- 2 * Elliptic. E(kθ) + π * sqrt(1 - kθ * sin(ψθ(qθ))^ 2 ) * dψθ(qθ))) / ((- 1 + En^ 2 ) * π)
207+ dϕθ(qθ) = (- (2 * Lz * Elliptic. Pi(zm^ 2 , π/ 2 , kθ) / π) + (Lz * dψθ(qθ)) / (sqrt(1 - kθ * sin(ψθ(qθ))^ 2 ) * (1 - zm^ 2 * sin(ψθ(qθ))^ 2 ))) / zp
181208
182209 qt0, qr0, qθ0, qϕ0 = initPhases
183210
@@ -206,7 +233,8 @@ function kerr_geo_orbit_generic(a::Real, p::Real, e::Real, x::Real; initPhases =
206233 " AzimuthalFrequency" => ϒϕ,
207234 " Frequencies" => Dict(" ϒt" => ϒt, " ϒr" => ϒr, " ϒθ" => ϒθ, " ϒϕ" => ϒϕ),
208235 " Trajectory" => [t,r,θ,ϕ],
209- " CrossFunction" => [tr, tθ, ϕr, ϕθ],
236+ " CrossFunction" => [Δtr, Δtθ, Δϕr, Δϕθ],
237+ " DerivativesCrossFunction" => [dtr, dtθ, dϕr, dϕθ],
210238 " FourVelocity" => velocity,
211239 " Type" => type,
212240 " InitialPhases" => initPhases
@@ -298,7 +326,7 @@ function kerr_geo_orbit_scatter(a::Real, p::Real, e::Real, x::Real; initPhases =
298326 return complete* 2 * ((qθ+ π/ 2 )/ π) - incomplete
299327 end
300328
301- function tr (qr)
329+ function Δtr (qr)
302330 prefac = - En / sqrt((1 - En^ 2 ) * (r1 - r3) * (r2 - r4))
303331 term1 = 4 * (r2 - r3) * elliptic_pi_r(hr, kr, qr)
304332 term2 = - 4 * (r2 - r3) / (rp - rm) * ((- 1 / ((- rm + r2) * (- rm + r3))) * (- 2 * a^ 2 + rm* (4 - (a* Lz)/ En)) *
@@ -309,16 +337,16 @@ function kerr_geo_orbit_scatter(a::Real, p::Real, e::Real, x::Real; initPhases =
309337 return prefac * (term1 + term2 + term3 + term4)
310338 end
311339
312- function ϕr (qr)
340+ function Δϕr (qr)
313341 prefac = 2 * a * En / ((- rm + rp) * sqrt((1 - En^ 2 ) * (r1 - r3) * (r2 - r4)))
314342 term_rm = (- 1 / ((- rm + r2) * (- rm + r3))) * (2 * rm - (a* Lz)/ En) * (r2 - r3) * elliptic_pi_r(hm, kr, qr)
315343 term_rp = (1 / ((- rp + r2) * (- rp + r3))) * (2 * rp - (a* Lz)/ En) * (r2 - r3) * elliptic_pi_r(hp, kr, qr)
316344 return prefac * (term_rm + term_rp)
317345 end
318346
319347 # t and phi increments due to polar motion
320- tθ (qθ) = En* zp/ (1 - En^ 2 ) * (Elliptic. E(kθ)* 2 * ((qθ+ π/ 2 )/ π) - Elliptic. E(ψθ(qθ), kθ))
321- ϕθ (qθ) = - Lz/ zp * elliptic_pi_θ(zm^ 2 , kθ, qθ)
348+ Δtθ (qθ) = En* zp/ (1 - En^ 2 ) * (Elliptic. E(kθ)* 2 * ((qθ+ π/ 2 )/ π) - Elliptic. E(ψθ(qθ), kθ))
349+ Δϕθ (qθ) = - Lz/ zp * elliptic_pi_θ(zm^ 2 , kθ, qθ)
322350
323351 qrS = π * InverseJacobiSN(sqrt((r3 - r1)/ (r2 - r1)), kr) / Elliptic. K(kr)
324352 λS = qrS / ϒr
0 commit comments