24小时热门版块排行榜    

查看: 863  |  回复: 3
【悬赏金币】回答本帖问题,作者@七安将赠送您 10 个金币

@七安

新虫 (小有名气)

[求助] 如何提取siesta输出的hamiltonian和overlap

在输入文件中已设置Save HS  True并且计算已输出label.HSX文件,现需要查看其中计算的哈密顿量,如何才能从该文件中提取哈密顿量?
发自小木虫手机客户端
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

卡开发发

专家顾问 (著名写手)

Ab Initio Amateur

虽然我没具体研究和折腾过,可行的方式有如下几种:
1、直接读取HSX。但HSX是Fortran写入的二进制文件,可能需要去了解HSX读取或者写入逻辑。例如SIESTA程序提供的Utils当中有hsx2hs.f90,其中有读取HSX文件的逻辑,或者你可以参考DeepH程序,当中preprocess/siesta_get_data.py提供了python语言处理HSX的功能。
2、对SIESTA源码部分进行修改,将HSX的写入格式从unformatted改成formatted后重新编译,这样你能得到一份“人类可读”的HSX,然后写程序读取之,只不过可能其他模块并不兼容。
3、在SIESTA编译时挂上NetCDF4,然后计算时使用Write.DMHS.History.NetCDF,然后HS可以按照NetCDF4进行存储,使用相应语言的NetCDF4的库并写程序读取之。
不一定挂在论坛,计算问题问题欢迎留言。
2楼2025-08-04 06:26:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

@七安

新虫 (小有名气)

引用回帖:
2楼: Originally posted by 卡开发发 at 2025-08-04 06:26:17
虽然我没具体研究和折腾过,可行的方式有如下几种:
1、直接读取HSX。但HSX是Fortran写入的二进制文件,可能需要去了解HSX读取或者写入逻辑。例如SIESTA程序提供的Utils当中有hsx2hs.f90,其中有读取HSX文件的逻辑 ...

siesta编译已具有netcdf4模块,只是在siesta生成的TSHS或HSX文件中读取哈密顿量时有些困难,即使用Python语言提取的哈密顿量也是错误提取
发自小木虫手机客户端
3楼2025-08-18 17:55:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

卡开发发

专家顾问 (著名写手)

Ab Initio Amateur

引用回帖:
3楼: Originally posted by @七安 at 2025-08-18 17:55:52
siesta编译已具有netcdf4模块,只是在siesta生成的TSHS或HSX文件中读取哈密顿量时有些困难,即使用Python语言提取的哈密顿量也是错误提取
...

那你看看方案1或2呢?不过2的方法可能比较土也比较折腾。
不一定挂在论坛,计算问题问题欢迎留言。
4楼2025-08-20 10:15:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 @七安 的主题更新
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见