Source code for EXOSIMS.PlanetPopulation.EarthTwinHabZone3

from EXOSIMS.Prototypes.PlanetPopulation import PlanetPopulation
import numpy as np
import astropy.units as u


[docs] class EarthTwinHabZone3(PlanetPopulation): """Population of Earth twins (1 R_Earth, 1 M_Eearth, 1 p_Earth) On circular Habitable zone orbits (0.75 to 1.77 AU) Note that these values may not be overwritten by user inputs. This implementation is intended to enforce this population regardless of JSON inputs. """ def __init__(self, eta=0.1, **specs): specs["eta"] = eta specs["arange"] = [0.75, 1.77] specs["erange"] = [0, 0] specs["prange"] = [0.2, 0.2] specs["Rprange"] = [1, 1] specs["Mprange"] = [1, 1] specs["scaleOrbits"] = True PlanetPopulation.__init__(self, **specs)
[docs] def gen_sma(self, n): """Generate semi-major axis values in AU The Earth-twin population assumes a uniform distribution between the minimum and maximum values. Args: n (integer): Number of samples to generate Returns: a (astropy Quantity array): Semi-major axis values in units of AU """ n = self.gen_input_check(n) ar = self.arange.to("AU").value a = np.random.uniform(low=ar[0], high=ar[1], size=n) * u.AU return a
[docs] def dist_sma(self, a): """Probability density function for uniform semi-major axis distribution in AU Args: a (float ndarray): Semi-major axis value(s) in AU. Not an astropy quantity. Returns: f (float ndarray): Semi-major axis probability density """ return self.uniform(a, self.arange.to("AU").value)