来点硬核的!以standalone模式在服务器上跑Forcite计算任务
Materials studio以下简称MS,是一款优秀的计算模拟软件,其中Dmol3、CASTEP、Forcite等模块被广泛用于学术研究中。MS拥有独特的Client-Server运行模式,通过客户端准备输入文件和查看输出文件,计算由连接的远程服务器(也可以是本机)完成。
一般情况我们可以通过Tools-Server Console添加远程服务器,然后在计算时候通过Job control选项卡直接调用远端服务器做计算。这是最简单也是最推荐的方式。
但是,我们时常会遇到远端服务器防火墙抽风、服务器权限管理升级、网络故障等问题导致的提交任务不流畅甚至无法提交的情况。那么面对这种问题该如何解决?
A放个假出去玩几天B买台服务器自己用,不再受制于超算平台的管理C打电话给超算管理员求帮忙解决D使用standalone mode提交任务本题为多选题,答案为BCD皆可。
A是错误答案,因为科研党这个时候是没心情出去玩的,愁都愁死了。
B选项,想购买服务器的可以联系我们,四种配置:低配、中配、高配、定制,满足您的计算所需。想要详细了解的小伙伴,可以点击下方链接跳转,了解更多详情:
唯理计算服务器定制您的专属“利器”,助您的计算快人一步!mp.weixin.qq.com/s/P_P2dt7IoI0XEfFCk3tsqg

C选项请了解一下唯理超算租赁,24小时都有技术小哥哥帮你解决问题,这种端口问题更是分分钟解决。超算租赁具体详情可以点击下方蓝字跳转:
【福利】租超算送课程,就在唯理计算,还有2400核时免费试用
D选项请看今天的文章:
本文参考了https://nusit.nus.edu.sg/services/hpc/application-software/material-studio/ 文中内容可能不是最简单的,但一定是可以让任务顺利运行起来的。欢迎大家批评指正。
说到standalone mode,其中Dmol3和CASTEP这两个模块原生就对standalone mode支持特别好,基本没有难点,教程也写得很详细,具体参见官方教程中:CASTEP > CASTEP jobs > Running CASTEP in standalone modeDMol3 > DMol3 jobs > Running DMol3 in standalone mode
如果这两个模块还是有困难,欢迎大家进入“唯理计算服务群”,群里探讨。进群方式见文末
跑Forcite计算任务,不用愁,我一步步来教你
今天主要谈一下Forcite这类需要调用RunMatScript.sh的计算模块的standalone mode。我自己搜了很久网上很少提到Forcite以及Mesocite这类模块的调用方式,今天算是补个坑吧。官方教程在:Materials Visualizer > Working with client-server systems > Working with jobs > Running jobs in standalone mode
但是讲得很不好理解,我这里就用一个小计算的操作流程来说明一下怎么做,其他希望大家举一反三。
比如我要做一个叫做goodjob的任务,其中我已经用其他手段搭建好了用来计算的晶胞叫做goodjob.xsd,也做过退火优化等操作(确保不会因为体系有问题而报错)
此时打开Forcite Calculation对话框,将需要对goodjob.xsd做计算的参数调整好,然后点击Run按钮右边的小三角标志,出现Copy Script标志,点击后贴到记事本中,假设是下面这样
my $results = Modules->Forcite->Dynamics->Run($doc, Settings(CurrentForcefield => 'COMPASSII',ChargeAssignment => 'Use current',TrajectoryRestart => 'No',appendTrajectory => 'Yes',Ensemble3D => 'NPT',Pressure => 0.0001,NumberOfSteps => 20000,TimeStep => 0.5,TrajectoryFrequency => 10000,Thermostat => 'NHL',Barostat => 'Parrinello',EnergyDeviation => 5e+008,StressXX => -0.0001,StressYY => -0.0001,StressZZ => -0.0001));my $outTrajectory = $results->Trajectory;
此时在这些代码前面添上几行
#!perluse strict;use Getopt::Long;use MaterialsScript qw(:all);my %Args;GetOptions(\%Args, "Structure=s");my $doc = $Documents{"goodjob.xsd"};
然后把这个记事本保存为goodjob.pl
此时你已经有了goodjob.pl和goodjob.xsd两个计算需要的文件。如果是本地的服务器,此时直接到服务器上MS安装路径下找到$MS_PATH/etc/Scripting/bin/RunMatScript.sh
然后在goodjob.pl和goodjob.xsd所在的目录下运行$MS_PATH/etc/Scripting/bin/RunMatScript.sh [-h] [-np number of cores] [-q queue name] [-project] scriptname [ -- script arguments ... ]
对后面那些可自定义的参数有疑问或者感兴趣的同学可以参考官方教程中的Scripting in Materials Studio > Running scripts on a server > Running MaterialsScript in standalone mode
当然我们今天主要讲的是超算上使用。如果您有Forcite的授权,可以提供授权文件和安装包,唯理计算技术小哥哥会帮你在服务器上安装好。那么请看一下唯理超算租赁提供的脚本ForciteByWeili.sh:
#!/bin/bashNUM_NODES=1PROCS_PER_NODE=64xsdNAME=`lsgoodjob.xsd`BASENAME=${xsdNAME%.xsd*}MS_PATH=/test/MaterialsStudio #这里是ms的路径,换成自己的ms路径NUM_PROCS=`expr $NUM_NODES \* $PROCS_PER_NODE`$MS_PATH/etc/Scripting/bin/RunMatScript.sh -np $NUM_PROCS -project $BASENAME -- $xsdNAME
此时我们手里有ForciteByWeili.sh、 goodjob.pl和goodjob.xsd三个文件。直接将三个文件放在超算同一个路径下,然后正常submit就可以了。
如果计算很快终止了,并且报“没有找到goodjob.xsd”的错误。此时可以在当前文件夹中新建一个叫做goodjob_Files 的文件夹,然后在goodjob_Files 文件夹中再建立一个Documents文件夹,然后把goodjob.xsd复制到Documents文件夹中,再回到上上层目录,直接submit就不会报错了。