00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef _HERTZSPRUNG_GAP
00015 # define _HERTZSPRUNG_GAP
00016
00017 #include "single_star.h"
00018 #include "sub_giant.h"
00019 #include "horizontal_branch.h"
00020 #include "helium_star.h"
00021
00022 class main_sequence;
00023
00024
00025
00026
00027
00028 class hertzsprung_gap : public single_star
00029 {
00030 public :
00031 hertzsprung_gap(main_sequence &);
00032 hertzsprung_gap(node* n) : single_star(n) {}
00033 ~hertzsprung_gap() {}
00034
00035 stellar_type get_element_type() {return Hertzsprung_Gap;}
00036 bool giant_star() {return true;}
00037
00038 bool magnetic() {
00039 return (low_mass_star() && get_total_mass()>=
00040 cnsts.parameters(magnetic_mass_limit))?true:false;
00041 }
00042
00043 void instantaneous_element();
00044 void evolve_element(const real);
00045 real gyration_radius_sq();
00046
00047
00048 star* reduce_mass(const real);
00049 star* subtrac_mass_from_donor(const real, real&);
00050 void adjust_accretor_age(const real, const bool);
00051 void adjust_next_update_age();
00052 void update_wind_constant();
00053
00054
00055 real zeta_adiabatic();
00056 real zeta_thermal();
00057
00058
00059 real TAMS_helium_core_mass();
00060 void evolve_core_mass(const real dt);
00061
00062
00063 void detect_spectral_features();
00064
00065
00066
00067
00068 friend sub_giant::sub_giant(hertzsprung_gap &);
00069 friend horizontal_branch::horizontal_branch(hertzsprung_gap &);
00070 friend helium_star::helium_star(hertzsprung_gap &);
00071 friend white_dwarf::white_dwarf(hertzsprung_gap &);
00072 };
00073
00074 #endif // _HERTZSPRUNG_GAP
00075
00076
00077