A given pseudopotential-generator code might offer several possible levels of theory, and output different sets of magnitudes accordingly.
The set
attribute in several API routines allows the handling of
various sets of semilocal pseudopotentials, projectors, and
pseudo-wave-functions. Its value is normalized as follows, depending
on the type of calculation generating the pseudopotential and the way
in which the code chooses to present the results. (First, the symbolic
name used in the API is given, followed by the value of the attribute in
the PSML file)
(SET_NONREL
, non_relativistic
) for the non-relativistic, non-spin-DFT
case.
(SET_SREL
,scalar_relativistic
) if the calculation is
scalar-relativistic, or if it is fully relativistic and an set of lj
potentials averaged over j
is provided.
(SET_SO
, spin_orbit
) if a
fully relativistic code provides this combination of lj
potentials.
(SET_LJ
,lj
) for a fully relativistic calculation with straight output
of the $lj$ channels.
(SET_UP
,up
) and (SET_DOWN
,down
), for a spin-DFT
calculation with straight output of the spin channels.
(SET_SPINAVE
,spin_average
) for the spin-DFT case when the generation code
outputs a population-averaged pseudopotential.
(SET_SPINDIFF
,spin_difference
) for the spin-DFT case when the generation code
outputs this (rare) combination.
Note that a given code might choose to output its semilocal-potential
information in two different forms (say, as scalar-relativistic and
spin-orbit combinations plus the lj
form). The format allows this,
although in this particular case the information can easily be
converted from the lj
form to the other by client programs.
For extensibility, the format allows two more values for the set
attribute, (SET_USER1
,user_extension1
) and (SET_USER2
,
user_extension2
), which can in principle be used to store custom
information while maintaining structural and operative compatibility
with the format.
The wildcard specification SET_ALL
can be used to represent the
union of all possible sets.