sisl.Orbital

class sisl.Orbital(R: float | dict | None, q0: float = 0.0, tag: str = '')

Bases: object

Base class for orbital information.

The orbital class is still in an experimental stage and will probably evolve over some time.

Parameters:
  • R – maximum radius of interaction. In case of a dict the values will be passed to the radial_minimize_range method. Currently allowed arguments are:

    • contains: R will be selected such that the integrated function func

      will contain this percentage of the full integral (determined at maxR

    • maxR: maximum R to search in, default to 100 Ang

    • func: the function that will be integrated and checked for contains

    See examples for details. If None the default will be {'contains': 0.9999}. If a negative number is passed, it will be converted to {'contains':-R} A dictionary will only make sense if the class has the _radial function associated.

  • q0 – initial charge

  • tag – user defined tag

Examples

>>> orb = Orbital(1)
>>> orb_tag = Orbital(2, tag="range=2")
>>> orb.R == orb_tag.R / 2
True
>>> orbq = Orbital(2, 1)
>>> orbq.q0
1.

Optimizing the R range for the radial function integral \(\int\mathrm dr radial(r)^2 r ^2\) >>> R = { … “contains”: 0.9999, … “func”: lambda radial, r: (radial(r) * r)**2, … “maxR”: 100 … } >>> orb = Orbital(R)

The default dictionary if none is passed will be: dict(contains=0.9999, func=lambda radial, r: abs(radial(r)), maxR=100) The optimization problem depends heavily on the func since the tails are important for real-space quantities.

See also

SphericalOrbital

orbitals with a spherical basis set

AtomicOrbital

specification of n, m, l quantum numbers + a spherical basis set

HydrogenicOrbital

simplistic orbital model of Hydrogenic-like basis sets

GTOrbital

Gaussian-type orbitals

STOrbital

Slater-type orbitals

Methods

copy()

Create an exact copy of this object

equal(other[, psi, radial])

Compare two orbitals by comparing their radius, and possibly the radial and psi functions

name([tex])

Return a named specification of the orbital (tag)

psi(r, *args, **kwargs)

Calculate \(\phi(\mathbf r)\) for Cartesian coordinates

scale(scale)

Scale the orbital by extending R by scale

toGrid([precision, c, R, dtype, atom])

Create a Grid with only this orbital wavefunction on it

toSphere([center])

Return a sphere with radius equal to the orbital size

Attributes

R

Maxmimum radius of orbital

q0

Initial charge

tag

Named tag of orbital

copy() Orbital

Create an exact copy of this object

equal(other, psi: bool = False, radial: bool = False)[source]

Compare two orbitals by comparing their radius, and possibly the radial and psi functions

When comparing two orbital radius they are considered equal with a precision of 1e-4 Ang.

Parameters:
  • other (Orbital) – comparison orbital

  • psi – also compare that the full psi are the same

  • radial – also compare that the radial parts are the same

name(tex=False)[source]

Return a named specification of the orbital (tag)

psi(r, *args, **kwargs)[source]

Calculate \(\phi(\mathbf r)\) for Cartesian coordinates

scale(scale: float) Orbital

Scale the orbital by extending R by scale

toGrid(precision: float = 0.05, c: float = 1.0, R=None, dtype=np.float64, atom=1)[source]

Create a Grid with only this orbital wavefunction on it

Parameters:
  • precision (float, optional) – used separation in the Grid between voxels (in Ang)

  • c (float or complex, optional) – coefficient for the orbital

  • R (float, optional) – box size of the grid (default to the orbital range)

  • dtype (numpy.dtype, optional) – the used separation in the Grid between voxels

  • atom (optional) – atom associated with the grid; either an atom instance or something that Atom(atom) would convert to a proper atom.

toSphere(center=None)[source]

Return a sphere with radius equal to the orbital size

Returns:

Sphere – sphere with a radius equal to the radius of this orbital

property R

Maxmimum radius of orbital

property q0

Initial charge

property tag

Named tag of orbital