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

star_cluster.h

00001 /*
00002  *  star_cluster.h: derived class for element evolution systems.
00003  *          functions as derived class for the real elements.
00004  *.............................................................................
00005  *    version 1:  Jan 1994   Simon F. Portegies Zwart
00006  *    version 2:
00007  *.............................................................................
00008  *     This file includes:
00009  *  1) definition of class star_cluster
00010  *
00011  *.............................................................................
00012  */
00013 #ifndef     _STAR_CLUSTER
00014 #   define  _STAR_CLUSTER
00015 
00016 #include "stdinc.h"
00017 #include "base_element.h"
00018 #include "cluster_support.h"
00019 #include "star.h"
00020 #include "double_star.h"
00021 #include "single_star.h"
00022 #include "scatter3_support.h"
00023 
00024 #include "node.h"
00025 //#include "main_sequence.h"
00026 #include "double_support.h"
00027 
00028 /*-----------------------------------------------------------------------------
00029  *  star_cluster  --  class for evolving cluster of stars and double_stars
00030  *-----------------------------------------------------------------------------
00031  */
00032 class star_cluster
00033     {
00034     protected:
00035 
00036        base_element * cluster;
00037        base_element * halo;
00038 
00039        bool field;
00040 
00041        real cluster_age;
00042        real dead_time;
00043 
00044        real core_radius;
00045        real halfm_radius;
00046        real tidal_radius;
00047 
00048        real core_density;       // n/pc^3
00049 
00050        real total_mass;
00051        real v_disp;
00052        
00053        int n_singles;
00054        int n_doubles;
00055        int nh_singles;
00056        int nh_doubles;
00057 
00058        int n_single_esc;
00059        int n_double_esc;
00060        int n_multiple_esc;
00061  
00062        int n_scatter;
00063        int n_collision;
00064        int n_capture;
00065      
00066        initial_cluster init;
00067 
00068     public:
00069   
00070        star_cluster(initial_cluster&);
00071 
00072        base_element* get_cluster()   {return cluster;}
00073        base_element* get_halo()   {return halo;}
00074        bool get_field()              {return field;}
00075        real get_cluster_age()        {return cluster_age;}
00076        void set_cluster_age(real t)  {cluster_age=t;}
00077        real get_core_density()       {return core_density;}
00078        real get_core_radius()        {return core_radius;}
00079        real get_halfm_radius()        {return halfm_radius;}
00080        real get_tidal_radius()        {return tidal_radius;}
00081        real get_core_volume()        {return (4./3.)*PI*pow(core_radius, 3);}
00082        int  no_of_elements()              {return n_singles+n_doubles;}
00083        real get_velocity_dispersion()   {return v_disp;}
00084 /*
00085        void inc_n_singles()             {n_singles++;}
00086        void inc_n_doubles()             {n_doubles++;}
00087        void dec_n_singles()             {n_singles--;}
00088        void dec_n_doubles()             {n_doubles--;}
00089 */
00090        void inc_n_scatter()                     {n_scatter++;}
00091        void inc_n_capture()                     {n_capture++;}
00092        void inc_n_collision()                   {n_collision++;}
00093        int get_n_singles()                      {return n_singles;}
00094        int get_n_doubles()                      {return n_doubles;}
00095        int get_n_single_esc()                   {return n_single_esc;}
00096        int get_n_double_esc()                   {return n_double_esc;}
00097 
00098        real get_dead_time()             {return dead_time;}
00099        void inc_dead_time(real dt)      {dead_time += dt;}
00100        void reset_dead_time()           {dead_time = 0;}
00101 
00102        void set_initial_cluster(initial_cluster& initial) {init=initial;}
00103        void setup_star_cluster();
00104        void calculate_equilibrium_velocities();
00105        real escape_velocity();
00106        void randomize_maxwellian_velocities();
00107        real random_maxwellian_velocity(const real);
00108        void freeze();
00109        real velocity_dispersion();
00110        //real get_total_energy();
00111        //real get_potential_energy();
00112        //real get_kinetic_energy();
00113        real get_total_mass();
00114        real obtain_total_mass();
00115        real get_scatter_cross_section(base_element*);
00116        void count_number_of_elements();
00117        void update_cluster_parameters();
00118 //              Escaper handling
00119        void delete_escaper_from_cluster(base_element*);
00120        void add_new_particle_to_cluster(int);
00121        void remove_escapers();
00122        double_init& halo_guest();
00123 
00124        void evolve_element(real);
00125        void put_cluster() {
00126                 //cluster->put_star(cout, cluster);
00127 
00128        }
00129        void print_roche();
00130        void put_state();
00131        void put_hrd(ostream &);
00132        void dump(ostream &); //char*);
00133        void dump(char*); //char*);
00134        void test_maxwellian_velocities();
00135 
00136 //              Profiler
00137        void make_profile();
00138 
00139  
00140     };
00141 
00142 #define  put_element  put_node
00143 
00144 #endif      // _STAR_CLUSTER

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