C API Reference

This reference is generated automatically from the /* ... */ docstrings in src/. All functions are documented, including file-private (static) ones, since those contain the core physics implementations.

Physics

Functions

static double nfw_rho_s(const double M_CGM, const double Rvir, const double c_NFW)
static double nfw_density(const double r, const double rho_s, const double r_s)
static double nfw_concentration(const double Mvir_Msun, const double z)
static double beta_rho_0(const double M_CGM, const double Rvir, const double r_c, const double beta)
static double beta_density(const double r, const double rho_0, const double r_c, const double beta)
static double nfw_enclosed_mass(const double r, const double M_total, const double Rvir, const double c_NFW)
static double beta_enclosed_mass(const double r, const double M_total, const double Rvir, const double r_c)
static double cgm_enclosed_mass(const double r, const double M_total, const double Rvir, const double Mvir_Msun, const double z, const int profile_type)
static double cgm_density_at_radius(const double r_cgs, const double CGMgas_cgs, const double Rvir_cgs, const double Mvir_Msun, const double z, const int profile_type)
static double solve_for_rcool(const double CGMgas_cgs, const double Rvir_cgs, const double Mvir_cgs, const double Mvir_Msun, const double temp, const double lambda, const double z, const int profile_type, __attribute__((unused)) const struct params *run_params)
double cooling_recipe(const int gal, const double dt, struct GALAXY *galaxies, const struct params *run_params)
double cooling_recipe_hot(const int gal, const double dt, struct GALAXY *galaxies, const struct params *run_params)
double cooling_recipe_cgm(const int gal, const double dt, struct GALAXY *galaxies, const struct params *run_params)
double cooling_recipe_regime_aware(const int gal, const double dt, struct GALAXY *galaxies, const struct params *run_params)
static void agn_accretion_compute(const int centralgal, const double dt, const double x, const double coolingGas, const double rcool, const double reservoir_mass, const struct GALAXY *galaxies, const struct params *run_params, double *AGNaccreted_out, double *AGNheating_out)
double do_AGN_heating(double coolingGas, const int centralgal, const double dt, const double x, const double rcool, struct GALAXY *galaxies, const struct params *run_params)
double do_AGN_heating_cgm(double coolingGas, const int centralgal, const double dt, const double x, const double rcool, struct GALAXY *galaxies, const struct params *run_params)
void cool_gas_onto_galaxy(const int centralgal, const double coolingGas, struct GALAXY *galaxies)

Variables

static const double DUFFY08_A = 7.85
static const double DUFFY08_M_PIVOT = 2.0e12
static const double DUFFY08_B = -0.081
static const double DUFFY08_C = -0.71
static const double MU_IONISED = 0.59
static const double AGN_BH_MASS_PIVOT = 0.01
static const double AGN_VVIR_PIVOT_KMS = 200.0
static const double AGN_HOT_GAS_PIVOT = 0.1
static const double EDDINGTON_LUM_PER_MSUN_CGS = 1.3e38
static const double AGN_RADIATIVE_EFFICIENCY = 0.1
static const double C_SQ_KMS2 = 9.0e10
static const double AGN_HEATING_COEFF_KMS = 1.34e5
static const double G_CGS = 6.674e-8
static const double VIRIAL_TEMP_COEFF = 35.9
static const double PRECIP_THRESHOLD = 10.0
static const double PRECIP_TRANSITION_WIDTH = 2.0
static const double CGM_BETA_CORE_RADIUS_FRAC = 0.1
static const double MSHOCK_DB06_MSUN = 6.0e11
static const double Z_CRIT_DB06 = 1.5
static const double AGN_COLD_CLOUD_FRAC = 1.0e-4

Functions

void starformation_and_feedback(const int p, const int centralgal, const double time, const double dt, const int halonr, const int step, struct GALAXY *galaxies, const struct params *run_params)
void update_from_star_formation(const int p, const double stars, const double metallicity, struct GALAXY *galaxies, const struct params *run_params)
void update_from_feedback(const int p, const int centralgal, double reheated_mass, double ejected_mass, const double metallicity, struct GALAXY *galaxies, const struct params *run_params)
void starformation_ffb(const int p, const int centralgal, const double dt, const int step, struct GALAXY *galaxies, const struct params *run_params)

Variables

static const double SF_DISK_RADIUS_FRAC = 3.0
static const double KAUFFMANN96_SF_THRESHOLD = 0.19
static const double SOMERVILLE25_SIGMA_CRIT = 30.0 / (M_PI * 4.302e-3)
static const double FIRE_V_CRIT_KMS = 60.0
static const double KD11_METAL_HALO_MASS = 30.0
static const double SOMERVILLE25_F_DENSE = 0.5
static const double Z_SOLAR_ASPLUND09 = 0.014

Functions

