00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef _NEUTRON_STAR
00015 # define _NEUTRON_STAR
00016
00017 #include "single_star.h"
00018 #include "black_hole.h"
00019
00020 class hyper_giant;
00021 class super_giant;
00022 class thorne_zytkow;
00023 class helium_giant;
00024 class white_dwarf;
00025
00026
00027
00028
00029
00030 class neutron_star : public single_star {
00031 private:
00032
00033 real suddenly_lost_mass;
00034
00035 public :
00036
00037 neutron_star(hyper_giant &);
00038 neutron_star(super_giant &);
00039 neutron_star(thorne_zytkow &);
00040 neutron_star(helium_giant &);
00041 neutron_star(white_dwarf &);
00042 neutron_star(node* n) : single_star(n) {suddenly_lost_mass=0;}
00043
00044 ~neutron_star() {}
00045
00046 stellar_type get_element_type();
00047 bool remnant() {return true;}
00048 bool hydrogen_envelope_star() {return false;}
00049
00050 void instantaneous_element();
00051 void evolve_element(const real);
00052
00053 void update();
00054 bool super_nova();
00055 void direct_hit();
00056 real aic_binding_energy();
00057
00058 star* reduce_mass(const real);
00059 real accretion_limit(const real, const real);
00060 star* subtrac_mass_from_donor(const real, real&);
00061 real add_mass_to_accretor(const real);
00062 real add_mass_to_accretor(real, const real);
00063 void accrete_from_envelope(const real);
00064
00065 star* merge_elements(star*);
00066
00067 real neutron_star_mass(stellar_type);
00068 real neutron_star_radius();
00069 real accretion_luminosity(const real, const real);
00070 real magnetic_moment();
00071 real magnetic_field_decay(const real, const real);
00072 real magnetic_field_decay(const real, const real, const real);
00073 real magnetic_field_strength(const real, const real);
00074 real pulsar_spin_up(const real, const real);
00075 real pulsar_spin_down(const real);
00076 bool propeller(const real, const real);
00077 bool dead_pulsar();
00078
00079 real fastness_parameter(const real);
00080 real dimension_less_accretion_torque(const real);
00081 real pulsar_propeller_torque(const real, const real);
00082
00083 real moment_of_inertia();
00084 real period_derivative();
00085 real spindown_luminosity();
00086 real gyration_radius_sq();
00087
00088 real sudden_mass_loss();
00089
00090 friend black_hole::black_hole(neutron_star &);
00091
00092 };
00093 #endif // _NEUTRON_STAR