Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

alg_hmd.h

Go to the documentation of this file.
00001 #include<config.h>
00002 CPS_START_NAMESPACE
00003 //------------------------------------------------------------------
00009 //------------------------------------------------------------------
00010 
00011 
00012 #ifndef INCLUDED_ALG_HMD_H
00013 #define INCLUDED_ALG_HMD_H
00014 
00015 CPS_END_NAMESPACE
00016 #include <util/lattice.h>
00017 #include <util/smalloc.h>
00018 #include <util/pmalloc.h>
00019 #include <alg/alg_base.h>
00020 #include <alg/common_arg.h>
00021 #include <alg/hmd_arg.h>
00022 CPS_START_NAMESPACE
00023 
00024 
00025 //------------------------------------------------------------------
00027 
00031 //------------------------------------------------------------------
00032 class AlgHmd : public Alg
00033 {
00034  private:
00035     char *cname;
00036    
00037  protected:
00038 
00039     HmdArg *hmd_arg;
00041   
00042     int g_size;       
00044 
00049     int Ncb;
00051 
00052     Matrix* mom;
00054 
00058     int alloc_sum;
00059 
00060  public:
00061 
00062   AlgHmd(Lattice& latt, CommonArg *c_arg, HmdArg *arg);
00063 
00064 
00065   virtual ~AlgHmd();
00066 
00068   virtual Float run() = 0;
00069 
00070 };
00071 
00072 
00073 //------------------------------------------------------------------
00075 
00098 //------------------------------------------------------------------
00099 class AlgHmcPhi : public AlgHmd
00100 {
00101  private:
00102     char *cname;
00103 
00104 
00105  protected:
00106 
00107     int n_frm_masses;     
00109 
00113     int n_bsn_masses;     
00115 
00116     int f_size;       
00118 
00123     CgArg **frm_cg_arg;
00125 
00130     CgArg **bsn_cg_arg;
00132 
00137     Vector** phi;
00139 
00141     Vector** bsn;
00143 
00145     Matrix* gauge_field_init;
00147 
00148     Vector** frm1;
00150     Vector** frm2;
00152 
00153     Vector** cg_sol_cur;
00155 
00156     Vector** cg_sol_prev;
00158 
00161     Float *h_f_init;    
00163 
00165     Float *h_f_final;   
00167 
00169     Float *delta_h_f;   
00171 
00173     Float *h_b_init;    
00175 
00177     Float *h_b_final;   
00179 
00181     Float *delta_h_b;   
00183 
00185  public:
00186 
00187   AlgHmcPhi(Lattice& latt, CommonArg *c_arg, HmdArg *arg);
00188 
00189   virtual ~AlgHmcPhi();
00190 
00192   Float run(void);
00193 };
00194 
00195 //------------------------------------------------------------------
00197 
00220 //------------------------------------------------------------------
00221 class AlgHmcQPQ : public AlgHmd
00222 {
00223  private:
00224     char *cname;
00225 
00226 
00227  protected:
00228 
00229     int n_frm_masses;     
00231 
00235     int n_bsn_masses;     
00237 
00238     int f_size;       
00240 
00245     CgArg **frm_cg_arg;
00247 
00252     CgArg **bsn_cg_arg;
00254 
00259     Vector** phi;
00261 
00263     Vector** bsn;
00265 
00267     Matrix* gauge_field_init;
00269 
00270     Vector** frm1;
00272     Vector** frm2;
00274 
00275     Vector** cg_sol_prev;
00276     Vector*** cg_sol;
00278     Vector*** vm;
00280 
00281     Float *h_f_init;    
00283 
00285     Float *h_f_final;   
00287 
00289     Float *delta_h_f;   
00291 
00293     Float *h_b_init;    
00295 
00297     Float *h_b_final;   
00299 
00301     Float *delta_h_b;   
00303 
00305  public:
00306 
00307   AlgHmcQPQ(Lattice& latt, CommonArg *c_arg, HmdArg *arg);
00308 
00309   virtual ~AlgHmcQPQ();
00310 
00312   Float run(void);
00313 };
00314 
00315 //------------------------------------------------------------------
00317 
00336 //------------------------------------------------------------------
00337 class AlgHmcRHMC : public AlgHmd
00338 {
00339  private:
00340     char *cname;
00341 
00343     void init();
00344 
00346     void massRenormalise(Float *mass, Float *trueMass, int degree, 
00347                          Float *shift, MassRenormaliseDir direction);
00348 
00349  protected:
00350 
00351     int n_frm_masses;     
00353 
00354     int n_bsn_masses;     
00356 
00357     int f_sites;       
00358     int f_vec_count;       
00359     int f_count;       
00360     int f_size;       
00362 
00367     CgArg **frm_cg_arg;
00369 
00375     CgArg **bsn_cg_arg;
00377 
00382     Vector** phi;
00384 
00387     Vector** bsn;
00389 
00392     Matrix* gauge_field_init;
00394 
00395     unsigned int **rng4d_init;
00396     unsigned int **rng5d_init;
00398 
00399     Matrix* gauge_field_final;
00401 
00402     Vector* frm;
00403 
00404     Vector** frmn;
00406 
00408     Vector** frmn_d;
00410 
00413     Float *h_f_init;    
00415 
00417     Float *h_f_final;   
00419 
00422     Float *delta_h_f;   
00424 
00426     Float *h_b_init;    
00428 
00430     Float *h_b_final;   
00432 
00434     Float *delta_h_b;   
00436 
00438     int total_size;
00440 
00441     Float *all_res;
00443 
00444     EigArg *eig_arg;
00446 
00447     Float **alpha;
00448 
00449  public:
00450 
00452   AlgHmcRHMC(Lattice& latt, CommonArg *c_arg, HmdArg *arg);
00453 
00455   AlgHmcRHMC(Lattice& latt, CommonArg *c_arg, HmdArg *arg, EigArg *e_arg);
00456 
00457   virtual ~AlgHmcRHMC();
00458 
00460   Float run(void);
00461 
00463   void generateApprox(HmdArg*);
00464 
00466   void dynamicalApprox();
00467 
00468 };
00469 
00470 //------------------------------------------------------------------
00472 
00488 //------------------------------------------------------------------
00489 class AlgHmdR : public AlgHmd
00490 {
00491  private:
00492     char *cname;
00493 
00494  protected:
00495     int n_frm_masses;     
00497 
00501     Float *flavor_time_step;
00503 
00509     int f_size;       
00511 
00516     CgArg **frm_cg_arg;
00518 
00523     Vector** phi;
00525 
00527     Vector* frm1;
00528     Vector* frm2;
00530     
00531  public:
00532 
00533   AlgHmdR(Lattice& latt, CommonArg *c_arg, HmdArg *arg);
00534 
00535   virtual ~AlgHmdR();
00536 
00538   Float run(void);
00539 };
00540 
00541 //------------------------------------------------------------------
00543 
00558 //------------------------------------------------------------------
00559 class AlgHmdR2 : public AlgHmd
00560 {
00561  private:
00562     char *cname;
00563 
00564  protected:
00565     int n_frm_masses;     
00567 
00571     Float *flavor_time_step;
00573 
00579     Float *force_coeff;
00581 
00585     int f_sites;       
00586     int f_vec_count;       
00587     int f_count;       
00588     int f_size;       
00590 
00595     CgArg **frm_cg_arg;
00597 
00602     Vector** phi;
00604 
00606     Vector** frmn;
00608 
00610     Vector** frmn_d;
00612 
00615     Float *shift;
00617 
00618     int light;
00620 
00621     int heavy;
00623 
00624  public:
00625 
00626   AlgHmdR2(Lattice& latt, CommonArg *c_arg, HmdArg *arg);
00627 
00628   virtual ~AlgHmdR2();
00629 
00631   Float run(void);
00632 };
00633 
00634 #endif
00635 
00636 CPS_END_NAMESPACE

Generated on Sat Oct 10 14:11:09 2009 for Columbia Physics System by  doxygen 1.3.9.1