Skip to content

dft.pseudopotentials

Pseudopotential and ion models for the DFT prototype.

import mlx_atomistic.dft.pseudopotentials

class Ion
def __init__(symbol: str, position: Sequence[float], pseudopotential: PseudopotentialData)

Ion center with a parsed pseudopotential.

Parameters

NameTypeDefaultDescription
symbolstr
positionSequence[float]
pseudopotentialPseudopotentialData

Properties

  • charge float — Valence charge represented by this pseudopotential.
class IonCollection
def __init__(ions: Sequence[Ion])

Collection of ions and their pseudopotentials.

Parameters

NameTypeDefaultDescription
ionsSequence[Ion]

Properties

  • centers mx.array — Ion center coordinates.
  • charges tuple[float, ...] — Valence charges.
  • formats tuple[str, ...] — Pseudopotential formats in ion order.
  • nonlocal_available bool — Whether any ion has parsed nonlocal projectors.
  • symbols tuple[str, ...] — Ion symbols.
  • valence_electron_count float — Neutral valence electron count.

Methods

def with_positions(positions: Sequence[Sequence[float]]) -> IonCollection

Return a copy with updated positions.

Parameters

NameTypeDefaultDescription
positionsSequence[Sequence[float]]

Returns

  • IonCollection
class LocalPseudopotentialField
def __init__(ions: IonCollection)

Real-space local potential generated by an IonCollection.

Parameters

NameTypeDefaultDescription
ionsIonCollection

Properties

  • centers mx.array — Ion center coordinates.
  • nonlocal_available bool — Whether nonlocal metadata is present.

Methods

def field(grid: RealSpaceGrid) -> mx.array

Evaluate the total local ion potential on a real-space grid.

Parameters

NameTypeDefaultDescription
gridRealSpaceGrid

Returns

  • mx.array
def forces(density: mx.array, grid: RealSpaceGrid) -> mx.array

Return local electron-ion forces from a density.

Parameters

NameTypeDefaultDescription
densitymx.array
gridRealSpaceGrid

Returns

  • mx.array
class NonlocalProjectorData
def __init__(angular_momentum: int, values: tuple[float, ...] = (), radial_grid: RadialGrid | None = None, cutoff_radius: float | None = None, coefficients: tuple[float, ...] = (), coupling: float = 0.0, metadata: dict[str, str | int | float] | None = None)

Parsed nonlocal projector metadata.

Milestone 4 stores this data but intentionally does not apply nonlocal projectors in the Kohn-Sham operator yet.

Parameters

NameTypeDefaultDescription
angular_momentumint
valuestuple[float, ...]()
radial_gridRadialGrid | NoneNone
cutoff_radiusfloat | NoneNone
coefficientstuple[float, ...]()
couplingfloat0.0
metadatadict[str, str | int | float] | NoneNone
class PseudopotentialData
def __init__(element: str, format: PseudopotentialFormat, valence_charge: float, local_grid: RadialGrid | None = None, gth_rloc: float | None = None, gth_coefficients: tuple[float, ...] = (), nonlocal_projectors: tuple[NonlocalProjectorData, ...] = (), metadata: dict[str, str | int | float | bool] | None = None)

Parsed pseudopotential data used by ion-centered local fields.

Parameters

NameTypeDefaultDescription
elementstr
formatPseudopotentialFormat
valence_chargefloat
local_gridRadialGrid | NoneNone
gth_rlocfloat | NoneNone
gth_coefficientstuple[float, ...]()
nonlocal_projectorstuple[NonlocalProjectorData, ...]()
metadatadict[str, str | int | float | bool] | NoneNone

Properties

  • nonlocal_available bool — Whether the source file contained nonlocal projector metadata.

Methods

def apply_nonlocal(_orbitals: mx.array, _grid: RealSpaceGrid) -> mx.array

Reject nonlocal application until the Milestone 5+ operator path exists.

Parameters

NameTypeDefaultDescription
_orbitalsmx.array
_gridRealSpaceGrid

Returns

  • mx.array
def local_derivative(radius: np.ndarray) -> np.ndarray

Evaluate dV_local/dr in Hartree/bohr.

Parameters

NameTypeDefaultDescription
radiusnp.ndarray

Returns

  • np.ndarray
def local_potential(radius: np.ndarray) -> np.ndarray

Evaluate the local potential in Hartree on radii in bohr.

Parameters

NameTypeDefaultDescription
radiusnp.ndarray

Returns

  • np.ndarray
class PseudopotentialFormat(StrEnum)

Supported pseudopotential file families.

class RadialGrid
def __init__(radii: Sequence[float], values: Sequence[float])

Radial samples for a local pseudopotential channel.

Parameters

NameTypeDefaultDescription
radiiSequence[float]
valuesSequence[float]

Properties

  • size int — Number of radial samples.

Methods

def derivative(r: np.ndarray, *, tail_charge: float | None = None) -> np.ndarray

Interpolate dV/dr at radius r.

Parameters

NameTypeDefaultDescription
rnp.ndarray
tail_chargefloat | NoneNone

Returns

  • np.ndarray
def interpolate(r: np.ndarray, *, tail_charge: float | None = None) -> np.ndarray

Interpolate values at radius r with a Coulomb tail fallback.

Parameters

NameTypeDefaultDescription
rnp.ndarray
tail_chargefloat | NoneNone

Returns

  • np.ndarray
def read_gth(path_or_database: str | Path, *, element: str | None = None, name: str | None = None) -> PseudopotentialData

Read a single GTH file or one entry from a CP2K-style GTH database.

Parameters

NameTypeDefaultDescription
path_or_databasestr | Path
elementstr | NoneNone
namestr | NoneNone

Returns

  • PseudopotentialData
def read_upf(path: str | Path) -> PseudopotentialData

Read a UPF v2-style pseudopotential file.

Parameters

NameTypeDefaultDescription
pathstr | Path

Returns

  • PseudopotentialData