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

alg_smear.h

Go to the documentation of this file.
00001 //------------------------------------------------------------------
00011 //------------------------------------------------------------------
00012 #ifndef _ALG_SMEAR_CD_
00013 #define _ALG_SMEAR_CD_
00014 #include <config.h>
00015 #include <alg/alg_base.h>
00016 #include <alg/ape_smear_arg.h>
00017 #include <alg/kinetic_smear_arg.h>
00018 #include <alg/hyp_smear_arg.h>
00019 
00020 
00021 CPS_START_NAMESPACE
00022 
00024 
00038 class AlgSmear:public Alg
00039 {
00040 private:
00041   char *cname;
00042 
00043   int bool_su3_proj;
00044   Float tolerance  ;
00045   int orthog       ;
00046   Matrix* lat_back ;
00047     
00048 public:
00049   
00050   AlgSmear( Lattice&   lat,
00051             CommonArg* ca ,
00052             int su3_proj );
00053   
00054   virtual ~AlgSmear();
00055   
00057   void run();
00058   
00060 
00064   void set_orthog( int i ) { orthog=i; }
00065   
00067 
00070   int  get_orthog() const  { return orthog; }
00071 
00073   void set_tol( Float x ) { tolerance = x; }
00074   
00076   Float get_tol() const { return tolerance; }
00077 
00078   // YA
00079   int ifSu3Proj() const {return bool_su3_proj;}
00080 
00081 protected:
00082   
00084 
00089   virtual void smear_link( Matrix& link, 
00090                            int*    pos,
00091                            int      mu )=0;
00092   
00093   
00094 };
00095 
00097 void three_staple(Lattice& latt, Matrix& link, int *pos, int u, int orth);
00098 
00100 void five_staple  (Lattice& latt, Matrix& link, int *pos, int u, int orth);
00101 
00103 void seven_staple (Lattice& latt, Matrix& link, int *pos, int u, int orth);
00104 
00106 void lepage_staple(Lattice& latt, Matrix& link, int *pos, int u, int orth);
00107   
00109 int su3_proj( Matrix& x , Float tolerance );
00110 
00111 
00113 
00121 class AlgApeSmear:public AlgSmear
00122 {
00123 private:
00124   
00126   Float c;
00127   char *cname;
00128   
00129 public:
00130 
00137   AlgApeSmear(Lattice&     lat,
00138               CommonArg*   ca ,
00139               ApeSmearArg* asa,
00140               int        in_bool_su3_proj=1);
00141 
00142   ~AlgApeSmear()
00143   {;}
00144   
00149   void run();
00150 
00151   void set_coef( Float x ) { c = x ; }
00152 
00153 protected:
00154   
00155   void smear_link( Matrix& mat,
00156                    int*    pos,
00157                    int      mu );
00158 };
00159 
00160 
00162 
00175 class AlgKineticSmear:public AlgSmear
00176 {
00177 
00178 private:
00179   
00180   char *cname;
00181   Float _coef[5];
00182     
00183 public:
00184   
00191   AlgKineticSmear(Lattice&   lat,
00192                   CommonArg* ca ,
00193                   KineticSmearArg* ksa );
00194   
00195   ~AlgKineticSmear()
00196   {;}
00197   
00199   void run();
00200 
00201   void single_link( Float coef ) { _coef[0] = coef; }
00202   void three_link ( Float coef ) { _coef[1] = coef; }
00203   void five_link  ( Float coef ) { _coef[2] = coef; }
00204   void seven_link ( Float coef ) { _coef[3] = coef; }
00205   void lepage     ( Float coef ) { _coef[4] = coef; }
00206 
00207 protected:
00208   
00209   void smear_link( Matrix& link,
00210                    int*    pos,
00211                    int      mu );
00212   
00213 };
00214 
00215 
00216 
00218 
00230 class AlgHypSmear:public AlgSmear
00231 {
00232 private:
00233 
00234   char *cname;  
00235   Float c1, c2, c3;
00236   
00237   const Matrix GetLink( Lattice& lat, const int* x, int mu );
00238   void get_vtilde( Matrix& , int*, int, int );
00239   void get_vbar  ( Matrix& , int*, int, int, int );
00240   
00241 public:
00247   AlgHypSmear(Lattice&     lat, 
00248               CommonArg*    ca,
00249               HypSmearArg* hsa );
00250   
00251   ~AlgHypSmear()
00252   {;}
00253   
00255   void run();
00256   
00258   void set_c1( Float x ) { c1=x; }
00260   void set_c2( Float x ) { c2=x; }
00262   void set_c3( Float x ) { c3=x; }
00263   
00264 protected:
00265   
00266   void smear_link( Matrix& link,
00267                    int*    pos,
00268                    int      mu );
00269   
00270 };
00271 
00272 class AlgOlegSmear:public AlgApeSmear {
00273 
00274 private:
00275   
00276   char *cname;
00277   Matrix* lat_back2 ;
00278 
00279 public:
00280   AlgOlegSmear(Lattice&     lat,
00281                CommonArg*   ca,
00282                ApeSmearArg* asa);
00283   ~AlgOlegSmear();
00284 
00285   Float coef;
00286   void run();
00287 };
00288 
00289 CPS_END_NAMESPACE
00290 #endif /* _ALG_SMEAR_CD_ */
00291 

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