def psi_overlap(self, upper: int, lower: int, shift=0) -> np.ndarray: """Return psi[upper] * psi[lower] with psi[lower] shifted by shift number of periods.""" if self.crystalType == 'ZincBlende': return sum( phi[upper] * self._shift_psi(phi[lower], shift) for phi in (self.psis, self.philh, self.phiso)) # default fallback and crystalType == 'simple' return self.psis[upper] * self._shift_psi(self.psis[lower], shift)
时间: 2024-04-12 14:32:47 浏览: 88
PyPI 官网下载 | cf_lines_overlap-0.0.1-py2-none-any.whl
在这段代码中,`psi_overlap` 是一个方法,它接受 `upper`、`lower` 和 `shift` 作为参数,并返回一个 `np.ndarray` 类型的数组。这个方法的作用是计算 `psi[upper] * psi[lower]`,其中 `psi[lower]` 被向右移动了 `shift` 个周期。
在方法的实现中,首先判断 `self.crystalType` 是否为 'ZincBlende'。如果是的话,就使用一个生成器表达式遍历三个数组 `self.psis`、`self.philh` 和 `self.phiso` 中的元素,并计算 `phi[upper] * self._shift_psi(phi[lower], shift)` 的和。这里的 `_shift_psi` 方法用于将 `phi[lower]` 向右移动 `shift` 个周期。
如果 `self.crystalType` 不是 'ZincBlende',或者没有设置,默认情况下,就使用 `self.psis[upper] * self._shift_psi(self.psis[lower], shift)` 进行计算,并返回结果。
阅读全文