• 【Multiwfn学习】-Multiwfn批量读入xyz结构文件并生成ORCA输入文件


    Multiwfn

    在科研过程中,有时需要计算大批量的同类结构,过程中涉及很多重复操作。因此借助一些工具将重复的任务智能化,是一个非常理智的选择。
    在这里插入图片描述

    Multiwfn是由北京科音自然科学研究中心的卢天从2009年11月起主导开发的最为强大的量子化学波函数分析程序,功能极为广泛、十分高效、非常易于使用,并且开源免费。
    本文主要使用Multiwfn产生ORCA量子化学程序的输入文件的功能。

    任务思路

    在这里插入图片描述
    Multiwfn3.8使用手册的5.2,5.3有介绍使用multiwfn处理大批量任务的一些技巧示例。
    卢老师也写过非常详细的博文介绍:详谈Multiwfn的命令行方式运行和批量运行的方法
    因此,在此基础上,融合本人任务需要,分享使用Multiwfn批量产生ORCA输入文件的脚本。

    Multiwfn产生ORCA输入文件过程

    首先需要知道通过Multiwfn是如何生成ORCA输入文件的,整个过程需要输入什么信息。在此,先记录手动在命令行输入命令产生ORCA输入文件的过程

    1. 打开Multiwfn,进入导入文件界面,按回车,输入文件
    2. 输入主功能:100,回车确认
    3. 进一步选择子功能:2,回车确认
    4. 选择选项:12,回车确认
    5. 继续回车确认,默认命名等下产生ORCA输入文件的文件名
    6. 进入ORCA输入文件的条件选择界面,界面信息见下:
      在这里插入图片描述
    7. 接下来根据自己的ORCA计算条件,依次选择选项设置输入文件信息。比如,我需要进行几何优化任务,服务器运算条件为48核,3000M/核,计算的泛函与基组选择BLYP, def2-TZVP。因此我需要依次选择选项:-10,0,2选项进行设置
    8. 设置计算条件,选择选项:-10,回车确认,输入48,回车确认,输入3000,回车确认
    9. 设置计算任务,选择选项:0,回车确认,输入2,回车确认
    10. 设置计算方法,选择选项:2,回车确认。便在输入文件的当前目前下产生了ORCA的输入文件
    11. 退出Multiwfn,输入:q,回车确认

    使用脚本实现Multiwfn生成ORCA输入文件

    当我们熟悉Multiwfn产生ORCA输入文件的流程后,便可以将该过程用到的命令写入脚本,并结合for循环,实现批量生成任务。

    以上任务的例子,用shell语言可以简化为:
    echo -e "100\n2\n12\n\n0\n2\n-10\n48\n2000\n2\nq\n" | Multiwfn POSCAR.xyz > POSCAR.out"
    这里100\n2\n12\n\n0\n2\n-10\n48\n2000\n2\nq\n是被传递给Multiwfn的指令,数字表示选项/功能,\n表示回车确认。POSCAR.xyz为Multiwfn读入的文件,用POSCAR.out记录Multiwfn产生ORCA输入文件过程中在屏幕上输出的信息。

    下面结合for循环,将该过程写入脚本文件,便可以执行Multiwfn批量生成ORCA输入文件的任务。

    #!/bin/bash
    export poscar_dir=./2_C53N_str_1e-3_opt_xtb/  #文件夹
    out_file="out"
    #下面利用循环实现批量运行,此部分代码适合用于实验文件夹名字与文件夹内xyz文件名字不相同的情况
    for file in `ls -l ${poscar_dir} |awk '/^d/ {print $NF}'`;do
        # 打印文件名
        echo "对文件夹${file}执行multiwfn输出orca输出文件..."
        # 切换到需要进行实验的目录
        cd "${poscar_dir}${file}"
        # 运行实验
        #multiwfn
        # 查找.xyz后缀文件
        for expname in `ls . | grep .xyz`;
            do
                echo "实验文件名:${expname}"
                echo -e "100\n2\n12\n\n0\n2\n-10\n48\n2000\n2\nq\n" | Multiwfn ${expname} > "${expname%%xyz*}$out_file"
            done
        echo "${file}ORCA输出文件生成完成"
        cd ..
        cd ..  
    done
    echo "所有POSCAR的ORCA输出文件已经生成"
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    以上代码,可以实现下面的过程。
    在这里插入图片描述

  • 相关阅读:
    互动直播 之 全屏播放时 鼠标隐藏功能
    eclipse中springboot项目如何打包成jar文件
    最简单的方法教你查看 iOS 手机上的日志
    麦克风阵列波束形成之DSB原理与实现
    GEE:LST地表温度反演函数
    UE5 C++报错:is not currently enabled for Live Coding
    pytorch-Normalization
    如何准确高效的对电商数据进行分析
    Hive之函数
    【LeetCode】232.用栈实现队列
  • 原文地址:https://blog.csdn.net/qq_40481843/article/details/127807957