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

slow_binary.h

Go to the documentation of this file.
00001 
00003 //                       (Based on "slow-KS" treatment of Mikkola & Aarseth.)
00004 
00006 
00007 class slow_binary {
00008 
00009     private:
00010 
00011         int  kappa;             
00012         xreal t_init;           
00013         xreal t_apo;            
00014         real tau;               
00015         real tau_pred;          
00016         real dtau;              
00017         vec acc_p;              
00018         vec jerk_p;             
00019         vec old_acc_p;          
00020         vec old_jerk_p;         
00021         bool stop;              
00022 
00023     public:
00024 
00025         slow_binary(int k = 1) {
00026             kappa = k;
00027             t_init = t_apo = tau = tau_pred = dtau = 0;
00028             acc_p = jerk_p = old_acc_p = old_jerk_p = 0;
00029             stop = false;
00030         }
00031 
00032         // Convert slow time to real time.
00033 
00034         xreal tau_to_time(real tt = 0) {
00035             if (tt == 0)
00036                 return t_init + kappa * tau;
00037             else
00038                 return t_init + kappa * tt;
00039         }
00040 
00042 
00043         real time_to_tau(xreal t)       {return ((real)(t - t_init)) / kappa;}
00044 
00045         void set_kappa(int k)           {kappa = k;}
00046         int  get_kappa()                {return kappa;}
00047 
00048         void set_t_init(xreal t)        {t_init = t;}
00049         xreal get_t_init()              {return t_init;}
00050 
00051         void set_t_apo(xreal t)         {t_apo = t;}
00052         xreal get_t_apo()               {return t_apo;}
00053 
00054         void set_tau(real t)            {tau = t;}
00055         void inc_tau(real dt)           {tau += dt;}
00056         real get_tau()                  {return tau;}
00057 
00058         void set_tau_pred(real t)       {tau_pred = t;}
00059         void clear_tau_pred()           {tau_pred = -VERY_LARGE_NUMBER;}
00060         void init_tau_pred()            {tau_pred = tau;}
00061 
00062         real get_tau_pred()             {return tau_pred;}
00063         
00064         void set_dtau(real dt)          {dtau = dt;}
00065         real get_dtau()                 {return dtau;}
00066 
00067         void set_acc_p(vec a)           {acc_p = a;}
00068         vec get_acc_p()                 {return acc_p;}
00069 
00070         void set_jerk_p(vec j)          {jerk_p = j;}
00071         vec get_jerk_p()                {return jerk_p;}
00072 
00073         void set_old_acc_p(vec a)       {old_acc_p = a;}
00074         vec get_old_acc_p()             {return old_acc_p;}
00075 
00076         void set_old_jerk_p(vec j)      {old_jerk_p = j;}
00077         vec get_old_jerk_p()            {return old_jerk_p;}
00078 
00079         void store_old_force() {
00080             old_acc_p = acc_p;
00081             old_jerk_p = jerk_p;
00082         }
00083 
00084         void set_stop(bool v = true)    {stop = v;}
00085         bool get_stop()                 {return stop;}
00086 
00087 };
00088 
00089 class _dyn_;                    // to permit the_node pointer below...
00090 
00092 
00093 class slow_perturbed {
00094 
00095     private:
00096 
00097         _dyn_ *the_node;        
00098         int kappa;              
00099         vec acc_p;              
00100         vec jerk_p;             
00101         vec old_acc_p;          
00102         vec old_jerk_p;         
00103         slow_perturbed *sp;     
00104 
00105     public:
00106 
00107         slow_perturbed() {
00108             the_node = NULL;
00109             kappa = 1;
00110             acc_p = jerk_p = old_acc_p = old_jerk_p = 0;
00111             sp = NULL;
00112         }
00113 
00114         ~slow_perturbed() {
00115             if (sp) delete sp;          // recursive
00116         }
00117 
00118         void set_node(_dyn_ *n)         {the_node = n;}
00119         _dyn_ *get_node()               {return the_node;}
00120 
00121         void set_kappa(int k)           {kappa = k;}
00122         int  get_kappa()                {return kappa;}
00123 
00124         void set_acc_p(vec a)           {acc_p = a;}
00125         vec get_acc_p()                 {return acc_p;}
00126 
00127         void set_jerk_p(vec j)          {jerk_p = j;}
00128         vec get_jerk_p()                {return jerk_p;}
00129 
00130         void set_old_acc_p(vec a)       {old_acc_p = a;}
00131         vec get_old_acc_p()             {return old_acc_p;}
00132 
00133         void set_old_jerk_p(vec j)      {old_jerk_p = j;}
00134         vec get_old_jerk_p()            {return old_jerk_p;}
00135 
00136         void store_old_force() {
00137             old_acc_p = acc_p;
00138             old_jerk_p = jerk_p;
00139             if (sp) sp->store_old_force();      // recursive!
00140         }
00141 
00142         void set_next(slow_perturbed *s)        {sp = s;}
00143         slow_perturbed *get_next()              {return sp;}
00144 };

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