1
0
mirror of https://github.com/paboyle/Grid.git synced 2024-11-10 07:55:35 +00:00

Fixed seg fault for observable modules

This commit is contained in:
Guido Cossu 2017-03-17 13:59:31 +09:00
parent 6d1e9e5f92
commit 91886068fe
26 changed files with 121 additions and 234 deletions

View File

@ -64,7 +64,7 @@ SOFTWARE.
#endif #endif
#elif defined(__GNUC__) #elif defined(__GNUC__)
#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#if GCC_VERSION < 40900 #if GCC_VERSION < 40800
#error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers"
#endif #endif
#endif #endif

View File

@ -68,6 +68,7 @@ class HMCResourceManager {
// A vector of HmcObservable modules // A vector of HmcObservable modules
std::vector<std::unique_ptr<ObservableBaseModule> > ObservablesList; std::vector<std::unique_ptr<ObservableBaseModule> > ObservablesList;
// A vector of HmcObservable modules // A vector of HmcObservable modules
std::multimap<int, std::unique_ptr<ActionBaseModule> > ActionsList; std::multimap<int, std::unique_ptr<ActionBaseModule> > ActionsList;
std::vector<int> multipliers; std::vector<int> multipliers;
@ -249,9 +250,9 @@ class HMCResourceManager {
// Observables // Observables
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
void AddObservable(ObservableBaseModule *O){ template<class T, class... Types>
// acquire resource void AddObservable(Types&&... Args){
ObservablesList.push_back(std::unique_ptr<ObservableBaseModule>(std::move(O))); ObservablesList.push_back(std::unique_ptr<T>(new T(std::forward<Types>(Args)...)));
} }
std::vector<HmcObservable<typename ImplementationPolicy::Field>* > GetObservables(){ std::vector<HmcObservable<typename ImplementationPolicy::Field>* > GetObservables(){

View File

@ -41,13 +41,14 @@ class ObservableModule
public: public:
typedef HMCModuleBase< QCD::HmcObservable< typename ObservableType::Field> > Base; typedef HMCModuleBase< QCD::HmcObservable< typename ObservableType::Field> > Base;
typedef typename Base::Product Product; typedef typename Base::Product Product;
typedef OPar Parameters;
std::unique_ptr<ObservableType> ObservablePtr; std::unique_ptr<ObservableType> ObservablePtr;
ObservableModule(OPar Par) : Parametrized<OPar>(Par) {} ObservableModule(OPar Par) : Parametrized<OPar>(Par) {}
virtual void print_parameters(){ virtual void print_parameters(){
std::cout << this->Par_ << std::endl; Parametrized<OPar>::print_parameters();
} }
template <class ReaderClass> template <class ReaderClass>
@ -79,14 +80,18 @@ class PlaquetteObsParameters : Serializable {
}; };
template < class Impl > template < class Impl >
class PlaquetteMod: public ObservableModule<PlaquetteLogger<Impl>, PlaquetteObsParameters>{ class PlaquetteMod: public ObservableModule<PlaquetteLogger<Impl>, NoParameters>{
typedef ObservableModule<PlaquetteLogger<Impl>, PlaquetteObsParameters> ObsBase; typedef ObservableModule<PlaquetteLogger<Impl>, NoParameters> ObsBase;
using ObsBase::ObsBase; // for constructors using ObsBase::ObsBase; // for constructors
// acquire resource // acquire resource
virtual void initialize(){ virtual void initialize(){
this->ObservablePtr.reset(new PlaquetteLogger<Impl>(this->Par_.output_prefix)); this->ObservablePtr.reset(new PlaquetteLogger<Impl>());
} }
public:
PlaquetteMod(): ObsBase(NoParameters()){}
}; };

View File

@ -2,7 +2,7 @@
Grid physics library, www.github.com/paboyle/Grid Grid physics library, www.github.com/paboyle/Grid
Source file: ./lib/qcd/modules/Registration.h Source file: ./lib/qcd/modules/plaquette.h
Copyright (C) 2017 Copyright (C) 2017
@ -43,41 +43,25 @@ class PlaquetteLogger : public HmcObservable<typename Impl::Field> {
// here forces the Impl to be of gauge fields // here forces the Impl to be of gauge fields
// if not the compiler will complain // if not the compiler will complain
INHERIT_GIMPL_TYPES(Impl); INHERIT_GIMPL_TYPES(Impl);
typedef typename Impl::Field Field; // necessary for HmcObservable compatibility
explicit PlaquetteLogger(std::string cf) { Stem = cf; } // necessary for HmcObservable compatibility
typedef typename Impl::Field Field;
void TrajectoryComplete(int traj, void TrajectoryComplete(int traj,
Field &U, Field &U,
GridSerialRNG &sRNG, GridSerialRNG &sRNG,
GridParallelRNG &pRNG) { GridParallelRNG &pRNG) {
std::string file;
{
std::ostringstream os;
os << Stem << "." << traj;
file = os.str();
}
std::ofstream of(file);
RealD peri_plaq = WilsonLoops<PeriodicGimplR>::avgPlaquette(U); RealD plaq = WilsonLoops<Impl>::avgPlaquette(U);
RealD peri_rect = WilsonLoops<PeriodicGimplR>::avgRectangle(U);
RealD impl_plaq = WilsonLoops<Impl>::avgPlaquette(U); int def_prec = std::cout.precision();
RealD impl_rect = WilsonLoops<Impl>::avgRectangle(U);
std::cout << GridLogMessage
<< std::setprecision(std::numeric_limits<Real>::digits10 + 1)
<< "Plaquette: [ " << traj << " ] "<< plaq << std::endl;
std::cout.precision(def_prec);
// Fixme reorganise this output
of << traj << " " << impl_plaq << " " << impl_rect << " " << peri_plaq
<< " " << peri_rect << std::endl;
std::cout << GridLogMessage << "traj"
<< " "
<< "plaq "
<< " "
<< " rect "
<< " "
<< "peri_plaq"
<< " "
<< "peri_rect" << std::endl;
std::cout << GridLogMessage << traj << " " << impl_plaq << " " << impl_rect
<< " " << peri_plaq << " " << peri_rect << std::endl;
} }
}; };

View File

@ -0,0 +1,49 @@
/*************************************************************************************
Grid physics library, www.github.com/paboyle/Grid
Source file: ./lib/qcd/modules/topological_charge.h
Copyright (C) 2017
Author: Guido Cossu <guido.cossu@ed.ac.uk>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
See the full license in the file "LICENSE" in the top level distribution
directory
*************************************************************************************/
/* END LEGAL */
#ifndef HMC_TOP_CHARGE_H
#define HMC_TOP_CHARGE_H
namespace Grid {
namespace QCD (
// this is only defined for a gauge theory
template <class Impl>
class TopologicalCharge : public HmcObservable<typename Impl::Field> {
private:
std::string Stem;
public:
};
)
}
#endif // HMC_TOP_CHARGE_H

View File

@ -72,10 +72,8 @@ int main(int argc, char **argv) {
// Construct observables // Construct observables
// here there is too much indirection // here there is too much indirection
PlaquetteObsParameters PlPar; typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlPar.output_prefix = "Plaquette"; TheHMC.Resources.AddObservable<PlaqObs>();
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -74,10 +74,8 @@ int main(int argc, char **argv) {
// Construct observables // Construct observables
// here there is too much indirection // here there is too much indirection
PlaquetteObsParameters PlPar; typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlPar.output_prefix = "Plaquette"; TheHMC.Resources.AddObservable<PlaqObs>();
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -71,10 +71,8 @@ int main(int argc, char **argv) {
// Construct observables // Construct observables
// here there is too much indirection // here there is too much indirection
PlaquetteObsParameters PlPar; typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlPar.output_prefix = "Plaquette"; TheHMC.Resources.AddObservable<PlaqObs>();
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -69,10 +69,8 @@ int main(int argc, char **argv) {
// Construct observables // Construct observables
// here there is too much indirection // here there is too much indirection
PlaquetteObsParameters PlPar; typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlPar.output_prefix = "Plaquette"; TheHMC.Resources.AddObservable<PlaqObs>();
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -1,4 +1,4 @@
/************************************************************************************* /*************************************************************************************
Grid physics library, www.github.com/paboyle/Grid Grid physics library, www.github.com/paboyle/Grid
@ -6,8 +6,8 @@
Copyright (C) 2015 Copyright (C) 2015
Author: Peter Boyle <paboyle@ph.ed.ac.uk> Author: Peter Boyle <paboyle@ph.ed.ac.uk>
Author: paboyle <paboyle@ph.ed.ac.uk> Author: paboyle <paboyle@ph.ed.ac.uk>
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -24,8 +24,8 @@ Author: paboyle <paboyle@ph.ed.ac.uk>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
See the full license in the file "LICENSE" in the top level distribution directory See the full license in the file "LICENSE" in the top level distribution directory
*************************************************************************************/ *************************************************************************************/
/* END LEGAL */ /* END LEGAL */
#include <Grid/Grid.h> #include <Grid/Grid.h>
@ -70,11 +70,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -69,11 +69,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -70,11 +70,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -62,11 +62,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -63,11 +63,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -73,11 +73,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -70,11 +70,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -65,10 +65,8 @@ int main(int argc, char **argv) {
// Construct observables // Construct observables
// here there is too much indirection // here there is too much indirection
PlaquetteObsParameters PlPar; typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlPar.output_prefix = "Plaquette"; TheHMC.Resources.AddObservable<PlaqObs>();
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -1,97 +0,0 @@
/*************************************************************************************
Grid physics library, www.github.com/paboyle/Grid
Source file: ./tests/Test_hmc_WilsonFermionGauge.cc
Copyright (C) 2015
Author: Peter Boyle <pabobyle@ph.ed.ac.uk>
Author: neo <cossu@post.kek.jp>
Author: Guido Cossu <guido.cossu@ed.ac.uk>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
See the full license in the file "LICENSE" in the top level distribution
directory
*************************************************************************************/
/* END LEGAL */
#include <Grid/Grid.h>
int main(int argc, char **argv) {
using namespace Grid;
using namespace Grid::QCD;
Grid_init(&argc, &argv);
int threads = GridThread::GetThreads();
// here make a routine to print all the relevant information on the run
std::cout << GridLogMessage << "Grid is setup to use " << threads << " threads" << std::endl;
// Typedefs to simplify notation
typedef GenericHMCRunner<LeapFrog> HMCWrapper; // Uses the default minimum norm
HMCWrapper TheHMC;
// Grid from the command line
TheHMC.Resources.AddFourDimGrid("gauge");
// Possibile to create the module by hand
// hardcoding parameters or using a Reader
// Checkpointer definition
CheckpointerParameters CPparams;
CPparams.config_prefix = "ckpoint_lat";
CPparams.rng_prefix = "ckpoint_rng";
CPparams.saveInterval = 10;
CPparams.format = "IEEE64BIG";
TheHMC.Resources.LoadBinaryCheckpointer(CPparams);
RNGModuleParameters RNGpar;
RNGpar.serial_seeds = "1 2 3 4 5";
RNGpar.parallel_seeds = "6 7 8 9 10";
TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables
// here there is too much indirection
PlaquetteObsParameters PlPar;
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
//////////////////////////////////////////////
/////////////////////////////////////////////////////////////
// Collect actions, here use more encapsulation
// need wrappers of the fermionic classes
// that have a complex construction
// standard
RealD beta = 5.6;
WilsonGaugeActionR Waction(beta);
ActionLevel<HMCWrapper::Field> Level1(1);
Level1.push_back(&Waction);
//Level1.push_back(WGMod.getPtr());
TheHMC.TheAction.push_back(Level1);
/////////////////////////////////////////////////////////////
// HMC parameters are serialisable
TheHMC.Parameters.MD.MDsteps = 40;
TheHMC.Parameters.MD.trajL = 1.0;
TheHMC.ReadCommandLine(argc, argv); // these can be parameters from file
TheHMC.Run(); // no smearing
Grid_finalize();
} // main

View File

@ -82,11 +82,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -69,11 +69,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -70,11 +70,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////
@ -100,7 +97,7 @@ int main(int argc, char **argv) {
ConjugateGradient<FermionField> CG(1.0e-8, 2000); ConjugateGradient<FermionField> CG(1.0e-8, 2000);
TwoFlavourPseudoFermionAction<FermionImplPolicy> Nf2(FermOp, CG, CG); TwoFlavourEvenOddPseudoFermionAction<FermionImplPolicy> Nf2(FermOp, CG, CG);
// With modules // With modules
/* /*

View File

@ -72,11 +72,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -69,11 +69,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -70,11 +70,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -70,11 +70,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -69,11 +69,8 @@ int main(int argc, char **argv) {
TheHMC.Resources.SetRNGSeeds(RNGpar); TheHMC.Resources.SetRNGSeeds(RNGpar);
// Construct observables // Construct observables
// here there is too much indirection typedef PlaquetteMod<HMCWrapper::ImplPolicy> PlaqObs;
PlaquetteObsParameters PlPar; TheHMC.Resources.AddObservable<PlaqObs>();
PlPar.output_prefix = "Plaquette";
PlaquetteMod<HMCWrapper::ImplPolicy> PlaqModule(PlPar);
TheHMC.Resources.AddObservable(&PlaqModule);
////////////////////////////////////////////// //////////////////////////////////////////////
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////