.. _应用实例: ************************************** 应用实例 ************************************** .. _Nanodcal实例: ================================ Nanodcal_ 实例 ================================ 以Benzene分子的自洽、本征态计算为例详细描述 Nanodcal_ 在Device Studio中的应用。包含创建项目,从建模到计算,到数据的可视化分析整个流程。**实际上,** Nanodcal_ **的功能不仅于此,详情可参照** Nanodcal_ **应用教程或点击对应的紫色字体软件名称**。Device Studio可以生成 Nanodcal_ 很多功能计算的输入文件,用户可根据计算需要选择生成。 .. _计算流程: 计算流程 ================================ .. _自洽计算流程: 自洽计算流程 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nanodcal自洽计算在Device Studio中的流程如图4-1-1所示。 .. figure:: images/78_Nanodcal_1.png :align: center 图 4-1-1: Nanodcal自洽计算流程 .. _本征态计算流程: 本征态计算流程 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nanodcal本征态计算在Device Studio中的流程如图4-1-2所示。 .. figure:: images/79_Nanodcal_2.png :align: center 图 4-1-2: Nanodcal本征态计算流程 .. _Nanodcal: http://hzwtech.com/software-prosubsub/38.html .. _创建项目: 创建项目 ================================ 双击Device Studio图标快捷方式启动软件,其图形界面如图3-1所示,根据界面提示选择创建一个新的项目(Create a new Project)或打开一个已经存在的项目(Open an existing Project)的按钮,选中之后点击界面中的 :guilabel:`OK` 按钮即可。若选择创建一个新的项目,用户可根据需要给该项目命名,如本项目命名为 ``Nanodcal``,或采用软件默认项目名。 .. _搭建或导入结构: 搭建或导入结构 ================================ 对于想要搭建的结构,用户可先在Device Studio本地数据库或在线数据库搜索结构是否存在。若存在,找到结构直接导入;若不存在,可将库中的相关结构先导入,在此基础上方便快捷的搭建,也可直接自行搭建。如Benzene分子,该结构在Device Studio本地库中存在,则可在本地库中找到该结构直接导入即可,导入Benzene分子结构后的图形界面如图4-1-3所示。在Device Studio中导入Benzene分子结构操作这里不做详细说明,用户可参照 :ref:`导入结构` 节内容。 .. figure:: images/80_Nanodcal_3.png :align: center 图 4-1-3: 导入Benzene分子结构后的图形界面 .. _生成自洽计算输入文件: 生成自洽计算输入文件 ================================ 在如图4-1-3所示界面中选中 :guilabel:`Simulator` → :guilabel:`Nanodcal` → :guilabel:`SCF Calculation`,弹出界面如图4-1-4(a)所示,用户可根据所计算的结构及计算需要分别选中 :guilabel:`Basic settings` 、:guilabel:`Iteration control`、:guilabel:`Basis set`、:guilabel:`Spin type` 这四个按钮合理设置参数,之后点击 :guilabel:`Generate files` 即可生成自洽计算输入文件。 如生成Benzene分子自洽计算输入文件,根据计算需要设置参数,分别选中 :guilabel:`Basic settings` 、:guilabel:`Iteration control`、:guilabel:`Basis set`、:guilabel:`Spin type` 设置参数分别如图4-1-4(a)、4-1-4(b)、4-1-4(c)和4-1-4(d)所示,设置好参数后点击 :guilabel:`Generate files` 即可生成Benzene自洽计算输入文件 ``scf.input``。 .. list-table:: * - .. figure:: images/81_Nanodcal_4.png 图 4-1-4(a) - .. figure:: images/82_Nanodcal_5.png 图 4-1-4(b) * - .. figure:: images/83_Nanodcal_6.png 图 4-1-4(c) - .. figure:: images/84_Nanodcal_7.png 图 4-1-4(d) .. _生成本征态计算输入文件: 生成本征态计算输入文件 ================================ 在如图4-1-3所示界面中选中 :guilabel:`Simulator` → :guilabel:`Nanodcal` → :guilabel:`Analysis`,弹出Analysis界面,在界面中双击 :guilabel:`EigenStates`,并设置参数如图4-1-5所示,设置好参数后点击 :guilabel:`Generate files` 即可生成Benzene本征态计算输入文件 ``EigenStates.input``。 .. figure:: images/85_Nanodcal_8.png :align: center 图 4-1-5: 设置Benzene分子本征态计算参数界面 .. _连接服务器: 连接服务器 ================================ 生成输入文件之后需要计算,计算之前需连接装有Nanodcal的服务器。在如图4-1-6所示界面中点击 :guilabel:`设置` 按钮,弹出MachineOptions界面,在该界面中点击 :guilabel:`New` 按钮,弹出MachineSet界面,在该界面中填写Computer Name、HostIp、part、Username、Password等一系列信息,点击 :guilabel:`OK` 按钮则在MachineOptions界面中添加了装有Nanodcal的服务器如图4-1-7所示。在图4-1-7所示的界面中选中装有Nanodcal的服务器,点击 :guilabel:`Select` 按钮则连接上装有Nanodcal的服务器。同理,若要连接装有Nanodcal本地电脑,在图4-1-7所示界面中选中MyComputer,点击 :guilabel:`Select` 即可。 .. figure:: images/86_Nanodcal_9.png :align: center 图 4-1-6: 连接服务器操作界面 .. figure:: images/87_Nanodcal_10.png :align: center 图 4-1-7 MachineOptions界面 .. _自洽计算: 自洽计算 ================================ 在做自洽计算之前需查看计算所需的输入文件(``scf.input``)和基组文件(``C_PBE-DZP.nad`` 和 ``H_PBE-DZP.nad``)是否齐全,再根据计算需要打开 ``scf.input`` 文件并查看文件中的参数设置是否合理,若不合理,则可选择直接在文件中进行编辑或重新生成,最后再进行自洽计算。具体步骤如下: (1)连接装有Nanodcal的服务器。 (2)检查自洽计算所需的输入文件(``scf.input``)和基组文件(``C_PBE-DZP.nad`` 和 ``H_PBE-DZP.nad``)是否齐全。选中 ``scf.input`` → 右击 → :guilabel:`Open with` 即可查看到Benzene分子自洽计算输入文件如下所示: .. code:: python %%What quantities should be calculated calculation.name = scf %Basic setting calculation.occupationFunction.temperature = 300 calculation.realspacegrids.E_cutoff = 80 Hartree calculation.xcFunctional.Type = GGA_PBE96 calculation.k_spacegrids.number = [ 1 1 1 ]' system.centralCellVectors = [[16.36 0 0]' [0 15.642 0]' [0 0 11]'] system.spinType = NoSpin %Iteration control calculation.SCF.monitoredVariableName = {'rhoMatrix','hMatrix','totalEnergy','bandEnergy','gridCharge','orbitalCharge'} calculation.SCF.convergenceCriteria = {1e-04,1e-04,[],[],[],[]} calculation.SCF.maximumSteps = 200 calculation.SCF.mixMethod = Pulay calculation.SCF.mixRate = 0.1 calculation.SCF.mixingMode = H calculation.SCF.startingMode = H %calculation.SCF.donatorObject = NanodcalObject.mat %Basic set system.neutralAtomDataDirectory = '../' system.atomBlock = 12 AtomType OrbitalType X Y Z C PBE-DZP 5.00900000 5.57200000 5.00000000 C PBE-DZP 5.77900000 4.23800000 5.00000000 C PBE-DZP 7.31900000 4.23800000 5.00000000 C PBE-DZP 8.08900000 5.57200000 5.00000000 C PBE-DZP 7.31900000 6.90500000 5.00000000 C PBE-DZP 5.77900000 6.90500000 5.00000000 H PBE-DZP 3.86900000 5.57200000 5.00000000 H PBE-DZP 5.20900000 3.25100000 5.00000000 H PBE-DZP 7.88900000 3.25100000 5.00000000 H PBE-DZP 9.22900000 5.57100000 5.00000000 H PBE-DZP 7.88900000 7.89200000 5.00000000 H PBE-DZP 5.21000000 7.89300000 5.00000000 end .. figure:: images/88_Nanodcal_11.png :align: center 图 4-1-8 Run界面 (3)在Device Studio的Project Explorer区域选中 ``scf.input`` → 右击 → :guilabel:`Run`,弹出Run界面如图4-1-8所示。根据计算需要设置参数后点击 :guilabel:`Save` 按钮保存相应的Pbs脚本,之后点击如图4-1-8所示界面中的 :guilabel:`Run` 按钮则可做Benzene分子的自洽计算。用户可在Job Manager区域中观测自洽计算状态,当自洽计算任务处于排队中、计算中和计算完成时,:guilabel:`Status` 分别为Queued、Running、Finished;在计算过程中,点击 :guilabel:`刷新` 按钮,通过 :guilabel:`Commit Status` 、:guilabel:`Status` 可查看到自洽计算的计算进度和计算状态;计算完成后Device Studio的Job Manager区域如图4-1-9所示,点击 :guilabel:`Action` 下的 :guilabel:`下载` 按钮弹出下载Benzene分子自洽计算结果界面如图4-1-10所示,在该界面找到自洽计算的结果文件 ``NanodcalObject.mat``,点击 :guilabel:`Download` 则可下载,下载后可在软件的Project Explorer区域查看到该结果文件。 .. figure:: images/89_Nanodcal_12.png :align: center 图 4-1-9 Benzene分子自洽计算完成的Device Studio的Job Manager区域 .. figure:: images/90_Nanodcal_13.png :align: center 图 4-1-10 下载Benzene分子自洽计算结果界面 .. _本征态计算: 本征态计算 ================================ 本征态计算需调用自洽计算结果,故需先做自洽计算,再做本征态计算。本算例已经做过自洽计算,则不需要再做自洽计算,直接调用自洽计算结果做本征态计算即可。Benzene分子的本征态计算的具体步骤如下: (1)连接装有Nanodcal的服务器。 (2)选中 ``EigenStates.input`` → 右击 → :guilabel:`Open with` 即可查看到Benzene分子本征态计算输入文件如下所示: .. code:: python system.object = NanodcalObject.mat calculation.name = eigenStates calculation.eigenStates.kSpacePoints = [0 0 0]' calculation.eigenStates.numberOfBands = [2,2] calculation.eigenStates.realSpace = true calculation.eigenStates.plot = true %calculation.control.xml = true calculation.control.dsf = 1 (3)在Device Studio的Project Explorer区域选中 ``EigenStates.input`` → 右击 → :guilabel:`Run`,弹出Run界面如图4-1-8所示。根据计算需要设置参数后点击 :guilabel:`Save` 按钮保存相应的Pbs脚本,点击界面中的 :guilabel:`Run` 按钮则可做Benzene分子的本征态计算,计算完成后下载本征态计算结果文件 ``EigenStates.dsf``。 .. _本征态的可视化分析: 本征态的可视化分析 ================================ 对于本征态的可视化分析有3种情况,分别为3维(3D)、2维(2D)和1维(1D),3种可视化分析可自由切换,其中2D的可视化分析又分为平面显示和立体显示2种情况,用户可根据需要进行选择。 .. _本征态的3D可视化分析: 本征态的3D可视化分析 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 在Device Studio的Project Explorer区域选中本征态计算结果文件 ``EigenStates.dsf`` → 右击 → :guilabel:`Show View`,弹出本征态的3D可视化分析界面如图4-1-11,由图4-1-11可知,用户可根据需要选择在可视化分析结果中是否显示该体系的结构信息以及显示该结构信息的方式;可选择是否显示Lattice框以及显示Lattice框的方式(分子结构没有Lattice框,故本算例中无法使用该功能);可通过改变Isovalue值来改变本征态3D可视化分析的形状;可通过选择如图4-1-11中所示的红色框选部分来选择从不同平面来观察本征态的3D可视化分析结果;可通过滚动鼠标中键将3D可视化分析结果放大或缩小;可按住鼠标右键,通过拖动鼠标将3D可视化分析结果进行旋转;可根据需要选择不同的Colormap。**在如图4-1-11所示的界面中BandValues部分,用户可通过下拉选择显示第几条带的本征态可视化分析结果**。 .. figure:: images/91_Nanodcal_14.png :align: center 图 4-1-11 Benzene分子本征态的3D可视化分析界面 选中如图4-1-11所示界面中 :guilabel:`Export` 快捷图标,弹出导出可视化分析结果的图形界面,用户可根据需要选择图片的保存路径和保存格式,并给所保存的图片命名。 对于不是通过Device Studio计算本征态,但含有本征态计算结果文件 ``EigenStates.dsf`` 的用户,可在如图4-1-3所示界面中选中 :guilabel:`Simulator` → :guilabel:`Nanodcal` → :guilabel:`Analysis Plot`,弹出导入本征态结果文件的图形界面,在界面中选中本征态结果文件 ``EigenStates.dsf``,点击 :guilabel:`打开` 按钮即可弹出本征态的3D可视化分析界面。 本征态的2D可视化分析 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 图4-1-11右侧的Draw Model栏下的三个选项3D、2D和1D分别代表着计算结果的3D、2D和1D的可视化分析。若想对Benzene分子本征态计算结果进行2D的可视化分析,直接选中Draw Model栏下的2D按钮即可切换成本征态2D的可视化分析界面如图4-1-12所示。 由图4-1-12可知,2D的可视化分析分为两种情况,一种是平面显示(Plane display),一种是立体显示(Stereoscopic display),此刻选中的按钮为Plane display,即图3-12亦为average along x的Benzene分子本征态2D平面显示的可视化分析结果。用户可根据需要通过选择Average direction栏下的3个按钮中的average along x、average along y或average along z来选择沿着x轴、y轴或z轴平均来查看并分析本征态的相关性质;可根据需要选择是否显示Colorbar,选择合适的Colormap,修改坐标轴的取值范围,修改标题和坐标轴的字体类型、字体大小以及字体是否加粗等。 .. figure:: images/92_Nanodcal_15.png :align: center 图 4-1-12 Benzene分子本征态的2D可视化分析界面(平面显示) 若想切换为立体显示,直接选中如图4-1-12中的Stereoscopic display按钮即可,切换后的图形界面如图4-1-13所示,图4-1-13亦为average along x的Benzene分子本征态2D立体显示的可视化分析结果。对于如图4-1-13图中左侧的图像,用户可通过滚动鼠标将图像放大或缩小;可通过拖动鼠标使图像发生任意角度和任意方向的旋转;可通过按住鼠标中键,拖动鼠标将图像进行平移。 .. figure:: images/93_Nanodcal_16.png :align: center 图 4-1-13 Benzene分子本征态的2D可视化分析界面(立体显示) 本征态的1D可视化分析 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 选中如图4-1-13所示的Draw Model栏下的1D按钮即可切换成1D的可视化分析界面如图4-1-14所示,图3-15亦为average in xy plane的Benzene分子本征态1D的可视化分析结果。用户可根据需要选择沿着不同的平面平均来观察和分析本征态,修改图像中线条粗细、坐标轴取值范围;可自行设置标题和坐标轴的标注,同时可修改标题、坐标轴和标注的字体类型和字体大小,以及是否给字体加粗;可根据需要设定导出本征态1D可视化分析结果的图片的大小。 .. figure:: images/94_Nanodcal_17.png :align: center 图 4-1-14 Benzene分子本征态的1D可视化分析界面 .. _LAMMPS实例: ================================ LAMMPS_ 实例 ================================ LAMMPS_ 即 **Large-scale Atomic/Molecular Massively Parallel Simulator** , **大规模原子分子并行模拟器** ,主要用于 **分子动力学** 相关的一些计算和模拟工作。一般来讲,分子动力学所涉及到的领域,LAMMPS代码也都涉及到了。LAMMPS由美国Sandia国家实验室开发,以GPL license发布,即开放源代码且可以免费获取使用,这意味着使用者可以根据自己的需要自行修改源代码。LAMMPS可以支持包括气态,液态或者固态相形态下、各种系综下、百万级的原子分子体系,并提供支持多种势函数,具有良好的并行扩展性。 .. _LAMMPS: https://lammps.sandia.gov **分子动力学模拟** ( **Molecular Dynamics** , **MD** )是近年来飞速发展的一种分子模拟方法,已经被广泛应用于化学化工、材料科学与工程、物理、生物医药等科学和技术领域,起到越来越重要的作用。MD模拟用来研究不能用解析方法来解决的复合体系的平衡性质和力学性质,用来搭建理论和实验的桥梁,在数学、生物、化学、物理学、材料科学和计算机科学交叉学科占据重要地位。 **LAMMPS软件安装** :详见 https://lammps.sandia.gov/doc/Install.html .. _LAMMPS计算流程: LAMMPS计算流程 ================================ LAMMPS分子动力学计算在 ``Device Studio`` 中的流程如图4-2-1所示。 .. figure:: images/lammps1_flowchart.png :align: center :width: 300 图 4-2-1 : LAMMPS计算流程 .. _LAMMPS创建项目: LAMMPS创建项目 ================================ 双击 ``Device Studio`` 图标快捷方式启动软件,根据界面提示选择创建一个新的项目 :guilabel:`Create a new Project` 或打开一个已经存在的项目 :guilabel:`Open an existing Project` 的按钮,选中之后点击界面中的 :guilabel:`OK` 按钮即可。若选择创建一个新的项目,用户可根据需要选择保存路径、给项目命名。 .. _LAMMPS导入结构: LAMMPS导入结构 ================================ LAMMPS中有三种定义原子的方式,从data或restart文件中读取、使用lattice, region, create_box, create_atoms命令在晶格上创建原子、使用replicate命令复制原子以生成更大的体系。简单地说,一种是依靠命令创建,一种是从其他文件导入。目前,软件在导入结构后才能使用界面设置参数。如图4-2-2,选择菜单栏 :guilabel:`File` 下的 :guilabel:`Import` ,选中结构文件并导入,支持 :guilabel:`*.hzw` 、 :guilabel:`*.cif` 、 :guilabel:`*.xyz` 、 :guilabel:`POSCAR` 等多种格式,同时在图形界面显示该结构,如图4-2-3所示。 .. figure:: images/lammps2_import1.png :align: center :width: 300 图 4-2-2: 导入结构文件菜单栏 .. figure:: images/lammps3_import2.png :align: center :width: 600 图 4-2-3: 导入结构并显示 .. _LAMMPS参数设置: LAMMPS参数设置 ================================ 选择菜单栏中 :guilabel:`Simulator` → :guilabel:`Lammps`,弹出参数设置界面。 LAMMPS参数设置界面主要分为三个选项卡 :guilabel:`Initialization` (初始化)、 :guilabel:`Simulation box` (模拟盒子)和 :guilabel:`Settings` (设置)。 .. _Initialization模块参数设置及含义: Initialization模块参数设置及含义 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 在 :guilabel:`initialization` 选项卡中对与初始化相关的基本参数进行修改,如图4-2-4所示,包括设置开启或关闭牛顿第三定律的 :guilabel:`Newton` 、对特定加速包设置的 :guilabel:`Package` 、后缀 :guilabel:`Suffix` 、模拟的单位 :guilabel:`Units` 、设置使用哪种类型的原子 :guilabel:`Atom_Style` 。其中, :guilabel:`Package` 、 :guilabel:`Suffix` 默认不设置,也可以勾选进行相关设置,其余参数必须进行设置。 .. figure:: images/lammps4_initialization.png :align: center :width: 600 图 4-2-4: “Initialization”模块及默认值 .. _Simulation box模块参数设置及含义: Simulation box模块参数设置及含义 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 在 :guilabel:`Simulation box` 选项卡中对与模拟盒子相关的基本参数进行修改,如图4-2-5所示,包括设置三个方向边界条件的 :guilabel:`Boundary` 、模拟盒子属性的 :guilabel:`Box` 、模拟维度的 :guilabel:`Dimension` 。其中, :guilabel:`Box` 默认不设置,也可以勾选进行相关设置,其余参数必须进行设置。 .. figure:: images/lammps5_simulation_box.png :align: center :width: 600 图 4-2-5: “Simulation box”模块及默认值 .. _Settings模块参数设置及含义: Settings模块参数设置及含义 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 由于LAMMPS在同一个输入脚本中可以采用多条相同的命令在不同的位置、进行不同参数的设置,因此完成基本参数设置后,选择 :guilabel:`Settings` 选项卡,如图4-2-6所示,分为 :guilabel:`Commands` 、 :guilabel:`Settings` 、 :guilabel:`Parameters` 三个部分。 .. figure:: images/lammps6_settings.png :align: center :width: 600 图 4-2-6: “Settings”模块 :guilabel:`Commands` 中包含了多条LAMMPS命令,主要分为八个部分: :guilabel:`simulation box` (仿真盒子)、 :guilabel:`atomic model` (原子模型)、 :guilabel:`force field` (力场)、 :guilabel:`simulation setup` (仿真设置)、 :guilabel:`simulation adjustment & calculation settings` (仿真调整和计算设置)、 :guilabel:`output` (输出)、 :guilabel:`simulate` (仿真)以及 :guilabel:`user_defined` (用户自定义)。 .. figure:: images/lammps7_settings_exp1.png :align: center :width: 600 图 4-2-7: “Settings”模块中添加velocity命令 如图4-2-7,双击 :guilabel:`Commands` 中的命令名称如 :guilabel:`velocity` ,命令以表格中新行的形式被加入到中间 :guilabel:`Settings` 部分,也可以拖拽命令插入到 :guilabel:`Settings` 部分的任意位置。 :guilabel:`Settings` 部分分为两列, :guilabel:`Name` 显示命令的名称, :guilabel:`Data` 显示通过右侧 :guilabel:`Parameters` 设置好的参数。 如图4-2-7中 `velocity unset` 行,此时参数尚未进行设置,当对 :guilabel:`Parameters` 中的参数设置完成后,需要单击 :guilabel:`Settings` 中任意行,此时 :guilabel:`Data` 部分将自动填入设置好的参数,如图4-2-8。 .. figure:: images/lammps8_settings_exp2.png :align: center :width: 600 图 4-2-8: “Settings”模块中设置velocity参数 LAMMPS不同的命令的参数不同,因此选择不同命令时, :guilabel:`Parameters` 也对应发生变化。 .. figure:: images/lammps9_settings_exp3.png :align: center :width: 400 图 4-2-9: 调整命令位置或删除该条命令 在中间 :guilabel:`Settings` 部分,可以对每行命令进行上下拖拽调整顺序或者右键进行 :guilabel:`Move up` 、 :guilabel:`Move down` 或 :guilabel:`Delete` 操作,如图4-2-9所示。 点击已经设置好的命令行,可以随时在 :guilabel:`Parameters` 中进行参数的修改。 .. _LAMMPS输入文件的生成: LAMMPS输入文件的生成 ================================ 单击右下角 :guilabel:`Generate file` 弹出如图4-2-10所示文本框,文本框中保存根据用户设置生成的命令文本,软件会自动添加一些用于计算监控、读取文件的命令,用户可以根据自身需求在文本框中对命令进行调整。单击 :guilabel:`OK` 后,根据文本框中的内容一键生成LAMMPS的输入文件 ``lammps.in`` ,该文件保存在目录树中,如图4-2-11所示,同时也在目录树中生成 ``lammps.data`` 文件。在 ``lammps.in`` 文件名上右键可以打开该文件所在文件夹。 .. figure:: images/lammps10_generatef_file1.png :align: center :width: 400 图 4-2-10: 生成文件对话框 .. figure:: images/lammps11_generatef_file2.png :align: center :width: 600 图 4-2-11: 生成文件目录树