Skip to content

dft.nonlocal_pseudopotential

Separable nonlocal pseudopotential operators.

import mlx_atomistic.dft.nonlocal_pseudopotential

class NonlocalPseudopotentialOperator
def __init__(grid: RealSpaceGrid, projectors: ProjectorSet)

Hermitian separable nonlocal pseudopotential operator.

Parameters

NameTypeDefaultDescription
gridRealSpaceGrid
projectorsProjectorSet

Properties

  • available bool — Whether nonlocal projectors are available.

Methods

def apply(orbitals: mx.array) -> mx.array

Apply the separable nonlocal operator to one orbital or an orbital stack.

Parameters

NameTypeDefaultDescription
orbitalsmx.array

Returns

  • mx.array
def energy(orbitals: mx.array, *, occupations: Sequence[float]) -> mx.array

Return the occupied nonlocal pseudopotential energy.

Parameters

NameTypeDefaultDescription
orbitalsmx.array
occupationsSequence[float]

Returns

  • mx.array
def from_ions(ions: IonCollection, grid: RealSpaceGrid) -> NonlocalPseudopotentialOperator

Build the nonlocal operator for an ion collection.

Parameters

NameTypeDefaultDescription
ionsIonCollection
gridRealSpaceGrid

Returns

  • NonlocalPseudopotentialOperator
def to_dict() -> dict

Return JSON-safe projector metadata.

Returns

  • dict
class ProjectorSet
def __init__(projectors: Sequence[np.ndarray] | mx.array, couplings: Sequence[float] | mx.array, *, angular_momenta: Sequence[int] | None = None, metadata: Sequence[dict] | None = None)

Real-space separable nonlocal projectors on one grid.

Parameters

NameTypeDefaultDescription
projectorsSequence[np.ndarray] | mx.array
couplingsSequence[float] | mx.array
angular_momentaSequence[int] | NoneNone
metadataSequence[dict] | NoneNone

Properties

  • available bool — Whether any projector is present.
  • count int — Number of projectors.

Methods

def from_ions(ions: IonCollection, grid: RealSpaceGrid) -> ProjectorSet

Build normalized real-space projectors for all parsed ion projectors.

Parameters

NameTypeDefaultDescription
ionsIonCollection
gridRealSpaceGrid

Returns

  • ProjectorSet
def apply_nonlocal_pseudopotential(orbitals: mx.array, grid: RealSpaceGrid, projectors: ProjectorSet) -> mx.array

Apply Σᵢ |βᵢ>Dᵢ<βᵢ| to one orbital or an orbital stack.

Parameters

NameTypeDefaultDescription
orbitalsmx.array
gridRealSpaceGrid
projectorsProjectorSet

Returns

  • mx.array
def nonlocal_pseudopotential_energy(orbitals: mx.array, grid: RealSpaceGrid, projectors: ProjectorSet, *, occupations: Sequence[float]) -> mx.array

Return occupied expectation value of a separable nonlocal operator.

Parameters

NameTypeDefaultDescription
orbitalsmx.array
gridRealSpaceGrid
projectorsProjectorSet
occupationsSequence[float]

Returns

  • mx.array