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
, orHydrogenOrbital
.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
wheren_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 toAutomatic
the DFT-1/2 parameters will be populated from a table of optimized parameters. By setting it toDisabled
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:
- 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:
- pseudopotential()¶
The pseudopotential used in generating the basis set.
- Returns:
The pseudopotential.
- Return type:
- 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.