HILA
Loading...
Searching...
No Matches
fermion_action< gauge_field, DIRAC_OP > Class Template Reference

#include <fermion_field.h>

Inheritance diagram for fermion_action< gauge_field, DIRAC_OP >:
Collaboration diagram for fermion_action< gauge_field, DIRAC_OP >:

Public Member Functions

void initial_guess (Field< vector_type > &chi, Field< vector_type > &psi)
 
double action ()
 
void action (Field< double > &S)
 Calculate the action as a field of double precision numbers.
 
void draw_gaussian_fields ()
 
void save_new_solution (Field< vector_type > &psi)
 Add new solution to the list for MRE.
 
void force_step (double eps)
 
virtual void backup_fields ()
 Make a copy of fields updated in a trajectory.
 
virtual void restore_backup ()
 Restore the previous backup.
 

Public Attributes

int MRE_size = 0
 

Detailed Description

template<typename gauge_field, typename DIRAC_OP>
class fermion_action< gauge_field, DIRAC_OP >

Define the action of a pseudofermion for HMC

Implements methods for calculating the current action and the force (derivative with respect to the gauge field).

Includes an implementation of the MRE initial guess, which is calculated in the base of a few previous solutions. Using this requires a higher accuracy, since the initial guess is not time reversible.

Definition at line 22 of file fermion_field.h.

Member Function Documentation

◆ action()

template<typename gauge_field , typename DIRAC_OP >
double fermion_action< gauge_field, DIRAC_OP >::action ( )
inlinevirtual

Return the value of the action with the current field configuration

Reimplemented from action_base.

Definition at line 90 of file fermion_field.h.

◆ draw_gaussian_fields()

template<typename gauge_field , typename DIRAC_OP >
void fermion_action< gauge_field, DIRAC_OP >::draw_gaussian_fields ( )
inlinevirtual

Generate a pseudofermion field with a distribution given by the action chi 1/(D_dagger D) chi

Reimplemented from action_base.

Definition at line 123 of file fermion_field.h.

◆ force_step()

template<typename gauge_field , typename DIRAC_OP >
void fermion_action< gauge_field, DIRAC_OP >::force_step ( double  eps)
inlinevirtual

Update the momentum with the derivative of the fermion action

Reimplemented from action_base.

Definition at line 146 of file fermion_field.h.

◆ initial_guess()

template<typename gauge_field , typename DIRAC_OP >
void fermion_action< gauge_field, DIRAC_OP >::initial_guess ( Field< vector_type > &  chi,
Field< vector_type > &  psi 
)
inline

Build an initial guess for the fermion matrix inversion by inverting first in the limited space of a few previous solutions. These are saved in old_chi.

Definition at line 65 of file fermion_field.h.

Member Data Documentation

◆ MRE_size

template<typename gauge_field , typename DIRAC_OP >
int fermion_action< gauge_field, DIRAC_OP >::MRE_size = 0

We save a few previous invertions to build an initial guess. old_chi contains a list of these

Definition at line 32 of file fermion_field.h.


The documentation for this class was generated from the following file: