Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

cps::AlgHmdR2 Class Reference
[Algorithms]

A class implementing the R2 algorithm. More...

#include <alg_hmd.h>

Inherits cps::AlgHmd.

List of all members.

Public Member Functions

 AlgHmdR2 (Lattice &latt, CommonArg *c_arg, HmdArg *arg)
virtual ~AlgHmdR2 ()
Float run (void)
 Performs a single HMD trajectory.

Protected Attributes

int n_frm_masses
 The number of dynamical fermion masses.
Floatflavor_time_step
 A tricky thing to describe succinctly.
Floatforce_coeff
 The coefficient of each force passed to RHMC_EvolveFforce.
int f_sites
int f_vec_count
int f_count
int f_size
 The size of the pseudofermion (and similar) fields.
CgArg ** frm_cg_arg
 Pointer to an array of structures containing solver parameters.
Vector ** phi
 Pseudofermion fields.
Vector ** frmn
 Array of vectors.
Vector ** frmn_d
 Array of vectors.
Floatshift
 The renormalised shift.
int light
 The index of the lightest mass.
int heavy
 The index of the heaviest mass.


Detailed Description

A class implementing the R2 algorithm.

This evolves a gauge field by a single iteration of the standard HMD algorithm, i.e. a molecular dynamics trajectory with intermediate gauge field updates to take care of the arbitrary numbers of dynamical flavours. The initial guess in the solver is a random gaussian vector.

The R2 algorithm is specifically for simulating 2+1 flavours of dynamical staggered fermions of different masses. It uses the generalised multimass solver to minimise the number of cg iterations performed. The algorithm can only be used when the mass matrix is a scalar multiple of the identity.

Definition at line 559 of file alg_hmd.h.


Constructor & Destructor Documentation

cps::AlgHmdR2::AlgHmdR2 Lattice latt,
CommonArg c_arg,
HmdArg arg
 

Parameters:
latt The lattice on which the HMD algorithm run.
c_arg The common argument structure for all algorithms.
arg The algorithm parameters.

Definition at line 37 of file alg_hmd_r2.C.

References cps::Alg::AlgLattice(), cps::Lattice::Colors(), cps::ERR, cps::F_CLASS_STAG, f_sites, f_size, f_vec_count, cps::Lattice::FchkbEvl(), cps::Lattice::Fclass(), flavor_time_step, cps::Float, force_coeff, frm_cg_arg, cps::HmdArg::frm_mass, frmn, frmn_d, cps::Verbose::Func(), cps::Error::General(), cps::GJP, heavy, light, cps::CgArg::mass, cps::HmdArg::max_num_iter, cps::CgArg::max_num_iter, cps::HmdArg::n_frm_masses, n_frm_masses, phi, shift, cps::smalloc(), cps::GlobalJobParameter::SnodeSites(), cps::Lattice::SpinComponents(), cps::HmdArg::stop_rsd, cps::CgArg::stop_rsd, cps::GlobalJobParameter::VolNodeSites(), and cps::VRB.

cps::AlgHmdR2::~AlgHmdR2  )  [virtual]
 

Definition at line 139 of file alg_hmd_r2.C.

References flavor_time_step, force_coeff, frm_cg_arg, frmn, frmn_d, cps::Verbose::Func(), phi, cps::sfree(), shift, and cps::VRB.


Member Function Documentation

Float cps::AlgHmdR2::run void   )  [virtual]
 

Performs a single HMD trajectory.

Postcondition:
The results are written to the file specified in the common_arg structure.

Implements cps::AlgHmd.

Definition at line 188 of file alg_hmd_r2.C.

