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