00001 /* 00002 * white_dwarf.h: derived class for white dwarfs 00003 * 00004 *..................................................................... 00005 * version 1: Jan 1994 Simon F. Portegies Zwart 00006 * version 2: 00007 *................................................................... 00008 * This file includes: 00009 * 1) definition of class white_dwarf 00010 * 00011 *.................................................................... 00012 */ 00013 00014 #ifndef _WHITE_DWARF 00015 # define _WHITE_DWARF 00016 00017 #include "single_star.h" 00018 #include "neutron_star.h" 00019 00020 class hertzsprung_gap; 00021 class super_giant; 00022 class sub_giant; 00023 class helium_star; 00024 class helium_giant; 00025 00026 /*----------------------------------------------------------------------------- 00027 * white_dwarf -- a derived class for element evolution. 00028 *----------------------------------------------------------------------------- 00029 */ 00030 class white_dwarf : public single_star { 00031 public : 00032 00033 white_dwarf(hertzsprung_gap &); 00034 white_dwarf(sub_giant &); 00035 white_dwarf(super_giant &); 00036 white_dwarf(helium_star &); 00037 white_dwarf(helium_giant &); 00038 white_dwarf(node* n) : single_star(n) {} 00039 00040 ~white_dwarf() {} 00041 00042 stellar_type get_element_type(); 00043 bool remnant() {return true;} 00044 bool hydrogen_envelope_star() {return false;} 00045 00046 void instantaneous_element(); 00047 void evolve_element(const real); 00048 00049 void update(); 00050 void thermo_nucleair_flash(const real); 00051 void nova(const real); 00052 void common_envelope(const real); 00053 00054 // Mass transfer utilities. 00055 star* reduce_mass(const real); 00056 star* subtrac_mass_from_donor(const real, real&); 00057 real accretion_limit(const real, const real); 00058 real minimum_steady_burning(const real); 00059 real maximum_steady_burning(const real); 00060 real add_mass_to_accretor(const real); 00061 real add_mass_to_accretor(real, const real); 00062 void adjust_accretor_age(const real, const bool=true); 00063 void adjust_next_update_age() {/* do nothing */} 00064 void accrete_from_envelope(const real); 00065 00066 real white_dwarf_radius(real mass, real time); 00067 00068 star* merge_elements(star*); 00069 00070 // Mass transfer stability 00071 real zeta_thermal(); 00072 real gyration_radius_sq(); 00073 00074 friend neutron_star::neutron_star(white_dwarf&); 00075 }; 00076 00077 #endif // _WHITE_DWARF 00078