Main Code

ASLOTH main program

program  asloth
Use

config, defined_types, eps_wrapper, tree_memory_arrays_passable, numerical_parameters, resolution_parameters, to_file, input_files, check_flags, utility, volume_fractions, feedback_routines (node_feedback()), bubble_tree (start_btree()), tree_reader, tree_initialization, star_formation, read_yields, metal_functions, populations, sf_routines, crit_masses (set_mcrit()), cosmic_time (set_cosmic_time())

Call to

set_default_config(), read_config(), check_compiler_flags(), init_outputs(), set_cosmic_time(), set_mcrit(), read_tree(), make_eps_tree(), init_stellar_populations(), assign_yields(), output_pop(), start_btree(), init_tree(), print_bar(), real_to_string3(), mem_report(), clean_tree(), get_fracs(), node_feedback(), sf_step(), add_parent_to_tree(), add_to_sfr(), add_to_feedback_volumes(), add_to_base_mdf(), add_to_base_mstariisurv(), write_files_reali(), outputs_satellites(), write_mw_properties(), write_files(), close_outputs()

Configuration

config

Quick access

Variables

config_file, cubic_box, nthreads

Routines

read_config(), set_default_config()

Needed modules

  • numerical_parameters

  • input_files: List of input files

  • random_object: This is an object oriented version of the ran3 algorithm from numerical recipes Before using a rng type object it needs to be initialized by calling rng%init(seed) where seed is an integer seed Afterwards rng%get_ran() will return a random real in the range [0,1)

Variables

  • config/config_file [character,protected]

    e.g. param_template.nml

  • config/cubic_box [logical,protected]
  • config/nthreads [integer,protected]

Subroutines and functions

subroutine  config/set_default_config()
Called from

asloth

subroutine  config/read_config(fname)
Parameters

fname [character,in]

Use

omp_lib

Called from

asloth

Type definitions

defined_types

Quick access

Types

node_arrays, stars_highmass, treenode

Routines

add_baryons(), del_high_mass(), make_stars_high_mass(), print_all_props(), set_baryons()

Needed modules

Types

  • type  defined_types/treenode

    class for storing information of each halo at each time

    Type fields
    • % base [treenode,pointer] :: which halo will this one be at at the the lowest redshift

    • % child [treenode,pointer/optional/default=>null()]

    • % desc_id [integer] :: descendent id

    • % firstpopiisf [logical,optional/default=.true.]

    • % highstars [stars_highmass,pointer/optional/default=>]

    • % highstars_first [stars_highmass,pointer/optional/default=>]

    • % highstars_last [stars_highmass,pointer/optional/default=>]

    • % i_checked [logical] :: has this halo already been checked for stochastic feedback?

    • % i_enr [logical,optional/default=.false.] :: is this halo enriched?

    • % i_ion [logical,optional/default=.false.] :: is the halo affected by ionising radiation

    • % i_mcrit [logical,optional/default=.false.] :: is the halo above the critical mass?

    • % i_sf [logical,optional/default=.false.] :: this flag controls whether the SF_step subroutine is called

    • % i_sub [logical,optional/default=.false.] :: is this a subhalo?

    • % id [integer] :: halo id

    • % igm_z (*) [real,allocatable] :: ambient metallicity

    • % jlevel [integer] :: which time-step is the halo at

    • % l_ion [real] :: ionising radiation emission rate [Photons/second]

    • % llstars [stars_highmass,pointer/optional/default=>]

    • % llstars_first [stars_highmass,pointer/optional/default=>]

    • % llstars_last [stars_highmass,pointer/optional/default=>]

    • % lp_id [integer] :: last progenitor depthfirst id

    • % m_cold [real] :: cold gas mass [M_sun]

    • % m_filter [real,optional/default=0]

    • % m_hot [real] :: hot gas mass [M_sun]

    • % m_metals (,) [real,allocatable]

    • % m_out [real] :: outflow mass [M_sun]

    • % m_peak [real] :: peak mass [Msun]

    • % m_peak_filter [real,optional/default=0]

    • % m_starii [real] :: stellar mass Pop II [M_sun]

    • % m_starii_surv [real,optional/default=0.0] :: Msun

    • % m_stariii [real] :: stellar mass Pop III [M_sun]

    • % mhalo [real] :: mass of halo

    • % nchild [integer] :: number of child nodes

    • % null [node_arrays,pointer]

    • % num_popiiprogenitor [integer,optional/default=0] :: how many Pop II forming progenitors

    • % parent [treenode,pointer/optional/default=>null()]

    • % pop [integer]

    • % r_en [real,optional/default=0] :: enrichment radius [physical Mpc]

    • % r_ion [real,optional/default=0] :: ionised radius [physical Mpc]

    • % sibling [treenode,pointer/optional/default=>null()]

    • % this_array [node_arrays,pointer/optional/default=>]

    • % x (3) [real] :: position

  • type  defined_types/node_arrays
    Type fields
    • % mdf_array (,) [real,allocatable]

  • type  defined_types/stars_highmass
    Type fields
    • % bin_id [integer,optional/default=0] :: which bin it belongs, should be consistent with IMF arrays

    • % next [stars_highmass,pointer/optional/default=>]

    • % null [stars_highmass,pointer]

    • % num [integer,optional/default=0]

    • % pop [integer,optional/default=0] :: PopII (2) or PopIII (3) stars

    • % prev [stars_highmass,pointer/optional/default=>]

    • % timeborn [real,optional/default=0.0] :: in order to know when the stars die

    • % z (*) [real,allocatable] :: Zgas [Z/Zsun] when the star is born. Related with SN yields.

Subroutines and functions

function  defined_types/make_stars_high_mass(n, i, timeborn, zgas, pop)
Parameters
  • n [integer,in]

  • i [integer,in]

  • timeborn [real,in]

  • zgas (*) [real,in]

  • pop [integer,in]

Return

res [stars_highmass]

subroutine  defined_types/del_high_mass(this)
Parameters

this [stars_highmass,inout]

subroutine  defined_types/set_baryons(this, other)

copies baryonic properties from one halo to another (overwrites)

Parameters
  • this [real]

  • other [real]

subroutine  defined_types/add_baryons(this, other)

adds baryonic properties of one halo to another

Parameters
  • this [real]

  • other [real]

subroutine  defined_types/print_all_props(a)

