Columbia Physics System  5.0.16..1
Public Member Functions
cps::Fclover Class Reference

A class implementing clover improved Wilson fermions. More...

#include <f_wilson_types.h>

Inheritance diagram for cps::Fclover:
Inheritance graph
[legend]
Collaboration diagram for cps::Fclover:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 Fclover ()
virtual ~Fclover ()
FclassType Fclass () const
 Returns the type of fermion action.
int FchkbEvl () const
 Determines whether one or both parities are used in the molecular dynamics evolution.
int FmatEvlInv (Vector *f_out, Vector *f_in, CgArg *cg_arg, Float *true_res, CnvFrmType cnv_frm=CNV_FRM_YES)
 The matrix inversion used in the molecular dynamics algorithms.
int FmatEvlMInv (Vector **f_out, Vector *f_in, Float *shift, int Nshift, int isz, CgArg **cg_arg, CnvFrmType cnv_frm, MultiShiftSolveType type, Float *alpha, Vector **f_out_d)
 The matrix inversion used in the molecular dynamics algorithms.
void FminResExt (Vector *sol, Vector *source, Vector **sol_old, Vector **vm, int degree, CgArg *cg_arg, CnvFrmType cnv_frm)
int FmatInv (Vector *f_out, Vector *f_in, CgArg *cg_arg, Float *true_res, CnvFrmType cnv_frm=CNV_FRM_YES, PreserveType prs_f_in=PRESERVE_YES)
 Fermion matrix inversion.
int FeigSolv (Vector **f_eigenv, Float *lambda, Float *chirality, int *valid_eig, Float **hsum, EigArg *eig_arg, CnvFrmType cnv_frm=CNV_FRM_YES)
 It the eigenvectors and eigenvalues of the fermion matrix.
Float SetPhi (Vector *phi, Vector *frm1, Vector *frm2, Float mass, DagType dag)
 Initialises the pseudofermion field.
ForceArg EvolveMomFforce (Matrix *mom, Vector *frm, Float mass, Float step_size)
 Molecular dynamics evolution due to the fermion force.
ForceArg EvolveMomFforce (Matrix *mom, Vector *phi, Vector *eta, Float mass, Float step_size)
 Molecular dynamics evolution due to the boson part of quotient integrator.
ForceArg RHMC_EvolveMomFforce (Matrix *mom, Vector **sol, int degree, int isz, Float *alpha, Float mass, Float dt, Vector **sol_d, ForceMeasure measure)
Float BhamiltonNode (Vector *boson, Float mass)

Detailed Description

A class implementing clover improved Wilson fermions.

Definition at line 307 of file f_wilson_types.h.


Constructor & Destructor Documentation

cps::Fclover::~Fclover ( ) [virtual]

Definition at line 96 of file f_clover.C.

References cps::clover_end(), cps::Verbose::Func(), cps::sfree(), cps::Verbose::Sfree(), and cps::VRB.

Here is the call graph for this function:


Member Function Documentation

Float cps::Fclover::BhamiltonNode ( Vector boson,
Float  mass 
) [virtual]
ForceArg cps::Fclover::EvolveMomFforce ( Matrix mom,
Vector frm,
Float  mass,
Float  step_size 
) [virtual]

Molecular dynamics evolution due to the fermion force.

The momentum is evolved for a single molecular dynamics timestep using the force from the fermion action.

Parameters:
momThe momentum matrices on all links of the local lattice.
frmThe solution of the fermion matrix inverse with the pseudofermion vector source, as computed by FmatEvlInv.
massThe FERMION mass (not used in staggered fermion classes).
step_sizeThe molecular dynamics timestep used in the numerical integration.
Postcondition:
mom is assigned the value of the momentum after the molecular dynamics evolution.

Implements cps::Lattice.

Definition at line 366 of file f_clover.C.

References cps::BND_CND_APRD, cps::DiracOpClover::CalcHmdForceVecs(), cps::clover_mat_mlt(), cps::CNV_FRM_YES, cps::Vector::CopyVec(), cps::Matrix::Dagger(), cps::Matrix::DotMEqual(), cps::ERR, cps::Verbose::Func(), cps::Error::General(), cps::getPlusData(), cps::GJP, cps::glb_max(), cps::glb_sum(), cps::HALF_CLOVER_MAT_SIZE, cps::CgArg::mass, cps::mat_inv(), cps::MAT_INV_ALG_LDL_CMPR, cps::Matrix::norm(), cps::Error::Pointer(), cps::sfree(), cps::Verbose::Sfree(), cps::smalloc(), cps::Verbose::Smalloc(), cps::sproj_tr, cps::GlobalJobParameter::TnodeBc(), cps::GlobalJobParameter::TnodeSites(), cps::Matrix::TrLessAntiHermMatrix(), cps::GlobalJobParameter::VolNodeSites(), cps::GlobalJobParameter::VolSites(), cps::VRB, cps::GlobalJobParameter::XnodeBc(), cps::GlobalJobParameter::XnodeSites(), cps::GlobalJobParameter::YnodeBc(), cps::GlobalJobParameter::YnodeSites(), cps::GlobalJobParameter::ZnodeBc(), and cps::GlobalJobParameter::ZnodeSites().

Here is the call graph for this function:

ForceArg cps::Fclover::EvolveMomFforce ( Matrix mom,
Vector phi,
Vector eta,
Float  mass,
Float  step_size 
) [virtual]

Molecular dynamics evolution due to the boson part of quotient integrator.

The momentum is evolved for a single molecular dynamics timestep using the force from the bosonic part of a quotient action.

Parameters:
momThe momentum matrices on all links of the local lattice.
frmThe solution of the fermion matrix inverse with the pseudofermion vector source, as computed by FmatEvlInv.
etaThe solution of the fermion matrix inverse applied to bosonic operator times the pseudofermion vector source.
massThe BOSON/FERMION mass (not used in staggered fermion classes).
step_sizeThe molecular dynamics timestep used in the numerical integration.
Postcondition:
mom is assigned the value of the momentum after the molecular dynamics evolution.

Implements cps::Lattice.

Definition at line 1344 of file f_clover.C.

References cps::ERR, and cps::Error::General().

Here is the call graph for this function:

int cps::Fclover::FchkbEvl ( ) const [virtual]

Determines whether one or both parities are used in the molecular dynamics evolution.

Are the fields used in the molecular dynamics algorithms defined on the whole lattice or just on sites on one parity?

Returns:
0 if both parities are used, 1 if only one parity is used.

Implements cps::Lattice.

Definition at line 132 of file f_clover.C.

FclassType cps::Fclover::Fclass ( ) const [virtual]

Returns the type of fermion action.

Implements cps::FwilsonTypes.

Definition at line 121 of file f_clover.C.

References cps::F_CLASS_CLOVER.

int cps::Fclover::FeigSolv ( Vector **  f_eigenv,
Float lambda,
Float chirality,
int *  valid_eig,
Float **  hsum,
EigArg eig_arg,
CnvFrmType  cnv_frm = CNV_FRM_YES 
) [virtual]

It the eigenvectors and eigenvalues of the fermion matrix.

Parameters:
f_eigenvThe computed eigenvalues
lambdaThe corresponding eigenvalues
chiralityeigenvector(i)^dagger gamma_5 eigenvector(i)
valid_eig
hsum
eig_arg
cnv_frmWhether the lattice fields need to be converted to to a new storage order appropriate for the type of fermion action. If this is CNV_FRM_NO, then just the gauge field is converted. If this is CNV_FRM_YES, then the fields f_out and f_in are also converted: This assumes they are initially in the same order as the gauge field. Fields that are converted are restored to their original order upon exit of this method. N.B. If the fields are already in the suitable order, then specifying CNV_FRM_YES here has no effect.
Returns:
The number of eigensolver iterations.
Postcondition:
f_eigenv contains the eigenvectors.
lambda contains the eigenvalues.

Implements cps::Lattice.

