Skip to content

pes.py🔗

aimsprop.pes 🔗

Functions🔗

compute_pes(bundle: Bundle, carrier_frequency: float, alpha: float, eKT: ndarray) -> Bundle 🔗

Compute the simple photoelectron spectroscopy, with Guassian blurring

User is responsible for calculating and assigning properties to the bundle frames: Dyson Orbitals Ionization Potential (IP)

Parameters:

Name Type Description Default
bundle Bundle

the Bundle object to compute the property for (modified in place)

required
carrier_frequency float

experimental probe pulse carrier frequency (hbar*omega)

required
alpha float

the Guassian blurring exponent

required
eKT ndarray

electron energies

required

Returns:

Type Description
Bundle

bundle: reference to the input Bundle object. The property key "pes" is set to computed PES property.

Source code in aimsprop/pes.py
def compute_pes(
    bundle: Bundle,
    carrier_frequency: float,
    alpha: float,
    eKT: np.ndarray,
) -> Bundle:

    """Compute the simple photoelectron spectroscopy, with Guassian blurring

    User is responsible for calculating and assigning properties to the bundle frames:
            Dyson Orbitals
            Ionization Potential (IP)

    Params:
        bundle: the Bundle object to compute the property for (modified in
            place)
        carrier_frequency: experimental probe pulse carrier frequency (hbar*omega)
        alpha: the Guassian blurring exponent
        eKT: electron energies

    Return:
        bundle: reference to the input Bundle object. The property
            key "pes" is set to computed PES property.
    """

    for frame in bundle.frames:
        IPs = frame.properties["IP"]
        dyson_norms = frame.properties["dyson_norms"]
        pes = np.zeros_like(eKT)
        for ind, (state, IP) in enumerate(IPs):
            dyson_norm = dyson_norms[np.where(dyson_norms[:, 0] == state), 1][0]
            pes += (
                dyson_norm
                * np.sqrt(alpha / np.pi)
                * np.exp(-alpha * (carrier_frequency - IP - eKT) ** 2)
            )
        frame.properties["pes"] = pes

    return bundle