Printing function that prints various porperties of a halo in order to allow easier tracing of errors and unexpected changes

Parameters

a [treenode,in]

Tree Reader

tree_reader

Quick access

Routines

read_tree()

Needed modules

Subroutines and functions

subroutine  tree_reader/read_tree(count, read_mass)
Parameters
  • count [integer,out] :: reading tree

  • read_mass [real,out]

Called from

asloth

Call to

print_bar(), mem_report()

Tree initialization

tree_initialization

Description

prepares tree for running asloth

Quick access

Routines

filter_virial_masses(), init_tree(), set_tree_params()

Subroutines and functions

subroutine  tree_initialization/init_tree(count, n_jcurrent)
Parameters
  • count [integer,in]

  • n_jcurrent (nlev_max) [integer,out]

Use

defined_types, numerical_parameters, tree_memory_arrays_passable, utility, crit_masses, cosmic_time, resolution_parameters, metalmix_dz, filter_module, trace_mdf, metals

Called from

asloth

Call to

print_bar(), mem_report(), read_lookups(), filter_virial_masses(), init_mdf()

subroutine  tree_initialization/filter_virial_masses()
Use

defined_types, numerical_parameters, tree_memory_arrays_passable, filter_module

Called from

init_tree()

Call to

compute_savgol_coeff(), print_bar(), savgol_filter(), savgol_free()

subroutine  tree_initialization/set_tree_params()
Use

power_spectrum_parameters, modified_merger_tree, numerical_parameters, input_files, time_parameters

Called from

make_eps_tree()

numerical and resolution parameters

numerical parameters

Quick access

Variables

a_radiation, ab_mag_norm, ab_norm, alpha_b, alpha_ion, alpha_outflow, ang2m, atomic_mass_helium, atomic_mass_hydrogen, bt_delta, bt_max, bt_min, btnbin, btnpad, c_cgs, c_hii, c_light, c_light_angstroms, c_light_cm, clump, cm32m3, crit_freq, deca, delta200, deltaeds, e_51, em_rdisk_half_scale_o2, eps3, eps4, eps6, epsm, epsr, erg2j, escape_fraction, etaii, etaiii, ev2erg, ev2j, f_escii, f_esciii, fx_peak_nfw, g, g_cgs, g_gyrkms3, g_mpcgyr, g_mpcgyr2, g_si, gpi, gyr2s, gyr2yr, h0100, h0100pgyr, h_planck, h_planck_erg, hecto, hubble, hubble_cgs, imf_max, imf_min, iso_fac, j2erg, k_boltzmann, k_boltzmann_erg, khorizon, kilo, kind99, km2m, kms2mpcgyr, kom, kpc2cm, kstrc_1, kstrc_2, l_ab0, l_box, ln10, ln2, log4, log_lsun_erg, logang2m, logc_light, logc_light_angstroms, logdeca, logev2erg, loggyr2s, loghecto, logj2erg, logk_boltzmann, logkilo, logl_ab0, loglsun, loglsun_bc, logm2cm, logmega, logmpc2asat10pc, logpc2m, logpi, lograd2as, long_bn, lsun, lsun40_bc, lsun_bc, lsun_erg, lw_mode, m2cm, m32cm3, m8crit, m_atomic, m_atomic_g, m_be, m_cha_out, m_electron, mean_mol, mega, mend, milli, mp_cgs, mpc2asat10pc, mpc2cm, mpc2m, mpc_cgs, mpckm2gyr, mres, msolar, msolar_1030kg, msolar_g, mstart, msun_cgs, msun_mpc3_cgs, mu_primordial, myr2s, n_b_cgs, n_cloud_default, n_cold_default, n_h_cgs, n_ionii, n_ioniii, n_spec, nextoutputid, nlev, nlev_max, nstarmassbinii, nstarmassbiniii, omega_b, omega_l, omega_m, pc2cm, pc2m, pi, pi4, pio2, pio4, pisq, popii_slope, rad2as, rad2degrees, rdisk_half_scale, rho_b_ast, rho_b_cgs, rho_crit_cgs, rho_m_cgs, rhocrit, right_angle_degrees, semi_circle_degrees, sigma_8, sigma_t, sigma_thomson, slope, sqrt2, sqrt2opi, sqrt2pi, sqrtatomic_mass_hydrogen, sqrtdelta200, sqrtg, sqrtg_si, sqrtk_boltzmann, sqrtm_atomic, sqrtmpc2m, sqrtmsolar, sqrtpi, sqrtrhocrit, stdout_bn, surf_dens_norm_half, t_crit, t_ion, t_univ, tree_mass, v_com, v_enrich_popiii, v_out, vbc, x_hydrogen, x_hydrogen_solar, xh, y_helium, y_helium_solar, year_cgs, yhe, z_crit, z_metals, z_metals_solar

