Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stellar evolution tracks with different mass #44

Closed
YanRomanov opened this issue Mar 25, 2021 · 4 comments
Closed

Stellar evolution tracks with different mass #44

YanRomanov opened this issue Mar 25, 2021 · 4 comments

Comments

@YanRomanov
Copy link

Good afternoon, I need to get evolutionary tracks of star with different masses using this project, how can I do it?
And is it possible to get the names of evolutionary stages such as "Main Sequence", "Red Giant Branch", etc.?

@mwhosek
Copy link
Contributor

mwhosek commented Mar 25, 2021

Hello,

Thank you for your interest in SPISEA!

Currently, SPISEA is configured to return isochrones (the properties of stars as a function of mass at a single time) rather than evolutionary tracks (the properties of a star at a single mass as a function of time). However, one could construct their own evolutionary track by generating isochrones at the different ages they are interested in, and then identifying the star at the desired mass within each isochrone.

To save computation time when making the isochrones, you could consider using the "min_mass" and "max_mass" arguments to the Isochrone class to only generate stars around a certain mass range (whatever you are interested in). This limits the number of stars in each isochrone to only those within this mass range. See the documentation page for the Isochrone class here: https://spisea.readthedocs.io/en/latest/make_isochrone.html.

When constructing the Isochrones, SPISEA carries forward the evolutionary stage assignment used in the underlying evolution models (if one is present). The evolutionary stage can be found in the "phase" column of the isochrone. For example, if you select the MIST evolution models, then the phase column has the following designations:

-1=PMS, 0=MS, 2=RGB, 3=CHeB, 4=EAGB, 5=TPAGB, 6=postAGB, 9=WR

