Skip to content

dft.system

Lightweight DFT system model for toy Γ-point calculations.

import mlx_atomistic.dft.system

class DFTSystem
def __init__(*, cell: Cell | Sequence[float], grid_shape: Sequence[int], electron_count: float | None = None, centers: Sequence[Sequence[float]] | None = None, amplitudes: Sequence[float] | float | None = None, widths: Sequence[float] | float | None = None, charges: Sequence[float] | None = None, pseudopotential: LocalGaussianPseudopotential | LocalPseudopotentialField | None = None, ions: IonCollection | None = None)

Minimal spin-unpolarized DFT system with local Gaussian centers.

Parameters

NameTypeDefaultDescription
cellCell | Sequence[float]
grid_shapeSequence[int]
electron_countfloat | NoneNone
centersSequence[Sequence[float]] | NoneNone
amplitudesSequence[float] | float | NoneNone
widthsSequence[float] | float | NoneNone
chargesSequence[float] | NoneNone
pseudopotentialLocalGaussianPseudopotential | LocalPseudopotentialField | NoneNone
ionsIonCollection | NoneNone

Properties

  • center_center_energy float — Pairwise center-center Coulomb energy.
  • center_center_forces np.ndarray — Pairwise center-center Coulomb forces.
  • center_count int — Number of local pseudopotential centers.
  • centers — Pseudopotential center coordinates.
  • grid RealSpaceGrid — Return the real-space grid for this system.

Methods

def cluster(*, cell: Cell | Sequence[float] = (10.0, 10.0, 10.0), grid_shape: Sequence[int] = (8, 8, 8), electron_count: float = 4.0, centers: Sequence[Sequence[float]] = ((4.0, 4.0, 5.0), (6.0, 4.0, 5.0), (5.0, 6.0, 5.0)), amplitudes: Sequence[float] | float = (-2.0, -2.0, -1.5), widths: Sequence[float] | float = (0.85, 0.85, 0.95), charges: Sequence[float] | None = None) -> DFTSystem

Build a small multi-center toy DFT system.

Parameters

NameTypeDefaultDescription
cellCell | Sequence[float](10.0, 10.0, 10.0)
grid_shapeSequence[int](8, 8, 8)
electron_countfloat4.0
centersSequence[Sequence[float]]((4.0, 4.0, 5.0), (6.0, 4.0, 5.0), (5.0, 6.0, 5.0))
amplitudesSequence[float] | float(-2.0, -2.0, -1.5)
widthsSequence[float] | float(0.85, 0.85, 0.95)
chargesSequence[float] | NoneNone

Returns

  • DFTSystem
def one_center(*, cell: Cell | Sequence[float] = (8.0, 8.0, 8.0), grid_shape: Sequence[int] = (8, 8, 8), center: Sequence[float] = (4.0, 4.0, 4.0), electron_count: float = 2.0, amplitude: float = -3.0, width: float = 0.9, charge: float | None = None) -> DFTSystem

Build a one-center toy DFT system.

Parameters

NameTypeDefaultDescription
cellCell | Sequence[float](8.0, 8.0, 8.0)
grid_shapeSequence[int](8, 8, 8)
centerSequence[float](4.0, 4.0, 4.0)
electron_countfloat2.0
amplitudefloat-3.0
widthfloat0.9
chargefloat | NoneNone

Returns

  • DFTSystem
def two_center(*, cell: Cell | Sequence[float] = (8.0, 8.0, 8.0), grid_shape: Sequence[int] = (8, 8, 8), centers: Sequence[Sequence[float]] = ((3.4, 4.0, 4.0), (4.6, 4.0, 4.0)), electron_count: float = 2.0, amplitudes: Sequence[float] | float = (-2.0, -2.0), widths: Sequence[float] | float = (0.8, 0.8), charges: Sequence[float] | None = None) -> DFTSystem

Build a two-center toy DFT system.

Parameters

NameTypeDefaultDescription
cellCell | Sequence[float](8.0, 8.0, 8.0)
grid_shapeSequence[int](8, 8, 8)
centersSequence[Sequence[float]]((3.4, 4.0, 4.0), (4.6, 4.0, 4.0))
electron_countfloat2.0
amplitudesSequence[float] | float(-2.0, -2.0)
widthsSequence[float] | float(0.8, 0.8)
chargesSequence[float] | NoneNone

Returns

  • DFTSystem
def with_cell(cell: Cell | Sequence[float], *, scale_centers: bool = False) -> DFTSystem

Return a copy with a new orthorhombic cell.

Parameters

NameTypeDefaultDescription
cellCell | Sequence[float]
scale_centersboolFalse

Returns

  • DFTSystem
def with_centers(centers: Sequence[Sequence[float]]) -> DFTSystem

Return a copy with shifted center coordinates.

Parameters

NameTypeDefaultDescription
centersSequence[Sequence[float]]

Returns

  • DFTSystem
def center_center_energy(system: DFTSystem) -> float

Return pairwise center-center Coulomb energy for toy DFT centers.

Parameters

NameTypeDefaultDescription
systemDFTSystem

Returns

  • float
def center_center_forces(system: DFTSystem) -> np.ndarray

Return pairwise Coulomb forces between toy DFT centers.

Parameters

NameTypeDefaultDescription
systemDFTSystem

Returns

  • np.ndarray