---
name: "gmx-tcaf"
section: "1"
platform: "linux"
package: "gromacs-data"
version: "2025.2-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/gmx-tcaf"
---

# gmx-tcaf(1)

Calculate viscosities of liquids

## NAME

gmx-tcaf - Calculate viscosities of liquids

## SYNOPSIS

```
gmx tcaf [-f [<.trr/.cpt/...>]] [-s [<.tpr/.gro/...>]] [-n [<.ndx>]]
         [-ot [<.xvg>]] [-oa [<.xvg>]] [-o [<.xvg>]] [-of [<.xvg>]]
         [-oc [<.xvg>]] [-ov [<.xvg>]] [-b <time>] [-e <time>]
         [-dt <time>] [-[no]w] [-xvg <enum>] [-[no]mol] [-[no]k34]
         [-wt <real>] [-acflen <int>] [-[no]normalize] [-P <enum>]
         [-fitfn <enum>] [-beginfit <real>] [-endfit <real>]
```

## DESCRIPTION

**gmx tcaf** computes tranverse current autocorrelations. These are used to estimate the shear viscosity, eta. For details see: Palmer, Phys. Rev. E 49 (1994) pp 359-366.

Transverse currents are calculated using the k-vectors (1,0,0) and (2,0,0) each also in the *y*- and *z*-direction, (1,1,0) and (1,-1,0) each also in the 2 other planes (these vectors are not independent) and (1,1,1) and the 3 other box diagonals (also not independent). For each k-vector the sine and cosine are used, in combination with the velocity in 2 perpendicular directions. This gives a total of 16\*2\*2=64 transverse currents. One autocorrelation is calculated fitted for each k-vector, which gives 16 TCAFs. Each of these TCAFs is fitted to f(t) = exp(-v)(cosh(Wv) + 1/W sinh(Wv)), v = -t/(2 tau), W = sqrt(1 - 4 tau eta/rho k^2), which gives 16 values of tau and eta. The fit weights decay exponentially with time constant w (given with **-wt**) as exp(-t/w), and the TCAF and fit are calculated up to time 5\*w. The eta values should be fitted to 1 - a eta(k) k^2, from which one can estimate the shear viscosity at k=0.

When the box is cubic, one can use the option **-oc**, which averages the TCAFs over all k-vectors with the same length. This results in more accurate TCAFs. Both the cubic TCAFs and fits are written to **-oc** The cubic eta estimates are also written to **-ov**.

With option **-mol**, the transverse current is determined of molecules instead of atoms. In this case, the index group should consist of molecule numbers instead of atom numbers.

The k-dependent viscosities in the **-ov** file should be fitted to eta(k) = eta\_0 (1 - a k^2) to obtain the viscosity at infinite wavelength.

**Note:** make sure you write coordinates and velocities often enough. The initial, non-exponential, part of the autocorrelation function is very important for obtaining a good fit.

## OPTIONS

Options to specify input files:

- **-f \[\<.trr/.cpt/...\>\] (traj.trr)**

  Full precision trajectory: *trr* *cpt* *tng*

- **-s \[\<.tpr/.gro/...\>\] (topol.tpr) (Optional)**

  Structure+mass(db): *tpr* *gro* *g96* *pdb* brk ent

- **-n \[\<.ndx\>\] (index.ndx) (Optional)**

  Index file

Options to specify output files:

- **-ot \[\<.xvg\>\] (transcur.xvg) (Optional)**

  xvgr/xmgr file

- **-oa \[\<.xvg\>\] (tcaf\_all.xvg)**

  xvgr/xmgr file

- **-o \[\<.xvg\>\] (tcaf.xvg)**

  xvgr/xmgr file

- **-of \[\<.xvg\>\] (tcaf\_fit.xvg)**

  xvgr/xmgr file

- **-oc \[\<.xvg\>\] (tcaf\_cub.xvg) (Optional)**

  xvgr/xmgr file

- **-ov \[\<.xvg\>\] (visc\_k.xvg)**

  xvgr/xmgr file

Other options:

- **-b \<time\> (0)**

  Time of first frame to read from trajectory (default unit ps)

- **-e \<time\> (0)**

  Time of last frame to read from trajectory (default unit ps)

- **-dt \<time\> (0)**

  Only use frame when t MOD dt = first time (default unit ps)

- **-\[no\]w (no)**

  View output *.xvg*, *.xpm*, *.eps* and *.pdb* files

- **-xvg \<enum\> (xmgrace)**

  xvg plot formatting: xmgrace, xmgr, none

- **-\[no\]mol (no)**

  Calculate TCAF of molecules

- **-\[no\]k34 (no)**

  Also use k=(3,0,0) and k=(4,0,0)

- **-wt \<real\> (5)**

  Exponential decay time for the TCAF fit weights

- **-acflen \<int\> (-1)**

  Length of the ACF, default is half the number of frames

- **-\[no\]normalize (yes)**

  Normalize ACF

- **-P \<enum\> (0)**

  Order of Legendre polynomial for ACF (0 indicates none): 0, 1, 2, 3

- **-fitfn \<enum\> (none)**

  Fit function: none, exp, aexp, exp\_exp, exp5, exp7, exp9

- **-beginfit \<real\> (0)**

  Time where to begin the exponential fit of the correlation function

- **-endfit \<real\> (-1)**

  Time where to end the exponential fit of the correlation function, -1 is until the end

## SEE ALSO

**[gmx(1)](/gmx/1.md)**

More information about GROMACS is available at \<*http://www.gromacs.org/*\>.

## COPYRIGHT

2025, GROMACS development team
