class BasisSet(element, orbitals, occupations, hubbard_u=None, projector_shift=None, filling_method=None, pseudopotential=None, onsite_spin_orbit_split=None, filter_mesh_cutoff=None, dft_half_parameters=None)

Class for representing the basis set for given element in DFT.

  • element (PeriodicTableElement) – The element associated with this basis set.
  • orbitals (list) – The set of orbitals that forms this basis set. Each element in the list should be an instance of ConfinedOrbital, AnalyticalSplit, PolarizationOrbital, NumericalOrbital, or HydrogenOrbital.
  • occupations (list of non-negative float) – The initial occupation of each basis orbital.
  • hubbard_u (PhysicalQuantity type energy) – The Hubbard U energy for each orbital shell
  • projector_shift (PseudoPotentialProjectorShift) – Pseudopotential projector shift for each angular momentum.
  • filling_method (SphericalSymmetric | Anisotropic) – The method used for setting up the initial occupation.
    Default: SphericalSymmetric.
  • pseudopotential (NormConservingPseudoPotential) – The pseudopotential to be used for generating this basis set.
    Default: None.
  • onsite_spin_orbit_split (PhysicalQuantity of type energy) – Spin-orbit splits for each orbital.
    Default: numpy.zeros(n_orbitals) * eV where n_orbitals is the number of orbitals.
  • filter_mesh_cutoff (PhysicalQuantity of type energy) – A cutoff for filtering the basis functions. Must not be negative.
    Default: 0.0 * eV.
  • dft_half_parameters (DFTHalfParameters | Automatic | Disabled) – The DTF-1/2 parameters used for this basis set in the LCAO calculation. When set to Automatic the DFT-1/2 parameters will be populated from a table of optimized parameters. By setting it to Disabled DFT-1/2 will not be active for this basis set. This is used to disable DFT-1/2 for some elements or atomic sites while DFT-1/2 may be active for other atoms in the configuration.
    Default: Automatic

Return the angular momenta of the basis set.

Returns:The angular momentum (azimuthal quantum number) for each orbital.
Return type:list

The DFT-1/2 parameters.

Returns:The DFT-1/2 parameters.
Return type:DFTHalfParameters | Automatic | Disabled

The element for this basis set.

Returns:The atomic element.
Return type:PeriodicTableElement

The method using for filling the orbitals.

Returns:The method for filling the orbitals.
Return type:SphericalSymmetric | Anisotropic

The cutoff for the filter function.

Returns:The cutoff.
Return type:PhysicalQuantity of type energy

The Hubbard U associated with the orbitals.

Returns:The Hubbard U energies either as a PhysicalQuantity with one element for each orbital.
Return type:PhysicalQuantity of type energy.

The occupations associated with the orbitals.

Returns:The occupations of the orbitals given as a list of non-negative floats.
Return type:list

List of spin-orbit splits per orbital.

Returns:Spin-orbit splittings with one element for each orbital.
Return type:PhysicalQuantity of type energy

The orbitals that forms this basis set.

Returns:A list of orbital objects.
Return type:list

A query method for the pseudopotential projector shift.

Returns:The projector shift energies specified for each angular momentum.
Return type:PseudoPotentialProjectorShift

The pseudopotential used in generating the basis set.

Returns:The pseudopotential.
Return type:NormConservingPseudoPotential

Usage Examples

Use a SingleZeta basis set for Hydrogen and the (default) DoubleZetaPolarized basis set for Oxygen:

basis_set = [
calculator = LCAOCalculator(basis_set=basis_set)

Define a BasisSet for Hydrogen:

hydrogen_1s = ConfinedOrbital(
    confinement_start_radius=0.8 * 5.28603678847*Bohr,

hydrogen_1s_split = AnalyticalSplit(hydrogen_1s, split_norm = 0.40)

my_hydrogen_basis = BasisSet(
    orbitals=[hydrogen_1s, hydrogen_1s_split],
    occupations=[0.7 , 0.3],

calculator = LCAOCalculator(basis_set=my_hydrogen_basis)

Define a BasisSet for Hafnium with a hubbard U term for the 5d orbital, and using anisotropic filling:

basis_set = [
        filling_method = Anisotropic)


  • For further info on the different types of basis orbitals, see LCAO basis set.
  • With the SphericalSymmetric filling method, the orbitals in a shell have the same occupation, while with the Anisotropic filling method, the low-\(m\) values are fully occupied and the high-\(m\) values are empty. See also XC+U mean-field Hubbard term.
  • To see the default parameters for a basis set it is convenient to use the Script Generator tool in QuantumATK and set the script detail to Show default.
  • For an example of defining a BasisSet with a set of custom DFTHalfParameters, see Usage Examples. More information on the Automatic DFT-1/2 parameters and the DFT-1/2 method in general is given in DFT-1/2 method.