Definition at line 259 of file f_clover.C.

References cps::CANONICAL, cps::CNV_FRM_NO, cps::CNV_FRM_YES, cps::ERR, cps::Verbose::Func(), cps::GJP, cps::CgArg::mass, cps::EigArg::mass, cps::EigArg::N_eig, cps::Error::Pointer(), cps::Vector::ReDotProductGlbSum4D(), cps::DiracOpWilsonTypes::RitzEig(), cps::CgArg::RitzMatOper, cps::EigArg::RitzMatOper, cps::sfree(), cps::Verbose::Sfree(), cps::smalloc(), cps::Verbose::Smalloc(), cps::GlobalJobParameter::VolNodeSites(), cps::VRB, and cps::WILSON.

Here is the call graph for this function:

int cps::Fclover::FmatEvlInv ( Vector f_out,
Vector f_in,
CgArg cg_arg,
Float true_res,
CnvFrmType  cnv_frm = CNV_FRM_YES 
) [virtual]

The matrix inversion used in the molecular dynamics algorithms.

Solves $ M^\dagger M f_{out} = f_{in} $ for $ f_{out} $, where M is the (possibly odd-even preconditioned) fermionic matrix.

Parameters:
f_outThe initial guess of solution vector.
f_inThe source vector
cg_argThe solver parameters
true_resWhether or not to report the true residual. This will point to the true residual if it initially points to a non-zero value.
cnv_frmWhether the lattice fields need to be converted to to a new storage order appropriate for the type of fermion action. If this is CNV_FRM_NO, then just the gauge field is converted. If this is CNV_FRM_YES, then the fields f_out and f_in are also converted: This assumes they are initially in the same order as the gauge field. Fields that are converted are restored to their original order upon exit of this method. N.B. If the fields are already in the suitable order, then specifying CNV_FRM_YES here has no effect.
Returns:
The number of solver iterations.
Postcondition:
f_out contains the solution vector.
true_res The true residual, if this was non-zero to start with. The residual is $ |f_{in} - M^\dagger M f_{out}| / |f_{in}| $.

Implements cps::Lattice.

Definition at line 160 of file f_clover.C.

References cps::Verbose::Func(), cps::DiracOpClover::MatEvlInv(), cps::CgArg::true_rsd, and cps::VRB.

Here is the call graph for this function:

int cps::Fclover::FmatEvlMInv ( Vector **  f_out,
Vector f_in,
Float shift,
int  Nshift,
int  isz,
CgArg **  cg_arg,
CnvFrmType  cnv_frm,
MultiShiftSolveType  type,
Float alpha,
Vector **  f_out_d 
) [virtual]

The matrix inversion used in the molecular dynamics algorithms.

Solves $ (M^\dagger M + shift) f_{out} = f_{in} $ for $ f_{out} $, where M is the (possibly odd-even preconditioned) fermionic matrix.

Parameters:
f_outThe solution vectors.
f_inThe source vector
shiftThe shifts of the fermion matrix.
NshiftThe number of shifts
iszThe smallest shift (required by MInvCG)
cg_argThe solver parameters
cnv_frmWhether the lattice fields need to be converted to to a new storage order appropriate for the type of fermion action. If this is CNV_FRM_NO, then just the gauge field is converted. If this is CNV_FRM_YES, then the fields f_out and f_in are also converted: This assumes they are initially in the same order as the gauge field. Fields that are converted are restored to their original order upon exit of this method. N.B. If the fields are already in the suitable order, then specifying CNV_FRM_YES here has no effect.
typeThe type of multimass inverter. If type == MULTI, then regular multishift inversion is performed, each solution stored separately. If type == SINGLE, the there is a single solution vector, and each solution is summed to this vector with amount alpha.
alphaThe contribution of each shifted solution to the total solution vector
f_out_d?
Returns:
The number of solver iterations.
Postcondition:
f_out contains the solution vector.

Implements cps::Lattice.

Definition at line 180 of file f_clover.C.

References cps::ERR, cps::Verbose::Func(), cps::Error::NotImplemented(), and cps::VRB.

