“第10届量子化学波函数分析与Multiwfn程序培训班将于5月4-8日于北京举办,这是一次性完整、系统学习波函数分析的各种理论知识和全面掌握强大的Multiwfn波函数分析程序使用的最不可错过的机会!请点击此链接查看详情和报名方式,欢迎参加!

“第18届北京科音分子动力学与GROMACS培训班” 将于5月23-26日于北京举办。这是一次性全面、系统学习分子动力学模拟知识和最流行的分子动力学程序GROMACS的关键机会!报名正在进行中,请点击此链接查看详情,欢迎参加!

计算化学公社

 找回密码 Forget password
 注册 Register
Views: 93|回复 Reply: 2
打印 Print 上一主题 Last thread 下一主题 Next thread

[Material Studio] MS计算过程中出现restart文件怎么解决

[复制链接 Copy URL]

10

帖子

0

威望

49

eV
积分
59

Level 2 能力者

跳转到指定楼层 Go to specific reply
#
首先附上计算的perl脚本代码,其功能是使用AC盒子建模,并转为xyz文件,便于后续的计算孔径,随后采用sorption模块计算吸附等温线
x

10

帖子

0

威望

49

eV
积分
59

Level 2 能力者

2#
 楼主 Author| 发表于 Post on 2026-4-3 21:55:42 | 只看该作者 Only view this author
本帖最后由 刘喜洋 于 2026-4-3 21:59 编辑
刘喜洋 发表于 2026-4-3 21:55
由于一直无法发帖(说有敏感词啥的,现在我在帖子中补充其它的内容)

问题的出现,在我一开始运行该脚本 ...
图1图2如图所示,可以看到同样的代码运行,计算时间天差地别,很奇怪,无法解决
脚本如下


#!perl
use strict;
use Getopt::Long;
use MaterialsScript qw(:all);
our %Documents;
# ================= 配置参数 =================
my $start_probe = 0.0;    # 初始探针半径 (Å)
my $end_probe = 5.0;     # 终止探针半径 (Å,可根据活性炭孔径调整)
my $step_probe = 0.5;     # 探针半径递增步长 (Å)
my $grid_interval = 0.4;  # 网格间隔 (Å,保持原脚本推荐值)

# ================= 活性炭建模 =================
my $acConstruction = Modules->AmorphousCell->Construction;

# 添加环状结构组分
my $component1 = $Documents{"7ring.xsd"};
$acConstruction->AddComponent($component1);
$acConstruction->Loading($component1) = 3;

my $component2 = $Documents{"19ring.xsd"};
$acConstruction->AddComponent($component2);
$acConstruction->Loading($component2) = 3;

my $component3 = $Documents{"37ring.xsd"};
$acConstruction->AddComponent($component3);
$acConstruction->Loading($component3) = 3;