static double calculate_merger_remnant_radius(const struct GALAXY *g1, const struct GALAXY *g2)
double estimate_merging_time(const int sat_halo, const int mother_halo, const int ngal, struct halo_data *halos, struct GALAXY *galaxies, const struct params *run_params)
void deal_with_galaxy_merger(const int p, const int merger_centralgal, const int centralgal, const double time, const double dt, const int halonr, const int step, struct GALAXY *galaxies, const struct params *run_params)
void grow_black_hole(const int merger_centralgal, const double mass_ratio, struct GALAXY *galaxies, const struct params *run_params)
void quasar_mode_wind(const int gal, const double BHaccrete, struct GALAXY *galaxies, const struct params *run_params)
void add_galaxies_together(const int t, const int p, struct GALAXY *galaxies, const struct params *run_params)
void make_bulge_from_burst(const int p, struct GALAXY *galaxies)
void collisional_starburst_recipe(const double mass_ratio, const int merger_centralgal, const int centralgal, const double time, const double dt, const int halonr, const int mode, const int step, const int burst_to_merger_bulge, const double old_disk_radius, struct GALAXY *galaxies, const struct params *run_params)
void disrupt_satellite_to_ICS(const int centralgal, const int gal, const double time, struct GALAXY *galaxies, const struct params *run_params)

Variables

static const double DISK_HALF_MASS_FRAC = 1.68
static const double COVINGTON11_C_RAD = 2.75
static const double BH_GROWTH_V_KMS = 280.0
static const double STARBURST_FRAC_COEFF = 0.56
static const double STARBURST_MASS_POWER = 0.7
static const double FIRE_V_CRIT_KMS = 60.0
static const double KD11_METAL_HALO_MASS = 30.0
static const double Z_SOLAR_GD14 = 0.02

Functions

void check_disk_instability(const int p, const int centralgal, const int halonr, const double time, const double dt, const int step, struct GALAXY *galaxies, struct params *run_params)

Variables

static const double TOOMRE_DISK_FACTOR = 3.0

Functions

double infall_recipe(const int centralgal, const int ngal, const double Zcurr, struct GALAXY *galaxies, const struct params *run_params)
void strip_from_satellite(const int centralgal, const int gal, const double Zcurr, const int effective_steps, struct GALAXY *galaxies, const struct params *run_params)
double do_reionization(const int gal, const double Zcurr, struct GALAXY *galaxies, const struct params *run_params)
void add_infall_to_hot(const int gal, double infallingGas, struct GALAXY *galaxies, const struct params *run_params)

Variables

static const double GNEDIN_FILTER_COEFF = 0.26
static const double KRAVTSOV04_MJEANS_0 = 25.0
static const double KRAVTSOV04_MU_NEG1PT5 = 2.21
static const double BN98_DELTA_LIN = 82.0
static const double BN98_DELTA_QUAD = 39.0
static const double TVIR_VCHAR_COEFF = 36.0

Functions

void reincorporate_gas(const int centralgal, const double dt, struct GALAXY *galaxies, const struct params *run_params)

Variables

static const double REINC_VCRIT_KMS = 445.48

Defines

CM_TABLE_N_MASS
CM_TABLE_N_Z

Functions

void init_galaxy(const int p, const int halonr, int *galaxycounter, const struct halo_data *halos, struct GALAXY *galaxies, const struct params *run_params)
double get_disk_radius(const int halonr, const int p, const struct halo_data *halos, const struct GALAXY *galaxies)
double get_bulge_radius(const int p, struct GALAXY *galaxies, const struct params *run_params)
void update_instability_bulge_radius(const int p, const double delta_mass, const double old_disk_radius, struct GALAXY *galaxies, const struct params *run_params)
double get_metallicity(const double gas, const double metals)
double dmax(const double x, const double y)
double get_virial_mass(const int halonr, const struct halo_data *halos, const struct params *run_params)
double get_virial_velocity(const int halonr, const struct halo_data *halos, const struct params *run_params)
double get_virial_radius(const int halonr, const struct halo_data *halos, const struct params *run_params)
void determine_and_store_regime(const int ngal, struct GALAXY *galaxies, const struct params *run_params)
static double inverse_normal_cdf(double p)
void determine_and_store_ffb_regime(const int ngal, const double Zcurr, struct GALAXY *galaxies, const struct params *run_params)
double interpolate_concentration_ishiyama21(const double logM, const double z, const struct params *run_params)
double concentration_from_vmax_vvir(const double Vmax, const double Vvir)
double get_halo_concentration(const int p, const double z, const struct GALAXY *galaxies, const struct params *run_params)
double calculate_ffb_threshold_mass(const double z, const struct params *run_params)
double calculate_ffb_fraction(const double Mvir, const double z, const struct params *run_params)
double calculate_gmax_BK25(const int p, const double z, const struct GALAXY *galaxies, const struct params *run_params)
float calculate_stellar_scale_height_BR06(float disk_scale_length_pc)
float calculate_midplane_pressure_BR06(float sigma_gas, float sigma_stars, float disk_scale_length_pc)
float calculate_molecular_fraction_BR06(float gas_surface_density, float stellar_surface_density, float disk_scale_length_pc)
float calculate_molecular_fraction_radial_integration(const int gal, struct GALAXY *galaxies, const struct params *run_params, double *strdot_code_out)
double calculate_tdep_K13_Gyr(float Sigma_gas, float Sigma_star, float rs_pc, float Z_prime, float f_H2)
float calculate_H2_fraction_KD12(const float surface_density, const float metallicity, const float clumping_factor)
double calculate_H2_fraction_K13(double Sigma_gas_msun_pc2, double metallicity, double clumping_factor)
double calculate_H2_fraction_GD14(double Sigma_gas_msun_pc2, double metallicity, double rs_pc)

