Pseudopotential calculations¶
MRChem supports Goedecker-Teter-Hutter (GTH) pseudopotentials, which replace core electrons with an effective potential. This reduces the number of electrons that need to be treated explicitly, which can significantly lower the computational cost..
Setting up a pseudopotential calculation¶
A pseudopotential calculation is set up by adding a Pseudopotential section
to the input file. The pp_files keyword is a JSON string that maps elements
(or atom indices) to pseudopotential parameter files. Here is an example for a
sodium atom:
world_prec = 1e-04
world_unit = bohr
Pseudopotential {
$pp_files
{
"Na": "psppar.Na"
}
$end
}
SCF {
initial_mixing_steps = 2
}
Molecule {
charge = 0
multiplicity = 2
$coords
Na 0.0 0.0 0.0
$end
}
WaveFunction {
method = pbe
restricted = false
}
The pseudopotential parameter file (here psppar.Na) must be present in
the working directory when the calculation is launched. These files follow the
PSPPAR format used by BigDFT and contain the local potential
parameters, non-local projectors and optionally non-linear core correction
(NLCC) data.
Assigning pseudopotentials¶
The pp_files keyword accepts a JSON dictionary. Keys can be either element
symbols or atom indices (1-based). This allows flexible assignment:
By element – all atoms of that element use the same pseudopotential:
$pp_files
{
"Na": "psppar.Na",
"Cl": "psppar.Cl"
}
$end
By index – specific atoms can be assigned individually:
$pp_files
{
"1": "psppar.Na",
"2": "psppar.Cl"
}
$end
Mixed all-electron and pseudopotential – setting an empty string or
"none" for an element will use the all-electron description for that
element:
$pp_files
{
"Na": "psppar.Na",
"O": "none"
}
$end
Atoms that are not mentioned in pp_files at all will also default to
all-electron treatment.
Pseudopotential precision¶
The precision of the pseudopotential construction is controlled by
pp_prec, which defaults to world_prec. In most cases the default
is sufficient, but it can be set explicitly if needed:
Pseudopotential {
$pp_files
{
"Na": "psppar.Na"
}
$end
pp_prec = 1.0e-6
}
PSPPAR file format¶
The pseudopotential parameter files use the format from the BigDFT/Goedecker pseudopotential library. A typical file looks like this:
spin-polarized 1 2.840 5.800 ...
11.000 1.000 20240517 zatom, zion, date
12 -101130 1 0 2002 0 pspcod, ixc, lmax, ...
0.7499... 2 -0.7392... -0.1720... rloc nloc c1 .. cnloc
2 nsep
0.7125... 2 0.3650... -0.1023... s-projector
0.7522...
0.9000... 1 0.4314... p-projector
0.0000...
0.5941... 0.3564... rcore, qcore (nlcc)
The key quantities read from this file are:
zion: ionic charge (number of valence electrons)rloc,nloc,c1..cnloc: local pseudopotential parametersnsep: number of non-local (separable) projector channelsFor each channel: projector radius, dimension, and h-matrix elements
Optional NLCC parameters:
rcoreandqcore
GTH pseudopotential files for most elements can be obtained from the CP2K GTH pseudopotential repository. or from here: https://github.com/OpenCPMD/GTH-pseudopotentials/tree/main