分子模拟 ——从算法到应用 UNDERSTANDING MOLECULAR SIMULATION - FROM ALGORITHMS TO APPLICATIONS [荷] Frenkel & Smit 著 化工业出版社
译者的话 理论分析、实验测定及模拟计算已成为现代科学研究的三种主 要方法。20世纪90年代以来,由于计算机科学和技术的飞速发展, 模拟计算的地位日渐突显。在化工新产品及新材料的研究和开发 中,采用分子模拟技术,从分子的做观性质推算及预测产品及材料的 介观、宏观性质,已成为新兴学术方向。仅据1999年的统计,美国各 大学的化工系,已有50多个研究组在从事分子模拟方面的研究,显 示出分子模拟正处在蓬勃发展的阶段。近几年内,国内有越来越多 的研究组积极开展分子模拟研究,也得了可喜的成绩。 本组从20世纪80年代中期开始分子模拟方面的研究。多年来 深惑在分子模拟领城内,需要一本兼顾旗拟理论和应用的参考书。 荷兰Frenkel及Smit合著的此书,是这方面的代表作。他们都是国 际上物理界和化工界享有盛名的科学家,具有扎实的分子模拟理论 功底和解决实际问题的经验,因而本书在世界上为引用最广的分子 模拟专著之一。为此我们将此书译出,介绍给国内从事此领域研究 的工作者、研究生及教师,以期推动国内分子模拟的研究。 本书译者有汪文川(序言,1、2、3章及附录F),周健(4、6、10、 11、14章及附录A、C、E),曹达鹅(5、12、13章及脓录F、D、G),金文 正(第7、8、9章及附录B、I、H)。汪文川和周键对全书进行了译校。 最后汪文川和曹达鹏对全书做了统稿处理。由于本书涉及了数学、 物理、化学及计算机科学等基础学科,有一定的理论深度,相应给翻 译者也带来了一些困难。因此译文中难免有不少缺感,数请读者能 不吝赐教,指出不足之处,以利于我们今后改进。 本书在翻译过程中,得到作者之一Sit教授的大力支持和化工 出版社的热情帮助。本组研究生、博士后多年的工作积票,对本书中 的有关章节的御译,有所神益,借此机会对他们致以衷心的感谢。 汪文川 2002年6月于北京化工大学
前 言 本书并非计算机模拟操作手册。本书旨在介绍分子模拟实施方 法中涉及的物理知识。当然,也要给出实施方法,否则本书内容会太 抽象,以至于无多大实际用途。本书的视野是有限的。我们不打算 讨论计算机模拟的各个方面,只偏向于给出一些计算工具的统一表 述,而这些工具目前正用于研究相平衡,尤其是分子和大分子物质的 相行为。此外,我们有意将讨论局限于经典多体体系,即使这些提及 的方法也可适用于量子体系。总之,在经典多体体系的描述中,只讨 论平衡现象。 本书是针对活跃于计算机模拟领域中或有志于此的读者。计算 机模拟工作者不断面临:与方法选择有关的各种问题,因为,总是有缤 纷集多的计算工具可供选用。我们应该作一合理的选择来了解壅含 在其中的至关重要的物理知识。本书的目的正是向读者提供这些 背景。 必须在-一开始就坦盲,我们认为某些方法确实比另一些方法更有 用,因此在叙述中有所侧重。实际上我们相信读者不会因为作者没有 平等对待各种方法这一事实而抱怨。然而凡是当我们表达个人的偏 好时,总是用基于物理、应用数学甚至仅仅经验的一些观点来支持它。 事实上我们将叙述与实例相结合以达到两重目的。首先,表明选定的 方法是如何起作用的,其次,给作者一种对于可用数值模拟来研究的 现象的感受。 读者也将会看出有两类模拟方法被详加讨论:一级相转变及各 种偏倚Monte Carlo方法。我们花费这么多篇幅于这些主题并不是 认为它们比其他较少涉及的题目更重要,而是感到对上述两主题的 讨论目前较为支离破碎。 本导言是为非专业人士面写的,此举出于有心。随着计算机实
验变成通用的工具,计算机模拟者群体正迅速扩张。许多新的模拟 工作者将用计算机模拟作为一种工具,而并不对各种方法有太大兴 趣。然而我们希望说服那些认为计算机模拟程序是一“黑箱”的读 者,“黑箱”内部是有趣的,而且尤为重要的是了解模拟程序的运作将 大大改进将其仅作为“黑箱”的效率。 在理论构架之外,本书还讨论一些在模拟界已成为常用知识的 实用技巧和规则。要追湖这些规则的起源往往是困难的。因此有些 技巧在某种情况下很有用,而在其他情况下会导致程序效率低下。 在本书中将按合理的文字叙述,讨论各种技巧内的理论内涵,而将主 要文字用来描述各种方法的理论构架。为了表明这些想法,本书给 出3类内容:算法,实例研究及例题。 (1)算法 算法表述构成了本书的主要部分。这种表述并不给出多少该算 法如何有效地执行的信息。当然该算法的执行细节可以从全部程序 清单中获取。然而,即使是在一个精心组织的程序中,程序代码也会 含有工作程序所必须的多个程序行,他们会掩盖这些程序行所欲表 达的算法的真意。作为一种折中方案,我们对每一种算法提供一些 虚拟代码。这意味着用于真实程序时,必须赋予虚拟代码的某些基 本特征。例如虚拟代码只考虑x方向,如果此代码将用于一种模 拟,类似的程序行必须加上y及?方向。此外,我们也省略了大多数 变量的初始化。 (2)实例研究 在实例研究中,在本书正文中所讨论的各种算法将综合在一完 整的程序中。这些程序用来说明各种模拟的概貌。有些实例研究着 重于模拟中会发生的问题或有时会犯的错误。我们用于实例研究的 Fortran码的全部列表,读者可通过Internet●获取。 (3)例题 在例题中将演示正文中所讨论的方法如何用于一个实例中。我 ● http://www.hpcn.tudelft.nl/frenkel.smit.html
们尽可能涉及目前所关心的研究课题。这样读者能获得用模拟研究 这一类体系的一些感悟。此外,我们还试图在这些例题中说明模拟 是如何有助于求解各种“真实的”实验或理论问题的。 在本书中所讨论的许多主题都已在公开文献中出现。然而例题 及实例研究是为本书而备的。在编写这一部分材料时,我们只得包 容一些据本人所知文献中未加报道过的一些计算技巧。 在计算机科学中,一般推断任何一个超过200行的源程序代码 至少含有一个错误。全体实例研究的源程序码含有25000行编码。 假如我们的编程能力不低于平均水平,则意味着至少在源程序代码 中有125处错误。 基于上一段的观点,我们必须补充以下的不能承诺的事项, 我们不保证,表露或隐喻在本书中所含的各个程序没有错误,或 能满足对任何特殊应用的需要。不能依靠这些程序去解决这类问 题,其不正确答案可能会导致人身伤害、破坏或财产损失。本书作者 和出版社对您使用各个程序所引起的直接的或随之而来的损害不承 担任何责任和义务。 虽然本书及所含的程序受版权保护,但只允许作出恰当的引用, 我们授权本书读者采取本书的各个程序的各部分为已所用。 最后,衷心感谢我们许多同事的帮助和合作。事实上有几十位 同事在本书所叙述的主题中共同切磋。此处无法列出他们的全部姓 名,我们将在正文的恰当之处提及。诚然,我们感激他们的贡献。此 外,Daan Frenkel受益于在阿姆斯特丹原子及分子物理FOM研究所 及Utrecht大学van't Hoff实验室的同事的无数次激动人心的讨论。 而Berend Smit受惠于与Sheli公司的几位同事的切磋。此外,数位 同事阅读了全文或部分内容以帮助完稿。他们是Giovanni Ciccotti, Mike Deem,Simon de Leeuw,Toine Schlijper,Stefano Ruffo,Maria- Jose Ruiz及Guy Verbist。.我们还感谢Klaas Esselink及Sami Karaborni的封面图。总之,在此感谢诸位的努力。不过我们强调文 中的各种错误,由我们自负,责无旁贷