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

main_sequence.h

00001 /*
00002  * main_sequence.h: derived class for evolution of stars in the 
00003  *     core-hydrogen burning stage.
00004  *
00005  *.....................................................................
00006  *     version 1:  Jan 1994   Simon F. Portegies Zwart
00007  *     version 2:
00008  *...................................................................
00009  *     This file includes:
00010  *  1) definition of class main_sequence
00011  *
00012  *....................................................................
00013  */
00014 
00015 #ifndef    _MAIN_SEQUENCE 
00016 #   define _MAIN_SEQUENCE
00017 
00018 #include "single_star.h"
00019 //#include "proto_star.h"
00020 #include "brown_dwarf.h"
00021 #include "hyper_giant.h"
00022 #include "hertzsprung_gap.h"
00023 #include "thorne_zytkow.h"
00024 #include "helium_star.h"
00025 
00026                 // Known class declarations.
00027 class proto_star;
00028 /*-----------------------------------------------------------------------------
00029  *  main_sequence  --  a derived class for element evolution.
00030  *-----------------------------------------------------------------------------
00031  */
00032 class main_sequence : public single_star {
00033       private:
00034   
00035           real main_sequence_core_mass();
00036           real main_sequence_core_radius();
00037           void adjust_donor_age(const real mdot);
00038   
00039       public :
00040 
00041          main_sequence(node* n) : single_star(n) {}
00042          main_sequence(proto_star& p);
00043          ~main_sequence() {}
00044 
00045         stellar_type get_element_type() {return Main_Sequence;}
00046         bool remnant() {return false;}
00047         bool magnetic() {
00048           return (low_mass_star() && get_total_mass()>=
00049                   cnsts.parameters(magnetic_mass_limit))?true:false;
00050         }
00051 
00052         void adjust_next_update_age();
00053         real nucleair_evolution_timescale();
00054         void instantaneous_element();
00055         void evolve_element(const real);
00056         real bolometric_correction();
00057         void detect_spectral_features();
00058         void update_wind_constant();
00059         void update();
00060         real final_core_mass();
00061 
00062         
00063 //              Mass transfer utilities.
00064         star* subtrac_mass_from_donor(const real, real&);
00065         star* reduce_mass(const real);
00066         void adjust_accretor_age(const real, const bool);
00067         
00068 
00069 //              Mass transfer stability
00070         real zeta_adiabatic();
00071         real zeta_thermal();
00072         real gyration_radius_sq();
00073 
00074 //              Spiral in and common envelope.
00075         star* merge_elements(star*);
00076 
00077         
00078 //              Friend functions.
00079         friend brown_dwarf::brown_dwarf(main_sequence &);
00080         friend hertzsprung_gap::hertzsprung_gap(main_sequence &);
00081         friend hyper_giant::hyper_giant(main_sequence &);
00082         friend thorne_zytkow::thorne_zytkow(main_sequence &);
00083         friend helium_star::helium_star(main_sequence &);
00084       };
00085 
00086 #endif          // _MAIN_SEQUENCE
00087 
00088 
00089         //real stellar_radius(const real, const real);
00090         //real add_mass_to_accretor(const real);
00091         //real add_mass_to_accretor(real, const real);

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