Binary Black Holes

A GENERIC Approach

Ref Bari

Advisor: Prof. Brendan Keith

Binary Black Holes

A GENERIC Approach

  1. Optimize Parameter Estimation
    1. Circular Orbit
    2. Elliptical Orbit
    3. Eccentric Orbit
    4. Butterfly Orbit
  2. Created Hamiltonian Neural Network!

Binary Black Holes

A GENERIC Approach

  1. Optimize Parameter Estimation
    1. Circular Orbit
    2. Elliptical Orbit
    3. Eccentric Orbit
    4. Butterfly Orbit
  2. Created Hamiltonian Neural Network!

Optimize Parameter Estimation

  • Optimal Learning Rate?
  • Optimal # Epochs?
  • Optimal Training Fraction?
  • Optimal Number of Partitions?
  • Best Anstazs?
  • Sensitivity to Initial Guess?
\texttt{optimizeBlackHole}

Black Hole Orbits

Gravitational Wave

Loss Function

 Plane

(p,e)

Circular Orbit

Gravitational Wave

Loss Function

 Plane

(p,e)

Elliptical Orbit

Gravitational Wave

Loss Function

 Plane

(p,e)

Highly Eccentric Orbit

Gravitational Wave

Loss Function

 Plane

(p,e)

Butterfly Orbit

Gravitational Wave

Loss Function

 Plane

(p,e)

Optimize Parameter Estimation*

\texttt{optimizeBlackHole}

*This was a failed attempt, sadly

Optimize Parameter Estimation

\texttt{optimizeBlackHole(lr, epochs, numCyles, totalTraining\%},p_0\texttt{)}
\texttt{lr}
\texttt{epochs}
\texttt{numCyles}
\texttt{totalTraining\%}
p_0

Optimize Parameter Estimation

