NY Vir Newtonian N-Body Modeling

Demonstrates Newtonian N-body modeling using Rebound.

%load_ext autoreload
%autoreload 2
import os
os.environ['PYTENSOR_FLAGS'] = 'mode=NUMBA'
The autoreload extension is already loaded. To reload it, use:
  %reload_ext autoreload
from ocpy.data import Data

data = Data.from_file("../ny_vir_minima.xlsx")
data = data.fill_errors(0.0001).calculate_weights()

t0 = 2453174.442769
period = 0.1010159690

oc = data.calculate_oc(
    reference_minimum=t0,
    reference_period=period,
    model_type="lmfit"
)
from ocpy.newtonian import NewtonianModel
from ocpy.oc import Parameter

nbody = NewtonianModel(
    central_mass=Parameter(value=0.611, fixed=True),
    T0_ref=t0,
    P_ref=period,
    bodies = [
        {
            "m":     Parameter(value=0.0021, fixed=False, std=1,  min=0),
            "P":     Parameter(value=3170.0, fixed=False, std=1000, min=0), 
            "e":     Parameter(value=0.05,   fixed=False, std=1,  min=0, max=.8),
            "omega": Parameter(value=269.0,  fixed=False, std=200, min=0, max=360), # [0, 360] arası
            "T":     Parameter(value=2443302.0, fixed=False, std=3170.0), # std ~ P
        },
        {
            "m":     Parameter(value=0.0038, fixed=False, std=1,  min=0),
            "P":     Parameter(value=8260.0, fixed=False, std=1000, min=0), 
            "e":     Parameter(value=0.02,   fixed=False, std=1,  min=0, max=.8),
            "omega": Parameter(value=140.0,  fixed=False, std=200, min=0, max=360), # [0, 360] arası
            "T":     Parameter(value=2421163.0, fixed=False, std=8260.0), # std ~ P
        }
    ],
    name="nbody"
)
models = [nbody]
res = oc.fit(models)
oc.plot(res)
print("res")
res
../../../_images/757ffc602f0d13ec628779b7d11be25b52edfbb956f3a93c810f4b93a695d21e.png