Variables

  • numerical_parameters/a_radiation [real,parameter=7.565743419463647e-16]
  • numerical_parameters/ab_mag_norm [real,parameter=48.6]
  • numerical_parameters/ab_norm [real,parameter=3.6307805477e-20]
  • numerical_parameters/alpha_b [real,parameter=2.6e-13]
  • numerical_parameters/alpha_ion [real,parameter=2.6e-13]
  • numerical_parameters/alpha_outflow [real]
  • numerical_parameters/ang2m [real,parameter=1e-10]
  • numerical_parameters/atomic_mass_helium [real,parameter=4.002602]
  • numerical_parameters/atomic_mass_hydrogen [real,parameter=1.00794]
  • numerical_parameters/bt_delta [real,optional/default=0.1]
  • numerical_parameters/bt_max [real,optional/default=log10(4.e17)]
  • numerical_parameters/bt_min [real,optional/default=log10(4.e15)]
  • numerical_parameters/btnbin [integer,optional/default=10]
  • numerical_parameters/btnpad [integer,optional/default=2]
  • numerical_parameters/c_cgs [real,parameter=29980000000.0]
  • numerical_parameters/c_hii [real,parameter=3]
  • numerical_parameters/c_light [real,parameter=299792458.0]
  • numerical_parameters/c_light_angstroms [real,parameter=2.99792458e+18]
  • numerical_parameters/c_light_cm [real,parameter=29979245800.0]
  • numerical_parameters/clump [real,parameter=4.0]
  • numerical_parameters/cm32m3 [real,parameter=1e-06]
  • numerical_parameters/crit_freq [real,parameter=3.969127815104263e-18]
  • numerical_parameters/deca [real,parameter=10.0]
  • numerical_parameters/delta200 [real,parameter=200.0]
  • numerical_parameters/deltaeds [real,parameter=177.65287922076283]
  • numerical_parameters/e_51 [real,parameter=1.2]
  • numerical_parameters/em_rdisk_half_scale_o2 [real,parameter=0.432067481]
  • numerical_parameters/eps3 [real,parameter=0.001]
  • numerical_parameters/eps4 [real,parameter=0.0001]
  • numerical_parameters/eps6 [real,parameter=1e-06]
  • numerical_parameters/epsm [real,parameter=0.0001]
  • numerical_parameters/epsr [real,parameter=1e-06]
  • numerical_parameters/erg2j [real,parameter=1e-07]
  • numerical_parameters/escape_fraction [real]
  • numerical_parameters/etaii [real]
  • numerical_parameters/etaiii [real]
  • numerical_parameters/ev2erg [real,parameter=1.60217733e-12]
  • numerical_parameters/ev2j [real,parameter=1.60217733e-19]
  • numerical_parameters/f_escii [real]
  • numerical_parameters/f_esciii [real]
  • numerical_parameters/fx_peak_nfw [real,parameter=0.2162165956]
  • numerical_parameters/g [real,parameter=4.301307710181788e-09]
  • numerical_parameters/g_cgs [real,parameter=6.674e-08]
  • numerical_parameters/g_gyrkms3 [real,parameter=4.205785220992724e-06]
  • numerical_parameters/g_mpcgyr [real,parameter=4.398999721935946e-12]
  • numerical_parameters/g_mpcgyr2 [real,parameter=4.498910530810333e-15]
  • numerical_parameters/g_si [real,parameter=6.67259e-11]
  • numerical_parameters/gpi [real,parameter=1.3212863952890194e-05]
  • numerical_parameters/gyr2s [real,parameter=3.15576e+16]
  • numerical_parameters/gyr2yr [real,parameter=1000000000.0]
  • numerical_parameters/h0100 [real,parameter=100.0]
  • numerical_parameters/h0100pgyr [real,parameter=0.10227121653079844]
  • numerical_parameters/h_planck [real,parameter=6.6260755e-34]
  • numerical_parameters/h_planck_erg [real,parameter=6.6260755e-27]
  • numerical_parameters/hecto [real,parameter=100.0]
  • numerical_parameters/hubble [real,parameter=0.6774]
  • numerical_parameters/hubble_cgs [real,parameter=2.1952879411478756e-18]
  • numerical_parameters/imf_max [real]
  • numerical_parameters/imf_min [real]
  • numerical_parameters/iso_fac [real,parameter=1.085736204755322]
  • numerical_parameters/j2erg [real,parameter=10000000.0]
  • numerical_parameters/k_boltzmann [real,parameter=1.3806503e-23]
  • numerical_parameters/k_boltzmann_erg [real,parameter=1.3806503e-16]
  • numerical_parameters/khorizon [real,parameter=0.00033356409519815205]
  • numerical_parameters/kilo [real,parameter=1000.0]
  • numerical_parameters/kind99 [integer,parameter=selected_real_kind(p,r=99)]
  • numerical_parameters/km2m [real,parameter=1000.0]
  • numerical_parameters/kms2mpcgyr [real,parameter=0.0010227121653079844]
  • numerical_parameters/kom [real,parameter=2.9434011554855882e-21]
  • numerical_parameters/kpc2cm [real,parameter=3.0856775807e+21]
  • numerical_parameters/kstrc_1 [real,parameter=0.6251543028]
  • numerical_parameters/kstrc_2 [real,parameter=1.191648617]
  • numerical_parameters/l_ab0 [real,parameter=43442114331434.14]
  • numerical_parameters/l_box [real]

    (linear box size)

  • numerical_parameters/ln10 [real,parameter=2.302585093]
  • numerical_parameters/ln2 [real,parameter=0.6931471806]
  • numerical_parameters/log4 [real,parameter=0.602059991]
  • numerical_parameters/log_lsun_erg [real,parameter=33.5848963]
  • numerical_parameters/logang2m [real,parameter=-10.0]
  • numerical_parameters/logc_light [real,parameter=8.4768207]
  • numerical_parameters/logc_light_angstroms [real,parameter=18.476820699999998]
  • numerical_parameters/logdeca [real,parameter=1.0]
  • numerical_parameters/logev2erg [real,parameter=-11.7952894176]
  • numerical_parameters/loggyr2s [real,parameter=16.499103967]
  • numerical_parameters/loghecto [real,parameter=2.0]
  • numerical_parameters/logj2erg [real,parameter=7.0]
  • numerical_parameters/logk_boltzmann [real,parameter=-22.859916308]
  • numerical_parameters/logkilo [real,parameter=3.0]
  • numerical_parameters/logl_ab0 [real,parameter=13.637910954000002]
  • numerical_parameters/loglsun [real,parameter=26.5848963]
  • numerical_parameters/loglsun_bc [real,parameter=26.5868122]
  • numerical_parameters/logm2cm [real,parameter=2.0]
  • numerical_parameters/logmega [real,parameter=6.0]
  • numerical_parameters/logmpc2asat10pc [real,parameter=10.31442513287]
  • numerical_parameters/logpc2m [real,parameter=16.489350545]
  • numerical_parameters/logpi [real,parameter=0.497149873]
  • numerical_parameters/lograd2as [real,parameter=5.31442513287]
  • numerical_parameters/long_bn [integer,parameter=selected_int_kind(16)]
  • numerical_parameters/lsun [real,parameter=3.845e+26]
  • numerical_parameters/lsun40_bc [real,parameter=3.862e-07]
  • numerical_parameters/lsun_bc [real,parameter=3.862e+26]
  • numerical_parameters/lsun_erg [real,parameter=3.8450000000000004e+33]
  • numerical_parameters/lw_mode [integer]
  • numerical_parameters/m2cm [real,parameter=100.0]
  • numerical_parameters/m32cm3 [real,parameter=1000000.0]
  • numerical_parameters/m8crit [real,parameter=595167835572453.2]
  • numerical_parameters/m_atomic [real,parameter=1.66053873e-27]
  • numerical_parameters/m_atomic_g [real,parameter=1.66053873e-24]
  • numerical_parameters/m_be [real,parameter=1000.0]
  • numerical_parameters/m_cha_out [real]
  • numerical_parameters/m_electron [real,parameter=9.10938188e-31]
  • numerical_parameters/mean_mol [real,parameter=1.2281617489023304]
  • numerical_parameters/mega [real,parameter=1000000.0]
  • numerical_parameters/mend [real,parameter=2.0]

    , Mcutoff !, MLongLive

  • numerical_parameters/milli [real,parameter=0.001]
  • numerical_parameters/mp_cgs [real,parameter=1.673e-24]
  • numerical_parameters/mpc2asat10pc [real,parameter=20626480624.64262]
  • numerical_parameters/mpc2cm [real,parameter=3.0856775807e+24]
  • numerical_parameters/mpc2m [real,parameter=3.0856775807e+22]
  • numerical_parameters/mpc_cgs [real,parameter=3.0857e+24]
  • numerical_parameters/mpckm2gyr [real,parameter=977.79222143002]
  • numerical_parameters/mres [real,parameter=500000.0]
  • numerical_parameters/msolar [real,parameter=1.9891e+30]
  • numerical_parameters/msolar_1030kg [real,parameter=1.9890999999999999]
  • numerical_parameters/msolar_g [real,parameter=1.9891e+33]
  • numerical_parameters/mstart [real,parameter=-2.0]
  • numerical_parameters/msun_cgs [real,parameter=1.989e+33]
  • numerical_parameters/msun_mpc3_cgs [real,parameter=6.769766377778569e-41]
  • numerical_parameters/mu_primordial [real,parameter=0.5847493469151946]
  • numerical_parameters/myr2s [real,parameter=31557600000000.0]
  • numerical_parameters/n_b_cgs [real,parameter=2.038744909036926e-07]
  • numerical_parameters/n_cloud_default [real,parameter=1000]

    ! dense, and diffuse density in the cold phase

  • numerical_parameters/n_cold_default [real,parameter=100.0]
  • numerical_parameters/n_h_cgs [real,parameter=1.5337477950684792e-07]
  • numerical_parameters/n_ionii [real,parameter=4000.0]
  • numerical_parameters/n_ioniii [real,parameter=90000.0]
  • numerical_parameters/n_spec [real,parameter=0.9667]
  • numerical_parameters/nextoutputid [integer]
  • numerical_parameters/nlev [integer]
  • numerical_parameters/nlev_max [integer,parameter=400]
  • numerical_parameters/nstarmassbinii [integer,parameter=64]
  • numerical_parameters/nstarmassbiniii [integer,parameter=64]
  • numerical_parameters/omega_b [real,parameter=0.0486]
  • numerical_parameters/omega_l [real,parameter=0.6911]
  • numerical_parameters/omega_m [real,parameter=0.3089]
  • numerical_parameters/pc2cm [real,parameter=3.0856775807e+18]
  • numerical_parameters/pc2m [real,parameter=3.0856775807e+16]
  • numerical_parameters/pi [real,parameter=3.1415926536]
  • numerical_parameters/pi4 [real,parameter=12.5663706144]
  • numerical_parameters/pio2 [real,parameter=1.5707963268]
  • numerical_parameters/pio4 [real,parameter=0.7853981634]
  • numerical_parameters/pisq [real,parameter=9.86960440115349]
  • numerical_parameters/popii_slope [real,parameter=2.3]
  • numerical_parameters/rad2as [real,parameter=206264.80624642622]
  • numerical_parameters/rad2degrees [real,parameter=57.29577951289617]
  • numerical_parameters/rdisk_half_scale [real,parameter=1.67834699]
  • numerical_parameters/rho_b_ast [real,parameter=6187863374.547873]
  • numerical_parameters/rho_b_cgs [real,parameter=4.189038942330162e-31]
  • numerical_parameters/rho_crit_cgs [real,parameter=8.619421692037372e-30]
  • numerical_parameters/rho_m_cgs [real,parameter=2.6625393606703443e-30]
  • numerical_parameters/rhocrit [real,parameter=277511434571.3454]
  • numerical_parameters/right_angle_degrees [real,parameter=90.0]
  • numerical_parameters/semi_circle_degrees [real,parameter=180.0]
  • numerical_parameters/sigma_8 [real,parameter=0.8159]
  • numerical_parameters/sigma_t [real,parameter=6.65e-25]
  • numerical_parameters/sigma_thomson [real,parameter=6.65245854e-29]
  • numerical_parameters/slope [real]
  • numerical_parameters/sqrt2 [real,parameter=1.4142135624]
  • numerical_parameters/sqrt2opi [real,parameter=0.7978845608]
  • numerical_parameters/sqrt2pi [real,parameter=2.5066282746]
  • numerical_parameters/sqrtatomic_mass_hydrogen [real,parameter=1.00396215]
  • numerical_parameters/sqrtdelta200 [real,parameter=14.142135623]
  • numerical_parameters/sqrtg [real,parameter=6.558435567945511e-05]
  • numerical_parameters/sqrtg_si [real,parameter=8.16859228998e-06]
  • numerical_parameters/sqrtk_boltzmann [real,parameter=3.715710295489e-12]
  • numerical_parameters/sqrtm_atomic [real,parameter=4.07497083425e-14]
  • numerical_parameters/sqrtmpc2m [real,parameter=175660968365.0]
  • numerical_parameters/sqrtmsolar [real,parameter=1410354565300000.0]
  • numerical_parameters/sqrtpi [real,parameter=1.7724538509]
  • numerical_parameters/sqrtrhocrit [real,parameter=526793.5407696816]
  • numerical_parameters/stdout_bn [integer,parameter=10]
  • numerical_parameters/surf_dens_norm_half [real,parameter=0.0297114]
  • numerical_parameters/t_crit [real,parameter=2200.0]
  • numerical_parameters/t_ion [real,parameter=10000.0]
  • numerical_parameters/t_univ [real,parameter=4.3549644e+17]
  • numerical_parameters/tree_mass [real]
  • numerical_parameters/v_com [real]
  • numerical_parameters/v_enrich_popiii [real,parameter=11000000.0]
  • numerical_parameters/v_out [real,parameter=11000000.0]
  • numerical_parameters/vbc [real]
  • numerical_parameters/x_hydrogen [real,parameter=0.778]
  • numerical_parameters/x_hydrogen_solar [real,parameter=0.7381]
  • numerical_parameters/xh [real,parameter=0.7523]
  • numerical_parameters/y_helium [real,parameter=0.222]
  • numerical_parameters/y_helium_solar [real,parameter=0.2485]
  • numerical_parameters/year_cgs [real,parameter=31560000.0]
  • numerical_parameters/yhe [real,parameter=0.2477]
  • numerical_parameters/z_crit [real,parameter=-5.0]
  • numerical_parameters/z_metals [real,parameter=5.36e-10]
  • numerical_parameters/z_metals_solar [real,parameter=0.0134]

resolution parameters

Quick access

Variables

m_ccsn_max, m_ccsn_min, m_ion, m_pisn_max, m_pisn_min, m_survive, zmax, zmin

Variables

  • resolution_parameters/m_ccsn_max [real,parameter=40]

    Mass range for CCSNe

  • resolution_parameters/m_ccsn_min [real,parameter=10]
  • resolution_parameters/m_ion [real,parameter=5]

    Stellar mass above which we account for ionizing radition

  • resolution_parameters/m_pisn_max [real,parameter=260]

    Mass range for PISNe

  • resolution_parameters/m_pisn_min [real,parameter=140]
  • resolution_parameters/m_survive [real,parameter=0.81]

    Stellar mass with lifetime 13.8Gyr.

  • resolution_parameters/zmax [real,parameter=35.0]
  • resolution_parameters/zmin [real,parameter=0.0]

Precomputed time-dependent quantities

crit_masses

Quick access

Variables

atomic_cooling_mass, mcrit

Routines

get_atomic_cooling_mass(), get_crit_mass(), get_m_vir(), get_mcrit_schauer(), get_mcrit_stacy(), get_t_vir(), set_mcrit()

Needed modules

Variables

  • crit_masses/atomic_cooling_mass (nlev_max) [real,protected]
  • crit_masses/mcrit (nlev_max) [real,protected]

Subroutines and functions

subroutine  crit_masses/set_mcrit()
Called from

asloth

Call to

get_crit_mass(), get_atomic_cooling_mass()

function  crit_masses/get_crit_mass(z)

Determines critical mass for star formation at current redshift

Parameters

z [real,in] :: redshift

Return

get_crit_mass [real]

Called from

set_mcrit()

Call to

get_mcrit_schauer(), get_mcrit_stacy(), get_atomic_cooling_mass()

function  crit_masses/get_mcrit_stacy(z)

Modified to also check Jeans Mass calculated with modified speed of sound See Stacy et al. 2011

Parameters

z [real,in] :: redshift

Return

get_mcrit_stacy [real]

Called from

get_crit_mass()

Call to

get_m_vir()

function  crit_masses/get_mcrit_schauer(z)

based on Schauer+21, MNRAS, Volume 507, Issue 2, pp.1775-1787 Critical mass for halo collapse with LW feedback and baryonic streaming

Parameters

z [real,in] :: redshift

Return

get_mcrit_schauer [real]

Called from

get_crit_mass()

function  crit_masses/get_atomic_cooling_mass(z)

the atomic cooling mass is the virial mass of 10^4 K

Parameters

z [real,in] :: redshift

Return

get_atomic_cooling_mass [real]

Called from

set_mcrit(), get_crit_mass()

Call to

get_m_vir()

function  crit_masses/get_m_vir(z, t)

function determines the halo mass corresponding to a virial temperature we use the definition of Hummel et al 2012

Parameters
  • z [real,in] :: redshift

  • t [real,in] :: virial temperature

Return

get_m_vir [real]

Called from

get_mcrit_stacy(), get_atomic_cooling_mass()

function  crit_masses/get_t_vir(m, z)
Parameters
  • m [real,in]

  • z [real,in]

Return

t [real]

Called from

sf_step()

cosmic_time

Quick access

Variables

a3_inv, alev, tlev, zlev

Routines

cosmic_dt(), distribute_cosmic_time(), dtdz(), read_scale_file(), set_cosmic_time()

Needed modules

Variables

  • cosmic_time/a3_inv (nlev_max) [real,protected]

    1/(a^3)

  • cosmic_time/alev (nlev_max) [real,protected]

    cosmic expansion factor

  • cosmic_time/tlev (nlev_max) [real,protected]

    time since big bang

  • cosmic_time/zlev (nlev_max) [real,protected]

    redshift

Subroutines and functions

subroutine  cosmic_time/set_cosmic_time()

subroutine to set redshift steps and compute expansion factors and cosmic time

Called from

asloth

Call to

read_scale_file(), distribute_cosmic_time(), cosmic_dt()

subroutine  cosmic_time/distribute_cosmic_time()

subroutine to distribute redshift steps (either linearly or logarithmically)

Called from

set_cosmic_time()

subroutine  cosmic_time/read_scale_file()

subroutine to read the redshift steps from scale file

Called from

set_cosmic_time()

function  cosmic_time/dtdz(a)

Subroutine to calculate absolute value of dt/dz in seconds for density field normalized at reference epoch a0=1.

Notation:

Parameters

a [real,in] ::

expansion factor rel to a0=1

Uses

Return

res [real]

Use

numerical_parameters (hubble_cgs(), omega_l(), omega_m())

Called from

cosmic_dt()

function  cosmic_time/cosmic_dt(z1, z2)

determines the time in seconds between redshift z1 and z2

Parameters
  • z1 [real,in]

  • z2 [real,in]

Return

res [real]

Called from

set_cosmic_time()

Call to

dtdz()

EPS wrapper

eps_wrapper

Description

module to interface with the Parkinson et al. 2008 tree generation routines

Quick access

Routines

make_eps_tree()

Needed modules

Subroutines and functions

subroutine  eps_wrapper/make_eps_tree()
Called from

asloth

Call to

set_tree_params(), memory(), make_tree(), walk_tree()

Chemistry

chemistry

Quick access

Variables

abhe, x_ion

Routines

ch21(), ch22(), cl4(), cl64(), fh2_crit(), h2_cooling_rate(), h2_form_rate(), ph4(), t_hot2cold()

Needed modules

