{"version":3,"sources":["jsdelivr-header.js","/npm/@jobovy/kimmy@1.1.2/src/kimmy.js"],"names":[],"mappings":"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","file":"/npm/@jobovy/kimmy@1.1.2/src/kimmy.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/@jobovy/kimmy@1.1.2/src/kimmy.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function() {\n    var Kimmy = {};\n\n    ////////////// OneZone model from Weinberg et al. (2017)  /////////////////\n    var _OneZone_defaults= {'eta':2.5,\n\t\t\t    'tau_SFE':   1.,   //Gyr\n\t\t\t    'tau_SFH':   6.,   //Gyr,\n\t\t\t    'tau_Ia':    1.5,  //Gyr,\n\t\t\t    'min_dt_Ia': 0.15, //Gyr,\n\t\t\t    'sfh':       'exp',\n\t\t\t    'mCC_O':     0.015,\n\t\t\t    'mCC_Fe':    0.0012,\n\t\t\t    'mIa_O':     0.,\n\t\t\t    'mIa_Fe':    0.0017,\n\t\t\t    'r':         0.4,\n\t\t\t    'tau_Ia_2':  null,\n\t\t\t    'frac_Ia_2': 0.522,\n\t\t\t    'solar_O':   8.69,\n\t\t\t    'solar_Fe':  7.47,\n\t\t\t    // MDF calculation defaults\n                            'dFeH':      0.05,\n                            'FeHmin':    -2.0,\n                            'FeHmax':    0.5,\n                            'dOH':      0.05,\n                            'OHmin':    -2.0,\n                            'OHmax':    0.5,\n                            'dOFe':      0.02,\n                            'OFemin':    -0.1,\n                            'OFemax':    0.5,\n                            'Ntimes':    2001,\n                            'min_age':   0.001,//Gyr\n                            'max_age':   12.5,  //Gyr\n    }\n\n    Kimmy.OneZone = function (eta,\n\t\t\t      tau_SFE,\n\t\t\t      tau_SFH,\n\t\t\t      tau_Ia,\n\t\t\t      min_dt_Ia,\n\t\t\t      sfh,\n\t\t\t      mCC_O,\n\t\t\t      mCC_Fe,\n\t\t\t      mIa_O,\n\t\t\t      mIa_Fe,\n\t\t\t      r,\n\t\t\t      tau_Ia_2,\n\t\t\t      frac_Ia_2,\n\t\t\t      solar_O,\n\t\t\t      solar_Fe) {\n\t// Set default parameters\n\teta       = ((typeof eta !== 'undefined') ? \n\t\t     eta : _OneZone_defaults['eta']);\n\ttau_SFE   = ((typeof tau_SFE !== 'undefined') ? \n\t\t     tau_SFE  : _OneZone_defaults['tau_SFE']);\n\ttau_SFH   = ((typeof tau_SFH !== 'undefined') ?  \n\t\t     tau_SFH : _OneZone_defaults['tau_SFH']);\n\ttau_Ia    = ((typeof tau_Ia !== 'undefined') ? \n\t\t     tau_Ia : _OneZone_defaults['tau_Ia']);\n\tmin_dt_Ia = ((typeof min_dt_Ia !== 'undefined') ? \n\t\t     min_dt_Ia : _OneZone_defaults['min_dt_Ia']);\n\tsfh       = ((typeof sfh !== 'undefined') ? \n\t\t     sfh : _OneZone_defaults['sfh']);\n\tmCC_O     = ((typeof mCC_O !== 'undefined') ?\n\t\t     mCC_O : _OneZone_defaults['mCC_O']);\n\tmCC_Fe    = ((typeof mCC_Fe !== 'undefined') ? \n\t\t     mCC_Fe : _OneZone_defaults['mCC_Fe']);\n\tmIa_O     = ((typeof mIa_O !== 'undefined') ? \n\t\t     mIa_O : _OneZone_defaults['mIa_O']);\n\tmIa_Fe    = ((typeof mIa_Fe !== 'undefined') ? \n\t\t     mIa_Fe : _OneZone_defaults['mIa_Fe']);\n\tr         = ((typeof r !== 'undefined') ? \n\t\t     r : _OneZone_defaults['r']);\n\ttau_Ia_2  = ((typeof tau_Ia_2 !== 'undefined') ? \n\t\t     tau_Ia_2 : _OneZone_defaults['tau_Ia_2']);\n\tfrac_Ia_2 = ((typeof frac_Ia_2 !== 'undefined') ? \n\t\t     frac_Ia_2 : _OneZone_defaults['frac_Ia_2']);\n\tsolar_O   = ((typeof solar_O !== 'undefined') ? \n\t\t     solar_O : _OneZone_defaults['solar_O']);\n\tsolar_Fe  = ((typeof solar_Fe !== 'undefined') ? \n\t\t     solar_Fe : _OneZone_defaults['solar_Fe']);\n\t// Initialize\n\treturn new Kimmy.OneZone.ozclass.init(eta,tau_SFE,tau_SFH,tau_Ia,\n\t\t\t\t\t      min_dt_Ia,sfh,mCC_O,mCC_Fe,\n\t\t\t\t\t      mIa_O,mIa_Fe,r,tau_Ia_2,\n\t\t\t\t\t      frac_Ia_2,solar_O,solar_Fe);\n    }\n    Kimmy.OneZone.ozclass= Kimmy.OneZone.prototype = {\n\tinit: function(eta,tau_SFE,tau_SFH,tau_Ia,\n\t\t       min_dt_Ia,sfh,mCC_O,mCC_Fe,\n\t\t       mIa_O,mIa_Fe,r,tau_Ia_2,\n\t\t       frac_Ia_2,solar_O,solar_Fe) {\n\t    // Set model parameters\n\t    this._eta= eta;\n\t    this._tau_SFE= tau_SFE;\n\t    this._tau_SFH= tau_SFH;\n\t    this._tau_Ia= tau_Ia;\n\t    this._min_dt_Ia= min_dt_Ia;\n\t    this._sfh= sfh;\n\t    this._mCC_O= mCC_O;\n\t    this._mCC_Fe= mCC_Fe;\n\t    this._mIa_O= mIa_O;\n\t    this._mIa_Fe= mIa_Fe;\n\t    this._r= r;\n\t    this._tau_Ia_2= tau_Ia_2;\n\t    this._frac_Ia_2= frac_Ia_2;\n\t    this._solar_O= solar_O;\n\t    this._solar_Fe= solar_Fe;\n\t    // Calculate the model\n\t    this._recalc_model();\n\t    this._calc_solar();\n\t},\n\t// Function to print the model (useful for debugging)\n\tprint(){\n\t    return `eta = ${this._eta}\ntau_SFE = ${this._tau_SFE}`;\n\t},\n\t// getters and setters\n\tget eta() {\n\t    return this._eta;\n\t},\n\tset eta(val) {\n\t    this._eta= val;\n\t    this._recalc_model();\n\t},\n\tget tau_SFE() {\n\t    return this._tau_SFE;\n\t},\n\tset tau_SFE(val) {\n\t    this._tau_SFE= val;\n\t    this._recalc_model();\n\t},\n\tget tau_SFH() {\n\t    return this._tau_SFH;\n\t},\n\tset tau_SFH(val) {\n\t    this._tau_SFH= val;\n\t    this._recalc_model();\n\t},\n\tget tau_Ia() {\n            return this._tau_Ia;\n        },\n        set tau_Ia(val) {\n            this._tau_Ia= val;\n\t    this._recalc_model();\n        },\n\tget min_dt_Ia() {\n            return this._min_dt_Ia;\n        },\n        set min_dt_Ia(val) {\n            this._min_dt_Ia= val;\n\t    this._recalc_model();\n        },\n\tget sfh() {\n            return this._sfh;\n        },\n        set sfh(val) {\n            this._sfh= val;\n        },\n\tget mCC_O() {\n            return this._mCC_O;\n        },\n        set mCC_O(val) {\n            this._mCC_O= val;\n\t    this._recalc_model();\n        },\n\tget mCC_Fe() {\n            return this._mCC_Fe;\n        },\n        set mCC_Fe(val) {\n            this._mCC_Fe= val;\n\t    this._recalc_model();\n        },\n\tget mIa_O() {\n            return this._mIa_O;\n        },\n        set mIa_O(val) {\n            this._mIa_O= val;\n\t    this._recalc_model();\n        },\n\tget mIa_Fe() {\n            return this._mIa_Fe;\n        },\n        set mIa_Fe(val) {\n            this._mIa_Fe= val;\n\t    this._recalc_model();\n        },\n\tget r() {\n            return this._r;\n        },\n        set r(val) {\n            this._r= val;\n\t    this._recalc_model();\n        },\n\tget tau_Ia_2() {\n            return this._tau_Ia_2;\n        },\n        set tau_Ia_2(val) {\n            this._tau_Ia_2= val;\n\t    this._recalc_model();\n        },\n\tget frac_Ia_2() {\n            return this._frac_Ia_2;\n        },\n        set frac_Ia_2(val) {\n            this._frac_Ia_2= val;\n\t    this._recalc_model();\n        },\n\tget solar_O() {\n            return this._solar_O;\n        },\n        set solar_O(val) {\n            this._solar_O= val;\n\t    this._calc_solar();\n        },\n\tget solar_Fe() {\n            return this._solar_Fe;\n        },\n        set solar_Fe(val) {\n            this._solar_Fe= val;\n\t    this._calc_solar();\n        },\n\t// Function to calculate model internals\n\t_recalc_model() {\n\t    this._update_timescales();\n\t    this._calc_equilibrium();\n\t},\n\t_update_timescales() {\n\t    this._tau_dep= this.tau_SFE/(1.+this.eta-this.r);\n\t    this._tau_dep_SFH= 1./(1./this._tau_dep-1./this.tau_SFH);\n\t    this._tau_dep_Ia= 1./(1./this._tau_dep-1./this.tau_Ia);\n\t    this._tau_Ia_SFH= 1./(1./this.tau_Ia-1./this.tau_SFH);\n\t    if ( this.tau_Ia_2 ) {\n\t\tthis._tau_dep_Ia_2= 1./(1./this._tau_dep-1./this.tau_Ia_2);\n\t\tthis._tau_Ia_SFH_2= 1./(1./this.tau_Ia_2-1./this.tau_SFH);\n\t    }\n\t},\n\t_calc_equilibrium() {\n\t    this._ZO_CC_eq= this.mCC_O*this._tau_dep_SFH/this.tau_SFE;\n\t    this._ZO_Ia_eq= (this.mIa_O*this._tau_dep_SFH/this.tau_SFE\n\t\t\t     *this._tau_Ia_SFH/this.tau_Ia\n\t\t\t     *Math.exp(this.min_dt_Ia/this.tau_SFH));\n\t    this._ZFe_CC_eq= this.mCC_Fe*this._tau_dep_SFH/this.tau_SFE;\n\t    this._ZFe_Ia_eq= (this.mIa_Fe*this._tau_dep_SFH/this.tau_SFE\n\t\t\t      *this._tau_Ia_SFH/this.tau_Ia\n\t\t\t      *Math.exp(this.min_dt_Ia/this.tau_SFH));\n\t    if ( this.tau_Ia_2 ) {\n\t\tthis._ZO_Ia_eq*= (1.-this.frac_Ia_2);\n\t\tthis._ZFe_Ia_eq*= (1.-this.frac_Ia_2);\n\t\tthis._ZO_Ia_eq_2= (this.frac_Ia_2*this.mIa_O\n\t\t\t\t   *this._tau_dep_SFH/this.tau_SFE\n\t\t\t\t   *this._tau_Ia_SFH_2/this.tau_Ia_2\n\t\t\t\t   *Math.exp(this.min_dt_Ia/this.tau_SFH));\n\t\tthis._ZFe_Ia_eq_2= (this.frac_Ia_2*this.mIa_Fe\n\t\t\t\t    *this._tau_dep_SFH/this.tau_SFE\n\t\t\t\t    *this._tau_Ia_SFH_2/this.tau_Ia_2\n\t\t\t\t    *Math.exp(this.min_dt_Ia/this.tau_SFH));\n\t    }\n\t},\n\t_calc_solar() {\n\t    this._logZO_solar= -2.25+this.solar_O-8.69;\n\t    this._logZFe_solar= -2.93+this.solar_Fe-7.47;\n\t},\n\t// Functions to calculate time evolution\n\t_evol_CC(times) {\n\t    if ( this.sfh == 'exp' )\n\t\treturn times.map(t => 1.-Math.exp(-t/this._tau_dep_SFH));\n\t    else \n\t\treturn times.map(t => (1.-this._tau_dep_SFH/t\n\t\t\t\t       *(1.-Math.exp(-t/this._tau_dep_SFH))));\n\t},\n\t_evol_Ia(times,tau_dep_Ia,tau_Ia_SFH) {\n\t    if ( this.sfh == 'exp' )\n\t\treturn times.map(t => {\n\t\t\tvar dt= t-this.min_dt_Ia;\n\t\t\treturn dt > 0. ? (1.-Math.exp(-dt/this._tau_dep_SFH)\n\t\t\t\t\t  -tau_dep_Ia/this._tau_dep_SFH\n\t\t\t\t\t  *(Math.exp(-dt/tau_Ia_SFH)\n\t\t\t\t\t    -Math.exp(-dt/this._tau_dep_SFH)))\n\t\t\t: 0.});\n\t    else\n\t\treturn times.map(t => {\n\t\t\tvar dt= t-this.min_dt_Ia;\n\t\t\treturn dt > 0. ? (tau_Ia_SFH/t\n\t\t\t\t\t  *(dt/tau_Ia_SFH+tau_dep_Ia\n\t\t\t\t\t    /this._tau_dep_SFH\n\t\t\t\t\t    *Math.exp(-dt/tau_Ia_SFH)\n\t\t\t\t\t    +(1.+this._tau_dep_SFH/tau_Ia_SFH\n\t\t\t\t\t      -tau_dep_Ia/this._tau_dep_SFH)\n\t\t\t\t\t    *Math.exp(-dt/this._tau_dep_SFH)\n\t\t\t\t\t    -(1.+this._tau_dep_SFH/tau_Ia_SFH)))\n\t\t\t: 0.});\n\t},\n\tO_H(times) {\n\t    // CCSNe contribution\n\t    var ZO_t_CC= this._evol_CC(times).map(x => this._ZO_CC_eq*x);\n\t    // Ia contribution\n\t    var ZO_t_Ia= this._evol_Ia(times,this._tau_dep_Ia,\n\t\t\t\t       this._tau_Ia_SFH).map(x => this._ZO_Ia_eq*x);\n\t    if ( this.tau_Ia_2 ) {\n\t\tvar ZO_t_Ia_2= this._evol_Ia(times,this._tau_dep_Ia_2,\n\t\t\t\t\t this._tau_Ia_SFH_2).map(x => this._ZO_Ia_eq_2*x);\n\t\treturn ZO_t_CC.map( (x,i) => Math.log10(x + ZO_t_Ia[i] \n\t\t\t\t\t\t\t+ ZO_t_Ia_2[i]) \n\t\t\t\t    -this._logZO_solar);\n\t    }\n\t    else {\n\t\treturn ZO_t_CC.map( (x,i) => Math.log10(x + ZO_t_Ia[i]) \n\t\t\t\t    -this._logZO_solar);\n\t    }\n\t},\n\tFe_H(times) {\n\t    // CCSNe contribution\n\t    var ZFe_t_CC= this._evol_CC(times).map(x => this._ZFe_CC_eq*x);\n\t    // Ia contribution\n\t    var ZFe_t_Ia= this._evol_Ia(times,this._tau_dep_Ia,\n\t\t\t\t\tthis._tau_Ia_SFH).map(x => this._ZFe_Ia_eq*x);\n\t    if ( this.tau_Ia_2 ) {\n\t\tvar ZFe_t_Ia_2= this._evol_Ia(times,this._tau_dep_Ia_2,\n\t\t\t\t\t      this._tau_Ia_SFH_2).map(x => this._ZFe_Ia_eq_2*x);\n\t\treturn ZFe_t_CC.map( (x,i) => Math.log10(x + ZFe_t_Ia[i] \n\t\t\t\t\t\t\t+ ZFe_t_Ia_2[i]) \n\t\t\t\t    -this._logZFe_solar);\n\t    }\n\t    else {\n\t\treturn ZFe_t_CC.map( (x,i) => Math.log10(x + ZFe_t_Ia[i]) \n\t\t\t\t    -this._logZFe_solar);\n\t    }\n\t},\n\tO_Fe(times) {\n\t    var tFe_H= this.Fe_H(times);\n\t    return this.O_H(times).map( (x,i) => x - tFe_H[i]);\n\t},\n\t// Generic function to compute the DF of a certain element (ratio)\n\t_calc_XDF(elem_func,dFeH,FeHmin,FeHmax,Ntimes,min_age,max_age) {\n\t    // Set defaults\n\t    Ntimes= ((typeof Ntimes !== 'undefined') \n\t\t     ? Ntimes : _OneZone_defaults['Ntimes']);\n\t    min_age= ((typeof min_age !== 'undefined') \n\t\t     ? min_age : _OneZone_defaults['min_age']);\n\t    max_age= ((typeof max_age !== 'undefined') \n\t\t     ? max_age : _OneZone_defaults['max_age']);\n\t    var nFeHbins= Math.round((FeHmax-FeHmin)/dFeH);\n\t    // Calculate [Fe/H] on a fine grid of times\n\t    // Setup times where the model is calculated at\n\t    var log10_min_age= Math.log10(min_age);\n\t    var log10_max_age= Math.log10(max_age);\n\t    var times= (Array.apply(null, {length: Ntimes})\n\t\t\t.map(Number.call, Number)\n\t\t\t.map(x => log10_min_age+x\n\t\t\t     *(log10_max_age-log10_min_age)/(Ntimes-1.))\n\t\t\t.map(x => Math.pow(10.,x)));    \n\t    // Calculate the element ratio whose distribution we want\n\t    var tX= elem_func(times);\n\t    // Now need to histogram these with weights SFR x times\n\t    var tSFRlnt;\n\t    if ( this.sfh == 'exp' )\n\t\ttSFRlnt= times.map(x => x*Math.exp(-x/this.tau_SFH));\n\t    else\n\t\ttSFRlnt= times.map(x => x*x*Math.exp(-x/this.tau_SFH));\t\n\t    var binFeH= tX.map(x => Math.round((x-FeHmin)/dFeH));\n\t    // An array of zeros for accumulating the results\n\t    var out= (Array.apply(null, {length: nFeHbins}).map(x=>0.));\n\t    for (var ii = 0; ii < Ntimes; ii++) {\n\t\tif ( binFeH[ii] >= 0 && binFeH[ii] < nFeHbins )\n\t\t    out[binFeH[ii]]= out[binFeH[ii]] + tSFRlnt[ii];\n\t    }\n\t    // Normalize\n\t    out= out.map(x => x/out.reduce((a, b) => a + b, 0)/dFeH);\n\t    return [(Array.apply(null, {length: nFeHbins})\n\t\t     .map(Number.call, Number)\n\t\t     .map(x => FeHmin+dFeH/2.+x*(FeHmax-FeHmin)/nFeHbins)),\n\t\t    out];\n\t},\n\tFe_H_DF(dFeH,FeHmin,FeHmax,Ntimes,min_age,max_age) {\n\t    // Set defaults\n\t    dFeH= ((typeof dFeH !== 'undefined') ? \n\t\t   dFeH : _OneZone_defaults['dFeH']);\n\t    FeHmin= ((typeof FeHmin !== 'undefined') \n\t\t     ? FeHmin : _OneZone_defaults['FeHmin']);\n\t    FeHmax= ((typeof FeHmax !== 'undefined') \n\t\t     ? FeHmax : _OneZone_defaults['FeHmax']);\n\t    return this._calc_XDF(t => this.Fe_H(t),\n\t\t\t\t  dFeH,FeHmin,FeHmax,Ntimes,min_age,max_age);\n\t},\n\tO_H_DF(dOH,OHmin,OHmax,Ntimes,min_age,max_age) {\n\t    // Set defaults\n\t    dOH= ((typeof dOH !== 'undefined') ? \n\t\t  dOH : _OneZone_defaults['dOH']);\n\t    OHmin= ((typeof OHmin !== 'undefined') \n\t\t     ? OHmin : _OneZone_defaults['OHmin']);\n\t    OHmax= ((typeof OHmax !== 'undefined') \n\t\t     ? OHmax : _OneZone_defaults['OHmax']);\n\t    return this._calc_XDF(t => this.O_H(t),\n\t\t\t\t  dOH,OHmin,OHmax,Ntimes,min_age,max_age);\n\t},\n\tO_Fe_DF(dOFe,OFemin,OFemax,Ntimes,min_age,max_age) {\n\t    // Set defaults\n\t    dOFe= ((typeof dOFe !== 'undefined') ? \n\t\t  dOFe : _OneZone_defaults['dOFe']);\n\t    OFemin= ((typeof OFemin !== 'undefined') \n\t\t     ? OFemin : _OneZone_defaults['OFemin']);\n\t    OFemax= ((typeof OFemax !== 'undefined') \n\t\t     ? OFemax : _OneZone_defaults['OFemax']);\n\t    return this._calc_XDF(t => this.O_Fe(t),\n\t\t\t\t  dOFe,OFemin,OFemax,Ntimes,min_age,max_age);\n\t},\n    };\n    Kimmy.OneZone.ozclass.init.prototype= Kimmy.OneZone.ozclass;\n\n    // Export module for node.js and browser\n    if (typeof module !== 'undefined' && typeof module.exports !== 'undefined')\n\tmodule.exports = Kimmy;\n    else\n\twindow.Kimmy = Kimmy;\n})();\n"]}