1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-04-09 21:50:45 +01:00

Namespace

This commit is contained in:
paboyle 2018-01-14 22:24:47 +00:00
parent d29fa23ebc
commit 3bf8fddbb5

View File

@ -25,16 +25,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
See the full license in the file "LICENSE" in the top level distribution See the full license in the file "LICENSE" in the top level distribution
directory directory
*************************************************************************************/ *************************************************************************************/
/* END LEGAL */ /* END LEGAL */
#ifndef ACTION_MODULES_H #ifndef ACTION_MODULES_H
#define ACTION_MODULES_H #define ACTION_MODULES_H
/* /*
Define loadable, serializable modules Define loadable, serializable modules
for the HMC execution for the HMC execution
*/ */
namespace Grid { NAMESPACE_BEGIN(Grid);
////////////////////////////////////////////// //////////////////////////////////////////////
// Actions // Actions
@ -51,9 +51,9 @@ public:
template <class ActionType, class APar> template <class ActionType, class APar>
class ActionModule class ActionModule
: public Parametrized<APar>, : public Parametrized<APar>,
public ActionModuleBase< QCD::Action<typename ActionType::GaugeField> , QCD::GridModule > { public ActionModuleBase< QCD::Action<typename ActionType::GaugeField> , QCD::GridModule > {
public: public:
typedef ActionModuleBase< QCD::Action<typename ActionType::GaugeField>, QCD::GridModule > Base; typedef ActionModuleBase< QCD::Action<typename ActionType::GaugeField>, QCD::GridModule > Base;
typedef typename Base::Product Product; typedef typename Base::Product Product;
typedef APar Parameters; typedef APar Parameters;
@ -76,7 +76,7 @@ class ActionModule
return ActionPtr.get(); return ActionPtr.get();
} }
private: private:
virtual void initialize() = 0; virtual void initialize() = 0;
}; };
@ -85,28 +85,28 @@ class ActionModule
// Modules // Modules
////////////////////////// //////////////////////////
namespace QCD{
class PlaqPlusRectangleGaugeActionParameters : Serializable { class PlaqPlusRectangleGaugeActionParameters : Serializable {
public: public:
GRID_SERIALIZABLE_CLASS_MEMBERS(PlaqPlusRectangleGaugeActionParameters, GRID_SERIALIZABLE_CLASS_MEMBERS(PlaqPlusRectangleGaugeActionParameters,
RealD, c_plaq, RealD, c_plaq,
RealD, c_rect); RealD, c_rect);
}; };
class RBCGaugeActionParameters : Serializable { class RBCGaugeActionParameters : Serializable {
public: public:
GRID_SERIALIZABLE_CLASS_MEMBERS(RBCGaugeActionParameters, GRID_SERIALIZABLE_CLASS_MEMBERS(RBCGaugeActionParameters,
RealD, beta, RealD, beta,
RealD, c1); RealD, c1);
}; };
class BetaGaugeActionParameters : Serializable { class BetaGaugeActionParameters : Serializable {
public: public:
GRID_SERIALIZABLE_CLASS_MEMBERS(BetaGaugeActionParameters, GRID_SERIALIZABLE_CLASS_MEMBERS(BetaGaugeActionParameters,
RealD, beta); RealD, beta);
}; };
@ -232,17 +232,17 @@ class TwoFlavourFModule: public PseudoFermionModuleBase<Impl, TwoFlavourPseudoFe
typename Base::operator_type fop_mod; typename Base::operator_type fop_mod;
typename Base::solver_type solver_mod; typename Base::solver_type solver_mod;
public: public:
virtual void acquireResource(typename Base::Resource& GridMod){ virtual void acquireResource(typename Base::Resource& GridMod){
fop_mod->AddGridPair(GridMod); fop_mod->AddGridPair(GridMod);
} }
// constructor // constructor
template <class ReaderClass> template <class ReaderClass>
TwoFlavourFModule(Reader<ReaderClass>& R): Base(R) { TwoFlavourFModule(Reader<ReaderClass>& R): Base(R) {
this->getSolverOperator(R, solver_mod, "Solver"); this->getSolverOperator(R, solver_mod, "Solver");
this->getFermionOperator(R, fop_mod, "Operator"); this->getFermionOperator(R, fop_mod, "Operator");
} }
// acquire resource // acquire resource
virtual void initialize() { virtual void initialize() {
@ -261,17 +261,17 @@ class TwoFlavourEOFModule: public PseudoFermionModuleBase<Impl, TwoFlavourEvenOd
typename Base::operator_type fop_mod; typename Base::operator_type fop_mod;
typename Base::solver_type solver_mod; typename Base::solver_type solver_mod;
public: public:
virtual void acquireResource(typename Base::Resource& GridMod){ virtual void acquireResource(typename Base::Resource& GridMod){
fop_mod->AddGridPair(GridMod); fop_mod->AddGridPair(GridMod);
} }
// constructor // constructor
template <class ReaderClass> template <class ReaderClass>
TwoFlavourEOFModule(Reader<ReaderClass>& R): PseudoFermionModuleBase<Impl, TwoFlavourEvenOddPseudoFermionAction>(R) { TwoFlavourEOFModule(Reader<ReaderClass>& R): PseudoFermionModuleBase<Impl, TwoFlavourEvenOddPseudoFermionAction>(R) {
this->getSolverOperator(R, solver_mod, "Solver"); this->getSolverOperator(R, solver_mod, "Solver");
this->getFermionOperator(R, fop_mod, "Operator"); this->getFermionOperator(R, fop_mod, "Operator");
} }
// acquire resource // acquire resource
virtual void initialize() { virtual void initialize() {
@ -291,25 +291,25 @@ class TwoFlavourRatioFModule: public PseudoFermionModuleBase<Impl, TwoFlavourRat
typename Base::operator_type fop_denominator_mod; typename Base::operator_type fop_denominator_mod;
typename Base::solver_type solver_mod; typename Base::solver_type solver_mod;
public: public:
virtual void acquireResource(typename Base::Resource& GridMod){ virtual void acquireResource(typename Base::Resource& GridMod){
fop_numerator_mod->AddGridPair(GridMod); fop_numerator_mod->AddGridPair(GridMod);
fop_denominator_mod->AddGridPair(GridMod); fop_denominator_mod->AddGridPair(GridMod);
} }
// constructor // constructor
template <class ReaderClass> template <class ReaderClass>
TwoFlavourRatioFModule(Reader<ReaderClass>& R): PseudoFermionModuleBase<Impl, TwoFlavourRatioPseudoFermionAction>(R) { TwoFlavourRatioFModule(Reader<ReaderClass>& R): PseudoFermionModuleBase<Impl, TwoFlavourRatioPseudoFermionAction>(R) {
this->getSolverOperator(R, solver_mod, "Solver"); this->getSolverOperator(R, solver_mod, "Solver");
this->getFermionOperator(R, fop_numerator_mod, "Numerator"); this->getFermionOperator(R, fop_numerator_mod, "Numerator");
this->getFermionOperator(R, fop_denominator_mod, "Denominator"); this->getFermionOperator(R, fop_denominator_mod, "Denominator");
} }
// acquire resource // acquire resource
virtual void initialize() { virtual void initialize() {
// here temporarily assuming that the force and action solver are the same // here temporarily assuming that the force and action solver are the same
this->ActionPtr.reset(new TwoFlavourRatioPseudoFermionAction<Impl>(*(this->fop_numerator_mod->getPtr()), this->ActionPtr.reset(new TwoFlavourRatioPseudoFermionAction<Impl>(*(this->fop_numerator_mod->getPtr()),
*(this->fop_denominator_mod->getPtr()), *(this->solver_mod->getPtr()), *(this->solver_mod->getPtr()))); *(this->fop_denominator_mod->getPtr()), *(this->solver_mod->getPtr()), *(this->solver_mod->getPtr())));
} }
}; };
@ -323,25 +323,25 @@ class TwoFlavourRatioEOFModule: public PseudoFermionModuleBase<Impl, TwoFlavourE
typename Base::operator_type fop_denominator_mod; typename Base::operator_type fop_denominator_mod;
typename Base::solver_type solver_mod; typename Base::solver_type solver_mod;
public: public:
virtual void acquireResource(typename Base::Resource& GridMod){ virtual void acquireResource(typename Base::Resource& GridMod){
fop_numerator_mod->AddGridPair(GridMod); fop_numerator_mod->AddGridPair(GridMod);
fop_denominator_mod->AddGridPair(GridMod); fop_denominator_mod->AddGridPair(GridMod);
} }
// constructor // constructor
template <class ReaderClass> template <class ReaderClass>
TwoFlavourRatioEOFModule(Reader<ReaderClass>& R): Base(R) { TwoFlavourRatioEOFModule(Reader<ReaderClass>& R): Base(R) {
this->getSolverOperator(R, solver_mod, "Solver"); this->getSolverOperator(R, solver_mod, "Solver");
this->getFermionOperator(R, fop_numerator_mod, "Numerator"); this->getFermionOperator(R, fop_numerator_mod, "Numerator");
this->getFermionOperator(R, fop_denominator_mod, "Denominator"); this->getFermionOperator(R, fop_denominator_mod, "Denominator");
} }
// acquire resource // acquire resource
virtual void initialize() { virtual void initialize() {
// here temporarily assuming that the force and action solver are the same // here temporarily assuming that the force and action solver are the same
this->ActionPtr.reset(new TwoFlavourEvenOddRatioPseudoFermionAction<Impl>(*(this->fop_numerator_mod->getPtr()), this->ActionPtr.reset(new TwoFlavourEvenOddRatioPseudoFermionAction<Impl>(*(this->fop_numerator_mod->getPtr()),
*(this->fop_denominator_mod->getPtr()), *(this->solver_mod->getPtr()), *(this->solver_mod->getPtr()))); *(this->fop_denominator_mod->getPtr()), *(this->solver_mod->getPtr()), *(this->solver_mod->getPtr())));
} }
}; };
@ -354,16 +354,16 @@ class OneFlavourFModule: public PseudoFermionModuleBase<Impl, OneFlavourRational
typename Base::operator_type fop_mod; typename Base::operator_type fop_mod;
public: public:
virtual void acquireResource(typename Base::Resource& GridMod){ virtual void acquireResource(typename Base::Resource& GridMod){
fop_mod->AddGridPair(GridMod); fop_mod->AddGridPair(GridMod);
} }
// constructor // constructor
template <class ReaderClass> template <class ReaderClass>
OneFlavourFModule(Reader<ReaderClass>& R): Base(R) { OneFlavourFModule(Reader<ReaderClass>& R): Base(R) {
this->getFermionOperator(R, fop_mod, "Operator"); this->getFermionOperator(R, fop_mod, "Operator");
} }
// acquire resource // acquire resource
virtual void initialize() { virtual void initialize() {
@ -375,22 +375,22 @@ class OneFlavourFModule: public PseudoFermionModuleBase<Impl, OneFlavourRational
template <class Impl > template <class Impl >
class OneFlavourEOFModule: class OneFlavourEOFModule:
public PseudoFermionModuleBase<Impl, OneFlavourEvenOddRationalPseudoFermionAction, OneFlavourRationalParams> public PseudoFermionModuleBase<Impl, OneFlavourEvenOddRationalPseudoFermionAction, OneFlavourRationalParams>
{ {
typedef PseudoFermionModuleBase<Impl, OneFlavourEvenOddRationalPseudoFermionAction, OneFlavourRationalParams> Base; typedef PseudoFermionModuleBase<Impl, OneFlavourEvenOddRationalPseudoFermionAction, OneFlavourRationalParams> Base;
using Base::Base; using Base::Base;
typename Base::operator_type fop_mod; typename Base::operator_type fop_mod;
public: public:
virtual void acquireResource(typename Base::Resource& GridMod){ virtual void acquireResource(typename Base::Resource& GridMod){
fop_mod->AddGridPair(GridMod); fop_mod->AddGridPair(GridMod);
} }
// constructor // constructor
template <class ReaderClass> template <class ReaderClass>
OneFlavourEOFModule(Reader<ReaderClass>& R): Base(R) { OneFlavourEOFModule(Reader<ReaderClass>& R): Base(R) {
this->getFermionOperator(R, fop_mod, "Operator"); this->getFermionOperator(R, fop_mod, "Operator");
} }
// acquire resource // acquire resource
virtual void initialize() { virtual void initialize() {
@ -403,7 +403,7 @@ class OneFlavourEOFModule:
template <class Impl > template <class Impl >
class OneFlavourRatioFModule: class OneFlavourRatioFModule:
public PseudoFermionModuleBase<Impl, OneFlavourRatioRationalPseudoFermionAction, OneFlavourRationalParams> public PseudoFermionModuleBase<Impl, OneFlavourRatioRationalPseudoFermionAction, OneFlavourRationalParams>
{ {
typedef PseudoFermionModuleBase<Impl, OneFlavourRatioRationalPseudoFermionAction, OneFlavourRationalParams> Base; typedef PseudoFermionModuleBase<Impl, OneFlavourRatioRationalPseudoFermionAction, OneFlavourRationalParams> Base;
using Base::Base; using Base::Base;
@ -411,18 +411,18 @@ class OneFlavourRatioFModule:
typename Base::operator_type fop_numerator_mod; typename Base::operator_type fop_numerator_mod;
typename Base::operator_type fop_denominator_mod; typename Base::operator_type fop_denominator_mod;
public: public:
virtual void acquireResource(typename Base::Resource& GridMod){ virtual void acquireResource(typename Base::Resource& GridMod){
fop_numerator_mod->AddGridPair(GridMod); fop_numerator_mod->AddGridPair(GridMod);
fop_denominator_mod->AddGridPair(GridMod); fop_denominator_mod->AddGridPair(GridMod);
} }
// constructor // constructor
template <class ReaderClass> template <class ReaderClass>
OneFlavourRatioFModule(Reader<ReaderClass>& R): Base(R) { OneFlavourRatioFModule(Reader<ReaderClass>& R): Base(R) {
this->getFermionOperator(R, fop_numerator_mod, "Numerator"); this->getFermionOperator(R, fop_numerator_mod, "Numerator");
this->getFermionOperator(R, fop_denominator_mod, "Denominator"); this->getFermionOperator(R, fop_denominator_mod, "Denominator");
} }
// acquire resource // acquire resource
virtual void initialize() { virtual void initialize() {
@ -437,7 +437,7 @@ class OneFlavourRatioFModule:
template <class Impl > template <class Impl >
class OneFlavourRatioEOFModule: class OneFlavourRatioEOFModule:
public PseudoFermionModuleBase<Impl, OneFlavourEvenOddRatioRationalPseudoFermionAction, OneFlavourRationalParams> public PseudoFermionModuleBase<Impl, OneFlavourEvenOddRatioRationalPseudoFermionAction, OneFlavourRationalParams>
{ {
typedef PseudoFermionModuleBase<Impl, OneFlavourEvenOddRatioRationalPseudoFermionAction, OneFlavourRationalParams> Base; typedef PseudoFermionModuleBase<Impl, OneFlavourEvenOddRatioRationalPseudoFermionAction, OneFlavourRationalParams> Base;
using Base::Base; using Base::Base;
@ -445,18 +445,18 @@ class OneFlavourRatioEOFModule:
typename Base::operator_type fop_numerator_mod; typename Base::operator_type fop_numerator_mod;
typename Base::operator_type fop_denominator_mod; typename Base::operator_type fop_denominator_mod;
public: public:
virtual void acquireResource(typename Base::Resource& GridMod){ virtual void acquireResource(typename Base::Resource& GridMod){
fop_numerator_mod->AddGridPair(GridMod); fop_numerator_mod->AddGridPair(GridMod);
fop_denominator_mod->AddGridPair(GridMod); fop_denominator_mod->AddGridPair(GridMod);
} }
// constructor // constructor
template <class ReaderClass> template <class ReaderClass>
OneFlavourRatioEOFModule(Reader<ReaderClass>& R): Base(R) { OneFlavourRatioEOFModule(Reader<ReaderClass>& R): Base(R) {
this->getFermionOperator(R, fop_numerator_mod, "Numerator"); this->getFermionOperator(R, fop_numerator_mod, "Numerator");
this->getFermionOperator(R, fop_denominator_mod, "Denominator"); this->getFermionOperator(R, fop_denominator_mod, "Denominator");
} }
// acquire resource // acquire resource
virtual void initialize() { virtual void initialize() {
@ -491,8 +491,8 @@ class OneFlavourRatioEOFModule:
template <char const *str, class Field, class ReaderClass > template <char const *str, class Field, class ReaderClass >
class HMC_ActionModuleFactory class HMC_ActionModuleFactory
: public Factory < ActionModuleBase< QCD::Action< Field >, QCD::GridModule > , Reader<ReaderClass> > { : public Factory < ActionModuleBase< QCD::Action< Field >, QCD::GridModule > , Reader<ReaderClass> > {
public: public:
typedef Reader<ReaderClass> TheReader; typedef Reader<ReaderClass> TheReader;
// use SINGLETON FUNCTOR MACRO HERE // use SINGLETON FUNCTOR MACRO HERE
HMC_ActionModuleFactory(const HMC_ActionModuleFactory& e) = delete; HMC_ActionModuleFactory(const HMC_ActionModuleFactory& e) = delete;
@ -502,16 +502,15 @@ class HMC_ActionModuleFactory
return e; return e;
} }
private: private:
HMC_ActionModuleFactory(void) = default; HMC_ActionModuleFactory(void) = default;
std::string obj_type() const { std::string obj_type() const {
return std::string(str); return std::string(str);
} }
}; };
extern char gauge_string[]; extern char gauge_string[];
} // Grid
NAMESPACE_END(Grid);
#endif //HMC_MODULES_H #endif //HMC_MODULES_H