Variables

  • chemistry/abhe [real,parameter=y_helium/x_hydrogen/4.0]
  • chemistry/x_ion [real,parameter=0.0002]

    residual ionization fraction

Subroutines and functions

function  chemistry/t_hot2cold(n, t, z)
Parameters
  • n [real,in]

  • t [real,in]

  • z [real,in]

Return

res [real]

Called from

timescaledetermination()

Call to

fh2_crit(), h2_form_rate()

function  chemistry/h2_form_rate(n, t, z)
Parameters
  • n [real,in]

  • t [real,in]

  • z [real,in]

Return

res [real]

Called from

t_hot2cold()

Call to

ch21(), ph4(), ch22()

function  chemistry/fh2_crit(n, t, z)
Parameters
  • n [real,in]

  • t [real,in]

  • z [real,in]

Return

res [real]

Called from

t_hot2cold()

Call to

h2_cooling_rate()

function  chemistry/h2_cooling_rate(n, t)
Parameters
  • n [real,in]

  • t [real,in]

Return

res [real]

Called from

fh2_crit()

Call to

cl4(), cl64()

function  chemistry/ch22(temp)
Parameters

temp [real,in]

Return

res [real]

Called from

h2_form_rate()

function  chemistry/ch21(temp)
Parameters

temp [real,in]

Return

res [real]

Called from

h2_form_rate()

function  chemistry/ph4(z)
Parameters

z [real,in]

Return

res [real]

Called from

h2_form_rate()

function  chemistry/cl64(temp)
Parameters

temp [real,in]

Return

res [real]

Called from

h2_cooling_rate()

function  chemistry/cl4(temp)
Parameters

temp [real,in]

Return

res [real]

Called from

h2_cooling_rate()

Input files

Description

List of input files

Quick access

Variables

lines_lt_popii, lines_mmetals_popii, lines_qion_popii, mtree_file, output_string, pkinfile_dummy, popii_lt_file, popii_mmetals_file, popii_qion_file, popii_yields_file, popiii_yields_file, scale_file, tree_file, tree_name, tree_path

Variables

  • input_files/lines_lt_popii [integer]
  • input_files/lines_mmetals_popii [integer,parameter=27]
  • input_files/lines_qion_popii [integer]
  • input_files/mtree_file [character,parameter='tree_files/mass_estimates_lx13.dat']
  • input_files/output_string [character]
  • input_files/pkinfile_dummy [character,parameter='data/kvector_z1.txt']

    is later passed on to pkinfile

  • input_files/popii_lt_file [character]
  • input_files/popii_mmetals_file [character,parameter='data/kobayashi2006_z1e-3_mmetal.txt']
  • input_files/popii_qion_file [character]
  • input_files/popii_yields_file [character,parameter='data/kobayashi2006_z1e-3.txt']
  • input_files/popiii_yields_file [character,parameter='data/yields_isotopes_sum_tr.dat']
  • input_files/scale_file [character]
  • input_files/tree_file [character]
  • input_files/tree_name [character]
  • input_files/tree_path [character]

Memory modules

Tree_memory_arrays

Description

This module is use for managing the memory of the merger tree

Quick access

Variables

mergertree_aux

Needed modules

Variables

  • tree_memory_arrays/mergertree_aux (*) [treenode,target/allocatable]

Tree_memory_arrays_passable

Description

This module is used to reference the merger tree

Quick access

Variables

mergertree, number_of_nodes

Routines

tree_index()

Needed modules

Variables

  • tree_memory_arrays_passable/mergertree (*) [treenode,pointer]
  • tree_memory_arrays_passable/number_of_nodes [integer]

Subroutines and functions

function  tree_memory_arrays_passable/tree_index(node)
Parameters

node [treenode,pointer]

Return

tree_index [integer,pure]

Called from

associate_siblings()

Star formation

SF_routines

Quick access

Routines

add_hmstars(), add_to_base_mstariisurv(), coldgasbindingenergy_cold(), coldgasbindingenergy_hot(), coldgasbindingenergy_nfw(), coldgasbindingenergy_stellar(), dm_concen(), get_n_ion(), hms_feedback(), hotgasbindingenergy_disk(), hotgasbindingenergy_hot(), hotgasbindingenergy_nfw(), imfsampling(), nfw_const(), rm_hmstars(), snedrivenoutflow(), survivingstarlist(), timescaledetermination(), writellstarstofileanddel()

Needed modules

Subroutines and functions

subroutine  sf_routines/add_hmstars(p_node, ii, timeborn, num_, zgas, pop)
Parameters
  • p_node [treenode,inout]

  • ii [integer,in]

  • timeborn [real,in]

  • num [integer,in]

  • zgas (n_elements) [real,in]

  • pop [integer,in]

Called from

imfsampling()

subroutine  sf_routines/rm_hmstars(p_node, highstar)
Parameters
Called from

hms_feedback()

function  sf_routines/get_n_ion(p_node, t_current, del_t)

This routine calculates the total number of ionizing photons emitted during this time-step

Parameters
  • p_node [treenode,inout] :: the halo

  • t_current [real,in] :: beginning of the sub-step

  • del_t [real,in] :: time-step

Return

n_ion_tot [real] :: number of total ionizing photons

Called from

sf_step()

subroutine  sf_routines/hms_feedback(p_node, t_current, totalmetalejectathisstep, totalsneenergythisstep, m_heat, rel_del_t)

This routine calculates the cold gas mass that will be heated/ blown out from the halo and the explosion energy/ ejecta from SNe.

Parameters
  • p_node [treenode,inout] :: the halo

  • t_current [real,in] :: beginnng of the sub-step

  • totalmetalejectathisstep (n_elements) [real,inout] :: metals produced in this time-step

  • totalsneenergythisstep [real,out] :: Msun cm^2 s^-2

  • m_heat [real,out] :: mass that will trasfer from cold to hot in this time-step

  • rel_del_t [real,in] :: time-step

Called from

sf_step()

Call to

add_to_m_metals(), rm_hmstars()

subroutine  sf_routines/add_to_base_mstariisurv(this_node)

Inherit M_star_II_surv to the base node at the final redshift

Parameters

this_node [treenode,inout]

Called from

asloth

subroutine  sf_routines/survivingstarlist(p_node, num, ii, z, timeborn, pop)

Non-standard routine if users are interested in stellar information of survival stars in satellites

