1
0
mirror of https://github.com/paboyle/Grid.git synced 2024-09-20 09:15:38 +01:00

minor scalar HMC code improvement

This commit is contained in:
Antonin Portelli 2017-06-24 23:04:05 +01:00
parent d2e8372df3
commit 0af740dc15
4 changed files with 9 additions and 6 deletions

View File

@ -93,6 +93,8 @@ class ScalarImplTypes {
class ScalarAdjMatrixImplTypes { class ScalarAdjMatrixImplTypes {
public: public:
typedef S Simd; typedef S Simd;
typedef QCD::SU<N> Group;
template <typename vtype> template <typename vtype>
using iImplField = iScalar<iScalar<iMatrix<vtype, N>>>; using iImplField = iScalar<iScalar<iMatrix<vtype, N>>>;
template <typename vtype> template <typename vtype>
@ -108,7 +110,7 @@ class ScalarImplTypes {
typedef Field PropagatorField; typedef Field PropagatorField;
static inline void generate_momenta(Field& P, GridParallelRNG& pRNG) { static inline void generate_momenta(Field& P, GridParallelRNG& pRNG) {
QCD::SU<N>::GaussianFundamentalLieAlgebraMatrix(pRNG, P); Group::GaussianFundamentalLieAlgebraMatrix(pRNG, P);
} }
static inline Field projectForce(Field& P) {return P;} static inline Field projectForce(Field& P) {return P;}
@ -122,11 +124,11 @@ class ScalarImplTypes {
} }
static inline void HotConfiguration(GridParallelRNG &pRNG, Field &U) { static inline void HotConfiguration(GridParallelRNG &pRNG, Field &U) {
QCD::SU<N>::LieRandomize(pRNG, U); Group::LieRandomize(pRNG, U);
} }
static inline void TepidConfiguration(GridParallelRNG &pRNG, Field &U) { static inline void TepidConfiguration(GridParallelRNG &pRNG, Field &U) {
QCD::SU<N>::LieRandomize(pRNG, U, 0.01); Group::LieRandomize(pRNG, U, 0.01);
} }
static inline void ColdConfiguration(GridParallelRNG &pRNG, Field &U) { static inline void ColdConfiguration(GridParallelRNG &pRNG, Field &U) {

View File

@ -98,7 +98,7 @@ namespace Grid {
permute(temp2, *temp, permute_type); permute(temp2, *temp, permute_type);
action._odata[i] -= temp2*(*t_p) + (*t_p)*temp2; action._odata[i] -= temp2*(*t_p) + (*t_p)*temp2;
} else { } else {
action._odata[i] -= *temp*(*t_p) + (*t_p)*(*temp); action._odata[i] -= (*temp)*(*t_p) + (*t_p)*(*temp);
} }
} else { } else {
action._odata[i] -= phiStencil.CommBuf()[SE->_offset]*(*t_p) + (*t_p)*phiStencil.CommBuf()[SE->_offset]; action._odata[i] -= phiStencil.CommBuf()[SE->_offset]*(*t_p) + (*t_p)*phiStencil.CommBuf()[SE->_offset];

View File

@ -76,7 +76,7 @@ struct HMCparameters: Serializable {
template < class ReaderClass > template < class ReaderClass >
void initialize(Reader<ReaderClass> &TheReader){ void initialize(Reader<ReaderClass> &TheReader){
std::cout << "Reading HMC\n"; std::cout << GridLogMessage << "Reading HMC\n";
read(TheReader, "HMC", *this); read(TheReader, "HMC", *this);
} }

View File

@ -253,6 +253,7 @@ class HMCResourceManager {
template<class T, class... Types> template<class T, class... Types>
void AddObservable(Types&&... Args){ void AddObservable(Types&&... Args){
ObservablesList.push_back(std::unique_ptr<T>(new T(std::forward<Types>(Args)...))); ObservablesList.push_back(std::unique_ptr<T>(new T(std::forward<Types>(Args)...)));
ObservablesList.back()->print_parameters();
} }
std::vector<HmcObservable<typename ImplementationPolicy::Field>* > GetObservables(){ std::vector<HmcObservable<typename ImplementationPolicy::Field>* > GetObservables(){