# mixing keywords

Mixing parameters

## mixing.betamin

Minimal mixing fraction. If mixing.invJ0 is set to \'kerker\', the long
wavelength components are mixed at a slower pace than the short
wavelength components. The Kerker preconditioner is prevented to mix the
short wavelength components too slowly by having a minimal mixing
fraction.

**type**: `scalar`

**default**: `0.01`

**example**: `mixing.betamin = 0.005`

## mixing.beta

Mixing fraction. This is used by all mixers.

**type**: `scalar`

**default**: `0.25`

**example**: `mixing.beta = 0.45`

## mixing.betalin

Mixing fraction during the linear mixing steps.

**type**: `scalar`

**example**: `mixing.betalin = 0.45`

## mixing.initlin

Number of linear mixing steps. Most mixer need at least one linear
mixing step.

**type**: `scalar`

**default**: `1`

**example**: `mixing.initlin = 1`

## mixing.ipScheme

In quasi-Newton methods necessitate inner products. The inner products
can be calculated straightforwardly using a uniform inner product (the
identity). It is however advisable to weight differently the low and
high frequency components using a nonuniform inner product.

**type**: `string`

**default**: `uniform`

**allowed**: `'uniform','nonuniform'`

**example**: `mixing.ipScheme = 'uniform'`

## mixing.invJ0

Initial inverse Jacobian. The initial inverse Jacobian is necessary in
quasi-Newton mixing methods. It is by default linear, in which case the
initial inverse Jacobian is A\*I, where A = mixing.beta. It can also be
\'kerker\', in which case the initial inverse Jacobian is
A\*q\^2/(q\^2+q0\^2), where q0 is controlled by mixing.kerkerNorm.

**type**: `string`

**default**: `linear`

**allowed**: `'kerker','linear'`

**example**: `mixing.invJ0 = 'kerker'`

## mixing.kerkerNorm

If mixing.invJ0 = \'kerker\', the initial inverse Jacobian is
A\*q\^2/(q\^2+q0\^2), where q0 is set by mixing.kerkerNorm. For a
homogeneous electron gas, q0\^2 = 4\*k_F/pi, where k_F is the Fermi
momentum.

**type**: `scalar`

**default**: `0.8`

**example**: `mixing.kerkerNorm = 2.15`

## mixing.maxhistory

Maximal number of trial functions retained to compute the new trial
function. For example, in a calculation doing density mixing with
mixing.maxhistory = 10, RESCU will estimate the next trial density based
on the densities of the last 10 iterations.

**type**: `scalar`

**default**: `20`

**example**: `mixing.maxhistory = 10`

## mixing.method

If mixing.method is equal to \'linear\' and \'pulay\' RESCU will use the
mixing method of the same name. If mixing.method is equal to \'broyden\'
RESCU will use the Broyden method of Srivastava. If mixing.method is
equal to \'broyden2\' RESCU will use the Broyden method of Johnson,
which is usually less aggressive but more stable than that of
Srivastava.

**type**: `string`

**default**: `'broyden'`

**allowed**: `'broyden','broyden2','linear','pulay'`

**example**: `mixing.method = 'pulay'`

## mixing.tol

For \'self-consistent\' (ground state) calculations, the self-consistent
procedure stops if the charge variation per valence electron is less
than mixing.tol(1) and the total energy variation per valence electron
is less than mixing.tol(2). Note that if mixing.type = \'potential\',
there is no iteration-dependent input density, and hence the charge
variation is calculated between iterations instead of between the input
and output charges at a given step. For \'dfpt-xxx\' calculations, the
self-consistent procedure stops if the linear charge perturbation
variation is less than mixing.tol(1) and the linear potential
perturbation variation is less than mixing.tol(2). The variations are
relative in this case, which means that mixing.tol controls the number
of converged significant digits instead of the absolute convergence
precision.

**type**: `[1,2]`

**default**: `[1e-05,1e-05]`

**example**: `mixing.tol = [1e-6 1e0]`

## mixing.type

Determine whether to mix the density, density-matrix or the potential;
if mixing.type = \'potential\', V_H + V_X + V_C is mixed.
\'density-matrix\' is imposed for hybrid functional calculations.

**type**: `string`

**default**: `'potential'`

**allowed**: `'density','density-matrix','potential'`

**example**: `mixing.type = 'density'`
