Basis input documentation

Initialize plane-wave basis with ke_cutoff.

Used to initialize class qimpy.dft.electrons.Basis.

YAML template:

ke-cutoff: 20.0         # Wavefunction kinetic energy cutoff in Hartrees.
real-wavefunctions: no  # Whether to use real wavefunctions (instead of complex).
grid:                   # Override parameters of grid for wavefunction operations:
  ke-cutoff: null       # Kinetic-energy cutoff for grid in Hartrees.
  shape: null           # Explicit grid dimensions [Nx, Ny, Nz].

fft-block-size: 0       # Number of wavefunction bands to FFT simultaneously.
mpi-block-size: 0       # Number of wavefunction bands to MPI transfer simultaneously.

Component classes:

Parameters:

ke-cutoff

Type: float, Default: 20.0

Wavefunction kinetic energy cutoff in Hartrees.

real-wavefunctions

Type: bool, Default: no

Whether to use real wavefunctions (instead of complex). This is only supported for non-spinorial, Gamma-point-only calculations, where conjugate symmetry allows real wavefunctions.

grid

Type: Grid, Default: null

Override parameters of grid for wavefunction operations.

fft-block-size

Type: int, Default: 0

Number of wavefunction bands to FFT simultaneously. Higher numbers require more memory, but can achieve better occupancy of GPUs or high-core-count CPUs. The default of 0 auto-selects the block size based on the number of bands and k-points being processed by each process.

mpi-block-size

Type: int, Default: 0

Number of wavefunction bands to MPI transfer simultaneously. Lower numbers may allow better overlap between computation and transfers, which is beneficial if MPI implementation supports asynchronous progress and/or CUDA streams are used to compute asynrchronously. Higher numbers mitigate MPI latency, but may require more memory. This number is automatically rounded up to nearest multiple of fft_block_size * comm.size. The default of 0 selects the block size based on the number of bands and k-points being processed by each process.