diff --git a/binarycpython/utils/grid.py b/binarycpython/utils/grid.py index 75998803213d3d0daca6963adb8bcf5dc218598d..13a9f1729a4f99f8c5a523249a3093060ddb91e3 100644 --- a/binarycpython/utils/grid.py +++ b/binarycpython/utils/grid.py @@ -2106,9 +2106,13 @@ class Population: # TODO: cleanup custom logging code. # Also remove the rest of the contents - keys_moecache = list(Moecache.keys()) - for key in keys_moecache: - del Moecache[key] + # + # Please do NOT delete the Moecache here: it's + # required to be there when the const_dt spacing + # function is used. +# keys_moecache = list(Moecache.keys()) +# for key in keys_moecache: +# del Moecache[key] ################################################### # Grid code functions @@ -2373,8 +2377,14 @@ class Population: # n that case we need another local variable which will prevent it from being run but will track those parameters # Add phasevol check action: self._add_code( - 'print("Grid generator: phasevol_{} <= 0! (this=",{}_this,", next=",{}_next,") Skipping current sample.")'.format( - grid_variable["name"], grid_variable["name"], grid_variable["name"] + 'print("Grid generator: phasevol_{} <= 0! (this=",{}_this,"=",sampled_values_{}[{}_this],", next=",{}_next,"=",sampled_values_{}[{}_next],") Skipping current sample.")'.format( + grid_variable["name"], + grid_variable["name"], + grid_variable["name"], + grid_variable["name"], + grid_variable["name"], + grid_variable["name"], + grid_variable["name"] ) + "\n", "continue\n", @@ -4178,7 +4188,8 @@ class Population: parameter_name="M_1", longname="Primary mass", resolution="options['resolutions']['M'][0]", - spacingfunc="const(np.log({}), np.log({}), {})".format( + spacingfunc=self.grid_options["Moe2017_options"]['spacingfuncs']['M'][0] or + "const(np.log({}), np.log({}), {})".format( self.grid_options["Moe2017_options"]["ranges"]["M"][0], self.grid_options["Moe2017_options"]["ranges"]["M"][1], self.grid_options["Moe2017_options"]["resolutions"]["M"][0], @@ -4216,7 +4227,8 @@ class Population: self.grid_options["Moe2017_options"]["ranges"]["logP"][0], self.grid_options["Moe2017_options"]["ranges"]["logP"][1], ], - spacingfunc="const({}, {}, {})".format( + spacingfunc=self.grid_options["Moe2017_options"]['spacingfuncs']["logP"][0] or + "const({}, {}, {})".format( self.grid_options["Moe2017_options"]["ranges"]["logP"][0], self.grid_options["Moe2017_options"]["ranges"]["logP"][1], self.grid_options["Moe2017_options"]["resolutions"]["logP"][0], @@ -4250,7 +4262,8 @@ qmax=maximum_mass_ratio_for_RLOF(M_1, orbital_period) M_2 = q * M_1 sep = calc_sep_from_period(M_1, M_2, orbital_period) """, - spacingfunc="const({}, {}, {})".format( + spacingfunc=self.grid_options["Moe2017_options"]["spacingfuncs"]["M"][1] or + "const({}, {}, {})".format( self.grid_options["Moe2017_options"]["ranges"]["q"][0] if self.grid_options["Moe2017_options"] .get("ranges", {}) @@ -4284,7 +4297,8 @@ sep = calc_sep_from_period(M_1, M_2, orbital_period) ], # Just fail if not defined. self.grid_options["Moe2017_options"]["ranges"]["ecc"][1], ], - spacingfunc="const({}, {}, {})".format( + spacingfunc=self.grid_options["Moe2017_options"]["spacingfuncs"]['ecc'][0] or + "const({}, {}, {})".format( self.grid_options["Moe2017_options"]["ranges"]["ecc"][ 0 ], # Just fail if not defined. @@ -4314,7 +4328,8 @@ sep = calc_sep_from_period(M_1, M_2, orbital_period) self.grid_options["Moe2017_options"]["ranges"]["logP"][0], self.grid_options["Moe2017_options"]["ranges"]["logP"][1], ], - spacingfunc="const({}, {}, {})".format( + spacingfunc=self.grid_options["Moe2017_options"]["spacingfuncs"]["logP"][1] or + "const({}, {}, {})".format( self.grid_options["Moe2017_options"]["ranges"]["logP"][0], self.grid_options["Moe2017_options"]["ranges"]["logP"][1], self.grid_options["Moe2017_options"]["resolutions"]["logP"][1], @@ -4354,7 +4369,8 @@ M_3 = q2 * (M_1 + M_2) sep2 = calc_sep_from_period((M_1+M_2), M_3, orbital_period_triple) eccentricity2=0 """, - spacingfunc="const({}, {}, {})".format( + spacingfunc=self.grid_options["Moe2017_options"]["spacingfuncs"]["M"][2] or + "const({}, {}, {})".format( self.grid_options["Moe2017_options"]["ranges"]["q"][0] if self.grid_options["Moe2017_options"] .get("ranges", {}) @@ -4388,7 +4404,8 @@ eccentricity2=0 ], # Just fail if not defined. self.grid_options["Moe2017_options"]["ranges"]["ecc"][1], ], - spacingfunc="const({}, {}, {})".format( + spacingfunc=self.grid_options["Moe2017_options"]["spacingfuncs"]["ecc"][1] or + "const({}, {}, {})".format( self.grid_options["Moe2017_options"]["ranges"]["ecc"][ 0 ], # Just fail if not defined. @@ -4417,7 +4434,8 @@ eccentricity2=0 self.grid_options["Moe2017_options"]["ranges"]["logP"][0], self.grid_options["Moe2017_options"]["ranges"]["logP"][1], ], - spacingfunc="const({}, {}, {})".format( + spacingfunc=self.grid_options["Moe2017_options"]["spacingfuncs"]["logP"][2] or + "const({}, {}, {})".format( self.grid_options["Moe2017_options"]["ranges"]["logP"][0], self.grid_options["Moe2017_options"]["ranges"]["logP"][1], self.grid_options["Moe2017_options"]["resolutions"]["logP"][2], @@ -4458,7 +4476,8 @@ M_4 = q3 * M_3 sep3 = calc_sep_from_period((M_3), M_4, orbital_period_quadruple) eccentricity3=0 """, - spacingfunc="const({}, {}, {})".format( + spacingfunc=self.grid_options["Moe2017_options"]["spacingfuncs"]["M"][3] or + "const({}, {}, {})".format( self.grid_options["Moe2017_options"]["ranges"]["q"][0] if self.grid_options["Moe2017_options"] .get("ranges", {}) @@ -4492,7 +4511,8 @@ eccentricity3=0 ], # Just fail if not defined. self.grid_options["Moe2017_options"]["ranges"]["ecc"][1], ], - spacingfunc="const({}, {}, {})".format( + spacingfunc=self.grid_options["Moe2017_options"]["spacingfuncs"]["ecc"][2] or + "const({}, {}, {})".format( self.grid_options["Moe2017_options"]["ranges"]["ecc"][ 0 ], # Just fail if not defined. diff --git a/binarycpython/utils/grid_options_defaults.py b/binarycpython/utils/grid_options_defaults.py index a1d05e9ddf87c99a6a2b76f8166687394a61ecce..7fc2cb7222bf05e3ec8a45439dc34bfb7b8aa9c0 100644 --- a/binarycpython/utils/grid_options_defaults.py +++ b/binarycpython/utils/grid_options_defaults.py @@ -535,6 +535,11 @@ moe_di_stefano_default_options = { 0, # e3 (quadruple eccentricity) currently unused ], }, + 'spacingfuncs': { + 'M' : [None, None, None, None], + 'logP' : [None, None, None], + 'ecc' : [None, None, None], + }, "ranges": { # stellar masses (Msun) "M": [