Monte Carlo 与 MCNP、EGS、Geant4的故事


MCNP是Fermi,Von Neumann,Ulam,Metropolis 与Richtmyer 4位蒙特卡罗方法的创始人所在的洛斯阿拉莫斯国家实验室的后继者们编写的蒙特卡罗方法代码。大多数工作都在1957年Cashwell和Everett的蒙特卡罗方法的第一本书中提及,1963年第一个中子输运代码MCS(Monte Carlo Simulation)完成,1967年被修改为MCN,1973年两个光子输运代码MCC和MCP与MCS与MCN结合形成的MCNG代码,1977年形成了第一代MCNP(Monte Carlo Neutron Phonton)。1979年与1981年最初的两个MCNP用户手册由W.L.Thompson发布,大量吸收了采纳了前辈的内容,2013年MCNP经过持续开发,发布了MCNP6.

EGS最先被开发应用于高能物理的屏蔽与探测器的模拟,之后发展并应用于医学和物理学,但是这些历史都不曾表现在文字记录上。1978年SLAC发布了EGS3,并且Rogers将EGS3应用在一些重要的发表论文上。其中一篇重要的发表论文提供了对于EGS3算法的一个补丁,其模拟算法最终应用于ETRAN。在电子输运步长大小的人工设置没有被解释清楚的前提下,通过缩短模拟的相互作用步长,使其基于电子的算法更加可靠。缩短步长是一种可以理解的解决问题的方法,就如Larsen解释的情形一样,但与此同时计算时间也相应增长。这些“步长大小的人工设置”,引起了Nelson的注意,Nelson曾被Rogers邀请去编写下一代的EGS-EGS4,与之共事的还有日本筑波市KEK的研究员Hirayama。
随着1985年12月EGS4的发布,Rogers的两个机构(辐射标准实验室与其兄弟实验室Berger的NIST)成为了医学物理与剂量学蒙特卡罗算法的发布中心。他们接管了负责支持与发布EGS4代码的工作,并且开始在全世界提供训练课程。Hirayama主要负责亚洲地区的工作。
然而EGS4的步长设置仍然没有被解释清楚。Nahum对电离室的响应建很感兴趣。因此在1984年的春天拜访了Rogers的实验室,想要合作完成这个建模。Nahum在电子蒙特卡罗领域很有建树,其模拟过程最终被Lewis的瞬态模拟所实现。并成为了电子输运算法的一个遥远祖先。当用EGS4预测电离室的响应时,电离室的响应可能会降低60%。引用Nahum的话说:怎么可能利用蒙特卡罗方法构造一个简便精确度达到5%,并且达到60%的误差?缩短步长可以解决这个问题,因此一个有关步长异常的分辨率的研究开始了,并最终形成了PRESTA算法。紧跟着PRESTA算法发布的是一系列小而重要但是存在不足的代码。多年之后,PRESTA代码取得了一系列的进步,并最终成为了EGS代码的一个修订版,EGSnrc和EGS5。PRESTA的开发可以看成是ETRAN代码的一个提升。

Geant4的历史
第一个版本的GEANT可以追溯到1974年,而第一个版本的GEANT3源自于1982年。GEANT的3.21版本是通过FORTRAN语言编写,并最终成为CERNLIB的一部分。自2000年后,最后的FORTRAN编写的发布版本基本上是停滞了的。只有偶尔的BUG修复。但在当时GEATNT3仍然应用于一些实验。大多数GEANT3代码在GNU许可下是可行的,除了一些强子相互作用代码需要与FLUKA相互协作。
与此同时,一个相关的但相互独立的作品Geant4出现了,完全用面向对象的语言C++编写。Geant4基于RD44代码历经1994--1998年发展而来,现在Geant4正通过国际协作来进行维护与发展。这个想法首次出现于1993年两个CERN和KEK独立进行的研究项目。当时塔伦师徒正在构想如何应用现代的计算机技术来改善当时的FORTRAN编写的GEANT3程序。1994年秋天,RD44构造了一个全新的基于面向对象编程代码的计划并提交给了CERN的探测器研究发展会员会,这标志着GEANT3向Geant4合并的开始。
这一活动马上变成了一个大型国际合作项目,来自不同研究所和大学的物理学程序员与软件工程师参与了一系列欧洲、日本、加拿大和美国的高能物理实验,目的是编写一个具有一定功能并且灵活的满足下一代亚原子物理实验需要的模拟软件。从一开始参与人员的范围就在不断扩大,核工程、加速器物理学、空间科学以及医用物理学都会从此工具中会的收益,因此来自这些领域的大量人才开始加入这一项目。

RD44项目是一个基于面向对象C++编写的CERN的软件包的开创性重举。随着1998年12月交付第一版发布,研发阶段正式完成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灿烂李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值