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