00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _CONSTANTS
00025 # define _CONSTANTS
00026
00027 #include "stdinc.h"
00028
00029 #define static_cast(type, expr) (type)(expr)
00030 #define const_cast(type, expr) (type)(expr)
00031 #define reintepret_cast(type, expr) (type)(expr)
00032 #define dynamic_cast(type, expr) (type)(expr)
00033
00034 #define SEBA_VERSION 2.0
00035
00036 #define TRUE 1
00037 #define FALSE 0
00038
00039
00040
00041
00042 #define POST_AGB_TIME 0.005 // time to lose giant envelope.
00043
00044
00045 #define MEAN_KICK 450.0 // km/s
00046 #define VAR_KICK 90.0 // km/s
00047
00048
00049 #define BINARY_UPDATE_TIMESTEP 0.1 // Timestep increase for binary
00050 #define TEN_PERCENT 0.1
00051
00052
00053
00054
00055
00056
00057 enum binary_history {ms_ms = 0, bs_ms, bs_bs, he_ms, heN_ms,
00058 wr_ms, he_he, rscvn,
00059 wuma, wdxb,
00060 lmxb, mmxb, hmxb, spi, spi_2,
00061 wd_ms, wd_he, wd_wd, wd_ns, wdXns,
00062 pr_ms, pr_he, pr_st, prXst, pr_pr, prXpr,
00063 ns_ms, ns_he, ns_st, nsXst, ns_ns, nsXns, st_st,
00064 no_of_type};
00065
00066 enum Be_binaries {be_ms=0, be_he, be_wd, be_ns, no_of_be_binary};
00067
00068 enum mathematical_constant {one_third,
00069 two_third,
00070 pi,
00071 two_pi
00072 };
00073 enum physics_constants{G, gravitational_constant,
00074 C, speed_of_light,
00075 Myear, million_years,
00076 days, seconds_per_day,
00077 km_per_s, kilometer_per_second,
00078 kilometer, kilometer_in_centimeters,
00079 nucleair_efficiency
00080 };
00081
00082 enum astronomical_scale_parameter {PC, parsec,
00083 AU, astronomical_unit
00084 };
00085
00086 enum solar_parameter {Msun, solar_mass,
00087 Rsun, solar_radius,
00088 Lsun, solar_luminosity,
00089 Tsun, solar_temperature,
00090 energy_to_mass_in_internal_units
00091 };
00092
00093 enum pulsar_initial_conditions {pulsar_magnetic_field,
00094 pulsar_pulse_period,
00095 kanonical_neutron_star_radius,
00096 kanonical_neutron_star_mass,
00097 maximum_neutron_star_mass,
00098 minimum_neutron_star_mass
00099 };
00100
00101 enum stellar_mass_limits {low_mass_star_mass_limit,
00102 medium_mass_star_mass_limit,
00103 massive_star_mass_limit,
00104 upper_ZAMS_mass_for_degenerate_core,
00105 minimum_main_sequence,
00106 maximum_planet_mass,
00107 helium_dwarf_mass_limit,
00108 carbon_dwarf_mass_limit,
00109 Chandrasekar_mass,
00110
00111
00112
00113 helium2neutron_star,
00114 COcore2black_hole,
00115 core2blackhole_mass_fraction,
00116 super_giant2neutron_star,
00117 super_giant2black_hole,
00118 maximum_main_sequence,
00119 minimum_helium_star,
00120 helium_star_lifetime_fraction,
00121 helium_star_final_core_fraction
00122 };
00123
00124 enum boolean_parameter {hyper_critical,
00125 super_giant_disintegration,
00126 proto_star_to_binary,
00127 impulse_kick_for_black_holes,
00128 use_angular_momentum_gamma
00129 };
00130
00131 enum super_nova_kick_distribution {internally_decided_velocity_kick,
00132 no_velocity_kick,
00133 Maxwellian_velocity_kick,
00134 Paczynski_velocity_kick,
00135 delta_function_velocity_kick
00136 };
00137
00138 enum accretion_parameter {black_hole_accretion_limit,
00139 neutron_star_accretion_limit,
00140 white_dwarf_accretion_limit,
00141 thermo_nuclear_flash
00142 };
00143
00144 enum model_parameter {star_formation_efficiency,
00145 star_formation_timescale,
00146 magnetic_mass_limit,
00147 magnetic_braking_exponent,
00148 corotation_eccentricity,
00149 tidal_circularization_radius,
00150 core_overshoot,
00151 hydrogen_fraction,
00152 common_envelope_efficiency,
00153 envelope_binding_energy,
00154 specific_angular_momentum_loss,
00155 dynamic_mass_transfer_gamma,
00156 non_massive_star_envelope_fraction_lost,
00157 massive_star_envelope_fraction_lost,
00158 relaxation_driven_mass_loss_constant,
00159 time_independent_mass_loss_law,
00160 massive_star_mass_loss_law,
00161 Darwin_Riemann_instability_factor,
00162 homogeneous_sphere_gyration_radius_sq,
00163 radiative_star_gyration_radius_sq,
00164 convective_star_gyration_radius_sq,
00165 rejuvenation_exponent,
00166 spiral_in_time,
00167 scale_kick_to_escape_velocity
00168 };
00169
00170 enum observational_parameter {B_emission_star_mass_limit,
00171 Barium_star_mass_limit,
00172 Blue_straggler_mass_limit
00173 };
00174
00175
00176 enum safety_parameter {timestep_factor,
00177 maximum_binary_update_time_fraction,
00178 minimum_timestep,
00179 minimum_mass_step,
00180 maximum_timestep,
00181 maximum_recursive_calls
00182 };
00183
00184 enum dynamics_update_parameter {stellar_mass_update_limit,
00185 semi_major_axis_update_limit,
00186 binary_update_time_fraction
00187 };
00188
00189 static
00190 class stellar_evolution_constants {
00191 public:
00192
00193 real mathematics(mathematical_constant);
00194 real physics(physics_constants);
00195
00196 real super_nova_kick(super_nova_kick_distribution pk =
00197 internally_decided_velocity_kick,
00198 const real v_disp = 600);
00199
00200 real parameters(solar_parameter);
00201 real parameters(astronomical_scale_parameter);
00202 real parameters(pulsar_initial_conditions);
00203 real parameters(stellar_mass_limits);
00204
00205 bool parameters(boolean_parameter);
00206 real parameters(accretion_parameter);
00207 real parameters(model_parameter);
00208
00209 real parameters(observational_parameter);
00210
00211 real safety(safety_parameter);
00212
00213 real star_to_dyn(dynamics_update_parameter);
00214
00215 } cnsts;
00216
00217 #endif // _CONSTANTS
00218
00219
00220
00221