mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-10 07:55:35 +00:00
Hadrons: type alias cleaning and global correlator class (need to propagate)
This commit is contained in:
parent
0cf94587cd
commit
3692c7f1ef
@ -44,6 +44,8 @@ See the full license in the file "LICENSE" in the top level distribution directo
|
|||||||
#define DEFAULT_ASCII_PREC 16
|
#define DEFAULT_ASCII_PREC 16
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define ARG(...) __VA_ARGS__
|
||||||
|
|
||||||
/* the 'using Grid::operator<<;' statement prevents a very nasty compilation
|
/* the 'using Grid::operator<<;' statement prevents a very nasty compilation
|
||||||
* error with GCC 5 (clang & GCC 6 compile fine without it).
|
* error with GCC 5 (clang & GCC 6 compile fine without it).
|
||||||
*/
|
*/
|
||||||
@ -101,15 +103,16 @@ BEGIN_HADRONS_NAMESPACE
|
|||||||
typedef typename Impl::Field ScalarField##suffix;\
|
typedef typename Impl::Field ScalarField##suffix;\
|
||||||
typedef typename Impl::PropagatorField PropagatorField##suffix;\
|
typedef typename Impl::PropagatorField PropagatorField##suffix;\
|
||||||
typedef typename Impl::SitePropagator::scalar_object SitePropagator##suffix;\
|
typedef typename Impl::SitePropagator::scalar_object SitePropagator##suffix;\
|
||||||
typedef std::vector<SitePropagator##suffix> SlicedPropagator##suffix;
|
typedef typename Impl::ComplexField ComplexField##suffix;\
|
||||||
|
typedef std::vector<SitePropagator##suffix> SlicedPropagator##suffix;\
|
||||||
|
typedef std::vector<typename ComplexField##suffix::vector_object::scalar_object> SlicedComplex##suffix;
|
||||||
|
|
||||||
#define FERM_TYPE_ALIASES(FImpl, suffix)\
|
#define FERM_TYPE_ALIASES(FImpl, suffix)\
|
||||||
BASIC_TYPE_ALIASES(FImpl, suffix);\
|
BASIC_TYPE_ALIASES(FImpl, suffix);\
|
||||||
typedef FermionOperator<FImpl> FMat##suffix;\
|
typedef FermionOperator<FImpl> FMat##suffix;\
|
||||||
typedef typename FImpl::FermionField FermionField##suffix;\
|
typedef typename FImpl::FermionField FermionField##suffix;\
|
||||||
typedef typename FImpl::GaugeField GaugeField##suffix;\
|
typedef typename FImpl::GaugeField GaugeField##suffix;\
|
||||||
typedef typename FImpl::DoubledGaugeField DoubledGaugeField##suffix;\
|
typedef typename FImpl::DoubledGaugeField DoubledGaugeField##suffix;
|
||||||
typedef typename FImpl::ComplexField ComplexField##suffix;
|
|
||||||
|
|
||||||
#define GAUGE_TYPE_ALIASES(GImpl, suffix)\
|
#define GAUGE_TYPE_ALIASES(GImpl, suffix)\
|
||||||
typedef typename GImpl::GaugeField GaugeField##suffix;
|
typedef typename GImpl::GaugeField GaugeField##suffix;
|
||||||
@ -263,6 +266,15 @@ void tokenReplace(std::string &str, const std::string token,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// generic correlator class
|
||||||
|
template <typename Metadata, typename Scalar = Complex>
|
||||||
|
struct Correlator: Serializable
|
||||||
|
{
|
||||||
|
GRID_SERIALIZABLE_CLASS_MEMBERS(ARG(Correlator<Metadata, Scalar>),
|
||||||
|
Metadata, info,
|
||||||
|
std::vector<Complex>, corr);
|
||||||
|
};
|
||||||
|
|
||||||
END_HADRONS_NAMESPACE
|
END_HADRONS_NAMESPACE
|
||||||
|
|
||||||
#include <Hadrons/Exceptions.hpp>
|
#include <Hadrons/Exceptions.hpp>
|
||||||
|
@ -65,7 +65,6 @@ static ns##mod##ModuleRegistrar ns##mod##ModuleRegistrarInstance;
|
|||||||
extern template class base;\
|
extern template class base;\
|
||||||
MODULE_REGISTER(mod, ARG(base), ns);
|
MODULE_REGISTER(mod, ARG(base), ns);
|
||||||
|
|
||||||
#define ARG(...) __VA_ARGS__
|
|
||||||
#define HADRONS_MACRO_REDIRECT_12(arg1, arg2, macro, ...) macro
|
#define HADRONS_MACRO_REDIRECT_12(arg1, arg2, macro, ...) macro
|
||||||
#define HADRONS_MACRO_REDIRECT_23(arg1, arg2, arg3, macro, ...) macro
|
#define HADRONS_MACRO_REDIRECT_23(arg1, arg2, arg3, macro, ...) macro
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user