/************************************************************************************* Grid physics library, www.github.com/paboyle/Grid Source file: ./lib/qcd/action/fermion/Fermion_base_aggregate.h Copyright (C) 2015 Author: Peter Boyle 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 GRID_QCD_FERMION_H #define GRID_QCD_FERMION_H //////////////////////////////////////////////////////////////////////////////////////////////////// // Explicit explicit template instantiation is still required in the .cc files // // - CayleyFermion5D.cc // - PartialFractionFermion5D.cc // - WilsonFermion5D.cc // - WilsonKernelsHand.cc // - ContinuedFractionFermion5D.cc // - WilsonFermion.cc // - WilsonKernels.cc // - DomainWallEOFAFermion.cc // - MobiusEOFAFermion.cc // // The explicit instantiation is only avoidable if we move this source to headers and end up with include/parse/recompile // for EVERY .cc file. This define centralises the list and restores global push of impl cases //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////// // Fermion operators / actions //////////////////////////////////////////// #include // 4d wilson like #include // 4d wilson like #include // 4d wilson clover fermions #include // 5d base used by all 5d overlap types #include #include #include // Cayley types #include #include #include #include #include #include #include #include #include #include #include #include // Continued fraction #include #include #include // Partial fraction #include #include /////////////////////////////////////////////////////////////////////////////// // G5 herm -- this has to live in QCD since dirac matrix is not in the broader sector of code /////////////////////////////////////////////////////////////////////////////// #include //////////////////////////////////////////////////////////////////////////////////////////////////// // More maintainable to maintain the following typedef list centrally, as more "impl" targets // are added, (e.g. extension for gparity, half precision project in comms etc..) //////////////////////////////////////////////////////////////////////////////////////////////////// // Cayley 5d namespace Grid { namespace QCD { typedef WilsonFermion WilsonFermionR; typedef WilsonFermion WilsonFermionF; typedef WilsonFermion WilsonFermionD; typedef WilsonFermion WilsonFermionRL; typedef WilsonFermion WilsonFermionFH; typedef WilsonFermion WilsonFermionDF; typedef WilsonFermion WilsonAdjFermionR; typedef WilsonFermion WilsonAdjFermionF; typedef WilsonFermion WilsonAdjFermionD; typedef WilsonFermion WilsonTwoIndexSymmetricFermionR; typedef WilsonFermion WilsonTwoIndexSymmetricFermionF; typedef WilsonFermion WilsonTwoIndexSymmetricFermionD; // Twisted mass fermion typedef WilsonTMFermion WilsonTMFermionR; typedef WilsonTMFermion WilsonTMFermionF; typedef WilsonTMFermion WilsonTMFermionD; // Clover fermions typedef WilsonCloverFermion WilsonCloverFermionR; typedef WilsonCloverFermion WilsonCloverFermionF; typedef WilsonCloverFermion WilsonCloverFermionD; typedef DomainWallFermion DomainWallFermionR; typedef DomainWallFermion DomainWallFermionF; typedef DomainWallFermion DomainWallFermionD; typedef DomainWallFermion DomainWallFermionRL; typedef DomainWallFermion DomainWallFermionFH; typedef DomainWallFermion DomainWallFermionDF; typedef DomainWallEOFAFermion DomainWallEOFAFermionR; typedef DomainWallEOFAFermion DomainWallEOFAFermionF; typedef DomainWallEOFAFermion DomainWallEOFAFermionD; typedef DomainWallEOFAFermion DomainWallEOFAFermionRL; typedef DomainWallEOFAFermion DomainWallEOFAFermionFH; typedef DomainWallEOFAFermion DomainWallEOFAFermionDF; typedef MobiusFermion MobiusFermionR; typedef MobiusFermion MobiusFermionF; typedef MobiusFermion MobiusFermionD; typedef MobiusFermion MobiusFermionRL; typedef MobiusFermion MobiusFermionFH; typedef MobiusFermion MobiusFermionDF; typedef MobiusEOFAFermion MobiusEOFAFermionR; typedef MobiusEOFAFermion MobiusEOFAFermionF; typedef MobiusEOFAFermion MobiusEOFAFermionD; typedef MobiusEOFAFermion MobiusEOFAFermionRL; typedef MobiusEOFAFermion MobiusEOFAFermionFH; typedef MobiusEOFAFermion MobiusEOFAFermionDF; typedef ZMobiusFermion ZMobiusFermionR; typedef ZMobiusFermion ZMobiusFermionF; typedef ZMobiusFermion ZMobiusFermionD; typedef ZMobiusFermion ZMobiusFermionRL; typedef ZMobiusFermion ZMobiusFermionFH; typedef ZMobiusFermion ZMobiusFermionDF; // Ls vectorised typedef DomainWallFermion DomainWallFermionVec5dR; typedef DomainWallFermion DomainWallFermionVec5dF; typedef DomainWallFermion DomainWallFermionVec5dD; typedef DomainWallFermion DomainWallFermionVec5dRL; typedef DomainWallFermion DomainWallFermionVec5dFH; typedef DomainWallFermion DomainWallFermionVec5dDF; typedef DomainWallEOFAFermion DomainWallEOFAFermionVec5dR; typedef DomainWallEOFAFermion DomainWallEOFAFermionVec5dF; typedef DomainWallEOFAFermion DomainWallEOFAFermionVec5dD; typedef DomainWallEOFAFermion DomainWallEOFAFermionVec5dRL; typedef DomainWallEOFAFermion DomainWallEOFAFermionVec5dFH; typedef DomainWallEOFAFermion DomainWallEOFAFermionVec5dDF; typedef MobiusFermion MobiusFermionVec5dR; typedef MobiusFermion MobiusFermionVec5dF; typedef MobiusFermion MobiusFermionVec5dD; typedef MobiusFermion MobiusFermionVec5dRL; typedef MobiusFermion MobiusFermionVec5dFH; typedef MobiusFermion MobiusFermionVec5dDF; typedef MobiusEOFAFermion MobiusEOFAFermionVec5dR; typedef MobiusEOFAFermion MobiusEOFAFermionVec5dF; typedef MobiusEOFAFermion MobiusEOFAFermionVec5dD; typedef MobiusEOFAFermion MobiusEOFAFermionVec5dRL; typedef MobiusEOFAFermion MobiusEOFAFermionVec5dFH; typedef MobiusEOFAFermion MobiusEOFAFermionVec5dDF; typedef ZMobiusFermion ZMobiusFermionVec5dR; typedef ZMobiusFermion ZMobiusFermionVec5dF; typedef ZMobiusFermion ZMobiusFermionVec5dD; typedef ZMobiusFermion ZMobiusFermionVec5dRL; typedef ZMobiusFermion ZMobiusFermionVec5dFH; typedef ZMobiusFermion ZMobiusFermionVec5dDF; typedef ScaledShamirFermion ScaledShamirFermionR; typedef ScaledShamirFermion ScaledShamirFermionF; typedef ScaledShamirFermion ScaledShamirFermionD; typedef MobiusZolotarevFermion MobiusZolotarevFermionR; typedef MobiusZolotarevFermion MobiusZolotarevFermionF; typedef MobiusZolotarevFermion MobiusZolotarevFermionD; typedef ShamirZolotarevFermion ShamirZolotarevFermionR; typedef ShamirZolotarevFermion ShamirZolotarevFermionF; typedef ShamirZolotarevFermion ShamirZolotarevFermionD; typedef OverlapWilsonCayleyTanhFermion OverlapWilsonCayleyTanhFermionR; typedef OverlapWilsonCayleyTanhFermion OverlapWilsonCayleyTanhFermionF; typedef OverlapWilsonCayleyTanhFermion OverlapWilsonCayleyTanhFermionD; typedef OverlapWilsonCayleyZolotarevFermion OverlapWilsonCayleyZolotarevFermionR; typedef OverlapWilsonCayleyZolotarevFermion OverlapWilsonCayleyZolotarevFermionF; typedef OverlapWilsonCayleyZolotarevFermion OverlapWilsonCayleyZolotarevFermionD; // Continued fraction typedef OverlapWilsonContFracTanhFermion OverlapWilsonContFracTanhFermionR; typedef OverlapWilsonContFracTanhFermion OverlapWilsonContFracTanhFermionF; typedef OverlapWilsonContFracTanhFermion OverlapWilsonContFracTanhFermionD; typedef OverlapWilsonContFracZolotarevFermion OverlapWilsonContFracZolotarevFermionR; typedef OverlapWilsonContFracZolotarevFermion OverlapWilsonContFracZolotarevFermionF; typedef OverlapWilsonContFracZolotarevFermion OverlapWilsonContFracZolotarevFermionD; // Partial fraction typedef OverlapWilsonPartialFractionTanhFermion OverlapWilsonPartialFractionTanhFermionR; typedef OverlapWilsonPartialFractionTanhFermion OverlapWilsonPartialFractionTanhFermionF; typedef OverlapWilsonPartialFractionTanhFermion OverlapWilsonPartialFractionTanhFermionD; typedef OverlapWilsonPartialFractionZolotarevFermion OverlapWilsonPartialFractionZolotarevFermionR; typedef OverlapWilsonPartialFractionZolotarevFermion OverlapWilsonPartialFractionZolotarevFermionF; typedef OverlapWilsonPartialFractionZolotarevFermion OverlapWilsonPartialFractionZolotarevFermionD; // Gparity cases; partial list until tested typedef WilsonFermion GparityWilsonFermionR; typedef WilsonFermion GparityWilsonFermionF; typedef WilsonFermion GparityWilsonFermionD; typedef WilsonFermion GparityWilsonFermionRL; typedef WilsonFermion GparityWilsonFermionFH; typedef WilsonFermion GparityWilsonFermionDF; typedef DomainWallFermion GparityDomainWallFermionR; typedef DomainWallFermion GparityDomainWallFermionF; typedef DomainWallFermion GparityDomainWallFermionD; typedef DomainWallFermion GparityDomainWallFermionRL; typedef DomainWallFermion GparityDomainWallFermionFH; typedef DomainWallFermion GparityDomainWallFermionDF; typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionR; typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionF; typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionD; typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionRL; typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionFH; typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionDF; typedef WilsonTMFermion GparityWilsonTMFermionR; typedef WilsonTMFermion GparityWilsonTMFermionF; typedef WilsonTMFermion GparityWilsonTMFermionD; typedef WilsonTMFermion GparityWilsonTMFermionRL; typedef WilsonTMFermion GparityWilsonTMFermionFH; typedef WilsonTMFermion GparityWilsonTMFermionDF; typedef MobiusFermion GparityMobiusFermionR; typedef MobiusFermion GparityMobiusFermionF; typedef MobiusFermion GparityMobiusFermionD; typedef MobiusFermion GparityMobiusFermionRL; typedef MobiusFermion GparityMobiusFermionFH; typedef MobiusFermion GparityMobiusFermionDF; typedef MobiusEOFAFermion GparityMobiusEOFAFermionR; typedef MobiusEOFAFermion GparityMobiusEOFAFermionF; typedef MobiusEOFAFermion GparityMobiusEOFAFermionD; typedef MobiusEOFAFermion GparityMobiusEOFAFermionRL; typedef MobiusEOFAFermion GparityMobiusEOFAFermionFH; typedef MobiusEOFAFermion GparityMobiusEOFAFermionDF; typedef ImprovedStaggeredFermion ImprovedStaggeredFermionR; typedef ImprovedStaggeredFermion ImprovedStaggeredFermionF; typedef ImprovedStaggeredFermion ImprovedStaggeredFermionD; typedef ImprovedStaggeredFermion5D ImprovedStaggeredFermion5DR; typedef ImprovedStaggeredFermion5D ImprovedStaggeredFermion5DF; typedef ImprovedStaggeredFermion5D ImprovedStaggeredFermion5DD; typedef ImprovedStaggeredFermion5D ImprovedStaggeredFermionVec5dR; typedef ImprovedStaggeredFermion5D ImprovedStaggeredFermionVec5dF; typedef ImprovedStaggeredFermion5D ImprovedStaggeredFermionVec5dD; }} //////////////////// // Scalar QED actions // TODO: this needs to move to another header after rename to Fermion.h //////////////////// #include #include #endif