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:

_images/cluster_table.png

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.