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