00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef _GIANT
00016 # define _GIANT
00017
00018 #include "single_star.h"
00019 #include "horizontal_branch.h"
00020 #include "super_giant.h"
00021 #include "helium_star.h"
00022
00023
00024 class sub_giant;
00025
00026
00027
00028
00029
00030 class giant : public single_star {
00031 protected :
00032
00033 public :
00034
00035
00036 giant(sub_giant &);
00037 giant(node* n) : single_star(n) {}
00038
00039 ~giant() {}
00040
00041 stellar_type get_element_type() {return Giant;}
00042
00043
00044 void adjust_initial_star();
00045 void evolve_element(const real);
00046 real stellar_radius(const real, const real);
00047
00048 star* reduce_donor_mass(const real);
00049 star* subtrac_mass_from_donor(const real, real&);
00050 void adjust_accretor_age(const real);
00051 void adjust_next_update_age();
00052
00053
00054
00055
00056
00057 friend horizontal_branch::horizontal_branch(giant &);
00058 friend super_giant::super_giant(giant &);
00059 friend helium_star::helium_star(giant &);
00060 };
00061 #endif // _GIANT