00001 #include "constants.h"
00002 #include "stdfunc.h"
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 real stellar_evolution_constants::mathematics(mathematical_constant pm) {
00013
00014 switch(pm) {
00015 case one_third: return 0.33333333333333333333;
00016 break;
00017 case two_third: return 0.66666666666666666666;
00018 break;
00019 case pi: return 3.14159265358979323846;
00020 break;
00021 case two_pi: return 6.28318530717958647692;
00022 break;
00023 default:
00024 cerr << "\nNo recognized option in "
00025 "stellar_evolution_constants::"
00026 "parameters(mathematical_constant "
00027 << pm << ")"
00028 << endl;
00029 exit(1);
00030 }
00031 }
00032
00033 real stellar_evolution_constants::physics(physics_constants pp) {
00034
00035
00036 switch(pp) {
00037 case gravitational_constant:
00038 case G: return 6.67e-8;
00039 break;
00040 case speed_of_light:
00041 case C: return 2.9979e+10;
00042 break;
00043 case million_years:
00044 case Myear: return 3.15e+13;
00045 break;
00046 case seconds_per_day:
00047 case days: return 8.6400e+4;
00048 break;
00049 case kilometer_per_second:
00050 case km_per_s: return 1.0e+5;
00051 break;
00052 case kilometer_in_centimeters:
00053 case kilometer: return 1.0e+5;
00054 break;
00055 case nucleair_efficiency: return 0.007;
00056 break;
00057
00058 default:
00059 cerr << "\nNo recognized option in "
00060 "stellar_evolution_constants::"
00061 "parameters(physics_constants "
00062 << pp << ")"
00063 << endl;
00064 exit(1);
00065 }
00066 }
00067
00068 real stellar_evolution_constants::super_nova_kick(
00069 super_nova_kick_distribution pk,
00070 const real v_disp){
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 switch(pk) {
00092 case no_velocity_kick: return 0;
00093 break;
00094 case Maxwellian_velocity_kick: return
00095 random_maxwellian_velocity(v_disp);
00096 break;
00097 case internally_decided_velocity_kick:
00098 case Paczynski_velocity_kick: return
00099 random_paczynski_velocity(v_disp);
00100 break;
00101 case delta_function_velocity_kick: return v_disp;
00102 break;
00103 default:
00104 cerr << "\nNo recognized option in "
00105 "stellar_evolution_constants::"
00106 "super_nova_kick(super_nova_kick_distribution "
00107 << pk << ")"
00108 << endl;
00109 exit(1);
00110 }
00111 }
00112
00113 real stellar_evolution_constants::parameters(astronomical_scale_parameter pa) {
00114
00115
00116 switch(pa) {
00117 case PC:
00118 case parsec: return 3.0857e+18;
00119 break;
00120 case AU:
00121 case astronomical_unit: return 1.496e+13;
00122 break;
00123 default:
00124 cerr << "\nNo recognized option in "
00125 "stellar_evolution_constants::"
00126 "parameters(astronomical_scale_parameter "
00127 << pa << ")"
00128 << endl;
00129 exit(1);
00130 }
00131 }
00132
00133 real stellar_evolution_constants::parameters(solar_parameter ps) {
00134
00135
00136 switch(ps) {
00137 case solar_mass:
00138 case Msun: return 1.989e+33;
00139 break;
00140 case solar_radius:
00141 case Rsun: return 6.96e+10;
00142 break;
00143 case solar_luminosity:
00144 case Lsun: return 3.862e+33;
00145 break;
00146 case solar_temperature:
00147 case Tsun: return 5770;
00148 break;
00149 case energy_to_mass_in_internal_units: return
00150 cnsts.physics(nucleair_efficiency)
00151 * pow(cnsts.physics(C), 2)
00152 * cnsts.parameters(solar_mass)
00153 / (cnsts.parameters(solar_luminosity) *
00154 cnsts.physics(Myear));
00155 break;
00156 default:
00157 cerr << "\nNo recognized option in "
00158 "stellar_evolution_constants::"
00159 "parameters(solar_parameter "
00160 << ps << ")"
00161 << endl;
00162 exit(1);
00163 }
00164 }
00165
00166 real stellar_evolution_constants::parameters(pulsar_initial_conditions pp) {
00167
00168
00169 switch(pp) {
00170 case pulsar_magnetic_field: return 12;
00171 break;
00172 case pulsar_pulse_period: return 0.1;
00173 break;
00174 case kanonical_neutron_star_radius: return 1.5e-5;
00175 break;
00176 case kanonical_neutron_star_mass: return 1.34;
00177 break;
00178 case maximum_neutron_star_mass: return 2.0;
00179 break;
00180 case minimum_neutron_star_mass: return 0.0925;
00181 break;
00182 default:
00183 cerr << "\nNo recognized option in "
00184 "stellar_evolution_constants::"
00185 "parameters(pulsar_initial_conditions "
00186 << pp << ")"
00187 << endl;
00188 exit(1);
00189 }
00190 }
00191
00192 real stellar_evolution_constants::parameters(stellar_mass_limits pm) {
00193
00194
00195
00196 switch(pm) {
00197 case low_mass_star_mass_limit: return 1.5;
00198 break;
00199 case medium_mass_star_mass_limit: return 15;
00200 break;
00201 case massive_star_mass_limit: return 25;
00202 break;
00203 case upper_ZAMS_mass_for_degenerate_core: return 2.3;
00204 break;
00205 case minimum_main_sequence: return 0.075;
00206 break;
00207 case maximum_planet_mass: return 0.00314;
00208 break;
00209 case helium_dwarf_mass_limit: return 0.45;
00210 break;
00211 case carbon_dwarf_mass_limit: return 1.2;
00212 break;
00213 case Chandrasekar_mass: return 1.44;
00214 break;
00215 case helium2neutron_star: return 2.2;
00216 break;
00217 case COcore2black_hole: return 5;
00218
00219 break;
00220 case super_giant2neutron_star: return 8;
00221 break;
00222 case super_giant2black_hole: return 25;
00223 break;
00224 case maximum_main_sequence: return 100;
00225 break;
00226 case minimum_helium_star: return 0.33;
00227 break;
00228 case helium_star_lifetime_fraction: return 0.9;
00229 break;
00230 case helium_star_final_core_fraction: return 0.80;
00231 break;
00232 default:
00233 cerr << "\nNo recognized option in "
00234 "stellar_evolution_constants::"
00235 "parameters(stellar_mass_limits "
00236 << pm << ")"
00237 << endl;
00238 exit(1);
00239 }
00240 }
00241
00242
00243 bool stellar_evolution_constants::parameters(boolean_parameter pb) {
00244
00245 switch(pb) {
00246 case hyper_critical: return false;
00247 break;
00248
00249 case super_giant_disintegration: return false;
00250 break;
00251 case proto_star_to_binary: return false;
00252 break;
00253 default:
00254 cerr << "\nNo recognized option in "
00255 "stellar_evolution_constants::"
00256 "parameters(boolean_parameter "
00257 << pb << ")"
00258 << endl;
00259 exit(1);
00260 }
00261 }
00262
00263 real stellar_evolution_constants::parameters(accretion_parameter pa) {
00264
00265 switch(pa) {
00266 case black_hole_accretion_limit: return 0.1;
00267 break;
00268 case neutron_star_accretion_limit: return 0.05;
00269 break;
00270 case white_dwarf_accretion_limit: return 0.01;
00271 break;
00272 case thermo_nuclear_flash: return 1;
00273 break;
00274 default:
00275 cerr << "\nNo recognized option in "
00276 "stellar_evolution_constants::"
00277 "parameters(accretion_parameter "
00278 << pa << ")"
00279 << endl;
00280 exit(1);
00281
00282 }
00283 }
00284
00285
00286 real stellar_evolution_constants::parameters(model_parameter pm) {
00287
00288 switch(pm) {
00289 case star_formation_efficiency: return 1.0;
00290 break;
00291 case star_formation_timescale: return 1.0;
00292 break;
00293 case magnetic_mass_limit: return 0.7;
00294 break;
00295 case magnetic_braking_exponent: return 2.5;
00296 break;
00297 case corotation_eccentricity: return 0.001;
00298 break;
00299 case tidal_circularization_radius: return 5.0;
00300 break;
00301 case core_overshoot: return 0.125;
00302 break;
00303 case hydrogen_fraction: return 0.7;
00304 break;
00305 case common_envelope_efficiency: return 4;
00306 break;
00307 case envelope_binding_energy: return 0.5;
00308 break;
00309 case specific_angular_momentum_loss: return 3.;
00310 break;
00311 case dynamic_mass_transfer_gamma: return 1.75;
00312 break;
00313 case non_massive_star_envelope_fraction_lost: return 0.03;
00314 break;
00315 case massive_star_envelope_fraction_lost: return 0.9;
00316 break;
00317 case relaxation_driven_mass_loss_constant: return 1;
00318 break;
00319 case massive_star_mass_loss_law: return 6.8;
00320 break;
00321 case time_independent_mass_loss_law: return 1;
00322 break;
00323 case Darwin_Riemann_instability_factor: return
00324 cnsts.mathematics(one_third);
00325 break;
00326 case homogeneous_sphere_gyration_radius_sq: return 0.4;
00327 break;
00328 case radiative_star_gyration_radius_sq: return 0.03;
00329 break;
00330 case convective_star_gyration_radius_sq: return 0.2;
00331 break;
00332 case rejuvenation_exponent: return 1;
00333 break;
00334 case spiral_in_time: return 0.0005;
00335 break;
00336 default:
00337 cerr << "\nNo recognized option in "
00338 "stellar_evolution_constants::"
00339 "parameters(model_parameter "
00340 << pm << ")"
00341 << endl;
00342 exit(1);
00343 }
00344 }
00345
00346
00347 real stellar_evolution_constants::parameters(observational_parameter pm) {
00348
00349 switch(pm) {
00350 case B_emission_star_mass_limit: return 0.1;
00351 break;
00352 case Barium_star_mass_limit: return 0.01;
00353 break;
00354 case Blue_straggler_mass_limit: return 0;
00355 break;
00356 default:
00357 cerr << "\nNo recognized option in "
00358 "stellar_evolution_constants::"
00359 "parameters(observational_parameter "
00360 << pm << ")"
00361 << endl;
00362 exit(1);
00363 }
00364 }
00365
00366
00367
00368 real stellar_evolution_constants::safety(safety_parameter ps) {
00369
00370 switch(ps) {
00371 case timestep_factor: return 0.01;
00372 break;
00373 case maximum_binary_update_time_fraction: return 0.9;
00374 break;
00375 case minimum_timestep: return 1.e-11;
00376 break;
00377 case minimum_mass_step: return 1.e-5;
00378 break;
00379 case maximum_timestep: return 1;
00380 break;
00381 case maximum_recursive_calls: return 1000;
00382 break;
00383 default:
00384 cerr << "\nNo recognized option in "
00385 "stellar_evolution_constants::"
00386 "parameters(safety_parameter "
00387 << ps << ")"
00388 << endl;
00389 exit(1);
00390 }
00391 }
00392
00393 real stellar_evolution_constants::star_to_dyn(dynamics_update_parameter dup) {
00394
00395 switch(dup) {
00396 case stellar_mass_update_limit: return 0.001;
00397 break;
00398 case semi_major_axis_update_limit: return 0.001;
00399 break;
00400 case binary_update_time_fraction: return 0.001;
00401 break;
00402 default:
00403 cerr << "\nNo recognized option in "
00404 "stellar_evolution_constants::"
00405 "star_to_dyn(dynamica_update_parameter "
00406 << dup << ")"
00407 << endl;
00408 exit(1);
00409 }
00410 }
00411
00412
00413
00414
00415
00416