00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef _HELIUM_GIANT
00015 # define _HELIUM_GIANT
00016
00017 #include "single_star.h"
00018 #include "disintegrated.h"
00019 #include "white_dwarf.h"
00020 #include "neutron_star.h"
00021 #include "black_hole.h"
00022
00023
00024 class helium_star;
00025 class super_giant;
00026
00027
00028
00029
00030
00031 class helium_giant : public single_star {
00032 private:
00033
00034 real CO_core_mass();
00035
00036 public :
00037
00038 helium_giant(super_giant &);
00039 helium_giant(helium_star &);
00040 ~helium_giant() {}
00041
00042 stellar_type get_element_type();
00043 bool giant_star();
00044 bool remnant();
00045 bool hydrogen_envelope_star() {return false;}
00046 bool star_with_COcore() {return true;}
00047
00048 void evolve_element(const real);
00049 void instantaneous_element();
00050 void stellar_wind(const real);
00051 void update();
00052 void update_wind_constant();
00053 real temperature();
00054
00055 void create_remnant();
00056 star* reduce_mass(const real);
00057 star* subtrac_mass_from_donor(const real, real&);
00058 real accretion_limit(const real, const real);
00059 real add_mass_to_accretor(const real);
00060 real add_mass_to_accretor(real, const real);
00061
00062 void adjust_accretor_age(const real, const bool=true);
00063 void adjust_next_update_age();
00064
00065 real zeta_adiabatic();
00066 real zeta_thermal();
00067 real gyration_radius_sq();
00068
00069 friend disintegrated::disintegrated(helium_giant &);
00070 friend white_dwarf::white_dwarf(helium_giant &);
00071 friend neutron_star::neutron_star(helium_giant &);
00072 friend black_hole::black_hole(helium_giant &);
00073 };
00074 #endif // _HELIUM_GIANT