/************************************************************************************* 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 */ #pragma once //////////////////////////////////////////////////////////////////////////////////////////////////// // 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 // Slow DWF #include // 4d wilson like NAMESPACE_CHECK(Wilson); #include // 4d wilson like NAMESPACE_CHECK(WilsonTM); #include // 4d wilson clover fermions #include // 4d compact wilson clover fermions #include // 5d compact wilson clover fermions NAMESPACE_CHECK(WilsonClover); #include // 5d base used by all 5d overlap types NAMESPACE_CHECK(Wilson5D); #include #include #include NAMESPACE_CHECK(Staggered); #include // Cayley types #include #include #include #include #include NAMESPACE_CHECK(DomainWall); #include #include #include #include #include #include // Continued fraction #include #include #include // Partial fraction #include #include NAMESPACE_CHECK(Overlap); /////////////////////////////////////////////////////////////////////////////// // G5 herm -- this has to live in QCD since dirac matrix is not in the broader sector of code /////////////////////////////////////////////////////////////////////////////// #include /////////////////////////////////////////////////////////////////////////////// // Fourier accelerated Pauli Villars inverse support /////////////////////////////////////////////////////////////////////////////// #include NAMESPACE_CHECK(WilsonTM5); //////////////////////////////////////////////////////////////////////////////// // Move this group to a DWF specific tools/algorithms subdir? //////////////////////////////////////////////////////////////////////////////// #include #include #include #include #include NAMESPACE_CHECK(DWFutils); //////////////////////////////////////////////////////////////////////////////////////////////////// // 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_BEGIN(Grid); typedef WilsonFermion WilsonFermionD2; typedef WilsonFermion WilsonFermionF; typedef WilsonFermion WilsonFermionD; typedef WilsonFermion WilsonAdjFermionF; typedef WilsonFermion WilsonAdjFermionD; typedef WilsonFermion WilsonTwoIndexSymmetricFermionF; typedef WilsonFermion WilsonTwoIndexSymmetricFermionD; typedef WilsonFermion WilsonTwoIndexAntiSymmetricFermionF; typedef WilsonFermion WilsonTwoIndexAntiSymmetricFermionD; // Sp(2n) typedef WilsonFermion SpWilsonFermionF; typedef WilsonFermion SpWilsonFermionD; typedef WilsonFermion SpWilsonTwoIndexAntiSymmetricFermionF; typedef WilsonFermion SpWilsonTwoIndexAntiSymmetricFermionD; typedef WilsonFermion SpWilsonTwoIndexSymmetricFermionF; typedef WilsonFermion SpWilsonTwoIndexSymmetricFermionD; // Twisted mass fermion typedef WilsonTMFermion WilsonTMFermionD2; typedef WilsonTMFermion WilsonTMFermionF; typedef WilsonTMFermion WilsonTMFermionD; // Clover fermions template using WilsonClover = WilsonCloverFermion>; template using WilsonExpClover = WilsonCloverFermion>; typedef WilsonClover WilsonCloverFermionD2; typedef WilsonClover WilsonCloverFermionF; typedef WilsonClover WilsonCloverFermionD; typedef WilsonExpClover WilsonExpCloverFermionD2; typedef WilsonExpClover WilsonExpCloverFermionF; typedef WilsonExpClover WilsonExpCloverFermionD; typedef WilsonClover WilsonCloverAdjFermionF; typedef WilsonClover WilsonCloverAdjFermionD; typedef WilsonClover WilsonCloverTwoIndexSymmetricFermionF; typedef WilsonClover WilsonCloverTwoIndexSymmetricFermionD; typedef WilsonClover WilsonCloverTwoIndexAntiSymmetricFermionF; typedef WilsonClover WilsonCloverTwoIndexAntiSymmetricFermionD; // Compact Clover fermions template using CompactWilsonClover = CompactWilsonCloverFermion>; template using CompactWilsonClover5D = CompactWilsonCloverFermion5D>; template using CompactWilsonExpClover = CompactWilsonCloverFermion>; typedef CompactWilsonClover CompactWilsonCloverFermionD2; typedef CompactWilsonClover CompactWilsonCloverFermionF; typedef CompactWilsonClover CompactWilsonCloverFermionD; typedef CompactWilsonClover5D CompactWilsonCloverFermion5DD2; typedef CompactWilsonClover5D CompactWilsonCloverFermion5DF; typedef CompactWilsonClover5D CompactWilsonCloverFermion5DD; typedef CompactWilsonExpClover CompactWilsonExpCloverFermionD2; typedef CompactWilsonExpClover CompactWilsonExpCloverFermionF; typedef CompactWilsonExpClover CompactWilsonExpCloverFermionD; typedef CompactWilsonClover CompactWilsonCloverAdjFermionF; typedef CompactWilsonClover CompactWilsonCloverAdjFermionD; typedef CompactWilsonClover CompactWilsonCloverTwoIndexSymmetricFermionF; typedef CompactWilsonClover CompactWilsonCloverTwoIndexSymmetricFermionD; typedef CompactWilsonClover CompactWilsonCloverTwoIndexAntiSymmetricFermionF; typedef CompactWilsonClover CompactWilsonCloverTwoIndexAntiSymmetricFermionD; // Domain Wall fermions typedef DomainWallFermion DomainWallFermionF; typedef DomainWallFermion DomainWallFermionD; typedef DomainWallFermion DomainWallFermionD2; typedef DomainWallEOFAFermion DomainWallEOFAFermionD2; typedef DomainWallEOFAFermion DomainWallEOFAFermionF; typedef DomainWallEOFAFermion DomainWallEOFAFermionD; typedef MobiusFermion MobiusFermionD2; typedef MobiusFermion MobiusFermionF; typedef MobiusFermion MobiusFermionD; typedef MobiusEOFAFermion MobiusEOFAFermionD2; typedef MobiusEOFAFermion MobiusEOFAFermionF; typedef MobiusEOFAFermion MobiusEOFAFermionD; typedef ZMobiusFermion ZMobiusFermionD2; typedef ZMobiusFermion ZMobiusFermionF; typedef ZMobiusFermion ZMobiusFermionD; typedef ScaledShamirFermion ScaledShamirFermionD2; typedef ScaledShamirFermion ScaledShamirFermionF; typedef ScaledShamirFermion ScaledShamirFermionD; typedef MobiusZolotarevFermion MobiusZolotarevFermionD2; typedef MobiusZolotarevFermion MobiusZolotarevFermionF; typedef MobiusZolotarevFermion MobiusZolotarevFermionD; typedef ShamirZolotarevFermion ShamirZolotarevFermionD2; typedef ShamirZolotarevFermion ShamirZolotarevFermionF; typedef ShamirZolotarevFermion ShamirZolotarevFermionD; typedef OverlapWilsonCayleyTanhFermion OverlapWilsonCayleyTanhFermionD2; typedef OverlapWilsonCayleyTanhFermion OverlapWilsonCayleyTanhFermionF; typedef OverlapWilsonCayleyTanhFermion OverlapWilsonCayleyTanhFermionD; typedef OverlapWilsonCayleyZolotarevFermion OverlapWilsonCayleyZolotarevFermionD2; typedef OverlapWilsonCayleyZolotarevFermion OverlapWilsonCayleyZolotarevFermionF; typedef OverlapWilsonCayleyZolotarevFermion OverlapWilsonCayleyZolotarevFermionD; // Continued fraction typedef OverlapWilsonContFracTanhFermion OverlapWilsonContFracTanhFermionD2; typedef OverlapWilsonContFracTanhFermion OverlapWilsonContFracTanhFermionF; typedef OverlapWilsonContFracTanhFermion OverlapWilsonContFracTanhFermionD; typedef OverlapWilsonContFracZolotarevFermion OverlapWilsonContFracZolotarevFermionD2; typedef OverlapWilsonContFracZolotarevFermion OverlapWilsonContFracZolotarevFermionF; typedef OverlapWilsonContFracZolotarevFermion OverlapWilsonContFracZolotarevFermionD; // Partial fraction typedef OverlapWilsonPartialFractionTanhFermion OverlapWilsonPartialFractionTanhFermionD2; typedef OverlapWilsonPartialFractionTanhFermion OverlapWilsonPartialFractionTanhFermionF; typedef OverlapWilsonPartialFractionTanhFermion OverlapWilsonPartialFractionTanhFermionD; typedef OverlapWilsonPartialFractionZolotarevFermion OverlapWilsonPartialFractionZolotarevFermionD2; typedef OverlapWilsonPartialFractionZolotarevFermion OverlapWilsonPartialFractionZolotarevFermionF; typedef OverlapWilsonPartialFractionZolotarevFermion OverlapWilsonPartialFractionZolotarevFermionD; // Gparity cases; partial list until tested typedef WilsonFermion GparityWilsonFermionF; typedef WilsonFermion GparityWilsonFermionD; typedef DomainWallFermion GparityDomainWallFermionF; typedef DomainWallFermion GparityDomainWallFermionD; typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionD2; typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionF; typedef DomainWallEOFAFermion GparityDomainWallEOFAFermionD; typedef WilsonTMFermion GparityWilsonTMFermionD2; typedef WilsonTMFermion GparityWilsonTMFermionF; typedef WilsonTMFermion GparityWilsonTMFermionD; typedef MobiusFermion GparityMobiusFermionD2; typedef MobiusFermion GparityMobiusFermionF; typedef MobiusFermion GparityMobiusFermionD; typedef MobiusEOFAFermion GparityMobiusEOFAFermionD2; typedef MobiusEOFAFermion GparityMobiusEOFAFermionF; typedef MobiusEOFAFermion GparityMobiusEOFAFermionD; typedef ImprovedStaggeredFermion ImprovedStaggeredFermionF; typedef ImprovedStaggeredFermion ImprovedStaggeredFermionD; typedef NaiveStaggeredFermion NaiveStaggeredFermionF; typedef NaiveStaggeredFermion NaiveStaggeredFermionD; typedef ImprovedStaggeredFermion5D ImprovedStaggeredFermion5DF; typedef ImprovedStaggeredFermion5D ImprovedStaggeredFermion5DD; NAMESPACE_END(Grid); //////////////////// // Scalar QED actions // TODO: this needs to move to another header after rename to Fermion.h //////////////////// #include #include