theme: orange
持续创作,加速成长!这是我参与「掘金日新计划 · 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
C++ 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
。
少年,没看够?点击石头的详情介绍,随便点点看看,说不定有惊喜呢?欢迎支持点赞/关注/评论,有你们的支持是我更文最大的动力,多谢啦!