PHOEBE 2.0 Documentation

2.0 Docs

  • 1.0
  • 2.0a
  • ver: 2.0


Prev: Minimal Contact Binary System Next: Single Star with Spots
.

IPython Notebook | Python Script

Comparing Contacts Binaries in PHOEBE 2.0 vs PHOEBE Legacy

NOTE: PHOEBE 1.0 legacy is an alternate backend and is not installed with PHOEBE 2.0. In order to run this backend, you’ll need to have PHOEBE 1.0 installed.

Setup

As always, let’s do imports and initialize a logger and a new bundle. See Building a System for more details.

%matplotlib inline
import phoebe
from phoebe import u
import numpy as np
import matplotlib.pyplot as plt

logger = phoebe.logger()

b = phoebe.default_binary(contact_binary=True)
WARNING: Constant u'Gravitational constant' is already has a definition in the u'si' system [astropy.constants.constant]
WARNING:astropy:Constant u'Gravitational constant' is already has a definition in the u'si' system
WARNING: Constant u'Solar mass' is already has a definition in the u'si' system [astropy.constants.constant]
WARNING:astropy:Constant u'Solar mass' is already has a definition in the u'si' system
WARNING: Constant u'Solar radius' is already has a definition in the u'si' system [astropy.constants.constant]
WARNING:astropy:Constant u'Solar radius' is already has a definition in the u'si' system
WARNING: Constant u'Solar luminosity' is already has a definition in the u'si' system [astropy.constants.constant]
WARNING:astropy:Constant u'Solar luminosity' is already has a definition in the u'si' system
WARNING: developer mode enabled, to disable 'rm ~/.phoebe_devel_enabled' and restart phoebe
/usr/local/lib/python2.7/dist-packages/astropy/units/quantity.py:732: FutureWarning: comparison to None will result in an elementwise object comparison in the future.
  return super(Quantity, self).__eq__(other)

Adding Datasets and Compute Options

b.add_dataset('lc', times=np.linspace(0,1,101), dataset='lc01')
b.add_dataset('rv', times=np.linspace(0,1,101), dataset='rv01')
<ParameterSet: 16 parameters | contexts: compute, dataset>

Let’s add compute options for phoebe using the new (marching) method for creating meshes.

b.add_compute('phoebe', compute='phoebe2', mesh_method='marching')
<ParameterSet: 31 parameters | datasets: lc01, rv01>

Now we add compute options for the ‘legacy’ backend.

b.add_compute('legacy', compute='phoebe1')
<ParameterSet: 12 parameters | datasets: lc01, rv01>

Let’s use the external atmospheres available for both phoebe1 and phoebe2

b.set_value_all('atm', 'extern_planckint')
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'

Set value of gridsize for the trapezoidal (WD) mesh.

b.set_value_all('gridsize', 30)

Let’s also disable other special effect such as heating, gravity, and light-time effects.

b.set_value_all('ld_func', 'logarithmic')
b.set_value_all('ld_coeffs', [0.0, 0.0])

b.set_value_all('refl_num',0)
b.set_value_all('rv_grav', False)
b.set_value_all('ltte', False)
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'
WARNING:PARAMETERS:ld_func='interp' only supported by atm='ck2004'

Finally, let’s compute our models

b.run_compute(compute='phoebe2', model='phoebe2model', irrad_method='none')
<ParameterSet: 6 parameters | kinds: rv, lc>
b.run_compute(compute='phoebe1', model='phoebe1model')
WARNING:IO:irrad_frac_lost_bol has no phoebe 1 corollary
WARNING:IO:ld_func_bol has no phoebe 1 corollary
WARNING:IO:mass has no phoebe 1 corollary
WARNING:IO:irrad_frac_lost_bol has no phoebe 1 corollary
WARNING:IO:ld_func_bol has no phoebe 1 corollary
WARNING:IO:mass has no phoebe 1 corollary
WARNING:IO:lc_method has no phoebe 1 corollary
WARNING:IO:fti_method has no phoebe 1 corollary
WARNING:IO:pblum_ref has no phoebe 1 corollary
WARNING:IO:fti_method has no phoebe 1 corollary
WARNING:IO:intens_weighting has no phoebe 1 corollary
WARNING:IO:lc_method has no phoebe 1 corollary
WARNING:IO:pblum_ref has no phoebe 1 corollary
WARNING:IO:Finite integration Time is not fully supported and will be turned off by legacy wrapper before computation
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:intens_weighting has no phoebe 1 corollary
WARNING:IO:rv_grav has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:rv_grav has no phoebe 1 corollary
WARNING:IO:rv_grav has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:rv_grav has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:intens_weighting has no phoebe 1 corollary
WARNING:IO:rv_grav has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:rv_grav has no phoebe 1 corollary
WARNING:IO:rv_grav has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:rv_grav has no phoebe 1 corollary
WARNING:IO:freq has no phoebe 1 corollary
WARNING:IO:deccdt has no phoebe 1 corollary
WARNING:IO:t0_perpass has no phoebe 1 corollary
WARNING:IO:mean_anom has no phoebe 1 corollary
WARNING:IO:long_an has no phoebe 1 corollary
WARNING:IO:asini has no phoebe 1 corollary
WARNING:IO:ecosw has no phoebe 1 corollary
WARNING:IO:esinw has no phoebe 1 corollary
WARNING:IO:protomesh has no phoebe 1 corollary
WARNING:IO:pbmesh has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:rv_method has no phoebe 1 corollary
WARNING:IO:t0 has no phoebe 1 corollary
WARNING:IO:ra has no phoebe 1 corollary
WARNING:IO:dec has no phoebe 1 corollary
WARNING:IO:epoch has no phoebe 1 corollary
WARNING:IO:distance has no phoebe 1 corollary
WARNING:IO:hierarchy has no phoebe 1 corollary
<ParameterSet: 6 parameters | kinds: rv, lc>

Plotting

Light Curve

axs, artists = b['lc01@phoebe2model'].plot(color='g')
axs, artists = b['lc01@phoebe1model'].plot(color='r')
leg = plt.legend(loc=4)
../../_images/legacy_contact_binary_22_0.png

Now let’s plot the residuals between these two models

artist, = plt.plot(b.get_value('fluxes@lc01@phoebe2model') - b.get_value('fluxes@lc01@phoebe1model'), 'g-')
artist = plt.axhline(0.0, linestyle='dashed', color='k')
../../_images/legacy_contact_binary_24_0.png

RVs

axs, artists = b['rv01@phoebe2model'].plot(color='g')
axs, artists = b['rv01@phoebe1model'].plot(color='r')
../../_images/legacy_contact_binary_26_0.png
artist, = plt.plot(b.get_value('rvs@primary@phoebe2model', ) - b.get_value('rvs@primary@phoebe1model'), color='g', ls=':')
artist, = plt.plot(b.get_value('rvs@secondary@phoebe2model') - b.get_value('rvs@secondary@phoebe1model'), color='g', ls='-.')
artist = plt.axhline(0.0, linestyle='dashed', color='k')
ylim = plt.ylim(-1.5, 1.5)
../../_images/legacy_contact_binary_27_0.png
Prev: Minimal Contact Binary System Next: Single Star with Spots
.
Last update: 06/07/2017 11:30 a.m. (CET)