(see http://waps.cfa.harvard.edu/MIST/README_tables.pdf and the MIST papers for details).

The only exception to this is stellar remnants. If the user chooses to generate a cluster from an isochrone using an IFMR (see https://spisea.readthedocs.io/en/latest/ifmr.html), then we assign the following phases to compact remnants:

101: White Dwarf
102: Neutron Star
103: Black Hole

Hope this helps!
Matt

@YanRomanov
Copy link
Author

Many thanks for the response!
Can I generate only one star in Isochrone Object?

@YanRomanov
Copy link
Author

Hello again, could you tell me why the phase column is 1?

from spisea import atmospheres, reddening
import numpy as np
# Define isochrone input parameters
logAge = np.log10(100000000) # Age in log(years)
dist = 10 # distance in parsec
AKs = 0.8 # extinction in Ks-band mags
metallicity = 0 # Metallicity in [M/H]
# evo_model = evolution.Geneva()
evo_model = evolution.MergedBaraffePisaEkstromParsec()
atm_func = atmospheres.get_merged_atmosphere
red_law = reddening.RedLawHosek18b()

filt_list = ['nirc1,H']

my_iso_ms = synthetic.IsochronePhot(AKs=AKs, distance=dist,logAge=np.log10(1000000000),
                            filters=filt_list,
                          metallicity=0,
                          evo_model=evo_model,
                          # iso_dir=iso_dir,
                                 min_mass=1, max_mass=1)

print(my_iso_ms.points)

my_iso_not_ms = synthetic.IsochronePhot(AKs=AKs, distance=dist,logAge=np.log10(10000000000),
                            filters=filt_list,
                          metallicity=0,
                          evo_model=evo_model,
                          # iso_dir=iso_dir,
                          #        min_mass=1, max_mass=1)
                                min_mass=0.95, max_mass=1.05)

print(my_iso_not_ms.points)

Returns:

Isochrone generation took 0.164019 s.
Making photometry for isochrone: log(t) = 9.00  AKs = 0.80  dist = 10
     Starting at:  2021-03-26 15:39:41.925575   Usually takes ~5 minutes
Starting filter: nirc1,H   Elapsed time: 0.00 seconds
Starting synthetic photometry
M =   1.000 Msun  T =  5773 K  m_nirc1_H = 4.91
      Time taken: 0.04 seconds
          L                  Teff               R           mass   logg   isWR mass_current phase     m_nirc1_H    
          W                   K                 m         solMass                solMass                           
--------------------- ----------------- ----------------- ------- ------ ----- ------------ ----- -----------------
3.133804711112001e+26 5772.979296482345 629252810.8780493     1.0 4.5225 False       0.9999     1 4.905123648764334
Isochrone generation took 23.340085 s.
Making photometry for isochrone: log(t) = 10.00  AKs = 0.80  dist = 10
     Starting at:  2021-03-26 15:40:05.747254   Usually takes ~5 minutes
Starting filter: nirc1,H   Elapsed time: 0.00 seconds
Starting synthetic photometry
M =   0.950 Msun  T =  5768 K  m_nirc1_H = 4.33
M =   1.029 Msun  T =  4697 K  m_nirc1_H = 0.01
      Time taken: 1.65 seconds
          L                   Teff                R           mass    logg   isWR mass_current phase      m_nirc1_H     
          W                    K                  m         solMass                 solMass                             
---------------------- ------------------ ----------------- -------- ------ ----- ------------ ----- -------------------
5.3207386722847165e+26  5767.664633922509 821438708.5871096     0.95 4.2685 False       0.9493     1   4.329253557817392
 5.443421058774276e+26  5772.979296482345 829325776.8917469 0.952336 4.2611 False       0.9516     1    4.30728561075589
 5.714416999868397e+26 5779.6295119546585 847764378.2305486 0.957194 4.2441 False       0.9564     1   4.258064058046601
 6.231203418715458e+26  5784.955199650903 883639587.4484767 0.965644  4.212 False       0.9648     1   4.167007585947429
                   ...                ...               ...      ...    ...   ...          ...   ...                 ...
 6.134397710438074e+29 3312.8364811728147 84542515193.57639 1.031611 0.2325 False       0.9261     1  -4.362509973965381
 6.383692059847562e+29  3294.579562412821  87201742692.2184 1.031612 0.2055 False       0.9258     1  -4.409082743321987
  6.79316133598078e+29 3265.8783217233567 91543004937.18723 1.031612 0.1632 False       0.9254     1 -4.4799998859049435
 6.791597332847556e+29 3265.8783217233567 91532466265.92676 1.031612 0.1634 False       0.9253     1  -4.479823626270281
Length = 177 rows

@mwhosek
Copy link
Contributor

mwhosek commented Mar 26, 2021

In your example, the reason why the phase column is "1" for all stars is because the stellar evolution model you selected doesn't offer evolutionary phase information. You used the "MergedBaraffePisaEkstromParsec()" class:

evo_model = evolution.MergedBaraffePisaEkstromParsec()

As its name implies, this is a merger of the individual Baraffe, Pisa, Ekstrom, and Parsec evolution models, where the evolution model used depends on on the mass and age of the star in question (see evolution doc page for more info). Because not all of these evolution models report the stellar evolutionary stage, the "phase" column is set to 1 for all stars (e.g., no phase information).

If you instead use the MIST evolution models, which do include evolutionary stage information, then the "phase" column will be assigned as I described earlier:

evo_model = evolution.MISTv1()

To answer your earlier question: unfortunately, there is currently no direct way to direct the Isochrone Object to generate just one star at a desired mass. But, you can do this indirectly by setting the "min_mass" and "max_mass" to a restricted range to return as few models as possible. It looks like you have already done this in your provided example, in which you set min_mass = 0.95 and max_mass = 1.05 (units = solar masses).

A subtle note here, which may or may not be relevant for your project: when SPISEA generates an Isochrone object (as you have done in your posted example), the stellar masses returned in the isochrone are the same set of stellar masses provided in the underlying stellar evolution model. So, the stars in your isochrone between 0.95 - 1.05 Msun are the same models found in the Parsec() evolution models (Parsec is used due to the population age you selected, as described in the MergedBaraffePisaEkstromParsec documentation). The masses of stellar models in this range of parameter space may change if you move to a different evolution model, such as MIST.

-Matt

@mwhosek mwhosek closed this as completed May 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants