interpolation keywords

Interpolation parameters

interpolation.interpRho

If it is set to true and RESCU uses two grids, then RESCU computes interpolates the density instead of the wave-functions. This may lead to a loss of accuracy.

type: scalar

default: 0

example: interpolation.interpRho = false

interpolation.method

Determine the interpolation scheme; required if domain.cgridn neq domain.fgridn; ‘fourier’ generates the interpolation matrix from the Fourier transform coefficients, it results in a dense matrix, and hence it is more suitable for small systems; ‘interpft’ interpolates vectors using fast Fourier transforms; ‘lagrange’ generates the interpolation matrix using Lagrange coefficients, the matrix has a finite bandwidth, and hence it is more suitable for large systems (in which case it is sparse).

type: string

default: 'fourier'

allowed: 'fourier','interpft','lagrange'

example: interpolation.method = 'lagrange'

interpolation.normConserving

If interpolation.method = ‘lagrange’, the interpolation matrices are transformed such that interpolated wave-functions remain orthonormal.

type: scalar

default: false

allowed: true,false

example: interpolation.normConserving = true

interpolation.order

Determine the number of points used by the Lagrange interpolation scheme; referenced only if interpolation.method = ‘lagrange’; the lower the order, the sparser (and cheaper) the interpolation.

type: scalar

default: 16

example: interpolation.order = 7

interpolation.vloc

Determine whether to use dynamical interpolation when calling the Hamiltonian product function; if interpolation.vloc = true, the local potentials are discretized on the fine grid, the wavefunctions are thus interpolated onto the fine grid before being multiplied by the local potential operators, the resulting vector is then interpolated back to the coarse grid; if interpolation.vloc = false, the local potential operator is evaluated on the coarse grid.

type: scalar

allowed: true,false

example: interpolation.vloc = true

interpolation.vnl

Determine whether to use dynamical interpolation when calling the Hamiltonian product function; if interpolation.vnl = true, the projectors are discretized on the fine grid, the wavefunctions are thus interpolated to the fine grid before being contracted with the projectors, the resulting vector is then interpolated back to the coarse grid; if interpolation.vnl = false, the projectors are interpolated onto the coarse grid and the wavefunctions need not be interpolated on the fly; both schemes are equivalent, but the efficiency may differ; if interpolation.method = ‘fourier’ or interpolation.method = ‘interpft’, interpolation.vnl = true should be used (except for small systems) because interpolating the projectors will make them dense, which results in prohibitive memory requirements; if interpolation.method = ‘lagrange’ then the best choice depends on interpolation.order and the ratio of domain.cgridn and domain.fgridn.

type: scalar

default: true

allowed: true,false

example: interpolation.vnl = true