Skip to content

dft.occupations

Spin and orbital occupation models for DFT.

import mlx_atomistic.dft.occupations

class FermiDiracOccupations
def __init__(electron_count: float, temperature: float = 0.01, spin_mode: SpinMode = 'unpolarized', tolerance: float = 1e-10, max_iterations: int = 100)

Fermi-Dirac occupations with electron-count conservation.

Parameters

NameTypeDefaultDescription
electron_countfloat
temperaturefloat0.01
spin_modeSpinMode'unpolarized'
tolerancefloat1e-10
max_iterationsint100

Methods

def resolve(eigenvalues: Sequence[float] | mx.array) -> OccupationResult

Return Fermi-Dirac occupations for sorted or unsorted eigenvalues.

Parameters

NameTypeDefaultDescription
eigenvaluesSequence[float] | mx.array

Returns

  • OccupationResult
class FixedOccupations
def __init__(occupations: Sequence[float], *, spin_mode: SpinMode = 'unpolarized')

Explicit fixed orbital occupations.

Parameters

NameTypeDefaultDescription
occupationsSequence[float]
spin_modeSpinMode'unpolarized'

Methods

def resolve(_eigenvalues: Sequence[float] | mx.array | None = None) -> OccupationResult

Return fixed occupations.

Parameters

NameTypeDefaultDescription
_eigenvaluesSequence[float] | mx.array | NoneNone

Returns

  • OccupationResult
class OccupationResult
def __init__(occupations: mx.array, electron_count: float, chemical_potential: float | None = None, temperature: float | None = None, spin_mode: SpinMode = 'unpolarized')

Orbital occupations and chemical-potential diagnostics.

Parameters

NameTypeDefaultDescription
occupationsmx.array
electron_countfloat
chemical_potentialfloat | NoneNone
temperaturefloat | NoneNone
spin_modeSpinMode'unpolarized'

Methods

def to_dict() -> dict

Return a JSON-safe occupation summary.

Returns

  • dict
def magnetization_density(up_density: mx.array, down_density: mx.array) -> mx.array

Return m(r) = ρ↑(r) - ρ↓(r).

Parameters

NameTypeDefaultDescription
up_densitymx.array
down_densitymx.array

Returns

  • mx.array
def spin_density_from_orbitals(up_orbitals: mx.array, down_orbitals: mx.array, grid: RealSpaceGrid, *, up_occupations: Sequence[float], down_occupations: Sequence[float]) -> tuple[mx.array, mx.array]

Build collinear spin densities ρ↑ and ρ↓.

Parameters

NameTypeDefaultDescription
up_orbitalsmx.array
down_orbitalsmx.array
gridRealSpaceGrid
up_occupationsSequence[float]
down_occupationsSequence[float]

Returns

  • tuple[mx.array, mx.array]