From d724f3a757027301aca02404467af42a666a768c Mon Sep 17 00:00:00 2001 From: David Hendriks <davidhendriks93@gmail.com> Date: Wed, 22 Apr 2020 01:02:35 +0100 Subject: [PATCH] removed old scaling stuff and putting it in 1 file --- tests/population/custom_arg_file.txt | 2 - tests/population/grid_tests_cmdline.py | 15 - tests/population/scaling/argparseo.py | 38 + ...pulation_comparing_with_multiprocessing.py | 164 -- .../scaling/generate_test_script.py | 41 - ...ltiprocessing_via_population_comparison.py | 123 - tests/population/scaling/plot_scaling.py | 4 +- tests/population/scaling/run_tests.sh | 17 - tests/population/scaling/run_tests_example.sh | 3 - tests/population/scaling/scaling_functions.py | 57 + tests/population/scaling/scaling_script.py | 141 +- tests/population/test_output.txt | 2248 ----------------- tests/population/test_population.py | 206 -- tests/random_tests.py | 6 - 14 files changed, 159 insertions(+), 2906 deletions(-) delete mode 100644 tests/population/custom_arg_file.txt delete mode 100644 tests/population/grid_tests_cmdline.py create mode 100644 tests/population/scaling/argparseo.py delete mode 100644 tests/population/scaling/evolve_population_comparing_with_multiprocessing.py delete mode 100644 tests/population/scaling/generate_test_script.py delete mode 100644 tests/population/scaling/multiprocessing_via_population_comparison.py delete mode 100644 tests/population/scaling/run_tests.sh delete mode 100755 tests/population/scaling/run_tests_example.sh create mode 100644 tests/population/scaling/scaling_functions.py delete mode 100644 tests/population/test_output.txt delete mode 100644 tests/population/test_population.py delete mode 100644 tests/random_tests.py diff --git a/tests/population/custom_arg_file.txt b/tests/population/custom_arg_file.txt deleted file mode 100644 index a635b156f..000000000 --- a/tests/population/custom_arg_file.txt +++ /dev/null @@ -1,2 +0,0 @@ -binary_c --M_1 10 --M2 5 --orbital_period 1000000 -binary_c --M_1 10 --M2 10 --orbital_period 1000000 diff --git a/tests/population/grid_tests_cmdline.py b/tests/population/grid_tests_cmdline.py deleted file mode 100644 index eee0a2df4..000000000 --- a/tests/population/grid_tests_cmdline.py +++ /dev/null @@ -1,15 +0,0 @@ -import os -import json -import time -import pickle -import sys - -import matplotlib.pyplot as plt - - -from binarycpython.utils.grid import Population -from binarycpython.utils.functions import get_help_all, get_help - -test_pop = Population() - -test_pop.parse_cmdline() diff --git a/tests/population/scaling/argparseo.py b/tests/population/scaling/argparseo.py new file mode 100644 index 000000000..9a245dd05 --- /dev/null +++ b/tests/population/scaling/argparseo.py @@ -0,0 +1,38 @@ +import os +import json +import time +import pickle +import sys +import numpy as np + +from binarycpython.utils.grid import Population +from binarycpython.utils.functions import get_help_all, get_help, create_hdf5 + + +import argparse + + +parser = argparse.ArgumentParser() + +parser.add_argument( + "resolution_M_1", help="Resolution in M_1", +) + +parser.add_argument( + "resolution_per", help="Resolution in period", +) + +parser.add_argument( + "amt_cores", help="The amount of nodes that are used for the multiprocessing", +) + +parser.add_argument( + "name_testcase", help="The name of the testcase (e.g. laptop, cluster etc)", +) + + +args = parser.parse_args() +res_m_1 = int(args.resolution_M_1) +res_per = int(args.resolution_per) +AMT_CORES = int(args.amt_cores) +name_testcase = args.name_testcase \ No newline at end of file diff --git a/tests/population/scaling/evolve_population_comparing_with_multiprocessing.py b/tests/population/scaling/evolve_population_comparing_with_multiprocessing.py deleted file mode 100644 index f41769e35..000000000 --- a/tests/population/scaling/evolve_population_comparing_with_multiprocessing.py +++ /dev/null @@ -1,164 +0,0 @@ -import os -import json -import time -import pickle -import sys -import numpy as np - -from binarycpython.utils.grid import Population -from binarycpython.utils.functions import get_help_all, get_help, create_hdf5 - - -import argparse - - -parser = argparse.ArgumentParser() - -parser.add_argument( - "resolution_M_1", help="Resolution in M_1", -) - -parser.add_argument( - "resolution_per", help="Resolution in period", -) - -parser.add_argument( - "amt_cores", help="The amount of nodes that are used for the multiprocessing", -) - -parser.add_argument( - "name_testcase", help="The name of the testcase (e.g. laptop, cluster etc)", -) - - -args = parser.parse_args() - -res_m_1 = int(args.resolution_M_1) -res_per = int(args.resolution_per) -AMT_CORES = int(args.amt_cores) -name_testcase = args.name_testcase - -############################################################################## -## Quick script to get some output about which stars go supernova when. -def output_lines(output): - """ - Function that outputs the lines that were recieved from the binary_c run. - """ - return output.splitlines() - - -def parse_function(self, output): - # extract info from the population instance - # TODO: think about whether this is smart. Passing around this object might be an overkill - - # Get some information from the - data_dir = self.custom_options["data_dir"] - base_filename = self.custom_options["base_filename"] - - # Check directory, make if necessary - os.makedirs(data_dir, exist_ok=True) - - # Create filename - outfilename = os.path.join(data_dir, base_filename) - - # Go over the output. - for el in output_lines(output): - headerline = el.split()[0] - - # CHeck the header and act accordingly - if headerline == "DAVID_SN": - parameters = ["time", "mass_1", "prev_mass_1", "zams_mass_1", "SN_type"] - values = el.split()[1:] - seperator = "\t" - - if not os.path.exists(outfilename): - with open(outfilename, "w") as f: - f.write(seperator.join(parameters) + "\n") - - with open(outfilename, "a") as f: - f.write(seperator.join(values) + "\n") - - -resolution = {"M_1": res_m_1, "per": res_per} -total_systems = np.prod([el for el in resolution.values()]) -result_dir = "scaling_results" -# AMT_CORES = int(amt_cores) - - -test_pop = Population() - -test_pop.set( - verbose=1, amt_cores=AMT_CORES, binary=1, -) - -test_pop.add_grid_variable( - name="M_1", - longname="log primary mass", - valuerange=[1, 100], - resolution="{}".format(resolution["M_1"]), - spacingfunc="const(1, 100, {})".format(resolution["M_1"]), - precode="", - # precode="M_1=math.exp(lnm1)", - probdist="Kroupa2001(M_1)", - # probdist='self.custom_options["extra_prob_function"](M_1)', - dphasevol="dlnm1", - parameter_name="M_1", - condition="", -) - -### Grid generating test. -test_pop.add_grid_variable( - name="period", - longname="period", - valuerange=["M_1", 20], - resolution="{}".format(resolution["per"]), - spacingfunc="np.linspace(1, 10, {})".format(resolution["per"]), - precode="orbital_period = period**2", - probdist="flat(orbital_period)", - parameter_name="orbital_period", - dphasevol="dper", - condition='self.grid_options["binary"]==1', -) - - -# MP -total_mp_start = time.time() - -# evolve_mp_time = test_pop.test_evolve_population_mp() -evolve_mp_time = test_pop.test_evolve_population_mp_chunks() -# evolve_mp_time = test_pop.test_evolve_population_mp_chunks_better() - -total_mp_stop = time.time() - -total_mp = total_mp_stop - total_mp_start -print( - "MP ({} nodes) run with {} systems: {} of which {} spent on evolving the systems".format( - AMT_CORES, total_systems, total_mp, evolve_mp_time - ) -) - -# Lin -total_lin_start = time.time() - -evolve_lin_time = test_pop.test_evolve_population_lin() - -total_lin_stop = time.time() - -total_lin = total_lin_stop - total_lin_start - -print( - "linear run with {} systems: {} of which {} spent on evolving the systems".format( - total_systems, total_lin, evolve_lin_time - ) -) - -#### -speed_up = total_lin / total_mp -print("The speed up by using MP is: {}".format(total_lin / total_mp)) - - -# Write to file: -# amt_cores, amt_systems, total_time_lin, total_time_mp, speedup -# with open(os.path.join(result_dir, "comparison_result_{}.dat".format(name_testcase)), "a") as f: -# res = (AMT_CORES, total_systems, total_lin, total_mp, speed_up) -# f.write(str(res) + "\n") diff --git a/tests/population/scaling/generate_test_script.py b/tests/population/scaling/generate_test_script.py deleted file mode 100644 index a9c4f1edd..000000000 --- a/tests/population/scaling/generate_test_script.py +++ /dev/null @@ -1,41 +0,0 @@ -# Script to generate the test script :P -import socket, psutil -import numpy as np - -amount_of_cores = psutil.cpu_count(logical=False) -amount_of_cpus = psutil.cpu_count() -hostname = socket.gethostname() - -if amount_of_cpus <= 4: - stepsize = 1 -elif 4 < amount_of_cpus <= 24: - stepsize = 2 -elif 24 < amount_of_cpus <= 48: - stepsize = 4 - - -# Generate the lines to run -with open("run_tests_{}.sh".format(hostname), "w") as f: - command = "" - for cpu_count in np.arange(stepsize, amount_of_cpus + stepsize, stepsize): - - command += "python3 evolve_population_comparing_with_multiprocessing.py 10 10 {} {}\n".format( - cpu_count, hostname - ) - command += "python3 evolve_population_comparing_with_multiprocessing.py 20 20 {} {}\n".format( - cpu_count, hostname - ) - command += "python3 evolve_population_comparing_with_multiprocessing.py 25 25 {} {}\n".format( - cpu_count, hostname - ) - command += "python3 evolve_population_comparing_with_multiprocessing.py 35 35 {} {}\n".format( - cpu_count, hostname - ) - command += "python3 evolve_population_comparing_with_multiprocessing.py 50 50 {} {}\n".format( - cpu_count, hostname - ) - - command += "\n" - - f.write(command) - command = "" diff --git a/tests/population/scaling/multiprocessing_via_population_comparison.py b/tests/population/scaling/multiprocessing_via_population_comparison.py deleted file mode 100644 index bf66c753b..000000000 --- a/tests/population/scaling/multiprocessing_via_population_comparison.py +++ /dev/null @@ -1,123 +0,0 @@ -import os -import json -import time -import pickle -import sys -import numpy as np - -import matplotlib.pyplot as plt - -from binarycpython.utils.grid import Population -from binarycpython.utils.functions import get_help_all, get_help, create_hdf5 - - -import argparse - - -parser = argparse.ArgumentParser() -parser.add_argument( - "amt_systems", help="the amount of systems", -) - -parser.add_argument( - "amt_nodes", help="the amount of nodes that are used for the multiprocessing", -) - -parser.add_argument( - "name_testcase", help="The name of the testcase (e.g. laptop, cluster etc)", -) - - -args = parser.parse_args() - -amt_systems = args.amt_systems -amt_nodes = args.amt_nodes -name_testcase = args.name_testcase - - -## Quick script to get some output about which stars go supernova when. -def output_lines(output): - """ - Function that outputs the lines that were recieved from the binary_c run. - """ - return output.splitlines() - - -def parse_function(self, output): - # extract info from the population instance - # TODO: think about whether this is smart. Passing around this object might be an overkill - - # Get some information from the - data_dir = self.custom_options["data_dir"] - base_filename = self.custom_options["base_filename"] - - # Check directory, make if necessary - os.makedirs(data_dir, exist_ok=True) - - # Create filename - outfilename = os.path.join(data_dir, base_filename) - - # Go over the output. - for el in output_lines(output): - headerline = el.split()[0] - - # CHeck the header and act accordingly - if headerline == "DAVID_SN": - parameters = ["time", "mass_1", "prev_mass_1", "zams_mass_1", "SN_type"] - values = el.split()[1:] - seperator = "\t" - - if not os.path.exists(outfilename): - with open(outfilename, "w") as f: - f.write(seperator.join(parameters) + "\n") - - with open(outfilename, "a") as f: - f.write(seperator.join(values) + "\n") - - -## Set values -test_pop = Population() -# test_pop.set( -# C_logging_code=""" -# if(stardata->star[0].SN_type != SN_NONE) -# { -# if (stardata->model.time < stardata->model.max_evolution_time) -# { -# Printf("DAVID_SN %30.12e %g %g %g %d\\n", -# // -# stardata->model.time, // 1 -# stardata->star[0].mass, //2 -# stardata->previous_stardata->star[0].mass, //3 -# stardata->star[0].pms_mass, //4 -# stardata->star[0].SN_type //5 -# ); -# }; -# /* Kill the simulation to save time */ -# stardata->model.max_evolution_time = stardata->model.time - stardata->model.dtm; -# }; -# """ -# ) - -test_pop.set( - separation=1000000000, - orbital_period=400000000, - metallicity=0.002, - data_dir=os.path.join( - os.environ["BINARYC_DATA_ROOT"], - "testing_python", - "multiprocessing2", - name_testcase, - ), -) - -res = test_pop.evolve_population_comparison( - parse_function, amt=int(amt_systems), nodes=int(amt_nodes) -) -with open("comparison_result_{}.dat".format(name_testcase), "a") as f: - f.write(str(res) + "\n") - - -# mass_distribution = np.arange(1, 200) - - -# evolve_population_mp(parse_function, mass_distribution) diff --git a/tests/population/scaling/plot_scaling.py b/tests/population/scaling/plot_scaling.py index 575b210da..a5e1e45c1 100644 --- a/tests/population/scaling/plot_scaling.py +++ b/tests/population/scaling/plot_scaling.py @@ -1,5 +1,5 @@ -import matplotlib import os + import matplotlib.pyplot as plt import pandas as pd import numpy as np @@ -248,7 +248,7 @@ unique_amt_systems = df["total_systems"].unique() # Create dictionary with calculated means and stdevs etc calculated_results = calculate_results(results, unique_amt_cores, unique_amt_systems) -############################################################################################################################# +######################################################################################## # Plot speed up and efficiency. plot_speedup_and_efficiency(calculated_results, unique_amt_cores, unique_amt_systems) diff --git a/tests/population/scaling/run_tests.sh b/tests/population/scaling/run_tests.sh deleted file mode 100644 index 1f156a869..000000000 --- a/tests/population/scaling/run_tests.sh +++ /dev/null @@ -1,17 +0,0 @@ -#python multiprocessing_via_population_comparison.py 100 4 laptop -#python multiprocessing_via_population_comparison.py 100 4 laptop - -python multiprocessing_via_population_comparison.py 1000 4 laptop -python multiprocessing_via_population_comparison.py 1000 4 laptop -python multiprocessing_via_population_comparison.py 1000 4 laptop -python multiprocessing_via_population_comparison.py 1000 4 laptop - -python multiprocessing_via_population_comparison.py 2000 4 laptop -python multiprocessing_via_population_comparison.py 2000 4 laptop -python multiprocessing_via_population_comparison.py 2000 4 laptop -python multiprocessing_via_population_comparison.py 2000 4 laptop - -python multiprocessing_via_population_comparison.py 5000 4 laptop -python multiprocessing_via_population_comparison.py 5000 4 laptop -python multiprocessing_via_population_comparison.py 5000 4 laptop -python multiprocessing_via_population_comparison.py 5000 4 laptop diff --git a/tests/population/scaling/run_tests_example.sh b/tests/population/scaling/run_tests_example.sh deleted file mode 100755 index ad5386a13..000000000 --- a/tests/population/scaling/run_tests_example.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -python evolve_population_comparing_with_multiprocessing.py 25 25 2 "${HOSTNAME}" - diff --git a/tests/population/scaling/scaling_functions.py b/tests/population/scaling/scaling_functions.py new file mode 100644 index 000000000..6a5a691c8 --- /dev/null +++ b/tests/population/scaling/scaling_functions.py @@ -0,0 +1,57 @@ +""" +Module containing the scaling functions. +""" + +import time + +def get_mp_results(population, cpu_list, amt_repeats, total_systems): + """ + Function that runs a population <amt_repeats> for each + cpu amount (which is picked from cpu_list) + """ + + population.set(evolution_type="mp") + mp_dict = {} + for cpu_amt in cpu_list: + + mp_times = [] + + population.set(amt_cores=cpu_amt) + + # + for _ in range(amt_repeats): + total_mp_start = time.time() + population.evolve_population() + total_mp = time.time() - total_mp_start + + print( + "MP ({} nodes) run with {} systems: {}".format( + cpu_amt, total_systems, total_mp + ) + ) + mp_times.append(total_mp) + + mp_dict[cpu_amt] = mp_times + + return mp_dict + +def get_linear_results(population, amt_repeats, total_systems): + """ + Function that runs the population linearly (using 1 core) <amt_repeats> times + """ + + population.set(evolution_type="linear") + linear_times = [] + for _ in range(amt_repeats): + total_lin_start = time.time() + population.evolve_population() + total_lin = time.time() - total_lin_start + + print( + "linear run with {} systems: {}".format( + total_systems, total_lin + ) + ) + linear_times.append(total_lin) + + return linear_times diff --git a/tests/population/scaling/scaling_script.py b/tests/population/scaling/scaling_script.py index e7bc30e11..6b8ef3787 100644 --- a/tests/population/scaling/scaling_script.py +++ b/tests/population/scaling/scaling_script.py @@ -1,51 +1,69 @@ -# Script to generate the test script :P -import socket, psutil -import numpy as np -import time +""" +This script will test the scaling and performance of the code on your system. + +It requires some user input, which you can define at the top of the script after the imports. + +The following values should be configured according to your system: +- + +It will then run the population you specified, first linearly <AMT_REPEATS> times, +and then using multiprocessing it will run the population <AMT_REPEATS> times each time +with more cores. (Up until <AMOUNT_OF_CPUS>) + +TODO: get the real evolution time instead of the total as well +TODO: put the methods in functions and put them in a different file +""" + +import os import json +import socket +import psutil + +import numpy as np from binarycpython.utils.grid import Population -from binarycpython.utils.functions import get_help_all, get_help, create_hdf5 +from scaling_functions import get_mp_results, get_linear_results +AMT_REPEATS = 5 # Number of times the population will be repeated per cpu + # number. Useful to get some reliable statistics +RESOLUTION = {"M_1": 50, "per": 60} # Resolution of sampling of the population +RESULT_DIR = "scaling_results" # Directory where the results are written to. +PLOT_DIR = "scaling_plots" # Directory where the plots will be stored +TESTCASE = "linear vs MP batched" # `name` of the calculation +STEPSIZE_CPUS = 1 # Stepsize for the cpu number generator. Try to keep this + # low, to get the most reliable results -import argparse +AMOUNT_OF_CPUS = 4 # Amount of logical cpus the machine has. +# AMOUNT_OF_CPUS = psutil.cpu_count() -# Get some info -amount_of_cores = psutil.cpu_count(logical=False) -amount_of_cpus = psutil.cpu_count() -hostname = socket.gethostname() +AMOUNT_OF_CORES = 2 # The amount of physical cores. This value + # is not vital bit will be used in the plot +# AMOUNT_OF_CORES = psutil.cpu_count(logical=False) # You can also use the psutil function to get + # the amt of physical cores, but this isnt fully + # reliable (in mar 2020 it didnt get this value + # right when there were multiple sockets) -# Generate list of cpu amounts to use -if amount_of_cpus <= 4: - stepsize = 1 -elif 4 < amount_of_cpus: - stepsize = 2 -# elif 24 < amount_of_cpus <= 48: -# stepsize = 4 -cpu_list = [1] -for i in range(1, int(amount_of_cpus / stepsize) + 1): - cpu_amt = i * stepsize - if not cpu_amt in cpu_list: - cpu_list.append(i * stepsize) +# Some calculated values +TOTAL_SYSTEMS = int(np.prod([el for el in RESOLUTION.values()])) +HOSTNAME = socket.gethostname() -# set some info -amt_repeats = 5 -resolution = {"M_1": 50, "per": 60} -total_systems = int(np.prod([el for el in resolution.values()])) -result_dir = "scaling_results" -testcase = "linear vs MP batched" +# Generate the range of cpu numbers +CPU_LIST = np.arange(1, AMOUNT_OF_CPUS+1, STEPSIZE_CPUS) +if not CPU_LIST[-1] == AMOUNT_OF_CPUS: + CPU_LIST = np.append(CPU_LIST, np.array([AMOUNT_OF_CPUS])) +################################################################## # Create dictionairy in which to store all the results: result_dict = {} # -result_dict["amt_systems"] = total_systems -result_dict["hostname"] = hostname -result_dict["amt_logical_cores"] = amount_of_cpus -result_dict["amt_of_physical_cores"] = amount_of_cores -result_dict["testcase"] = testcase +result_dict["amt_systems"] = TOTAL_SYSTEMS +result_dict["hostname"] = HOSTNAME +result_dict["amt_logical_cores"] = AMOUNT_OF_CPUS +result_dict["amt_of_physical_cores"] = AMOUNT_OF_CORES +result_dict["testcase"] = TESTCASE ################# # Configuring population @@ -59,8 +77,8 @@ test_pop.add_grid_variable( name="M_1", longname="log primary mass", valuerange=[1, 100], - resolution="{}".format(resolution["M_1"]), - spacingfunc="const(1, 100, {})".format(resolution["M_1"]), + resolution="{}".format(RESOLUTION["M_1"]), + spacingfunc="const(1, 100, {})".format(RESOLUTION["M_1"]), probdist="Kroupa2001(M_1)", # probdist='self.custom_options["extra_prob_function"](M_1)', dphasevol="dlnm1", @@ -72,8 +90,8 @@ test_pop.add_grid_variable( name="period", longname="period", valuerange=["M_1", 20], - resolution="{}".format(resolution["per"]), - spacingfunc="np.linspace(1, 10, {})".format(resolution["per"]), + resolution="{}".format(RESOLUTION["per"]), + spacingfunc="np.linspace(1, 10, {})".format(RESOLUTION["per"]), precode="orbital_period = period**2", probdist="flat(orbital_period)", parameter_name="orbital_period", @@ -85,50 +103,15 @@ test_pop.add_grid_variable( # Execute grids # Linear runs -linear_times = [] -for repeat in range(amt_repeats): - total_lin_start = time.time() - evolve_lin_time = test_pop.test_evolve_population_lin() - total_lin = time.time() - total_lin_start - - print( - "linear run with {} systems: {} of which {} spent on evolving the systems".format( - total_systems, total_lin, evolve_lin_time - ) - ) - linear_times.append(total_lin) - - -result_dict["linear"] = linear_times +LINEAR_TIMES = get_linear_results(test_pop, AMT_REPEATS, TOTAL_SYSTEMS) +result_dict["linear"] = LINEAR_TIMES ####################################################################################### # MP runs -mp_dict = {} -for cpu_amt in cpu_list: - - mp_times = [] - - test_pop.set(amt_cores=cpu_amt) - - # - for repeat in range(amt_repeats): - total_mp_start = time.time() - evolve_mp_time = test_pop.evolve_population_mp_chunks() - total_mp = time.time() - total_mp_start - - print( - "MP ({} nodes) run with {} systems: {} of which {} spent on evolving the systems".format( - cpu_amt, total_systems, total_mp, evolve_mp_time - ) - ) - mp_times.append(total_mp) - - mp_dict[cpu_amt] = mp_times - -result_dict["mp"] = mp_dict +MP_DICT = get_mp_results(test_pop, CPU_LIST, AMT_REPEATS, TOTAL_SYSTEMS) +result_dict["mp"] = MP_DICT -# Write to file -with open( - "scaling_results/{}_{}_systems.json".format(hostname, total_systems), "w" -) as f: +# Write to file and make sure the directory exists. +os.makedirs(RESULT_DIR, exist_ok=True) +with open(os.path.join(RESULT_DIR, "{}_{}_systems.json".format(HOSTNAME, TOTAL_SYSTEMS)), "w") as f: f.write(json.dumps(result_dict)) diff --git a/tests/population/test_output.txt b/tests/population/test_output.txt deleted file mode 100644 index 32d9d1623..000000000 --- a/tests/population/test_output.txt +++ /dev/null @@ -1,2248 +0,0 @@ -{ - "population_settings": { - "bse_options": { - "M_1": 100, - "separation": 0, - "orbital_period": 500000000, - "max_evolution_time": 15000, - "eccentricity": 0.02, - "M_2": 1, - "metallicity": 0.0002 - }, - "grid_options": { - "amt_cores": 1, - "verbose": 0, - "C_auto_logging": null, - "C_logging_code": "\n if(stardata->star[0].stellar_type>=MS)\n {\n if (stardata->model.time < stardata->model.max_evolution_time)\n {\n Printf(\"DAVID_SCO %30.12e %g %g %g %g %d %d\\n\",\n // \n stardata->model.time, // 1\n\n stardata->star[0].mass, //2\n stardata->previous_stardata->star[0].mass, //3\n\n stardata->star[0].radius, //4\n stardata->previous_stardata->star[0].radius, //5\n\n stardata->star[0].stellar_type, //6\n stardata->previous_stardata->star[0].stellar_type //7\n\n\n );\n };\n /* Kill the simulation to save time */\n //stardata->model.max_evolution_time = stardata->model.time - stardata->model.dtm;\n };\n", - "custom_logging_func_memaddr": -1, - "log_args": 0, - "log_args_dir": "/tmp/", - "grid_variables": {} - }, - "custom_options": {} - }, - "binary_c_defaults": { - "metallicity": "0.02", - "effective_metallicity": "-1", - "M_1": "1", - "M_2": "0.5", - "eccentricity": "0", - "orbital_period": "0", - "probability": "1", - "phasevol": "NULL", - "stellar_type_2": "1", - "stellar_structure_algorithm": "0", - "solver": "0", - "max_evolution_time": "15000", - "max_model_number": "0", - "monte_carlo_kicks": "True", - "disc_timestep_factor": "NULL", - "cbdisc_mass_loss_inner_viscous_accretion_method": "NULL", - "cbdisc_inner_edge_stripping": "NULL", - "cbdisc_outer_edge_stripping": "NULL", - "disc_n_monte_carlo_guesses": "NULL", - "disc_log": "NULL", - "disc_log2d": "NULL", - "disc_log_dt": "NULL", - "disc_log_directory": "NULL", - "cbdisc_eccentricity_pumping_method": "NULL", - "cbdisc_viscous_photoevaporation_coupling": "NULL", - "cbdisc_inner_edge_stripping_timescale": "NULL", - "cbdisc_outer_edge_stripping_timescale": "NULL", - "cbdisc_viscous_L2_coupling": "NULL", - "gravitational_radiation_model": "0", - "nova_irradiation_multiplier": "0", - "gravitational_radiation_modulator_J": "1", - "gravitational_radiation_modulator_e": "1", - "nova_faml_multiplier": "0", - "RLOF_angular_momentum_transfer_model": "0", - "post_SN_orbit_method": "0", - "evolution_splitting": "False", - "disable_events": "False", - "evolution_splitting_sn_n": "10", - "evolution_splitting_maxdepth": "2", - "random_seed": "0", - "random_skip": "0", - "idum": "0", - "repeat": "1", - "random_systems": "0", - "stellar_type_1": "1", - "equation_of_state_algorithm": "NULL", - "opacity_algorithm": "NULL", - "wind_mass_loss": "1", - "gbwind": "0", - "mattsson_Orich_tpagbwind": "NULL", - "magnetic_braking_factor": "1", - "magnetic_braking_gamma": "3", - "magnetic_braking_algorithm": "0", - "gb_reimers_eta": "0.4", - "gbwindfac": "1", - "agbwindfac": "1", - "tpagbwind": "0", - "vwind_multiplier": "0.125", - "superwind_mira_switchon": "500", - "vw93_mira_shift": "0", - "vw93_multiplier": "1", - "tpagb_reimers_eta": "1", - "mass_accretion_rate1": "0", - "mass_accretion_rate2": "0", - "angular_momentum_accretion_rate1": "0", - "angular_momentum_accretion_rate2": "0", - "angular_momentum_accretion_rate_orbit": "0", - "accretion_start_time": "-1", - "accretion_end_time": "-1", - "wr_wind": "0", - "wr_wind_fac": "1", - "wrwindfac": "1", - "accretion_limit_eddington_multiplier": "1", - "accretion_limit_thermal_multiplier": "1", - "accretion_limit_dynamical_multiplier": "1", - "donor_limit_envelope_multiplier": "0", - "donor_limit_thermal_multiplier": "1", - "donor_limit_dynamical_multiplier": "1", - "Bondi_Hoyle_accretion_factor": "1.5", - "BH_prescription": "0", - "sn_kick_distribution_II": "1", - "sn_kick_distribution_ECAP": "0", - "sn_kick_distribution_NS_NS": "0", - "sn_kick_distribution_IBC": "1", - "sn_kick_distribution_GRB_COLLAPSAR": "1", - "sn_kick_distribution_TZ": "0", - "sn_kick_distribution_AIC_BH": "0", - "sn_kick_distribution_BH_BH": "0", - "sn_kick_distribution_BH_NS": "0", - "sn_kick_distribution_IA_Hybrid_HeCOWD": "0", - "sn_kick_distribution_IA_Hybrid_HeCOWD_subluminous": "0", - "sn_kick_dispersion_II": "190", - "sn_kick_dispersion_ECAP": "0", - "sn_kick_dispersion_NS_NS": "0", - "sn_kick_dispersion_IBC": "190", - "sn_kick_dispersion_GRB_COLLAPSAR": "190", - "sn_kick_dispersion_TZ": "0", - "sn_kick_dispersion_AIC_BH": "0", - "sn_kick_dispersion_BH_BH": "0", - "sn_kick_dispersion_BH_NS": "0", - "sn_kick_dispersion_IA_Hybrid_HeCOWD": "0", - "sn_kick_dispersion_IA_Hybrid_HeCOWD_subluminous": "0", - "sn_kick_companion_IA_He": "0", - "sn_kick_companion_IA_ELD": "0", - "sn_kick_companion_IA_CHAND": "0", - "sn_kick_companion_AIC": "0", - "sn_kick_companion_ECAP": "0", - "sn_kick_companion_IA_He_Coal": "0", - "sn_kick_companion_IA_CHAND_Coal": "0", - "sn_kick_companion_NS_NS": "0", - "sn_kick_companion_GRB_COLLAPSAR": "0", - "sn_kick_companion_HeStarIa": "0", - "sn_kick_companion_IBC": "0", - "sn_kick_companion_II": "0", - "sn_kick_companion_IIa": "0", - "sn_kick_companion_WDKICK": "0", - "sn_kick_companion_TZ": "0", - "sn_kick_companion_AIC_BH": "0", - "sn_kick_companion_BH_BH": "0", - "sn_kick_companion_BH_NS": "0", - "sn_kick_companion_IA_Hybrid_HeCOWD": "0", - "sn_kick_companion_IA_Hybrid_HeCOWD_subluminous": "0", - "wd_sigma": "0", - "wd_kick_direction": "0", - "wd_kick_when": "0", - "wd_kick_pulse_number": "0", - "max_tpagb_core_mass": "1.38", - "minimum_helium_ignition_core_mass": "0", - "minimum_mass_for_carbon_ignition": "1.6", - "minimum_mass_for_neon_ignition": "2.85", - "max_neutron_star_mass": "1.8", - "chandrasekhar_mass": "1.44", - "delta_mcmin": "NULL", - "lambda_min": "NULL", - "lambda_multiplier": "NULL", - "minimum_envelope_mass_for_third_dredgeup": "NULL", - "mass_of_pmz": "NULL", - "c13_eff": "NULL", - "mc13_pocket_multiplier": "NULL", - "E2_prescription": "0", - "dtfac": "1", - "hbbtfac": "NULL", - "tidal_strength_factor": "1", - "hachisu_qcrit": "1.15", - "hachisu_disk_wind": "False", - "mass_accretion_for_eld": "0.15", - "WDWD_merger_algorithm": "0", - "type_Ia_MCh_supernova_algorithm": "NULL", - "Seitenzahl2013_model": "NULL", - "type_Ia_sub_MCh_supernova_algorithm": "NULL", - "max_HeWD_mass": "0.7", - "merger_angular_momentum_factor": "1", - "wind_angular_momentum_loss": "0", - "wind_djorb_fac": "1", - "lw": "1", - "yields_dt": "NULL", - "yields_logdt": "NULL", - "yields_startlogtime": "NULL", - "yields_logtimes": "NULL", - "reverse_time": "NULL", - "start_time": "0", - "CEMP_logg_maximum": "NULL", - "CEMP_cfe_minimum": "NULL", - "thick_disc_start_age": "NULL", - "thick_disc_end_age": "NULL", - "thick_disc_logg_min": "NULL", - "thick_disc_logg_max": "NULL", - "CEMP_minimum_age": "NULL", - "escape_velocity": "NULL", - "escape_fraction": "NULL", - "pre_main_sequence": "False", - "pre_main_sequence_fit_lobes": "False", - "rlperi": "False", - "qcrit_LMMS": "0.6944", - "qcrit_MS": "1.6", - "qcrit_HG": "4", - "qcrit_GB": "-1", - "qcrit_CHeB": "3", - "qcrit_EAGB": "-1", - "qcrit_TPAGB": "-1", - "qcrit_HeMS": "3", - "qcrit_HeHG": "4", - "qcrit_HeGB": "0.78125", - "qcrit_HeWD": "3", - "qcrit_COWD": "3", - "qcrit_ONeWD": "3", - "qcrit_NS": "3", - "qcrit_BH": "3", - "qcrit_degenerate_LMMS": "1", - "qcrit_degenerate_MS": "1", - "qcrit_degenerate_HG": "4.7619", - "qcrit_degenerate_GB": "1.15", - "qcrit_degenerate_CHeB": "3", - "qcrit_degenerate_EAGB": "1.15", - "qcrit_degenerate_TPAGB": "1.15", - "qcrit_degenerate_HeMS": "3", - "qcrit_degenerate_HeHG": "4.7619", - "qcrit_degenerate_HeGB": "1.15", - "qcrit_degenerate_HeWD": "0.625", - "qcrit_degenerate_COWD": "0.625", - "qcrit_degenerate_ONeWD": "0.625", - "qcrit_degenerate_NS": "0.625", - "qcrit_degenerate_BH": "0.625", - "mass_for_Hestar_Ia_upper": "0", - "mass_for_Hestar_Ia_lower": "0", - "alphaCB": "NULL", - "minimum_donor_menv_for_comenv": "0", - "comenv_prescription": "0", - "comenv_ejection_spin_method": "0", - "comenv_merger_spin_method": "0", - "comenv_ms_accretion_mass": "NULL", - "comenv_ms_accretion_fraction": "NULL", - "comenv_ns_accretion_mass": "NULL", - "comenv_ns_accretion_fraction": "NULL", - "alpha_ce": "1", - "lambda_ce": "0.5", - "comenv_splitmass": "NULL", - "nelemans_recalc_eccentricity": "False", - "comenv_post_eccentricity": "0", - "nelemans_gamma": "1.75", - "nelemans_minq": "0.2", - "nelemans_max_frac_j_change": "1", - "nelemans_n_comenvs": "1", - "lambda_ionisation": "0.5", - "lambda_enthalpy": "0", - "cbdisc_gamma": "NULL", - "cbdisc_alpha": "NULL", - "cbdisc_kappa": "NULL", - "cbdisc_minimum_evaporation_timescale": "NULL", - "cbdisc_torquef": "NULL", - "cbdisc_max_lifetime": "NULL", - "cbdisc_init_dM": "NULL", - "cbdisc_init_dJdM": "NULL", - "cbdisc_mass_loss_constant_rate": "NULL", - "cbdisc_mass_loss_FUV_multiplier": "NULL", - "cbdisc_mass_loss_Xray_multiplier": "NULL", - "cbdisc_mass_loss_ISM_ram_pressure_multiplier": "NULL", - "cbdisc_mass_loss_ISM_pressure": "NULL", - "cbdisc_mass_loss_inner_viscous_multiplier": "NULL", - "cbdisc_mass_loss_inner_viscous_angular_momentum_multiplier": "NULL", - "cbdisc_resonance_multiplier": "NULL", - "cbdisc_resonance_damping": "NULL", - "cbdisc_fail_ring_inside_separation": "NULL", - "cbdisc_mass_loss_inner_L2_cross_multiplier": "NULL", - "cbdisc_minimum_luminosity": "NULL", - "cbdisc_minimum_mass": "NULL", - "cbdisc_minimum_fRing": "NULL", - "comenv_disc_angmom_fraction": "NULL", - "comenv_disc_mass_fraction": "NULL", - "wind_disc_angmom_fraction": "NULL", - "wind_disc_mass_fraction": "NULL", - "WRLOF_method": "1", - "minimum_timestep": "1e-08", - "timestep_solver_factor": "1", - "RLOF_mdot_factor": "1", - "RLOF_f": "NULL", - "minimum_separation_for_instant_RLOF": "False", - "separation": "0", - "minimum_orbital_period_for_instant_RLOF": "False", - "RLOF_method": "0", - "small_envelope_method": "0", - "RLOF_interpolation_method": "0", - "vrot1": "0", - "vrot2": "0", - "timestep_modulator": "1", - "timestep_multiplier%d": "", - "maximum_timestep": "1e+20", - "zoomfac_multiplier_decrease": "0.5", - "zoomfac_multiplier_increase": "1.2", - "maximum_timestep_factor": "0", - "maximum_nuclear_burning_timestep": "1e+20", - "nova_retention_method": "0", - "nova_retention_fraction": "0.001", - "beta_reverse_nova": "0", - "WD_accretion_rate_novae_upper_limit_hydrogen_donor": "-1", - "WD_accretion_rate_novae_upper_limit_helium_donor": "-1", - "WD_accretion_rate_novae_upper_limit_other_donor": "-1", - "WD_accretion_rate_new_giant_envelope_lower_limit_hydrogen_donor": "-1", - "WD_accretion_rate_new_giant_envelope_lower_limit_helium_donor": "-1", - "WD_accretion_rate_new_giant_envelope_lower_limit_other_donor": "-1", - "CRAP_parameter": "0", - "log_filename": "/tmp/c_log.dat", - "stardata_dump_filename": "NULL", - "stardata_load_filename": "NULL", - "api_log_filename_prefix": "/dev/null", - "hrdiag_output": "NULL", - "internal_buffering": "2", - "individual_novae": "False", - "nova_timestep_accelerator_num": "100", - "nova_timestep_accelerator_index": "0.5", - "nova_timestep_accelerator_max": "-1", - "force_corotation_on_RLOF": "True", - "nonconservative_angmom_gamma": "-1", - "max_stellar_angmom_change": "0.05", - "third_dup": "True", - "third_dup_multiplier": "Function", - "NeNaMgAl": "NULL", - "nucreacmult%d": "NULL", - "nucsyn_metallicity": "NULL", - "initial_abundance_mix": "NULL", - "init_abund": "Function", - "init_abund_mult": "Function", - "init_abund_dex": "Function", - "init_abunds_only": "NULL", - "initial_abunds_only": "NULL", - "no_thermohaline_mixing": "NULL", - "lithium_GB_post_Heflash": "NULL", - "lithium_GB_post_1DUP": "NULL", - "lithium_hbb_multiplier": "NULL", - "angelou_lithium_decay_function": "NULL", - "angelou_lithium_LMMS_time": "NULL", - "angelou_lithium_MS_time": "NULL", - "angelou_lithium_HG_time": "NULL", - "angelou_lithium_GB_time": "NULL", - "angelou_lithium_CHeB_time": "NULL", - "angelou_lithium_EAGB_time": "NULL", - "angelou_lithium_TPAGB_time": "NULL", - "angelou_lithium_LMMS_decay_time": "NULL", - "angelou_lithium_MS_decay_time": "NULL", - "angelou_lithium_HG_decay_time": "NULL", - "angelou_lithium_GB_decay_time": "NULL", - "angelou_lithium_CHeB_decay_time": "NULL", - "angelou_lithium_EAGB_decay_time": "NULL", - "angelou_lithium_TPAGB_decay_time": "NULL", - "angelou_lithium_LMMS_massfrac": "NULL", - "angelou_lithium_MS_massfrac": "NULL", - "angelou_lithium_HG_massfrac": "NULL", - "angelou_lithium_GB_massfrac": "NULL", - "angelou_lithium_CHeB_massfrac": "NULL", - "angelou_lithium_EAGB_massfrac": "NULL", - "angelou_lithium_TPAGB_massfrac": "NULL", - "angelou_lithium_vrot_trigger": "NULL", - "angelou_lithium_vrotfrac_trigger": "NULL", - "gaia_Teff_binwidth": "NULL", - "gaia_L_binwidth": "NULL", - "fabian_imf_log_time": "NULL", - "fabian_imf_log_timestep": "NULL", - "rotationally_enhanced_mass_loss": "0", - "AGB_core_algorithm": "1", - "AGB_radius_algorithm": "1", - "AGB_luminosity_algorithm": "1", - "AGB_3dup_algorithm": "1", - "overspin_algorithm": "0", - "rotationally_enhanced_exponent": "1", - "warmup_cpu": "Function", - "help": "Function", - "help_all": "Function", - "list_args": "Function", - "version": "Function", - "dumpversion": "Function", - "version_only": "Function", - "batchmode": "3", - "speedtests": "False", - "use_fixed_timestep_%d": "" - }, - "binary_c_version_info": "Binary_c/nucsyn by Robert Izzard, originally based on BSE of Hurley, Pols, Tout, Aarseth, but with many updates and rewrites.\nEmail izzard@astro.uni-bonn.de, rgi@ast.cam.ac.uk, rob.izzard@gmail.com\nVersion 2.1.6\nBuild: Dec 17 2019 10:44:27\nBINARY_C_MAJOR_VERSION is 2 \nBINARY_C_MINOR_VERSION is 1 \nBINARY_C_PATCH_VERSION is 6 \nBINARY_C_PRE_VERSION is \nSVN revision unknown\nSVN URL unknown\ngit revision \"\"4764:20191217:31c10721\"\"\ngit URL \"gitlab@gitlab.eps.surrey.ac.uk:ri0005/binary_c.git\"\ngit branch unknown\n__VERSION__ is on \n__VERSION__ is \"7.4.0\" \n__OPTIMIZE__ is on \n__OPTIMIZE__ is 1 \nCFLAGS is on \nCFLAGS is \"-DALIGNSIZE=8 -std=gnu99 -march=native -mtune=native -ffast-math -fno-associative-math -fno-finite-math-only -fsignaling-nans -fomit-frame-pointer -fvisibility=hidden -DCPUFREQ=3900 -DOPERATING_SYSTEM=linux -DLINUX -DPOSIX -DLARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFPU_CONTROL -DGIT_REVISION=4764:20191217:31c10721 -DGIT_URL=gitlab@gitlab.eps.surrey.ac.uk:ri0005/binary_c.git -D__HAVE_LIBC__ -D__HAVE_LIBGSL__ -I/usr/include -DUSE_GSL -D__HAVE_LIBGSLCBLAS__ -D__HAVE_LIBBACKTRACE__ -D__HAVE_LIBM__ -D__HAVE_IEEE754_H__ -D__HAVE_DRAND48__ -D__HAVE_HSEARCH_DATA__ -D__HAVE_MALLOC_H__ -D__HAVE_SETITIMER__ -D__HAVE_PKG_CONFIG__ -D__SHOW_STARDATA__ -D__DIFF_STARDATA__ -O3\" \nCC is on \nCC is \"gcc\" \nLD is on \nLD is \"gcc\" \nLIBS is on \nLIBS is \"-lc -lgsl -L/usr/lib/x86_64-linux-gnu -lgsl -lgslcblas -lm -lgslcblas -lbacktrace -lm\" \nINCDIRS is on \nINCDIRS is \"-I/home/david/projects/binary_c_root/binary_c -I/home/david/projects/binary_c_root/binary_c/src -I/usr/include -I/usr/local/include\" \nLIBDIRS is on \nLIBDIRS is \"-L./src -L/usr/lib/x86_64-linux-gnu\" \n__OPTIMIZE_SIZE__ is off \n__NO_INLINE__ is off \n__GNUC__ is on \n__GNUC__ is 7 \n__GNUC_MINOR__ is 4 \n__GNUC_PATCHLEVEL__ is 0 \n__clang__ is off \n__SUNPRO_C is off \n__INTEL_COMPILER is off \n__STDC__ is on \n__STDC_VERSION__ is on \n__STDC_VERSION__ is 199901 \n__STRICT_ANSI__ is off \n__ELF__ is on \n_POSIX_C_SOURCE is on \n_POSIX_C_SOURCE is 200809 \n_XOPEN_SOURCE is on \n_XOPEN_SOURCE is 700 \n_ISOC11_SOURCE is on \n_ISOC11_SOURCE is 1 \n_ISOC99_SOURCE is on \n_ISOC99_SOURCE is 1 \n_C89 is on \n_C90 is on \n_C94 is on \n_C99 is on \n_C11 is off \nByte order is little endian\n__FLOAT_WORD_ORDER__ is on \nFloat order is little endian\nACML is off \n__NO_MATH_ERRNO__ is on (probably via -ffast-math)\n__FAST_MATH__ is off (probably via -ffast-math)\n__SUPPORT_SNAN__ is on (signalling NaNs)\nFPU_PRECISION is _FPU_EXTENDED \nFPU_CAPTURE_INVALID is on \nFPU_CAPTURE_INEXACT is off \nFPU_CAPTURE_UNDERFLOWS is on \nFPU_CAPTURE_OVERFLOWS is on \nFPU_CAPTURE_DIVIDE_BY_ZERO is on \nFPU_CONTROL is on \nCHECK_ISNAN_WORKS is on \nZERO is 0.000000000000000000000000000000e+00 \nTINY is 9.999999999999999988193093545599e-15 \nVERY_TINY is 9.999999999999999451532714542096e-21 \nREALLY_TINY is 9.999999999999999821002623990828e-201 \nLARGE_FLOAT is 9.999999999999999697331222125104e+199 \nPI is 3.141592653589793115997963468544e+00 \nTWOPI is 6.283185307179586231995926937088e+00 \nPure_function is __attribute__((pure)) \nConstant_function is __attribute__ ((const)) \nRESTRICT is __restrict__ \ninline is inline \nFASTCALL is __attribute__((fastcall))__ \nHot_function is __attribute__((hot)) \nNonnull_all_arguments is __attribute__((nonnull)) \nNonnull_some_arguments is Nonnull_some_arguments \nAlloc_size_first is __attribute__((alloc_size(1))) \nAlloc_size_second is __attribute__((alloc_size(2))) \nAlloc_size_product is __attribute__((alloc_size(1,2))) \nReturns_nonnull is __attribute__((returns_nonnull)) \nDeprecated is Deprecated \nStringify_macro(Autotype) is (\"\" \"Autotype\") \nStringify(Autotype) is \"\" \"Autotype\" \n__USE_C99_BOOLEAN__ is on \nMAYBE_UNUSED is __attribute__ ((unused)) \n__HAVE_LIBRINTERPOLATE__ is off \n__HAVE_LIBRINTERPOLATE_BINARY_C__ is on \nRINTERPOLATE_VERSION is \"1.5\" \nRINTERPOLATE_MAJOR_VERSION is 1 \nRINTERPOLATE_MINOR_VERSION is 5 \nGSL_VERSION is \"2.4\" \nGSL_MAJOR_VERSION is 2 \nGSL_MINOR_VERSION is 4 \nUSE_GSL is on \nGSL_ROOT_FSOLVER is gsl_root_fsolver_brent \nGSL_INTEGRATOR_WORKSPACE_SIZE is 1000 \n__int__ is int \n__double__ is double \n__long__ is long \n__short__ is \n__unsigned__ is unsigned \n__const__ is const \n__static__ is static \nSize of : short int 2, unsigned short int 2, int 4, unsigned int 4, long int 8, unsigned long int 8, long long int 8, unsigned long long int 8, size_t 8, float 4, double 8, long double 16, char 1, Boolean 1, stardata_t 81448, preferences_t 18624, star_t 1400, common_t 8160, model_t 70216, diffstats_t 256, probability_distribution_t 56, RLOF_orbit_t 40, store_t 720, tmpstore_t 184, data_table_t 24, stardata_dump_t 1105152, GSL_args_t 40, envelope_t 168, envelope_shell_t 128, equation_of_state_t 248, opacity_t 80, kick_system_t 160, coordinate_t 24, binary_system_t 0, power_law_t 0, disc_thermal_zone_t 0, disc_loss_t 0, disc_t 0, mersenne_twister_t 2504, binary_c_random_buffer_t 2520, binary_c_file_t 4128, difflogitem_t 40, difflogstack_t 24, binary_c_fixed_timestep_t 56, new_supernova_t 16, splitinfo_t 32, derivative_t 32, bint_t 0, orbit_t 48, Random_seed 8, Random_buffer 2504, FILE 216, void* 8, short int* 8, unsigned short int* 8, int* 8, unsigned int* 8, long int* 8, unsigned long int* 8, long long int* 8, unsigned long long int* 8, float* 8, double* 8, long double* 8, char* 8, Boolean* 8, stardata_t* 8, star_t* 8, FILE* 8, __int__ 4, __double__ 8, __unsigned__ __int__ 4, __short__ __int__ 4, __long__ __int__ 8\nstardata_t is libbinary_c_stardata_t \nstar_t is libbinary_c_star_t \npreferences_t is libbinary_c_preferences_t \nstore_t is libbinary_c_store_t \ntmpstore_t is libbinary_c_tmpstore_t \nmodel_t is libbinary_c_model_t \ncommon_t is libbinary_c_common_t \nprintf is printf \n_printf is _printf \n, splitinfo_t 32\nStack limit current = 8388608, max = 18446744073709551615 (-1 means no limit)\nSEGFAULTS is off \nCATCH_SIGVTALRM is on \nOPERATING_SYSTEM is 1 \nLINUX is on \nWINDOWS is off \nDARWIN is off \nUNKNOWN_OPERATING_SYSTEM is off \n__APPLE__ is off \n__arm__ is off \n__i386__ is off \nMemory is aligned to 8 bytes (set in ALIGNSIZE)\nBuiltin_aligned is Builtin_aligned \nAssume_aligned is Assume_aligned \n__NATIVE_MALLOC__ is on \nALLOC_CHECKS is on \nHAVE_MALLOC_USABLE_SIZE is on \nCHECK_MEMCPY_ALIGNMENT is off \nMalloc_usable_size is Malloc_usable_size \nUSE_SKYWIND_FAST_MEMCPY is off \nUSE_APEX_MEMMOVE is off \nUSE_ASMLIB is off \nTARGET_STACK_PROTECT_RUNTIME_ENABLED_P is off \nSTACK_SIZE is 100L \nSTACK_ACTION is on \nSTACK_ACTION is 0 \nSTACK_CHECK_BUILTIN is off \nSTACK_CHECK_STATIC_BUILTIN is off \nSTACK_CHECKS is off \nBAN_UNSAFE_FUNCTIONS is on \nMEMOIZE is on \n__HAVE_LIBMEMOIZE__ is off \nMEMOIZE_VERSION is \"1.4\" \nMEMOIZE_HEADER_FILE is \"memoize/memoize.h\" \nCompiled for 64 bit architecture\nTIMER is on \nTIMER_USE_ASM is off \nTIMER_PER_SYSTEM is on \nTIMEOUT_SECONDS is 0 \nTIMEOUT_SECONDS_WITH_VALGRIND is 3000 \nCPUFREQ is on \nCPUFREQ is 3900 \nCLOCKS_PER_SEC is on \nCLOCKS_PER_SEC is 1000000 \n_SC_CLK_TCK = 100\nmillisecond is on \nmillisecond is 3.900000000000000000000000000000e+06 \nBINARY_C_API is on \nBINARY_C_API_FORTRAN is on \nbinary_c_API_function is __attribute__ ((visibility(\"default\"))) \nSTARDATA_DUMP_FORMAT is 1 \nDEBUG is on \nDEBUG is 0 \nDEBUG_CALLER is off \nDEBUG_CALLER_LINE is on \nDEBUG_REMOVE_NAN_FROM_CALLER is on \nDEBUG_REMOVE_NAN_FROM_FILESNAMES is off \nDebug_expression is (1) \nALPHA_ARGS is off \nUSE_ANSI_COLOURS is on \nUSE_POINTER_LOOPS is on \n__NATIVE_PRINTF__ is off \n__NATIVE_EXIT__ is off \nMAX_EXIT_STATEMENT_PRINT_SIZE is on \nMAX_EXIT_STATEMENT_PRINT_SIZE is 16384 \nFLUSH_LOG is on \n__HAVE_VALGRIND__ is off \n__HAVE_LIBGSL__ is on \n__HAVE_LIBBFD__ is off \n__HAVE_LIBBSD__ is off \n__HAVE_LIBIBERTY__ is off \n__HAVE_LIBIBERTYH__ is off \n__HAVE_LIBIBERTY_LIBIBERTYH__ is off \n__HAVE_LIBBACKTRACE__ is on \n__HAVE_MALLOC_H__ is on \n__HAVE_DRAND48__ is on \n__HAVE_SETITIMER__ is on \n__HAVE_PKG_CONFIG__ is on \nBACKTRACE is on \nBACKTRACE_METHOD is 2 \nBacktrace is Print_trace(); \nBACKTRACE_GNU_BUFFER_STREAM is stdout \n__STRLCPY_IS_MACRO__ is on \n__STRLCAT_IS_BSD_COPY__ is on \nDISABLE_DPRINT is off \nDEBUG_LINENUMBERS is on \nDEBUG_SHOW_FILENAMES is on \nDEBUG_FAIL_ON_NAN is on \nCompiled in parameters:\nNUMBER_OF_STARS is 2 \nTRUE is 1 \nFALSE is 0 \nCFAMANDA is on We use values to compare to Amanda's models\n\nBATCHMODE is on \nNANCHECKS is off \nUSE_NATIVE_ISNAN is on \nUSE_2011_MASS_LOSS is on \nUSE_2012_MAIN_SEQUENCE_LIFETIMES_TABLE is on \nMODULATE_TIMESTEP_TO_RESOLVE_ROTATION_MASS_LOSS is on \nTIDAL_STRENGTH_FACTOR_DEFAULT is 1.000000000000000000000000000000e+00 \nEXPONENTIAL_TIDES is on \nMAGNETIC_BRAKING_GAMMA_DEFAULT is 3.000000000000000000000000000000e+00 \nBETA is 1.250000000000000000000000000000e-01 \nSPHERICAL_ANGMOM_ACCRETION_FACTOR is 1.000000000000000000000000000000e+00 \nMINIMUM_STELLAR_ANGMOM is 1.000000000000000007616223705782e-50 \nMAXIMUM_STELLAR_ANGMOM is 1.000000000000000015902891109760e+100 \nMINIMUM_ORBITAL_ANGMOM is 0.000000000000000000000000000000e+00 \nMAXIMUM_ORBITAL_ANGMOM is 1.000000000000000015902891109760e+100 \nUNDEFINED_ORBITAL_ANGULAR_FREQUENCY is 1.000000000000000076297698410919e+50 \nANGULAR_MOMENTUM_CGS is ((1.9891E33)*(6.9566E10)*(6.9566E10)/(sqrt( (((2.0*(3.141592653589793238462643383279)))*((2.0*(3.141592653589793238462643383279)))) * (((14959787070000.0))*((14959787070000.0))*((14959787070000.0))) /((6.67408E-8) * (1.9891E33))))) \nANGULAR_MOMENTUM_CGS is 3.050750622461357870268473473811e+47 \nBURN_IN_TIMESTEPS is 10 \nTRIPLE is on \nREVERSE_TIME is off \nNGTV is -1.000000000000000000000000000000e+00 \nNGTV2 is -2.000000000000000000000000000000e+00 \nTotal_mass is ((double)(stardata->star[0].mass+stardata->star[1].mass)) \nK2 is 1.000000000000000055511151231258e-01 \nK3 is 2.099999999999999922284388276239e-01 \nMINIMUM_SEPARATION_TO_BE_CALLED_BINARY is 1.437483828306931461899926811936e-09 \nMAXIMUM_SEPARATION_TO_BE_CALLED_BINARY is 6.956599999999999740372582400000e+25 \nSystem_is_single is ((((((( (stardata)->model.sgl == (0) && (stardata)->star[1].stellar_type != 15 && (stardata)->star[0].stellar_type != 15 && (stardata)->common.orbit.eccentricity > -(1e-14) && (stardata)->common.orbit.separation > (100.0/(6.9566E10)) && (stardata)->common.orbit.separation < (1e15*(6.9566E10)) && ((stardata)->common.orbit.angular_momentum > 0.0) && (stardata)->common.orbit.eccentricity < 1.0 )) ? ((1)) : ((0)))))==(1) ? (0) : (1))) \nSystem_is_binary is (((( (stardata)->model.sgl == (0) && (stardata)->star[1].stellar_type != 15 && (stardata)->star[0].stellar_type != 15 && (stardata)->common.orbit.eccentricity > -(1e-14) && (stardata)->common.orbit.separation > (100.0/(6.9566E10)) && (stardata)->common.orbit.separation < (1e15*(6.9566E10)) && ((stardata)->common.orbit.angular_momentum > 0.0) && (stardata)->common.orbit.eccentricity < 1.0 )) ? ((1)) : ((0)))) \nMIN_OBSERVATIONAL_STELLAR_MASS is 1.000000000000000020816681711722e-02 \nMAX_OBSERVATIONAL_BINARY_ORBITAL_PERIOD is 3.651995478818308830261230468750e+09 \nOBSERVABLE_RADIAL_VELOCITY_MIN_DEFAULT is 1.000000000000000000000000000000e+00 \nObservable_binary is ( (((( (stardata)->model.sgl == (0) && (stardata)->star[1].stellar_type != 15 && (stardata)->star[0].stellar_type != 15 && (stardata)->common.orbit.eccentricity > -(1e-14) && (stardata)->common.orbit.separation > (100.0/(6.9566E10)) && (stardata)->common.orbit.separation < (1e15*(6.9566E10)) && ((stardata)->common.orbit.angular_momentum > 0.0) && (stardata)->common.orbit.eccentricity < 1.0 )) ? ((1)) : ((0)))) && ( ( radial_velocity_K(stardata,90,1)> stardata->preferences->observable_radial_velocity_minimum ) || ( radial_velocity_K(stardata,90,2)> stardata->preferences->observable_radial_velocity_minimum ) ) ) \nAngular_momentum_from_stardata is (((stardata->common.orbit.separation)*(stardata->common.orbit.separation)) * sqrt(({ const __auto_type _a = (1.0-((stardata->common.orbit.eccentricity)*(stardata->common.orbit.eccentricity))); const __auto_type _b = (0.0); ((_a)>(_b)) ? _a : _b; })) * stardata->common.orbit.angular_frequency * stardata->star[0].mass * stardata->star[1].mass / (stardata->star[0].mass + stardata->star[1].mass)) \nTINY_ECCENTRICITY is 1.000000000000000036432197315498e-10 \nTIDES is deprecated! (always on)\nFILE_LOG is on \nFILE_LOG_REWIND is on \nFILE_LOG_FLUSH is off \nHRDIAG is off \nMIN_SEP_FOR_CLOSE_ANG_MOM_LOSS1 is 1.000000000000000000000000000000e+01 \nMIN_SEP_FOR_CLOSE_ANG_MOM_LOSS2 is 1.000000000000000000000000000000e+01 \nMIN_SEP_FOR_CLOSE_ANG_MOM_LOSS is 1.000000000000000000000000000000e+01 \nNOVA_RETENTION_FRACTION_DEFAULT is 1.000000000000000020816681711722e-03 \nACCRETION_RATE_NOVAE_UPPER_LIMIT_HYDROGEN_DONOR_DEFAULT is -1.000000000000000000000000000000e+00 \nACCRETION_RATE_NEW_GIANT_ENVELOPE_LOWER_LIMIT_HYDROGEN_DONOR_DEFAULT is -1.000000000000000000000000000000e+00 \nACCRETION_RATE_NOVAE_UPPER_LIMIT_HELIUM_DONOR_DEFAULT is -1.000000000000000000000000000000e+00 \nACCRETION_RATE_NEW_GIANT_ENVELOPE_LOWER_LIMIT_HELIUM_DONOR_DEFAULT is -1.000000000000000000000000000000e+00 \nACCRETION_RATE_NOVAE_UPPER_LIMIT_OTHER_DONOR_DEFAULT is -1.000000000000000000000000000000e+00 \nACCRETION_RATE_NEW_GIANT_ENVELOPE_LOWER_LIMIT_OTHER_DONOR_DEFAULT is -1.000000000000000000000000000000e+00 \nNONCONSERVATIVE_ANGMOM_GAMMA_DEFAULT is -1.000000000000000000000000000000e+00 \nRLOF_ENTRY_THRESHOLD is 1.020000000000000017763568394003e+00 \nRLOF_OVERFLOW_THRESHOLD is 1.000000000000000000000000000000e+00 \nRLOF_STABILITY_FACTOR is 1.000000000000000000000000000000e+00 \nADAPTIVE_RLOF_TARGET_FACTOR is 1.000000000000000000000000000000e+00 \nADAPTIVE_RLOF ADAPTIVE_RLOF_IMIN=4 ADAPTIVE_RLOF_IMAX=10000 ADAPTIVE_RLOF_ALPHA=0.25 ADAPTIVE_RLOF_MINIMUM_RADIUS_ERROR=1e-06 ADAPTIVE_RLOF_MAX_ENV_FRAC=0.5 [ADAPTIVE_RLOF_DM_MAX=0.1 for M=10 and 0.2 for M=20] ADAPTIVE_RLOF_CONVECTIVE_CHECK is off \nADAPTIVE_RLOF_LOG is off \nRLOF_REDUCE_TIMESTEP is off \nWTTS_LOG is off \nSLOW_DOWN_PREROCHE_EAGB is on \nSLOW_DOWN_PREROCHE_TPAGB is on \nRLOF_STABILITY_FACTOR is 1.000000000000000000000000000000e+00 \nRLOF_MINIMUM_TIMESTEP is 9.999999999999999547481118258863e-07 \nADAPTIVE_RLOF_CALC_TIMESCALES_EVERY_TIME is off \nRLOF_MDOT_MODULATION is on \nRLOF_NO_STELLAR_TYPE_CHANGE_IF_DTM_NEGATIVE is off \nLIMIT_RLOF_ACCRETION_TO_ACCRETORS_THERMAL_RATE is on \nRLOF_RADIATION_CORRECTION is off \nSTELLAR_TIMESCALES_SANITY is on \nSTELLAR_TIMESCALES_CACHE is off \nRLOF_RADIATION_CORRECTION_F_DEFAULT is 0.000000000000000000000000000000e+00 \nCHEN_HAN_FIRST_TIMESTEP_BETA is 0.000000000000000000000000000000e+00 \nPATHOLOGICAL_RLOF_CHECK is on \nMERGER_ANGULAR_MOMENTUM_FACTOR_DEFAULT is 1.000000000000000000000000000000e+00 \nCEFLAG is 0 (spin-energy correction in common envelope)\nDISCS is off \nDISCS_CIRCUMBINARY_FROM_COMENV is off \nDISCS_COMENV_APPEND is off \nCBDISC_ECCENTRICITY_PUMPING is off \nDISC_EVAPORATE_ON_FAILURE is off \nRESOLVE_POSTAGB is on \nDISC_LOG_POPSYN is off \nDISC_LOG is off \nDISC_LOG_2D is off \nDISC_SAVE_EPSILONS is off \nDISC_RESIDUAL_WARNING is off \nSN_SIGMA_DEFAULT is 1.900000000000000000000000000000e+02 \nEVOLUTION_SPLITTING is on \nWD_SIGMA_DEFAULT is 0.000000000000000000000000000000e+00 \nREIMERS_ETA_DEFAULT is 4.000000000000000222044604925031e-01 \nVW93_MIRA_SHIFT is on \nVW93_MULTIPLIER is on \nCRAP_PARAMETER_DEFAULT is 0.000000000000000000000000000000e+00 (Enhanced RLOF wind loss)\nLUM0 is 7.000000000000000000000000000000e+04 \nKAP is -5.000000000000000000000000000000e-01 \nAHE is 4.000000000000000000000000000000e+00 \nACO is 1.600000000000000000000000000000e+01 \nTAUMIN is 4.999999999999999773740559129431e-08 \nMLP is 1.200000000000000000000000000000e+01 \nBONDI_HOYLE_CONVERSION_FACTOR is 1.906700000000000000000000000000e+05 \nBONDI_HOYLE_ACCRETION_FACTOR_DEFAULT is 1.500000000000000000000000000000e+00 \nDTFAC_DEFAULT is 1.000000000000000000000000000000e+00 \nMINIMUM_TIMESTEP_DEFAULT is 1.000000000000000020922560830128e-08 \nMAXIMUM_STELLAR_MASS is 5.000000000000000000000000000000e+02 \nMINIMUM_STELLAR_MASS is off \nTRIM_SUPERMASSIVE_STARS is on \nBINARY_C_MINIMUM_STELLAR_MASS is 1.000000000000000055511151231258e-01 \nBINARY_C_MAXIMUM_STELLAR_MASS is 1.000000000000000000000000000000e+02 \nOMEGA_CORE is off \nHeWD_HeWD_IGNITION_MASS is 2.999999999999999888977697537484e-01 more massive HeWDs with reignite helium on accretion and/or merger\nALLOW_HeWD_SUPERNOVAE is off \nALLOW_HeWD_SUPERNOVAE is off \nMASS_ACCRETION_FOR_ELD_DEFAULT is 1.499999999999999944488848768742e-01 \nMILLISECOND_RANDOMNESS is off \nNANOSECOND_RANDOMNESS is on \nRANDOM_SYSTEMS is on \nRANDOM_SYSTEMS_SHOW_ARGS is on \nRANDOM_SYSTEMS_SHOW_ARGS_AND_START_TIME is on \nRANDOM_SYSTEMS_SHOW_ARGS_STREAM is stdout \nUSE_DRAND48_R is off \nUSE_MERSENNE_TWISTER is on \nRandom number mean 0.502871\nRANDOM_SEED_LOG is off \nCOMENV_LOG is off \nGIANT_AGE_FATAL_ERRORS is off \nDTR_FUDGES is on \nACQUIRE_FIX_NEGATIVE_AGES is on \nACQUIRE_TEST_FOR_NEGATIVE_AGES is off \nACCRETION_LIMIT_EDDINGTON_MULTIPLIER_DEFAULT is 1.000000000000000000000000000000e+00 \nDEFAULT_LAMBDA_IONISATION is 5.000000000000000000000000000000e-01 \nDEFAULT_LAMBDA_CE is 5.000000000000000000000000000000e-01 \nDEFAULT_ALPHA_CE is 1.000000000000000000000000000000e+00 \nDEFAULT_COMENV_PRESCRIPTION is 0.000000000000000000000000000000e+00 \nDEFAULT_NELEMANS_GAMMA is 1.750000000000000000000000000000e+00 \nNELEMANS_MIN_Q_DEFAULT is 2.000000000000000111022302462516e-01 \nNELEMANS_MAX_FRAC_J_CHANGE_DEFAULT is 1.000000000000000000000000000000e+00 \nNELEMANS_N_COMENVS_DEFAULT is 1.000000000000000000000000000000e+00 \nMAX_CONVECTIVE_MASS is 1.250000000000000000000000000000e+00 \nMIN_CONVECTIVE_MASS is 3.499999999999999777955395074969e-01 \nANG_MOM_CHECKS is off \nNO_IMMEDIATE_MERGERS is off \nNUCSYN is off \nBUFFERED_PRINTF_MAX_BUFFER_SIZE is 262144000 \nBUFFERED_PRINTF_ERROR_BUFFER_SIZE is 1024 \nBUFFER_MEMORY_DEBUGGING is off \nBUFFER_MEMORY_DEBUGGING_STREAM is stdout \nBUFFERED_STRING_OVERRUN_WARNINGS is on \nBUFFERED_STRING_OVERRUN_WARNINGS_STREAM is stderr \nBUFFERED_PRINTF_INCREASE_RATIO is 1.199999999999999955591079014994e+00 \nEVOLUTION_DIFFLOG_INCREASE_RATIO is 2.000000000000000000000000000000e+00 \n__SHOW_STARDATA__ is on \nSHOW_STARDATA is off \nFUV_eV_MIN is 6.000000000000000000000000000000e+00 \nFUV_eV_MAX is 1.359999999999999964472863211995e+01 \nEUV_eV_MIN is 1.359999999999999964472863211995e+01 \nEUV_eV_MAX is 1.000000000000000000000000000000e+02 \nXRAY_eV_MIN is 1.000000000000000000000000000000e+02 \nXRAY_eV_MAX is 1.000000000000000000000000000000e+05 \nSHORT_SUPERNOVA_LOG is off \nBINARY_STARS_ONLY is off \nLOG_SUPERNOVAE is off \nZW2019_SNIA_LOG is off \nCGI_EXTENSIONS is off \nSDB_CHECKS is off \nBI_LYN is off \nXRAY_BINARIES is off \nSTELLAR_TYPE_LOG is off \nSTELLAR_COLOURS is on \nLOG_JJE is off JJE (Eldridge) log activated\nSELMA is off \nFORM_STARS_AT_BREAKUP_ROTATION is off \nAXEL_RGBF_FIX is on Use Axel's RGB radius function fix\nComenv accretion: \nNS_BH_AIC_LOG is off \nNS_NS_BIRTH_LOG \"NS/NS birth log enabled\" is off \nRS_LOG_ACCREITON_LOG is off \nDETMERS_LOG is off \nLOG_HERBERT is off \nLOG_TO_STDOUT is off \nLOG_TO_STDOUT \"Log file will be sent to stderr\" is off \nLOG_COMENV_RSTARS is off \nHALL_TOUT_2014_RADII is on Using core radii from Hall and Tout 2014\nFINAL_MASSES_LOG is off \nHeWD_HeCORE_MERGER_INITION is off \nLOG_RSTARS is off \nRSTARS is off RSTARS master switch is on\nMESTEL_COOLING is on WD Mestel cooling\nMODIFIED_MESTEL_COOLING is off WD Modified Mestel cooling\nCOMENV_CO_MERGER_GIVES_IIa is on \nCOMENV_CO_MERGER_GIVES_IIa is on Comenv COWD-COWD mergers give SN IIa\nCOMENV_CO_MERGER_GIVES_IIa is on \nNO_HeWD_NOVAE is on \nHe_REIGNITION_LAYER_THICKNESS is 1.000000000000000020816681711722e-02 \nSTARDATA_STATUS is off \nMANUAL_VROT is on Rotational velocities can be specified on the command line\nVROT_NON_ROTATING is 1.000000000000000036432197315498e-10 \nVROT_BSE is 0.000000000000000000000000000000e+00 \nVROT_BREAKUP is -1.000000000000000000000000000000e+00 \nVROT_SYNC is -2.000000000000000000000000000000e+00 \nFABIAN_IMF_LOG is off \nTIMESTEP_MODULATION is on \nRLOF_TIMESTEP_MODULATION is off \nDTlimit 0 : DT_LIMIT_NONE : 1\nDTlimit 1 : DT_LIMIT_MS : 0.05\nDTlimit 2 : DT_LIMIT_PREMS : 0.01\nDTlimit 3 : DT_LIMIT_PREROCHE_MS : 1\nDTlimit 4 : DT_LIMIT_PREROCHE_HG : 1\nDTlimit 5 : DT_LIMIT_HG : 0.01\nDTlimit 6 : DT_LIMIT_FGB : 0.01\nDTlimit 7 : DT_LIMIT_CHeB : 0.01\nDTlimit 8 : DT_LIMIT_EAGB : 0.01\nDTlimit 9 : DT_LIMIT_EAGB_AXEL : 1\nDTlimit 10 : DT_LIMIT_EAGB_PREROCHE : 1\nDTlimit 11 : DT_LIMIT_TPAGB : 0.01\nDTlimit 12 : DT_LIMIT_TPAGB_NUCSYN_INTERPULSE : 1\nDTlimit 13 : DT_LIMIT_TPAGB_NUCSYN_SPEEDUP : 0.01\nDTlimit 14 : DT_LIMIT_TPAGB_NUCSYN_PREROCHE : 1\nDTlimit 15 : DT_LIMIT_TPAGB_NUCSYN_KARAKAS_SMOOTH : 0.05\nDTlimit 16 : DT_LIMIT_HeMS : 0.01\nDTlimit 17 : DT_LIMIT_HeHG_GB : 0.02\nDTlimit 18 : DT_LIMIT_OTHER_STELLAR_TYPES : 1000\nDTlimit 19 : DT_LIMIT_STELLAR_ANGMOM : 0.01\nDTlimit 20 : DT_LIMIT_STELLAR_MASS_LOSS : 1\nDTlimit 21 : DT_LIMIT_STELLAR_MAGNETIC_BRAKING : 1\nDTlimit 22 : DT_LIMIT_CIRCUMBINARY_DISC : 1\nDTlimit 23 : DT_LIMIT_RESOLVE_POSTAGB : 1\nDTlimit 24 : DT_LIMIT_DISC : 1\nDTlimit 25 : DT_LIMIT_FASTWIND : 1\nDTlimit 26 : DT_LIMIT_SELMA : 1\nDTlimit 27 : DT_LIMIT_CEMP_POSTMS : 1\nDTlimit 28 : DT_LIMIT_CEMP_NOTEMP : 1\nDTlimit 29 : DT_LIMIT_CEMP_EMP : 1\nDTlimit 30 : DT_LIMIT_CEMP_NEARLY : 1\nDTlimit 31 : DT_LIMIT_CEMP_FLOOR : 1\nDTlimit 32 : DT_LIMIT_FABIAN_IMF_LOG : 1\nDTlimit 33 : DT_LIMIT_HRD1 : 1\nDTlimit 34 : DT_LIMIT_HRD2 : 1\nDTlimit 35 : DT_LIMIT_BLUE_STRAGGLER : 1\nDTlimit 36 : DT_LIMIT_YVT : 1\nDTlimit 37 : DT_LIMIT_MINIMUM_TIMESTEP : 1\nDTlimit 38 : DT_LIMIT_MAXIMUM_TIMESTEP : 1\nDTlimit 39 : DT_LIMIT_NOVAE : 0.1\nDTlimit 40 : DT_LIMIT_ARTIFICIAL_ACCRETION : 1\nDTlimit 41 : DT_LIMIT_SN : 1\nDTlimit 42 : DT_LIMIT_MASS_GAIN : 1\nDTlimit 43 : DT_LIMIT_MASS_LOSS : 1\nDTlimit 44 : DT_LIMIT_TIDES : 0.5\nDTlimit 45 : DT_LIMIT_NUCSYN_ANGELOU_LITHIUM : 1\nDTlimit 46 : DT_LIMIT_CARBON_BURNING : 1\nDTlimit 47 : DT_LIMIT_BURN_IN : 1\nDTlimit 48 : DT_LIMIT_RADIUS_CHANGES : 0.1\nDTlimit 49 : DT_LIMIT_MASSLESS_REMNANT : 1\nDTlimit 50 : DT_LIMIT_ORBITAL_ANGMOM : 0.05\nDTlimit 51 : DT_LIMIT_STELLAR_ANGMOM2 : 1\nDTlimit 52 : DT_LIMIT_TIDES2 : 1\nDTlimit 53 : DT_LIMIT_MASS_GAIN2 : 1\nDTlimit 54 : DT_LIMIT_MASS_LOSS2 : 1\nDTlimit 55 : DT_LIMIT_GRAVITATIONAL_WAVE_RADIATION : 1\nDTlimit 56 : DT_LIMIT_RLOF : 1\nDTlimit 57 : DT_LIMIT_FIXED_TIMESTEP : 1\nDTlimit 58 : DT_LIMIT_TIME_REMAINING : 1\nDTlimit 59 : DT_LIMIT_ZOOMFAC : 1\nSTOP_ACCRETION_OF_MATERIAL_BEYOND_BREAKUP is off \nSELMA_EXTRA_FEATURES is on \nSELMA_FIX_ACCRETED_MASS_IN_REJUVENATION is off \nSELMA_BETTER_TREATMENT_OF_MS_ACCRETORS is on \nSELMA_BETTER_TREATMENT_OF_MS_MERGERS is on \nF_MASSLOSS_DURING_MS_MERGERS_DEFAULT is 1.000000000000000055511151231258e-01 \nMIXINGPAR_MS_MERGERS_DEFAULT is 1.000000000000000055511151231258e-01 \nSELMA_NEW_QCRIT is off \nHE_STAR_ACCRETING_H_FIX is off \nK2FUDGE is on \nNOVA_BACK_ACCRETION is off \nPN_PROJECT is off \nPN_FAST_WIND is off \nPOST_CE_OBJECTS_HAVE_ENVELOPES is off \nAGB_ROTATIONAL_WIND_ENHANCEMENT_DS06 is off (Experiental rotational wind enhancement of Dijkstra & Speck 2006)\nAGB_ROTATIONAL_WIND_ENHANCEMENT_MOE is off (Experiental rotational wind enhancement of Moe)\nWRLOF_MASS_TRANSFER is on (Carlo Abate's Wind-RLOF)\nUSE_WIND_VELOCITY_OF_VW93_ON_TPAGB is on \nFORCE_SINGLE_STAR_EVOLUTION_WHEN_SECONDARY_IS_A_PLANET is off \nCN_THICK_DISC is off \nEVOLUTION_SPLITTING is on : EVOLUTION_SPLITTING_HARD_MAX_DEPTH=10 EVOLUTION_SPLITTING_MAX_SPLITDEPTH_DEFAULT=2 EVOLUTION_SPLITTING_SUPERNOVA_N=10\nBSE is on \nBINT is off \nBSE_EMULATION is off \nMAKE_BSE_TABLES is off \nUNIT_TESTS is off \nREJUVENATE_HERZTSPRUNG_GAP_STARS is off \nUNIT_TESTS is off \nMIN_MASS_He_FOR_HYBRID_COWD is 1.000000000000000020816681711722e-03 \nLOG_HYBRID_WHITE_DWARFS is off \nOPACITY_ALGORITHMS is off \nOPACITY_ENABLE_ALGORITHM_PACZYNSKI is off \nOPACITY_ENABLE_ALGORITHM_FERGUSON_OPAL is off \nOPACITY_ENABLE_ALGORITHM_STARS is off \nBISECT_FAIL_EXIT is off \nBISECT_DO_MONOCHECKS is on \nMIN_MAX_ARE_FUNCTIONS is off \nMIN_MAX_ARE_MACROS is off \nUSE_FABS is off \nZERO_CHECKS_ARE_FUNCTIONS is off \nPOWER_OPERATIONS_ARE_FUNCTIONS is off \nSPEED_OF_LIGHT is 2.997924580000000000000000000000e+10 \nGRAVITATIONAL_CONSTANT is 6.674080000000000428212382002843e-08 \nPLANCK_CONSTANT is 6.626075500000000089778934603074e-27 \nBOLTZMANN_CONSTANT is 1.380648519999999981937523587920e-16 \nELECTRON_CHARGE is 4.803204249999999822881856280724e-10 \nAVOGADRO_CONSTANT is 6.022136699999999670353920000000e+23 \nR_SUN is 6.956600000000000000000000000000e+10 \nASTRONOMICAL_UNIT is 1.495978707000000000000000000000e+13 \nDAY_LENGTH_IN_SECONDS is 8.640000000000000000000000000000e+04 \nL_SUN is 3.851500000000000274321803705319e+33 \nM_SUN is 1.989100000000000004902937633489e+33 \nR_SUN is 6.956600000000000000000000000000e+10 \nM_EARTH is 5.972199999999999975287160832000e+27 \nM_JUPITER is 1.898000000000000066451465568256e+30 \nM_PROTON is 1.672620999999999959749389240497e-24 \nM_ELECTRON is 9.109382999999999846421631410267e-28 \nM_NEUTRON is 1.674928999999999883419623159410e-24 \nSOLAR_APPARENT_MAGNITUDE is -2.673000000000000042632564145606e+01 \nCMB_TEMPERATURE is 2.725480000000000124771304399474e+00 \nPARSEC is 3.085677581491367424000000000000e+18 \nKILOPARSEC is 3.085677581491367313408000000000e+21 \nMEGAPARSEC is 3.085677581491367611203584000000e+24 \nLIKE_ASTROPY is off \nELECTRON_VOLT is 1.602176479703168350131535485094e-12 \nMEGA_ELECTRON_VOLT is 1.602176479703168427860663670936e-06 \nAMU_GRAMS is 1.660540186674939018040083872528e-24 \nAMU_MEV is 9.314948204402553528780117630959e+02 \nRYDBERG_CONSTANT is 2.179872132908162841533012433348e-11 \nYEAR_LENGTH_IN_SECONDS is 3.155324093699018657207489013672e+07 \nYEAR_LENGTH_IN_DAYS is 3.651995478818308811241877265275e+02 \nYEAR_LENGTH_IN_HOURS is 8.764789149163940237485803663731e+03 \nR_SUN_KM is 6.956600000000000000000000000000e+05 \nAU_IN_SOLAR_RADII is 2.150445198804013386961742071435e+02 \nPLANCK_CONSTANT_BAR is 1.054572669125101912539735877419e-27 \nGMRKM is 1.908319082310324010904878377914e+05 \nOMEGA_FROM_VKM is 4.535727357759564171146848821081e+01 \nG_CODE_UNITS is 3.925951006656119227409362792969e+08 \nGAS_CONSTANT is 8.314454122092683613300323486328e+07 \nFINE_STRUCTURE_CONSTANT is 7.297345267770622735670205116776e-03 \nSIGMA_THOMPSON is 6.652457186874892453473633814991e-25 \nSTEFAN_BOLTZMANN_CONSTANT is 5.670352798655924736991040813194e-05 \nSOLAR_SYMBOL is \"\u2609\" \nL_SOLAR is \"L\u2609\" \nM_SOLAR is \"M\u2609\" \nR_SOLAR is \"R\u2609\"", - "binary_c_help_all": { - "stars": { - "section_name": "stars", - "parameters": { - "metallicity": { - "param_name": "metallicity", - "description": "This sets the metallicity of the stars, i.e. the amount (by mass) of matter which is not hydrogen or helium. If you are using the BSE algorithm, this must be 1e-4 <= metallicity <= 0.03. See also nucsyn_metallicity and effective_metallicity.", - "rest": "(null)" - }, - "effective_metallicity": { - "param_name": "effective_metallicity", - "description": "This sets effective metallicity of stars as used in routines like the Schneider wind loss. If not set, or set to DEFAULT_TO_METALLICITY (==-1, the default), this is just the same as metallicity. The main difference between effective_metallicity and metallicity is the range of validity: 0 <= effective_metallicity <= 1, while metallicity's range of validity is limited by the stellar evolution algorithm (so, for BSE, is 1e-4 <= metallicity <= 0.03).", - "rest": "(null)" - }, - "M_1": { - "param_name": "M_1", - "description": "The mass of star one (in solar units).", - "rest": "(null)" - }, - "M_2": { - "param_name": "M_2", - "description": "The mass of star two (in solar units).", - "rest": "(null)" - }, - "probability": { - "param_name": "probability", - "description": "The probability is a weighting applied to the star based on, say, the initial mass function. When running a grid of stars to simulate *all* stars, the summed probability of all the stars should be 1.0.", - "rest": "(null)" - }, - "phasevol": { - "param_name": "phasevol", - "description": "The system's phase volume, used by binary_grid.", - "rest": "(null)" - }, - "stellar_type_2": { - "param_name": "stellar_type_2", - "description": "Set the stellar type of star 2, usually 1 (main sequence)", - "rest": "(null)" - }, - "stellar_structure_algorithm": { - "param_name": "stellar_structure_algorithm", - "description": "Set the stellar structure algorithm. 0=modified BSE (default), 1=none, 2=external function (must be defined by the calling code), 3=binary_c (not yet implemented).", - "rest": "(null)" - }, - "solver": { - "param_name": "solver", - "description": "The type of solver. Default is the Forward-Euler (0), but could be RK2 (1), RK4 (2) or a predictor-corretor (3).", - "rest": "(null)" - }, - "max_evolution_time": { - "param_name": "max_evolution_time", - "description": "Set the maximum age for the stars (Myr).", - "rest": "(null)" - }, - "max_model_number": { - "param_name": "max_model_number", - "description": "Set the maximum number of models, ignored if 0 (default is 0).", - "rest": "(null)" - }, - "monte_carlo_kicks": { - "param_name": "monte_carlo_kicks", - "description": "Turn on Monte-Carlo SN kicks. On (True) by default, and indeed other algorithms are probably broken.", - "rest": "(null)" - }, - "evolution_splitting": { - "param_name": "evolution_splitting", - "description": "If True, turn on splitting of an evolutionary run if splitpoint (e.g. supernova) occurs.", - "rest": "(null)" - }, - "disable_events": { - "param_name": "disable_events", - "description": "Whether to disable the new events code (defaults to False, so we use events by default)", - "rest": "(null)" - }, - "evolution_splitting_sn_n": { - "param_name": "evolution_splitting_sn_n", - "description": "Number of runs to split into when a SN occurs.", - "rest": "(null)" - }, - "evolution_splitting_maxdepth": { - "param_name": "evolution_splitting_maxdepth", - "description": "Max number of splits in an evolutionary run.", - "rest": "(null)" - }, - "stellar_type_1": { - "param_name": "stellar_type_1", - "description": "Set the stellar type of star 1, usually 1 (main sequence)", - "rest": "(null)" - }, - "equation_of_state_algorithm": { - "param_name": "equation_of_state_algorithm", - "description": "Set the equation of state algorithm. 0 = Paczynski.", - "rest": "(null)" - }, - "opacity_algorithm": { - "param_name": "opacity_algorithm", - "description": "Set the opacity algorithm. 0 = Paczynski, 1 = Ferguson/Opal.", - "rest": "(null)" - }, - "wind_mass_loss": { - "param_name": "wind_mass_loss", - "description": "Defines the algorithm used for stellar winds. 0 = none, 1 = Hurley et al. (2002), 2 = Schneider (2018).", - "rest": "0" - }, - "gbwind": { - "param_name": "gbwind", - "description": "Wind prescription for first red giant branch stars. 0=Reimers (Hurley et al 2000/2002; choose gb_reimers_eta=0.5 for their mass loss rate), 1=Schroeder+Cuntz 2005 (set gb_reimers_eta=1.0 for their mass loss rate).", - "rest": "(null)" - }, - "mattsson_Orich_tpagbwind": { - "param_name": "mattsson_Orich_tpagbwind", - "description": "Experimental: turns on Mattsson's TPAGB wind when the star is oxygen rich. Requires MATTSSON_MASS_LOSS.", - "rest": "(null)" - }, - "magnetic_braking_factor": { - "param_name": "magnetic_braking_factor", - "description": "Multiplier for the magnetic braking angular momentum loss rate.", - "rest": "(null)" - }, - "magnetic_braking_gamma": { - "param_name": "magnetic_braking_gamma", - "description": "gamma factor in Rappaport style magnetic braking expression.", - "rest": "(null)" - }, - "magnetic_braking_algorithm": { - "param_name": "magnetic_braking_algorithm", - "description": "Algorithm for the magnetic braking angular momentum loss rate. 0 = Hurley et al. 2002, 1 = Andronov, Pinnsonneault and Sills 2003, 2 = Barnes and Kim 2010 ", - "rest": "(null)" - }, - "gb_reimers_eta": { - "param_name": "gb_reimers_eta", - "description": "First red giant branch wind multiplication factor, cf. eta in Reimers' mass loss formula. (This multiplies the 4e-13 in Reimers' formula, or the 8e-14 in Schroeder and Cuntz.)", - "rest": "(null)" - }, - "gbwindfac": { - "param_name": "gbwindfac", - "description": "Multiplier for the giant branch wind mass loss rate", - "rest": "(null)" - }, - "agbwindfac": { - "param_name": "agbwindfac", - "description": "Multiplier for the AGB wind mass loss rate", - "rest": "(null)" - }, - "tpagbwind": { - "param_name": "tpagbwind", - "description": "Wind prescription during the TPAGB. 0=Karakas 2002 (a modified Vassiliadis and Wood 1993), 1=Hurley et al 2000/2002 (Vassiliadis and Wood 1993), 2=Reimers, 3=Bloecker, 4=Van Loon, 5=Rob's C-wind (broken?), 6,7=Vassiliadis and Wood 1993 (Karakas,Hurley variants respectively) when C/O>1, 8=Mattsson", - "rest": "(null)" - }, - "vwind_multiplier": { - "param_name": "vwind_multiplier", - "description": "Multiplier for the wind velocity as a function of the star's escape speed. In BSE (Hurley et al 2000/2002) this is 1/8=0.125. Does NOT apply on the AGB, when the Vassiliadis and Wood wind velocity is used instead.", - "rest": "(null)" - }, - "superwind_mira_switchon": { - "param_name": "superwind_mira_switchon", - "description": "In the Vassiliadis and Wood (1993) AGB wind prescription, the superwind is turned on at a given Mira period, usually 500 days. You can vary when this switch-on happens with this parameter.", - "rest": "(null)" - }, - "vw93_mira_shift": { - "param_name": "vw93_mira_shift", - "description": "In the Vassiliadis and Wood (1993) AGB wind prescription, the wind loss rate depends on the Mira period plus this offset. Requires VW93_MIRA_SHIFT.", - "rest": "(null)" - }, - "vw93_multiplier": { - "param_name": "vw93_multiplier", - "description": "In the Vassiliadis and Wood (1993) AGB wind prescription, the wind loss rate is multiplied by this factor. Requires VW93_MULTIPLIER.", - "rest": "(null)" - }, - "tpagb_reimers_eta": { - "param_name": "tpagb_reimers_eta", - "description": "TPAGB Reimers wind multiplication factor, cf. eta in Reimers' mass loss formula. (This multiplies the 4e-13 in Reimers' formula, or the 8e-14 in Schroeder and Cuntz.) Note that Reimers is not the default TPAGB wind prescription. See also tpagbwind.", - "rest": "(null)" - }, - "mass_accretion_rate1": { - "param_name": "mass_accretion_rate1", - "description": "Constant mass accretion rate on star 1.", - "rest": "(null)" - }, - "mass_accretion_rate2": { - "param_name": "mass_accretion_rate2", - "description": "Constant mass accretion rate on star 2.", - "rest": "(null)" - }, - "angular_momentum_accretion_rate1": { - "param_name": "angular_momentum_accretion_rate1", - "description": "Constant angular momentum accretion rate on star 1.", - "rest": "(null)" - }, - "angular_momentum_accretion_rate2": { - "param_name": "angular_momentum_accretion_rate2", - "description": "Constant angular momentum accretion rate on star 2.", - "rest": "(null)" - }, - "angular_momentum_accretion_rate_orbit": { - "param_name": "angular_momentum_accretion_rate_orbit", - "description": "Constant angular momentum accretion rate on the orbit.", - "rest": "(null)" - }, - "accretion_start_time": { - "param_name": "accretion_start_time", - "description": "Time at which artificial accretion stars. Ignored if <0 (default is -1).", - "rest": "(null)" - }, - "accretion_end_time": { - "param_name": "accretion_end_time", - "description": "Time at which artificial accretion ends. Ignored if <0 (default is -1).", - "rest": "(null)" - }, - "wr_wind": { - "param_name": "wr_wind", - "description": "Massive-star (WR) wind prescription. 0 = Hurley et al 2000/2002, 1=Maeder and Meynet, 2=Nugis and Lamers, 3=John Eldridge's version of Vink's early-2000s wind (See Lynnette Dray's thesis, or John Eldridge's thesis)", - "rest": "(null)" - }, - "wr_wind_fac": { - "param_name": "wr_wind_fac", - "description": "Massive-star (WR) wind multiplication factor.", - "rest": "(null)" - }, - "wrwindfac": { - "param_name": "wrwindfac", - "description": "Massive-star (WR) wind multiplication factor. Synonymous with wr_wind_fac (which you should use instead).", - "rest": "(null)" - }, - "BH_prescription": { - "param_name": "BH_prescription", - "description": "Black hole mass prescrition: relates the mass of a newly formed black hole to its progenitor's (CO) core mass. 0=Hurley et al 2000/2002, 1=Belczynski (early 2000s).", - "rest": "(null)" - }, - "sn_kick_distribution_II": { - "param_name": "sn_kick_distribution_II", - "description": "Set the distribution of speeds applied to kick type II core collapse supernova systems. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_distribution_ECAP": { - "param_name": "sn_kick_distribution_ECAP", - "description": "Set the distribution of speeds applied to the remnants of electron-capture supernovae. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_distribution_NS_NS": { - "param_name": "sn_kick_distribution_NS_NS", - "description": "Set the distribution of speeds applied to kick neutron stars and black holes that survive a NS-NS merger. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_distribution_IBC": { - "param_name": "sn_kick_distribution_IBC", - "description": "Set the distribution of speeds applied to kick newly-born neutron stars and black holes after a type Ib/c core-collapse supernova. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_distribution_GRB_COLLAPSAR": { - "param_name": "sn_kick_distribution_GRB_COLLAPSAR", - "description": "Set the distribution of speeds applied to kick newly-born neutron stars and black holes after a type Ib/c core-collapse supernova which is also a collapsar. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_distribution_TZ": { - "param_name": "sn_kick_distribution_TZ", - "description": "Set the distribution of speeds applied to kick newly-born neutron stars and black holes at the death of a Thorne-Zytkow object. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_distribution_AIC_BH": { - "param_name": "sn_kick_distribution_AIC_BH", - "description": "Set the distribution of speeds applied to kick newly-born neutron stars black holes after accretion induced collapse of a neutron star. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_distribution_BH_BH": { - "param_name": "sn_kick_distribution_BH_BH", - "description": "Set the distribution of speeds applied to black holes formed by the merger of two black holes. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_distribution_BH_NS": { - "param_name": "sn_kick_distribution_BH_NS", - "description": "Set the distribution of speeds applied to black holes formed by the merger of a neutron star and a black holes. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_distribution_IA_Hybrid_HeCOWD": { - "param_name": "sn_kick_distribution_IA_Hybrid_HeCOWD", - "description": "Set the distribution of speeds applied to any survivor of a hybrid He-COWD SNIa explosion. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_distribution_IA_Hybrid_HeCOWD_subluminous": { - "param_name": "sn_kick_distribution_IA_Hybrid_HeCOWD_subluminous", - "description": "Set the distribution of speeds applied to any survivor of a subluminous hybrid He-COWD SNIa explosion. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_dispersion_II": { - "param_name": "sn_kick_dispersion_II", - "description": "Set the dispersion of speeds applied to kick type II core collapse supernova systems. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_dispersion_ECAP": { - "param_name": "sn_kick_dispersion_ECAP", - "description": "Set the dispersion of speeds applied to the remnants of electron-capture supernovae. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_dispersion_NS_NS": { - "param_name": "sn_kick_dispersion_NS_NS", - "description": "Set the dispersion of speeds applied to kick neutron stars and black holes that survive a NS-NS merger. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_dispersion_IBC": { - "param_name": "sn_kick_dispersion_IBC", - "description": "Set the dispersion of speeds applied to kick newly-born neutron stars and black holes after a type Ib/c core-collapse supernova. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_dispersion_GRB_COLLAPSAR": { - "param_name": "sn_kick_dispersion_GRB_COLLAPSAR", - "description": "Set the dispersion of speeds applied to kick newly-born neutron stars and black holes after a type Ib/c core-collapse supernova which is also a collapsar. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_dispersion_TZ": { - "param_name": "sn_kick_dispersion_TZ", - "description": "Set the dispersion of speeds applied to kick newly-born neutron stars and black holes at the death of a Thorne-Zytkow object. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_dispersion_AIC_BH": { - "param_name": "sn_kick_dispersion_AIC_BH", - "description": "Set the dispersion of speeds applied to kick newly-born neutron stars black holes after accretion induced collapse of a neutron star. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_dispersion_BH_BH": { - "param_name": "sn_kick_dispersion_BH_BH", - "description": "Set the dispersion of speeds applied to black holes formed by the merger of two black holes. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_dispersion_BH_NS": { - "param_name": "sn_kick_dispersion_BH_NS", - "description": "Set the dispersion of speeds applied to black holes formed by the merger of a neutron star and a black holes. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_dispersion_IA_Hybrid_HeCOWD": { - "param_name": "sn_kick_dispersion_IA_Hybrid_HeCOWD", - "description": "Set the dispersion of speeds applied to the survivor of a SNIa explosion of a hybrid He-COWD. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_dispersion_IA_Hybrid_HeCOWD_subluminous": { - "param_name": "sn_kick_dispersion_IA_Hybrid_HeCOWD_subluminous", - "description": "Set the dispersion of speeds applied to the survivor of a subluminous SNIa explosion of a hybrid He-COWD. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).", - "rest": "(null)" - }, - "sn_kick_companion_IA_He": { - "param_name": "sn_kick_companion_IA_He", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a Ia He supernova occurs. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_IA_ELD": { - "param_name": "sn_kick_companion_IA_ELD", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a Ia ELD (sub-Mch) supernova occurs. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_IA_CHAND": { - "param_name": "sn_kick_companion_IA_CHAND", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a Ia Mch supernova occurs. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_AIC": { - "param_name": "sn_kick_companion_AIC", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when an accretion induced collapse (supernova) occurs. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_ECAP": { - "param_name": "sn_kick_companion_ECAP", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when an electron capture supernova occurs. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_IA_He_Coal": { - "param_name": "sn_kick_companion_IA_He_Coal", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a Ia helium merger supernova occurs. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_IA_CHAND_Coal": { - "param_name": "sn_kick_companion_IA_CHAND_Coal", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a Ia Mch merger supernova occurs. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_NS_NS": { - "param_name": "sn_kick_companion_NS_NS", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a neutron-star neutron-star merger. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_GRB_COLLAPSAR": { - "param_name": "sn_kick_companion_GRB_COLLAPSAR", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a GRB Collapsar (rapidly rotating SN Ibc) supernova occurs. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_HeStarIa": { - "param_name": "sn_kick_companion_HeStarIa", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a He-star Ia supernova occurs. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_IBC": { - "param_name": "sn_kick_companion_IBC", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a type Ib/c supernova occurs. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_II": { - "param_name": "sn_kick_companion_II", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a type II supernova occurs. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_IIa": { - "param_name": "sn_kick_companion_IIa", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a type IIa supernova occurs. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_WDKICK": { - "param_name": "sn_kick_companion_WDKICK", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a WD is kicked. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_TZ": { - "param_name": "sn_kick_companion_TZ", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a Thorne-Zytkow object is formed. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_AIC_BH": { - "param_name": "sn_kick_companion_AIC_BH", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a neutron star collapses to a black hole. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_BH_BH": { - "param_name": "sn_kick_companion_BH_BH", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when two black holes merge. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_BH_NS": { - "param_name": "sn_kick_companion_BH_NS", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the, kick on the companion when a black hole merges with a neutron star. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_IA_Hybrid_HeCOWD": { - "param_name": "sn_kick_companion_IA_Hybrid_HeCOWD", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the kick on the companion, if it survives, in a hybrid He-COWD type Ia explosion. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "sn_kick_companion_IA_Hybrid_HeCOWD_subluminous": { - "param_name": "sn_kick_companion_IA_Hybrid_HeCOWD_subluminous", - "description": "Set the speed (if >=0) of, or the algothim (if <0) used to calculate the kick on the companion, if it survives, in a subluminous hybrid He-COWD type Ia explosion. 0 = none, 1 = Liu+2015, 2 = Wheeler+ 1975.", - "rest": "(null)" - }, - "wd_sigma": { - "param_name": "wd_sigma", - "description": "Set the speed at which white dwarfs are kicked when they form, in km/s. Default is zero (i.e. no kick). Requires WD_KICKS.", - "rest": "(null)" - }, - "wd_kick_direction": { - "param_name": "wd_kick_direction", - "description": "Set the direction of white dwarf kicks. 0 = random, 1 = up, 2 = forward, 3 = backward, 4 = inward, 5 = outward. Requires WD_KICKS.", - "rest": "(null)" - }, - "wd_kick_when": { - "param_name": "wd_kick_when", - "description": "Decide when to kick a white dwarf. 0=at birth, 1=at first RLOF, 2=at given pulse number (see wd_kick_pulse_number), 3 at every pulse Requires WD_KICKS.", - "rest": "(null)" - }, - "wd_kick_pulse_number": { - "param_name": "wd_kick_pulse_number", - "description": "Apply a kick to a star at a desired pulse number on the TPAGB (i.e. pre-WD). Requires WD_KICKS.", - "rest": "(null)" - }, - "max_tpagb_core_mass": { - "param_name": "max_tpagb_core_mass", - "description": "Maximum mass of the core during the TPAGB. Typically around 1.38Msun.", - "rest": "(null)" - }, - "minimum_helium_ignition_core_mass": { - "param_name": "minimum_helium_ignition_core_mass", - "description": "Minimum helium core mass required to ignite helium in the case that the hydrogen envelope is stripped on the giant branch, e.g. to make an sdB or sdO star. Typically 0.4, if 0.0 then the BSE algorithm (based on the total mass) is used.", - "rest": "(null)" - }, - "minimum_mass_for_carbon_ignition": { - "param_name": "minimum_mass_for_carbon_ignition", - "description": "Minimum core mass for carbon ignition. Typically around 1.6Msun.", - "rest": "(null)" - }, - "minimum_mass_for_neon_ignition": { - "param_name": "minimum_mass_for_neon_ignition", - "description": "Minimum core mass for neon ignition. Typically around 2.85Msun.", - "rest": "(null)" - }, - "max_neutron_star_mass": { - "param_name": "max_neutron_star_mass", - "description": "Maximum mass of a neutron star before it collapses to a black hole. Typically around 1.8Msun.", - "rest": "(null)" - }, - "chandrasekhar_mass": { - "param_name": "chandrasekhar_mass", - "description": "The Chandrasekhar mass, usually 1.44Msun", - "rest": "(null)" - }, - "delta_mcmin": { - "param_name": "delta_mcmin", - "description": "A parameter to reduce the minimum core mass for third dredge up to occur on the TPAGB. As used by Izzard and Tout (2004) to increase the amount of dredge up, hence carbon, in Magellanic cloud stars.", - "rest": "(null)" - }, - "lambda_min": { - "param_name": "lambda_min", - "description": "A parameter to increase the efficiency of third dredge up on the TPAGB. The efficiency is lambda * lambda_mult, and setting lambda_min>0 implies that, once Mc>Mcmin (see delta_mcmin) lambda=Max(lambda(fit to Karakas), lambda_min). As used by Izzard and Tout (2004) to increase the amount of dredge up, hence carbon, in Magellanic cloud stars. See also lambda_multiplier.", - "rest": "(null)" - }, - "lambda_multiplier": { - "param_name": "lambda_multiplier", - "description": "A parameter to increase the efficiency of third dredge up on the TPAGB. The efficiency is lambda * lambda_mult, and setting lambda_min>0 implies that, once Mc>Mcmin (see delta_mcmin) lambda=Max(lambda(fit to Karakas), lambda_min). As used by Izzard and Tout (2004) to increase the amount of dredge up, hence carbon, in Magellanic cloud stars.", - "rest": "(null)" - }, - "minimum_envelope_mass_for_third_dredgeup": { - "param_name": "minimum_envelope_mass_for_third_dredgeup", - "description": "The minimum envelope mass for third dredge up on the TPAGB. Early, solar metallicity models by Straniero et al suggested 0.5Msun is typical. However, circumstantial evidence (Izzard et al 2009) as well as newer models by Stancliffe and Karakas suggest that at low metallicity a value nearer zero is more appropriate.", - "rest": "(null)" - }, - "mass_of_pmz": { - "param_name": "mass_of_pmz", - "description": "The mass in the partial mixing zone of a TPAGB star, using the Karakas 2012 tables. Ask Carlo Abate for more details, or see the series of papers Abate et al 2012, 2013, 2014. Requires NUCSYN and USE_TABULAR_INTERSHELL_ABUNDANCES_KARAKAS_2012.", - "rest": "(null)" - }, - "c13_eff": { - "param_name": "c13_eff", - "description": "The \"efficiency\" of partial mixing in a TPAGB star intershell region, when using the s-process tables of Gallino, Busso, Lugaro et al. as provided by Maria Lugaro for the Izzard et al. 2009 paper. Requires NUCSYN and NUCSYN_S_PROCESS.", - "rest": "(null)" - }, - "mc13_pocket_multiplier": { - "param_name": "mc13_pocket_multiplier", - "description": "Multiplies the mass in the partial mixing zone of a TPAGB star, when using the s-process tables of Gallino, Busso, Lugaro et al. as provided by Maria Lugaro for the Izzard et al. 2009 paper. Requires NUCSYN and NUCSYN_S_PROCESS.", - "rest": "(null)" - }, - "E2_prescription": { - "param_name": "E2_prescription", - "description": "Choose how to calculate the E2 structural parameter (used in tidal timescale calculations). 0=Hurley 1=Izzard (see Siess et al 2013)", - "rest": "(null)" - }, - "dtfac": { - "param_name": "dtfac", - "description": "A parameter to decrease the timestep ONLY during the TPAGB phase.", - "rest": "(null)" - }, - "hbbtfac": { - "param_name": "hbbtfac", - "description": "A parameter to modulate the temperature at the base of the hot-bottom burning zone in TPAGB stars. (Works only if NUCSYN is defined)", - "rest": "(null)" - }, - "pre_main_sequence": { - "param_name": "pre_main_sequence", - "description": "Set to True to turn on pre-main sequence evolution. Currently this is not a special stellar type, rather the first (small) fraction of the main sequence has increased radii to match the Railton et al 2014 fits to Tout's pre-main sequence stars. Requires PRE_MAIN_SEQUENCE. See also pre_main_sequence_fit_lobes.", - "rest": "(null)" - }, - "pre_main_sequence_fit_lobes": { - "param_name": "pre_main_sequence_fit_lobes", - "description": "Set to True force a pre-main sequence star into its Roche lobe. This is done by artificially aging it. Requires PRE_MAIN_SEQUENCE", - "rest": "(null)" - }, - "small_envelope_method": { - "param_name": "small_envelope_method", - "description": "Choose the method used to determine the stellar radius when the envelope mass is very thin. 0 = Hurley et al. (2002), 1 = Miller Bertolami et al. (2016+) for GB and AGB stars only.", - "rest": "(null)" - }, - "vrot1": { - "param_name": "vrot1", - "description": "Equatorial rotational speed of star 1 (km/s). If 0.0, the Hurley et al 2000/2002 prescription is used to set the main-sequence velocity, so for a truly non-rotating star, set to something small (e.g. 0.001). Requires MANUAL_VROT. See also vrot2.", - "rest": "(null)" - }, - "vrot2": { - "param_name": "vrot2", - "description": "Equatorial rotational speed of star 2 (km/s). If 0.0, the Hurley et al 2000/2002 prescription is used to set the main-sequence velocity, so for a truly non-rotating star, set to something small (e.g. 0.001). Requires MANUAL_VROT. See also vrot1.", - "rest": "(null)" - }, - "timestep_modulator": { - "param_name": "timestep_modulator", - "description": "Multiplier applied to the global timestep. Requires TIMESTEP_MODULATION.", - "rest": "(null)" - }, - "timestep_multiplier%d": { - "param_name": "timestep_multiplier%d", - "description": "Multiplier applied to timestep limit <n>.", - "rest": "(null)" - }, - "maximum_timestep": { - "param_name": "maximum_timestep", - "description": "The maximum timestep (MYr).", - "rest": "(null)" - }, - "zoomfac_multiplier_decrease": { - "param_name": "zoomfac_multiplier_decrease", - "description": "When a timestep is rejected, decrease the timestep by this factor (0.5).", - "rest": "(null)" - }, - "zoomfac_multiplier_increase": { - "param_name": "zoomfac_multiplier_increase", - "description": "When a timestep is rejected, zooms, then succeeds, increase the timestep by this factor (1.2).", - "rest": "(null)" - }, - "maximum_timestep_factor": { - "param_name": "maximum_timestep_factor", - "description": "The maximum factor between two subsequent timesteps (1.2).", - "rest": "(null)" - }, - "maximum_nuclear_burning_timestep": { - "param_name": "maximum_nuclear_burning_timestep", - "description": "The maximum timestep (MYr) in any nuclear burning phase.", - "rest": "(null)" - }, - "nova_retention_method": { - "param_name": "nova_retention_method", - "description": "Algorithm used to calculate the amount of mass retained during a nova explosion. 0=use nova_retention_fraction. (other methods pending)", - "rest": "(null)" - }, - "gaia_Teff_binwidth": { - "param_name": "gaia_Teff_binwidth", - "description": "log10(Effective temperature) bin width used to make Gaia-like HRDs", - "rest": "(null)" - }, - "gaia_L_binwidth": { - "param_name": "gaia_L_binwidth", - "description": "log10(luminosity) bin width used to make Gaia-like HRDs", - "rest": "(null)" - }, - "rotationally_enhanced_mass_loss": { - "param_name": "rotationally_enhanced_mass_loss", - "description": "Set to 1 to enable rotationally enhanced mass loss rate algorithms: 0= none, 1=formula cf. Langer models (=ROTATIONALLY_ENHNACED_MASSLOSS_LANGER_FORMULA), 2=limit accretion rate before wind loss is applied, 3 = both 1 and 2. See also rotationally_enhanced_exponent", - "rest": "(null)" - }, - "AGB_core_algorithm": { - "param_name": "AGB_core_algorithm", - "description": "Algorithm to use for calculating AGB core masses. 0=Hurley et al. 2002 if no NUCSYN, Karakas 2002 if NUCSYN is defined; 1=Hurley et al. 2002 (overshooting models); 1=Karakas 2002 (non-overshooting models).", - "rest": "(null)" - }, - "AGB_radius_algorithm": { - "param_name": "AGB_radius_algorithm", - "description": "Algorithm to use for calculating radii on the TPAGB.", - "rest": "(null)" - }, - "AGB_luminosity_algorithm": { - "param_name": "AGB_luminosity_algorithm", - "description": "Algorithm to use for calculating luminosities on the TPAGB.", - "rest": "(null)" - }, - "AGB_3dup_algorithm": { - "param_name": "AGB_3dup_algorithm", - "description": "Algorithm to use for calculating third dredge up efficiency on the TPAGB.", - "rest": "(null)" - }, - "overspin_algorithm": { - "param_name": "overspin_algorithm", - "description": "Algorithm to determine what we do when a star is rotating at its breakup velocity. OVERSPIN_BSE (0) conservatively transfers the angular momentum back to the orbit. OVERSPIN_MASSLOSS uses the rotationally_enhanced_massloss parameter to lose mass which carries away the angular momentum.", - "rest": "(null)" - }, - "rotationally_enhanced_exponent": { - "param_name": "rotationally_enhanced_exponent", - "description": "The exponent (power) by which rotationally enhanced mass loss is raised. Requires ROTATIONALLY_ENHANCED_MASS_LOSS. See also rotationally_enhanced_mass_loss.", - "rest": "(null)" - }, - "batchmode": { - "param_name": "batchmode", - "description": "Set the batchmode control variable. Use only if you know what you are doing!", - "rest": "(null)" - }, - "speedtests": { - "param_name": "speedtests", - "description": "If True, turns on speedtests during version information (off by default).", - "rest": "(null)" - }, - "use_fixed_timestep_%d": { - "param_name": "use_fixed_timestep_%d", - "description": "Set to True to use fixed timestep <n>, False to turn off. Fixed timesteps are on (this is True) by default.", - "rest": "(null)" - } - } - }, - "binary": { - "section_name": "binary", - "parameters": { - "eccentricity": { - "param_name": "eccentricity", - "description": "Set the eccentricity of the binary orbit (0-1).", - "rest": "(null)" - }, - "orbital_period": { - "param_name": "orbital_period", - "description": "Set the orbital period in days. See also separation.", - "rest": "(null)" - }, - "disc_timestep_factor": { - "param_name": "disc_timestep_factor", - "description": "Factor that multiplies the natural timestep of a disc.", - "rest": "(null)" - }, - "cbdisc_mass_loss_inner_viscous_accretion_method": { - "param_name": "cbdisc_mass_loss_inner_viscous_accretion_method", - "description": "Chooses where the mass that is accreted from the inner edge of a circumbinary disc goes, i.e. to which star. 0 = Young and Clarke 2015, 1 = Gerosa et al 2015, 2 = 50:50 (i.e. not dependence on mass).", - "rest": "(null)" - }, - "cbdisc_inner_edge_stripping": { - "param_name": "cbdisc_inner_edge_stripping", - "description": "If True, allow inner edge mass stripping.", - "rest": "(null)" - }, - "cbdisc_outer_edge_stripping": { - "param_name": "cbdisc_outer_edge_stripping", - "description": "If True, allow outer edge mass stripping.", - "rest": "(null)" - }, - "disc_n_monte_carlo_guesses": { - "param_name": "disc_n_monte_carlo_guesses", - "description": "Number of monte carlo guesses to try in the disc solver if the normal list of guesses fails (0).", - "rest": "(null)" - }, - "disc_log": { - "param_name": "disc_log", - "description": "If 1, turn on the disc log. Requires DISC_LOG to be defined on build.", - "rest": "(null)" - }, - "disc_log2d": { - "param_name": "disc_log2d", - "description": "If 1, turn on the 2d disc log. Requires DISC_LOG to be defined on build.", - "rest": "(null)" - }, - "disc_log_dt": { - "param_name": "disc_log_dt", - "description": "If non-zero, only allows disc log output every disc_log_dt Myr.", - "rest": "(null)" - }, - "disc_log_directory": { - "param_name": "disc_log_directory", - "description": "Directory into which disc logging is sent (must exist!).", - "rest": "/tmp/" - }, - "cbdisc_eccentricity_pumping_method": { - "param_name": "cbdisc_eccentricity_pumping_method", - "description": "Select from various eccentricity-pumping methods when there is a circumbinary disc. Requires DISCS. 0 = off.", - "rest": "(null)" - }, - "cbdisc_viscous_photoevaporation_coupling": { - "param_name": "cbdisc_viscous_photoevaporation_coupling", - "description": "Set to 1 to turn on viscous-photoevaporation coupling in circumbinary discs. Requires DISCS. 0 = off.", - "rest": "(null)" - }, - "cbdisc_inner_edge_stripping_timescale": { - "param_name": "cbdisc_inner_edge_stripping_timescale", - "description": "Defines the timescale for mass loss from by inner edge stripping. 0 = instant, 1 = very long, 2 = viscous at Revap_in, 3 = orbital at Revap_in.", - "rest": "(null)" - }, - "cbdisc_outer_edge_stripping_timescale": { - "param_name": "cbdisc_outer_edge_stripping_timescale", - "description": "Defines the timescale for mass loss from by outer edge stripping. 0 = instant, 1 = very long, 2 = viscous at Revap_in, 3 = orbital at Revap_out.", - "rest": "(null)" - }, - "cbdisc_viscous_L2_coupling": { - "param_name": "cbdisc_viscous_L2_coupling", - "description": "Set to 1 to turn on viscous-L2-loss coupling in circumbinary discs. Requires DISCS. 0 = off.", - "rest": "(null)" - }, - "gravitational_radiation_model": { - "param_name": "gravitational_radiation_model", - "description": "Model for gravitational radiation from the system. 0=Hurley et al 2002 (Landau and Lifshitz 1951). 1 = as 0 but only when there is no RLOF. 2 = none.", - "rest": "(null)" - }, - "nova_irradiation_multiplier": { - "param_name": "nova_irradiation_multiplier", - "description": "Multiplier for nova-radiative induced mass loss. (Shara+1986)", - "rest": "(null)" - }, - "gravitational_radiation_modulator_J": { - "param_name": "gravitational_radiation_modulator_J", - "description": "Modulator for gravitational wave radiation angular momentum loss rate (1.0).", - "rest": "(null)" - }, - "gravitational_radiation_modulator_e": { - "param_name": "gravitational_radiation_modulator_e", - "description": "Modulator for gravitational wave radiation eccentricity pumping rate (1.0).", - "rest": "(null)" - }, - "nova_faml_multiplier": { - "param_name": "nova_faml_multiplier", - "description": "Nova friction-induced angular momentum loss multiplier. (Shara+1986)", - "rest": "(null)" - }, - "RLOF_angular_momentum_transfer_model": { - "param_name": "RLOF_angular_momentum_transfer_model", - "description": "Choose angular momentum transfer model in RLOF. 0=BSE (with discs), 1=conservative", - "rest": "(null)" - }, - "post_SN_orbit_method": { - "param_name": "post_SN_orbit_method", - "description": "Method by which the post-SN orbit is calculated. 0=BSE, 1=Tauris&Taken 1998.", - "rest": "(null)" - }, - "accretion_limit_eddington_multiplier": { - "param_name": "accretion_limit_eddington_multiplier", - "description": "Accretion is limited by the Eddington instability, with limiting rate given by the accretion_limit_eddington_multiplier * the normal (spherically symmetric) Eddington rate. This is known in the trade as the Eddington factor, and anything greater than 1.0 potentially gives you super-Eddington accretion.", - "rest": "(null)" - }, - "accretion_limit_thermal_multiplier": { - "param_name": "accretion_limit_thermal_multiplier", - "description": "Mass transfer onto a MS, HG or CHeB star is limited by the accretor's thermal rate times this multiplier.", - "rest": "(null)" - }, - "accretion_limit_dynamical_multiplier": { - "param_name": "accretion_limit_dynamical_multiplier", - "description": "Mass transfer is limited by the accretor's dynamical rate times this multiplier.", - "rest": "(null)" - }, - "donor_limit_envelope_multiplier": { - "param_name": "donor_limit_envelope_multiplier", - "description": "Mass transfer by RLOF is limited by this fraction of the donor's envelope mass per timestep", - "rest": "(null)" - }, - "donor_limit_thermal_multiplier": { - "param_name": "donor_limit_thermal_multiplier", - "description": "Mass transfer by RLOF is limited by the accretor's thermal rate times this multiplier.", - "rest": "(null)" - }, - "donor_limit_dynamical_multiplier": { - "param_name": "donor_limit_dynamical_multiplier", - "description": "Mass transfer by RLOF is limited by the donor's dynamical rate times this multiplier.", - "rest": "(null)" - }, - "Bondi_Hoyle_accretion_factor": { - "param_name": "Bondi_Hoyle_accretion_factor", - "description": "Wind accretion rate, as calculated by the Bondi-Hoyle-Littleton formula, multiplcation factor. (Used to be called 'acc2' which is now deprecated.) Hurley et al 2002 use 1.5, which is the default.", - "rest": "(null)" - }, - "tidal_strength_factor": { - "param_name": "tidal_strength_factor", - "description": "A modulator for the tidal strength. If this factor > 1 then tides are stronger, i.e. tidal timescales are reduced.", - "rest": "(null)" - }, - "hachisu_qcrit": { - "param_name": "hachisu_qcrit", - "description": "Critical q=Maccretor/Mdonor above which Hachisu's disk wind turns on.", - "rest": "(null)" - }, - "hachisu_disk_wind": { - "param_name": "hachisu_disk_wind", - "description": "Set to True to turn on Hachisu's disk wind when material accretes too fast onto a white dwarf. This helps to make more SNeIa. See also hachisu_qcrit.", - "rest": "(null)" - }, - "mass_accretion_for_eld": { - "param_name": "mass_accretion_for_eld", - "description": "The mass that must be accreted onto a COWD for it to ignite as an edge-lit detonation SNIa.", - "rest": "(null)" - }, - "WDWD_merger_algorithm": { - "param_name": "WDWD_merger_algorithm", - "description": "Algorithm to be used when merging two white dwarfs. 0 = Hurley et al. (2002), 1 = Perets+ (2019), 2 = Chen+ (2016, todo) ", - "rest": "(null)" - }, - "type_Ia_MCh_supernova_algorithm": { - "param_name": "type_Ia_MCh_supernova_algorithm", - "description": "Algorithm to be used when calculating type Ia yields from Chandrasekhar-mass exploders. 0 = DD7 (Iwamoto 1999), 1 = Seitenzahl 2013 3D hydro yields (you must also set Seitenzahl2013_model) ", - "rest": "(null)" - }, - "Seitenzahl2013_model": { - "param_name": "Seitenzahl2013_model", - "description": "Which of Seitenzahl et al. 2013's models to use? One of N1,N3,N5,N10,N20,N40,N100L,N100,N100H,N150,N200,N300C,N1600,N1600C,N100_Z0.5,N100_Z0.1,N100_Z0.01 (defaults to N100).", - "rest": "N1" - }, - "type_Ia_sub_MCh_supernova_algorithm": { - "param_name": "type_Ia_sub_MCh_supernova_algorithm", - "description": "Algorithm to be used when calculating type Ia yields from sub-Chandrasekhar-mass exploders. (Currently unused.)", - "rest": "(null)" - }, - "max_HeWD_mass": { - "param_name": "max_HeWD_mass", - "description": "The maximum mass a HeWD can have before it ignites helium (0.7).", - "rest": "(null)" - }, - "merger_angular_momentum_factor": { - "param_name": "merger_angular_momentum_factor", - "description": "When two stars merge the resulting single star retains a fraction of the total system angular momentum (or the critical spin angular momentum, if it is smaller) multiplied by this factor.", - "rest": "(null)" - }, - "wind_angular_momentum_loss": { - "param_name": "wind_angular_momentum_loss", - "description": "Prescription for losing angular momentum in a stellar wind. 0=Hurley et al 2002 ('Tout') prescription, 1=lw i.e. a factor multiplying the specific orbital angular momentum, 2=lw hybrid for fast winds. Set wind_djorb_fac to the desired factor..", - "rest": "(null)" - }, - "wind_djorb_fac": { - "param_name": "wind_djorb_fac", - "description": "Factor multiplying angular momentum loss in a stellar wind when wind_angular_momentum_loss=0 (the Tout/Hurley et al 2002 prescription). See wind_angular_momentum_loss.", - "rest": "(null)" - }, - "lw": { - "param_name": "lw", - "description": "Factor multiplying angular momentum loss in a stellar wind when wind_angular_momentum_loss=1,2 (the 'lw' prescription). See wind_angular_momentum_loss.", - "rest": "(null)" - }, - "rlperi": { - "param_name": "rlperi", - "description": "Set this to True to use the Roche lobe radius at periastron, rather than (the default to) assume a circular orbit. This will be useful one day when we treat RLOF in eccentric orbits properly, hopefully.", - "rest": "(null)" - }, - "qcrit_LMMS": { - "param_name": "qcrit_LMMS", - "description": "Apply critical q=Mdonor/Maccretor value for low-mass main sequence stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_MS": { - "param_name": "qcrit_MS", - "description": "Apply critical q=Mdonor/Maccretor value for (non-low mass) main sequence stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_HG": { - "param_name": "qcrit_HG", - "description": "Apply critical q=Mdonor/Maccretor value for Hertzsprung gap stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_GB": { - "param_name": "qcrit_GB", - "description": "Apply critical q=Mdonor/Maccretor value for first red giant branch stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_CHeB": { - "param_name": "qcrit_CHeB", - "description": "Apply critical q=Mdonor/Maccretor value for core helium burning stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_EAGB": { - "param_name": "qcrit_EAGB", - "description": "Apply critical q=Mdonor/Maccretor value for early-AGB stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_TPAGB": { - "param_name": "qcrit_TPAGB", - "description": "Apply critical q=Mdonor/Maccretor value for TP-AGB stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_HeMS": { - "param_name": "qcrit_HeMS", - "description": "Apply critical q=Mdonor/Maccretor value for helium main sequence stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_HeHG": { - "param_name": "qcrit_HeHG", - "description": "Apply critical q=Mdonor/Maccretor value for helium Hertzsprung gap stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_HeGB": { - "param_name": "qcrit_HeGB", - "description": "Apply critical q=Mdonor/Maccretor value for helium red giant stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_HeWD": { - "param_name": "qcrit_HeWD", - "description": "Apply critical q=Mdonor/Maccretor value for helium white dwarf stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_COWD": { - "param_name": "qcrit_COWD", - "description": "Apply critical q=Mdonor/Maccretor value for carbon-oxygen white dwarf stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_ONeWD": { - "param_name": "qcrit_ONeWD", - "description": "Apply critical q=Mdonor/Maccretor value for oxygen-neon white dwarf stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_NS": { - "param_name": "qcrit_NS", - "description": "Apply critical q=Mdonor/Maccretor value for neutron stars to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_BH": { - "param_name": "qcrit_BH", - "description": "Apply critical q=Mdonor/Maccretor value for black holes to determine the stability of Roche-lobe overflow for non-degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_LMMS": { - "param_name": "qcrit_degenerate_LMMS", - "description": "Apply critical q=Mdonor/Maccretor value for (low mass) main sequence stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_MS": { - "param_name": "qcrit_degenerate_MS", - "description": "Apply critical q=Mdonor/Maccretor value for (non-low mass) main sequence stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_HG": { - "param_name": "qcrit_degenerate_HG", - "description": "Apply critical q=Mdonor/Maccretor value for Hertzsprung gap stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_GB": { - "param_name": "qcrit_degenerate_GB", - "description": "Apply critical q=Mdonor/Maccretor value for first red giant branch stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_CHeB": { - "param_name": "qcrit_degenerate_CHeB", - "description": "Apply critical q=Mdonor/Maccretor value for core helium burning stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_EAGB": { - "param_name": "qcrit_degenerate_EAGB", - "description": "Apply critical q=Mdonor/Maccretor value for early-AGB stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_TPAGB": { - "param_name": "qcrit_degenerate_TPAGB", - "description": "Apply critical q=Mdonor/Maccretor value for TP-AGB stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_HeMS": { - "param_name": "qcrit_degenerate_HeMS", - "description": "Apply critical q=Mdonor/Maccretor value for helium main sequence stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_HeHG": { - "param_name": "qcrit_degenerate_HeHG", - "description": "Apply critical q=Mdonor/Maccretor value for helium Hertzsprung gap stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_HeGB": { - "param_name": "qcrit_degenerate_HeGB", - "description": "Apply critical q=Mdonor/Maccretor value for helium red giant stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_HeWD": { - "param_name": "qcrit_degenerate_HeWD", - "description": "Apply critical q=Mdonor/Maccretor value for helium white dwarf stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_COWD": { - "param_name": "qcrit_degenerate_COWD", - "description": "Apply critical q=Mdonor/Maccretor value for carbon-oxygen white dwarf stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_ONeWD": { - "param_name": "qcrit_degenerate_ONeWD", - "description": "Apply critical q=Mdonor/Maccretor value for oxygen-neon white dwarf stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_NS": { - "param_name": "qcrit_degenerate_NS", - "description": "Apply critical q=Mdonor/Maccretor value for neutron stars to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "qcrit_degenerate_BH": { - "param_name": "qcrit_degenerate_BH", - "description": "Apply critical q=Mdonor/Maccretor value for black holes to determine the stability of Roche-lobe overflow for degenerate accretors. See also qcrits_*, qcrits_degenerate_*.", - "rest": "(null)" - }, - "mass_for_Hestar_Ia_upper": { - "param_name": "mass_for_Hestar_Ia_upper", - "description": "Only helium stars below this mass can explode as SNIa. Default is zero, i.e. it never happens. See also mass_for_Hestar_Ia_lower.", - "rest": "(null)" - }, - "mass_for_Hestar_Ia_lower": { - "param_name": "mass_for_Hestar_Ia_lower", - "description": "Only helium stars above this mass can explode as SNIa. Default is zero, i.e. it never happens. See also mass_for_Hestar_Ia_upper.", - "rest": "(null)" - }, - "alphaCB": { - "param_name": "alphaCB", - "description": "Circumbinary disk viscosity parameter, alpha.", - "rest": "(null)" - }, - "minimum_donor_menv_for_comenv": { - "param_name": "minimum_donor_menv_for_comenv", - "description": "Minimum donor envelope mass for common envelope evolution to be triggered (Msun). Default 0.", - "rest": "(null)" - }, - "comenv_prescription": { - "param_name": "comenv_prescription", - "description": "Use this to choose which common envelope prescription you should use. 0=Hurley et al 2002 (based on the Paczy\u0144ski energy model) or 1=Nelemans and Tout (angular momentum model). See also alpha_ce, comenv_ms_accretion_mass, comenv_ms_accretion_fraction, comenv_ns_accretion_fraction, comenv_ns_accretion_mass, nelemans_gamma, nelemans_minq, nelemans_max_frac_j_change, nelemans_n_comenvs, lambda_ce, lambda_ionisation.", - "rest": "(null)" - }, - "comenv_ejection_spin_method": { - "param_name": "comenv_ejection_spin_method", - "description": "When a common envelope is ejected, we need to decide how fast the stars are left spinning. COMENV_EJECTION_SPIN_METHOD_DO_NOTHING (0) is the default, this just leaves the stars/stellar cores spinning with the same spin rate (omega = angular velocity) with which they entered the common envelope phase. COMENV_EJECTION_SPIN_METHOD_SYCHRONIZE instead tidally synchronizes the stars with their new orbital angular velocity.", - "rest": "(null)" - }, - "comenv_merger_spin_method": { - "param_name": "comenv_merger_spin_method", - "description": "When a common envelope binary merges, we need to decide how fast the resulting single star is left spinning. COMENV_MERGER_SPIN_METHOD_SPECIFIC (0) is the default, this preserves angular momentum but limits the specific angular momentum of the merged star to the specific angular momentum of the system at the onset of common envelope evolution. COMENV_MERGER_SPIN_METHOD_CONSERVE_ANGMOM (1) sets the merger's angular momentum to be that of the system at the onset of common envelope evolution (which means the star may be rotating supercritically). COMENV_MERGER_SPIN_METHOD_CONSERVE_OMEGA (2) sets the spin rate (angular frequency = omega) of the merged star to be that of the orbit just at the onset of common envelope evolution.", - "rest": "(null)" - }, - "comenv_ms_accretion_mass": { - "param_name": "comenv_ms_accretion_mass", - "description": "Experimental. During common envelope evolution, a main sequence star may accrete some of the envelope's mass. Requires COMENV_MS_ACCRETION. See also comenv_ms_accretion_fraction.", - "rest": "(null)" - }, - "comenv_ms_accretion_fraction": { - "param_name": "comenv_ms_accretion_fraction", - "description": "Experimental. During common envelope evolution, a main sequence may accrete a fraction of the envelope's mass. Requires COMENV_MS_ACCRETION. See also comenv_ms_accretion_mass.", - "rest": "(null)" - }, - "comenv_ns_accretion_mass": { - "param_name": "comenv_ns_accretion_mass", - "description": "Experimental. During common envelope evolution, a neutron star may accrete some of the envelope's mass. Requires COMENV_NS_ACCRETION. See also comenv_ns_accretion_fraction.", - "rest": "(null)" - }, - "comenv_ns_accretion_fraction": { - "param_name": "comenv_ns_accretion_fraction", - "description": "Experimental. During common envelope evolution, a neutron star may accrete a fraction of the envelope's mass. Requires COMENV_NS_ACCRETION. See also comenv_ns_accretion_mass.", - "rest": "(null)" - }, - "alpha_ce": { - "param_name": "alpha_ce", - "description": "Common envelope energy formalism parameter. A fraction alpha of the orbital energy is used to eject the envelope. See Hurley et al 2002 for details.", - "rest": "(null)" - }, - "lambda_ce": { - "param_name": "lambda_ce", - "description": "Common envelope parameter. The binding energy of the common envelope is G*M*Menv/(lambda*R). Typically this is taken to be 0.5, but if set to -1 binary_c uses the Dewi and Tauris fits instead, -2 uses the formalism of Wang, Jia and Li (2016) and if -3 then a polytropic formalism is used (see also comenv_splitmass).", - "rest": "(null)" - }, - "comenv_splitmass": { - "param_name": "comenv_splitmass", - "description": "When lambda_ce=-2, the envelope binding energy, lambda, is calculated using a polytropic formalism. The comenv_splitmass defines the point, in the units of the core mass, above which material is ejected.", - "rest": "(null)" - }, - "nelemans_recalc_eccentricity": { - "param_name": "nelemans_recalc_eccentricity", - "description": "If True, recalculate the eccentricity after angular momentum is removed. ", - "rest": "(null)" - }, - "comenv_post_eccentricity": { - "param_name": "comenv_post_eccentricity", - "description": "Eccentricity remaining after common envelope ejection.", - "rest": "(null)" - }, - "nelemans_gamma": { - "param_name": "nelemans_gamma", - "description": "Set the fraction of the orbital specific angular momentum that is used to eject the common envelope according to the Nelemans and Tout prescription. See also nelemans_minq, nelemans_max_frac_j_change, nelemans_n_comenvs.", - "rest": "(null)" - }, - "nelemans_minq": { - "param_name": "nelemans_minq", - "description": "Only activate the Nelemans and Tout common envelope prescription for q>nelemans_minq. See also nelemans_gamma, nelemans_max_frac_j_change, nelemans_n_comenvs.", - "rest": "(null)" - }, - "nelemans_max_frac_j_change": { - "param_name": "nelemans_max_frac_j_change", - "description": "Maximum fractional angular momentum change in the Nelemans and Tout common envelope prescription. See also nelemans_gamma, nelemans_minq, nelemans_n_comenvs.", - "rest": "(null)" - }, - "nelemans_n_comenvs": { - "param_name": "nelemans_n_comenvs", - "description": "Set the maximum number of common envelope ejections allowed to follow the Nelemans and Tout prescription, after which the standard alpha prescription is used.", - "rest": "(null)" - }, - "lambda_ionisation": { - "param_name": "lambda_ionisation", - "description": "A fraction lambda_ionisation of the recombination energy in the common envelope goes into ejecting the envelope. This is usually 0.0, but a positive value can make a big difference to the outcome of common envelope evolution.", - "rest": "(null)" - }, - "lambda_enthalpy": { - "param_name": "lambda_enthalpy", - "description": "A fraction of the enthalpy to be included in the common envelope evolution binding energy. Only used for the Wang 2016 prescription (so far).", - "rest": "(null)" - }, - "cbdisc_gamma": { - "param_name": "cbdisc_gamma", - "description": "Circumbinary disc gamma (equation of state) parameter. Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_alpha": { - "param_name": "cbdisc_alpha", - "description": "Circumbinary disc alpha (viscosity) parameter. Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_kappa": { - "param_name": "cbdisc_kappa", - "description": "Circumbinary disc kappa (opacity) parameter. Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_minimum_evaporation_timescale": { - "param_name": "cbdisc_minimum_evaporation_timescale", - "description": "Circumbinary disc minimum evaporation timescale (years). If (slow, not edge stripped) mass loss would evaporate the disc on a timescale less than this, simply evaporate the disc immediated. Usually set to 1y, ignore if zero. Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_torquef": { - "param_name": "cbdisc_torquef", - "description": "Circumbinary disc binary torque multiplier. Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_max_lifetime": { - "param_name": "cbdisc_max_lifetime", - "description": "Circumbinary disc maximum lifetime (years, ignored if 0). Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_init_dM": { - "param_name": "cbdisc_init_dM", - "description": "On cbdisc start, reduce mass by a fraction dM if it won't converge. Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_init_dJdM": { - "param_name": "cbdisc_init_dJdM", - "description": "On cbdisc start, reduce angular momentum by a fraction dJ/dM*dM if it won't converge. Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_mass_loss_constant_rate": { - "param_name": "cbdisc_mass_loss_constant_rate", - "description": "Circumbinary disc constant mass loss rate (Msun/year). Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_mass_loss_FUV_multiplier": { - "param_name": "cbdisc_mass_loss_FUV_multiplier", - "description": "Circumbinary disc FUV mass loss rate multiplier (no units). Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_mass_loss_Xray_multiplier": { - "param_name": "cbdisc_mass_loss_Xray_multiplier", - "description": "Circumbinary disc X-ray mass loss rate multiplier (no units). Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_mass_loss_ISM_ram_pressure_multiplier": { - "param_name": "cbdisc_mass_loss_ISM_ram_pressure_multiplier", - "description": "Circumbinary disc interstellar medium ram pressure stripping mass loss rate multiplier (no units). Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_mass_loss_ISM_pressure": { - "param_name": "cbdisc_mass_loss_ISM_pressure", - "description": "Circumbinary disc interstellar medium ram pressure in units of Boltzmann constant per Kelvin (I think...). Requires DISCS. Typically 3000.0. See e.g. http://www.astronomy.ohio-state.edu/~pogge/Ast871/Notes/Intro.pdf page 15 or https://arxiv.org/pdf/0902.0820.pdf Fig. 1 (left panel).", - "rest": "(null)" - }, - "cbdisc_mass_loss_inner_viscous_multiplier": { - "param_name": "cbdisc_mass_loss_inner_viscous_multiplier", - "description": "Circumbinary disc inner edge viscous mass loss rate multiplier (no units). Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_mass_loss_inner_viscous_angular_momentum_multiplier": { - "param_name": "cbdisc_mass_loss_inner_viscous_angular_momentum_multiplier", - "description": "Circumbinary disc inner edge viscous angular momentum multiplier (no units). The inner edge angular momentum Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_resonance_multiplier": { - "param_name": "cbdisc_resonance_multiplier", - "description": "Circumbinary disc resonant interaction multiplier, affects eccentricity pumping and angular momentum rates. Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_resonance_damping": { - "param_name": "cbdisc_resonance_damping", - "description": "Circumbinary disc resonant interaction damping: should be on (True) to damp the l=1, m=2 resonance when the disc inner edge lies outside the resonance location. Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_fail_ring_inside_separation": { - "param_name": "cbdisc_fail_ring_inside_separation", - "description": "If True, while converging on a structure, circumbinary discs with Rring < the binary separation are immediately failed.", - "rest": "(null)" - }, - "cbdisc_mass_loss_inner_L2_cross_multiplier": { - "param_name": "cbdisc_mass_loss_inner_L2_cross_multiplier", - "description": "Circumbinary disc inner edge L2-crossing mass loss rate multiplier (no units). Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_minimum_luminosity": { - "param_name": "cbdisc_minimum_luminosity", - "description": "Circumbinary disc minimum luminosity. If the disc becomes dimmer than this, the disc is evaporated instantly. Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_minimum_mass": { - "param_name": "cbdisc_minimum_mass", - "description": "Circumbinary disc minimum mass. If the disc becomes less massive than this, the disc is evaporated instantly. Requires DISCS.", - "rest": "(null)" - }, - "cbdisc_minimum_fRing": { - "param_name": "cbdisc_minimum_fRing", - "description": "Circumbinary disc minimum fRing. If the disc becomes a ring, and fRing = |Rout/Rin-1| < this value (and this value is non-zero), the disc is evaporated instantly. Requires DISCS.", - "rest": "(null)" - }, - "comenv_disc_angmom_fraction": { - "param_name": "comenv_disc_angmom_fraction", - "description": "If >0 Fraction of the common envelope's angular momentum that goes into the circumbinary disc. If -1 then uses the moments of inertia to calculate (deprecated), if -2 use the common envelope's specific angular momentum, if -3 uses the L2 point at the end of the common envelope to set the angular momentum. Requires DISCS and DISCS_CIRCUMBINARY_FROM_COMENV.", - "rest": "(null)" - }, - "comenv_disc_mass_fraction": { - "param_name": "comenv_disc_mass_fraction", - "description": "Fraction of the common envelope's mass that goes into the circumbinary disc. Requires DISCS and DISCS_CIRCUMBINARY_FROM_COMENV.", - "rest": "(null)" - }, - "wind_disc_angmom_fraction": { - "param_name": "wind_disc_angmom_fraction", - "description": "If >0 Fraction of the wind envelope's angular momentum that goes into the circumbinary disc. If -1 then uses the L2 point's specific angular momentum. Requires DISCS and DISCS_CIRCUMBINARY_FROM_WIND.", - "rest": "(null)" - }, - "wind_disc_mass_fraction": { - "param_name": "wind_disc_mass_fraction", - "description": "Fraction of the stellar wind's mass that goes into the circumbinary disc. Requires DISCS and DISCS_CIRCUMBINARY_FROM_WIND.", - "rest": "(null)" - }, - "WRLOF_method": { - "param_name": "WRLOF_method", - "description": "Choose whether and how to apply wind-Roche-lobe-overflow. 0=none, 1=q-dependent, 2=quadratic See Abate et al 2013/14 for details. Requires WRLOF_MASS_TRANSFER.", - "rest": "(null)" - }, - "minimum_timestep": { - "param_name": "minimum_timestep", - "description": "The minimum timestep (Myr).", - "rest": "(null)" - }, - "timestep_solver_factor": { - "param_name": "timestep_solver_factor", - "description": "Factor applied in timestep_limits, e.g. to prevent X changing too fast by comparing to X/dX/dt, which is usually 1 but can be higher to lengthen timesteps when using an alternative solver.", - "rest": "(null)" - }, - "RLOF_mdot_factor": { - "param_name": "RLOF_mdot_factor", - "description": "Multiplier applied to the mass transfer rate during Roche-lobe overflow. Requires RLOF_MDOT_MODULATION.", - "rest": "(null)" - }, - "RLOF_f": { - "param_name": "RLOF_f", - "description": "Factor to enlarge a Roche lobe, nominally because of radiation pressure (see Dermine et al paper). Requires RLOF_RADIATION_CORRECTION.", - "rest": "(null)" - }, - "minimum_separation_for_instant_RLOF": { - "param_name": "minimum_separation_for_instant_RLOF", - "description": "If True, instead of evolving the system just report the minimum separation (on the zero-age main sequence) that would lead to instant RLOF. Used by binary_grid. See also minimum_orbital_period_for_instant_RLOF.", - "rest": "(null)" - }, - "separation": { - "param_name": "separation", - "description": "Set the orbital separation in solar radii. Note that if the orbital period is given, it is used to calculate the separation. So if you want to set the separation instead, either do not set the orbital period or set the orbital period to zero (0.0).", - "rest": "(null)" - }, - "minimum_orbital_period_for_instant_RLOF": { - "param_name": "minimum_orbital_period_for_instant_RLOF", - "description": "If True, instead of evolving the system just report the minimum orbital period (on the zero-age main sequence) that would lead to instant RLOF. Used by binary_grid. See also minimum_separeation_for_instant_RLOF.", - "rest": "(null)" - }, - "RLOF_method": { - "param_name": "RLOF_method", - "description": "Use RLOF_method to choose the algorithm you use for Roche-lobe overflow mass loss rate calculations. 0=Hurley et al 2002, 1=Adaptive (for radiative stars) R=RL method, 2=Ritter (probably broken), 3=Claeys etal 2014 variant on Hurley et al 2002.", - "rest": "(null)" - }, - "RLOF_interpolation_method": { - "param_name": "RLOF_interpolation_method", - "description": "When a star overflows its Roche lobe, it always has R>RL because of the limited time resolution of the simulation. Binary_c then uses an algorithm to get back to when R~RL (within a desired tolerance, set in RLOF_ENTRY_THRESHOLD which is usually 1.02, i.e. overflow of 2%). You can choose algorithm 0, the Hurley et al 2002 method which reverses time (i.e. uses a Newton-like scheme), or 1 to use the binary_c method which rejects a timestep (and hence does no logging on that timestep) and repeats with half the timestep until R~RL. The latter is now the default, because this means there are no negative timesteps which break various other algorithms (e.g. nucleosynthesis).", - "rest": "(null)" - }, - "nova_retention_fraction": { - "param_name": "nova_retention_fraction", - "description": "The mass accreted during a nova as fraction of mass transferred", - "rest": "(null)" - }, - "beta_reverse_nova": { - "param_name": "beta_reverse_nova", - "description": "The fraction of mass ejected in a nova explosion which is accreted back onto the companion star. Set to -1 to automatically calculate based on a geometric argument, or 0 or positive to set the value.", - "rest": "(null)" - }, - "WD_accretion_rate_novae_upper_limit_hydrogen_donor": { - "param_name": "WD_accretion_rate_novae_upper_limit_hydrogen_donor", - "description": "Upper limit of the stable mass transfer rate onto a white dwarf that leads to novae when the donor is hydrogen rich: above this rate the mass transfer leads to stable burning.", - "rest": "(null)" - }, - "WD_accretion_rate_novae_upper_limit_helium_donor": { - "param_name": "WD_accretion_rate_novae_upper_limit_helium_donor", - "description": "Upper limit of the stable mass transfer rate onto a white dwarf that leads to novae when the donor is helium rich: above this rate the mass transfer leads to stable burning.", - "rest": "(null)" - }, - "WD_accretion_rate_novae_upper_limit_other_donor": { - "param_name": "WD_accretion_rate_novae_upper_limit_other_donor", - "description": "Upper limit of the stable mass transfer rate onto a white dwarf that leads to novae when the donor is neither hydrogen nor helium rich: above this rate the mass transfer leads to stable burning.", - "rest": "(null)" - }, - "WD_accretion_rate_new_giant_envelope_lower_limit_hydrogen_donor": { - "param_name": "WD_accretion_rate_new_giant_envelope_lower_limit_hydrogen_donor", - "description": "Lower limit of the mass transfer rate onto a white dwarf that leads to a the formation of a new giant envelope with a hydrogen-rich donor. Below this mass transfer leads to stable burning.", - "rest": "(null)" - }, - "WD_accretion_rate_new_giant_envelope_lower_limit_helium_donor": { - "param_name": "WD_accretion_rate_new_giant_envelope_lower_limit_helium_donor", - "description": "Lower limit of the mass transfer rate onto a white dwarf that leads to a the formation of a new giant envelope with a helium-rich donor. Below this mass transfer leads to stable burning.", - "rest": "(null)" - }, - "WD_accretion_rate_new_giant_envelope_lower_limit_other_donor": { - "param_name": "WD_accretion_rate_new_giant_envelope_lower_limit_other_donor", - "description": "Lower limit of the mass transfer rate onto a white dwarf that leads to a the formation of a new giant envelope when the donor is neither hydrogen nor helium rich. Below this mass transfer leads to stable burning.", - "rest": "(null)" - }, - "CRAP_parameter": { - "param_name": "CRAP_parameter", - "description": "Tidally enhanced mass loss parameter. See Tout and Eggleton's paper on the subject. (Was the parameter bb).", - "rest": "(null)" - }, - "individual_novae": { - "param_name": "individual_novae", - "description": "If individual_novae is True, novae are resolved such that each explosion is performed separtaely.", - "rest": "(null)" - }, - "nova_timestep_accelerator_num": { - "param_name": "nova_timestep_accelerator_num", - "description": "The nova timestep is accelerated if the nova number exceeds nova_timestep_accelerator_num. If zero or negative, acceleration is off. See also nova_timestep_accelerator_index and nova_timestep_accelerator_max. Only used if individual_novae is on.", - "rest": "(null)" - }, - "nova_timestep_accelerator_index": { - "param_name": "nova_timestep_accelerator_index", - "description": "The index at which the nova timestep is accelerated. A larger value gives longer timesteps. See also nova_timestep_accelerator_num and nova_timestep_accelerator_max. Only used if individual_novae is on.", - "rest": "(null)" - }, - "nova_timestep_accelerator_max": { - "param_name": "nova_timestep_accelerator_max", - "description": "The nova timestep is accelerated by a factor that is capped at nova_timestep_accelerator_max. This parameter is ignored if it is zero or negative. See also nova_timestep_accelerator_num and nova_timestep_accelerator_index. Only used if individual_novae is on.", - "rest": "(null)" - }, - "nonconservative_angmom_gamma": { - "param_name": "nonconservative_angmom_gamma", - "description": "Mass lost from the system (but NOT from a stellar wind) takes a fraction gamma of the orbital angular momentum with it. Set to -1 to take the specific angular momentum of the donor star. Set to -2 to take super-Eddington, nova and disk-wind angular momenta as if a wind from the accretor.", - "rest": "(null)" - }, - "max_stellar_angmom_change": { - "param_name": "max_stellar_angmom_change", - "description": "Maxmimum fractional change in stellar angular momentum allowed before a timestep is rejected (0.05).", - "rest": "(null)" - } - } - }, - "nucsyn": { - "section_name": "nucsyn", - "parameters": { - "third_dup": { - "param_name": "third_dup", - "description": "If True, enables third dredge up. Requires NUCSYN and NUCSYN_THIRD_DREDGE_UP.", - "rest": "(null)" - }, - "third_dup_multiplier": { - "param_name": "third_dup_multiplier", - "description": "Usage: --third_dup_multiplier <i> <f>. Multiplies the abundance of element <i> by <f> during third dredge up.", - "rest": "1.0" - }, - "NeNaMgAl": { - "param_name": "NeNaMgAl", - "description": "Enables NeNaMgAl reaction network. Requires NUCSYN and NUCSYN_HBB.", - "rest": "Ignore" - }, - "nucreacmult%d": { - "param_name": "nucreacmult%d", - "description": "Usage: --nucreacmult%d <f>. Multiply nuclear reaction given by the integer %d (integer) by f (float). ", - "rest": "(null)" - }, - "nucsyn_metallicity": { - "param_name": "nucsyn_metallicity", - "description": "This sets the metallicity of the nucleosynthesis algorithms, i.e. the amount (by mass) of matter which is not hydrogen or helium. Usually you'd just set this with the metallicity parameter, but if you want the nucleosynthesis to be outside the range of the stellar evolution algorithm (e.g. Z=0 or Z=0.04) then you need to use nucsyn_metallicity. That said, it's also outside the range of some of the nucleosynthesis algorithms as well, so you have been warned!", - "rest": "(null)" - }, - "initial_abundance_mix": { - "param_name": "initial_abundance_mix", - "description": "initial abundance mixture: 0=AG89, 1=Karakas 2002, 2=Lodders 2003, 3=Asplund 2005 (not available?), 4=Garcia Berro, 5=Grevesse Noels 1993", - "rest": "0" - }, - "init_abund": { - "param_name": "init_abund", - "description": "Usage: --init_abund <i> <X>. Sets the initial abundance of isotope number <i> to mass fraction <X>.", - "rest": "0.02" - }, - "init_abund_mult": { - "param_name": "init_abund_mult", - "description": "Usage: --init_abund_mult <i> <f>. Multiplies the initial abundance of isotope number <i> by <f>.", - "rest": "1.0" - }, - "init_abund_dex": { - "param_name": "init_abund_dex", - "description": "Usage: --init_abund_dex <i> <f>. Changes the initial abundance of isotope number <i> by <f> dex.", - "rest": "0.0" - }, - "init_abunds_only": { - "param_name": "init_abunds_only", - "description": "If True, outputs only the initial abundances, then exits.", - "rest": "(null)" - }, - "initial_abunds_only": { - "param_name": "initial_abunds_only", - "description": "If True, outputs only the initial abundances, then exits.", - "rest": "(null)" - }, - "no_thermohaline_mixing": { - "param_name": "no_thermohaline_mixing", - "description": "If True, disables thermohaline mixing.", - "rest": "(null)" - }, - "lithium_GB_post_Heflash": { - "param_name": "lithium_GB_post_Heflash", - "description": "Sets the lithium abundances after the helium flash. Requires NUCSYN and LITHIUM_TABLES.", - "rest": "(null)" - }, - "lithium_GB_post_1DUP": { - "param_name": "lithium_GB_post_1DUP", - "description": "Sets the lithium abundance after first dredge up. Requires NUCSYN and LITHIUM_TABLES.", - "rest": "(null)" - }, - "lithium_hbb_multiplier": { - "param_name": "lithium_hbb_multiplier", - "description": "Multiplies the lithium abundances on the AGB during HBB (based on Karakas/Fishlock et al models).Requires NUCSYN and LITHIUM_TABLES.", - "rest": "(null)" - }, - "angelou_lithium_decay_function": { - "param_name": "angelou_lithium_decay_function", - "description": "Functional form which describes Li7 decay. Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Choices are: 0 expoential (see angelou_lithium_decay_time).", - "rest": "(null)" - }, - "angelou_lithium_LMMS_time": { - "param_name": "angelou_lithium_LMMS_time", - "description": "Time at which lithium manufacture is triggered in a low-mass (convective) main sequence (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_MS_time": { - "param_name": "angelou_lithium_MS_time", - "description": "Time at which lithium manufacture is triggered on the main sequence (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_HG_time": { - "param_name": "angelou_lithium_HG_time", - "description": "Time at which lithium manufacture is triggered on the Hertzsprung gap (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_GB_time": { - "param_name": "angelou_lithium_GB_time", - "description": "Time at which lithium manufacture is triggered on the giant branch (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_CHeB_time": { - "param_name": "angelou_lithium_CHeB_time", - "description": "Time at which lithium manufacture is triggered during core helium burning (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_EAGB_time": { - "param_name": "angelou_lithium_EAGB_time", - "description": "Time at which lithium manufacture is triggered on the early AGB (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_TPAGB_time": { - "param_name": "angelou_lithium_TPAGB_time", - "description": "Time at which lithium manufacture is triggered on the thermally pulsing AGB (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_LMMS_decay_time": { - "param_name": "angelou_lithium_LMMS_decay_time", - "description": "Decay time for surface lithium abundance during the low-mass (convective) main sequence (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_MS_decay_time": { - "param_name": "angelou_lithium_MS_decay_time", - "description": "Decay time for surface lithium abundance on the main sequence (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_HG_decay_time": { - "param_name": "angelou_lithium_HG_decay_time", - "description": "Decay time for surface lithium abundance on the Hertzsprung gap (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_GB_decay_time": { - "param_name": "angelou_lithium_GB_decay_time", - "description": "Decay time for surface lithium abundance on the giant branch (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_CHeB_decay_time": { - "param_name": "angelou_lithium_CHeB_decay_time", - "description": "Decay time for surface lithium abundance during core helium burning (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_EAGB_decay_time": { - "param_name": "angelou_lithium_EAGB_decay_time", - "description": "Decay time for surface lithium abundance on the early AGB (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_TPAGB_decay_time": { - "param_name": "angelou_lithium_TPAGB_decay_time", - "description": "Decay time for surface lithium abundance on the thermally pulsing AGB (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_LMMS_massfrac": { - "param_name": "angelou_lithium_LMMS_massfrac", - "description": "Lithium mass fraction when its manufacture is triggered during the low-mass (convective) main sequence (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_MS_massfrac": { - "param_name": "angelou_lithium_MS_massfrac", - "description": "Lithium mass fraction when its manufacture is triggered on the main sequence (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_HG_massfrac": { - "param_name": "angelou_lithium_HG_massfrac", - "description": "Lithium mass fraction when its manufacture is triggered on the Hertzsprung gap (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_GB_massfrac": { - "param_name": "angelou_lithium_GB_massfrac", - "description": "Lithium mass fraction when its manufacture is triggered on the giant branch (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_CHeB_massfrac": { - "param_name": "angelou_lithium_CHeB_massfrac", - "description": "Lithium mass fraction when its manufacture is triggered during core helium burning (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_EAGB_massfrac": { - "param_name": "angelou_lithium_EAGB_massfrac", - "description": "Lithium mass fraction when its manufacture is triggered on the early AGB (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_TPAGB_massfrac": { - "param_name": "angelou_lithium_TPAGB_massfrac", - "description": "Lithium mass fraction when its manufacture is triggered on the thermally pulsing AGB (Myr). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0 (for the start, use 1e-6).", - "rest": "(null)" - }, - "angelou_lithium_vrot_trigger": { - "param_name": "angelou_lithium_vrot_trigger", - "description": "Equatorial rotational velocity at which lithium manufacture is triggered (km/s). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0.", - "rest": "(null)" - }, - "angelou_lithium_vrotfrac_trigger": { - "param_name": "angelou_lithium_vrotfrac_trigger", - "description": "Fraction of Keplerian (breakup) equatorial rotational velocity at which lithium manufacture is triggered (must be <1, ignored if 0). Requires NUCSYN and NUCSYN_ANGELOU_LITHIUM. Ignored if 0.", - "rest": "(null)" - } - } - }, - "output": { - "section_name": "output", - "parameters": { - "yields_dt": { - "param_name": "yields_dt", - "description": "When doing yield calculations, yields are output every yields_dt Myr. Requires NUCSYN and NUCSYN_SPARSE_YIELDS.", - "rest": "(null)" - }, - "yields_logdt": { - "param_name": "yields_logdt", - "description": "When doing yield calculations, and when logyieldtimes is set, yields are output every yields_logdt Myr. Requires NUCSYN and NUCSYN_SPARSE_YIELDS.", - "rest": "(null)" - }, - "yields_startlogtime": { - "param_name": "yields_startlogtime", - "description": "Start log yields at yields_startlogtime.", - "rest": "(null)" - }, - "yields_logtimes": { - "param_name": "yields_logtimes", - "description": "When doing yield calculations, set this to output at log times rather than linear times.", - "rest": "(null)" - }, - "CEMP_logg_maximum": { - "param_name": "CEMP_logg_maximum", - "description": "Maximum logg that CEMP stars are allowed to have. See Izzard et al 2009. See also CEMP_cfe_minimum, CEMP_minimum_age.", - "rest": "(null)" - }, - "CEMP_cfe_minimum": { - "param_name": "CEMP_cfe_minimum", - "description": "Minimum [C/Fe] that CEMP stars are required to have. See Izzard et al 2009. See also CEMP_logg_maximum, CEMP_minimum_age.", - "rest": "(null)" - }, - "thick_disc_start_age": { - "param_name": "thick_disc_start_age", - "description": "Lookback time for the start of the thick disc star formation, e.g. 13e3 Myr. Units = Myr.", - "rest": "(null)" - }, - "thick_disc_end_age": { - "param_name": "thick_disc_end_age", - "description": "Lookback time for the end of the thick disc star formation, e.g. 4e3 Myr. Units = Myr.", - "rest": "(null)" - }, - "thick_disc_logg_min": { - "param_name": "thick_disc_logg_min", - "description": "Minimum logg for thick disc giants to be logged.", - "rest": "(null)" - }, - "thick_disc_logg_max": { - "param_name": "thick_disc_logg_max", - "description": "Maximum logg for thick disc giants to be logged.", - "rest": "(null)" - }, - "CEMP_minimum_age": { - "param_name": "CEMP_minimum_age", - "description": "Minimum age that CEMP stars are required to have. See Izzard et al 2009. See also CEMP_cfe_minimum, CEMP_logg_maximum.", - "rest": "(null)" - }, - "escape_velocity": { - "param_name": "escape_velocity", - "description": "A parameter used in constructing galactic chemical evolution (GCE) models. If the stellar wind velocity exceeds this value, any chemical yield from the wind is ignored, i.e. assumed lost. (km/s) Requires NUCSYN_GCE_OUTFLOW_CHECKS. Default 1e9 km/s. See also escape_fraction.", - "rest": "(null)" - }, - "escape_fraction": { - "param_name": "escape_fraction", - "description": "A parameter used in constructing galactic chemical evolution (GCE) models. If the stellar wind velocity exceeds this value, any chemical yield from the wind is ignored, i.e. assumed lost. (km/s) Requires NUCSYN_GCE_OUTFLOW_CHECKS. Default 0.0. See also escape_velocity.", - "rest": "(null)" - }, - "log_filename": { - "param_name": "log_filename", - "description": "Location of the output logging filename. If set to \"/dev/null\" then there is no logging.", - "rest": "" - }, - "stardata_dump_filename": { - "param_name": "stardata_dump_filename", - "description": "Location of the stardata dump file.", - "rest": "" - }, - "stardata_load_filename": { - "param_name": "stardata_load_filename", - "description": "Location of the stardata file to load.", - "rest": "" - }, - "api_log_filename_prefix": { - "param_name": "api_log_filename_prefix", - "description": "Location of the output logging filename prefix for the API. If set to \"/dev/null\" then there is no logging.", - "rest": "0" - }, - "hrdiag_output": { - "param_name": "hrdiag_output", - "description": "Set to True to output high time-resolution Hertzstrpung-Russell diagram information. Requires HRDIAG.", - "rest": "(null)" - }, - "internal_buffering": { - "param_name": "internal_buffering", - "description": "Experimental. Set to non-zero values to implement internal buffering prior to output. For use with binary_grid, you shouldn't really be playing with this.", - "rest": "(null)" - }, - "force_corotation_on_RLOF": { - "param_name": "force_corotation_on_RLOF", - "description": "If True forces co-rotation of stars and orbit when RLOF starts, this is as in the BSE algorithm. (True)", - "rest": "(null)" - }, - "fabian_imf_log_time": { - "param_name": "fabian_imf_log_time", - "description": "Time at which to output for Fabian Schneider's IMF project. Requires FABIAN_IMF_LOG", - "rest": "Ignore" - }, - "fabian_imf_log_timestep": { - "param_name": "fabian_imf_log_timestep", - "description": "Timestep for Fabian Schneider's IMF project logging. Requires FABIAN_IMF_LOG", - "rest": "Ignore" - }, - "version": { - "param_name": "version", - "description": "Display binary_c version and build information. Also performs timing tests.", - "rest": "Ignore" - }, - "dumpversion": { - "param_name": "dumpversion", - "description": "Display binary_c version number (short format).", - "rest": "Ignore" - }, - "version_only": { - "param_name": "version_only", - "description": "Display binary_c version number and build information, but do not perform timing tests or anything that requires stardata to be non-NULL.", - "rest": "Ignore" - } - } - }, - "i/o": { - "section_name": "i/o", - "parameters": { - "go": { - "param_name": "go", - "description": "batchmode control command", - "rest": "Ignore" - }, - "gogo": { - "param_name": "gogo", - "description": "batchmode control command", - "rest": "Ignore" - }, - "reset_stars": { - "param_name": "reset_stars", - "description": "Reset the star structures. Used in batchmode", - "rest": "Ignore" - }, - "reset_stars_defaults": { - "param_name": "reset_stars_defaults", - "description": "Reset the star structures and set defaults. Used in batchmode", - "rest": "Ignore" - }, - "defaults": { - "param_name": "defaults", - "description": "Reset all defaults. Used in batchmode", - "rest": "Ignore" - }, - "echo": { - "param_name": "echo", - "description": "Activate batchmode command echoing, i.e. when you enter a command, binary_c repeats the command then executes it.", - "rest": "Ignore" - }, - "noecho": { - "param_name": "noecho", - "description": "Deactivate batchmode command echoing. See 'echo'.", - "rest": "Ignore" - }, - "noechonow": { - "param_name": "noechonow", - "description": "Deactivate batchmode command echoing. See 'echo'.", - "rest": "Ignore" - }, - "bye": { - "param_name": "bye", - "description": "Quit binary_c. Used in batchmode.", - "rest": "Ignore" - }, - "fin": { - "param_name": "fin", - "description": "batchmode control command", - "rest": "Ignore" - }, - "reset_prefs": { - "param_name": "reset_prefs", - "description": "Reset preferences struct. Used in batchmode", - "rest": "Ignore" - }, - "status": { - "param_name": "status", - "description": "Output batchmode status information.", - "rest": "Ignore" - } - } - }, - "algorithms": { - "section_name": "algorithms", - "parameters": { - "repeat": { - "param_name": "repeat", - "description": "If > 1, repeats the system as many times as required. Handy if you're using Monte-Carlo kicks and want to sample the parameter space well. Also, if you are running speed tests this is good to give a statistically more reasonable result. (See e.g. 'tbse pgo').", - "rest": "(null)" - }, - "random_systems": { - "param_name": "random_systems", - "description": "Experimental. Use this to apply random initial system parameters (masses, separations, etc.). Useful for testing only.", - "rest": "(null)" - } - } - }, - "misc": { - "section_name": "misc", - "parameters": { - "random_seed": { - "param_name": "random_seed", - "description": "Random number seed, usually a (possibly negative) integer. Useful for exactly reproducing the evolution of a system which involves a kick (which is a Monte-Carlo, i.e. pseudorandom, process).", - "rest": "(null)" - }, - "random_skip": { - "param_name": "random_skip", - "description": "Skip the first <random_seed> random numbers that are generated. Usually this is 0 so they are all used.", - "rest": "(null)" - }, - "idum": { - "param_name": "idum", - "description": "[NB: deprecated, please use 'random_seed' instead.] Random number seed, usually a (possibly negative) integer. Useful for exactly reproducing the evolution of a system which involves a kick (which is a Monte-Carlo, i.e. pseudorandom, process).", - "rest": "(null)" - }, - "reverse_time": { - "param_name": "reverse_time", - "description": "Make time go backwards. To be considered very experimental!", - "rest": "(null)" - }, - "start_time": { - "param_name": "start_time", - "description": "Start time for the simulation.", - "rest": "(null)" - }, - "warmup_cpu": { - "param_name": "warmup_cpu", - "description": "Uses the CPU at maximum power the given number of seconds, prior to running normal stellar evolution.", - "rest": "Ignore" - }, - "help": { - "param_name": "help", - "description": "Display help pages. Usage: --help <help topic>.", - "rest": "Ignore" - }, - "help_all": { - "param_name": "help_all", - "description": "Display all help pages.", - "rest": "Ignore" - }, - "list_args": { - "param_name": "list_args", - "description": "Display list of arguments with their default values. Useful for batchmode.", - "rest": "Ignore" - } - } - } - } -} \ No newline at end of file diff --git a/tests/population/test_population.py b/tests/population/test_population.py deleted file mode 100644 index 56aea16d4..000000000 --- a/tests/population/test_population.py +++ /dev/null @@ -1,206 +0,0 @@ -import os -import json -import time -import pickle -import sys - -import matplotlib.pyplot as plt - -from binarycpython.utils.grid import Population -from binarycpython.utils.functions import ( - get_help_all, - get_help, - create_hdf5, - output_lines, -) - -### -# Script to generate BH MS systems. - - -def parse_function(self, output): - # extract info from the population instance - # TODO: think about whether this is smart. Passing around this object might be an overkill - - #################################################### - # Get some information from the grid - data_dir = self.custom_options["data_dir"] - base_filename = self.custom_options["base_filename"] - - # Check directory, make if necessary - os.makedirs(data_dir, exist_ok=True) - #################################################### - - # - seperator = " " - - # Create filename - outfilename = os.path.join(data_dir, base_filename) - - result_header = [ - "zams_mass", - "st_0", - "st_1", - "st_2", - "st_3", - "st_4", - "st_5", - "st_6", - "st_7", - "st_8", - "st_9", - "st_10", - "st_11", - "st_12", - "st_13", - "st_14", - "st_15", - ] - - mass_lost_dict = {} - for i in range(16): - mass_lost_dict["{}".format(i)] = 0 - - total_mass_lost = 0 - - # Go over the output. - for el in output_lines(output): - headerline = el.split()[0] - - # Check the header and act accordingly - if headerline == "DAVID_MASSLOSS_SN": - parameters = [ - "time", - "mass_1", - "prev_mass_1", - "zams_mass_1", - "stellar_type", - "probability", - ] - values = el.split()[1:] - - if not float(values[0]) == 0.0: - mass_lost = float(values[2]) - float(values[1]) - mass_lost_dict[values[4]] += mass_lost - - initial_mass = values[3] - - total_mass_lost += mass_lost - - result_list = [initial_mass] - for key in mass_lost_dict.keys(): - result_list.append(str(mass_lost_dict[key])) - - result_dict = self.grid_options["result_dict"] - - # This trick is necessary - # Make the mass dict and set values - result_dict["mass"] = result_dict.get("mass", {}) - mass_result = result_dict["mass"] - mass_result[initial_mass] = mass_result.get(initial_mass, 0) + total_mass_lost - result_dict["mass"] = mass_result - - result_dict["probability"] = result_dict.get("probability", 0) + 0.00002123 - - -## Set values -test_pop = Population() -test_pop.set( - C_logging_code=""" -Printf("DAVID_MASSLOSS_SN %30.12e %g %g %g %d %g\\n", - // - stardata->model.time, // 1 - stardata->star[0].mass, //2 - stardata->previous_stardata->star[0].mass, //3 - stardata->star[0].pms_mass, //4 - stardata->star[0].stellar_type, //5 - stardata->model.probability //6 - ); -""" -) - - -# Set grid variables -resolution = {"M_1": 5, "q": 5, "per": 5} - -test_pop.add_grid_variable( - name="lnm1", - longname="Primary mass", - valuerange=[1, 150], - resolution="{}".format(resolution["M_1"]), - spacingfunc="const(math.log(1), math.log(150), {})".format(resolution["M_1"]), - precode="M_1=math.exp(lnm1)", - probdist="three_part_powerlaw(M_1, 0.1, 0.5, 1.0, 150, -1.3, -2.3, -2.3)*M_1", - dphasevol="dlnm1", - parameter_name="M_1", - condition="", # Impose a condition on this grid variable. Mostly for a check for yourself -) - -test_pop.add_grid_variable( - name="q", - longname="Mass ratio", - valuerange=["0.1/M_1", 1], - resolution="{}".format(resolution["q"]), - spacingfunc="const(0.1/M_1, 1, {})".format(resolution["q"]), - probdist="flatsections(q, [{'min': 0.1/M_1, 'max': 0.8, 'height': 1}, {'min': 0.8, 'max': 1.0, 'height': 1.0}])", - dphasevol="dq", - precode="M_2 = q * M_1", - parameter_name="M_2", - condition="", # Impose a condition on this grid variable. Mostly for a check for yourself -) - -test_pop.add_grid_variable( - name="logper", - longname="log(Orbital_Period)", - valuerange=[-2, 12], - resolution="{}".format(resolution["per"]), - spacingfunc="np.linspace(-2, 12, {})".format(resolution["per"]), - precode="orbital_period = 10** logper\n", # TODO: - probdist="gaussian(logper,4.8, 2.3, -2.0, 12.0)", - parameter_name="orbital_period", - dphasevol="dln10per", -) - -########################################################################## -metallicity = 0.002 -test_pop.set( - separation=1000000000, - orbital_period=400000000, - metallicity=metallicity, - M_1=100, - M_2=5, - verbose=1, - data_dir=os.path.join(os.environ["BINARYC_DATA_ROOT"], "testing_python", "BHMS"), - base_filename="BH_MS_z{}.dat".format(metallicity), - parse_function=parse_function, - amt_cores=2, -) - -# out = test_pop.evolve_single() -# print(out) - - -# quit() -test_pop.evolve_population() - - -def handle_output(test_pop): - - # $results is a hash reference containing - # the results that were added up in parse_data() - results = test_pop.grid_options["result_dict"] - - print(results) - - # output the mass distribution - - -handle_output(test_pop) - - -# print(test_pop.grid_options['results_per_worker']) -# # Export settings: -# test_pop.export_all_info(use_datadir=True) - -# # hdf5 -# create_hdf5(test_pop.custom_options['data_dir'], name="BH_MS_z{}.hdf5".format(metallicity)) diff --git a/tests/random_tests.py b/tests/random_tests.py deleted file mode 100644 index b41d16e20..000000000 --- a/tests/random_tests.py +++ /dev/null @@ -1,6 +0,0 @@ -import binary_c_python_api -from binarycpython.utils.functions import get_help_super - - -# get_help_super(print_help=True) -get_help_super(print_help=False) -- GitLab