00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef _MAIN_SEQUENCE
00016 # define _MAIN_SEQUENCE
00017
00018 #include "single_star.h"
00019
00020 #include "brown_dwarf.h"
00021 #include "hyper_giant.h"
00022 #include "hertzsprung_gap.h"
00023 #include "thorne_zytkow.h"
00024 #include "helium_star.h"
00025
00026
00027 class proto_star;
00028
00029
00030
00031
00032 class main_sequence : public single_star {
00033 private:
00034
00035 real main_sequence_core_mass();
00036 real main_sequence_core_radius();
00037 void adjust_donor_age(const real mdot);
00038
00039 public :
00040
00041 main_sequence(node* n) : single_star(n) {}
00042 main_sequence(proto_star& p);
00043 ~main_sequence() {}
00044
00045 stellar_type get_element_type() {return Main_Sequence;}
00046 bool remnant() {return false;}
00047 bool magnetic() {
00048 return (low_mass_star() && get_total_mass()>=
00049 cnsts.parameters(magnetic_mass_limit))?true:false;
00050 }
00051
00052 void adjust_next_update_age();
00053 real nucleair_evolution_timescale();
00054 void instantaneous_element();
00055 void evolve_element(const real);
00056 real bolometric_correction();
00057 void detect_spectral_features();
00058 void update_wind_constant();
00059 void update();
00060 real final_core_mass();
00061
00062
00063
00064 star* subtrac_mass_from_donor(const real, real&);
00065 star* reduce_mass(const real);
00066 void adjust_accretor_age(const real, const bool);
00067
00068
00069
00070 real zeta_adiabatic();
00071 real zeta_thermal();
00072 real gyration_radius_sq();
00073
00074
00075 star* merge_elements(star*);
00076
00077
00078
00079 friend brown_dwarf::brown_dwarf(main_sequence &);
00080 friend hertzsprung_gap::hertzsprung_gap(main_sequence &);
00081 friend hyper_giant::hyper_giant(main_sequence &);
00082 friend thorne_zytkow::thorne_zytkow(main_sequence &);
00083 friend helium_star::helium_star(main_sequence &);
00084 };
00085
00086 #endif // _MAIN_SEQUENCE
00087
00088
00089
00090
00091