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

1,233 阅读2分钟

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

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

Geant4模拟有三种运行模式,这篇文章讲讲三种模式的区别和试用的场景。

运行模式总览

Geant4 有三种运行模式,包括:

  • 纯硬编码批处理模式(pure hard-coded batch mode)
  • macro批处理模式 (Batch mode,Macro commands)
  • 命令行交互模式(Interactive mode,commands lines)

第一种纯硬编码批处理模式,就是将任何流程通过C++代码写死在程序李,如果你想改变任何流程,那必须要重新编译你的代码。

第二种macro文件批处理模式也及称之为batch Session,通过在一个ASCII编码格式的Macro文件编写流程,理解为配置文件,不受编译的影响。

第三种是交互模式,也就是在程序运行时,在会话框内输入命令控制Geant4内核的行为,这种模式方便运行调试。

总的来说,以上三种运行模式都需要在Main文件中编写响应的代码,在实际工程实践中,为了适应多种运行模式,一般都采用混合模式,即按照条件分支逻辑兼顾上面所有的模式。

macro文件批处理模式

将粒子的类型,能量,发射角度,发射的个数,控制的级别等信息写在一个.mac文件中,比如下面的mymacro.mac文件。

/control/verbose 3
/tracking/verbose 2

/gun/particle opticalphoton
/gun/energy 14.2 eV

/gun/direction 12 -8 20
/N06/gun/optPhotonPolar
/run/beamOn 1

然后在运行时指定这个文件参数即可使用,像下面这样

./myExecutable mymacro.mac

show me the code

G4UImanager* UI = G4UImanager::GetUIpointer();
G4String command = “/control/execute”;
G4String fileName = argv[1];
UI->ApplyCommand(command+fileName);

初学的小伙伴,要问了argv[1]是什么?很简单,对于C语言,数据的下标序号是0,那么argv[1]就是取第二个参数,对于./myExecutable mymacro.mac执行命令,第一个参数是./myExecutable,第二个参数才是mymacro.mac

注意: 如果你要在会话交互模式下运行mac文件,可以输入命令/control/execute mymacro.mac


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