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:
@ -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";}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user