mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-10 07:55:35 +00:00
Merge branch 'develop' into feature/distil
* develop: MGauge::GaugeFix use standard convention for fields fix bug: MGauge::GaugeFix should not modify its input add gauge transformation matrix as output to module MGauge/GaugeFix
This commit is contained in:
commit
b5eb97206b
@ -7,6 +7,7 @@ Source file: Hadrons/Modules/MGauge/GaugeFix.hpp
|
|||||||
Copyright (C) 2015-2019
|
Copyright (C) 2015-2019
|
||||||
|
|
||||||
Author: Antonin Portelli <antonin.portelli@me.com>
|
Author: Antonin Portelli <antonin.portelli@me.com>
|
||||||
|
Author: Nils Asmussen <n.asmussen@soton.ac.uk>
|
||||||
Author: Peter Boyle <paboyle@ph.ed.ac.uk>
|
Author: Peter Boyle <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
|
||||||
@ -58,6 +59,7 @@ class TGaugeFix: public Module<GaugeFixPar>
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GAUGE_TYPE_ALIASES(GImpl,);
|
GAUGE_TYPE_ALIASES(GImpl,);
|
||||||
|
typedef typename GImpl::GaugeLinkField GaugeMat;
|
||||||
public:
|
public:
|
||||||
// constructor
|
// constructor
|
||||||
TGaugeFix(const std::string name);
|
TGaugeFix(const std::string name);
|
||||||
@ -94,7 +96,7 @@ std::vector<std::string> TGaugeFix<GImpl>::getInput(void)
|
|||||||
template <typename GImpl>
|
template <typename GImpl>
|
||||||
std::vector<std::string> TGaugeFix<GImpl>::getOutput(void)
|
std::vector<std::string> TGaugeFix<GImpl>::getOutput(void)
|
||||||
{
|
{
|
||||||
std::vector<std::string> out = {getName()};
|
std::vector<std::string> out = {getName(), getName()+"_xform"};
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,6 +105,7 @@ template <typename GImpl>
|
|||||||
void TGaugeFix<GImpl>::setup(void)
|
void TGaugeFix<GImpl>::setup(void)
|
||||||
{
|
{
|
||||||
envCreateLat(GaugeField, getName());
|
envCreateLat(GaugeField, getName());
|
||||||
|
envCreateLat(GaugeMat, getName()+"_xform");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -116,6 +119,7 @@ void TGaugeFix<GImpl>::execute(void)
|
|||||||
LOG(Message) << par().gauge << std::endl;
|
LOG(Message) << par().gauge << std::endl;
|
||||||
auto &U = envGet(GaugeField, par().gauge);
|
auto &U = envGet(GaugeField, par().gauge);
|
||||||
auto &Umu = envGet(GaugeField, getName());
|
auto &Umu = envGet(GaugeField, getName());
|
||||||
|
auto &xform = envGet(GaugeMat, getName()+"_xform");
|
||||||
LOG(Message) << "Gauge Field fetched" << std::endl;
|
LOG(Message) << "Gauge Field fetched" << std::endl;
|
||||||
//do we allow maxiter etc to be user set?
|
//do we allow maxiter etc to be user set?
|
||||||
Real alpha = par().alpha;
|
Real alpha = par().alpha;
|
||||||
@ -123,8 +127,8 @@ void TGaugeFix<GImpl>::execute(void)
|
|||||||
Real Omega_tol = par().Omega_tol;
|
Real Omega_tol = par().Omega_tol;
|
||||||
Real Phi_tol = par().Phi_tol;
|
Real Phi_tol = par().Phi_tol;
|
||||||
bool Fourier = par().Fourier;
|
bool Fourier = par().Fourier;
|
||||||
FourierAcceleratedGaugeFixer<PeriodicGimplR>::SteepestDescentGaugeFix(U,alpha,maxiter,Omega_tol,Phi_tol,Fourier);
|
|
||||||
Umu = U;
|
Umu = U;
|
||||||
|
FourierAcceleratedGaugeFixer<PeriodicGimplR>::SteepestDescentGaugeFix(Umu,xform,alpha,maxiter,Omega_tol,Phi_tol,Fourier);
|
||||||
LOG(Message) << "Gauge Fixed" << std::endl;
|
LOG(Message) << "Gauge Fixed" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user