BasisSet

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, gram_schmidt_orthonormalization=True)

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

Parameters:
  • 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

  • gram_schmidt_orthonormalization (bool) – Whether or not the basis orbitals should be transformed to an orthonormal basis using the Gram-Schmidt process.
    Default: True

angularMomenta()

Return the angular momenta of the basis set.

Returns:

The angular momentum (azimuthal quantum number) for each orbital.

Return type:

list

dftHalfParameters()

The DFT-1/2 parameters.

Returns:

The DFT-1/2 parameters.

Return type:

DFTHalfParameters | Automatic | Disabled

element()

The element for this basis set.

Returns:

The atomic element.

Return type:

PeriodicTableElement

fillingMethod()

The method using for filling the orbitals.

Returns:

The method for filling the orbitals.

Return type:

SphericalSymmetric | Anisotropic

filterMeshCutoff()

The cutoff for the filter function.

Returns:

The cutoff.

Return type:

PhysicalQuantity of type energy

gramSchmidtOrthonormalization()

Whether the basis set has been orthonormalized.

Returns:

True if the basis set is orthonormal.

Return type:

bool

hubbardU()

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.

numberOfValenceElectrons()

Function to get the number of electrons in total.

Returns:

The total number of valence electrons.

Return type:

int

occupations()

The occupations associated with the orbitals.

Returns:

The occupations of the orbitals given as a list of non-negative floats.

Return type:

list

onsiteSpinOrbitSplit()

List of spin-orbit splits per orbital.

Returns:

Spin-orbit splittings with one element for each orbital.

Return type:

PhysicalQuantity of type energy

orbitals()

The orbitals that forms this basis set.

Returns:

A list of orbital objects.

Return type:

list

projectorShift()

A query method for the pseudopotential projector shift.

Returns:

The projector shift energies specified for each angular momentum.

Return type:

PseudoPotentialProjectorShift

pseudopotential()

The pseudopotential used in generating the basis set.

Returns:

The pseudopotential.

Return type:

NormConservingPseudoPotential

uniqueString()

Return a unique string representing the state of the object.

Usage Examples

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

basis_set = [
    LDABasis.Hydrogen_SingleZeta,
    LDABasis.Oxygen_DoubleZetaPolarized
]
calculator = LCAOCalculator(basis_set=basis_set)

Define a BasisSet for Hydrogen:

hydrogen_1s = ConfinedOrbital(
    principal_quantum_number=1,
    angular_momentum=0,
    radial_cutoff_radius=5.28603678847*Bohr,
    confinement_start_radius=0.8 * 5.28603678847*Bohr,
    additional_charge=0.0,
    confinement_strength=20.000*Hartree*Bohr,
    radial_step_size=0.001*Bohr,
    )

hydrogen_1s_split = AnalyticalSplit(hydrogen_1s, split_norm = 0.40)

my_hydrogen_basis = BasisSet(
    element=Hydrogen,
    orbitals=[hydrogen_1s, hydrogen_1s_split],
    occupations=[0.7 , 0.3],
    pseudopotential=NormConservingPseudoPotential('normconserving/H.LDAPZ.zip'),
    )

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 = [
    GGABasis.Hafnium_SingleZetaPolarized(
        hubbard_u=[5.8,0.0,0.0]*eV,
        filling_method = Anisotropic)
]

Notes

  • 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.