00001 #include<config.h> 00002 CPS_START_NAMESPACE 00003 //------------------------------------------------------------------ 00008 //------------------------------------------------------------------ 00009 00010 00011 #ifndef INCLUDED_ALG_HMC_H 00012 #define INCLUDED_ALG_HMC_H 00013 00014 CPS_END_NAMESPACE 00015 #include <util/lattice.h> 00016 #include <util/smalloc.h> 00017 #include <util/pmalloc.h> 00018 #include <alg/alg_base.h> 00019 #include <alg/hmc_arg.h> 00020 #include <alg/alg_meas.h> 00021 #include <alg/cg_stats.h> 00022 #include <util/checksum.h> 00023 #include <alg/alg_int.h> 00024 CPS_START_NAMESPACE 00025 00026 //------------------------------------------------------------------ 00028 00038 //------------------------------------------------------------------ 00039 00040 class AlgHmc 00041 { 00042 private: 00043 char *cname; 00044 00046 int saveInitialState(); 00048 void saveFinalState(); 00050 void restoreInitialState(); 00052 void restoreFinalState(); 00054 int reproduceTest(int attempt); 00056 void reverseTest(); 00058 void shiftStates(const int x,const int y,const int z, const int t); 00059 00060 protected: 00061 00063 int g_size; 00069 Matrix* gauge_field_init; 00071 00072 Matrix* gauge_field_final; 00074 00075 // unsigned int **rng4d_init; 00076 // unsigned int **rng5d_init; 00077 LRGState lrg_state; 00079 00080 int config_no; 00081 00082 Float h_init; 00083 Float h_final; 00084 Float delta_h; 00085 Float h_delta; 00086 00087 Matrix* mom; 00089 00093 HmcArg *hmc_arg; 00094 CommonArg *common_arg; 00095 00096 AlgIntAB *integrator; 00098 00099 unsigned int checksum[2]; 00101 00102 public: 00103 00104 AlgHmc(AlgIntAB &integrator, CommonArg &c_arg, HmcArg &arg); 00105 00106 virtual ~AlgHmc(); 00107 00109 Float run(void); 00110 }; 00111 00112 #endif 00113 00114 CPS_END_NAMESPACE
1.3.9.1