# Arsenal Gear Code Architecture ## Top-Level Population Class The main way that users should interact with the code in python scripts is through the top level `StellarPopulation` class. It has member classes for both single and binary stellar sub-populations: StellarPopulation params samp_mode (stochastic, integrative) mstar (total stellar mass) metallicity (stellar metallicity) fbin (total binary fraction) member classes SingleStarPop BinaryPop StellarOutput Atmosphere MechanicalFeedback Yields methods __init__() output(times) wind_mass_loss(times) radiation(times, band_data) sn_rate(times) yields(times) save_outputs(times) ## Abstract Stellar Population Classes These classes contain information on the initial population of single stars and binaries as well as methods for evolving them, which are stellar evolution instances: SingleStarPop params IMF (kroupa, chabrier, etc.) Evolution (MIST, PARSEC, etc.) BinaryPop params IMF (IMF of the primary) Evolution (BPASS...) fbin_dist (binary fraction distribution) q_dist (mass ratio distribution) P_dist (period distribution) e_dist (eccentricity distribution) ## Abstract Stellar Evolution Classes These classes contain interfaces to stellar evolution codes: SingleStellarEvolution params SingleStarPop methods props(times) (get stellar properties) BinaryStellarEvolution params BinaryPop methods props_i(times) e(times) (eccentricity evolution) P(times) (Period evolution) The `props` methods will return `StellarProperties` structures which are containers for all of the properies of a star that are important for its radiation and feedback. ## Abstract Atmosphere Classes This provides the radiative output of a star based on its properties such as bolometric luminosity, mass, radius, effective temperature, metallicity: Atmosphere params StellarProperties methods get_band(times, band_data) get_spec(times) ## Abstract Mechanical Feedback Classes Classes related to the return of mass, energy, and elements to the ISM: MechanicalFeedback params inputs member classes Winds Supernovae Yields Winds params StellarProperties methods mdotw(times) (wind mass loss rates) vwind(times) (wind velocities) Supernovae params StellarEvolution (not necessary depending on choices) methods get_mmax(times) (get maximum mass still alive) Yields params wind_ops sn_ops methods yi_wind (wind yields) yi_sn(m) (supernova yields as a funciton of mass)