What parameters are necessary to generate a plausible star in line with a spectral classification?
I'm in the opening stages of writing (yet another) star system generator, using Python. My goal is to be able to generate a plausible star and, if appropriate, planetary system around it - allowing for classic systems like are own but also for hot jovians and any thing else that pops up.
The approach I'm considering using is to generate a spectral type and then look up acceptable ranges for key parameters to generate a plausible star of that type before calculating the remaining parameters.
After some experimentation, it appears that mass alone is not enough but I'm not sure what would be better - mass and radius? Mass and luminosity?
In particular, I'm having issues differentiating the values for the different luminosity classes (it should be trivial to separate a hyper-giant from a giant!)
This post was sourced from https://worldbuilding.stackexchange.com/q/84456. It is licensed under CC BY-SA 3.0.
1 answer
The spectral type of a star tells you, in general, its surface temperature. Unfortunately, there's one main issue here. Each spectral type can give way to a range of luminosities and properties (see any Hertzsprung"“Russell diagram). This can be rectified if you just want to create a star as it enters the main sequence, in which case there is a rough one-to-one relationship between temperature and luminosity.
The mass of a main sequence star determines the rest of its properties. From it, you can calculate luminosity: $$\frac{L}{L_\odot}\simeq\left(\frac{M}{M_\odot}\right)^{\alpha}\tag{1}$$ where $\alpha$ ranges from $3$ to $4$ - the exponent is different over different mass ranges. Averaged over the entire range of main sequence masses, this generally works. We can do something similar for the radius of the star: $$\frac{R}{R_\odot}\simeq\left(\frac{M}{M_\odot}\right)^{\beta}\tag{2}$$ where $\beta$ is a little less than $1$ - maybe $0.8\text{-}0.9$.
We can then try to approximation the surface temperature using the Stefan Boltzmann law: $$L=4\pi\sigma R^2T^4\tag{3}$$ All we have to do is solve for $T$, but remember. In your case, it seems like we may want to plug $\text{(1)}$ and $\text{(2)}$ into $\text{(3)}$ after converting the radius and luminosity to SI units, giving temperature as a function of mass. Then, you can simply put in a temperature for a given spectral type and estimate the mass, then back-substitute to find the radius and luminosity (and other properties).
I'll just add that these are only approximations, although they work pretty well. I'd certainly be comfortable using them. I did go into more detail on the subject in another answer, but honestly, these equations are fine.
An even better way to get exact parameters would be to use pre-existing stellar models. Many astronomers have modeled stars and stellar evolutionary tracks, and the resulting models may be available online. I sometimes cite the Geneva grids as an example, and the MESA code as an evolutionary code that you can run yourself.
The great thing about all of these is that you can determine all the parameters by varying the mass of a star and its composition (see the Vogt-Russell theorem). Pick a mass that corresponds to your spectral type, and you should be able to get detailed results fairly easily. I've taken to doing this lately for some of my answers on Worldbuilding. Numerical models are often much better than approximations, and often, someone has already done the work of generating them!
0 comment threads