mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-09 21:50:45 +01:00
Namespace
This commit is contained in:
parent
361ce948c3
commit
e61189db3f
@ -25,44 +25,43 @@ 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 HMC_TOP_CHARGE_H
|
#ifndef HMC_TOP_CHARGE_H
|
||||||
#define HMC_TOP_CHARGE_H
|
#define HMC_TOP_CHARGE_H
|
||||||
|
|
||||||
namespace Grid {
|
NAMESPACE_BEGIN(Grid);
|
||||||
namespace QCD {
|
|
||||||
|
|
||||||
struct TopologySmearingParameters : Serializable {
|
struct TopologySmearingParameters : Serializable {
|
||||||
GRID_SERIALIZABLE_CLASS_MEMBERS(TopologySmearingParameters,
|
GRID_SERIALIZABLE_CLASS_MEMBERS(TopologySmearingParameters,
|
||||||
int, steps,
|
int, steps,
|
||||||
float, step_size,
|
float, step_size,
|
||||||
int, meas_interval,
|
int, meas_interval,
|
||||||
float, maxTau);
|
float, maxTau);
|
||||||
|
|
||||||
TopologySmearingParameters(int s = 0, float ss = 0.0f, int mi = 0, float mT = 0.0f):
|
TopologySmearingParameters(int s = 0, float ss = 0.0f, int mi = 0, float mT = 0.0f):
|
||||||
steps(s), step_size(ss), meas_interval(mi), maxTau(mT){}
|
steps(s), step_size(ss), meas_interval(mi), maxTau(mT){}
|
||||||
|
|
||||||
template < class ReaderClass >
|
template < class ReaderClass >
|
||||||
TopologySmearingParameters(Reader<ReaderClass>& Reader){
|
TopologySmearingParameters(Reader<ReaderClass>& Reader){
|
||||||
read(Reader, "Smearing", *this);
|
read(Reader, "Smearing", *this);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct TopologyObsParameters : Serializable {
|
struct TopologyObsParameters : Serializable {
|
||||||
GRID_SERIALIZABLE_CLASS_MEMBERS(TopologyObsParameters,
|
GRID_SERIALIZABLE_CLASS_MEMBERS(TopologyObsParameters,
|
||||||
int, interval,
|
int, interval,
|
||||||
bool, do_smearing,
|
bool, do_smearing,
|
||||||
TopologySmearingParameters, Smearing);
|
TopologySmearingParameters, Smearing);
|
||||||
|
|
||||||
TopologyObsParameters(int interval = 1, bool smearing = false):
|
TopologyObsParameters(int interval = 1, bool smearing = false):
|
||||||
interval(interval), Smearing(smearing){}
|
interval(interval), Smearing(smearing){}
|
||||||
|
|
||||||
template <class ReaderClass >
|
template <class ReaderClass >
|
||||||
TopologyObsParameters(Reader<ReaderClass>& Reader){
|
TopologyObsParameters(Reader<ReaderClass>& Reader){
|
||||||
read(Reader, "TopologyMeasurement", *this);
|
read(Reader, "TopologyMeasurement", *this);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -70,53 +69,53 @@ struct TopologyObsParameters : Serializable {
|
|||||||
// this is only defined for a gauge theory
|
// this is only defined for a gauge theory
|
||||||
template <class Impl>
|
template <class Impl>
|
||||||
class TopologicalCharge : public HmcObservable<typename Impl::Field> {
|
class TopologicalCharge : public HmcObservable<typename Impl::Field> {
|
||||||
TopologyObsParameters Pars;
|
TopologyObsParameters Pars;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// 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);
|
||||||
|
|
||||||
// necessary for HmcObservable compatibility
|
// necessary for HmcObservable compatibility
|
||||||
typedef typename Impl::Field Field;
|
typedef typename Impl::Field Field;
|
||||||
|
|
||||||
TopologicalCharge(int interval = 1, bool do_smearing = false):
|
TopologicalCharge(int interval = 1, bool do_smearing = false):
|
||||||
Pars(interval, do_smearing){}
|
Pars(interval, do_smearing){}
|
||||||
|
|
||||||
TopologicalCharge(TopologyObsParameters P):Pars(P){
|
TopologicalCharge(TopologyObsParameters P):Pars(P){
|
||||||
std::cout << GridLogDebug << "Creating TopologicalCharge " << std::endl;
|
std::cout << GridLogDebug << "Creating TopologicalCharge " << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrajectoryComplete(int traj,
|
void TrajectoryComplete(int traj,
|
||||||
Field &U,
|
Field &U,
|
||||||
GridSerialRNG &sRNG,
|
GridSerialRNG &sRNG,
|
||||||
GridParallelRNG &pRNG) {
|
GridParallelRNG &pRNG) {
|
||||||
|
|
||||||
if (traj%Pars.interval == 0){
|
if (traj%Pars.interval == 0){
|
||||||
// Smearing
|
// Smearing
|
||||||
Field Usmear = U;
|
Field Usmear = U;
|
||||||
int def_prec = std::cout.precision();
|
int def_prec = std::cout.precision();
|
||||||
|
|
||||||
if (Pars.do_smearing){
|
if (Pars.do_smearing){
|
||||||
// using wilson flow by default here
|
// using wilson flow by default here
|
||||||
WilsonFlow<PeriodicGimplR> WF(Pars.Smearing.steps, Pars.Smearing.step_size, Pars.Smearing.meas_interval);
|
WilsonFlow<PeriodicGimplR> WF(Pars.Smearing.steps, Pars.Smearing.step_size, Pars.Smearing.meas_interval);
|
||||||
WF.smear_adaptive(Usmear, U, Pars.Smearing.maxTau);
|
WF.smear_adaptive(Usmear, U, Pars.Smearing.maxTau);
|
||||||
Real T0 = WF.energyDensityPlaquette(Usmear);
|
Real T0 = WF.energyDensityPlaquette(Usmear);
|
||||||
std::cout << GridLogMessage << std::setprecision(std::numeric_limits<Real>::digits10 + 1)
|
std::cout << GridLogMessage << std::setprecision(std::numeric_limits<Real>::digits10 + 1)
|
||||||
<< "T0 : [ " << traj << " ] "<< T0 << std::endl;
|
<< "T0 : [ " << traj << " ] "<< T0 << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
Real q = WilsonLoops<Impl>::TopologicalCharge(Usmear);
|
Real q = WilsonLoops<Impl>::TopologicalCharge(Usmear);
|
||||||
std::cout << GridLogMessage
|
std::cout << GridLogMessage
|
||||||
<< std::setprecision(std::numeric_limits<Real>::digits10 + 1)
|
<< std::setprecision(std::numeric_limits<Real>::digits10 + 1)
|
||||||
<< "Topological Charge: [ " << traj << " ] "<< q << std::endl;
|
<< "Topological Charge: [ " << traj << " ] "<< q << std::endl;
|
||||||
|
|
||||||
std::cout.precision(def_prec);
|
std::cout.precision(def_prec);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
|
||||||
}
|
NAMESPACE_END(Grid);
|
||||||
|
|
||||||
#endif // HMC_TOP_CHARGE_H
|
#endif // HMC_TOP_CHARGE_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user