References cps::Alg::AlgLattice(), cps::CNV_FRM_NO, CopyVec(), cps::ERR, cps::Lattice::EvolveGfield(), cps::Lattice::EvolveMomGforce(), cps::Lattice::ExactFlavors(), f_size, cps::Error::FileA(), flavor_time_step, cps::Float, cps::Verbose::Flow(), cps::Lattice::FmatEvlMInv(), force_coeff, cps::FORCE_MEASURE_NO, cps::MPISCU::fprintf(), frm_cg_arg, cps::HmdArg::frm_flavors, cps::HmdArg::frm_mass, frmn, frmn_d, cps::Verbose::Func(), cps::GENERAL, cps::glb_sum(), cps::Lattice::GsoCheck(), cps::Lattice::GupdCnt(), cps::Lattice::GupdCntInc(), heavy, cps::IFloat, light, cps::Lattice::MdTime(), cps::Lattice::MdTimeInc(), cps::Lattice::MomHamiltonNode(), phi, cps::Lattice::RandGaussAntiHermMatrix(), cps::Lattice::RandGaussVector(), cps::Verbose::Result(), cps::CommonArg::results, cps::Lattice::Reunitarize(), cps::HmdArg::reunitarize, cps::Lattice::RHMC_EvolveMomFforce(), cps::Lattice::SetPhi(), shift, cps::HmdArg::step_size, cps::HmdArg::steps_per_traj, and cps::VRB.


Member Data Documentation

int cps::AlgHmdR2::f_count [protected]
 

Definition at line 587 of file alg_hmd.h.

int cps::AlgHmdR2::f_sites [protected]
 

Definition at line 585 of file alg_hmd.h.

Referenced by AlgHmdR2().

int cps::AlgHmdR2::f_size [protected]
 

The size of the pseudofermion (and similar) fields.

The size is given in terms of the total number of floating point numbers in the field on the local lattice, taking into account whether or not the field is defined on just a single parity.

Definition at line 589 of file alg_hmd.h.

Referenced by AlgHmdR2(), and run().

int cps::AlgHmdR2::f_vec_count [protected]
 

Definition at line 586 of file alg_hmd.h.

Referenced by AlgHmdR2().

Float* cps::AlgHmdR2::flavor_time_step [protected]
 

A tricky thing to describe succinctly.

This is an array of the time steps used for the intermediate gauge field updates for each dynamical mass. Actually it is the differences between them. At least most of it is.

Definition at line 572 of file alg_hmd.h.

Referenced by AlgHmdR2(), run(), and ~AlgHmdR2().

Float* cps::AlgHmdR2::force_coeff [protected]
 

The coefficient of each force passed to RHMC_EvolveFforce.

Array of coefficients = flavours * flavour_coeff

Definition at line 580 of file alg_hmd.h.

Referenced by AlgHmdR2(), run(), and ~AlgHmdR2().

CgArg** cps::AlgHmdR2::frm_cg_arg [protected]
 

Pointer to an array of structures containing solver parameters.

These are the parameters corresponding to each of the dynamical fermion masses.

Definition at line 596 of file alg_hmd.h.

Referenced by AlgHmdR2(), run(), and ~AlgHmdR2().

Vector** cps::AlgHmdR2::frmn [protected]
 

Array of vectors.

These will hold the solutions from the solves.

Definition at line 607 of file alg_hmd.h.

Referenced by AlgHmdR2(), run(), and ~AlgHmdR2().

Vector** cps::AlgHmdR2::frmn_d [protected]
 

Array of vectors.

These will hold the solutions from the solves multiplied by the D-slash operator.

Definition at line 611 of file alg_hmd.h.

Referenced by AlgHmdR2(), run(), and ~AlgHmdR2().

int cps::AlgHmdR2::heavy [protected]
 

The index of the heaviest mass.

Definition at line 622 of file alg_hmd.h.

Referenced by AlgHmdR2(), and run().

int cps::AlgHmdR2::light [protected]
 

The index of the lightest mass.

Definition at line 619 of file alg_hmd.h.

Referenced by AlgHmdR2(), and run().

int cps::AlgHmdR2::n_frm_masses [protected]
 

The number of dynamical fermion masses.

This is not necessarily the number of dynamical flavours.

Definition at line 566 of file alg_hmd.h.

Referenced by AlgHmdR2().

Vector** cps::AlgHmdR2::phi [protected]
 

Pseudofermion fields.

One for each mass

Definition at line 603 of file alg_hmd.h.

Referenced by AlgHmdR2(), run(), and ~AlgHmdR2().

Float* cps::AlgHmdR2::shift [protected]
 

The renormalised shift.

Definition at line 616 of file alg_hmd.h.

Referenced by AlgHmdR2(), run(), and ~AlgHmdR2().


The documentation for this class was generated from the following files:
Generated on Sat Oct 10 14:11:55 2009 for Columbia Physics System by  doxygen 1.3.9.1