计算化学公社

标题: 分享我写的mwfn文件读写库:libmwfn [打印本页]

作者
Author:
Freeman    时间: 2025-6-12 15:14
标题: 分享我写的mwfn文件读写库:libmwfn
本帖最后由 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 下载
  1. git clone https://github.com/FreemanTheMaverick/libmwfn.git
复制代码
1.3 改写makefile的前两行,指定C++编译器和Eigen3的位置。
1.4 安装
  1. make -j
复制代码

2. Python
2.1 依赖:
Python>=3.7,setuptools,pip
2.2 安装
  1. pip install libmwfn
复制代码


功能:
获取/修改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和内部的顺序均无误。


作者
Author:
bluewhale    时间: 2025-6-12 21:44
在 macOS (Apple M1)下makefile中的 -march=native 要换成 -mcpu=apple-m1,否则报类似如下的错误提示:
cc1plus: error: unknown value 'apple-m1' for '-march'
cc1plus: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8.7-a armv8.8-a armv8-r armv9-a native

作者
Author:
Freeman    时间: 2025-6-12 23:14
bluewhale 发表于 2025-6-12 21:44
在 macOS (Apple M1)下makefile中的 -march=native 要换成 -mcpu=apple-m1,否则报类似如下的错误提示:
c ...

谢谢提醒。我确实没有在macOS上测试过。以后我会测试-march=native的必要性,如果发现没必要,就直接删掉好了。




欢迎光临 计算化学公社 (http://ccc.keinsci.com/) Powered by Discuz! X3.3