Variables

static const double SHEN03_SLOPE_HIGH = 0.56
static const double SHEN03_INTERCEPT_HIGH = -5.54
static const double SHEN03_SLOPE_LOW = 0.14
static const double SHEN03_INTERCEPT_LOW = -1.21
static const double SHEN03_M_TRANSITION = 2.0e10
static const double DEKEL06_M_SHOCK_MSUN = 6.0e11
static const double PC_IN_CM = 3.08568e18
static const double DELTA_VIRT = 200.0
static const double DISK_RADIUS_FALLBACK_FRAC = 0.1
static const double TONINI16_DISK_FRAC = 0.2
static const double BK25_G_CRIT_MSUN_PC2 = 3100.0
static const double Z_SOLAR_ASPLUND09 = 0.014
static const double Z_SOLAR_GD14 = 0.02
static const double GD14_S_PARAM_UMW1 = 0.101

Core

Functions

static int evolve_galaxies(const int halonr, const int ngal, int *numgals, int *maxgals, struct halo_data *halos, struct halo_aux_data *haloaux, struct GALAXY **ptr_to_galaxies, struct GALAXY **ptr_to_halogal, struct params *run_params)
static int join_galaxies_of_progenitors(const int halonr, const int ngalstart, int *galaxycounter, int *maxgals, struct halo_data *halos, struct halo_aux_data *haloaux, struct GALAXY **ptr_to_galaxies, struct GALAXY **ptr_to_halogal, struct params *run_params)
int construct_galaxies(const int halonr, int *numgals, int *galaxycounter, int *maxgals, struct halo_data *halos, struct halo_aux_data *haloaux, struct GALAXY **ptr_to_galaxies, struct GALAXY **ptr_to_halogal, struct params *run_params)

Variables

static const double KM_PER_MPC = 3.086e19

Defines

PWRITE_64BIT_TO_32BIT(fd, var, offset, kind_of_var)

Functions

static int32_t sage_per_forest(const int64_t forestnr, struct save_info *save_info, struct forest_info *forest_info, struct params *run_params)
static int convert_trees_to_lhalo(const int ThisTask, const int NTasks, struct params *run_params, struct forest_info *forest_info)
int run_sage(const int ThisTask, const int NTasks, const char *param_file, void **params)
int32_t finalize_sage(void *params)

Functions

static double integrand_time_to_present(const double a, void *param)
static void set_units(struct params *run_params)
static void read_snap_list(struct params *run_params)
static double time_to_present(const double z, struct params *run_params)
void init(struct params *run_params)

Functions

static int32_t generate_galaxy_indices(const struct halo_data *halos, const struct halo_aux_data *haloaux, struct GALAXY *halogal, const int64_t numgals, const int64_t treenr, const int32_t filenr, const int64_t filenr_mulfac, const int64_t forestnr_mulfac, const struct params *run_params)
int32_t initialize_galaxy_files(const int rank, const struct forest_info *forest_info, struct save_info *save_info, const struct params *run_params)
int32_t save_galaxies(const int64_t task_forestnr, const int numgals, struct halo_data *halos, struct forest_info *forest_info, struct halo_aux_data *haloaux, struct GALAXY *halogal, struct save_info *save_info, const struct params *run_params)
int32_t finalize_galaxy_files(const struct forest_info *forest_info, struct save_info *save_info, const struct params *run_params)

Functions

int my_snprintf(char *buffer, int len, const char *format, ...)
char *get_time_string(struct timeval t0, struct timeval t1)
int64_t getnumlines(const char *fname, const char comment)
size_t myfread(void *ptr, const size_t size, const size_t nmemb, FILE *stream)
size_t myfwrite(const void *ptr, const size_t size, const size_t nmemb, FILE *stream)
int myfseek(FILE *stream, const long offset, const int whence)
ssize_t mywrite(int fd, const void *ptr, size_t nbytes)
ssize_t mypread(int fd, void *ptr, const size_t nbytes, off_t offset)
ssize_t mypwrite(int fd, const void *ptr, const size_t nbytes, off_t offset)
int AlmostEqualRelativeAndAbs_double(double A, double B, const double maxDiff, const double maxRelDiff)