Skip to content

dft.mixing

Density mixers for the DFT SCF loop.

import mlx_atomistic.dft.mixing

class LinearMixer
def __init__(beta: float = 0.35, name: str = 'linear')

Simple linear density mixing.

Parameters

NameTypeDefaultDescription
betafloat0.35
namestr'linear'

Methods

def metadata() -> dict[str, float | int | str]

Return JSON-safe mixer metadata.

Returns

  • dict[str, float | int | str]
def mix(current: mx.array, target: mx.array) -> mx.array

Return a mixed density.

Parameters

NameTypeDefaultDescription
currentmx.array
targetmx.array

Returns

  • mx.array
def reset() -> None

Reset mixer state.

Returns

  • None
class PulayDIISMixer
def __init__(beta: float = 0.35, history_size: int = 6, regularization: float = 1e-10, name: str = 'pulay-diis')

Pulay DIIS mixer for density residuals.

Parameters

NameTypeDefaultDescription
betafloat0.35
history_sizeint6
regularizationfloat1e-10
namestr'pulay-diis'

Methods

def metadata() -> dict[str, float | int | str | Sequence[float]]

Return JSON-safe mixer metadata.

Returns

  • dict[str, float | int | str | Sequence[float]]
def mix(current: mx.array, target: mx.array) -> mx.array

Return a DIIS-mixed density, falling back to linear mixing early on.

Parameters

NameTypeDefaultDescription
currentmx.array
targetmx.array

Returns

  • mx.array
def reset() -> None

Clear DIIS history.

Returns

  • None