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