Skip to content
Snippets Groups Projects
Commit 257ded2e authored by David Hendriks's avatar David Hendriks
Browse files

added functions to calculate minimum period and separation for which RLOF just...

added functions to calculate minimum period and separation for which RLOF just does not occur on zams
parent ab7bf5fd
No related branches found
No related tags found
No related merge requests found
......@@ -16,12 +16,75 @@ Tasks:
"""
import math
import re
from typing import Union
from binarycpython import _binary_c_bindings
from binarycpython.utils.functions import create_arg_string
AURSUN = 2.150445198804013386961742071435e02
YEARDY = 3.651995478818308811241877265275e02
def minimum_period_for_RLOF(M1, M2, metallicity, store_memaddr=-1):
"""
Wrapper function for _binary_c_bindings.return_minimum_orbit_for_RLOF
Handles the output and returns the minimum orbital period at which RLOF just does not occur at zams
Args:
M1: Primary mass in solar mass
M2: Secondary mass in solar mass
metallicity: metallicity
store_memaddr (optional): store memory adress
Returns:
minimum orbital_period that just does not cause a RLOF at ZAMS
"""
bse_dict = {"M_1": M1, "M_2": M2, "metallicity": metallicity, "minimum_orbital_period_for_instant_RLOF": 1, "minimum_separation_for_instant_RLOF": 1}
argstring = "binary_c " + create_arg_string(bse_dict)
output = _binary_c_bindings.return_minimum_orbit_for_RLOF(argstring, store_memaddr)
minimum_period = float(re.search('MINIMUM PERIOD (.*)', output).group(1))
return minimum_period
print(minimum_period_for_RLOF(10, 5, 0.02))
def minimum_separation_for_RLOF(M1, M2, metallicity, store_memaddr=-1):
"""
Wrapper function for _binary_c_bindings.return_minimum_orbit_for_RLOF
Handles the output and returns the minimum separation at which RLOF just does not occur at ZAMS
Args:
M1: Primary mass in solar mass
M2: Secondary mass in solar mass
metallicity: metallicity
store_memaddr (optional): store memory adress
Returns:
minimum separation that just does not cause a RLOF at ZAMS
"""
bse_dict = {"M_1": M1, "M_2": M2, "metallicity": metallicity, "minimum_orbital_period_for_instant_RLOF": 1, "minimum_separation_for_instant_RLOF": 1}
argstring = "binary_c " + create_arg_string(bse_dict)
output = _binary_c_bindings.return_minimum_orbit_for_RLOF(argstring, store_memaddr)
minimum_separation = float(re.search('MINIMUM SEPARATION (.*)', output).group(1))
return minimum_separation
# print(minimum_separation_for_RLOF(10, 5, 0.02))
def calc_period_from_sep(
M1: Union[int, float], M2: Union[int, float], sep: Union[int, float]
) -> Union[int, float]:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment