查看原文
其他

在服务器端如何执行固定吸附量吸附任务,唯理计算来支招

唯理计算 科学指南针一模拟计算联盟 2022-07-09

MS的Sorption模块是做多孔材料吸附用得比较多的程序,很多人都会用自己的电脑做吸附计算,但是能用服务器为啥不用呢,而且还不占用电脑内存。那么我们就以MFI分子筛吸附CO2为例介绍在服务器端执行固定吸附量吸附任务,主要步骤包括以下几步:
1.准备文件MFI.xsdCO2.xsd ,前者是从IZA网站下载优化好的MFI结构,后者也是优化好的结构
2.准备脚本:SorptionFixedLoading.pl

#!perl
use strict;
use Getopt::Long;
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; # 这里的4是指1个MFI晶胞吸附40个CO2分子
# calculating Energy will return heat of adsorption
my $results = $sorptionFixedLoading->Run($doc, Settings(
CurrentForcefield => "COMPASS",
AssignChargeGroups => "Yes",
Temperature => 298,
LoadingMoves => 5000,
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 molecules
Requested loading = 40
Actual loading   = 30 in Sorption.FixedLoading
那么就是 LoadingMovesNumEquilibrationSteps 太小了,增大即可解决。
3.执行脚本:
执行脚本之前要注意:MFI.xsd ,CO2.xsdSorptionFixedLoading.pl 应位于同一文件夹之下
xxx/RunMatScript.sh -np 1 SorptionFixedLoading &
其中xxxRunMatScript.sh 文件所在的路径,-np 后面的 1 是指用1个核去做计算(Sorption模块不能做并行,用2个核和1个核是一样快,所以1个核就够了),SorptionFixedLoading 是perl脚本的名称 (去掉后面的pl) ,& 放后台去执行程序。 

插播下广告


唯理计算也可以提供服务器配置采购和超算租赁哦~
1.服务器配置采购服务低配、中配、高配、定制,四种方案满足你的计算所需。


具体详情点击下方,蓝字跳转:

学计算,不来套服务器?唯理计算新增服务器配置业务!


2.超算租赁服务:24小时都有技术小哥哥帮你解决问题
具体详情点击下方蓝字跳转:
【福利】租超算送课程,就在唯理计算,还有2400核时免费试用

one more thing

如果要做双组份的吸附,比如MFI同时吸附CO2和H2,SorptionFixedLoading.pl 就应该改成下面这种:

#!perl
use strict;
use Getopt::Long;
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 adsorption
my $results = $sorptionFixedLoading->Run($doc, Settings(
CurrentForcefield => "COMPASS",
AssignChargeGroups => "Yes",
Temperature => 298,
LoadingMoves => 5000,
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


备注:模拟计算进群

群里可以和老师一起探讨问题,老师也会帮助解答问题的哦~

   推荐阅读:


END


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存