当前位置: 首页 > news >正文

Day 05 Geant4多线程 Multithreading --------以B1为例

Day 05 Geant4多线程 Multithreading --------以B1为例

**fEdep:**用于在不同层级上统计能量进行加和,其中,EventAction中的fEdep是在每个event结束后,每一个step都会把能量沉积加和给runAction中的fEdep;RunAction中把每一个event结束后,把每一个event的fEdep给runAction的fEdep。

如何理解多线程 Multithreading(G4中的多线程是什么样子的):

在exampleB1.cc中将代码变成顺序执行,就是注释掉if …else…endif。

假如有10个gamma粒子要发射,

顺序执行下
先判断每一个step是不是有效step;然后根据每一个step获得的getStepedEnergy得到有效step的能量沉积;把能量沉积加和给当前eventAction的fEdep;在当前event结束后将eventAction的fEdep加和给runAction的fEdep,这就得到了当前粒子的能量沉积。再继续发射第二个(下一个)粒子。

多线程执行下:
G4可能将10个gamma分成多组,一组几个。对于其中的一个组(线程)来说,就会变成上面的顺序执行,且对于每个线程来讲,有该线程自己的RunAction.fEdep。对于整个项目而言,要对各自线程的runAction的fEdep进行加和

# RunAction.cc文件中
private:G4Accumulable<G4double> fEdep;G4Accumulable<G4double> fEdep2;G4Accumulable<G4double> fEdep3;...

其中fEdep:

# 首先最开始进行初始化,RunAction.cc文件中
fEdep(0.),
fEdep2(0.),
...
# 然后,定义的两个量注册到AccumulableManager上进行自行管理并最终进行merge,初始化放在beginofAction
G4AccumulableManager* accumulableManager = G4AccumulableManager::Instance();
accumulableManager->RegisterAccumulable(fEdep);
accumulableManager->RegisterAccumulable(fEdep2);
...

顺序模式得到的fEdep就是我们需要的;但是使用的是类模板的话,就要使用GetValue()来得到真正的fEdep

# 在此之前要先merge,在endofRunAction中
G4AccumulableManager* accumulableManager = G4AccumulableManager::Instance();
accumulableManager->Merge();G4double edep = fEdep.GetValue();
G4double edep2 = fEdep2.GetValue();

对于G4类编程类应用,需要看多,读多,写多

http://www.dtcms.com/a/389988.html

相关文章:

  • 【word解析】从 Word 提取数学公式并渲染到 Web 页面的完整指南
  • FreeRTOS 队列机制详解:阻塞、唤醒与任务同步
  • Unity学习之UI优化总结
  • 基于微信小程序蓝牙信标 (Beacon)的室内导航实例
  • 用Comate Zulu开发一款微信小程序
  • 触觉智能Purple Pi OH2开发板配置参数
  • 鸿蒙Next应用文件管理全攻略:从基础操作到高级实践
  • 云手机对《黑神话:悟空》的作用都有哪些?
  • Leetcode 994. 腐烂的橘子 多源 BFS
  • 微硕WSP4982双N沟MOSFET,赋能汽车智能座椅通风系统
  • BMP280 气压计驱动
  • 速通ACM省铜第八天 赋源码(1709)
  • InnoDB索引结构与排序构建机制详解
  • mmpose可视化出错,图像与关键点对不上
  • Flutter 基本开发环境配置环境搭建
  • 【数控系统】第七章 NURBS插补
  • 某养老数字化协同办公平台网络方案解析
  • docker 容器终止时都做了什么?怎么优雅退出?
  • 苹果10月还有发布会?多款新品预曝光
  • wincc
  • 获取公网IP的方法
  • 苦瓜叶片病害检测数据集:2w+图像,9类,yolo标注
  • LlamaIndex入门
  • 基于RK3576+FPGA的无人机飞控系统设计
  • Redisson原理
  • PyQt6之日期与时间控件应用案例
  • css | 总结一下flex布局
  • c#里面的catch (Exception e)
  • 浅谈 CDN
  • 125、【OS】【Nuttx】【周边】效果呈现方案解析:分号与换行