Parameters
  • p_node [treenode,inout] :: the halo

  • num [integer,in] :: number of stars in this IMF mass bin

  • ii [integer,in] :: index of the IMF mass bin

  • z (n_elements) [real,in] :: metallicity of the star

  • timeborn [real,in] :: time of star formation

  • pop [integer,in] :: stellar population

Called from

imfsampling()

subroutine  sf_routines/writellstarstofileanddel(p_node)
Parameters

p_node [treenode,inout]

Called from

sf_step()

subroutine  sf_routines/imfsampling(p_node, totalmassnewstars, m_star_form, t_current, this_rng, zgas, pop)

This routine samples individual stars from the IMF and store massive stars in the list.

Parameters
  • p_node [treenode,inout] :: the halo

  • totalmassnewstars [real,inout] :: total mass of newly formed stars

  • m_star_form [real,in] :: estimated total stellar mass based on cold gas mass and star formation efficiency

  • t_current [real,in] :: the time in the beginning of the time-step

  • this_rng [rng,inout] :: random number generator

  • zgas (n_elements) [real,in] :: gas metallicity

  • pop [population,in] :: stellar population

Use

trace_mdf

Called from

sf_step()

Call to

get_mdf_bin(), poisson(), add_hmstars(), survivingstarlist(), add_to_node_mdf()

subroutine  sf_routines/dm_concen(m_halo, z, dm_concentration)

This routine determins the concentration of the NFW profile. We adopt the fitting curve by Correa et al. 2015 (doi:10.1093/mnras/stv1363) Planck cosmology (appendix B) Note that the fitting functions are valid for z=0-10 based on private conversation

Parameters
  • m_halo [real,in] :: virial mass of the halo

  • z [real,in] :: current redshift

  • dm_concentration [real,out] :: (arbitrary) constant value, reference from Fig. 7 in Correa et al. 2015 for haloes > 10^5 Msun

Called from

sf_step()

subroutine  sf_routines/timescaledetermination(p_node, v_dyn, t_dyn, ncold, n_hot, coldgas_tff, r_vir_current, dm_concentration, t_vir, t_cool)

This routines determines all the relative timescales that we need. Note that the time scales we eventually use are dimensionless.

Parameters
  • p_node [treenode,inout] :: This also includes “dead” stars

  • v_dyn [real,inout] :: s; dynamical time of the halo center

  • t_dyn [real,inout] :: dynamical timescale of central part of the halo

  • ncold [real,inout] :: number density of cold gas

  • n_hot [real,inout] :: number density of hot gas

  • coldgas_tff [real,inout] :: free fall time of cold gas

  • r_vir_current [real,in] :: the current virial raius of the halo

  • dm_concentration [real,in] :: dark matter halo concentration

  • t_vir [real,in] :: virial temperature of the halo

  • t_cool [real,inout] :: cooling time of hot gas

Called from

sf_step()

Call to

t_hot2cold()

function  sf_routines/nfw_const(r_s, r_vir_current)
Parameters
  • r_s [real,in]

  • r_vir_current [real,in]

Return

a [real]

Called from

hotgasbindingenergy_nfw(), coldgasbindingenergy_nfw()

function  sf_routines/hotgasbindingenergy_nfw(r_s, r_vir_current, m_hot, m_peak)
Parameters
  • r_s [real,in]

  • r_vir_current [real,in]

  • m_hot [real,in]

  • m_peak [real,in]

Return

be_hot_nfw [real]

Called from

snedrivenoutflow()

Call to

nfw_const()

function  sf_routines/hotgasbindingenergy_disk(r_s, r_vir_current, m_hot, m_disk)
Parameters
  • r_s [real,in]

  • r_vir_current [real,in]

  • m_hot [real,in]

  • m_disk [real,in]

Return

be_hot_disk [real]

Called from

snedrivenoutflow()

function  sf_routines/hotgasbindingenergy_hot(r_vir_current, m_hot)
Parameters
  • r_vir_current [real,in]

  • m_hot [real,in]

Return

be_hot_hot [real]

Called from

snedrivenoutflow()

function  sf_routines/coldgasbindingenergy_nfw(r_s, r_vir_current, m_cold, m_peak)
Parameters
  • r_s [real,in]

  • r_vir_current [real,in]

  • m_cold [real,in]

  • m_peak [real,in]

Return

be_cold_nfw [real]

Called from

snedrivenoutflow()

Call to

nfw_const()

function  sf_routines/coldgasbindingenergy_stellar(r_s, m_cold, m_stellar)
Parameters
  • r_s [real,in]

  • m_cold [real,in]

  • m_stellar [real,in]

Return

be_cold_stellar [real]

Called from

snedrivenoutflow()

function  sf_routines/coldgasbindingenergy_hot(r_s, r_vir_current, m_cold, m_hot)
Parameters
  • r_s [real,in]

  • r_vir_current [real,in]

  • m_cold [real,in]

  • m_hot [real,in]

Return

be_cold_hot [real]

Called from

snedrivenoutflow()

function  sf_routines/coldgasbindingenergy_cold(r_s, m_cold)
Parameters
  • r_s [real,in]

  • m_cold [real,in]

Return

be_cold_cold [real]

Called from

snedrivenoutflow()

subroutine  sf_routines/snedrivenoutflow(p_node, r_vir_current, dm_concentration, totalsneenergythisstep, del_m_hot, totalmassnewstars, m_out_hot, m_out_cold)

This routines determines the binding energy of hot gas and cold gas. It then compare the SNe energy and the binding energy to determine how much gas SNe will blow out of the halo.

Parameters
  • p_node [treenode,inout] :: the halo

  • r_vir_current [real,in] :: current virial radius of the halo

  • dm_concentration [real,in] :: dark matter halo’s concentration

  • totalsneenergythisstep [real,inout] :: sum of SNe energy that occur in this time-step

  • del_m_hot [real,in] :: smoothly accreted hot gas in this time-step

  • totalmassnewstars [real,in] :: total newly formed stellar mass in this time-step

  • m_out_hot [real,inout] :: hot gas mass that ends up in outflow in this time-step

  • m_out_cold [real,inout] :: cold gas mass that ends up in outflow in this time-step

Called from

sf_step()

Call to

