00001 /* 00002 * horizontal_branch.h: derived class for core-helium burning stars. 00003 * 00004 *..................................................................... 00005 * version 1: Jan 1994 Simon F. Portegies Zwart 00006 * version 1.1: Jan 1998 Simon F. Portegies Zwart 00007 *................................................................... 00008 * This file includes: 00009 * 1) definition of class horizontal_branch 00010 * 00011 *.................................................................... 00012 */ 00013 00014 #ifndef _HORIZONTAL_BRANCH 00015 # define _HORIZONTAL_BRANCH 00016 00017 #include "single_star.h" 00018 #include "super_giant.h" 00019 #include "helium_star.h" 00020 00021 class hertzsprung_gap; 00022 class sub_giant; 00023 class single_star; 00024 00025 /*----------------------------------------------------------------------------- 00026 * horizontal_branch -- a derived class for element evolution. 00027 *----------------------------------------------------------------------------- 00028 */ 00029 class horizontal_branch : public single_star { 00030 public : 00031 00032 horizontal_branch(sub_giant&); 00033 horizontal_branch(hertzsprung_gap&); 00034 horizontal_branch(node* n) : single_star(n) {} 00035 ~horizontal_branch() {} 00036 00037 stellar_type get_element_type() {return Horizontal_Branch;} 00038 bool giant_star() {return true;} 00039 bool star_with_COcore() {return true;} 00040 00041 void instantaneous_element(); 00042 void evolve_element(const real); 00043 void evolve_core_mass(const real dt); 00044 00045 // Mass transfer utilities. 00046 star* reduce_mass(const real); 00047 star* subtrac_mass_from_donor(const real, real&); 00048 void adjust_accretor_age(const real, const bool); 00049 void adjust_next_update_age(); 00050 void update_wind_constant(); 00051 void update(); 00052 00053 // Mass transfer stability 00054 real zeta_adiabatic(); 00055 real zeta_thermal(); 00056 real gyration_radius_sq(); 00057 00058 // Friend constructors 00059 friend super_giant::super_giant(horizontal_branch &); 00060 friend helium_star::helium_star(horizontal_branch &); 00061 }; 00062 #endif // _HORIZONTAL_BRANCH 00063 00064 // void adjust_initial_star(); 00065 // real stellar_radius(const real, const real); 00066