fourierTransform.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:qmflows-namd 作者: SCM-NV 项目源码 文件源码
def calculate_fourier_trasform_cartesian(
        symbols: Vector, coords: Vector, dictCGFs: Dict, mo_i: Vector,
        kpoints: Vector, chikdic=None) -> Vector:
    """
    Calculate the Fourier transform projecting the MO in a set of plane waves
    mo_fourier(k) = < phi(r) | exp(i k . r)>
    """
    if (chikdic is None):
        chikdic = get_fourier_basis(symbols, dictCGFs, kpoints)

    result = np.zeros(len(kpoints), dtype=np.complex128)
    acc = 0
    for symbol, xyz in zip(symbols, coords):
        krs = -2j * pi * np.dot(kpoints, xyz)
        eikrs = np.exp(krs)
        cfgks = chikdic[symbol]
        dim_cgfs = len(cfgks)
        coefs = mo_i[acc: acc + dim_cgfs]
        prod = coefs[:, None] * cfgks * eikrs[None, :]
        result += np.sum(prod, axis=0)
        acc += dim_cgfs
    return result
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号