# 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. list
dftHalfParameters()

The DFT-1/2 parameters.

Returns: The DFT-1/2 parameters. DFTHalfParameters | Automatic | Disabled
element()

The element for this basis set.

Returns: The atomic element. PeriodicTableElement
fillingMethod()

The method using for filling the orbitals.

Returns: The method for filling the orbitals. SphericalSymmetric | Anisotropic
filterMeshCutoff()

The cutoff for the filter function.

Returns: The cutoff. 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. 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. list
onsiteSpinOrbitSplit()

List of spin-orbit splits per orbital.

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

The orbitals that forms this basis set.

Returns: A list of orbital objects. list
projectorShift()

A query method for the pseudopotential projector shift.

Returns: The projector shift energies specified for each angular momentum. PseudoPotentialProjectorShift
pseudopotential()

The pseudopotential used in generating the basis set.

Returns: The pseudopotential. 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,
confinement_strength=20.000*Hartree*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.