HiRep 0.1
|
Configure the size of your lattice by setting the variables
Configure the decomposition into local lattices by determining the MPI decomposition. For example, the smallest local lattice is 3x3x3x3
, so an allowed configuration would be
using NP_T*NP_X*NP_Y*NP_Z=16 processes.
HiRep also allows decomposition into unevenly sized local lattices, meaning not all processes have the same local lattice size. For example, the following decomposition is allowed
cutting the lattice into local lattices of either 3x4x4x4
or 4x4x4x4
using 24 processes.
This software uses RANLUX [7] random numbers. You can configure this random number generator.
configures the level of the RANLUX random number generator. These levels refer to the number of random numbers to be discarded in between two random numbers used for the simulation. In general the random number generation is not a bottleneck in the simulations, so choose the necessary quality here. A higher level indicates a higher quality of the random numbers in exchange for more necessary computation. However, rlx_level=1
is usually sufficient for any application within the scope of this library.
The seed is only used when the random number generator is not initialized from a saved random number state. Please be very careful to consider the following notes.
This defines the file where the state will be saved. For reproducibility, it is also possible to store the random number states alongside the configurations. The default choice here is no, which means restoring the exact random number state will not be possible after a particular configuration. Note that the file above will continuously be updated/overwritten, while the states for reproducibility will be stored in the same directory as the configurations.
This option uses the seed to initialize a range of random number generators, one for each process. These states will then be written to file to restart from the latest state with the given MPI layout.
This reads the random number state given in rlx_state
and overwrites this with a new state when the configuration is written out. The recommended workflow for best reproducibility is to set rlx_store=1
and then copy the state stored alongside the configuration to the file in the working directory given in rlx_state
.
You may increase the logger level for debugging purposes (typical next levels would be 20, 50, or 100). However, in standard production settings, the default is sufficient.
This option is only available if you compiled the corresponding direction with BC_\<DIR\>_THETA
. Then, you can set a global fermion phase in this direction by setting
where 0. has to be replaced by the desired phase.
This runs a single replica from the given input file. However, some clusters have minimum job sizes, which means that one might want to add multiple ensembles to a single job. This needs to correctly map input files and output directories, so a specific directory structure is assumed. The processes that are working on creating the replica will change into the directory "Rep_\<REPLICA_NO\>", relative to the root and all information passed to the binary will be considered relative to the new replica root.
This is at the moment not tested to work with GPU acceleration.
tlen
corresponds to the length of the trajectory, and csw
is the Sheikholeslami-Wohlert coefficient, which is only available if the code has been compiled with clover improvement, i.e., either with WITH_CLOVER
or WITH_EXPCLOVER
.
The run name will be used to name the configurations written out.
How often configurations should be saved. Putting 1
here implies that all configurations will be saved (every 1st trajectory) and putting 20
means every 20th trajectory will be saved.
If measurements are selected, this is the frequency with which they are done. For example, I could save only every 20th trajectory but select 2
here to measure the plaquette value and polyakov loops after every second trajectory.
Specify here the directory in the current working directory where the configurations will be written out. The code does not create the directory and will fail if it does not exist, so you must create it before starting the simulation.
Starting value for the gauge configuration. Possible values are random
=hot start, unit
=cold start, a file name of a file that is located in the directory given in conf dir
=start up from a saved configuration. Note that you have to give the path of this file relative to the conf dir
. For example, if the start-up configuration is called run1_n0
and is located in cnfg
, you put here run1_n0
and not cnfg/run1_n0
.
This option lets you specify the number of trajectories you want to generate. Note that there is a difference between +1
and 1
. The "+" in front of last conf
specifies the number of additional trajectories to be generated after the chosen startup configuration. I.e., if the startup configuration is trajectory number 5 and last conf = 6
, then one additional trajectory will be generated, while if last conf = +6
, then six additional trajectories will be generated (i.e., the last configuration generated will be number 11).
Set this to true to track eigenvalues for a selected number of standard operators at the end of the trajectories, given the frequency of measurements.
Search space dimension in searching for eigenvalues. This is limited by memory because fields need to be allocated for this, so if the application runs out of memory, try to reduce this number.
Number of accurate eigenvalues that should be found.
Parameters of the eigenvalue search algorithm: eva:kmax
describes the maximum degree of the polynomial, eva:maxiter
the maximum number of sub iterations, eva:omega1
is the absolute precision, and eva:omega2
the relative precision.
Input mass for the eigenvalue calculations.
Set this to true to measure connected contributions to the correlation functions for a selected number of standard operators at the end of the trajectories, given the frequency of measurements.
Input masses for the measurements.
Squared relative inverter precision. Here, the theoretical highest precision is 1.e-30, corresponding to 1.e-15 computer precision. The higher this precision, the more expensive this calculation is. Often, 1.e-16 is sufficient.
Number of sources used in the calculation. After the stochastic average, the simulation output for the connected contributions towards the correlation function will be done. So, the output will contain a single value for the correlation for each time slice and configuration.
Value of the Sheikholeslami-Wohlert coefficient used during measurements.
Set this to true
if you want the Polyakov loops measured at the end of trajectories, given the measurement frequency.
The HiRep code uses a multilevel integrator; each integrator level must be specified in the input file.
Variable | Description |
---|---|
level | unique integrator level (level 0 is the outermost level) |
type | integrator type (see below) |
steps | number of integration steps |
The table below shows the different integrators implemented in the HiRep code. The last column in the table shows how many times the next integrator level is called in each iteration of the given integrator.
Type | Description | Next level calls |
---|---|---|
lf | leap-frog integrator | 1 |
o2mn | 2nd order minimal norm (omelyan) integrator | 2 |
o4mn | 4th order minimal norm (omelyan) integrator | 5 |
This gauge monomial is the standard Wilson plaquette action.
\begin{equation} S = -\frac{\beta}{N}\sum_{x,\mu>\nu} \textrm{Re}~\textrm{tr}(U_\mu(x)U_\nu(x+\hat{\mu})U_\mu^\dagger(x+\hat{\nu})U_\nu^\dagger(x)) \end{equation}
The following example shows how to specify a gauge monomial in the input file.
Variable | Description |
---|---|
id | unique monomial id |
type | monomial type |
beta | bare coupling for the gauge field |
level | integrator level where the monomial force is evaluated |
This gauge monomial is the Lüscher-Weisz (tree-level Symanzik) gauge action, including the \(1\times1\) plaquettes \(P_{\mu\nu}\) and the \(1\times2\) rectangular loops \(R_{\mu\nu}\). The two coefficients below are related through \(c_0+8c_1=1\) to ensure the correct continuum limit.
\begin{equation} S = -\frac{\beta}{N}\sum_{x,\mu>\nu} c_0\textrm{Re}~\textrm{tr}[P_{\mu\nu}(x)] + c_1\textrm{Re}~\textrm{tr}[R_{\mu\nu}(x)+R_{\nu\mu}(x)] \end{equation}
Specify a gauge monomial in the input file as in the following example:
Variable | Description |
---|---|
id | unique monomial id |
type | monomial type |
beta | bare coupling for the gauge field |
c0 | coefficient in front of the plaquette term |
level | integrator level where the monomial force is evaluated |
The HMC monomial is the standard term for simulating two mass degenerate fermions.
\begin{equation} S = \phi^\dagger(D^\dagger D)^{-1}\phi\,, \end{equation}
corresponding to the following input file configurations with example parameters:
Variable | Description |
---|---|
id | unique monomial id |
type | monomial type |
mass | bare fermion mass |
mt_prec | inverter precision used in the Metropolis test |
force_prec | inverter precision used when calculating the force |
mre_past | number of past solutions used in the chronological inverter |
level | integrator level where the monomial force is evaluated |
In this monomial the twisted mass is added before the Dirac operator has been even/odd preconditioned. Specify as follows:
Variable | Description |
---|---|
id | unique monomial id |
type | monomial type |
mass | bare fermion mass |
mu | bare twisted mass |
mt_prec | inverter precision used in the Metropolis test |
force_prec | inverter precision used when calculating the force |
mre_past | number of past solutions used in the chronological inverter |
level | integrator level where the monomial force is evaluated |
In this monomial the twisted mass is added after the Dirac operator has been even-odd preconditioned.
Variable | Description |
---|---|
id | unique monomial id |
type | monomial type |
mass | bare fermion mass |
mu | bare twisted mass |
mt_prec | inverter precision used in the Metropolis test |
force_prec | inverter precision used when calculating the force |
mre_past | number of past solutions used in the chronological inverter |
level | integrator level where the monomial force is evaluated |
The Hasenbusch term is a mass preconditioned term used in connection with an HMC monomial.
\begin{equation} S = \phi^\dagger\left(\frac{D^\dagger D}{(D+\Delta m)^\dagger (D+\Delta m)}\right)\phi \end{equation}
Variable | Description |
---|---|
id | unique monomial id |
type | monomial type |
mass | bare fermion mass |
dm | shift in the bare mass |
mt_prec | inverter precision used in the Metropolis test |
force_prec | inverter precision used when calculating the force |
mre_past | number of past solutions used in the chronological inverter |
level | integrator level where the monomial force is evaluated |
To include a Hasenbusch monomial with even-odd preconditioned twisted mass, adjust starting from the following template parameters
Variable | Description |
---|---|
id | unique monomial id |
type | monomial type |
mass | bare fermion mass |
mu | twisted mass |
dmu | shift in the twisted mass |
mt_prec | inverter precision used in the Metropolis test |
force_prec | inverter precision used when calculating the force |
mre_past | number of past solutions used in the chronological inverter |
level | integrator level where the monomial force is evaluated |
For a twisted even-odd preconditioned operator, use the type hasenbusch_tm_alt
.
Variable | Description |
---|---|
id | unique monomial id |
type | monomial type |
mass | bare fermion mass |
mu | bare twisted mass |
dmu | shift in the twisted mass |
mt_prec | inverter precision used in the Metropolis test |
force_prec | inverter precision used when calculating the force |
mre_past | number of past solutions used in the chronological inverter |
level | integrator level where the monomial force is evaluated |
The RHMC monomial uses a rational approximation to simulate an odd number of mass degenerate fermions.
\begin{equation} S = \phi^\dagger(D^\dagger D)^{-n/d}\phi \end{equation}
Include this in the input file using the type rhmc
. One further needs to specify numerator and denominator fractions in the rational approximation.
Variable | Description |
---|---|
id | unique monomial id |
type | monomial type |
mass | bare fermion mass |
n | fraction numerator |
d | fraction denominator |
mt_prec | inverter precision used in the Metropolis test |
md_prec | precision of the rational approximation |
force_prec | inverter precision used when calculating the force |
level | integrator level where the monomial force is evaluated |
When using the chronological inverter, the force precision should be \(10^{-14}\) or better to ensure reversibility in the algorithm. Further, masses given in monomials should include the mass shift.
Set Sheikholeslami-Wohlert coefficient and squared relative inverter precision.
Number of stochastic sources and input mass used in the connected contributions to the correlation function.
Enable this (0=disabled, 1=enabled) if mixed channels should be measured, not just standard channels.
Maximum component of momenta. The default is 0. Some sources only allow this choice.
Here, one can select the type of source used to measure the connected contributions. For each of the choices above that are enabled (disabled=0, enabled=1), the correlation function will be calculated and printed to the output. For the connected contributions, the stochastic average will be correctly evaluated automatically. Choices are
Enable baryon measurements.
Sources with Dirichlet boundary conditions. Here, the options are
Set mes:dirichlet_dt
to the distance to the boundary.
Settings for the hopping parameter expansion. Setting mes:degree_hopping=0
disables the evaluation of correlation functions using the hopping parameter expansion otherwise use a positive integer as the order of the expansion. mes:nhits_hopping
denotes the number of sources used in the stochastic average.
Include four-fermion interactions.
A list of paths where configurations are stored relative to the current working directory. This means that, for example, if conf dir=cnfg
, this directory is included in the path, for example, cnfg/run1_n100
.
Any settings for disconnected contributions in the folder Spectrum
have no guarantee of working and are therefore not documented here. Please refer to the next section
The binary in Disconnected
is the only working code to evaluate disconnected contributions to correlation functions. In addition to the standard parameters to define the random numbers, lattice size and parallelization one has to set the following options:
Is the input quark mass.
This is the squared relative inverter precision, i.e., this corresponds to a relative precision of 1e-10, and the maximum setting is 1e-30, which corresponds to 1e-15 relative precision (double precision).
The number of sources used for the calculation. This code will then produce one-point operator measurements for each time slice, channel, and source (plus additional measurements depending on the type of the source). The correlation function needs to be manually evaluated, taking the appropriate stochastic average and, if applicable, subtracting the vacuum expectation value.
Type of source. Available types are
See more documentation on the sources in section Analysis
.
A list of paths where configurations are stored relative to the current working directory. This means that, for example, if conf dir=cnfg
, this directory is included in the path, for example, cnfg/run1_n100
.
Maximum component of the momentum, default: 1.
Wilson flow integrator used. Options are
Maximal evolution time in the Wilson flow evolution.
Number of measurements. Putting one here measures once at WF:tmax
, in this example at 0.2 flow time. Putting 100 here will measure after each step of 2e-3.
Adaptive epsilon and delta parameters for the (adaptive) integrator.