hotgasbindingenergy_nfw(), hotgasbindingenergy_disk(), hotgasbindingenergy_hot(), coldgasbindingenergy_nfw(), coldgasbindingenergy_stellar(), coldgasbindingenergy_hot(), coldgasbindingenergy_cold()

Star_formation

Quick access

Routines

add_parent_to_tree(), dt_adaptive(), m_star_dot(), prepare_node(), sf_step()

Needed modules

Subroutines and functions

subroutine  star_formation/prepare_node(p_node, m_star_max, is_ion)
Parameters
  • p_node [treenode,inout] :: parent node

  • m_star_max [real,out]

  • is_ion [logical,out] :: set from most massive child

Called from

sf_step()

Call to

check_m_metals(), inherit_igm_z()

subroutine  star_formation/sf_step(node)
Parameters

node [treenode,inout,target]

Called from

asloth

Call to

prepare_node(), rvir_mpc(), dm_concen(), get_t_vir(), check_m_metals(), get_metallicity(), calc_dz(), metalpoor(), timescaledetermination(), dt_adaptive(), m_star_dot(), imfsampling(), get_n_ion(), hms_feedback(), snedrivenoutflow(), assert(), v_plow_ad(), r_ion_ad(), writellstarstofileanddel()

subroutine  star_formation/add_parent_to_tree(node)
Parameters

node [treenode,inout]

Called from

asloth

Call to

add_bubble_to_tree(), get_m_metals()

function  star_formation/dt_adaptive(p_node, coldgas_tff, t_dyn, del_m_hot, del_t, t_step, pop_now)

timestep in sec

Parameters
  • p_node [treenode,in]

  • coldgas_tff [real,in]

  • t_dyn [real,in]

  • del_m_hot [real,in]

  • del_t [real,in]

  • t_step [real,in]

  • pop_now [integer,in]

Return

dt_adaptive [real]

Called from

sf_step()

Call to

m_star_dot()

function  star_formation/m_star_dot(m_cold, coldgas_tff, pop_now)

star formation rate in this substep (Msun/s)

Parameters
  • m_cold [real,in]

  • coldgas_tff [real,in]

  • pop_now [integer,in]

Return

m_star_dot [real]

Use

numerical_parameters (etaii(), etaiii())

Called from

sf_step(), dt_adaptive()

Stellar feedback

feedback_routines

Quick access

Routines

node_feedback(), self_enrichment(), statistical_feedback()

Needed modules

Subroutines and functions

subroutine  feedback_routines/node_feedback(this_node)
Parameters

this_node [treenode,target]

Called from

asloth

Call to

self_enrichment(), statistical_feedback(), bubble_check(), ion_check()

subroutine  feedback_routines/self_enrichment(node)

This routine computes feedback exactly as the bubble-tree in the case that there is only self-enrichment

Parameters

node [treenode]

Called from

node_feedback()

subroutine  feedback_routines/statistical_feedback(this_node)
Parameters

this_node [treenode,target]

Use

random_object

Called from

node_feedback()

Call to

get_ran()

snowplow

Quick access

Routines

r_ion_ad(), v_plow_ad()

Needed modules

Subroutines and functions

function  snowplow/v_plow_ad(m, z, r, r_v)
Parameters
  • m [real,in]

  • z [real,in]

  • r [real,in]

  • r_v [real,in]

Return

v [real]

Called from

sf_step()

function  snowplow/r_ion_ad(nion, r_old, z, del_t, mhalo)
Parameters
  • nion [real,in]

  • r_old [real,in]

  • z [real,in]

  • del_t [real,in]

  • mhalo [real,in]

Return

r_new [real]

Called from

sf_step()

Call to

rvir_mpc(), rvir()

Feedback tracing

feedback_arrays

Quick access

Variables

sfr, v_enriched, v_ionized

Routines

add_to_feedback_volumes(), add_to_sfr()

Needed modules

Variables

  • feedback_arrays/sfr (2,nlev_max) [real,protected/optional/default=0]

    SFR: population, timestep

  • feedback_arrays/v_enriched (nlev_max) [real,protected/optional/default=0]
  • feedback_arrays/v_ionized (nlev_max) [real,protected/optional/default=0]

    (in physical Mpc^3)

Subroutines and functions

subroutine  feedback_arrays/add_to_feedback_volumes(node)
Parameters

node [treenode]

Called from

asloth

subroutine  feedback_arrays/add_to_sfr(node)
Parameters

node [treenode]

Called from

asloth

volume_fractions

Quick access

Routines

get_fracs()

Needed modules

Subroutines and functions

subroutine  volume_fractions/get_fracs(jlevel)
Parameters

jlevel [integer,in]

Use

random_object

Called from

asloth

Call to

get_ran(), position_check()

Outputs

to_file

Quick access

Types

file_specs

Routines

add_timestamp(), close_outputs(), init_outputs(), outputs_satellites(), write_file(), write_files(), write_files_reali(), write_mw_properties()

Needed modules

Types

  • type  to_file/file_specs
    Type fields
    • % file_string [character]

    • % head1 [character]

    • % head2 [character]

    • % out_dir [character]

    • % stuff (30,nlev_max) [real]

    • % var_name [character]

Variables

Subroutines and functions

subroutine  to_file/init_outputs()
Called from

asloth

Call to

add_timestamp()

subroutine  to_file/write_file(fs, var_name, ncoll)
Parameters
  • fs [file_specs]

  • var_name [character]

  • ncoll [integer] :: loop writes one line

Called from

write_files()

subroutine  to_file/outputs_satellites(count)
Parameters

count [integer]

Use

tree_memory_arrays_passable, trace_mdf

Called from

asloth

Call to

rvir_mpc(), add_to_node_mdf()

subroutine  to_file/write_files_reali()
Use

tree_memory_arrays_passable, input_files, metal_functions, trace_mdf

Called from

asloth

Call to

rvir_mpc(), add_to_node_mdf()

subroutine  to_file/write_files(output)
Parameters

output [file_specs,inout]

Called from

asloth

Call to

real_to_string(), write_file()

subroutine  to_file/close_outputs()

go through list of possible open file IDs

Called from

asloth

subroutine  to_file/add_timestamp(output_path)
Parameters

output_path [character,inout]

Called from

init_outputs()

Call to

int_to_string4(), int_to_string2()

subroutine  to_file/write_mw_properties()
Use

tree_memory_arrays_passable, input_files

Called from

asloth