theme: orange
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情
🤞 个人主页:@青Cheng序员石头
Geant4模拟有三种运行模式,续上篇文章提到的macro文件批处理模式,这篇文章继续讲剩下的两种运行模式。
会话交互模式
会话交互模式,你可以决定到底使用那种交互UI Interface,包括但不限于: - G4UIterminal - G4UItcsh - G4UIGAG - G4UIXm - G4UIQt 一般常用的是G4UIterminal,就是单纯的命令行模式,还有用到的是G4UIQt,有一个操作性强的可视化页面,使用前提是要安装QT的环境。不过管你使用哪种,任意Interface 都必须派生自抽象类G4UIsession。
那么UI Interface如何使用呢,那就是构造它以后,调用SessionStart()
,以维持会话,具体代码如下。
```C++
G4UIsession* session=0; if (argc==1) { session = new G4UIterminal; session->SessionStart(); delete session; } `` 当程序运行到
session->SessionStart()这行时,然后程序同步阻塞在此处,另起线程调用对应的UI显示,但退出UI后,就会执行
delete session`删除指针资源,完成资源的释放。
那么你心里也许会有疑问了,我怎么知道使用哪个UI Interface呢?
Geant4的作者们已经帮你想到这一点了,感谢他们!最佳实践是使用G4UIExecutive
,其责为系统环境选择最合适的UI。举个例子: C++ G4UIExecutive* session = new G4UIExecutive(argc, argv); if (argc==1) { session->SessionStart(); delete session; }
如果运行命令像这样./myExecutable
,那么argc==1
为真,然后进入if
逻辑,开始交互运行模式。
少年,没看够?点击石头的详情介绍,随便点点看看,说不定有惊喜呢?欢迎支持点赞/关注/评论,有你们的支持是我更文最大的动力,多谢啦!