Cluster Object¶
The cluster classes are defined in spisea/synthetic.py
. The primary
inputs to a cluster object are the cluster mass,
Isochrone Object, and IMF Object. In addition, an
IFMR Object may be defined to produce compact stellar remnants.
An example of making a ResolvedCluster, assuming the isochrone object has already been created:
from spisea import synthetic, ifmr
from spisea.imf import imf, multiplicity
import numpy as np
# Define stellar multiplicity properties. Here we
# use the default multiplicity object.
# This is an input for the IMF object.
imf_multi = multiplicity.MultiplicityUnresolved()
# Define the IFMR. Here we use the IFMR object
# IFMR_Raithel18.
# If no IFMR is desired, set this variable
# to None
my_ifmr = ifmr.IFMR_Raithel18()
# Define the IMF. Here we'll use a broken
# power-law with the parameters from
# Kroupa et al. (2001, MNRAS, 322, 231)
# and the multiplicity we defined previously.
# Note: when defining the power law slope for each segment of
#the IMF, we define the entire exponent, including the negative sign.
# For example, if dN/dm $\propto$ m^-alpha, then you would use
# the value -2.3 to specify an IMF with alpha = 2.3.
massLimits = np.array([0.08, 0.5, 1, 120]) # mass segments
powers = np.array([-1.3, -2.3, -2.3]) # power-law exponents
my_imf = imf.IMF_broken_powerlaw(massLimits, powers,
multiplicity=imf_multi)
# Define the cluster mass
mass = 10**5 # Units: solar masses
# Make the cluster object. We will assume that the isochrone object
# is already defined as my_iso.
cluster = synthetic.ResolvedCluster(my_iso, my_imf, mass,
ifmr=my_ifmr)
See Quick Start Example for a detailed example for how to make different cluster sub-classes and interact with the resulting output. Here is a table from Hosek et al. 2020 that describes the values in the cluster output table:
Tips and Tricks: The Cluster Object¶
The cluster is generated by drawing a population of initial stellar masses according to the IMF/multiplicity objects and then assigning stellar properties to each using the evolution model. Thus, it is possible for the cluster to generate a star with an initial mass beyond the boundaries of the evolution model. If this occurs, then nans are assigned to the properties of that star (e.g. Teff, current_mass, photometry, etc).
Base Cluster Class¶
- class synthetic.Cluster(iso, imf, cluster_mass, ifmr=None, verbose=False, seed=None)¶
Base class to create a cluster with user-specified isochrone, imf, ifmr, and total mass.
- Parameters
- iso: isochrone object
SPISEA isochrone object
- imf: imf object
SPISEA IMF object
- cluster_mass: float
Total initial mass of the cluster, in M_sun
- ifmr: ifmr object or None
If ifmr object is defined, will create compact remnants produced by the cluster at the given isochrone age. Otherwise, no compact remnants are produced.
- seed: int
If set to non-None, all random sampling will be seeded with the specified seed, forcing identical output. Default None
- vebose: boolean
True for verbose output.
Cluster Sub-classes¶
- class synthetic.ResolvedCluster(iso, imf, cluster_mass, ifmr=None, verbose=True, seed=None)¶
Bases:
Cluster
Cluster sub-class that produces a resolved stellar cluster. A table is output with the synthetic photometry and intrinsic properties of the individual stars (or stellar systems, if mutliplicity is used in the IMF object).
If multiplicity is used, than a second table is produced that contains the properties of the companion stars independent of their primary stars.
- Parameters
- iso: isochrone object
SPISEA isochrone object
- imf: imf object
SPISEA IMF object
- cluster_mass: float
Total initial mass of the cluster, in M_sun
- ifmr: ifmr object or None
If ifmr object is defined, will create compact remnants produced by the cluster at the given isochrone age. Otherwise, no compact remnants are produced.
- seed: int
If set to non-None, all random sampling will be seeded with the specified seed, forcing identical output. Default None
- vebose: boolean
True for verbose output.
Methods
set_filter_names
()Set filter column names
- class synthetic.ResolvedClusterDiffRedden(iso, imf, cluster_mass, deltaAKs, ifmr=None, verbose=False, seed=None)¶
Bases:
ResolvedCluster
Sub-class of ResolvedCluster that applies differential extinction to the synthetic photometry.
- Parameters
- iso: isochrone object
SPISEA isochrone object
- imf: imf object
SPISEA IMF object
- cluster_mass: float
Total initial mass of the cluster, in M_sun
- delta_AKs: float
Amount of differential extinction to apply to synthetic photometry, in terms of magnitudes of extinction in the Ks filter. Specifically, delta_AKs defines the standard deviation of a Gaussian distribution from which the delta_AKs values will be drawn from for each individual system.
- ifmr: ifmr object or None
If ifmr object is defined, will create compact remnants produced by the cluster at the given isochrone age. Otherwise, no compact remnants are produced.
- seed: int
If set to non-None, all random sampling will be seeded with the specified seed, forcing identical output. Default None
- vebose: boolean
True for verbose output.
Methods
set_filter_names
()Set filter column names
- class synthetic.UnresolvedCluster(iso, imf, cluster_mass, wave_range=[3000, 52000], verbose=False)¶
Bases:
Cluster
Cluster sub-class that produces an unresolved stellar cluster. Output is a combined spectrum that is the sum of the individual spectra of the cluster stars.
- Parameters
- iso: isochrone object
SPISEA isochrone object
- imf: imf object
SPISEA IMF object
- cluster_mass: float
Total initial mass of the cluster, in M_sun
- wave_range: 2-element array
Define the minumum and maximum wavelengths of the final output spectrum, in Angstroms. Array should be [min_wave, max_wave]
- vebose: boolean
True for verbose output.