|
本帖最后由 Freeman 于 2025-6-12 15:26 编辑
mwfn是社长提出的存储波函数文件的格式。我写的两个程序都需要读写mwfn文件,但两个程序分别是用C++和Python写的,我必须分别写mwfn读写功能,很繁琐。后来我发现pybind11这个库很棒。我只需要写C++的程序,再多加几行提示,包含pybind11的头文件,编译完就能得到可以被Python调用的动态库,十分方便。我用这种方式编写了mwfn文件读写库——libmwfn,同时提供C++和Python接口,这里分享给大家。将来大家有读写mwfn文件的需求,链接/调用libmwfn即可,不必自己写了。
安装:
1. C++
1.1 依赖:
线性代数库Eigen3。Eigen3是header-only的,下载即用。
支持C++20的编译器。
GNU make。
1.2 下载
- git clone https://github.com/FreemanTheMaverick/libmwfn.git
复制代码 1.3 改写makefile的前两行,指定C++编译器和Eigen3的位置。
1.4 安装
2. Python
2.1 依赖:
Python>=3.7,setuptools,pip
2.2 安装
功能:
获取/修改mwfn保存的电荷,电子数(两种自旋),原子数,基函数个数,轨道个数,(每个原子的)壳层数,轨道系数矩阵,轨道能量,轨道占据数,密度矩阵,Fock矩阵,原子-壳层-基函数对应关系列表
Gram-Schmidt或Lowdin正交化轨道。
详细信息请看主页和头文件里的注释。
注意事项:
1、暂时不支持RO波函数;
2、mwfn的笛卡尔基函数的存储顺序是[d0, d+1, d-1, d+2, d-2],但libmwfn内部存储顺序是[d-2, d-1, d0, d+1, d+2]。读写mwfn时,libmwfn会自动改变顺序,以保证mwfn和内部的顺序均无误。
|
评分 Rate
-
查看全部评分 View all ratings
|