\texttt{optimizeBlackHole(lr, epochs, numCyles, totalTraining\%},p_0\texttt{)}
\texttt{lr}: \text{Learning Rate}
\texttt{epochs}: \text{\# Epochs per Cycle}
\texttt{numCyles}: \text{Number of Cycles (numCycles = n} \to n+1 {\text{ Opt Runs)}}
\texttt{totalTraining\%}: \text{\% Training Data given to Optimizer}
p_0: \text{Initial Guess for } (M,E,L)

Hamiltonian Neural Network!

H_{Kepler}
H_{Schwarzschild}

Hamiltonian Neural Network!

H_{Kepler} = \frac{p_r^2}{2}-\frac{M}{r}+\frac{L^2}{2r^2}
\begin{align*} H_{Schwarzschild} = -&\frac{1}{2}\left(1-\frac{2M}{r}\right)^{-1}E^2+ \frac{1}{2}\left(1-\frac{2M}{r}\right)(p_r)^2+ \frac{L^2}{2r^2}\end{align*}
H_s = H_k + \mathcal{f}_{NN}

Hamiltonian Neural Network!

H_kep = p_r^2/2 - M/r + L^2/(2*r^2)
NN_correction = NN([r, p_r, L], NN_params, NN_state)[1][1]
H_total(r_val, pr_val) = pr_val^2/2 - M/r_val + L^2/(2*r_val^2) + NN_correction

Hamiltonian Neural Network!

function SchwarzschildNN_Hamiltonian(du, u, p, t)
    coord_time, r, θ, ϕ, p_t, p_r, p_θ, p_ϕ = u
    M = p.M
    E = p.E  
    L = p.L
    NN_params = p.NN

    # Kepler Hamiltonian
    H_kep = p_r^2/2 - M/r + L^2/(2*r^2)
    
    # NN Correction
    NN_correction = NN([r, p_r, L], NN_params, NN_state)[1][1]
    
    # Total Hamiltonian
    H_total(r_val, pr_val) = pr_val^2/2 - M/r_val + L^2/(2*r_val^2) + NN_correction
    
    # Hamilton's equations
    du[1] = 1.0  # Simple time evolution
    du[2] = ForwardDiff.derivative(pr -> H_total(r, pr), p_r)  # ṙ = ∂H/∂p_r
    du[3] = 0
    du[4] = L/r^2
    du[5] = 0
    du[6] = -ForwardDiff.derivative(r_val -> H_total(r_val, p_r), r)  # ṗ_r = -∂H/∂r
    du[7] = 0
    du[8] = 0
end

Hamiltonian Neural Network!

function SchwarzschildNN_Hamiltonian(du, u, p, t)
    coord_time, r, θ, ϕ, p_t, p_r, p_θ, p_ϕ = u
    M = p.M
    E = p.E  
    L = p.L
    NN_params = p.NN

    # Kepler Hamiltonian
    H_kep = p_r^2/2 - M/r + L^2/(2*r^2)
    
    # NN Correction
    NN_correction = NN([r, p_r, L], NN_params, NN_state)[1][1]
    
    # Total Hamiltonian
    H_total(r_val, pr_val) = pr_val^2/2 - M/r_val + L^2/(2*r_val^2) + NN_correction
    
    # Hamilton's equations
    du[1] = 1.0  # Simple time evolution
    du[2] = ForwardDiff.derivative(pr -> H_total(r, pr), p_r)  # ṙ = ∂H/∂p_r
    du[3] = 0
    du[4] = L/r^2
    du[5] = 0
    du[6] = -ForwardDiff.derivative(r_val -> H_total(r_val, p_r), r)  # ṗ_r = -∂H/∂r
    du[7] = 0
    du[8] = 0
end

Hamiltonian Neural Network!

function SchwarzschildNN_Hamiltonian(du, u, p, t)
    coord_time, r, θ, ϕ, p_t, p_r, p_θ, p_ϕ = u
    M = p.M
    E = p.E  
    L = p.L
    NN_params = p.NN

    # Kepler Hamiltonian
    H_kep = p_r^2/2 - M/r + L^2/(2*r^2)
    
    # NN Correction
    NN_correction = NN([r, p_r, L], NN_params, NN_state)[1][1]
    
    # Total Hamiltonian
    H_total(r_val, pr_val) = pr_val^2/2 - M/r_val + L^2/(2*r_val^2) + NN_correction
    
    # Hamilton's equations
    du[1] = 1.0  # Simple time evolution
    du[2] = ForwardDiff.derivative(pr -> H_total(r, pr), p_r)  # ṙ = ∂H/∂p_r
    du[3] = 0
    du[4] = L/r^2
    du[5] = 0
    du[6] = -ForwardDiff.derivative(r_val -> H_total(r_val, p_r), r)  # ṗ_r = -∂H/∂r
    du[7] = 0
    du[8] = 0
end

Hamiltonian Neural Network!

function SchwarzschildNN_Hamiltonian(du, u, p, t)
    coord_time, r, θ, ϕ, p_t, p_r, p_θ, p_ϕ = u
    M = p.M
    E = p.E  
    L = p.L
    NN_params = p.NN

    # Kepler Hamiltonian
    H_kep = p_r^2/2 - M/r + L^2/(2*r^2)
    
    # NN Correction
    NN_correction = NN([r, p_r, L], NN_params, NN_state)[1][1]
    
    # Total Hamiltonian
    H_total(r_val, pr_val) = pr_val^2/2 - M/r_val + L^2/(2*r_val^2) + NN_correction
    
    # Hamilton's equations
    du[1] = 1.0  # Simple time evolution
    du[2] = ForwardDiff.derivative(pr -> H_total(r, pr), p_r)  # ṙ = ∂H/∂p_r
    du[3] = 0
    du[4] = L/r^2
    du[5] = 0
    du[6] = -ForwardDiff.derivative(r_val -> H_total(r_val, p_r), r)  # ṗ_r = -∂H/∂r
    du[7] = 0
    du[8] = 0
end

Hamiltonian Neural Network!

Hamiltonian Neural Net

Binary Black Holes | 07/03 Update

By Ref Bari

Binary Black Holes | 07/03 Update

  • 6