1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-06-14 22:07:05 +01:00

Adding ScalarField theory

This commit is contained in:
Guido Cossu
2017-01-30 10:59:28 +00:00
parent 6929a84c70
commit f05d0565aa
5 changed files with 102 additions and 54 deletions

View File

@ -47,6 +47,14 @@ namespace Grid {
public:
ScalarAction(RealD ms, RealD l) : mass_square(ms), lambda(l){};
virtual std::string LogParameters(){
std::stringstream sstream;
sstream << GridLogMessage << "[ScalarAction] lambda : " << lambda << std::endl;
sstream << GridLogMessage << "[ScalarAction] mass_square : " << mass_square << std::endl;
return sstream.str();
}
virtual std::string action_name(){return "ScalarAction";}

View File

@ -269,6 +269,9 @@ private:
// here gauge
Read.push("Action");
do{
// I need to modify the Factory generator depending on the Implementation
// Solution: pass the field as a template parameter
//auto &ActionFactory = HMC_ScalarActionModuleFactory<gauge_string, ReaderClass>::getInstance();
auto &ActionFactory = HMC_LGTActionModuleFactory<gauge_string, ReaderClass>::getInstance();
std::string action_type;
Read.readDefault("name", action_type);

View File

@ -85,6 +85,7 @@ class GridModule {
};
// helpers
// FIXME define a class accepting also real vtypes
class GridFourDimModule : public GridModule {
public:
// add a function to create the module from a Reader

View File

@ -487,6 +487,7 @@ class OneFlavourRatioEOFModule:
// explicit ref to LatticeGaugeField must be changed or put in the factory
typedef ActionModuleBase< QCD::Action< QCD::LatticeGaugeField >, QCD::GridModule > HMC_LGTActionModBase;
typedef ActionModuleBase< QCD::Action< QCD::LatticeReal >, QCD::GridModule > HMC_ScalarActionModBase;
template <char const *str, class ReaderClass >
class HMC_LGTActionModuleFactory
@ -510,6 +511,28 @@ class HMC_LGTActionModuleFactory
template <char const *str, class ReaderClass >
class HMC_ScalarActionModuleFactory
: public Factory < HMC_ScalarActionModBase , Reader<ReaderClass> > {
public:
typedef Reader<ReaderClass> TheReader;
// use SINGLETON FUNCTOR MACRO HERE
HMC_ScalarActionModuleFactory(const HMC_ScalarActionModuleFactory& e) = delete;
void operator=(const HMC_ScalarActionModuleFactory& e) = delete;
static HMC_ScalarActionModuleFactory& getInstance(void) {
static HMC_ScalarActionModuleFactory e;
return e;
}
private:
HMC_ScalarActionModuleFactory(void) = default;
std::string obj_type() const {
return std::string(str);
}
};
extern char gauge_string[];
} // Grid