Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

helium_star.h

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

Generated on Wed Jul 20 12:43:36 2005 for Starlab by  doxygen 1.4.3