foreach my $i (1..2) {
my $min = 1;   # 或者你想要的固定值
my $max = 10; # 或者你想要的固定值
my $val1 = int($min + rand() * ($max - $min + 1));
my $val2 = int($min + rand() * ($max - $min + 1));
my $val3 = int($min + rand() * ($max - $min + 1));
# ================= 活性炭建模 =================
my $acConstruction = Modules->AmorphousCell->Construction;


$acConstruction->Loading($component1) = $val1;

$acConstruction->Loading($component2) = $val2;

$acConstruction->Loading($component3) = $val3;

# 运行无定形胞建模
my $results = $acConstruction->Run(Settings(
    Quality => 'Fine',
    TargetDensity => 0.55,
    CurrentForcefield => 'COMPASSIII'));
my $doc = $results->Trajectory;

# 几何优化
my $go_results = Modules->Forcite->GeometryOptimization->Run($doc, Settings(
        ChargeAssignment => 'Use current'));
$doc = $go_results->Trajectory;  # 更新为优化后的结构

$doc->SaveAs("ActivatedCarbon_Optimized-$i-$val1-$val2-$val3.xtd");

# ================= 1.84A计算  计算出比表面积等参数 =================
my $fieldConnolly = Tools->AtomVolumesSurfaces->Connolly->Calculate($doc, Settings(
        GridInterval => $grid_interval,
        ConnollyRadius => 1.84  # 动态设置探针半径
    ));
$fieldConnolly->Style = "None";
   
  # 提取总体积与占据体积,计算自由体积
my $field_volume = $fieldConnolly->FieldVolume;
my $isosurface = $fieldConnolly->CreateIsosurface([
    IsoValue => 0.0,
    HasFlippedNormals => "No"
]);
my $enclosed_volume = $isosurface->EnclosedVolume;
my $Surface_Area=$isosurface->SurfaceArea;

my $free_volume = $field_volume - $enclosed_volume;

printf "自由体积 %.2f ų | 整体体积 %.2f Ų | 表面积 %.2f ų |loading1%.2f|loading2%.2f|loading3%.2f\n",
        $free_volume, $field_volume,$Surface_Area,$val1,$val2,$val3;

#转换为xyz文件

my $trajectory = $doc->Trajectory;

if ($trajectory->NumFrames >= 1) {

    print "Found ".$trajectory->NumFrames." frames in the trajectory\n";
    # Open new xmol trajectory file
    my $xmolFile = Documents->New("trj_$i.txt");
   
    #get atoms in the structure
    my $atoms = $doc->DisplayRange->Atoms;
    my $Natoms = scalar(@$atoms);  # 修复:定义原子总数

    # loops over the frames
    my $framebegin = 1;
    my $frameend = $trajectory->NumFrames;
    # 如需只转前10帧,去掉下面一行的 #
    # my $frameend = 10;

    for (my $frame = $framebegin; $frame <= $frameend; ++$frame) {
        $trajectory->CurrentFrame = $frame;
        # write header xyz
        $xmolFile->Append(sprintf "%i \n", $Natoms);
        $xmolFile->Append(sprintf "%s %i \n", "Frame", $frame);
        
        foreach my $atom (@$atoms) {
            # write atom symbol and x-y-z- coordinates
            $xmolFile->Append(sprintf "%s %f  %f  %f \n",
                $atom->ElementSymbol, $atom->X, $atom->Y, $atom->Z);
        }   
    }
    #close trajectory file
    $xmolFile->Close;
    print "转换完成!已生成 trj.txt\n";
}
else {
    print "The " . $doc->Name . " is not a multiframe trajectory file \n";
}


#吸附等温线计算模块
my $sorptionAdsorptionIsotherm = Modules->Sorption->AdsorptionIsotherm;
my $component_H2 = $Documents{"H2-2020.xsd"};
$sorptionAdsorptionIsotherm->AddComponent($component_H2);
$sorptionAdsorptionIsotherm->FugacityStart($component_H2) = 10;
$sorptionAdsorptionIsotherm->FugacityEnd($component_H2) = 1000;
my $results = $sorptionAdsorptionIsotherm->Run($doc, Settings(
        ChargeAssignment => 'Use current',
        Temperature => 50,
        UseFugacityLogScale => 'Yes'));

}












微信图片_20260403213931.png (91.82 KB, 下载次数 Times of downloads: 0)

微信图片_20260403213931.png

图2.png (104.08 KB, 下载次数 Times of downloads: 0)

图2.png

10

帖子

0

威望

49

eV
积分
59

Level 2 能力者

楼主
 楼主 Author| 发表于 Post on 2026-4-3 21:55:12 | 只看该作者 Only view this author
由于一直无法发帖(说有敏感词啥的,现在我在帖子中补充其它的内容)

问题的出现,在我一开始运行该脚本代码的时候,超算16核1小时左右即可计算完毕,随后我在不同文件夹下提交计算两到三次之后,突然发现计算速度特别慢,于是我就测试了一下,发现同样的脚本代码,第一次运行只需要1小时左右,而后续的提交计算需要一天都没计算完,核心数相同,观察发现(如图1),计算时间很长的作业中,出现了Restart等文件,此前同样的代码运行没有出现这些文件,不知道为什么会这样,图2中计算只需要一小时

下述的代码有一点小问题,循环计算第二次时会报错,但是不影响第一次的运行

想咨询一下各位大佬,有遇到过这种问题吗


手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-4-14 12:40 , Processed in 0.491430 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list