00001 /* 00002 * helium_star.h: derived class for evolution of naked helium core 00003 * burning stars. 00004 * 00005 *..................................................................... 00006 * version 1: Jan 1994 Simon F. Portegies Zwart 00007 * version 2: 00008 *................................................................... 00009 * This file includes: 00010 * 1) definition of class helium_star 00011 * 00012 *.................................................................... 00013 */ 00014 00015 #ifndef _HELIUM_STAR 00016 # define _HELIUM_STAR 00017 00018 #include "single_star.h" 00019 #include "white_dwarf.h" 00020 #include "helium_giant.h" 00021 00022 class main_sequence; 00023 class hyper_giant; 00024 class hertzsprung_gap; 00025 class sub_giant; 00026 class horizontal_branch; 00027 00028 /*----------------------------------------------------------------------------- 00029 * helium_star -- a derived class for element evolution. 00030 *----------------------------------------------------------------------------- 00031 */ 00032 class helium_star : public single_star { 00033 private : 00034 00035 real final_core_mass; 00036 00037 real CO_core_mass(); 00038 00039 public : 00040 00041 helium_star(main_sequence &); 00042 helium_star(hyper_giant &); 00043 helium_star(hertzsprung_gap &); 00044 helium_star(sub_giant &); 00045 helium_star(horizontal_branch &); 00046 helium_star(node* n) : single_star(n) { 00047 final_core_mass=-1; 00048 } 00049 00050 ~helium_star() {} 00051 00052 bool star_with_COcore() {return true;} 00053 00054 stellar_type get_element_type(); 00055 00056 void adjust_next_update_age(); 00057 void instantaneous_element(); 00058 void evolve_element(const real); 00059 void update(); 00060 void stellar_wind(const real); 00061 void update_wind_constant(); 00062 void create_remnant(); 00063 bool hydrogen_envelope_star() {return false;} 00064 real temperature(); 00065 00066 // Mass transfer utilities. 00067 real accretion_limit(const real, const real); 00068 star* subtrac_mass_from_donor(const real, real&); 00069 star* reduce_mass(const real); 00070 real add_mass_to_accretor(const real); 00071 real add_mass_to_accretor(real, const real); 00072 void adjust_accretor_age(const real, const bool=true); 00073 00074 // Stability rourines. 00075 real zeta_adiabatic(); 00076 real zeta_thermal(); 00077 real gyration_radius_sq(); 00078 00079 // not private because of super_giant::initial_CO_core_mass() 00080 real final_CO_core_mass(const real initial_mass); 00081 00082 friend helium_giant::helium_giant(helium_star &); 00083 friend white_dwarf::white_dwarf(helium_star &); 00084 }; 00085 #endif // _HELIUM_STAR