Source code for holodeck.librarian.param_spaces

"""Parameter-Space definitions for holodeck libraries.
"""

import holodeck as holo
from holodeck.constants import GYR, PC, MSOL
from holodeck.librarian.params import _Param_Space, PD_Uniform


[docs] class PS_Double_Schechter_Rate(_Param_Space): """ """ DEFAULTS = dict( hard_time=3.0, # [Gyr] hard_sepa_init=1e4, # [pc] hard_rchar=100.0, # [pc] hard_gamma_inner=-1.0, hard_gamma_outer=+2.5, # Parameters are based on `sam-parameters.ipynb` fit to [Tomczak+2014] gsmf_phi0_log10=-2.77, gsmf_phiz=-0.6, gsmf_mchar0_log10=11.24, gsmf_mcharz=0.11, gsmf_alpha0=-1.21, gsmf_alphaz=-0.03, gpf_frac_norm_allq=0.025, gpf_malpha=0.0, gpf_qgamma=0.0, gpf_zbeta=1.0, gpf_max_frac=1.0, gmt_norm=0.5, # [Gyr] gmt_malpha=0.0, gmt_qgamma=-1.0, # Boylan-Kolchin+2008 gmt_zbeta=-0.5, mmb_mamp_log10=8.69, mmb_plaw=1.10, # average MM2013 and KH2013 mmb_scatter_dex=0.3, ) def __init__(self, log, nsamples=None, sam_shape=None, seed=None): super().__init__( log, nsamples=nsamples, sam_shape=sam_shape, seed=seed, gsmf_phi0_log10=PD_Uniform(-3.5, -1.5), gsmf_mchar0_log10=PD_Uniform(10.5, 12.5), # [log10(Msol)] mmb_mamp_log10=PD_Uniform(+7.5, +9.5), # [log10(Msol)] mmb_scatter_dex=PD_Uniform(+0.0, +1.2), hard_time=PD_Uniform(0.1, 11.0), # [Gyr] hard_gamma_inner=PD_Uniform(-1.5, +0.0), ) @classmethod def _init_sam(cls, sam_shape, params): gsmf = holo.sams.GSMF_Schechter( phi0=params['gsmf_phi0_log10'], phiz=params['gsmf_phiz'], mchar0_log10=params['gsmf_mchar0_log10'], mcharz=params['gsmf_mcharz'], alpha0=params['gsmf_alpha0'], alphaz=params['gsmf_alphaz'], ) gpf = holo.sams.GPF_Power_Law( frac_norm_allq=params['gpf_frac_norm_allq'], malpha=params['gpf_malpha'], qgamma=params['gpf_qgamma'], zbeta=params['gpf_zbeta'], max_frac=params['gpf_max_frac'], ) gmt = holo.sams.GMT_Power_Law( time_norm=params['gmt_norm']*GYR, malpha=params['gmt_malpha'], qgamma=params['gmt_qgamma'], zbeta=params['gmt_zbeta'], ) mmbulge = holo.relations.MMBulge_KH2013( mamp_log10=params['mmb_mamp_log10'], mplaw=params['mmb_plaw'], scatter_dex=params['mmb_scatter_dex'], ) sam = holo.sams.Semi_Analytic_Model( gsmf=gsmf, gpf=gpf, gmt=gmt, mmbulge=mmbulge, shape=sam_shape, ) return sam @classmethod def _init_hard(cls, sam, params): hard = holo.hardening.Fixed_Time_2PL_SAM( sam, params['hard_time']*GYR, sepa_init=params['hard_sepa_init']*PC, rchar=params['hard_rchar']*PC, gamma_inner=params['hard_gamma_inner'], gamma_outer=params['hard_gamma_outer'], ) return hard
_param_spaces_dict = { 'PS_New_Test': PS_Double_Schechter_Rate, }