Here is the call graph for this function:

int cps::Fclover::FmatInv ( Vector f_out,
Vector f_in,
CgArg cg_arg,
Float true_res,
CnvFrmType  cnv_frm = CNV_FRM_YES,
PreserveType  prs_f_in = PRESERVE_YES 
) [virtual]

Fermion matrix inversion.

Solves A f_out = f_in for f_out, where A is the fermion matrix. The vectors must be defined on the whole lattice, not just on sites of a single parity.

Parameters:
f_outThe initial guess of solution vector.
f_inThe source vector
cg_argThe solver parameters for each shift
true_resWhether or not to report the true residual. The true residual will be written here if this is non-zero.
cnv_frmWhether the lattice fields need to be converted to to a new storage order appropriate for the type of fermion action. If this is CNV_FRM_NO, then just the gauge field is converted. If this is CNV_FRM_YES, then the fields f_out and f_in are also converted: This assumes they are initially in the same order as the gauge field. Fields that are converted are restored to their original order upon exit of this method. N.B. If the fields are already in the suitable order, then specifying CNV_FRM_YES here has no effect.
prs_f_inWhether or not the source vector is allowed to be overwritten, thereby saving memory. For staggered fermions f_in is preserved regardless of the value of prs_f_in.
Returns:
The number of solver iterations.
Postcondition:
f_out contains the solution vector.
true_res contains the true residual, if it was non-zero to start with. The residual is |f_in - A f_out| / |f_in|

Implements cps::Lattice.

Definition at line 234 of file f_clover.C.

References cps::Verbose::Func(), cps::DiracOpClover::MatInv(), and cps::VRB.

Here is the call graph for this function:

void cps::Fclover::FminResExt ( Vector sol,
Vector source,
Vector **  sol_old,
Vector **  vm,
int  degree,
CgArg cg_arg,
CnvFrmType  cnv_frm 
) [virtual]

Implements cps::Lattice.

Definition at line 192 of file f_clover.C.

References cps::Verbose::Func(), cps::DiracOp::MinResExt(), and cps::VRB.

Here is the call graph for this function:

ForceArg cps::Fclover::RHMC_EvolveMomFforce ( Matrix mom,
Vector **  sol,
int  degree,
int  isz,
Float alpha,
Float  mass,
Float  dt,
Vector **  sol_d,
ForceMeasure  measure 
) [virtual]

Implements cps::Lattice.

Definition at line 651 of file f_clover.C.

References cps::ERR, and cps::Error::General().

Here is the call graph for this function:

Float cps::Fclover::SetPhi ( Vector phi,
Vector frm1,
Vector frm2,
Float  mass,
DagType  dag 
) [virtual]

Initialises the pseudofermion field.

The heatbath initialisation of the pseudofermion field is done by setting $ \phi = M^\dagger \eta $ where $ \eta $ is a zero mean, unit variance random gaussian field. The pseudofermion field may be computed on a single parity only.

Precondition:
The random field must already be initialised.
Parameters:
phiThe pseudofermion field.
frm1A random field, possibly on a single parity.
frm2Another random field, or possibly workspace.
massThe mass parameter of the fermion matrix.
dagWhether DAG_YES or DAG_NO is applied
Returns:
The value of the pseudofermionic action on this node (only works for Wilson type fermions).

Implements cps::Lattice.

Definition at line 318 of file f_clover.C.

References cps::CANONICAL, cps::clover_mat_mlt(), cps::CNV_FRM_NO, cps::DAG_YES, cps::ERR, cps::Verbose::Func(), cps::GJP, cps::HALF_CLOVER_MAT_SIZE, cps::CgArg::mass, cps::mat_inv(), cps::MAT_INV_ALG_LDL_CMPR, cps::DiracOpClover::MatPc(), cps::DiracOpClover::MatPcDag(), cps::Error::Pointer(), cps::GlobalJobParameter::VolNodeSites(), cps::VRB, and cps::WILSON.

Here is the call graph for this function:


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