option keywords
Miscellaneous options
option.bufferSize
Memory buffer size in bytes; RESCU vectorizes operation as much as possible, which may lead to over allocate memory, it will not generate variables larger than option.bufferSize if it can be avoided.
type: scalar
default: 134217728
example: option.bufferSize = 2^30
option.centerMolecule
Align the barycenter of the atoms and the center of the unit cell. This may be useful when doing molecule calculations.
type: scalar
default: false
allowed: true,false
example: option.centerMolecule = true
option.initParaReal
Parallelize interpolation routines over real space. This is usually less efficient but consumes less memory. You may have to use the option if your pseudopotential or orbitals have a large radius.
type: scalar
default: false
allowed: true,false
example: option.initParaReal = true
option.maxSCFiteration
Maximal number of self-consistent steps; the Kohn-Sham solver will return an answer even if it has not converged.
type: scalar
default: 100
example: option.maxSCFiteration = 50
option.plorder
Reorder the atoms in the principal layer ordering. This is essential for using certain algorithms.
type: scalar
default: false
allowed: true,false
example: option.plorder = true
option.precision
This keyword sets various other keywords related to precision (e.g. domain.fourierInit, domain.highres, domain.vnlReal, diffop.method, interpolation.method, interpolation.vloc). It is not relevant for atomic orbital calculations (LCAO.status = true). Simply put, RESCU will solve the Kohn-Sham equation in real space or using planewaves if you choose ‘real’ or ‘pw’ respectively. Next, ‘low’, ‘med’ and ‘high’ refers to the precision, which is controlled by various keywords. Now the fine prints. If you choose ‘real’, RESCU will discretize the non-local pseudopotential operator in real space. This is more efficient, but it can cause the so-called eggbox effect, whereby the total energy and other physical quantities undergo periodic variations with respect to the real space grid, i.e. the discretized equations are not strictly translationally invariant. This is alright for certain kinds of calculations (e.g. BS, DOS) and detrimental to other kinds (e.g. relaxation). In the ‘med’ and ‘high’ settings, the eggbox effect is mitigated by the use of a fine grid which is twice as fine as the regular grid for the discretization of the non-local pseudopotential operator. This will increase the computational cost however. If you choose ‘pw’, then RESCU will discretize the non-local pseudopotential operator in reciprocal space. This is computationally expensive in large systems, but it prevents the so-called eggbox effect; in part that is, because one can never eliminate the eggbox effect associated with the local exchange-correlation potential. In the the ‘med’ and ‘high’ settings, a finer grid is employed for the evaluation of the local potential operators (e.g. vps, vh, vxc).
type: string
default: 'real-low'
allowed: 'real-low','real-med','real-high','pw-low','pw-med','pw-high'
example: option.precision = 'pw-high'
option.replicateCell
Replicate the current system along various dimensions. Automates building supercells.
type: array
default: [1,1,1]
size: [1,3]
example: option.replicateCell = [2,3,5]
option.shortRange
Use the short range implementation instead of the Ewald sum implementation. The efficiency of both scheme is similar, but the short range implementaion simplifies the treatment of various boundary conditions. Some boundary conditions require short range consequently.
type: scalar
default: true
allowed: true,false
example: option.shortRange = true
option.saveDensity
Determine whether to include the density in the results. If option.saveDensity < 0, then the density is saved every so many steps during the self-consistent calculation. For example, if option.saveDensity=-3, then the density is saved every third step.
type: scalar
default: 1
example: option.saveDensity = true
option.saveDFPT
Determine whether to include the DFPT struct in the results.
type: scalar
default: true
allowed: true,false
example: option.saveDFPT = true
option.saveEigensolver
Determine whether to save the entire eigensolver structure.
type: scalar
default: false
allowed: true,false
example: option.saveEigensolver = true
option.saveInterpolation
Determine whether to save the entire interpolation structure.
type: scalar
default: false
allowed: true,false
example: option.saveInterpolation = true
option.saveLevel
Determine the amount the information saved in the MAT-file. If option.saveLevel = 1, RESCU will save basic inputs such as the atomic structure and relevant outputs. Advanced users and developers can save the complete set of parameters and variables stored in the main RESCU structure by setting option.saveLevel = 2.
type: scalar
default: 1
example: option.saveLevel = 2
option.saveLCAO
Determine whether to save the atomic orbital coefficients. The coefficients for k-point kk and spin ss are stored in the HDF5 result file under the location /LCAO/coeffii, where ii = sub2ind([nkpt,nspin],kk,ss). The function loadDistArray can be used to load the data as follows: distArray = loadDistArray(filename,’/LCAO/coeffii’).
type: scalar
default: false
allowed: true,false
example: option.saveLCAO = true
option.saveLcaoHam
If option.saveLcaoHam is set to true, then RESCU will save the atomic orbital Hamiltonian (and overlap) to an HDF5 file. For large systems, this may require a lot of disk space. It is then possible to set option.saveLcaoHam to ‘sparse’, in which case RESCU will save the Hamiltonian to a text file using the column/row sparse format. If option.saveLcaoHam is set to ‘wannier90’, it will save the Hamiltonian using the same format as if it is set to ‘sparse’, but without omitting zero elements.
type: scalar
default: false
allowed: true,false
example: option.saveLcaoHam = true
option.saveMisc
Determine whether to save the aosubspace,YkqG,XHX,XSX,XVX fields.
type: scalar
default: false
allowed: true,false
example: option.saveMisc = true
option.saveMixing
Determine whether to save the entire mixing structure.
type: scalar
default: false
allowed: true,false
example: option.saveMixing = true
option.savePartialWeights
Determine whether to save the partial weights. The partial weight of the eigenpair(i,k,s) (i-band,k-kpoint,s-spin) is \(\sum\limits\nu S_{\nu,\mu}^{k} c_{\nu i}^{*k}c_{\mu i}^{k}\) where S is the overlap matrix and \((\mu,\nu)\) are generic orbital indices. Note that partial weights are complex numbers, but they add up to exactly one for a given eigenpair. The partial weights for k-point kk and spin ss are stored in the HDF5 result file under the location /LCAO/partialWeightii, where ii = sub2ind([nkpt,nspin],kk,ss). The function loadDistArray can be used to load the data as follows: distArray = loadDistArray(filename,’/LCAO/partialWeightii’).
type: scalar
default: false
allowed: true,false
example: option.savePartialWeights = true
option.savePotential
Determine whether to save the potentials or perturbed Hartree plus exchange-correlation potential (dvhxc) in a dfpt calculation. If set to true, the following potentials are recalculated from the most recent trial density and saved to the H5-file (in case of dfpt calculation, only converged perturbed dvhxc is saved): vna, vdh and vxc. Alternatively, the sought potentials can be specified via option.savePotential using a cell array as follows (not applicable to dfpt calculations): option.savePotential = {‘vh’,’vps’}. The valid potentials are: ‘vatom’, ‘vdh’, ‘veff’, ‘vh’, ‘vna’, ‘vps’, ‘vxc’. Each potential is stored in the HDF5 result file under the location /potential/xxx. The function loadDistArray can be used to load the data as follows: distArray = loadDistArray(filename,’/potential/vdh’).
type: scalar
default: false
allowed: true,false
example: option.savePotential = true
option.saveTau
Determine whether to save the kinetic energy density tau. The electron localization function ELF, is also calculated and saved. ELF and tau are spin-dependent even if the calculation is performed in the degenerate spin framework. They are stored in the HDF5 result file under the location /rho/elf and /rho/tau respectively. The function loadDistArray can be used to load the data as follows: distArray = loadDistArray(filename,’/rho/elf’).
type: scalar
default: false
allowed: true,false
example: option.saveTau = true
option.saveWavefunction
Determine whether to include the subspace/wavefunctions in the results. If option.saveWavefunction < 0, then the wavefunctions are saved every so many steps during the self-consistent calculation. For example, if option.saveWavefunction=-3, then the wavefunctions are saved every third step. The wavefunctions for k-point kk and spin ss are stored in the HDF5 result file under the location /waveFunction/psinn, where nn = sub2ind([nkpt,nspin],kk,ss). The function loadDistArray can be used to load the data as follows: distArray = loadDistArray(filename,’/waveFunction/psinn’).
type: scalar
default: false
allowed: true,false
example: option.saveWavefunction = true
option.saveDensityMatrix
Determine whether to save LCAO density-matrix at the end of SCF in the h5 file. Please note that to use this option, LCAO.status must be true, all symmetry mush be false, all number of k-grid must be odd (i.e. Gamma-centered sampling).
type: scalar
default: false
allowed: true,false
example: option.saveDensityMatrix = true
option.saveDensityMatrixK
Determine whether to save k-point-dependent LCAO density-matrix at the end of SCF in the h5 file. The density matrix for k-point kk and spin ss is stored in the HDF5 result file under the location /DensityMatrix/kcellii, where ii = sub2ind([nkpt,nspin],kk,ss). The function loadDistArray can be used to load the data as follows: distArray = loadDistArray(filename,’/DensityMatrix/kcellii’).
type: scalar
default: false
allowed: true,false
example: option.saveDensityMatrixK = true
option.timeLimit
This keyword let RESCU knows how long (in hours) it should run before quitting. For example, if option.timeLimit = 12, when RESCU gets close to 12 hours of execution, it will save its current state in the location given by info.savepath and quit. RESCU should then be restarted in the same directory, with the same number of processes, and it will automatically load its past state and keep going with the calculation. Beware, this may require a lot of disk space in large scale computation; be sure to point info.savepath to a large disk.
type: scalar
example: option.timeLimit = 12
option.useMemCopy
If set to true, RESCU will use the C-function memCpy to avoid duplicating large arrays. This can reduce the memory requirements by roughly 30%. Note that this may lead to memory corruption on some systems.
type: scalar
default: false
allowed: true,false
example: option.useMemCopy = true