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)

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
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
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()
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

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.