#!/usr/bin/env python3

import sys
import numpy as np
import phoebe
from astropy import units

from phoebe.parameters import hierarchy as _hierarchy

#logger = phoebe.logger(clevel='INFO')
#logger = phoebe.logger(clevel='DEBUG')

b = phoebe.Bundle()

b.add_star(component='starA', color='red')
b.add_star(component='starB', color='green')
b.add_star(component='starC', color='blue')

b.add_orbit(component='orbit1', period=10.0*units.d)
b.add_orbit(component='orbit2', period=100.0*units.d)

hier1 = _hierarchy.binaryorbit(b['orbit1'], b['starA'], b['starB'])
hier2 = _hierarchy.binaryorbit(b['orbit2'], hier1, b['starC'])

b.set_hierarchy(hier2)

print("hier = ", b.get_hierarchy())

print("DONE!")

f = open('twigs.txt', 'w')
for twig in b.twigs:
  f.write("%s\n" % (twig))
f.close()

b.add_constraint(phoebe.parameters.constraint.keplers_third_law_hierarchical, 'orbit2', 'orbit1')
b.add_compute()

b.set_value('long_an@orbit2@orbit@component', 0.0*units.deg)

#b.set_value('ntriangles@starA', context='compute', value=100)
#b.set_value('ntriangles@starB', context='compute', value=100)
#b.set_value('ntriangles@starC', context='compute', value=100)

########################################################################

#b.add_dataset('mesh', times=[25+2.5])
#b.run_compute()
#fig, plt = b.plot(show=True)
#plt.savefig("mesh.png")
#sys.exit(1)

########################################################################

times, rvs, sigmas = np.loadtxt('Rv.dat', usecols=(0,1,2), unpack=True)
b.add_dataset(kind='rv', times=times, rvs=rvs, sigmas=sigmas)

b.run_compute()

fig, plt = b.plot(show=True)
plt.savefig("rv.png")


#system = b['system']
#meshes = system.meshes
#mesh.get_columns_flat('')

#print("b['00.000000@xyz_elements@starA@mesh01@phoebe01@latest@mesh@model'] = ", b['00.000000@xyz_elements@starA@mesh01@phoebe01@latest@mesh@model'])
#print("b['00.000000@xyz_elements@starB@mesh01@phoebe01@latest@mesh@model'] = ", b['00.000000@xyz_elements@starB@mesh01@phoebe01@latest@mesh@model'])
#print("b['00.000000@xyz_elements@starC@mesh01@phoebe01@latest@mesh@model'] = ", b['00.000000@xyz_elements@starC@mesh01@phoebe01@latest@mesh@model'])

sys.exit(1)

