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

black_hole.h

00001 /*
00002  * black_hole.h: derived class for "evolution" of black hole
00003  *
00004  *.....................................................................
00005  *    version 1:  Jan 1994   Simon F. Portegies Zwart
00006  *    version 2:
00007  *...................................................................
00008  *     This file includes:
00009  *  1) definition of class black_hole
00010  *
00011  *....................................................................
00012  */
00013 
00014 #ifndef    _BLACK_HOLE 
00015 #   define _BLACK_HOLE
00016 
00017 #include "single_star.h"
00018 
00019 class        hyper_giant;
00020 class        super_giant;
00021 class        thorne_zytkow;
00022 class        helium_giant;
00023 class        neutron_star;
00024 /*-----------------------------------------------------------------------------
00025  *  black_hole  --  a derived class for element evolution.
00026  *-----------------------------------------------------------------------------
00027  */
00028 class black_hole : public single_star {
00029       private:
00030 
00031         real suddenly_lost_mass;
00032         real black_hole_mass(const real COcore_mass);
00033 
00034       public :
00035          black_hole(hyper_giant &);
00036          black_hole(super_giant &);
00037          black_hole(thorne_zytkow &);
00038          black_hole(helium_giant &);
00039          black_hole(neutron_star &);
00040          black_hole(node* n) : single_star(n) {suddenly_lost_mass=0;}
00041 
00042          ~black_hole() {}
00043 
00044         stellar_type get_element_type() {return Black_Hole;}
00045         bool remnant() {return true;}
00046         bool hydrogen_envelope_star() {return false;}
00047         
00048                 // Member function definition.
00049          void evolve_element(const real);
00050          void update();
00051 
00052         void instantaneous_element();
00053         star* reduce_mass(const real);
00054         real accretion_limit(const real, const real);
00055         star* subtrac_mass_from_donor(const real, real&);
00056         real add_mass_to_accretor(const real);
00057         real add_mass_to_accretor(real, const real);
00058         void accrete_from_envelope(const real);
00059         star* merge_elements(star*);
00060 
00061         bool super_nova();
00062         void direct_hit();
00063         real aic_binding_energy();
00064         
00065         real gyration_radius_sq();
00066         real angular_momentum();
00067         
00068         real sudden_mass_loss();
00069 
00070         real get_radius();
00071         real get_effective_radius() {return get_radius();}
00072 
00073         // Friend functions.
00074              // poor guy.
00075    };
00076 #endif          // _BLACK_HOLE

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