00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef _PLANET
00016 # define _PLANET
00017
00018
00019 #include "stdinc.h"
00020 #include "constants.h"
00021 #include "star.h"
00022
00023
00024
00025 class base_element;
00026
00027
00028
00029
00030
00031 class planet : public star {
00032 protected :
00033
00034 public :
00035
00036 planet() : star() {}
00037 planet(super_giant &);
00038 planet(main_sequence &);
00039 planet(base_element * b) : star(b) {}
00040
00041 ~planet() {}
00042
00043 stellar_type get_element_type() {return Planet;}
00044 bool remnant() {return FALSE;}
00045
00046
00047 void adjust_initial_star() {
00048 relative_age = max(current_time, 0);}
00049 void initialize_element();
00050 void instantaneous_element(const real);
00051 void evolve_element(const real);
00052 void update();
00053 real helium_core_mass();
00054 void thermo_nucleair_flash();
00055 void dwarf_nova();
00056 void common_envelope();
00057
00058 real mass_transfer_timescale();
00059 void reduce_donor_mass(const real);
00060 real subtrac_mass_from_donor(const real);
00061 real accretion_limit(const real, const real);
00062 real add_mass_to_accretor(const real);
00063 real add_mass_to_accretor(real, const real);
00064 void adjust_accretor_age(const real);
00065 void adjust_next_update_age() {}
00066 void accrete_from_envelope(const real);
00067
00068 void merge_elements(base_element*);
00069
00070 real zeta_thermal();
00071 void err_dump();
00072
00073
00074
00075
00076
00077
00078 friend neutron_star::neutron_star(white_dwarf&);
00079 };
00080
00081 #endif // _PLANET