Fermionic Flow - lattice/quda GitHub Wiki
The fermionic Wilson flow (calling $\psi
$ a fermion) is defined similarly to Wilson flow of gauge fields, where all the fields in question are flowed forward in time resulting (calling flowed field $\psi_f$); the details of both algorithm classes are given in Appendix D of [this test] (https://arxiv.org/pdf/1302.5246). Conveniently, updates to fermionic fields require only knowledge of intermediate flowed gauge fields, allowing for MRHS support. The QUDA implementation for normal fermionic flow is contained in the performGFlowQuda
routine.
In calculations of flow time dependance for quantities like the chiral condensate, we must calculate the adjoint flow of fermionic fields ($\psi_{af}$) in addition to normal flow. Adjoint flow amounts to integrating flow equations backwards in time -- a naive implementation of this is numerically unstable and thus impractical. Backwards integration can be circumvented by two schemes detailed in Appendix E of [this test] (https://arxiv.org/pdf/1302.5246), both of which are implemented in QUDA. The first is a “safe” method that can integrate $n
$ flow steps in $\mathcal O (n^2)
$ time. The second is a “hierarchical method” that, by saving $m
$ intermediate gauge fields through the course of integration, and conducting integration in “blocks”, can complete the integration in approximately and order of magnitude faster time. The respective routines are contained in performAdjGFlowSafe
and performAdjGFlowHier
.
The test su3_fermion_test
contains examples of usage for all 3 flow routines mentioned above. The first check carried out is a test of equivalence between safe and hierarchical adjoint flow. The second check is a verification of $\langle \psi_{af} , \psi \rangle = \langle \psi, \psi_f \rangle$.
Meaningful command line arguments specific to this test are (currently written for wilson
fermions, but readily applicable to other variants as well):
-
--su3-smear-steps
, present insu3_test
, which sets the total amount of flow steps -
--su3-smear-epsilon
, present insu3_test
, which sets the width of time $\epsilon
$ evolved by in one integration step -
--su3-adj-gauge-nsave
, sets the amount of intermediate gauge fields to save when performing hierarchical adjoint flow -
--su3-hier-threshold
, sets the maximum black length, under which adjoint integration defaults to “safe” rather than “hierarchical”