A-SLOTH Documentation

The semi-analytical model A-SLOTH (Ancient Stars and Local Observables by Tracing Halos) is the first public code that connects the formation of the first stars and galaxies to observables. The model is based on dark matter merger trees that can either be generated based on Extended Press-Schechter theory or that can be imported from dark matter simulations. On top of these merger trees, A-SLOTH applies analytical recipes for baryonic physics to model the formation of both metal-free and metal-poor stars and the transition between. A-SLOTH samples individual stars and includes radiative, chemical, and mechanical feedback. It is calibrated based on six observables, such as the optical depth to Thomson scattering, the stellar mass of the Milky Way and its satellite galaxies, the number of extremely-metal poor stars, and the cosmic star formation rate density at high redshift. A-SLOTH has versatile applications with moderate computational requirements. It can be used to constrain the properties of the first stars and high-z galaxies based on local observables, predicts properties of the oldest and most metal-poor stars in the Milky Way, can serve as a subgrid model for larger cosmological simulations, and predicts next-generation observables of the early Universe, such as supernova rates or gravitational wave events. More details on the astrophysical models can be found in our ApJ paper.
Getting Started
You can clone A-SLOTH to your machine with:
git clone https://gitlab.com/thartwig/asloth.git
If you encounter a problem or error at any point, you can consult the section on debugging, which contains a list of known problems and their solutions.
System Requirements and Dependencies
To run A-SLOTH you need a fortran compiler. We tested recent ifort and gfortran compilers, but you are welcone to try different ones. Set the correct compiler in the Makefile. A-SLOTH uses some features of the 2003 and 2008 standards of fortran, so very old compilers will probably not work. You will also need an Open-MP library if you want to run the code in parallel and python 3 and if you indend to use our plotting scripts. The Code is usually using a large amount of RAM. The fiducial EPS-based mode required about 4GB of RAM. We recommend 24-64 GB of RAM for modelling a full Milky Way based on the Caterpillar merger trees.
We have tested A-SLOTH and the provided tutorials on the following systems:
Ubuntu 18.04, gfortran 7.5.0 / gfortran 10.3.0 / ifort 2021.5.0, python 3.8.3
Ubuntu 20.04, gfortran 9.4.0, python 3.8.2
CentOS Linux 7, ifort 2019.2, python 3.8.9
MacOSX 10.14.6, gfortran 11.2.0 / gfortran 8.2.0, python 3.9.9 / python 3.6.13 / python 3.7.3
MacOSX 10.15.7, gfortran 9.2.0, python 3.7.10
To execute the python analysis scripts, you might need to install the additional python packages (for example with pip3 install PackageName
)
numpy
scipy
matplotlib
pandas
psutil
astropy
In addition, if you want to compute a p-value for the model (comparison with observables), you need to install ‘R’ and the following python pacages.
sklearn
rpy2
Tutorials
The following tutorials will guide you through the basic functions and applications of A-SLOTH. We recommand to complete these tutorials in order. A walk-through for the tutorials is provided on YouTube.
The tutorials are based on the public release version of A-SLOTH with no other modifications. If a tutorial does not work, you might want to first reset A-SLOTH to the fiducial version, i.e., by checking git status
, and by running make clean
. Or you might need to first delete or rename previous output folders in the A-SLOTH directory.
If not stated otherwise, all commands should be executed from the main A-SLOTH directory.
All python scripts in these tutorials should be run with python 3.
Tutorial 1: Hello A-SLOTH
Here, we summarize how you can run A-SLOTH with fiducial settings and check your outputs with standard plotting scripts. Change to the A-SLOTH folder and compile the code with
cd asloth/
make
Then you can run A-SLOTH with the command
./asloth.exe param_template.nml
If everything goes well, you should then see the statement
...
Starting main star formation and feedback loop
Current redshift: 0.0 PROGRESS: [###############################]100.00% -- Complete
A-SLOTH finished successfully.
Now, we can have a look at the results by running python-based plotting scripts:
python scripts/plot_asloth.py
Ideally, the script will use the newest folder to visualize the results. It will also tell you in which folder the plots are saved:
...
The directory output_DATE_TIME exists and we will use it to create plots.
Plots will be saved in output_DATE_TIME/plots/
Adopted EMP fraction in MW: 2.314815e-05
...
The resulting figures should look like this:
or this:
Please note: A-SLOTH is only deterministic if the same random seed, compiler, processor architecture, and optimisation flags are used. Therefore, your simulation output might look slightly different than this plot. As reference, we provide two additional reference values (SEED0, SEED1) with different random seeds to give you an idea how much the random seed can affect the results.
Tutorial 2: Vary one input parameter manually
In this tutorial, we investigate the effect of the Pop III IMF on the MDF. The fiducial model suggests Mmax=210Msun. Let’s see how observables change if we modify this fiducial value to 100Msun or 300Msun (note that the mass range of PISNe is about 140-260Msun). This tutorial consists of two steps: first, we run the 3 different models (Mmax = [100,210,300]Msun). Then we will plot the MDFs from these 3 models
Step 1: Run the three models. To run the fiducial model with Mmax=210Msun, you need to run:
make clean
make
./asloth.exe param_template.nml
Once A-SLOTH has finished, you should have one folder named output_YYYYMMDD_HHMMSS
.
For better overview, you can rename this folder (not necessary, but helps later):
mv output_day_time output_Mmax210
Now, we want to run a second model with a different value for Mmax. For this purpose, we first copy the parameter file:
cp param_template.nml param_Mmax.nml
Then, we open the file param_Mmax.nml
and modify the line with
IMF_max=210 ! maximum mass of PopIII IMF
to the desired value, let’s say 100, and save the parameter file. Now we can run A-SLOTH again with this new parameter file:
./asloth.exe param_Mmax.nml
This should have generated another output folder that you can rename again.
Now you can change IMF_max
in param_Mmax.nml
again and run A-SLOTH a third time.
At the end of this step, you should have three folders with the results of the three runs that are named
output_Mmax100
output_Mmax210
output_Mmax300
Step 2: Plot the results. Open the file scripts/plot_asloth.py
and scroll to the bottom.
Change UserFolder
to
UserFolder = ["output_Mmax100", "output_Mmax210", "output_Mmax300"]
and UserLabels
to
UserLabels = ["Mmax=100Msun", "Mmax=210Msun", "Mmax=300Msun"]
Furthermore, set plot_newest_folder = False
.
Save the file and run it with
python scripts/plot_asloth.py
The python scripts should have told you
...
Plots will be saved in output_Mmax100/plots/
...
(together with many other information).
So let’s look into this folder, which should contain the file MW_MDF.pdf
, which should look like this (due to different random number generators or seeds, the figure might not look exactly like this one):
We can see that the run with Mmax=100Msun (blue) differs from the other runs in the metallicity range below [Fe/H]=-3. Congratulations! You now know how to run and compare A-SLOTH with different input parameters manually.
Tutorial 3: Explore two input parameters automatically
In this tutorial we want to use A-SLOTH for a parameter exploration and see which observables are most sensitive to the details of PopIII star formation. Specifically, we want to vary the upper mass limit of the PopIII IMF and the PopIII star formation efficiency. Therefore, we run many realizations and sample random pairs of these two parameters. At the end, we visualize the effect of these parameters on the observables.
Optional: you can set the variable path_output
in scripts/wrapper/loop_trees.py
and the variable folder_name
in scripts/wrapper/analyse_trees.py
to a folder in which you want to save the output. Otherwise, output will be written to your A-SLOTH folder.
The following script will run for 15-30Min:
python scripts/wrapper/loop_trees.py
This script launches a python wrapper which will run 32 x 3 EPS merger trees:
Draws random values for Mmax and ETAIII
Checks if enough RAM and CPUs are available
Launches first tree
If sufficient resources are available, it also launches a second and third EPS tree with the same input parameters, but with a different random seed.
It continues with 1)-4) until either 32 x 3 trees are completed OR until 30Min are over.
If sufficient resources are not available (RAM, CPUs, disk I/O), it will wait a few seconds and try again.
Please note: the output to terminal might seem confusing because multiple trees are running at the same time. If the python script finishes before A-SLOTH, you might not get back to the command line prompt at the end of this run. If this is the case, you can press Enter
once the last tree has finished.
Once this script has finished, you should have many folders with the results in your path_output
directory. In addition, the two figures RAM_histogram.pdf
and CPU_histogram.pdf
show you the available resources during the run. This is useful to check if any of these poses a bottleneck to the calculation.
We have prepared another script to extract, digest, and compare the data of the output folders:
python scripts/wrapper/analyse_trees.py
This script goes through all the folders, collects the input parameters from each run, calculates the observables from A-SLOTH, and eventually compares them to real observables. During the run, plots are created in the output folders. The print messages will tell you in which folders you can find the individual plots.
At the end, this script will produce the file Parameter_Exploration.dat
. You can either look at this file manually, analyse it with your favourite software, or use a third script to visualize it:
python scripts/wrapper/tutorial_GridPlot.py
The generated figure Parameter_Exploration_tutorial.pdf
should look like this cut-out:
Tutorial 4: Analyse evolution of baryons in one merger tree branch
In this tutorial, we want to activate one additional compile time option in order to create a plot like this:
This plot shows the evolution of different baryonic quantities as function of cosmic time for one branch of the merger tree. Your plot might look slightly different depending on the random seed. For another example and explanations of the illustrated quantities, see Fig. 3 in Hartwig+22.
To generate the output for this plots, we have to activate the compiler flag OUTPUT_GAS_BRANCH
. To do this, open the file src/asloth.h
and activate the option by remeoving the first !
in that line.
#define OUTPUT_GAS_BRANCH
You should recompile code with
make clean
make
Then, you can run the code with
./asloth.exe param_template.nml
In your output_date_time
folder you should now have the additional file t_gas_substeps.dat
. To illustrate these results, you can use a python script. But first, we have to set the output folder in the script.
Open the file scripts/utilities/plot_tgas.py
and in the very last line change output_folder
to your output folder that was just created. Save the file and run
python scripts/utilities/plot_tgas.py
This should have generated the file t_gas.pdf
in your output folder.
Tutorial 5: Output additional information from A-SLOTH
So far, we have used output files that were already implemented and written to the output folder. Now, we want to learn how users can implement their own desired output to a file.
There are various options to write to a file. One can either keep a file open and write to it incrementally during the run. Or one can write all information to a file at once at the end of the run. In this example, we will look at the subroutine write_files_reali()
in the file src/to_file
, which is called at the end of the run to write outputs to files.
In this file, you will find a section that starts with
!!! TUTORIAL 5: START !!!
At the moment, this code opens a file, writes a header, and closes the file. The do-loop iterates over all dark matter halos in this run and the write statement would write information for every halo. Such a file would be huge with millions of lines. Hence, it is currently deactivated by
if(.False.)then
This routine should write the redshift and stellar mass of halos. Let’s say we want this information only for PopIII-dominated halos, i.e., for halos that contain more PopIII stars than PopII stars.
Change the if-statement so that we only write information of PopIII-dominated halos to the file. Yes, you have to think how this if-statement looks like and can not simply copy it from the handbook as in previous tutorials. When you need additional information what the different node properties mean (Node%quantity), you can look in the file src/defined_types.F90
under type TreeNode
.
Save the file once you have changed the if-statement. Then you can compile and run the code, as you have done in Tutorial 1. Again, you should get a new folder output_date_time
.
To illustrate the results, you can open the python script scripts/utilities/tutorial5.py
, set the correct output_folder
, save it, and run it with
python scripts/utilities/tutorial5.py
Please note that the plot shows cumulative stellar masses, i.e., stellar masses that have formed until a certain redshift, but it does not account for stars that have already died based on their lifetime. While this plot is not immensly informative, this tutorial has shown you how to output and illustrate additional quantities from A-SLOTH. Happy coding!
Configure your simulation
The following files are relevant to change the general behaviour of the code:
Parameter file. We provide the parameter file
param_template.nml
. We recommend to first create a copy of this file if you want to change these values. Numerical values in this file are calibrated to match observations, see Hartwig+22.Config file. You can find the available compile time options in the file
src/asloth.h
. You have to recompile the code if you change these compiler time options.Numerical parameters. You can find additional parameters in the file
src/num_pars.F90
. They are set to recommended values. You might want to change some of these parameters, such as the simulated redshift range, or the halos mass resolution.
How Tos
Debugging
If A-SLOTH is not behaving as expected, this section might help. If the code is not compiling, please check the code requirements.
A-SLOTH requires several GB of RAM. Please check your available RAM before and during the run with top
or free -m
.
If the code is running but crashes (e.g. due to a segmentation fault), we recommend external debugging software such as valgrind.
If the code is running, but the results seem strange to you, you can try the options below.
If you think you found a bug, please report it via the GitLab issue tracker or by e-mail to gloverATuniMINUSheidelberg.de.
Compiler Options
In the file src/asloth.h
you can activate the compile time options DEBUG
, INFO
, and MEM_REPORT
, which will provide additional outputs, especially if something is strange.
Python Scripts
The following python functions can be useful to identify problems with the code:
scripts/plot_asloth.py
scripts/plot_tgas.py
Additional Output
You can print additional information to the terminal or a file to check if variables during the run have the values that you expect. We provide the subroutine print_all_props()
to print additional information of nodes (see file src/defined_types.F90
).
Common Issues
Git clone does not work
If you get the error SSL_ERROR_SYSCALL in connection to gitlab.com:443
or similar, you can also manually download the source code from the repository website.
The code does not compile
This can occur when you modified the ‘asloth.h’ or changed how you compile (e.g. the compiler and/or optimization flags) in the middle of compiling. It may also be helpful recompile the code entirely with
make clean
make
If the reason for being unable to compile is that the compiler is unable to find a module, please re-generate the dependency list via
python scripts/utilities/make_dependency_list.py
The generation of the dependency list fails
If the generation of the dependency list gets stuck and encounters a stack overflow after a while, most likely a circular dependency has been introduced. Be aware that if module A
uses module B
, neither module B
nor any module that uses it can use module A
A-SLOTH does not accept my parameter.nml file
This file contains a set of fortran namelists. All namelists need to be present, even if they are empty. The names of all given parameters need to be identical to the names of the parameters in the specified namelist in the code. They also must have the correct type, and - if its an array - length. Missing quotation marks for a string or superflous quotation marks for a non-string variable are a likely reason.
The code crashes with a strange memory error
Make sure you compile with the options -fbounds-check
(gfortran) or -CB
(ifort). The most common reason for such memory errors is stepping out of bounds of an array. If the error only occurs with ifort but not gfortran, make sure to use the -heap-arrays
flag for compiling. Compiling with -g
(if you do not do so already) will give you slightly improved debugging information. If you recieve a segmentation fault while writing a very long line to a text file, try increasing the recl
parameter when opening the offending file.
Compilation with ifort crashes
If your compilation crashes with
ifort -c src/stellar/IMF.F90 -O3 -fpp -xHost -ipo -heap-arrays -g -r8 -D IFORT -shared-intel -module mods -o build/stellar/IMF.o
src/stellar/IMF.F90(53): warning #6178: The return value of this FUNCTION has not been defined. [RES]
function P_func_dummy(this, m1, m2) result(res)
---------------------------------------------^
you can try to use a newer version of the ifort compiler or the gfortran compiler instead.
Compilation crashes with complaint about finalizers
The error message could look like this:
src/defined_types.F90:80.25:
type(Stars_HighMass), pointer :: HighStars => null()
1
Error: Finalization at (1) is not yet implemented
make: *** [build/defined_types.o] Error 1
Finalizers are only recognized since gcc 4.9. So you probably need a newer version of your compiler.
A-SLOTH crashes with end of file error
At line 46 of file src/cosmic_time.F90
Fortran runtime error: End of file
Make sure that the value of nlev
is correct in the parameter file.
The standard python plotting script does not work
If you try to plot output and it crashes with this error
asloth$ python scripts/plot_asloth.py
Traceback (most recent call last):
File "scripts/plot_asloth.py", line 156, in <module>
MyFit = plot_comparison(UserFolder, UserLabels=UserLabels)
File "scripts/plot_asloth.py", line 51, in plot_comparison
from utilities.utility import asloth_fit
ImportError: No module named utilities.utility
or similar, you can try to run it explicitely with python3 (you should always run the plotting scripts with python3).
Changing which chemical elements are traced
If you want to trace different elements, you can specify these in the parameter file under ElementName
. You should then also update N_ELEMENTS
so that N_ELEMENTS = len(ElementName)+1.
Get a tree
The code can be run in the EPS mode without any additional merger tree data. However, we recommend the EPS mode only for testing. To obtain reliable results, one should obtain dark matter merger trees from simulations. A-SLOTH uses its own binary format. Please contact the team on advice on how to obtain trees. The code includes a sample-script to convert merger trees from consistent-trees to our own format (reindex/reindex.F90, please look at the comments in the source code for instructions on how to use it).
Check Changes
If you have modified the source code and want to check the resulting differences, you can use the provided python scripts to do so. Let’s say you ran the fiducial version of A-SLOTH and saved the output in the folder output_v0
. Then you implement some new physics or improve some routine, run the code again and obtain a new output folder with the name output_v1
.
You can visually compare the output of these two folders with the function scripts/plot_asloth.py
. You should set
UserFolder = ["output_v0","output_v1"]
UserLabels = ["v0","v1"]
plot_newest_folder = False
and run it with python3 scripts/plot_asloth.py
. You can use the produced plots to inspect the changes from your code update.
References and Links
Articles by the ASLOTH collaboration
Chen et al. 2022
Hartwig et al. 2022
Magg et al. 2022
Chen et al. 2022
Tarumi et al. 2020
Hartwig et al. 2018
Magg et al. 2018
Magg et al. 2016
Hartwig et al. 2016b
Hartwig et al. 2016a
Hartwig et al. 2015
The Caterpillar Project
List of Modules and Procedures
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()
,assert()
,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:
- Routines:
Needed modules
input_files
: List of input filesrandom_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
Type definitions
defined_types
Quick access
- Types:
- Routines:
add_baryons()
,del_high_mass()
,make_stars_high_mass()
,print_all_props()
,set_baryons()
Needed modules
metals
(n_elements()
): main module for handling metalsutility
: General purpose utility functions
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 external 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]
Tree Reader
tree_reader
Quick access
- Routines:
Needed modules
input_files
: List of input filestree_memory_arrays_passable
: This module is used to reference the merger treeutility
: General purpose utility functions
Subroutines and functions
- subroutine tree_reader/read_tree(count, read_mass)
- Parameters:
count [integer,out] :: reading tree
read_mass [real,out]
- Called from:
- Call to:
Tree initialization
tree_initialization
Description
prepares tree for running asloth
Quick access
- Routines:
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:
- 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:
- 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:
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:
- 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
Subroutines and functions
- subroutine crit_masses/set_mcrit()
- Called from:
- Call to:
- 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:
- 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:
- Call to:
- 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:
- 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:
- Call to:
- 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:
cosmic_time
Quick access
- Variables:
- Routines:
cosmic_dt()
,distribute_cosmic_time()
,dtdz()
,read_scale_file()
,set_cosmic_time()
Needed modules
input_files
(scale_file()
): List of input files
Variables
Subroutines and functions
- subroutine cosmic_time/set_cosmic_time()
subroutine to set redshift steps and compute expansion factors and cosmic time
- Called from:
- Call to:
- subroutine cosmic_time/distribute_cosmic_time()
subroutine to distribute redshift steps (either linearly or logarithmically)
- Called from:
- subroutine cosmic_time/read_scale_file()
subroutine to read the redshift steps from scale file
- Called from:
- 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 :
- Called from:
- 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:
- Call to:
EPS wrapper
eps_wrapper
Description
module to interface with the Parkinson et al. 2008 tree generation routines
Quick access
- Routines:
Needed modules
power_spectrum_parameters
: Variables used to hold properties of the power spectrummake_tree_module
tree_memory_arrays
: This module is use for managing the memory of the merger treetree_memory_arrays_passable
: This module is used to reference the merger treetree_routines
: % A set of subroutines and functions for manipulating and utilizing the merger trees.modified_merger_tree
tree_initialization
(set_tree_params()
): prepares tree for running asloth
Subroutines and functions
- subroutine eps_wrapper/make_eps_tree()
- Called from:
- Call to:
set_tree_params()
,memory()
,make_tree()
,walk_tree()
Chemistry
chemistry
Quick access
- Variables:
- 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:
- Call to:
- function chemistry/h2_form_rate(n, t, z)
- Parameters:
n [real,in]
t [real,in]
z [real,in]
- Return:
res [real]
- Called from:
- Call to:
- function chemistry/fh2_crit(n, t, z)
- Parameters:
n [real,in]
t [real,in]
z [real,in]
- Return:
res [real]
- Called from:
- Call to:
- function chemistry/h2_cooling_rate(n, t)
- Parameters:
n [real,in]
t [real,in]
- Return:
res [real]
- Called from:
- Call to:
- function chemistry/ch22(temp)
- Parameters:
temp [real,in]
- Return:
res [real]
- Called from:
- function chemistry/ch21(temp)
- Parameters:
temp [real,in]
- Return:
res [real]
- Called from:
- function chemistry/ph4(z)
- Parameters:
z [real,in]
- Return:
res [real]
- Called from:
- function chemistry/cl64(temp)
- Parameters:
temp [real,in]
- Return:
res [real]
- Called from:
- function chemistry/cl4(temp)
- Parameters:
temp [real,in]
- Return:
res [real]
- Called from:
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:
Needed modules
Variables
Tree_memory_arrays_passable
Description
This module is used to reference the merger tree
Quick access
- Variables:
- Routines:
Needed modules
Variables
- tree_memory_arrays_passable/number_of_nodes [integer]
Subroutines and functions
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
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)utility
: General purpose utility functionsmetal_functions
: Helper functions for handling metals and computing abundances and metallicitiesmetals
: main module for handling metalspopulations
: This module contains the type for storing IMFs, and the properties of the stellar populations
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:
- subroutine sf_routines/rm_hmstars(p_node, highstar)
- Parameters:
p_node [treenode,inout]
highstar [stars_highmass,inout,pointer]
- Called from:
- 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
- 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:
- Call to:
- subroutine sf_routines/add_to_base_mstariisurv(this_node)
Inherit M_star_II_surv to the base node at the final redshift
- 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:
- subroutine sf_routines/writellstarstofileanddel(p_node)
- 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 :
- Called from:
- 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:
- 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:
- Call to:
- 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:
- 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:
- Call to:
- 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:
- 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:
- 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:
- Call to:
- 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:
- 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:
- 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:
- 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:
- 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
bubble_tree
: This module containes routines for adding feedback of haloes to the tracing system and for testing whether a halo or a specific point in space is affected by the feedbackmetal_functions
: Helper functions for handling metals and computing abundances and metallicitiesrandom_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)input_files
: List of input filesutility
(iunit_list()
): General purpose utility functionsigm_z
: utility routine for inheriting the IGM metallicity accross time
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:
- Call to:
- subroutine star_formation/sf_step(node)
- Parameters:
node [treenode,inout,target]
- Called from:
- 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:
- Call to:
- 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:
- Call to:
- 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 :
- Called from:
Stellar feedback
feedback_routines
Quick access
- Routines:
Needed modules
bubble_tree
: This module containes routines for adding feedback of haloes to the tracing system and for testing whether a halo or a specific point in space is affected by the feedback
Subroutines and functions
- subroutine feedback_routines/node_feedback(this_node)
- Parameters:
this_node [treenode,target]
- Called from:
- 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:
snowplow
Quick access
- Routines:
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:
- 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:
- Call to:
Feedback tracing
feedback_arrays
Quick access
- Variables:
- Routines:
Needed modules
Variables
Subroutines and functions
- subroutine feedback_arrays/add_to_feedback_volumes(node)
volume_fractions
Quick access
- Routines:
Needed modules
bubble_tree
: This module containes routines for adding feedback of haloes to the tracing system and for testing whether a halo or a specific point in space is affected by the feedbackinput_files
: List of input filesutility
(iunit_list()
): General purpose utility functions
Subroutines and functions
- subroutine volume_fractions/get_fracs(jlevel)
- Parameters:
jlevel [integer,in]
- Use :
- Called from:
- Call to:
Outputs
to_file
Quick access
- Types:
- Routines:
add_timestamp()
,close_outputs()
,init_outputs()
,outputs_satellites()
,write_file()
,write_files()
,write_files_reali()
,write_mw_properties()
Needed modules
input_files
: List of input filesutility
: General purpose utility functionsconverters
: Module for converting numerical values to strings
Types
Variables
Subroutines and functions
- subroutine to_file/init_outputs()
- Called from:
- Call to:
- subroutine to_file/write_file(fs, var_name, ncoll)
- Parameters:
fs [file_specs]
var_name [character]
ncoll [integer] :: loop writes one line
- Called from:
- subroutine to_file/outputs_satellites(count)
- Parameters:
count [integer]
- Use :
- Called from:
- Call to:
- subroutine to_file/write_files_reali()
- Use :
tree_memory_arrays_passable
,input_files
,metal_functions
,trace_mdf
- Called from:
- Call to:
- subroutine to_file/write_files(output)
- Parameters:
output [file_specs,inout]
- Called from:
- Call to:
- subroutine to_file/add_timestamp(output_path)
- Parameters:
output_path [character,inout]
- Called from:
- Call to:
- subroutine to_file/write_mw_properties()
- Use :
- Called from:
Utility modules
Converters
Description
Module for converting numerical values to strings
Quick access
- Routines:
bool2int()
,int_to_string2()
,int_to_string3()
,int_to_string4()
,real_to_string()
,real_to_string3()
Subroutines and functions
- function converters/real_to_string(numb)
- Parameters:
numb [real,in]
- Return:
string [real]
- Called from:
- function converters/real_to_string3(numb)
- Parameters:
numb [real,in]
- Return:
string [real]
- Called from:
- function converters/int_to_string2(numb)
- Parameters:
numb [integer,in]
- Return:
string [real]
- Called from:
- function converters/int_to_string3(numb)
- Parameters:
numb [integer,in]
- Return:
string [real]
- function converters/int_to_string4(numb)
- Parameters:
numb [integer,in]
- Return:
string [real]
- Called from:
- function converters/bool2int(boo)
- Parameters:
boo [logical,in]
- Return:
int_out [integer]
Savitzki-Golay filter
Description
Fortran module with Savitzki-Golay filter to remove high-frequency noise from data The module is optimized for a case in which many arrays need to be smoothed with the same filter. It is intended for smoothing noisy virial masses dependencies: lapack
Quick access
- Variables:
coeff_array
,coeff_matrix
,deriv
,half_window
,order
,rhs_array
,window_size
- Routines:
compute_savgol_coeff()
,fact()
,pad_data()
,savgol_alloc()
,savgol_filter()
,savgol_free()
,set_params()
,set_up_lin_eqs()
Needed modules
utility
: General purpose utility functions
Variables
- filter_module/coeff_array (*) [real,private/allocatable/save]
- filter_module/coeff_matrix (*,*) [real,private/allocatable/save]
- filter_module/deriv [integer,private/save]
- filter_module/half_window [integer,private/save]
- filter_module/order [integer,private/save]
- filter_module/rhs_array (*,*) [real,private/allocatable/save]
- filter_module/window_size [integer,private/save]
Subroutines and functions
- subroutine filter_module/compute_savgol_coeff(window_size_in, order_in, deriv_in)
- Parameters:
window_size_in [integer,in]
order_in [integer,in]
deriv_in [integer,in]
- Called from:
- Call to:
assert()
,set_params()
,savgol_free()
,savgol_alloc()
,set_up_lin_eqs()
,fact()
- subroutine filter_module/savgol_filter(y, ylen, y_out)
- Parameters:
y (ylen) [real,in]
y_out (ylen) [real,out]
- Options:
ylen [integer,in,optional/default=len(y)]
- Called from:
- Call to:
- subroutine filter_module/pad_data(y, ylen, half_window_pass, y_padded)
- Parameters:
y (ylen) [real,in]
half_window_pass [integer,in]
y_padded (ylen+half_window_pass-(-half_window_pass+1)+1) [real,out]
- Options:
ylen [integer,in,optional/default=len(y)]
- Called from:
- subroutine filter_module/savgol_alloc()
- Called from:
- subroutine filter_module/savgol_free()
- Called from:
- subroutine filter_module/set_params(window_size_in, order_in, deriv_in)
- Parameters:
window_size_in [integer,in]
order_in [integer,in]
deriv_in [integer,in]
- Called from:
- subroutine filter_module/set_up_lin_eqs()
- Called from:
- function filter_module/fact(n)
- Parameters:
n [integer,in]
- Return:
fact [integer]
- Called from:
- Call to:
Utility
Description
General purpose utility functions
Quick access
- Variables:
- Routines:
assert()
,i_realloc_1d()
,mem_report()
,print_bar()
,r_realloc_1d()
,r_realloc_2d()
Needed modules
input_files
: List of input filesnumerical_parameters
(stdout()
)ifport
Variables
- utility/current_cpu_time [real]
- utility/getpid [intrinsic]
- utility/iunit_list (16) [integer]
list of file IDs
- utility/start_cpu_time [real]
Subroutines and functions
- subroutine utility/mem_report()
- Called from:
- subroutine utility/assert(test_passed, message)
- Parameters:
test_passed [logical,in]
message [character,in]
- Called from:
metalpoor()
,get_element_info()
,sf_step()
,kroupa_p_func()
,kroupa_m_func()
,massprobabilityimf()
,compute_savgol_coeff()
,savgol_filter()
,fact()
,asloth
- subroutine utility/r_realloc_1d(a, n_new)
- Parameters:
a (*) [real,inout,allocatable]
n_new [integer,in]
- subroutine utility/i_realloc_1d(a, n_new)
- Parameters:
a (*) [integer,inout,allocatable]
n_new [integer,in]
- subroutine utility/r_realloc_2d(a, n1_new, n2_new)
- Parameters:
a (,) [real,inout,allocatable]
n1_new [integer,in]
n2_new [integer,in]
- subroutine utility/print_bar(prog, msg[, complete])
- Parameters:
prog [real]
msg [character,in]
complete [logical]
- Called from:
Virial radius
Quick access
- Routines:
Needed modules
Subroutines and functions
- function virial_radius/rvir(mhalo, z)
- Parameters:
mhalo [real,in]
z [real,in]
- Return:
r [real]
- Called from:
- function virial_radius/rvir_mpc(mhalo, z)
- Parameters:
mhalo [real,in] :: halo mass
z [real,in] :: redshift
- Return:
r [real]
- Called from:
r_ion_ad()
,sf_step()
,outputs_satellites()
,write_files_reali()
- Call to:
Check flags
Description
Module to check whether the flags defined and undefined in asloth.h are an ok combination
Quick access
- Routines:
Subroutines and functions
Random number generator
Description
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)
Quick access
Types
- type random_object/rng
- Type fields:
% iff [integer]
% inext [integer]
% inextp [integer]
% ma (55) [integer]
% mj [integer]
Variables
- random_object/rng_seed [integer]
Subroutines and functions
- subroutine random_object/init(this, idum)
initializes the RNG
- Parameters:
this [real]
idum [integer,in]
- function random_object/get_ran(this)
Retuns uniformly distributed random numbers in the range [0,1)
- Parameters:
this [real]
- Return:
get_ran [real]
- Called from:
split()
,statistical_feedback()
,dz_external()
,dz_internal()
,poisson()
,get_fracs()
- function random_object/poisson(this, mu)
Returns poisson distributed random numbers. Works only for small numbers (mu < 10)
- Parameters:
this [real]
mu [real,in] :: parameter of the poisson distribution
- Return:
poisson [integer]
- Called from:
- Call to:
Metal modules
Modules and functions for the handling of metals
Metals
Description
main module for handling metals
Quick access
- Types:
- Variables:
- Routines:
append()
,get_element_index()
,get_element_info()
,init_element()
Needed modules
Types
- type metals/element
container type for individual elements
- Type fields:
% atomic_mass [real]
% element_name [character]
% solar_abund [real]
Variables
- metals/index_carbon [integer,optional/default=0]
- metals/index_iron [integer,optional/default=0]
index of carbon and iron in yields and metal arrays
- metals/n_elements [integer]
- metals/tracked_elements [element_list]
Subroutines and functions
- subroutine metals/append(this, el)
appends an element to an element list
- Parameters:
this [real] :: the list of elements
el [element] :: the element to be appended
- function metals/get_element_index(this, el_name)
returns the the index at which an element is found in the yield table
- Parameters:
this [real] :: list of tracked elements
el_name [character,in] :: name of the element to look up
- Return:
i [integer]
- Called from:
- function metals/init_element(el_name)
- Parameters:
el_name [character,in]
- Return:
this [element]
- Call to:
- subroutine metals/get_element_info(el_name, atomic_mass, solar_abund)
- Parameters:
el_name [character,in] :: which element are we looking up?
atomic_mass [real,out] :: mean atomic weight
solar_abund [real,out] :: converting from the log(X/H)+12 scale
- Called from:
- Call to:
Read Yields
Description
module for reading yields from the appropirate files
Quick access
Needed modules
populations
: This module contains the type for storing IMFs, and the properties of the stellar populationsmetals
: main module for handling metals
Subroutines and functions
- subroutine read_yields/assign_yields()
- Called from:
- Call to:
- subroutine read_yields/readelementid()
- Called from:
- Call to:
- subroutine read_yields/assign_yields_general(fileyields, pop)
- Parameters:
fileyields [character,in]
pop [population,in] :: go through IMF bins
- Called from:
- Call to:
- subroutine read_yields/get_elem_num(f, num_ele, mass_num)
defines the number of elements and the number of different stellar masses in the yields file hard-coded file names. If you want to use a different table, add it here.
- Parameters:
f [character,in] :: file name
num_ele [integer,out] :: number of elements in the file
mass_num [integer,out] :: number of masses in the table
- Called from:
Metal functions
Description
Helper functions for handling metals and computing abundances and metallicities
Quick access
- Routines:
add_to_m_metals()
,cfe()
,check_m_metals()
,coh()
,feh()
,get_m_metals()
,get_melement()
,get_metallicity()
,metalpoor()
,zcal()
Needed modules
metals
: main module for handling metals
Subroutines and functions
- function metal_functions/get_metallicity(m_h, mmetals, ii)
gas metallicity of this halo This function assumed homogeneous mixing of metals with gas Because this homogeneous metallicity is needed as input to calculate dZ in order to corret to an inhomogeneous metallicity
- Parameters:
m_h [real,in]
mmetals [real,in] :: mass hydrogen, mass metals
ii [integer,in] :: index in abundance array
- Return:
get_metallicity [real]
- Called from:
- subroutine metal_functions/check_m_metals(thishalo)
if not yet allocated, allocate ThisHalo%m_metals and set to zero
- Parameters:
thishalo [treenode]
- Called from:
- subroutine metal_functions/add_to_m_metals(thishalo, mmetal, iadd)
add metals to %m_metals node property :p integer iadd [in]: is index of which metal type should be added
- Parameters:
thishalo [treenode]
mmetal (n_elements) [real,in]
- Called from:
- Call to:
- function metal_functions/get_m_metals(thishalo, iget)
get metal mass array from %m_metals node property :p integer iget [in]: is index of which metal type is wanted
- Parameters:
thishalo [treenode]
- Return:
get_m_metals (n_elements) [real] :: function returns an array
- Called from:
- Call to:
- function metal_functions/get_melement(thishalo, index_metal)
get mass of this halo of one specific element
- function metal_functions/feh(thishalo, dz_now)
gas metallicity of this halo [Fe/H]
- Parameters:
thishalo [treenode]
dz_now [real,in]
- Return:
feh [real]
- Called from:
- Call to:
- function metal_functions/coh(thishalo, dz_now)
gas metallicity of this halo [C/H]
- Parameters:
thishalo [treenode]
dz_now [real,in]
- Return:
coh [real]
- Called from:
- Call to:
- function metal_functions/cfe(thishalo)
gas metallicity of this halo [C/Fe]
- Parameters:
thishalo [treenode]
- Return:
cfe [real]
- Call to:
- function metal_functions/metalpoor(thishalo, z_in, dz_now)
- subroutine metal_functions/zcal(metallicity, gas, metals)
20200820 Li-Hsin This routine also calculates the metallciity but in linear scale. This is simply for the convenience when we want to keep information from the last time step.
- Parameters:
metallicity [real,out]
gas [real,in]
metals [real,in]
IGM Metallicity routines
Description
utility routine for inheriting the IGM metallicity accross time
Quick access
- Routines:
Needed modules
Subroutines and functions
Metal Mix dZ
Quick access
- Variables:
- Routines:
Needed modules
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
- metalmix_dz/dztable_12 (1000) [real,protected]
- metalmix_dz/dztable_23 (1000) [real,protected]
- metalmix_dz/dztable_34 (1000) [real,protected]
- metalmix_dz/dztable_45 (1000) [real,protected]
- metalmix_dz/dztable_58 (1000) [real,protected]
Subroutines and functions
- subroutine metalmix_dz/read_lookups()
- Called from:
- function metalmix_dz/dz_external(rng_obj, z)
dilution from Yuta Tarumi: ApJ, Volume 897, Issue 1, id.58 based on Renaissance Simulation dZ = (Mmetals/Mgas)_densestGas / (Mmetals/Mgas)_halo hydrogen mass in this halo / dZ = hydrogen mass with which metals mix in densest region
- function metalmix_dz/dz_internal(rng_obj)
- function metalmix_dz/calc_dz(m_metals_int, rng_obj, z_now)
metal mixing correction based on Tarumi+20, ApJ, Volume 897, Issue 1, id.58 dZ: log-differenze between metallicity of all gas in a halo and the dense gas
- Parameters:
m_metals_int [real,in]
rng_obj [rng,inout]
z_now [real,in]
- Return:
calc_dz [real]
- Called from:
- Call to:
Metallicity distribution function
Quick access
- Variables:
- Routines:
add_to_base_mdf()
,add_to_node_mdf()
,get_mdf_bin()
,init_mdf()
Needed modules
Variables
- trace_mdf/mdf_zarray (*) [real,allocatable/protected]
- trace_mdf/mdfdz [real,parameter=0.1]
MDF range, bin width
- trace_mdf/mdfnbin [integer]
- trace_mdf/mdfnpad [integer,parameter=2]
- trace_mdf/mdfzmax [real,parameter=1]
- trace_mdf/mdfzmin [real,parameter=-9]
Subroutines and functions
- subroutine trace_mdf/init_mdf()
- Called from:
- Call to:
- function trace_mdf/get_mdf_bin(zgas)
- Parameters:
zgas [real]
- Return:
get_mdf_bin [integer] :: [Fe/H]
- Called from:
Spatially resolved feedback
Modules and routines for efficiently tracing spatially resolved feedback
Bubble Tree
Description
This module containes routines for adding feedback of haloes to the tracing system and for testing whether a halo or a specific point in space is affected by the feedback
Quick access
- Variables:
- Routines:
add_bubble_to_tree()
,bubble_check()
,clean_bnode()
,clean_tree()
,copy_props_to_bubble()
,count_ion()
,dist_check()
,dist_check_allow_same()
,find_bnode()
,grid_check()
,ion_check()
,merge_into_bubble()
,mv_bubble()
,position_check()
,rm_bubble()
,start_btree()
Needed modules
metal_functions
: Helper functions for handling metals and computing abundances and metallicities
Variables
- bubble_tree/l_box_max [real]
- bubble_tree/mass_diff [real]
- bubble_tree/max_level [integer,parameter=20]
Subroutines and functions
- subroutine bubble_tree/start_btree()
initializes tree and sets up the head nodes
- Called from:
- subroutine bubble_tree/add_bubble_to_tree(nodeadd, mmetal_add)
Adds ionized an enriched bubble of a node to the tree
- Parameters:
nodeadd [treenode,inout]
mmetal_add (n_elements) [real,in] :: metal mass in this SN shell
- Called from:
- Call to:
- subroutine bubble_tree/find_bnode(jlevel, x, bnode, r[, ion_tree])
- Parameters:
jlevel [integer,in]
x (3) [real,in]
bnode [bubble_node,out,pointer] :: associate parent node
r [real,in]
ion_tree [logical,in,]
- Called from:
- Call to:
- subroutine bubble_tree/rm_bubble(node, to_remove)
- Parameters:
node [bubble_node,pointer]
to_remove [integer]
- Call to:
- subroutine bubble_tree/mv_bubble(n_from, i_from, n_to, i_to)
moves the bubble to_move to the node move_to and fixes all the pointers afterwards
- Parameters:
n_from [bubble_node,inout,pointer]
i_from [integer,in]
n_to [bubble_node,inout,pointer]
i_to [integer,in]
- Called from:
- subroutine bubble_tree/copy_props_to_bubble(bnode, bubble, nodeadd, mmetal_add)
- Parameters:
bnode [bubble_node,pointer]
bubble [integer,in] :: Index of Bubble
nodeadd [treenode,inout]
mmetal_add (*) [real,in] :: metal mass in this SN shell
- Called from:
- subroutine bubble_tree/bubble_check(this_node)
routine to check whether This_Node is externally enricher and/or ionized
- Parameters:
this_node [treenode,inout,target]
- Called from:
- Call to:
- subroutine bubble_tree/ion_check(this_node)
routine to check whether This_Node is ionized the treatment of haloes above the atomic cooling limit is based on Visbal et al. 2017 (MNRAS 469, 1456-1465)
- Parameters:
this_node [treenode,inout,target]
- Called from:
- Call to:
- subroutine bubble_tree/clean_tree(jlevel)
- Parameters:
jlevel [integer,in]
- Called from:
- Call to:
- subroutine bubble_tree/clean_bnode(jlevel, bnode, n_merge)
- Parameters:
jlevel [integer,in]
bnode [bubble_node,inout,pointer]
n_merge [integer,inout]
- Called from:
- subroutine bubble_tree/merge_into_bubble(jlevel, x_in, v_in, l_in, x_out, v_ion_current, l_out, bnode, bubble_in)
- Parameters:
jlevel [integer,in]
x_in (3) [real,in]
v_in [real,in]
l_in [real,in]
x_out (3) [real,out]
v_ion_current [real,out]
l_out [real,out]
bnode [bubble_node,pointer]
bubble_in [integer,in]
- subroutine bubble_tree/position_check(x, j_now, is_ion, is_enr)
routine to check whether This_Node is externally enricher and/or ionized
- Parameters:
x (3) [real,in]
j_now [integer,in]
is_ion [logical,out]
is_enr [logical,out]
- Called from:
- Call to:
- function bubble_tree/count_ion(x, j_now, ion_tree)
routine to check whether This_Node is externally enricher and/or ionized
- Parameters:
x (3) [real,in]
j_now [integer,in]
ion_tree [logical,in]
- Return:
n_ion [integer]
- Call to:
- subroutine bubble_tree/grid_check(ijk, bnode, x_in, caller)
- Parameters:
ijk (3) [integer,in]
bnode [bubble_node,pointer]
x_in (3) [real,in]
caller [character,in]
- Called from:
find_bnode()
,bubble_check()
,ion_check()
,position_check()
,count_ion()
- function bubble_tree/dist_check_allow_same(x_ref, x, r)
- Parameters:
x_ref (3) [real,in]
x (3) [real,in]
r [real,in]
- Return:
dist_check_allow_same [logical,pure]
- Called from:
- function bubble_tree/dist_check(x_ref, x, r)
- Parameters:
x_ref (3) [real,in]
x (3) [real,in]
r [real,in]
- Return:
dist_check [logical,pure]
- Called from:
Bubble tree types
Quick access
- Types:
- Routines:
Needed modules
utility
(realloc()
): General purpose utility functionsmetals
(n_elements()
): main module for handling metals
Types
- type bubble_tree_types/n_pointer
- Type fields:
% p [bubble_node,pointer/optional/default=>null()]
- type bubble_tree_types/bubble_node
- Type fields:
% l_box [real] :: size of the node
% l_ion (*) [real,allocatable] :: ionizing photon emission rate
% level [integer] :: tree-level where the node is located at
% m_out (*) [real,allocatable] :: outflow mass
% mmetals_bub (*) [real,allocatable] :: metal mass
% n_bub [integer,optional/default=0]
% n_max [integer,optional/default=0]
% null [bubble_node,pointer]
% parent_node [bubble_node,pointer/optional/default=>]
% pop (*) [integer,allocatable] :: enriching population
% r_en (*) [real,allocatable] :: enriched radius
% r_ion (*) [real,allocatable] :: ionized radius
% sub_nodes (8) [n_pointer] :: pointers to the eight sub-nodes
% x (,) [real,allocatable] :: position
% x_node (3) [real] :: position of the corner of the node
% yields_bub (,) [real,allocatable]
Subroutines and functions
- subroutine bubble_tree_types/resize(this)
resizes bubble storage for one node within the bubble tree
- Parameters:
this [real]
- subroutine bubble_tree_types/increase_size(this)
Makes room for one additional bubble in a node of the bubble-tree
- Parameters:
this [real]
- Called from:
Stellar populations
Populations
Description
This module contains the type for storing IMFs, and the properties of the stellar populations
Quick access
- Types:
- Variables:
- Routines:
compute_ionizing_mass_rate()
,create_pop()
,get_index_of_mass_cutoff()
,init_stellar_populations()
,massprobabilityimf()
,output_pop()
,set_yields()
Needed modules
utility
: General purpose utility functionsimfs
: This module contains intial mass functionsmetals
: main module for handling metals
Types
- type populations/population
- Type fields:
% f_esc [real] :: ionizing photon escape fraction
% ion_m_rate (*) [real,allocatable] :: mass heating rate (M_sun/s) due to ionizing radiation
% lbol (*) [real,allocatable] :: bolometric luminosity on Lsun
% mass (*) [real,allocatable] :: stellar mass in the bin
% n_bins [integer] :: number of bins
% n_cutoff [integer] :: Index in IMF array at which “massive” stars begin
% n_ion [real] :: Number of ionizing photons per stellar baryon
% p (*) [real,allocatable] :: relative likelihood to form star in the bin
% pop [integer] :: what stellar population is this?
% q (*) [real,allocatable] :: ionizing photon emission rate
% sn_energy (*) [real,allocatable] :: Energy of a SN in this bin (erg)
% sn_momentum (*) [real,allocatable] :: mass blown out SN (Msun cm/s)
% tlife (*) [real,allocatable] :: lifetime
% yields (,) [real,allocatable] :: mass blown out SN (Msun cm/s)
Variables
- populations/popii [population,protected]
- populations/popiii [population,protected]
Subroutines and functions
- function populations/create_pop(n, pop)
- Parameters:
n [integer,in]
pop [integer,in]
- Return:
this [population]
- Call to:
massprobabilityimf()
,get_index_of_mass_cutoff()
,q_popii()
,lbol_ii()
,lifetime_popii()
,e_sn_popii()
,momentum_sn()
,q_popiii()
,lbol_iii()
,lifetime_popiii()
,e_sn_popiii()
- function populations/get_index_of_mass_cutoff(nstarmassbin, mstarpop)
This function determins the index where the desired mass is at in the mass bins.
- Options:
nstarmassbin [integer,in,optional/default=len(mstarpop)]
- Parameters:
mstarpop (nstarmassbin) [real,in]
- Return:
n_cutoff [integer]
- Called from:
- subroutine populations/massprobabilityimf(p_starmassbin, mstarpop, pop, n_starmassbin)
This routine determins the mass probability of a mass bin. We determine the total stellar mass form in one step first and then draw individual stars from the IMF.
- Parameters:
p_starmassbin (n_starmassbin) [real,out]
mstarpop (n_starmassbin) [real,out]
pop [integer,in] :: PopII (2) or PopIII (3)?
n_starmassbin [integer,in]
- Called from:
- Call to:
- subroutine populations/compute_ionizing_mass_rate(this)
Gas mass heating/ionizing rate from massive stars throughout their lifetimes. Gas density dependent.
- Parameters:
this [real]
- subroutine populations/set_yields(this[, yields])
- Parameters:
this [real]
yields (,) [real,in,allocatable]
Initial mass functions
Description
This module contains intial mass functions
Quick access
- Types:
- Routines:
kroupa_cumulative_mass_df()
,kroupa_cumulative_pdf()
,kroupa_m_func()
,kroupa_p_func()
,kroupa_pdf()
,m_func_dummy()
,p_func_dummy()
,power_law_mass_func()
,power_law_p_func()
Needed modules
Types
- type imfs/initial_mass_function
This type acts as a framework to implement additional IMFs. It cannot directly be used Rather, the idea is to create new types and inherit the basic structure from this one Note: This should be implemented as abstract type, but f2py.crackfortrant does not support these yet, which would break the documentation with sphinxfortran
- type imfs/unknown_type
- Type fields:
% m_max [real]
% m_min [real]
% slope [real]
- type imfs/unknown_type
- Type fields:
% m_max [real]
% m_min [real]
% m_turn1 [real,optional/default=0.08]
% m_turn2 [real,optional/default=0.5]
% slope1 [real,optional/default=-0.3]
% slope2 [real,optional/default=-1.3]
% slope3 [real,optional/default=-2.3]
Subroutines and functions
- function imfs/m_func_dummy(this, m1, m2)
- Parameters:
this [real]
m1 [real,in]
m2 [real,in]
- Return:
res [real]
- function imfs/p_func_dummy(this, m1, m2)
- Parameters:
this [real]
m1 [real,in]
m2 [real,in]
- Return:
res [real]
- function imfs/power_law_mass_func(this, m1, m2)
- Parameters:
this [real]
m1 [real,in]
m2 [real,in]
- Return:
res [real]
- function imfs/power_law_p_func(this, m1, m2)
- Parameters:
this [real]
m1 [real,in]
m2 [real,in]
- Return:
res [real]
- function imfs/kroupa_p_func(this, m1, m2)
- Parameters:
this [real]
m1 [real,in]
m2 [real,in]
- Return:
res [real]
- Call to:
- function imfs/kroupa_m_func(this, m1, m2)
- Parameters:
this [real]
m1 [real,in]
m2 [real,in]
- Return:
res [real]
- Call to:
assert()
,kroupa_cumulative_mass_df()
,kroupa_cumulative_pdf()
- function imfs/kroupa_cumulative_mass_df(this, m)
- Parameters:
this [real]
m [real,in]
- Return:
res [real]
- Called from:
- function imfs/kroupa_pdf(this, m)
- Parameters:
this [real]
m [real,in]
- Return:
res [real]
- function imfs/kroupa_cumulative_pdf(this, m)
- Parameters:
this [real]
m [real,in]
- Return:
res [real]
- Called from:
Stellar Properties
Quick access
- Routines:
e_sn_popii()
,e_sn_popiii()
,lbol_ii()
,lbol_iii()
,lifetime_popii()
,lifetime_popiii()
,momentum_sn()
,q_popii()
,q_popiii()
Needed modules
Subroutines and functions
- function stellar_props/q_popiii(m)
- Parameters:
m [real,in]
- Return:
q [real]
- Called from:
- function stellar_props/lifetime_popiii(m)
- Parameters:
m [real,in]
- Return:
lt [real]
- Called from:
- function stellar_props/q_popii(m)
- Parameters:
m [real,in]
- Return:
q [real]
- Called from:
- function stellar_props/lifetime_popii(m)
- Parameters:
m [real,in]
- Return:
lt [real]
- Called from:
- function stellar_props/e_sn_popii(m)
- Parameters:
m [real,in]
- Return:
e_sn [real]
- Called from:
- function stellar_props/e_sn_popiii(m)
- Parameters:
m [real,in]
- Return:
e_sn [real]
- Called from:
- function stellar_props/momentum_sn(e_sn)
- Parameters:
e_sn [real,in]
- Return:
p_sn [real]
- Called from:
- function stellar_props/lbol_iii(m)
- Parameters:
m [real,in]
- Return:
lbol [real]
- Called from:
- function stellar_props/lbol_ii(m)
- Parameters:
m [real,in]
- Return:
lbol [real]
- Called from:
Python Scripts
scripts/plot_asloth.py
- scripts.plot_asloth.plot_comparison(UserFolder, UserLabels=None)
Function to plot results from A-SLOTH and compare them to literature or other runs.
We use the most recent folder to plot and compare to literature. If one or more folders are specified, they will all be plotted. This can also be used to plot just one specific folder.
- Parameters:
UserFolder (list[str]) – List of folder names to be plotted.
UserLabels (list[str]) – List of labels. If none, UserFolders are used as labels
Returns: Beautiful plots
- scripts.plot_asloth.readMWproperties(UserFolder)
scripts/tau/plot_Vion.py
- tau.plot_Vion.plot_Vion(UserFolder, UserLabels, folder_output)
Function to plot ionisation histories and calculate tau
- Parameters:
UserFolder (List[str]) – List of folder names to be plotted
UserLabels (List[str]) – List of labels. If none, UserFolders are used as labels
folder_output (str) – Folder in which plots will be saved
- Returns:
tau0 (float) – optical depth to Thomson scattering
tau_sigma (float) – tau uncertainty
- tau.plot_Vion.get_tau_sigma(folder)
Function to calculate tau without plotting ionisation history
- Parameters:
folder (str) – Folder in which plots will be saved
- Returns:
tau0 (float) – optical depth to Thomson scattering
tau_sigma (float) – tau uncertainty
scripts/wrapper
This script allows to explore input parameters by automatically launching various runs. Users can set their specific path_output variable. If you want to run with NBODY merger trees, also set path_tree. If you think that disk I/O might be a bottleneck, you should also set your username in the function N_disk_sleep() to work correctly.
- wrapper.loop_trees.RunTrees(cats, NBODY)
This function loops over a set of merger trees and explores one combination of input parameters
We first define input parameters that are constant within this loop. Then, we define tree-specific input parameters. Then, we check if sufficient computing resources are available. Eventually, we launch the A-SLOTH run.
- Parameters:
cats (list) – catalogue of merger trees [[name, nlev, RAM]]
NBODY (bool) – N-Body or EPS-generated merger trees
- wrapper.loop_trees.Get_CatList(NBODY=False, N=3)
Function to generate list of catalogues to loop over
- Parameters:
NBODY (bool) – N-Body or EPS-generated merger trees
N (int) – number of random realisations in case of EPS-generated trees
- Returns:
cats – list of lists of type [[name, nlev, RAM]]
- Return type:
list
- wrapper.loop_trees.avail_mem_GB()
Funtion returns available RAM in GB
- wrapper.loop_trees.CPU_use()
Funtion returns available CPUs in %
- wrapper.loop_trees.N_disk_sleep()
Funtion returns number of processes that are idle due to I/O.
Change username accordingly
- wrapper.analyse_trees.get_p_from_folders(dir_prefix, ifEPS=True)
Function that calculates the p-value (and additional values).
Based on the directory prefix for the A-SLOTH output folder that should be analysed Function will you all folders that match this directory prefix.
- Parameters:
dir_prefix (str) – directory prefix that should be used to search for data
- Returns:
fit_asloth – class object that contains fit results
- Return type:
- wrapper.tutorial_GridPlot.plot_tutorial2()
Plotting script to visualise results of the two scripts loop_scripts.py and analysis_trees.py.
The plot layout is not optimized for aesthetics, but it should simply demonstrate the versatility of A-SLOTH. The resulting plot is a modified version of Fig. 17 in Hartwig+22
scripts/tau/plot_tgas.py
- utilities.plot_tgas.plot_tgas(output_folder)
Illustrates time evolution of different baryonic quantities based on output file t_gas_substeps.dat. outout_folder has to be set manually.
- Parameters:
output_folder (str) – folder that contains results of run that should be analysed
scripts/utility.py
- class utilities.utility.asloth_config
container class for writing config namelist files for ASLOTH
- set_config_to_default()
sets default parameters for the main configuration
- Parameters:
self (asloth_config) – the configuration to be restored to defaults
- set_metals(metals)
sets metal configuration for a specified list of elements
- Parameters:
self (asloth_config) – configuration
metals (list) – list of strings of the elements to be traced
- to_file(fname)
- class utilities.utility.asloth_fit
class for handling fitting parameters and results of A-SLOTH
- get_p()
‘ Calculates the goodness-of-fit parameters based on 6 different observables. Please see Hartwig+22 for more details.
- print_fit()
‘ Prints all class properties
- set_fit_to_default()
sets default parameters for the fit object
- Parameters:
self (asloth_fit) – set all parameters to default values
- utilities.utility.get_p_from_sigma(sigma)
Get p-value from “how many sigma away”
- utilities.utility.write_namelist(f, list_name, var_dict)
function to write fortran namelists
- Parameters:
f (file) – opened file to write the namelist to
list_name (str) – name of the namelist. Note that this must be the exact name used in the fortran code
var_dict (dictionary) – dictionary of variables to be written to the file
scripts/SMHM/plot_scatterSMHM.py
- SMHM.plot_scatterSMHM.plot_scatterSMHM(UserFolder, UserLabels, folder_output)
Function to read data and plot scatter SMHM relation.
If one or more folders are specified, they will all be plotted. This can also be used to plot just one specific folder.
- Parameters:
UserFolder (str) – List of folder names to be plotted.
UserLabels (str) – List of labels. If none, UserFolders are used as labels.
folder_output (str) – where the plot is saved.
- Returns:
None
- SMHM.plot_scatterSMHM.plot_CumuSMF(UserFolder, UserLabels, folder_output, if_plot)
Function to return ks statistics, p-values, and MW stellar masses
If one or more folders are specified, they will all be plotted. This can also be used to plot just one specific folder.
- Parameters:
UserFolder (str) – List of folder names to be plotted.
UserLabels (str) – List of labels. If none, UserFolders are used as labels.
folder_output (str) – where the plot is saved.
- Returns:
Lists of ks statistic, p-value and MW stellar mass.
- SMHM.plot_scatterSMHM.read_data(UserFolder, UserLabels, folder_output)
Function to read data to plot SMHM relation
If one or more folders are specified, they will all be plotted. This can also be used to plot just one specific folder.
- Parameters:
UserFolder (str) – List of folder names to be plotted.
UserLabels (str) – List of labels. If none, UserFolders are used as labels
folder_output (str) – where the plot is saved
- Returns:
Virial masses and stellar masses of galaxies in pandas.DataFrame format
- SMHM.plot_scatterSMHM.M_AM(M)
Function to compute expected stellar mass of the galaxy at given virial mas (Garrison-Kimmel et al. 2014).
- Parameters:
M (float) – virial mass of the halo
- Returns:
expected stellar mass
- SMHM.plot_scatterSMHM.f_bwc(x)
- SMHM.plot_scatterSMHM.AMtwodhistogram(df_list, y0, p_dir, output_name, WhichMass, climmax, if_imfana)
The actual function to plot scatter SMHM relation.
- Parameters:
df_list (list of pd.DataFrame) – input data
y0 (float) – the observational completeness
p_dir (str) – output folder
Returns:
- SMHM.plot_scatterSMHM.CumulativeNumberOfSatellites(df_list, output_name, WhichMass, if_plot, p_dir)
The actual function to plot cumulative stellar mass function and compute ks statistic, p-value from the KS test.
- Parameters:
df_list (list of pd.DataFrame) – input data
output_name (str) – figure name
WhichMass (float) – which stellar mass to use (the total or survival)
if_plot (bool) – whether to make plots or not
p_dir (str) – output folder
- Returns:
lists of ks statistic, p-value, MW stellar mass
scripts/SMHM/plot_binnedSMHM.py
- SMHM.plot_binnedSMHM.plot_binnedSMHM(UserFolder, UserLabels, folder_output)
The function reads data from multiple folders and plot the binned SMHM relations
If one or more folders are specified, they will all be plotted as separate SMHM relations. This can also be used to plot just one specific folder.
- Parameters:
UserFolder (str) – List of folder names to be plotted.
UserLabels (str) – List of labels. If none, UserFolders are used as labels
folder_output (str) – where the plot is saved
- Returns:
plot of SMHM relation comparison
- SMHM.plot_binnedSMHM.IMFANA(AMBound, MX, MAMX, imf_list, y0, p_dir, imfname, WhichMass, climmax, cps, cs, ilabel, fname)
The function plots binned SMHM relation.
- Parameters:
AMBound – boundary of the SMHM relation from abundance matching (AM)
MX – virial masses
MAMX – stellar masses obtained from the AM technique at given virial masses
imf_list (list of pd.DataFrame) – input data
y0 (float) – observational completeness
p_dir (str) – output folder
- Returns:
plot of SMHM relation
- SMHM.plot_binnedSMHM.AM_BinMeanstd(df_list, WhichMass, tname, index_data, c=None)
The actual function to plot binned SMHM relation.
- Parameters:
df_list (list of pd.DataFrame) – input data
WhichMass (float) – which stellar mass to use (the total or survival)
tnmae (str) – labels
index-data – index of the data
c – specific color for the SMHM relation
- Returns:
adding a binned SMHM relation to the plot
- SMHM.plot_binnedSMHM.PlotNadler20SMHM()
The function plots SMHM relation from Nadler et al. 2020.
scripts/plot_mcrit.py
- utilities.plot_mcrit.plot_mcrit()
Function to plot ciritical mass of a halo at certain redshift, given by different models, and at different initial streaming velocities.
- Returns:
Figure that shows M_crit v.s. z at different initial streaming velocities and from different models
- utilities.plot_mcrit.crit_mass(z, lw_mode, VBC)
Function to obtain ciritical mass of a halo at certain redshift, given by different models
We use lw_mode=5 (Schauer et al. 2021) as the fiducial model. Use can also choose lw_mode=4, which is a combined model from O’Shea et al. 2008, Stacy et al. 2011, and Hummel et al. 2012. lw_mode=7 corresponds to a model from Fialkov et al. 2013.
- Parameters:
z (float) – redshift
lw_mode (int) – which M_crit model
VBC (float) – initial streaming velocity, in units of sigma_v
- Returns:
Critical mass of a halo to have star formation
scripts/plot_stellarprop.py
- utilities.plot_stellarprop.plot_stellarproperties()
Function to reproduce the stellar properties plot
- Returns:
Stellar masses v.s. stellar properties, e.g. stellar lifetime, carbon yields, iron yields, supernova energie.
Usage Policy
You can use A-SLOTH freely for scientific research and other applications in accordance with the license. If you publish results for which you have used A-SLOTH, you must cite the following two papers:
Hartwig et al. 2022, published in ApJ
Magg et al. 2022, published in JOSS
In addition, you can cite the code on zenodo.
You do not have to invite the A-SLOTH developers as co-authors on your publications. If you wish to contribute to A-SLOTH, please get in contact with us and/or create a pull-request.
Help
If you encounter any problems with A-SLOTH, there are several options to help you:
Check the section on debugging.
Create an issue on GitLab.
Contact the developers: GloverATuni-heidelberg.de