def _solar_like_with_disk(mass, dissipation_factor_scale, position, velocity, rotation_period, general_relativity_implementation, evolution, disk, wind_k_factor, wind_rotation_saturation): if type(evolution) not in ( posidonius.BolmontMathis2016, posidonius.Leconte2011, posidonius.Baraffe2015, posidonius.GalletBolmont2017, posidonius.NonEvolving ) and not (type(evolution) is posidonius.Baraffe1998 and mass == 1.0): raise Exception( "Evolution type should be BolmontMathis2016 Leconte2011 Baraffe1998 (mass = 0.10) Baraffe2015 GalletBolmont2017 or NonEvolving!" ) # Typical rotation period: 24 hours angular_frequency = posidonius.constants.TWO_PI / (rotation_period / 24. ) # days^-1 inclination = 0. obliquity = 0. spin = posidonius.tools.calculate_spin(angular_frequency, inclination, obliquity) radius_factor = 1. radius = radius_factor * posidonius.constants.R_SUN radius_of_gyration = 2.43e-01 # Sun love_number = 0.03 # Sun-like-star: sigmast = 4.992e-66 cgs, conversion to Msun-1.AU-2.day-1 = 3.845764022293d64 dissipation_factor = 4.992 * 3.845764e-2 # -66+64 tides = posidonius.effects.tides.CentralBody( posidonius.effects.tides.ConstantTimeLag({ "dissipation_factor_scale": dissipation_factor_scale, "dissipation_factor": dissipation_factor, "love_number": love_number, })) rotational_flattening = posidonius.effects.rotational_flattening.CentralBody( posidonius.effects.rotational_flattening.OblateSpheroid( {"love_number": love_number})) general_relativity = posidonius.effects.general_relativity.CentralBody( general_relativity_implementation) if wind_k_factor == 0: wind = posidonius.effects.wind.Disabled() else: wind = posidonius.effects.wind.Interaction({ "k_factor": wind_k_factor, "rotation_saturation": wind_rotation_saturation, }) particle = posidonius.Particle(mass, radius, radius_of_gyration, position, velocity, spin) particle.set_tides(tides) particle.set_rotational_flattening(rotational_flattening) particle.set_general_relativity(general_relativity) particle.set_wind(wind) particle.set_disk(disk) particle.set_evolution(evolution) return particle
def jupiter_like(mass, dissipation_factor_scale, position, velocity, spin, evolution): if type(evolution) not in (posidonius.LeconteChabrier2013, posidonius.NonEvolving): raise Exception( "Evolution type should be LeconteChabrier2013 or NonEvolving!") radius_factor = 10.9 # Jupiter in R_EARTH radius = radius_factor * posidonius.constants.R_EARTH radius_of_gyration = 5.04e-01 # Gas giant # Typical rotation period: 9.8 hours love_number = 0.380 # Gas giant # TODO: What k2pdelta/dissipation_factor is the recommended? #k2pdelta = 8.101852e-9 # Gas giant k2pdelta = 2.893519e-7 # Gas giant for Jupiter: 2-3d-2 s, here in day (Leconte) dissipation_factor = 2. * posidonius.constants.K2 * k2pdelta / ( 3. * np.power(radius, 5)) #dissipation_factor = 2.006*3.845764e4 // Gas giant tides = posidonius.effects.tides.OrbitingBody( posidonius.effects.tides.ConstantTimeLag({ "dissipation_factor_scale": dissipation_factor_scale, "dissipation_factor": dissipation_factor, "love_number": love_number, })) rotational_flattening = posidonius.effects.rotational_flattening.OrbitingBody( posidonius.effects.rotational_flattening.OblateSpheroid( {"love_number": love_number})) general_relativity = posidonius.effects.general_relativity.OrbitingBody() wind = posidonius.effects.wind.Disabled() disk = posidonius.effects.disk.OrbitingBody() particle = posidonius.Particle(mass, radius, radius_of_gyration, position, velocity, spin) particle.set_tides(tides) particle.set_rotational_flattening(rotational_flattening) particle.set_general_relativity(general_relativity) particle.set_wind(wind) particle.set_disk(disk) particle.set_evolution(evolution) return particle
def m_dwarf(mass, dissipation_factor_scale, position, velocity, rotation_period, general_relativity_implementation, evolution, wind_k_factor=0., wind_rotation_saturation=0.): if type(evolution) not in (posidonius.Baraffe2015, posidonius.NonEvolving) and not (type(evolution) is posidonius.Baraffe1998 and mass == 0.10): raise Exception("Evolution type should be Baraffe2015 Baraffe1998 (mass = 0.10) or NonEvolving!") # Typical rotation period: 70 hours angular_frequency = posidonius.constants.TWO_PI/(rotation_period/24.) # days^-1 inclination = 0. obliquity = 0. spin = posidonius.tools.calculate_spin(angular_frequency, inclination, obliquity) radius_factor = 0.845649342247916 radius = radius_factor * posidonius.constants.R_SUN radius_of_gyration = 4.47e-01 # M-dwarf love_number = 0.307 # M Dwarf # BD, Mdwarf: sigmast = 2.006d-60 cgs, conversion to Msun-1.AU-2.day-1 = 3.845764022293d64 dissipation_factor = 2.006*3.845764e4 # -60+64 tides = posidonius.effects.tides.CentralBody({ "dissipation_factor_scale": dissipation_factor_scale, "dissipation_factor": dissipation_factor, "love_number": love_number, }) rotational_flattening = posidonius.effects.rotational_flattening.CentralBody({"love_number": love_number}) general_relativity = posidonius.effects.general_relativity.CentralBody(general_relativity_implementation) if wind_k_factor == 0: wind = posidonius.effects.wind.Disabled() else: wind = posidonius.effects.wind.Interaction({ "k_factor": wind_k_factor, "rotation_saturation": wind_rotation_saturation, }) disk = posidonius.effects.disk.Disabled() particle = posidonius.Particle(mass, radius, radius_of_gyration, position, velocity, spin) particle.set_tides(tides) particle.set_rotational_flattening(rotational_flattening) particle.set_general_relativity(general_relativity) particle.set_wind(wind) particle.set_disk(disk) particle.set_evolution(evolution) return particle
def earth_like(mass, dissipation_factor_scale, position, velocity, spin, evolution): if type(evolution) not in (posidonius.NonEvolving, ): raise Exception("Evolution type should be NonEvolving!") # Earth-like => mass-radius relationship from Fortney 2007 radius_factor = posidonius.tools.mass_radius_relation( mass, planet_mass_type='AU', planet_percent_rock=0.70) radius = radius_factor * posidonius.constants.R_EARTH radius_of_gyration = 5.75e-01 # Earth type planet # Typical rotation period: 24 hours love_number = 0.299 # Earth fluid_love_number = 0.9532 # Earth k2pdelta = 2.465278e-3 # Terrestrial planets dissipation_factor = 2. * posidonius.constants.K2 * k2pdelta / ( 3. * np.power(radius, 5)) tides = posidonius.effects.tides.OrbitingBody( posidonius.effects.tides.ConstantTimeLag({ "dissipation_factor_scale": dissipation_factor_scale, "dissipation_factor": dissipation_factor, "love_number": love_number, })) rotational_flattening = posidonius.effects.rotational_flattening.OrbitingBody( posidonius.effects.rotational_flattening.OblateSpheroid( {"love_number": fluid_love_number})) general_relativity = posidonius.effects.general_relativity.OrbitingBody() wind = posidonius.effects.wind.Disabled() disk = posidonius.effects.disk.OrbitingBody() particle = posidonius.Particle(mass, radius, radius_of_gyration, position, velocity, spin) particle.set_tides(tides) particle.set_rotational_flattening(rotational_flattening) particle.set_general_relativity(general_relativity) particle.set_wind(wind) particle.set_disk(disk) particle.set_evolution(evolution) return particle
#'mean_molecular_weight': 2.4, #} #star_disk = posidonius.effects.disk.CentralBody(disk_properties) #star_disk = posidonius.effects.disk.OrbitingBody() star_disk = posidonius.effects.disk.Disabled() # #star_evolution = posidonius.GalletBolmont2017(star_mass) # mass = 0.30 .. 1.40 #star_evolution = posidonius.BolmontMathis2016(star_mass) # mass = 0.40 .. 1.40 #star_evolution = posidonius.Baraffe2015(star_mass) # mass = 0.01 .. 1.40 #star_evolution = posidonius.Leconte2011(star_mass) # mass = 0.01 .. 0.08 #star_evolution = posidonius.Baraffe1998(star_mass) # Sun (mass = 1.0) or M-Dwarf (mass = 0.1) #star_evolution = posidonius.LeconteChabrier2013(False) # Jupiter without dissipation of dynamical tides #star_evolution = posidonius.LeconteChabrier2013(True) # Jupiter with dissipation of dynamical tides star_evolution = posidonius.NonEvolving() # star = posidonius.Particle(star_mass, star_radius, star_radius_of_gyration, star_position, star_velocity, star_spin) star.set_tides(star_tides) star.set_rotational_flattening(star_rotational_flattening) star.set_general_relativity(star_general_relativity) star.set_wind(star_wind) star.set_disk(star_disk) star.set_evolution(star_evolution) universe.add_particle(star) ############################################################################ planet_mass_factor = 318 # [start correction] ------------------------------------------------------- # To reproduce Bolmont et al. 2015: # Mercury-T was using planet_mass as 3.00e-6 M_SUN and that's not exactly 1 M_EARTH (as accepted by IAU) # thus, to reproduce Mercury-T results the mass factor should be slighly modified: planet_mass_factor = planet_mass_factor * (
#'mean_molecular_weight': 2.4, #} #star_disk = posidonius.effects.disk.CentralBody(disk_properties) #star_disk = posidonius.effects.disk.OrbitingBody() star_disk = posidonius.effects.disk.Disabled() # #star_evolution = posidonius.GalletBolmont2017(star_mass) # mass = 0.30 .. 1.40 #star_evolution = posidonius.BolmontMathis2016(star_mass) # mass = 0.40 .. 1.40 #star_evolution = posidonius.Baraffe2015(star_mass) # mass = 0.01 .. 1.40 #star_evolution = posidonius.Leconte2011(star_mass) # mass = 0.01 .. 0.08 #star_evolution = posidonius.Baraffe1998(star_mass) # Sun (mass = 1.0) or M-Dwarf (mass = 0.1) #star_evolution = posidonius.LeconteChabrier2013(False) # Jupiter without dissipation of dynamical tides #star_evolution = posidonius.LeconteChabrier2013(True) # Jupiter with dissipation of dynamical tides star_evolution = posidonius.NonEvolving() # star = posidonius.Particle(star_mass, star_radius, star_radius_of_gyration, star_position, star_velocity, star_spin) star.set_tides(star_tides) star.set_rotational_flattening(star_rotational_flattening) star.set_general_relativity(star_general_relativity) star.set_wind(star_wind) star.set_disk(star_disk) star.set_evolution(star_evolution) universe.add_particle(star) ############################################################################ planet1_mass_factor = 1.0 # [start correction] ------------------------------------------------------- # To reproduce Bolmont et al. 2015: # Mercury-T was using planet1_mass as 3.00e-6 M_SUN and that's not exactly 1 M_EARTH (as accepted by IAU) # thus, to reproduce Mercury-T results the mass factor should be slighly modified: planet1_mass_factor = planet1_mass_factor * (
#} #star1_disk = posidonius.effects.disk.CentralBody(disk_properties) #star1_disk = posidonius.effects.disk.OrbitingBody() star1_disk = posidonius.effects.disk.Disabled() # #star1_evolution = posidonius.GalletBolmont2017(star1_mass) # mass = 0.30 .. 1.40 #star1_evolution = posidonius.BolmontMathis2016(star1_mass) # mass = 0.40 .. 1.40 #star1_evolution = posidonius.Baraffe2015(star1_mass) # mass = 0.01 .. 1.40 #star1_evolution = posidonius.Leconte2011(star1_mass) # mass = 0.01 .. 0.08 #star1_evolution = posidonius.Baraffe1998(star1_mass) # Sun (mass = 1.0) or M-Dwarf (mass = 0.1) #star1_evolution = posidonius.LeconteChabrier2013(False) # Jupiter without dissipation of dynamical tides #star1_evolution = posidonius.LeconteChabrier2013(True) # Jupiter with dissipation of dynamical tides star1_evolution = posidonius.NonEvolving() # star1 = posidonius.Particle(star1_mass, star1_radius, star1_radius_of_gyration, star1_position, star1_velocity, star1_spin) star1.set_tides(star1_tides) star1.set_rotational_flattening(star1_rotational_flattening) star1.set_general_relativity(star1_general_relativity) star1.set_wind(star1_wind) star1.set_disk(star1_disk) star1.set_evolution(star1_evolution) universe.add_particle(star1) ############################################################################ star2_mass = 1.0 # Solar masses star2_radius_factor = 0.845649342247916 star2_radius = star2_radius_factor * posidonius.constants.R_SUN star2_radius_of_gyration = 4.41e-01 # Brown dwarf
def brown_dwarf(mass, dissipation_factor_scale, position, velocity, general_relativity_implementation, evolution, wind_k_factor=0., wind_rotation_saturation=0.): rotation_period = None love_number = None if type(evolution) == posidonius.NonEvolving: rotation_period = 70.0 # hours love_number = 0.307 # BrownDwarf elif type(evolution) in (posidonius.Leconte2011, posidonius.Baraffe2015): mass = evolution._data[evolution.__class__.__name__] if mass <= 0.0101 and mass >= 0.0099: rotation_period = 8.0 love_number = 0.3790 elif mass <= 0.0121 and mass >= 0.0119: rotation_period = 13.0 love_number = 0.3780 elif mass <= 0.0151 and mass >= 0.0149: rotation_period = 19.0 love_number = 0.3760 elif mass <= 0.0201 and mass >= 0.0199: rotation_period = 24.0 love_number = 0.3690 elif mass <= 0.0301 and mass >= 0.0299: rotation_period = 30.0 love_number = 0.3550 elif mass <= 0.0401 and mass >= 0.0399: rotation_period = 36.0 love_number = 0.3420 elif mass <= 0.0501 and mass >= 0.0499: rotation_period = 41.0 love_number = 0.3330 elif mass <= 0.0601 and mass >= 0.0599: rotation_period = 47.0 love_number = 0.3250 elif mass <= 0.0701 and mass >= 0.0699: rotation_period = 53.0 love_number = 0.3110 elif mass <= 0.0721 and mass >= 0.0719: rotation_period = 58.0 love_number = 0.3080 elif mass <= 0.0751 and mass >= 0.0749: rotation_period = 64.0 love_number = 0.3070 elif mass <= 0.0801 and mass >= 0.0799: rotation_period = 70.0 love_number = 0.3070 else: raise Exception("The evolution type Leconte2011 does not support a mass of {} Msun and Baraffe2015 with higher masses is possible but then it should not be considered as a Brown Dwarf!".format(mass)) else: raise Exception("Evolution type should be Leconte2011, Baraffe2015 or NonEvolving!") angular_frequency = posidonius.constants.TWO_PI/(rotation_period/24.) # days^-1 inclination = 0. obliquity = 0. spin = posidonius.tools.calculate_spin(angular_frequency, inclination, obliquity) # BD, Mdwarf: sigmast = 2.006d-60 cgs, conversion to Msun-1.AU-2.day-1 = 3.845764022293d64 dissipation_factor = 2.006*3.845764e4 # -60+64 radius_factor = 0.845649342247916 radius = radius_factor * posidonius.constants.R_SUN radius_of_gyration = 4.41e-01 # Brown dwarf tides = posidonius.effects.tides.CentralBody({ "dissipation_factor_scale": dissipation_factor_scale, "dissipation_factor": dissipation_factor, "love_number": love_number, }) rotational_flattening = posidonius.effects.rotational_flattening.CentralBody({"love_number": love_number}) general_relativity = posidonius.effects.general_relativity.CentralBody(general_relativity_implementation) if wind_k_factor == 0: wind = posidonius.effects.wind.Disabled() else: wind = posidonius.effects.wind.Interaction({ "k_factor": wind_k_factor, "rotation_saturation": wind_rotation_saturation, }) disk = posidonius.effects.disk.Disabled() particle = posidonius.Particle(mass, radius, radius_of_gyration, position, velocity, spin) particle.set_tides(tides) particle.set_rotational_flattening(rotational_flattening) particle.set_general_relativity(general_relativity) particle.set_wind(wind) particle.set_disk(disk) particle.set_evolution(evolution) return particle