Geant4 | 三种运行模式对比(二)

1,292 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情

🤞 个人主页:@青Cheng序员石头

Geant4模拟有三种运行模式,续上篇文章提到的macro文件批处理模式,这篇文章继续讲剩下的两种运行模式。

会话交互模式

会话交互模式,你可以决定到底使用那种交互UI Interface,包括但不限于:

  • G4UIterminal
  • G4UItcsh
  • G4UIGAG
  • G4UIXm
  • G4UIQt 一般常用的是G4UIterminal,就是单纯的命令行模式,还有用到的是G4UIQt,有一个操作性强的可视化页面,使用前提是要安装QT的环境。不过管你使用哪种,任意Interface 都必须派生自抽象类G4UIsession。

那么UI Interface如何使用呢,那就是构造它以后,调用SessionStart(),以维持会话,具体代码如下。


G4UIsession* session=0;
if (argc==1)
{
    session = new G4UIterminal;
    session->SessionStart();
    delete session;
}

当程序运行到session->SessionStart()这行时,然后程序同步阻塞在此处,另起线程调用对应的UI显示,但退出UI后,就会执行delete session删除指针资源,完成资源的释放。

那么你心里也许会有疑问了,我怎么知道使用哪个UI Interface呢?

Geant4的作者们已经帮你想到这一点了,感谢他们!最佳实践是使用G4UIExecutive,其责为系统环境选择最合适的UI。举个例子:

G4UIExecutive* session =
new G4UIExecutive(argc, argv);
if (argc==1)
{
    session->SessionStart();
    delete session;
}

如果运行命令像这样./myExecutable,那么argc==1为真,然后进入if逻辑,开始交互运行模式。


少年,没看够?点击石头的详情介绍,随便点点看看,说不定有惊喜呢?欢迎支持点赞/关注/评论,有你们的支持是我更文最大的动力,多谢啦!