MS的Sorption模块是做多孔材料吸附用得比较多的程序,很多人都会用自己的电脑做吸附计算,但是能用服务器为啥不用呢,而且还不占用电脑内存。那么我们就以MFI分子筛吸附CO2为例介绍在服务器端执行固定吸附量吸附任务,主要步骤包括以下几步:1.准备文件:MFI.xsd 和CO2.xsd ,前者是从IZA网站下载优化好的MFI结构,后者也是优化好的结构2.准备脚本:SorptionFixedLoading.pluse MaterialsScript qw(:all);Documents->Import("MFI.xsd");my $doc = $Documents{"MFI.xsd"};###############################################################my $sorptionFixedLoading = Modules->Sorption->FixedLoading;my $component1 = Documents->Import("CO2.xsd");$sorptionFixedLoading->AddComponent($component1);$sorptionFixedLoading->Loading($component1) = 40; # 这里的4是指1个MFI晶胞吸附40个CO2分子# calculating Energy will return heat of adsorptionmy $results = $sorptionFixedLoading->Run($doc, Settings(CurrentForcefield => "COMPASS",AssignChargeGroups => "Yes", NumEquilibrationSteps => 5000,ReturnLowEnergyConfigurations => "Yes",CalculateProbabilityFields => "Yes",CalculateEnergyFields => "Yes",CalculateEnergyDistributions => "Yes"));
代码解释:计算用的是compass力场,默认的截断半径是fine,即12埃;ReturnLowEnergyConfigurations是得到能量最低构型,常用于构建分子动力学模拟的初始文件;CalculateProbabilityFields是计算CO2分子在MFI分子筛孔道中不同位置吸附的概率分布;CalculateEnergyFields是计算CO2分子在MFI分子筛孔道中不同位置吸附的能量分布;CalculateEnergyDistributions则得到吸附能分布。如果程序报错:Unable to load the requested number of moleculesActual loading = 30 in Sorption.FixedLoading
那么就是 LoadingMoves 和NumEquilibrationSteps 太小了,增大即可解决。执行脚本之前要注意:MFI.xsd ,CO2.xsd 和SorptionFixedLoading.pl 应位于同一文件夹之下xxx/RunMatScript.sh -np 1 SorptionFixedLoading &
其中xxx 是RunMatScript.sh 文件所在的路径,-np 后面的 1 是指用1个核去做计算(Sorption模块不能做并行,用2个核和1个核是一样快,所以1个核就够了),SorptionFixedLoading 是perl脚本的名称 (去掉后面的pl) ,& 放后台去执行程序。 one more thing
如果要做双组份的吸附,比如MFI同时吸附CO2和H2,SorptionFixedLoading.pl 就应该改成下面这种:use MaterialsScript qw(:all);Documents->Import("MFI.xsd");my $doc = $Documents{"MFI.xsd"};###############################################################my $sorptionFixedLoading = Modules->Sorption->FixedLoading;my $component1 = Documents->Import("CO2.xsd");$sorptionFixedLoading->AddComponent($component1);$sorptionFixedLoading->Loading($component1) = 40; # 这里的40是指1个MFI晶胞吸附40个CO2分子my $component2 = Documents->Import("H2.xsd");$sorptionFixedLoading->AddComponent($component2);$sorptionFixedLoading->Loading($component2) = 30; # 这里的30是指1个MFI晶胞吸附30个H2分子# calculating Energy will return heat of adsorptionmy $results = $sorptionFixedLoading->Run($doc, Settings(CurrentForcefield => "COMPASS",AssignChargeGroups => "Yes", NumEquilibrationSteps => 5000,ReturnLowEnergyConfigurations => "Yes",CalculateProbabilityFields => "Yes",CalculateEnergyFields => "Yes",CalculateEnergyDistributions => "Yes"));
文章链接:
https://pubs.acs.org/doi/10.1021/acs.jpcc.7b07374
引用格式:
J. Phys. Chem. C 2017, 121, 41, 22872–22882
唯理计算小福利:
针对模拟计算我们有专门的沟通群,想进群的小伙伴加微信
17812574221
备注:模拟计算进群
群里可以和老师一起探讨问题,老师也会帮助解答问题的哦~