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月交付第一版发布,研发阶段正式完成。
Monte Carlo 与 MCNP、EGS、Geant4的故事相关推荐
- 蒙特卡罗(Monte Carlo)方法
蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法. 一 起源 这一方法源于美国在第二次世界大战进研制原子弹的&qu ...
- Monte carlo
转载 http://blog.sciencenet.cn/blog-324394-292355.html 蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数 ...
- Monte Carlo tree search 学习
https://en.wikipedia.org/wiki/Monte_Carlo_tree_search 蒙特卡洛树搜索(MCTS)基础 http://mcts.ai/about/index.htm ...
- 蒙特卡罗(Monte Carlo)
一 起源 蒙特卡罗(Monte Carlo)方法,或称计算机随机模拟方法,是一种基于"随机数"的计算方法.这一方法源于美国在第一次世界大战进研制原子弹的"曼哈顿计划&qu ...
- ADPRL - 近似动态规划和强化学习 - Note 10 - 蒙特卡洛法和时序差分学习及其实例 (Monte Carlo and Temporal Difference)
Note 10 蒙特卡洛法和时序差分学习 Monte Carlo and Temporal Difference 蒙特卡洛法和时序差分学习 Note 10 蒙特卡洛法和时序差分学习 Monte Car ...
- 强化学习(四) - 蒙特卡洛方法(Monte Carlo Methods)及实例
强化学习(四) - 蒙特卡洛方法(Monte Carlo Methods)及实例 4. 蒙特卡洛方法 4.1 蒙特卡洛预测 例4.1:Blackjack(21点) 4.2 动作价值的蒙特卡洛估计 4. ...
- [matlab]Monte Carlo模拟学习笔记
理论基础:大数定理,当频数足够多时,频率可以逼近概率,从而依靠概率与$\pi$的关系,求出$\pi$ 所以,rand在Monte Carlo中是必不可少的,必须保证测试数据的随机性. 用蒙特卡洛方法进 ...
- Monte Carlo仿真方法的基本思想及其特点
Monte Carlo仿真方法又称统计试验法,它是一种采用统计抽样理论近似地求解数学.物理及工程问题的方法.它解决问题的基本思想是,首先建立与描述该问题有相似性的概率模型,然后对模型进行随机模拟或统计 ...
- 论文辅助笔记(代码实现):Bayesian Probabilistic Matrix Factorizationusing Markov Chain Monte Carlo
1 主要思路回顾 具体可见:论文笔记 Bayesian Probabilistic Matrix Factorizationusing Markov Chain Monte Carlo (ICML 2 ...
最新文章
- Unreal Engine+Houdini创造程序性游戏场景视频教程
- Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存
- UA MATH636 信息论5 信道编码定理的证明
- 大数据分析中国冬季重度雾霾的成因(二)
- python 笔记 haversine (两个经纬度坐标之间的距离)
- 论文笔记:Integrating Classification and Association Rule Mining (即,CBA算法介绍)
- 解决mysql java.sql.SQLException: The server time zone value‘XXXXXX' is unrecognized or represents...
- charles都踩过哪些坑_开水果店的你,踩过了哪些坑?
- flash air 解析html,AIR 程序内部显示网页,并可以点击浏览的方法(HTMLLoader、StageWebView)...
- max导出fbx设置_真3D虚拟偶像制作教程——虚拟偶像人物模型导出前的处理
- 聊聊LightProbe原理实现以及对LightProbe数据的修改
- C# Task 暂停与取消
- 《UNIX环境高级编程》目录
- 如何使用Android系统属性(SystemProperties)
- 解决listview addheader EditText焦点问题
- 微服务项目部署在docker容器运行
- 【蓝桥杯真题】蓝桥杯真题之旋转
- 悲剧的山寨采用的新芯片资料汇总(更新Rk3066)
- 360随身WiFi取消登录与欢迎界面
- VMware虚拟机 网桥模式详细配置(及计算机网络基本知识 IP/子网掩码/网关/DNS)