|
本帖最后由 hxd_yi 于 2018-9-19 01:28 编辑
把http://sobereva.com/143中的脚本中$xmolFile->Append(sprintf "%s %f %f %f \n",$atom->ElementSymbol, $atom->X, $atom->Y,$atom->Z); 这一行改为
$xmolFile->Append(sprintf "%s %f %f %f \n",$atom->ElementSymbol, $atom->Force->X, $atom->Force->Y,$atom->Force->Z) if ($atom->Force);
具体代码如下:
#!perl
use strict;
use warnings;
use Getopt::Long;
use MaterialsScript qw(:all);
my $inf = "C6H12.xtd";
my $outf = "d:/C6H12.xyz";
my $doc = $Documents{$inf} or die "Can't open $inf";
open(my $fout, ">", $outf) or die "Can't write $outf";
for my $i ($doc->Trajectory->StartFrame .. $doc->Trajectory->EndFrame){
$doc->Trajectory->CurrentFrame = $i;
printf $fout "%d\n", scalar(@{$doc->Atoms});
print $fout "Frame: $i\n";
printf $fout "%-2s %15.6lf %15.6lf %15.6lf\n", $_->ElementSymbol, $_->Force->X, $_->Force->Y, $_->Force->Z for (grep $_->Force, @{$doc->Atoms});
}
close($fout);
$doc->Close;
在ms中用Windows端提交,那么需要用sobereva脚本中Append,自己在linux中用RunMatScript.sh计算的话,可以不用Append。记得把$inf和$outf改一下。
|
评分 Rate
-
查看全部评分 View all ratings
|