<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[思想家公社的门口]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[有[原创]字样的文章若转载请注明原作者Sobereva，有updated字样的说明文章之后又进行了修改。Sob的硬件资料库http://sobereva.2024mb.com/datasheet.rar]]></description>
<link>http://hi.baidu.com/sobereva</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[[原创]计算不同z位置水能形成氢键数的VMD Tcl脚本]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/852bbefc46595ef7fc037fbf.html]]></link>
        <description><![CDATA[
		
		<p>有人请我写一个计算垂直于溶液界面的即不同z值处的水能形成氢键数的脚本，下面是我的VMD Tcl脚本，或许有人也用得着。</p>
<p>氢键判据用的是常用的35度3.5埃的几何判据，当然也可以直接在脚本里改。计算方法是，只要有水分子有一个原子在某一层里，则这个水分子就认为属于这一层的水。对于每一帧，计算属于每一层的水selin与其它物质selbig之间的氢键数，氢键包括了这一层中的水作为氢键受体和供体两种情况，其数目分别为代码中的变量a和b。并且加上这一层水内部之间的氢键数（变量c）的2倍。a+b+2c除以这一层的水数，作为这一帧这一层的每个水的平均氢键数。脚本中循环轨迹中的每一帧，最终得到这一层平均氢键数。nonum变量记录有多少帧在所设定的范围里没有水，这些帧不计算。#后面那行用于调试目的，要考察每帧结果就去掉开头的#。</p>
<p>首先运行下面的脚本，来加载实现这个功能的子程序 <br>
proc numhbavg {sel fps1 fps2} { <br>
set selin [atomselect top $sel] <br>
set selbig [atomselect top &quot;same resid as exwithin 3.5 of $sel&quot;] <br>
set k 0.0 <br>
set nonum 0 <br>
for {set i $fps1} {$i&lt;=$fps2} {incr i} { <br>
$selin frame $i <br>
$selin update <br>
$selbig frame $i <br>
$selbig update <br>
if {[$selin num]!=0} {<br>
set a [llength [lindex [measure hbonds 3.5 35 $selbig $selin] 0]] <br>
set b [llength [lindex [measure hbonds 3.5 35 $selin $selbig] 0]] <br>
set c [llength [lindex [measure hbonds 3.5 35 $selin] 0]] <br>
set k [expr $k+($a+$b+2*$c)*3.0/[$selin num]]<br>
#puts &quot;fps:$i $a+$b+[expr 2*$c] num_water:[expr [$selin num]/3.0] avg:[expr $k+($a+$b+2*$c)*3.0/[$selin num]]&quot; <br>
} else {incr nonum} <br>
} <br>
if {[expr $fps2-$fps1+1]==$nonum} {return &quot;no result&quot;} <br>
return [expr $k/[expr $fps2-$fps1+1-$nonum]] <br>
}</p>
<p>然后下面的循环会调用这个子程序来输出每一层的平均氢键数，这里假设要计算z=4.0~5.6埃的数据，间隔为0.1埃，且限定20&lt;x&lt;40，20&lt;y&lt;40，每计算完一层输出一次。计算结果是帧数范围为100~150内的平均值。注意x/y/z的上下限范围不要恰顶着体系的边界，最好至少留出5埃的距离。选择范围中resname SOL代表了水。</p>
<p>for {set i 40} {$i&lt;=55} {incr i} { <br>
set k [expr $i*0.1] <br>
set now [numhbavg &quot;same resid as resname SOL and x&lt;40 and x&gt;20 and y&lt;40 and y&gt;20 and z&lt;[expr $k+0.1] and z&gt;=$k&quot; 100 150] <br>
puts [format &quot;%4.2f %4.2f %5.3f&quot; $k [expr $k+0.1] $now] <br>
}</p>
<p>我这里随便算一个主要由水构成的普通的体系，水形成的氢键数大概在3.1左右，标准放宽到4.0埃，40度，则可形成氢键数约为3.6。在冰中由于结构十分有序，可形成4个氢键，在液态情况下分子的动能必然造成氢键的破坏，所以结果是很合理的。 <br>
帧数范围越大、xy平面越大计算越慢，这个脚本计算速度比较慢，不要一下将范围设得太大。</p>
<p>输出结果如下，前两列代表统计的z值范围，第三列是水的平均氢键数</p>
<p>4.00 4.10 3.015<br>
4.10 4.20 3.161<br>
4.20 4.30 3.201<br>
4.30 4.40 3.159<br>
4.40 4.50 3.237<br>
4.50 4.60 3.130<br>
4.60 4.70 3.201<br>
4.70 4.80 3.338<br>
4.80 4.90 3.201<br>
4.90 5.00 3.041<br>
5.00 5.10 3.122<br>
5.10 5.20 3.182<br>
5.20 5.30 3.160<br>
5.30 5.40 3.309<br>
5.40 5.50 3.189<br>
5.50 5.60 3.327</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/852bbefc46595ef7fc037fbf.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-08  23:19</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/852bbefc46595ef7fc037fbf.html</guid>
</item>

<item>
        <title><![CDATA[[原创]找回Windows 7中经典风格的开始菜单]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/ec2f7f2404bd1f21d407428d.html]]></link>
        <description><![CDATA[
		
		<p>很多从windows95/98或者dos时代过来的资深老用户对于windows 7彻底去掉了经典开始菜单与我一样感到愤怒，感到工作效率严重受挫，但win7的这个设计似乎很讨好从XP时代过来的菜鸟，以至于占多数用户的这类群体对这个变化不以为然。即便这个设计对一部分用户的确更有利，但不尊重用户的选择权利是恶劣的行为。有人开发了cs menu解决这个困难，装了这个程序，开始菜单即变为经典菜单，但是要占15MB内存，还可能导致系统不稳定，而且感觉展开速度还是稍微慢了些，所以我用了用就删了。最终我找到了极好的解决办法，可以将windows 7的开始菜单基本地等价地变成经典菜单，像XP一样滑动鼠标就能直接展开所有程序列表，而不必总要点击&ldquo;所有程序&rdquo;，然后在狭小的空间内一级一级地点开目录并且滑动滚轮去找想要的程序。</p>
<p>方法是&ldquo;任务栏和开始菜单属性&rdquo;中，选&ldquo;自定义&rdquo;按钮，把&ldquo;录制的电视&rdquo;选为&ldquo;显示为菜单&rdquo;，然后在开始菜单里把&ldquo;录制的电视&rdquo;点右键随意重命名，比如重命名为otoboku。然后在regedit里进入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders，会发现一个字符串的数值数据的结尾是otoboku.library-ms，将这个字符串的数值数据改为%ProgramData%\Microsoft\Windows\Start Menu\Programs  （注：这个目录也就是相同目录下Common Programs字符串的数值数据）。然后注销用户，再次进入系统后，在开始菜单里会发现出现了&ldquo;程序&rdquo;菜单，可以像XP里一样地展开，内容也和在XP里一样。当新装了程序后，也会出现在这个菜单里。</p>
<p>原理：这个方法其实是一种移花接木的方法。既然&ldquo;录制的电视&rdquo;对应一个文件夹，这个菜单能够在鼠标移动上去后自动展开显示这个文件夹里的内容（需要在自定义里选择&ldquo;使用鼠标指针在菜单上暂停时打开子菜单&rdquo;），那么利用它，把&ldquo;程序&rdquo;目录的地址对接到上面，就应该可以实现经典开始菜单的效果。之所以先随便改个名子，比如这里改成了otoboku，是因为这个菜单之所以会出现在开始菜单里，一定在注册表里面有对应的设定。将这个菜单改了名字之后，在注册表里找这个名字，就能查出来注册表的哪一项控制着现在叫otoboku菜单对应的目录。将这一项原先的位置用&ldquo;程序&rdquo;的目录替换，那么这个菜单展开之后，就必然是&ldquo;程序&rdquo;目录下的内容，这样就和XP一样了。之所以用&ldquo;录制的电视&rdquo;这个文件夹，是因为这个文件夹我认为毫无意义，所以就消灭掉它来换取能够直接展开的宝贵的&ldquo;程序&rdquo;目录。当然也可以用同样方法，牺牲自带的别的可以自动展开的目录换取&ldquo;程序&rdquo;目录或者其它目录。</p>
<p>当然这样改过之后并不是纯粹意义的经典菜单，但我觉得反倒结合了新旧菜单的优势，新菜单能够自动将常用程序放在左列，而像老菜单一样的迅速展开的&ldquo;程序&rdquo;菜单又方便快速选择和寻找不常用的程序，使工作更有效率。当然win7中也可以手动将常用的程序拖到开始菜单的左列而不让win7自动将常用的程序摆在那里，则这个位置就如同经典菜单的&ldquo;程序&rdquo;项的上方的那部分空间了。</p>
<p> </p>
<p> </p>
<p><span><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/sobereva/pic/item/8b7c35a9938589d21f17a26f.jpg"><br>
</span></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/Others">Others</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/ec2f7f2404bd1f21d407428d.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-01  18:01</pubDate>
        <category><![CDATA[Others]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/ec2f7f2404bd1f21d407428d.html</guid>
</item>

<item>
        <title><![CDATA[[原创]谈谈原子轨道朝向引起的量化计算结果与经验观念的差异(Updated 2009-NOV-8)]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/1aae2fee3afad0f1b2fb95bf.html]]></link>
        <description><![CDATA[
		
		<p>我曾在《谈谈5d-6d型d轨道波函数与它们在高斯中的标识》一文中讨论到量化程序中的原子轨道与实际中的原子轨道的对应问题，即6d型笛卡尔GTF函数是难以对应实际实际原子轨道的，这是基函数本身形式的问题。导致对应问题的另一个因素，就是分子的取向问题，它造成了分子轨道组成与常规化学观念相冲突，比如π键。这个问题常常被忽视，我觉得有必要在这里讨论一下。当然，还有其它因素导致对应问题，比如分裂价基组等等，都给直观地讨论分子轨道的组成带来了很大困难。（有人提出AOIM方法来解决这一困难）</p>
<p>注：下文所说的p轨道，虽然在量化计算中描述它用的函数形式与真实原子轨道波函数是不同的，本质意义也不一样，但在极小基下，可以近似地将二者画上等号，下文就假设两种情况下的差别仅在于本文讨论的朝向问题。</p>
<p> </p>
<p>首先考虑这样一个问题。乙烯有π键，一般看成是两个碳原子的磁量子数相同的p轨道组成，是垂直于分子平面而平行于某坐标轴的。我们用高斯用极小基计算乙烯，得到图1中上方的情况。这没什么问题，从组合系数中可以看到的确由且仅由两个2px轨道组成。</p>
<p><span><img class="blogimg" border="0" small="0" src="http://flfqdq.blu.livefilestore.com/y1prQAwTMVeSHUgYLvkyQdAh2dB60VUB1R978Ra2MwoSKNJXK2U_RxD2KKvxD_ttWECPiAQX0iB1eRaShERHIUmfeBvRvbzfKLX/%E5%9B%BE1.PNG"></span></p>
<p><span>图1<br>
</span></p>
<p>如果我们将乙烯旋转一下，并且使用nosymm关键字不让高斯自动重新设置分子的朝向，结果会怎样？程序中的描述这个p轨道的基函数朝向也会随之改变么？如果不随之改变的话，则px轨道将不再垂直于分子平面，π键还能形成否？</p>
<p>如果原子轨道朝向会随分子旋转而改变，则px/py/pz将不再平行于对应的坐标轴，则其函数形式也必须做变换，这是件麻烦事。更重要的是，若量化程序中的原子轨道朝向不是固定的话，也就是说px/py/pz并非必须平行于对应坐标轴，那么程序如何确定轨道的朝向？对于一个复杂的分子，程序怎么知道每个原子上的原子轨道应该朝向哪个方向？难道也得通过变分方法，改变原子轨道的朝向，使之达到能量最低么？例如图2的苯，究竟pz轨道的朝向是c、d还是e情况，或者其它情况？显然，如果程序中各种轨道朝向不是固定的话，会带来上述很多麻烦。</p>
<p><span><img class="blogimg" border="0" small="0" src="http://flfqdq.blu.livefilestore.com/y1pHL8GC7wgDRRPzQ3K9azpiFALwAgTnM8ozIgwekxSY4aeVkmrdiWCqHrjG3l1pivYpVjMRi_-YALyxWBUQ0kpBVAo-WDjEXRk/%E5%9B%BE2.PNG"><br>
图2</span></p>
<p>实际上，量化程序中，原子轨道基函数的形式是不随输入文件中分子的取向而改变的，也就是说由于坐标轴是固定的，px/py/pz也一定平行于坐标轴（d、f、g轨道也如此），不管分子怎么转它们的朝向都不会变。比如图2所示，让a状态的氟代乙烯分子在YZ平面上旋转，pz轨道的朝向将不变，为b情况，而不会成为c情况。</p>
<p>我们再来看看将乙烯进行旋转后的高斯计算结果，如图1下方所示。可以看到，π键照常形成，从图上看与原先没有任何差异，分子轨道能量也与原先一致。然而，组合系数却发生了很大变化，原先只有px参与，现在px、py、pz都有很大程度的参与。这看起来很有趣，波函数组成看似不同，但结果完全一致。这并非偶然，而是必然，下面就来分析一下其原因。</p>
<p>将分子旋转，可以看成是固定分子而旋转坐标轴，已经提到，量化计算中原子轨道的朝向与坐标轴方向是&ldquo;绑定&rdquo;的，所以也就等于旋转了原子轨道的朝向，将旋转后得到的新朝向的三个p轨道叫做px'、py'、pz'，原先的朝向叫做px、py、pz。px'可以写为px、py、pz的线性组合，即px'=a*px+b*py+c*pz，py'、py'亦如此。以px、py、pz为基函数并分别以a、b、c为系数组成的分子轨道Q可写作列向量K，而将Q以px'、py'、pz'为基函数展开可写作向量P。实际情况中，分子轨道显然不只由px、py、pz轨道展开，可以进行推广，将旋转之前的轨道称为k(i),i=1,2,3...（彼此正交），就可以说是K向量是k表象下的分子轨道Q；旋转后基函数称为p(i),i=1,2,3...（彼此正交），就可以说P是p表象下的Q。可以得到一个p表象向量变换到k表象的变换矩阵U，它使得K=UP，其中U(i,j)=&lt;k(i)|p(j)&gt; （&lt;|&gt;为狄拉克符号），U可证明是酉矩阵（即U矩阵的共轭矩阵等于其逆矩阵）。</p>
<p>在旋转前，正则Hartree-Fock方法计算的迭代的每一步求解能量和轨道组合系数实际上就是求Fock算符在k表象下的矩阵F的本征值和本征向量，即求解C'FC=E（假设当前为正交基）。其中C'为C的共轭矩阵，C是F的本征向量矩阵，每一列都是F的本征向量，但实质上也是变换矩阵，C(i,j)=&lt;k(i)|e(j)&gt;，上式中F由k表象被变换到了e表象。e表象下Fock算符对应的矩阵为E，它是对角矩阵，对角元分别是每个分子轨道的能量。通过酉矩阵U可以将Fock算符由k表象下的矩阵F变换到p表象下的矩阵M，即M=U'FU，这称为对F的酉变换。由于酉变换不会改变被变换矩阵F的本征值，也就是说一定能够找变换矩阵Y，使M也变换为E，即Y'MY=E。既然变换前后都能得到E，也就是说是否旋转分子，最后得到的分子轨道能量都一样，但是由于本征向量矩阵C与Y不同，所以得到的原子轨道组合系数不一样。</p>
<p>之所以得到的分子轨道图形也一样，必然旋转前后解出来的波函数是一样的，我们需要在相同表象下比较C和Y。比如在k表象下比较，则旋转前解得的波函数就直接以C矩阵来表示。要将分子旋转后即p表象下解得的Fock算符本征向量矩阵Y转化到k表象成为矩阵V，需令变换矩阵U乘以Y，即V=UY。因为V(i,j)=(UY)(i,j)=∑[z]U(i,z)Y(z,j)=∑[z]&lt;k(z)|p(z)&gt;&lt;p(z)|e(z)&gt;=&lt;k(z)|e(z)&gt;=C(i,j) （这里∑[z]代表令z=1,2,3...并将它们加和，由于原子轨道基函数p(z)就是解得的分子轨道e(z)的完备集，故其中∑[z]|p(z)&gt;&lt;p(z)|e(z)&gt;=e(z)），即C=V，所以旋转前后解HF方程所得波函数是一样的，与波函数相关的分子的属性也自然不会改变。使用群论方法，可以将原子轨道基函数线性组合成含有对称性信息的群轨道，使很多项化为0来简化久其方程求解，也是同样的原理。</p>
<p>这样我们就明白，旋转分子不会令能量、电子密度、分子轨道改变，改变的只是量化程序输出的分子轨道向各个原子轨道的展开系数。这就是说，量化程序中分子轨道如何由原子轨道组成，在某种意义上有任意成分，因为分子呈什么朝向完全是任意的，没有对错之分。这一点需要引起注意，例如有些人会以为，分子中形成大π键能从分子轨道组合系数中看出，一定几乎只由某几个原子的某种磁量子数相同的p轨道构成，实际上这是大误，尽管往往程序根据对称性自动调整分子的朝向，使得这个规律有时有效，比如对平面型分子，程序会自动令分子平面与XY或XZ或YZ平面平行。</p>
<p> </p>
<p><span><img class="blogimg" border="0" small="0" src="http://flfqdq.blu.livefilestore.com/y1pH6NJWZPrnIZjG-kDujr5u2PB8-DNOW2TZ6m5hj8ioo8OEDv0A4gHL3lrTi7CH-f5cSnFy_mrUwjkoVG7nmjeOXevupW-GaUE/%E5%9B%BE3.PNG"><br>
图3</span></p>
<p>但即便允许程序自动调整分子朝向，这个规律也往往不符。例如我们用极小基计算丙基苯，没有加nosymm关键字，允许程序自动调整方位。但是结果如图3，自动设的朝向苯环平面就是倾斜的，常理上本应该纯粹由pz轨道组成的两个π键，从算出来的分子轨道组合系数上看是同一个原子上多个p原子轨道混合的。所以光从组成系数上分析而不看分子轨道图形，凭人的直觉很难得出很多重要结论的，仅因为从分子轨道组合系数中看不出π键而对此体系乱下结论说不存在π键是大错特错。这样的问题根源就是量化程序中根据坐标轴固定了原子轨道朝向而带来的。还有人弄轨道成分分析程序，讨论某某轨道由px、py、pz等原子轨道分别贡献百分之多少，其实若初学者没弄明白上述实质的话，是很容易得到错误结论的，分子一旋转，轨道组成一下就变了，拿分子的某一种朝向计算结果来解释不同磁量子数的原子轨道在分子中的功用，结果是没意义的。</p>
<p>但是并不是说从程序输出的分子轨道组合系数上不能获得任何有用的信息。如果忽略重叠积分，我们可以用某个分子轨道上的每个原子轨道的系数的平方来考察原子轨道的贡献。旋转分子，也就是旋转了分子轨道与原子轨道的相对朝向，虽会使它们的系数发生复杂的变化，但是每个原子上的原子轨道的总贡献不会有太大变化。因为一个原子附近分子轨道波函数绝对值比较大，说明肯定这个原子的原子轨道组合系数较大（除非相邻原子基函数十分弥散），旋转之后分子轨道波函数在这个原子附近分布仍然比较大，可看成只是分子轨道在此处形状变了而已，必然此时这个原子的原子轨道组合系数还是较大。另外也可以讨论某个原子上哪几类轨道贡献对分子轨道贡献较大，比如讨论是2p、是3p还是3d或由几类轨道共同贡献等等，旋转不会对它们的贡献的比例有太大影响，但是会对每一类当中代表不同磁量子数的轨道的贡献比例有着重大影响。所以我们可以考察分子轨道主要由哪些原子的哪种主量子数的哪种角量子数轨道贡献，但绝对不能说某分子轨道是由某原子px、py轨道贡献，不要把朝向问题带入到结果的讨论中，因为朝向是任意的。</p>
<p>我们有很多直觉性的化学键概念，这里最主要涉及的是π键概念，说它是纯粹由p轨肩并肩组成，是因为我们总是将构成π键的原子轨道的朝向认为是垂直于相应部分的分子平面，分子旋转一下，我们脑中的那个原子轨道的朝向也跟着转，以保持它总是垂直于那个部分的分子平面。这显然和原子轨道朝向&ldquo;死板&rdquo;的量子化学程序不符，人脑中的原子轨道朝向总是尽可能地调节以符合化学意义，比如说，一个甲烷连两个苯环，必然苯环之间是倾斜的，我们往往会想象苯环1上的所有碳的py轨道都垂直于苯环1平面，苯环2上的所有碳的py轨道都垂直于苯环2平面，在人脑中一个分子中甚至如此地构成了多个局部的坐标系。但是量化程序不懂这一套迎合人们化学直觉思维的表达方式，一刀切，为了方便，所有原子的py必须平行于y轴，不管是什么分子。若程序经过内置算法自动调整方向后，恰好使原子轨道的朝向相对于分子的朝向符合人的习惯时，分子轨道组成系数看起来才舒服，此时π轨道从组合系数上看才只由某几个轨道构成。虽然前面已经提了，原子轨道朝向不改变分子属性和波函数，但合适的朝向能方便人们从分子轨道组合系数中分析轨道如何由原子轨道构成，那程序何不加入这么个功能来讨好用户的直觉、迎合常规化学理念呢？这实在太麻烦，意义也不大，没多少人关注这个小问题。</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/1aae2fee3afad0f1b2fb95bf.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-31  18:01</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/1aae2fee3afad0f1b2fb95bf.html</guid>
</item>

<item>
        <title><![CDATA[[原创]谈谈5d/6d型d轨道波函数与它们在高斯中的标识]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/11cc96fee042c43b5c6008cf.html]]></link>
        <description><![CDATA[
		
		<p>在含有d轨道的体系的高斯输出文件中，有时会看到d轨道名以D 0, D+1, D-1, D+2, D-2标识，有人误以为那些轨道就是指复数型真实原子轨道，这是个严重的误区，下面将对此进行讨论。</p>
<p>在高斯等量化程序中，对于非半经验方法用的都是GTF(Gaussian type function)型实函数用来描述原子轨道，以解决多双电子中心积分的麻烦，所以与复数型轨道完全无关。</p>
<p>对于d原子轨道的描述使用d型笛卡尔型GTF型轨道作为基函数，包含六种具体形式:xx,yy,zz,xy,xz,yz（GTF通式为N*x^a*y^b*z^c*exp(-q*r^2)，N为归一化常数，q为收缩系数，r为以此基函数所在原子为中心的坐标向量。例如xy型GTF，其中的a=b=1，c=0），然而这里面除了xy、yz、xz以外的其它三种GTF型轨道并没有与真实的实形式的原子轨道有直接的对应关系，波函数角度部分的行为明显不一致。</p>
<p>这6种GTF可以进行线性组合：xy、yz、xz这三种不变，其余三个变成了x^2-y^2、3*z^2-r^2、r^2。（注：r^2=x^2+y^2+z^2）。这样xy、yz、xz、x^2-y^2、3*z^2-r^2这5个波函数与我们常见的5种实型的原子d轨道角度部分行为一致（径向部分用收缩系数来调整），所以计算中往往用这5种笛卡尔型d型GTF组合后的轨道作为描述d轨道的基函数，这也叫做原子轨道型GTF或纯d函数。而r^2函数一般不用，它是一个球形的内部含有多个节面的s型GTF轨道。</p>
<p>在高斯中，如果用了5d关键字，就会使用上述6种中的xy、yz、xz、x^2-y^2、3*z^2-r^2轨道。这时输出的d轨道符号会显示D 0, D+1, D-1, D+2, D-2，但显然这决不是指这样由GTF组合出来的波函数的角动量z轴分量的本征值，也不是指这5个轨道用来对应地近似描述5个真实的复数型原子轨道。这样的轨道符号没有意义，还会引起严重混淆，它仅仅是做个标识罢了。<br>
我们可以得到这样的对应关系：<br>
作为基函数的GTF轨道&nbsp;&nbsp;  实数型真实原子轨道符号&nbsp;&nbsp;  高斯中用了5d关键字后对d轨道的标识<br>
3*z^2-r^2 -&gt;dz^2&nbsp;&nbsp;&nbsp;&nbsp;  -&gt;d 0<br>
yz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  -&gt;dyz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  -&gt;d+1<br>
zx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  -&gt;dzx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  -&gt;d-1<br>
x^2-y^2&nbsp;&nbsp;  -&gt;dx^2-y^2 -&gt;d+2<br>
xy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  -&gt;dxy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  -&gt;d-2<br>
可以计算单个原子，在GaussView里对照着MO形状与高斯输出的轨道标识来检验（坐标轴的方向可能会变）。</p>
<p>高斯一般默认使用6d关键字（在使用gen等关键字时往往默认为5d）。此时说明使用xx、yy、zz、yz、yx、zx这6种笛卡尔型GTF轨道，在输出的d轨道符号中也对应地以xx、yy、zz、yz、yx、zx标识。在d轨道基函数不分裂情况下，描述d轨道的可独立变分的基函数就相对于5d关键字时的5个增加到了6个，可看到输出文件中basis functions的数目对应地增加了。但无论用5d还是6d，输出文件显示的原始基函数（primitive gaussians，即笛卡尔型GTF）的数目都一样，这是因为5d的5个轨道仍需要有全部6种笛卡尔型d型GTF才能组合出来。比如对5d中的3*z^2-r^2来说，将其中r^2展开，可写成2*z^2-x^2-y^2，它就相当于zz、xx、yy三种笛卡尔型GTF系数为2:-1:-1的组合，这个比值这是固定的，不会在计算过程中改变，某种意义上也可看作是CGTF（收缩型GTF）。</p>
<p>6d型轨道好处是方便编程，直接对应笛卡尔型GTF。缺点很明显，由于缺乏与真实原子轨道的对应关系，结果不像用5d的结果那样方便分析。虽然这6个笛卡尔型轨道不直接对应于真实原子轨道，但在计算过程中经过变分，其结果同样会展现出真实原子轨道的行为。这是因为以它们为基函数变分的结果，等价于对它们线性变换后的基函数变分的结果。前面已提到，6个笛卡尔型d型GTF线性变换后的6个函数其中的5个就是对应真实轨道的5d型轨道，只不过多增加了一个r^2轨道。换句话说，使用6d关键字，就是在5d型的基函数基础上多添加了一个内部含有节面的s型GTF轨道，由于这个轨道与其它s轨道有很大重叠，会造成线性相关问题，所以并不会比5d的结果有多少改进。</p>
<p>7f与10f的关系与5d与6d的关系类似。若同时有d和f轨，用5d时应当结合7f，用6d时应当结合10f。</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/11cc96fee042c43b5c6008cf.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-27  00:11</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/11cc96fee042c43b5c6008cf.html</guid>
</item>

<item>
        <title><![CDATA[[原创]GAMESS(US)编译方法(Updated 2009-10-25)]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/fff7b5fd1e8dd04fd6887db6.html]]></link>
        <description><![CDATA[
		
		<p>First release: 2009-10-7<br>
Last updated: 2009-10-25</p>
<p>操作系统：Fedora7-64bit，已装gcc 4.1.2（在系统安装过程中选择了安装软件开发这一类就会装上），系统中有csh（Fedora8及以后需手动安装csh），root用户，使用bash shell，GAMESS(US)版本为January 12, 2009 R3，CPU为Intel Core2 Q6600，2G内存。</p>
<p>本文用到的GAMESS(US)源程序、ifort和MKL安装所需的lic文件、libstdc++-5.0.7-86.x86_64.rpm都可以在这里下载<a href="http://www.brsbox.com/filebox/down/fc/63286c28b0439d8310130814007ba77e">http://www.brsbox.com/filebox/down/fc/63286c28b0439d8310130814007ba77e</a></p>
<p>对于Intel CPU，相较使用GNU的编译器和其它数学库，使用ifort编译器结合MKL数学库可以使代码执行速度大大提升，所以这里用ifort+MKL方案。GAMESS也有少部分C语言的代码，主要是用在DDI(Distributed Data Interface)部分，而非计算密集的部分，对性能影响不大，故使用gcc足矣。</p>
<p>去intel网站下载intel fortran compiler for linux（以下简称ifort），本文用的是10.1.015版，安装到默认文件夹opt/intel/fce/10.1.015。<br>
（如果安装时提示缺少libstdc++.so.5，将libstdc++-5.0.7-86.x86_64.rpm在图形界面下双击安装进系统）<br>
下载Intel Math Kernel Library（以下简称MKL），本文用的是10.0.4.023版，安装到默认文件夹/opt/intel/mkl/10.0.4.023。<br>
在/root/.bashrc中添加：<br>
source /opt/intel/fce/10.1.015/bin/ifortvars.sh<br>
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/10.0.4.023/lib/em64t<br>
输入bash，使环境变量生效。</p>
<p>在<a href="http://www.msg.chem.iastate.edu/GAMESS/download/register/">http://www.msg.chem.iastate.edu/GAMESS/download/register/</a>页面中提交你要下载的文件的申请（即用于64 bit IA64/x86_64 under Linux with Intel compilers的GAMESS源码），提交后过一两天电子邮箱内会收到确认信，里面提供了下载页面和下载所需的用户名和密码。<br>
将下载到的gamess-current.tar.gz解压至/sob/gamess，最终可执行文件也将编译到这里。<br>
建议阅读一下misc文件夹下的readme.unix，介绍了编译方法和参数意义。</p>
<p>修改gamess目录下的compall、comp、lked、runall文件的开头部分，TARGET=后面都改为linux-ia64（runall没有TARGET字段，此处不用改），chdir后面都改为/sob/gamess。rungms里面的SCR=后面改为/sob/gamess/scr，setenv ERICFMT和setenv MCPPATH后面的~mike都改为/sob，if ($os == Linux)一行的GMSPATH=后面改为/sob/gamess，~$USER全都替换为/sob/gamess。（注意gamess中的linux-ia64不仅仅指Itanium的IA64架构，也包括EM64T架构。此时默认，也只能使用ifort编译器和MKL数学库。）</p>
<p>把/sob/gamess-src/tools/actvte.code复制为actvte.f，并把actvte.f中所有*UNX用四个空格替换。然后编译此文件ifort -o actvte.x -Vaxlib actvte.f。由于GAMESS对于不同架构的计算机都使用同一套源代码，在下面comp脚本编译源文件过程中，这个程序用来自动将源代码（.SRC文件）中的一些内容替换以迎合当前环境，成为.FOR文件，称为&ldquo;激活&rdquo;过程，FOR文件被编译为.o后会被自动删掉。</p>
<p>在/sob/gamess目录下运行./compall，它会自动调用comp脚本来编译各个源文件成为.o并放到object目录中。编译约半个小时，最终会得到230多个.o文件。</p>
<p>现在编译GAMESS的分布式数据接口(DDI)消息传递库，无论是否打算并行计算都必须编译，否则下面lked步骤通不过。假设现在主机名是f71（用hostname命令可以看到当前主机名），就在/etc/hosts里面填上一行当前主机的IP地址和主机名，例如192.168.153.3 f71，重启。进入/sob/gamess/ddi目录，修改compddi文件开头的set TARGET =后面为linux-ia64，把set MAXCPUS和set MAXNODES后面设成你的实际情况，前者代表每个节点中最多包含几个核心（每个节点内可以以SMP方式并行的核心数目），后者代表最多有几个节点，它们设的都可以比实际情况多。本文都设成2。在/sob/gamess/ddi/src/std_system.c里面的struct hostent *hp;后面加入一行name=&quot;f71&quot;;（之所以要加入这么一行是因为GAMESS的bug，会将主机名强行认作为localhost而不是实际主机名，导致运行时提示TCP error之类错误）。最后运行./compddi &gt;&amp; compddi.log，很快就编译完成了。把得到的ddikick.x移动到上一级目录即/sob/gamess下。</p>
<p>在/sob/gamess目录下运行./lked gamess 03 &gt;&amp; lked.log，目的是将编译好的.o文件、DDI库文件和数学库连接到一起成为可执行文件，很快就得到了最终可执行文件gamess.03.x。编译参数中的03是随意取的，也可以是00、01等等，目的只是区分不同GAMESS版本可执行程序，作为一个标识。（如果只运行./lked gamess &gt;&amp; lked.log，则默认生成gamess.00.x）</p>
<p>因为可执行文件名用了03标识，故将runall里面的set VERNO=后面默认的00改为03。<br>
建立/sob/gamess/scr文件夹作为GAMESS运行的临时文件夹。<br>
在/sob/gamess目录下运行./runall来对编译好的GAMESS程序进行测试，自动运行44个测试文件，将在当前目录下得到一批exam??.log文件。修改tools/checktst目录下checktst文件的set GMSPATH=为/sob/gamess，然后运行此文件，出现提示时输入/sob/gamess，会将所得log文件的结果与标准结果相对比，检查任务是否已正常结束，以及计算误差是否超过阈值。对于failed的任务，检查相应的log文件。除掉毛病后，把scr目录下文件都删掉，再运行runall和checktst看是否都已通过。</p>
<p>笔者在测试中exam36和43通不过，打开相应log文件发现如下提示：Check system limits on the size of SysV shared memory segments。这是因为linux默认的单个共享内存段的最大值太小造成的，使用/sbin/sysctl -a|grep shmmax命令察看默认只设了32MB，而这两个任务需要约48MB。遂修改/etc/sysctl.conf，在里面加入一行kernel.shmmax = 1610612736，这就将上限提高到了1.5G，之后重启（也可以运行/sbin/sysctl -w kernel.shmmax=1610612736来立刻生效而无需重启）。重新runall并运行checktst，发现任务均已Passed。</p>
<p>如果想用SMP方式并行双核运行，在rungms的if ($NCPUS &gt; 2) set NCPUS=2那行的上面插入一行case f71:（如果是四核机子，就在if ($NCPUS &gt; 4) set NCPUS=4前面插入这行）。之后比如运行./rungms exam01.inp 03 2 &amp;&gt; a.txt就说明用单节点双核调用gamess.03.x执行exam01.inp任务。若只输入./rungms exam01.inp则说明用单核心调用gamess.00.x执行exam01.inp任务。</p>
<p>最后编译图形应用程序，进入graphics目录，将complink文件里面的chdir后面改为/sob/gamess/graphics，set TARGET=后面改为linux-pc，if ($TARGET == linux-pc)&nbsp;&nbsp;  set FORT=后面改为'ifort -O2'，之后运行./complink来编译。</p>
<p><br>
附注：<br>
完整地编译成功后，如果我们修改了src目录下某个源代码文件，比如是int2a.src，想重新编译可执行文件使改动生效，只需要在/sob/gamess目录下运行./comp int2a，然后删掉原GAMESS可执行文件，重新lked即可。不必用compall把所有文件再编译一遍。</p>
<p>在32bit系统+任意CPU（不限intel）+gfortran下的编译方法：<br>
步骤与上述一致，只要把上文相应部分替换为下述即可。<br>
数学库不用额外安装，会自动编译并连接GAMESS自带的blas库，但缺点是慢。<br>
上述提到的改为linux-ia64的地方都改为linux32<br>
ifort -o actvte.x -Vaxlib actvte.f改为gfortran -o actvte.x actvte.f<br>
lked的302行，即if ($TARGET == linux32) then下面，把set FORTRAN=后面改为gfortran。<br>
comp的1138行，把set FORTRAN=后面改为gfortran。<br>
ddi目录下compddi的540行，即if ($TARGET == linux32) then下面，把set FORTRAN=后面改为gfortran。<br>
graphics目录下complink的if ($TARGET == linux-pc)&nbsp;&nbsp;  set FORT=后面改为'gfortran -O2'</p>
<p>在64bit系统+任意CPU（不限intel）+gfortran下的编译方法<br>
与上面32bit下安装一致，把其中linux32都改成linux64即可。lked、comp和compddi里对linux64模式默认就是用gfortran，不必再手动改了。但需要把lked中的#  Using blas.o will give a successful link, to slow matrix multiply routines.这一行下面的exit 4删掉，否则若没装MKL或Atlas或ACML库会报错，这样就会用自带的blas库。</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/fff7b5fd1e8dd04fd6887db6.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-07  01:25</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/fff7b5fd1e8dd04fd6887db6.html</guid>
</item>

<item>
        <title><![CDATA[[原创]C76优秀音乐推荐-其它部分]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/8c47bc80e93538dd9123d935.html]]></link>
        <description><![CDATA[
		
		<p>PS: C76东方系列音乐精选见此贴：<a href="http://hi.baidu.com/sobereva/blog/item/8fe7ea821c3affb56c8119c2.html">http://hi.baidu.com/sobereva/blog/item/8fe7ea821c3affb56c8119c2.html</a><br>
PS: C75非东方系列音乐精选见此贴：<br>
<a href="http://hi.baidu.com/sobereva/blog/item/ca1d1d60eca44643ebf8f8bd.html">http://hi.baidu.com/sobereva/blog/item/ca1d1d60eca44643ebf8f8bd.html</a></p>
<p><br>
虽然C76的东方project的同人音乐质量不如C75，但是其它同人音乐质量却相当好，胜于C75很多。最精彩部分共被我选出27首（相比之下C75只有10首）。以下曲目都是从verycd上全部发布过的C76非东方project的CD中精选出来。</p>
<p>本次推荐的C76非东方系列的音乐下载地址：<a href="http://www.jsharer.com/blog/290906.htm"><strong><font color="#ff0000">http://www.jsharer.com/blog/290906.htm</font></strong></a><br>
共156MB，36首，包括level B部分。连接是Jsharer永久地址（若用firefox浏览器可能下载链接无法正常显示）。如果下载总是发生中断，建议用flashget单线程下载，可解决此问题。</p>
<p>最精彩部分：</p>
<p>CTBR-色彩×少女-わたしのいろはさくらいろ.ogg<br>
高潮部分音色漂亮，感情饱满，十分悦耳</p>
<p>Diverse System-D14--華恋 -emotions-.ogg<br>
类似0:59后面这样，一层接一层，很有节奏地循环往复很多次，就像一点点地积蓄能量，设计十分好</p>
<p>hosplug-燐音-RINNE-Crow -Ver.MW- (Katakiri Solo).ogg<br>
紧张、严肃、节奏感很强的风格。类似开头部分感觉十分玄妙。高潮部分背景音乐相当贴切。vocal挺合适，略有厚重感，不轻飘。</p>
<p>Iemitsu-ReMix-樹海の灯(minimal mix).ogg<br>
略有懒散感觉的纯音乐作品，编曲并不复杂，一小段略带回声的主题旋律反复使用，贯穿整曲，很不错。</p>
<p>Link to you-Re：Dear Ver 0-Shallow sleep.ogg<br>
miku唱的，声音有着招牌似的沙哑，很清亮，很纯净，甚至略有神圣感。此曲让我感到浮在云层之上，听着很舒服。背景高速、简单的钢琴伴奏带来一种积极向上的感觉。</p>
<p>mimei-未明堂異聞-未明堂異聞.ogg<br>
纯音乐作品。2:52后面这样的主旋律很不错，悠扬、婉转、伴奏使主旋律显得饱满、豁达。</p>
<p>mimei-未明堂異聞-神避 kamu-sari.ogg<br>
mimei的声音我是比较有好感，其发布过的每张CD都有能达到我收录标准的作品。声音阴暗、沙哑、凝重、沧桑，唱法独特，声音特意半收着不放开。这首歌曲又是mimei风格的典型。一方面是唱得极好，另一方面编曲也是很优秀的。</p>
<p>P∴Rhythmatiq-Harmonia-ほしのふね.ogg<br>
也是miku唱的，这次是纯粹的小女孩风格。唱得很好，找不到破绽，节奏应和得好，电子味与这首歌的感觉很贴切，换成真人唱绝对效果大打折扣。miku的声音早已不是为了故意用而用，而是在很多特定的歌曲中已无法被替代。</p>
<p>Voltage of Imagination-全竜レヴァイアサン.ogg<br>
交响乐，比较喜欢类似3:10后面那一段旋律。</p>
<p>空の境界&rdquo;-イメージサウンドアルバム『VERIDICAL FACTOR』-――We Are Only Who We Are.ogg<br>
vocal很亮堂，类似1:52高潮部分，声音放得很开，很合适，不过此处高音部分再稍微延长0.3秒钟并且音量提高点比较好，这样更能展现其声音并将感情更多延伸。英文发音没有什么违和感比较难得。</p>
<p>流浪の民-ペリュトン.ogg<br>
很奇怪，开头部分人声好像感冒了一样（可确认原本就是这样的，不是转换问题）。2:16后面的部分旋律好，vocal有遥远、飘渺的感觉。</p>
<p>流浪の民-モーショボー.ogg<br>
稚嫩的声音是一大特点。类似0:50后面一段，那几句称呼亲人的声音，相当棒。</p>
<p>少女病-黎明ローレライ-I.ogg<br>
0:57后面一口气唱的很急促、紧张的反复几次的段落很好听，尤其歌曲最后面，反复次数又加多了，感觉被紧紧地抓住了一样。</p>
<p>少女病-黎明ローレライ-蒼穹に向けた透明な弾丸.ogg<br>
类似1:09后面非常好听！！！非常有力量，非常高亢，让人有着努力奋斗征服困难的冲动，曾经听到此处时落泪。当自己失意无助，想逃避困难时，多听听这首歌大有好处。</p>
<p>少女病-黎明ローレライ-絶対零度.ogg<br>
vocal很有张力，旋律富有冲击力。</p>
<p>世界の真実.ogg<br>
很不错的主题鲜明的交响乐。</p>
<p>夜明前的琉璃色-月光圆舞曲-クリスタライズ.ogg<br>
柔缓的歌曲，似曾相识的旋律，类似3:08后面这一段的收尾我很喜欢。</p>
<p>夜明前的琉璃色-月光圆舞曲-クリスタライズ-New Ancient Times Style ver.-.ogg<br>
上面歌曲的纯音乐版本，类似0:55处的提琴声很纤细，像泛着金光一样。</p>
<p>ササクレイション-ラララ終末論。-エピローグ_ラララ終末論。.ogg<br>
虚拟人声演唱，唱得颇不错，高低起伏把握准确，能把情感完全抒发出来，很好听的歌曲。</p>
<p>Link to you-Glass Chord-AGES.ogg<br>
整曲都比较有激情，高潮部分很有感觉，只是似乎vocal底气不太足，嗓子不够亮，唱不上去，张力有限，否则会更好，或者说vocal有点被配乐音量压制了，略显暗淡。</p>
<p>Sugar plum Garden-Sky Garden-asterism.ogg<br>
铺垫的念叨部分有一种利落的感觉。让我想到在城市里两个专门对付坏人的会武功的女人（略有御姐感觉的那种），若是有这样的动画，当做OP很合适。</p>
<p>Sugar plum Garden-Sky Garden-同調ism -シンクロイズム-.ogg<br>
比较潇洒的歌，和上一首的演唱者是一样的，那种略带放荡的vocal有一点点体现歌曲所展现的故事中的角色&ldquo;艺高人胆大的感觉&rdquo;。</p>
<p>《love solfege' -cloisters' end and piano piece collection》这是一张十分出色的纯钢琴专辑，精选出以下五首：<br>
cloisters' end.ogg<br>
饱含着感情，带着一丝感动。</p>
<p>pastorale.ogg<br>
轻巧、悠然自得的感觉。</p>
<p>ripply harp.ogg<br>
华美的音乐，展现出公园里秋天树叶飘散的场景，使我感怀往昔。</p>
<p>stranger.ogg<br>
有种偷偷摸摸，鬼鬼祟祟的感觉，和此曲的名字很般配。</p>
<p>woody ditty.ogg<br>
轻松惬意的曲子。</p>
<p>=============Level B===============<br>
实际上，这次被列入Level B的音乐也都不错：</p>
<p><br>
夜明前的琉璃色-月光圆舞曲-Marginality -Chill Out in August-.ogg<br>
2:00及后1/3的旋律不错，比较动听。但音乐其它部分略显沉闷。</p>
<p>D'va;;;;;;;;5-アムリタ-A (BeatMania IIDX _ A).ogg<br>
仿佛是在深邃、神秘、四周微微泛着蓝光的洞穴里。</p>
<p>D'va;;;;;;;;5-アムリタ-Aci-L.ogg<br>
富有现代感，又有一点点深邃感觉的电子乐。</p>
<p>D'va;;;;;;;;5-アムリタ-Bloody Malie.ogg<br>
开头的几声紧张的喘息恰到好处。紧张的旋律塑造出凝重、恐怖的感觉。</p>
<p>D'va;;;;;;;;5-アムリタ-Passiflora caerulea.ogg<br>
异端、玄幻的音乐，1:50开始似乎有一丝邪恶中透露着激动的感觉。</p>
<p>kaede.org-桜-ひらひらとゆらゆらと.ogg<br>
歌曲清新治愈，旋律富有转折，类似1:43这样的轻轻的回声很合适。</p>
<p>Maisie-Maisie-欲層.ogg<br>
慵懒、堕落、泼皮、东倒西歪的感觉，演唱者对此风格把握得不错，就像多愁善感的一个浪人一样，心里总是念叨、倾诉、抱怨着着什么。</p>
<p>XL Project-the last hope-Introduction.ogg<br>
纯电子乐，十分单调简单的旋律，稍微添油加醋，听起来比较流畅舒服。</p>
<p>森里屋-Ex：hibition-a cumulonimbus..ogg<br>
相对来说算是电子乐中的轻音乐，没什么特别之处。</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/Others">Others</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/8c47bc80e93538dd9123d935.html#comment">查看评论</a>]]></description>
        <pubDate>2009-09-30  23:53</pubDate>
        <category><![CDATA[Others]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/8c47bc80e93538dd9123d935.html</guid>
</item>

<item>
        <title><![CDATA[[原创]C76优秀音乐推荐-东方project部分]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/8fe7ea821c3affb56c8119c2.html]]></link>
        <description><![CDATA[
		
		<p>客观来讲，C76东方同人作品整体质量与C75有不小差距。多数都被列入了level B，即有特点但不完美。这些曲目精选自verycd上发布过的全部（约40张）C76东方同人CD。<br>
这些文件绝大多数都是我从无损格式转化过来的，160kbps的ogg既节省空间，音质也足够高，听感上与无损无异（之所以FXT/FXTZ中的音乐使用的是~195kbps的ogg正是因为这个优点），推荐foobar播放。另外我对音乐文件的tag很重视，中文平台上不会有乱码。</p>
<p>本次C76推荐的东方系列的音乐下载地址：<a href="http://www.jsharer.com/blog/290781.htm"><strong><font color="#ff0000">http://www.jsharer.com/blog/290781.htm</font></strong></a><br>
共171.6MB，38首，包括level B部分。连接是Jsharer永久地址（若用firefox浏览器可能下载链接无法正常显示）。如果下载总是发生中断，建议用flashget单线程下载，可解决此问题。</p>
<p><br>
PS:C75东方系列优秀音乐推荐见我曾经写的这个帖子<a href="http://hi.baidu.com/sobereva/blog/item/f5d363cec644143eb600c8bd.html">http://hi.baidu.com/sobereva/blog/item/f5d363cec644143eb600c8bd.html</a></p>
<p>PS:C76非东方系列音乐推荐见此贴<a href="http://hi.baidu.com/sobereva/blog/item/8c47bc80e93538dd9123d935.html">http://hi.baidu.com/sobereva/blog/item/8c47bc80e93538dd9123d935.html</a></p>
<p>PS:这些C76东方音乐CD中最佳封面是樱华抄，美轮美奂，第一次在pixiv上看到此图稍稍吃惊。不过樱华抄的音乐本身比较一般。</p>
<p> </p>
<p><a href="http://flfqdq.blu.livefilestore.com/y1phNS2X_0e5JTUGLbm_FRnBQyPytD4Pge924WdAQBazQ-WN0B6e79ie87JQdws-BMupKkmw5IhTTRuK2IN9uHPuA/%E6%A1%9C%E8%8F%AF%E6%8A%84.jpg"><span><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/sobereva/pic/item/adb6d6ec991fa6142797912d.jpg"></span></a></p>
<p><br>
优秀曲目：</p>
<p>Dark PHOENiX-ShotShel III-明治17年の上海アリス.ogg<br>
非常秀美，非常悠然，非常动听的曲子，带来一丝轻松和惬意。这首曲子很容易改编得十分动听。</p>
<p>Silver Forest-東方夢想連歌-SPEED STAR.ogg<br>
类似2:20这种反复很不错。不过vocal的冲击力和穿透力还有提升余地。</p>
<p>石鹸屋-東方Lv.20-ウサハッピー.ogg<br>
风格独特。感觉是一群懒洋洋的庸俗市井年轻男人在抒发略显怪诞的想法。</p>
<p>東方恋想郷 ～Grazing Heart～薄闇万華鏡.ogg<br>
演唱、编曲都比较优秀，好歌</p>
<p><br>
《東方幻想麻雀オリジナルサウンドトラック》这次有六首比较优秀的乐曲<br>
BAI-PUSH.ogg<br>
很现代，很明亮，很有科幻感，节奏紧凑。</p>
<p>ネイティブフェイス -序章_癒-.ogg<br>
很典型的端庄典雅的风格。</p>
<p>広有射怪鳥事　～ Till When？.ogg<br>
反复的旋律的连接处很好，有一种连绵不断的感觉</p>
<p>麻雀幻想.ogg<br>
no cmment</p>
<p>千年幻想郷　～ History of the Moon.ogg<br>
音质有点噪。前半普通，后半部分气氛还可以。</p>
<p>神前試合.ogg<br>
弹拨乐器的音色很合适</p>
<p>《東方SMILES ～トウホウスマイルズ～ メガブラックレーベル》这张专辑次有不少曲子都比较精彩，显得十分饱满、流畅、富有动感，制作水准很高。包含如下曲目：<br>
ひえろぐらふ - 超竹取物語　～1000年帝王.mp3<br>
秀气、灵动、忠于原曲。</p>
<p>ひえろぐらふ - 底なし蔵書の魔女.mp3<br>
0:09的那几声很有感觉，好像是伏笔。</p>
<p>ひえろぐらふ - 彷徨える儚き永遠へ.mp3<br>
乐器音色很棒，很鲜亮，像金子一样。</p>
<p>ひえろぐらふ - 河童のための円舞曲.mp3<br>
优雅，端庄，大气又富有节奏感。</p>
<p>ひえろぐらふ - 迷いの森の人形.mp3<br>
生动、紧凑。我一直都很喜欢类似3:56那几秒钟。受到一个MAD的影响，每次听到这一段都会想起黑白和爱丽丝。</p>
<p>ひえろぐらふ - 魔法少女達の大峡谷.mp3<br>
0:29这样的转折很漂亮。诸如2:54附近这样的收尾，以及3:06反复用的音色和旋律也很棒。</p>
<p>ひえろぐらふ - 目覚めざるをえない遊戯.mp3<br>
0:52后面的旋律颇不错。1:12后面这样的短促颤动的声音用得漂亮。</p>
<p>ひえろぐらふ - 御柱城.mp3<br>
类似0:10这样的地方很不错。</p>
<p><br>
《博麗神社の神隠し》这张CD素质颇不错<br>
Yume Musubi.ogg<br>
十分纤细、清澈，晶莹剔透的钢琴声，很棒。</p>
<p>Dance of Jeunesse.ogg<br>
前面一段古香古色很有韵味</p>
<p>ようこそ三途川へ！.ogg<br>
听起来十分欢乐、喜庆，独到的风格。</p>
<p>The Name of Wild Rose.ogg<br>
类似0:48后面这一段声音很圆润、轻盈，发音的节奏很好。</p>
<p>春色五条坂.ogg<br>
一种不太常见的打击乐风格，一小段旋律由始至终反复，规律感很强。</p>
<p>雪夜叉.ogg<br>
一首紧张、紧凑、略带神秘感的曲子<br>
==========================<br>
以下是level B类，都是有一些特点，或者值得一听，但整体与优秀有一定差距的作品。</p>
<p>AniPix-1 Chain-Aureole.ogg<br>
1:45开始的旋律很好，将原本那首只有严肃、压抑感的曲子完全改变了形象，变得舒畅、浪漫，很有创意。</p>
<p>Iemitsu-Re3 -C-Blikje Phantasm -Piano Solo-.ogg<br>
没什么旋律，琐碎的琴声还不错。</p>
<p>Iemitsu-Re3 -C-月の鏡.mp3<br>
弦乐部分不错。</p>
<p>k-waves LAB-風萃めのシャルモ-シンデレラケージ.ogg<br>
仍然是熟悉的风格，类似1:30那样的部分不错，但是其它部分乐器音色令人觉得太口渴。</p>
<p>k-waves LAB-風萃めのシャルモ-御柱の墓場.ogg<br>
用他们拿手的乐器重新中规中矩地演奏一遍原曲。</p>
<p>LOOPCUBE-LOST KHARA-ritzy - inst.ogg<br>
这次用星莲船的音乐不多，星莲船的曲子有一半以上其实都不错，怎么重新演绎都不难听。</p>
<p>QLOCKS-紅色の繊か-とある昭和のラグザネリ.ogg<br>
充分使用喇叭，虽然这类风格貌似很老气，甚至傻，但在这里很合适，很&ldquo;拽&rdquo;。</p>
<p>SOUND HOLIC - 地 -KUNI--Highway to Heaven.ogg<br>
演唱者故意不把声音放得太开，唱法独特，在一些念叨的地方，比如1:22那种地方，是个特点。</p>
<p>Sound Online-NOSTALGIA-Firebird.ogg<br>
2:10衔接极好，后面的旋律动感很强。</p>
<p>Sound Online-NOSTALGIA-Mystic Water.ogg<br>
一直循环的简单的旋律比较有感觉。</p>
<p>ししまいブラザーズ-暑中見舞迎え火.ogg<br>
同样是将原曲一部分变得舒缓动听。</p>
<p>君の美術館-dialogue～Starry Nightmare～廃獄ララバイ.ogg<br>
没什么新意，吉他那段不错。</p>
<p>君の美術館-dialogue～Starry Nightmare～千年幻想郷　～ History of the Moon.ogg<br>
两个清澈、柔和的vocal，组合得十分好。</p>
<p>君の美術館-dialogue～Starry Nightmare～天空の花の都.ogg<br>
旋律还行，手风琴声音听着太累。</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/Others">Others</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/8fe7ea821c3affb56c8119c2.html#comment">查看评论</a>]]></description>
        <pubDate>2009-09-30  20:16</pubDate>
        <category><![CDATA[Others]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/8fe7ea821c3affb56c8119c2.html</guid>
</item>

<item>
        <title><![CDATA[[原创]Gaussian03的Linda并行设置与VMware的虚拟集群(Updated 2009-Sep-18)]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/e50abe95eacba541d1135eaf.html]]></link>
        <description><![CDATA[
		
		<p align="center">Gaussian03的Linda并行设置与VMware的虚拟集群<br>
文/Sobereva First released:2009-Sep-13 Last updated:2009-Sep-18</p>
<p>网上也有一些关于高斯linda并行设置的文章，也有讨论使用虚拟机模拟的集群跑高斯+linda的，但是说明都不甚具体，各种linux发行版本差异也不小，拿到手的高斯程序也有所不同，其设置方法往往不能直接套用。最近也有人问配置Linda的问题，故撰此文详细说明一下，只要使用与本文相同的软件环境，严格按照本文步骤，一定可以顺利地设置成功。另外对于vmware虚拟机虚拟集群跑g03+linda的效率也进行一些讨论。</p>
<p>本文使用的是Gaussian03 C.02，压缩包自带用Linda程序7.1版，无需另行下载任何程序。在linda-exe子目录包含了已编译好的.exel后缀的专用于linda并行的高斯子程序。压缩包可以在这里下载，解压密码ltwd。<br>
<a href="http://www.brsbox.com/filebox/down/fc/05d0cb868409801e44ab8179bc25f3c8">http://www.brsbox.com/filebox/down/fc/05d0cb868409801e44ab8179bc25f3c8</a></p>
<p>由于条件窘迫没有实际的节点配置相仿佛的集群环境，只有四核单机，故用vmware 6.0.1做两个相同的双核虚拟机来组集群介绍Linda设置。两虚拟机内存皆500MB，主机操作系统WinXP SP2，虚拟机操作系统使用我认为最经典、最好用的Fedora7-64bit，都使用root账户（密码可以不一致），使用bash。主机CPU为Q6600(oc 3.0)。如果已有多个实际主机，则只看本文第二部分就行了。</p>
<p>关于Gaussian的并行模式这里说一下。Gaussian的并行是通过openmp来实现的，但是openmp只适合共享内存架构。Gaussian的跨节点运算并不是通过科学计算软件常用的MPI实现，而是通过ACSI的Linda软件。Linda提供了一个虚拟的共享内存(VSM)环境，它将集群中的主机结合起来，获得一个全局的逻辑的共享内存，原始程序依靠这个环境实现跨节点并行运算只需要添加简单的指令来控制数据的交换即可。这样使用openmp并行方式的Gaussian就可以很容易地在集群环境中并行运行了。</p>
<p><br>
1 配置虚拟机集群环境<br>
vmware workstation版本直接去这里下载30天试用版本<a href="https://www.vmware.com/cn/tryvmware/?p=workstation-w">https://www.vmware.com/cn/tryvmware/?p=workstation-w</a>。这里提供6.x版本算号器：<a href="http://www.brsbox.com/filebox/down/fc/fde97d914f6cdcd916e3fb1123358ec6">http://www.brsbox.com/filebox/down/fc/fde97d914f6cdcd916e3fb1123358ec6</a>。</p>
<p>安装vmware，会自动给系统里增加一堆服务，都允许启动，并且会看到网络连接里多出VMnet1和VMnet8。之后启动vmware新建个虚拟机，configuration用custom，操作系统选Linux，version用Other Linux 2.6.x kernel 64bit，虚拟机名称设f71，Network connection设Use host-only networking，其它设置都随意，视情况而定。</p>
<p>新建好虚拟机后找一个Fedora7-64bit安装盘或镜像文件。虚拟机名称点右键选setting，CD-ROM里面加载fedora7镜像文件，或者直接使用物理光驱读主机光驱里的fedora7光盘。之后照常安装系统，选择要安装的应用程序时将Software Development大类也选上，安装中提示的防火墙和selinux配置都关掉避免影响网络连接。装好后在虚拟机列表对应名称上点右键选Install VMware tools，之后Vmware tools的光盘应当被加载进了虚拟机的光驱里（/media/VMware Tools），进去将VMwareTools-6.0.1-55017.tar.gz解压到某处，进入其目录运行vmware-install.pl，只需要一直按回车就行了，最后设合适的分辨率。这样虚拟机就支持文件直接从主机拖放进去，可以在主机和虚拟机之间直接复制文本，也可以共享主机目录，方便使用。对系统根据自己使用习惯进行一些设置后关闭f71虚拟机。</p>
<p>用vmware克隆功能将f71克隆（full clone方式）出一个名为f72的主机。建议此时将f71和f72都分别用take snapshot功能制作一个镜像，方便以后恢复到当前状态。</p>
<p>察看vmware程序的Edit-Virtual Network Editor，Summary里面列表中会有个Host-only项，在我这里是VMnet1，相应的subnet显示的是192.168.153.0。这种情况下虚拟机IP地址应当设为192.168.153.x，但不能与实际主机的网络连接里VMnet1的IP地址一致（默认是通过DHCP分配的，我这里被分配为192.168.153.1）。</p>
<p>现在以断网的方式启动f72，即启动f72后马上双击vmware右下角网卡图标后把connect对钩去掉，并且选择host-only。将f72的网络配置界面（图形界面的System-Administration-Network）中的所有网卡删掉，添加个新的网卡以避免MAC地址与f71的冲突，IP地址添192.168.153.4，子网掩码255.255.255.0，DNS标签页的Hostname填f72，其它留空。保存后重启，在刚刚出现vmware的logo时双击网卡图标把connect再钩上。</p>
<p>f72启动后启动f71，网络配置界面里IP地址添192.168.153.3，子网掩码255.255.255.0，DNS标签页的Hostname填f71，其它留空，重启f71。</p>
<p>此时，实际主机、f71虚拟机、f72虚拟机这三台计算机就组成了一个虚拟的内部的局域网，互相应该都能ping通了。这就是vmware的Host-only模式。</p>
<p><br>
2 设置G03+Linda并行运行环境<br>
现在我们就可以看作有了两台实际的计算机，主机名分别为f71和f72，IP分别为192.168.153.3和192.168.153.4。（如果有两台真实主机，网络配置界面也应按上述虚拟机的进行设置，并关掉防火墙和selinux）</p>
<p>f71和f72都作如下设置：</p>
<p>修改/etc/hosts，添加IP地址与主机名的对应关系，删掉默认设的内容，都改为<br>
192.168.153.3 f71<br>
192.168.153.4 f72<br>
之后重启。</p>
<p>把高斯压缩包解压到/sob/g03，并建立/sob/g03/scratch目录作为临时文件目录。跨节点计算必须每个节点上都有相同程序在相同位置，如果不想每个节点都存一份程序，可以用NFS方式共享，设置方法见附录。</p>
<p>添加以下内容至/root/.bashrc<br>
export g03root=/sob<br>
source /sob/g03/bsd/g03.profile<br>
export GAUSS_SCRDIR=/sob/g03/scratch<br>
export GAUSS_LFLAGS='-vv -nodelist &quot;f71 f72&quot;'<br>
（这里-nodelist指定并行运算的节点，-vv代表very verbose输出，便于监控。我们也可以通过节点列表文件来指定使用哪些节点，比如创建一个/sob/a.txt文件，里面写两行，内容分别为f71和f72，然后export GAUSS_LFLAGS='-vv -nodefile /sob/a.txt'，效果是等价的。）</p>
<p>之后在/sob/g03、/sob/g03/bsd、/sob/g03/linda-exe、/sob/g03/linda7.1/intel-linux2.4-rh8/bin文件夹下使用chmod 700 *来设定权限。<br>
改/sob/g03/ntsnet里面的/haydn/s0/scratch/frisch/g03/linda7.1/intel-linux2.4-rh8/为自己的路径/sob/g03/linda7.1/intel-linux2.4-rh8/<br>
（此文件里的TSNET_PATH环境变量路径我们不用理会，因为Gaussian03的Linda并行运行过程中不会用到它）<br>
改/sob/g03/linda7.1/intel-linux2.4-rh8/bin/LindaLauncher里面的/haydn/s0/scratch/frisch/g03/linda7.1/intel-linux2.4-rh8/为自己的路径/sob/g03/linda7.1/intel-linux2.4-rh8/</p>
<p>Linda支持rsh（默认）和ssh方式连接不同节点，rsh和ssh实际速度经测试没有太大差异，而fedora7要想打开rsh步骤比较繁琐，所以这里用ssh。跨节点运行默认设置文件即global config file是/sob/g03/linda7.1/common/lib/tsnet.config。如果需要自定义参数，可以直接修改此文件，也可以创建并修改当前用户主目录下的.tsnet.config（这里即/root/.tsnet.config），里面的设置将会把默认配置文件的相应条目覆盖。我们这里直接修改默认参数文件/sob/g03/linda7.1/common/lib/tsnet.config，将里面的Tsnet.Node.lindarsharg后面的rsh改为ssh，其它不用改。（其它参数的意义可以下载<a href="http://www.lindaspaces.com/downloads/lindamanual.pdf">http://www.lindaspaces.com/downloads/lindamanual.pdf</a>查看第三章）</p>
<p>接下来要使得f71与f72之间可以不需要密码直接通过ssh运行指令。<br>
在f71中：<br>
运行ssh-keygen -t rsa&nbsp;&nbsp;&nbsp;  全都按回车用默认，生成了RSA密钥<br>
cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys<br>
在f72中：<br>
运行ssh-keygen -t rsa&nbsp;&nbsp;&nbsp;  全都按回车用默认<br>
把f71中的/root/.ssh/下全部文件复制到f72中/root/.ssh/进行覆盖<br>
运行chmod 700 /root/.ssh/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  把.ssh内的文件设为root专用<br>
运行ssh f71&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  回答yes<br>
在f71中：运行ssh f72，回答yes</p>
<p>为了测试ssh是否设好，在f71输入ssh f72 date，以及在f72输入ssh f71 date，如果都不需要密码并且显示了日期，就说明无密码ssh设置成功了。这样Linda就可调用ssh在远程节点上直接执行指令了。</p>
<p>（如果有特殊原因必须用rsh，则不需要改tsnet.config文件，也不必进行上面ssh的设置。但需要节点间可以通过rsh和rlogin以无密码方式连接。在Fedora7下面设置rsh的方法见附录）</p>
<p>此时准备工作已全部完成。Linda并行的Gaussian03输入文件中，%NprocLinda=n，%Nprocshared=m代表用n个节点，每个节点用m个核心运行，即总共n*m个核心运行。运行时单机的g03命令就换成g03l，如g03l &lt; ltwd.gjf |tee a.out。现在在f71或f72上启动一个linda并行的计算任务，如果运行到支持linda并行的子程序时，其它节点上看到了高斯的并行子程序已启动并且有较高CPU占用率，说明已配置成功！如果想利用更多实际节点或虚拟更多节点，都使用类似上述配置f72的方法配置，GAUSS_LFLAGS环境变量中-nodelist后添加更多节点名就行了。</p>
<p>G03中绝大部分支持单机SMP方式并行的功能也支持Linda方式并行，但值得注意的是FMM(Fast Multipole method)，这是一种线性标度的方法，可加快电子积分的计算，但加快并不多。FMM在体系原子数高于某个值后就自动开启，例如对没有对称性的体系原子数等于或大于60就开启。FMM支持SMP方式并行但是不支持Linda并行，开启了FMM后的任务即使使用Linda方式并行，在其它节点机上虽然也有L502子程序启动，但是不会有CPU占用率，运算更不会因此加速。可以用NoFMM关键字关闭它，使得Linda方式的并行运算在这部分计算中能切实发挥加速作用。</p>
<p><br>
3 VMware虚拟机下的并行效率<br>
这里列出了vmware虚拟机用Linda和SMP方式并行及真实主机SMP方式并行在相同Fedora7操作系统下的运算效率，都是用C.02。用HF/Aug-cc-PV5Z算CH4单点，%mem=300MB，目的在于使计算集中在支持linda并行的L502。</p>
<p>f71+f72 %NprocLinda=2，%Nprocshared=2<br>
181.486s<br>
f71+f72 %NprocLinda=2，%Nprocshared=1<br>
434.970s<br>
f71 %Nproc=2<br>
316.976s<br>
实际主机 %Nproc=2 //用时过长，估计和其它因素有关<br>
401.394s<br>
实际主机 %Nproc=4<br>
169.368s</p>
<p>可以看到，用两台双核虚拟机Linda并行并不比在实际操作系统中用4核SMP方式并行慢多少(181s vs 169s)，比单虚拟机双核运行快了近一倍(181s vs 316s)，并行效率较高。而双核SMP并行甚至比实际操作系统中还快(316s vs 401s)，虽然这很怪，但至少可以说虚拟机里面运行绝不比实际运行慢多少，以我的经验，如果不跨节点，各种计算化学程序差不多都只慢10%。而跨节点的两颗核心运行显然比单节点双核慢得多(434s vs 316s)。但毕竟是虚拟机集群，其结果与物理以太网组的集群还是欠缺一些可比性的，而且单一测试任务结论并不具有普遍性。</p>
<p>所以我鼓励充分利用虚拟机，在效能上不会有多少损失，vmware支持四核的虚拟机也是早晚的事（目前只能用双核双虚拟机模拟），届时就更方便了。尽管vmware虚拟机内存不是动态分配，会占不少内存，但对于当前内存行情来说这已不是什么问题。用vmware虚拟机的好处是可以随时中断计算；可以随时将虚拟机拷到别的机子上继续运行，那台机子只要装了vmware就可以而不需要装计算化学软件；可以随时很方便地恢复到原来机子的状态，可以大胆地进行各种操作不再担心系统崩溃；可以在windows平台下做linux下计算而不影响windows下程序运行，只需要将虚拟机CPU优先级调低即可，充分利用CPU资源；甚至可以在多台WinXP平台的机子上，每台机子弄个linux虚拟机，利用虚拟机的Bridged网络模式（每个虚拟机都等价于一个物理主机连到真实的交换机上），将这些windows机子组成linux集群。等等......我以后会专门做更详细的讨论。</p>
<p><br>
附录1：用NFS共享高斯程序的设置方法<br>
例如要把f71的/sob/g03目录挂到f72的相同位置，首先确认NFS服务和rpcbind服务（以前叫portmap）已经开启，可以在图形界面的System-Administration-Server settings-Services里面察看二者的状态是否为running，以及前面是否有对钩，即是否每次以当前level启动系统时都能自动开启。若为stopped或没有对钩就手动令其启动并加上对钩。然后在f71的/etc/exports里面加入：<br>
/sob/g03 192.168.153.4(rw,no_root_squash)<br>
之后重新启动NFS服务，这样就允许f72以可读写方式共享f71的/sob/g03目录，在f72上执行showmount -e f71察看f71的可共享目录时应该能显示出这个目录。在f72上建立/sob/g03文件夹，之后运行挂载命令mount f71:/sob/g03 /sob/g03即可，两台机子/sob/g03目录已经实时同步，此时f72机子上应该已能照常跑高斯程序。如果想每次开机自动挂载，可以把挂载命令加在f72的/etc/profile里。直接在每个节点上储存一份高斯程序与NFS方式共享高斯程序一般不会对计算速度有明显影响。</p>
<p>附录2：Fedora7开启无需密码的rsh、rcp、rlogin设置方法<br>
假设/etc/hosts已经按正文进行了设置。<br>
xinetd-2.3.14-12.fc7.x86_64.rpm和rsh-server-0.17-44.fc8.x86_64.rpm可以在这里下载<a href="http://www.brsbox.com/filebox/down/fc/115f30cf0041c3b952d713a7d20e28a2">http://www.brsbox.com/filebox/down/fc/115f30cf0041c3b952d713a7d20e28a2</a><br>
在f71和f72上都进行下列操作：<br>
装xinetd-2.3.14-12.fc7.x86_64.rpm（图形界面直接双击即可）<br>
装rsh-server-0.17-44.fc8.x86_64.rpm（图形界面直接双击即可）<br>
运行setup命令，在其中的系统服务里打开rsh和rlogin和rexec<br>
在/etc/securetty后面加三行，内容分别是rsh、rlogin、rexec<br>
/root下面创建.rhosts，加上一行192.168.153.4 root和一行192.168.153.3 root<br>
运行service xinetd restart<br>
此时运行netstat -an |grep 514应该显示listen了</p>
<p>此时rsh、rcp、rlogin都应该能用了。f71上运行rsh f72 ls或rlogin f72或使用rcp向另外节点复制文件应该都不需要密码了，这样就设置完毕了。（若rcp复制被拒，到/etc/pam.d/目录下，可以试试把rsh文件中的auth required /lib/security/pam_securetty.so一行用&ldquo;#&rdquo;封掉）。</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/e50abe95eacba541d1135eaf.html#comment">查看评论</a>]]></description>
        <pubDate>2009-09-13  23:28</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/e50abe95eacba541d1135eaf.html</guid>
</item>

<item>
        <title><![CDATA[[原创]谈谈Gaussian中的BSSE校正]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/1aae2fee8ff98ff2b2fb95bc.html]]></link>
        <description><![CDATA[
		
		<p>计算A、B分子间的弱相互作用能，不能简单地通过E_interaction = E_AB - E_A - E_B来计算，因为E_AB能量相对于E_A + E_B的降低来自两方面，一方面是真实的A、B分子间的相互作用能，这是我们要求的；另一方面来自于A、B分子的基函数在复合物体系中重叠，相当于增大了复合物的基组而使E_AB能量降低，这个部分贡献如果也掺入E_interaction，则高估了相互作用能，所以要去掉，它称为Basis Set Superposition Error(BSSE)。所以双分子的相互作用能应该表述为E_interaction = E_AB - E_A - E_B + E_BSSE。有时在分子内相互作用能计算时也要考虑BSSE。</p>
<p>计算E_BSSE有多种方法，Gaussian03用的是目前广泛使用的Boys、Bernardi发展的counterpoise correction方法。设E(i)为第i个分子在自身基组下的能量，E(i)'为第i个分子在全部n个分子上的基函数都出现下的能量，则计算n个分子相互作用能中的E_BSSE = ∑( E(i) - E(i)' )，这里E_BSSE为正值。注意计算E(i)与E(i)'时的分子几何结构与处在复合物中时的一致。</p>
<p>要计算A、B两个分子的相互作用能，在Gaussian03中使用Counterpoise=2关键字，会计算5个体系，输出的能量按照如下顺序：<br>
 E_AB：A、B基组下AB复合物的能量<br>
 E_A,bAB：A、B基组下A的能量<br>
 E_B,bAB：A、B基组下B的能量<br>
 E_A：A基组下A的能量<br>
 E_B：B基组下B的能量</p>
<p>最后会输出corrected energy (E_corrected)和BSSE energy (E_BSSE). 这里E_corrected就是消除了因单体基组重叠造成的能量降低后的AB复合物能量，E_corrected = E_AB + E_BSSE。E_BSSE = (E_A - E_A,bAB) + (E_B - E_B,bAB)。</p>
<p>BSSE校正后的真实的相互作用能可以这样计算：E_interaction = E_corrected - (E_A + E_B)。也可以这样计算，是等价的：E_interaction = E_AB - E_A,bAB - E_B,bAB</p>
<p>计算过程中会输出类似这样的语句Counterpoise: doing DCBS calculation for fragment&nbsp;&nbsp;  1。这里就是说明接下来计算的是E_A,bAB（假设A分子为fragment 1），其中DCBS代表dimer centered basis set，说明以A、B分子为中心的基函数都出现，但是计算中并不纳入B的电子和原子核，这称为计算A的能量时添加了B的ghost轨道；如果是doing MCBS calculation for fragment&nbsp;&nbsp;  1，就是要计算E_A，MCBS代表monomer centered basis set，计算中只出现属于A分子的基函数。</p>
<p><br>
若计算n个分子，则关键字为counterpoise=n，结果输出顺序与计算相互作用能的方法与双分子的情况是一样的。能量按如下顺序输出：E_AB,E(1)',E(2)'...E(n)',E(1),E(2)...E(n)。E_BSSE = E(1) - E(1)' + E(2) - E(2)' + ... + E(n) - E(n)'。E_corrected = E_complex + E_BSSE。E_interaction = E_corrected - ( E(1) + E(2) + ... + E(n) )。计算过程中也用DCBS和MCBS来说明接下来将要计算的是哪项，但此时DCBS中的D的含义就不是具体指Dimer了，而是多分子复合物。</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/1aae2fee8ff98ff2b2fb95bc.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-27  17:42</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/1aae2fee8ff98ff2b2fb95bc.html</guid>
</item>

<item>
        <title><![CDATA[[原创]东方星莲船修改器 (锁残机&锁SC&PowerMAX&设分)]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/3b315e38a4995e2db8998f89.html]]></link>
        <description><![CDATA[
		
		<p>下载地址 <a href="http://www.brsbox.com/filebox/down/fc/29763ffbc67b2ddd602d628ec6d048ff">http://www.brsbox.com/filebox/down/fc/29763ffbc67b2ddd602d628ec6d048ff</a></p>
<p> </p>
<p>修改器所修改的地址介绍（皆4字节整数)：</p>
<p>得点，004B0C44，数值为屏幕显示的值的1/10。<br>
Power，004B0C48，内存中数值为显示的数值的100倍，如1.03为103。建议锁在399，然后吃一个红P就满了，并实际生效了。设400或更多不直接起作用<br>
残机数，004B0C98，数值与实际残机数一致，1个即为1，非整数残机不算。<br>
SC数，004B0CA0，数值与实际SC数一致，1个即为1，非整数SC不算。</p>
<p><a target="_blank" href="http://flfqdq.blu.livefilestore.com/y1purCN8qUwIgkUmds4M2LfJkwLBJEA6qUf4QjkNZu6CDMa1-4p7P2Bo6NvL40twzRXaX3GK8WeI9n-4FTw3Ms9XG-eMy0VQz7V/%E4%B8%9C%E6%96%B9%E6%98%9F%E8%8E%B2%E8%88%B9%E4%BF%AE%E6%94%B9%E5%99%A8.PNG"><img class="blogimg" border="0" small="0" src="http://flfqdq.blu.livefilestore.com/y1purCN8qUwIgkUmds4M2LfJkwLBJEA6qUf4QjkNZu6CDMa1-4p7P2Bo6NvL40twzRXaX3GK8WeI9n-4FTw3Ms9XG-eMy0VQz7V/%E4%B8%9C%E6%96%B9%E6%98%9F%E8%8E%B2%E8%88%B9%E4%BF%AE%E6%94%B9%E5%99%A8.PNG"></a></p>
<p> </p>
<p><br>
此修改器使用Cheat Engine 5.5制作。使用Cheat Engine时应注意的内容：</p>
<p>很多游戏屏幕显示的数值与变量在内存中的数值、类型不一致，如屏幕的数值通过换算得到、显示的小数实为整数等情况。这种情况给定精确值搜索往往不成功，需使用模糊搜索。建议第一次搜用未知初始值方式的搜索，类型用All。之后在游戏进行中反复灵活运用Increased/Decreased Value、Unchanged Value、Value Between逐步减少搜索范围，小于1000个结果后，可人工检验找出可疑值，都尝试锁定，然后在游戏中检验。</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/Others">Others</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/3b315e38a4995e2db8998f89.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-15  21:46</pubDate>
        <category><![CDATA[Others]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/3b315e38a4995e2db8998f89.html</guid>
</item>

<item>
        <title><![CDATA[[原创]过渡态、反应路径的计算方法及相关问题II]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/47cd7cd18fee62da572c841f.html]]></link>
        <description><![CDATA[
		
		3.过渡态相关问题
<p>3.1 无过渡态的反应途径(barrierless reaction pathways)<br>
并非所有反应途径都需要越过势垒，这类反应在很低的温度下就能发生，盲目找它们的过渡态是徒劳的。常见的包括自由基结合，比如甲基自由基结合为乙烷；自由基向烯烃加成，比如甲基自由基向乙烯加成成为丙基自由基；气相离子向中性分子加成，比如叔碳阳离子向丙烯加成。等等。</p>
<p>3.2 Hammond-Leffler假设<br>
过渡态在结构上一般会偏向反应物或者产物结构一边。Hammond-Leffler假设对预测过渡态结构往哪个方向偏是很有用的，意思是反应过程中，如果两个结构的能量差异不大，则它们的构型差异也不大。由此可知对于放热反应，因为过渡态能量与反应物差异小，与产物差异大，故过渡态结构更偏向反应物，相反，吸热反应的过渡态结构更偏向产物。所以初猜过渡态结构应考虑这一问题。</p>
<p>3.2 对称性问题<br>
如果已经明确地知道过渡态是什么对称性，而且对称性高于平衡态对称性，且可以确信在这个高对称性下过渡态是能量最低点，则可以强行限制到这个对称性之后进行几何优化，几何优化算法比寻找过渡态算法方法更可靠。比如F+CH3F--&gt;FCH3+F这个SN2反应，过渡态就是伞形翻转的一刻，恰为高对称性的D3h点群，而反应路径上的其它结构对称性都比它低，所以在D3h点群条件下优化，得到的能量最低点就是过渡态。</p>
<p>如果过渡态对称性不确定，则找过渡态计算的时候不宜设任何对称性，否则若默认保持了平衡态下的对称性，得到的此对称下的过渡态并不是真正的过渡态，容易得到二阶或高阶鞍点。</p>
<p>3.3 溶剂效应<br>
计算凝聚态条件下过渡态的性质，必须考虑溶剂效应，它明显改变了势能面。一般对过渡态的结构影响较小，但对能量影响很大。有时溶剂效应也会改变反应途径，或产生气相条件下没有的势垒。溶剂条件下，上述寻找过渡态的方法依然适用。应注意涉及到与溶剂产生氢键等强相互作用的情况，隐式溶剂模型是不适合的，需要用显式溶剂考察它对过渡态的影响，即在输入文件中明确表达出溶剂分子。</p>
<p>3.4 计算过渡态的建议流程<br>
直接用高水平方法计算过渡态往往比较花时间，可以使用逐渐提高方法等级的方法加速这一过程，一般建议是：<br>
1 执行低水平的计算找过渡态，如半经验。<br>
2 将第1步得到的过渡态作为初猜，用高级别的方法找过渡态。<br>
3 在相同水平下对上一步找到的过渡态做振动分析，检验是否仅有一个虚频，以及观看其振动模式的动画来考察振动方向是否连接反应物与产物结构。有必要时可以做IRC进一步检验。<br>
4 为获得更精确的过渡态能量，可使用更高等级方法比如含电子相关的方法计算能量。</p>
<p> </p>
<p>4.内禀反应坐标(intrinsic reaction coordinate,IRC)<br>
MEP指的是势能面上，由一个点到达另一个点的能量最低的路径，满足最小作用原理。若质量权重坐标下的MEP连接的是反应物、过渡结构和产物，则称为IRC。所谓质权坐标在笛卡儿坐标下即r(i,x)=sqrt(m(i))*R(i,x)，m(i)为i原子质量，R(i,x)为i原子原始x方向坐标，同样有r(i,y)、r(i,z)。IRC描述了原子核运动速度为无限小时，质权坐标下由过渡态沿着势能负梯度方向行进的路径（最陡下降路径），其中每一点的负梯度方向就是此处核的运动方向，在垂直于路径方向上是能量极小点。注意质量权重和非权重坐标下的路径是不一样的。</p>
<p>IRC可看作0K时的实际在化学反应中原子核所走的路径，温度较低时IRC也是一个很好的近似。但是当温度较高，即核动能较大时，实际反应路径将明显偏离IRC，而趋于沿最短路径变化，即便经历的是势能面上能量较高的的路径，这时就需要以动力学计算的平均轨迹来表征反应路径。</p>
<p><br>
5.IRC算法</p>
<p>5.1 最陡下降法(Steepest descent)<br>
最简单的获得IRC的方法就是固定步长的最陡下降法，由过渡态位置开始，每步沿着当前梯度方向行进一定距离直到反应物/产物位置，也称Euler法。由于最陡下降法及下文的IMK、GS等方法第一步需要梯度，而过渡态位置梯度为0，所以第一步移动的方向沿着虚频方向。最陡下降方法与IRC的本质相符，但是此法实际得到的路径是一条在真实IRC附近反复震荡的曲折路径，而非应有的平滑路径，对IRC描述不够精确。虽然可以通过更小的步长得以一定程度的解决，但是太花时间，对于复杂的反应机理，需要更多的点。也可以通过RK4(四阶Runga-Kutta)来走步，比上面的方法更稳定、准确，但每步要需要算四个梯度，比较费时。</p>
<p>5.2 IMK方法(Ishida-Morokuma-Kormornicki)<br>
它是最陡下降法的改进，解决其震荡问题。首先计算起始点X(k)的梯度g(k)，获得辅助点X'(k+1)=X(k)-g(k)*s，其中s为可调参数。然后计算此点梯度g'(k+1)，在g(k)与-g'(k+1)方向的平分线上（红线所示）进行线搜索，所得能量最小点即为X(k+1)，之后再将X(k+1)作为上述步骤的X(k)重复进行。整个过程类似先做最陡下降法，然后做校正。此方法仍然需要相对较小的步长，获得较精确IRC所需计算的点数较多。</p>
<p><img height="372" width="471" src="http://ojz2fg.blu.livefilestore.com/y1pDn53wEnmujMt0hnKXLvlru_GsTPl9gsAXHPga2SlcWwCy4iF0Dkw0WOX6CZupVrDvQvD_1gA18o0ig6siFT2vDC314RJMLl_/IMK.GIF"></p>
<p>[图12]IMK方法示意图</p>
<p>Schmidt，Gordon，Dupuis改进了IMK的三个细节，使之更有效率、更稳定。(1)将X'(k+1)的确定方式改为了X(k)-g(k)/|g(k)|*s，即每一步在负梯度方向上行进固定的s距离，与梯度大小不再有关。(2)线搜索步只需在平分线上额外计算一个点的能量即可，这个点和X'(k+1)点的能量以及g'(k+1)在此平分线上的投影三个条件作联立方程即可解出曲线方程，减少了计算量。IMK原始方法则需要在平分线上额外计算两个点的能量与X'(k+1)的能量一起拟和曲线方程。(3)第一步在过渡态位置的移动距离Δq如此确定：ΔE=k*(Δq^2)/2，k为虚频对应的力常数，ΔE为降低能量的期望值（一般为0.0005 hartree），这样可避免在虚频很大的鞍点处第一步位移使能量降低过多。</p>
<p>5.3 Müller-Brown方法<br>
这是通过球形限制性优化找IRC的方法。首先将过渡态和能量极小点位置定义为P1和P2，由P1开始步进，当前步结构以Q(n)表示。每一步，在相距Q(n)为r距离的超球面上用simplex法优化获得能量极小点Q'（图中绿点），优化的起始点是Q(n-1)Q(n)与Q(n)P2方向的平分线b上距Q(n)为r距离的位置S（红点）。若Q(n)Q'与Q(n)P2的夹角较小，则Q'可当作是下一步位置Q(n+1)。如此反复，直到符合停止标准，比如下一步能量比当前更高（已走过头了）、与P2距离已很近（如小于1.2r）、或者与P2方向偏离太大（P1与P2点通过此法无法找到IRC）。最终所得到全部结构点依次相连即为近似的IRC，减小步长r值可使结果更贴近实际IRC。基于此方法也可以用于寻找过渡态，先将反应物和产物作为P1和P2，将二者距离的约2/3作为r，由其中一点在P1-P2连线上相距其r位置为初始位置进行球形优化得到O点，在O与P1、O与P2上也如此获得P1'与P2'，根据P1、P1'、O、P2'、P2的能量及之间距离信息以一定规则确定其中哪两个点作为下一步的P1和P2，确定新的P1和P2后重复上述步骤，直至P1与P2十分接近，即是过渡态。此方法计算IRC可以步长可设得稍大，第一步不需要费时的Hessian矩阵确定移动方向，缺点是获得的路径曲率容易有问题，对于曲率较大的反应路径需要减小步长。</p>
<p><img height="297" width="512" src="http://ojz2fg.blu.livefilestore.com/y1psb84zPUvQv7GeuImyRQt7zWa-27YTrsqU_QVzOSfokuvAM5uY7Aad6wX0U39XCDywxHx5JdvLOEL31zZFbSAJd4-khrLQvA8/Muller-Brown-finding%20MEP.GIF"></p>
<p>[图13]Müller-Brown方法示意图</p>
<p>5.4 GS(Gonzalez-Schlegel)方法<br>
这是目前很常用，也是Gaussian使用的方法，见图14。首先计算起始点X(k)的梯度，沿其负方向行进s/2距离得到X'(k+1)点作为辅助点。在距X'(k+1)点距离为s/2的超球面上做限制性能量最小化，找到下一个点X(k+1)。因为这个点的负梯度（黑色箭头）在弧方向上分量为0，故垂直于弧，即其梯度方向在X'(k+1)到X(k+1)的直线上。这必然可以得到一段用于描述IRC的圆弧（虚线），它通过X(k)与X(K+1)点，且在此二点处圆弧的切线等于它们的梯度方向，这与IRC的特点一致，这段圆弧可以较好地（实线）。之后再将X(k+1)作为上述步骤的X(k)重复进行。</p>
<p>GS方法对IRC描述得比较精确，在研究反应过程等问题中，由于对中间体结构精度有要求，GS是很好的选择，而且用大步长可以得到与小步长相近的结果，优于IMK、Müller-Brown等方法。若只想得到与过渡态相连的反应物和产物结构，或者粗略验证预期的反应路径，对IRC精度要求不高，使用最陡下降法往往效率更高，尽管GS可以用更大步长，但每步更花时间。</p>
<p><img height="414" width="600" src="http://ojz2fg.blu.livefilestore.com/y1pYVrO972J8P4rX6zDHhqpu1nDxsh6L_LnfKd6qwJwQ6QToUrkYtHISgUFsWGugAr-7lR54vyxoJjzclnG3_f63r6a2-gWJRwP/GS.GIF"></p>
<p>[图14]GS方法示意图</p>
<p>除上述外，IRC也可以通过已提及的EF、最缓上升法、球形优化等方法得到，它们的好处是不需要事先知道过渡态的结构。赝坐标法除了简单的反应以外，只能得到近似的IRC，由于结构的较小偏差会带来能量的较大变化，容易引入滞后效应，所以这样得到的势能曲线难以说明问题。</p>
<p><br>
6. chain-of-states方法</p>
<p>这类方法主要好处是只需要提供反应物和产物结构就能得到准确的反应路径和过渡态。首先在二者结构之间以类似LST的方式线性、均匀地插入一批新的结构（使用内坐标更为适宜），一般为5~40个，每个结构就是势能面上的一个点(称为image)，并将相邻的点以某种势函数相连，这样它们在势能面上就如同组成了一条链子。对这些点在某些限制条件下优化后，在势能面上的分布描述的就是MEP，能量最高的结构就是近似的过渡态位置。</p>
<p>6.1 Drag method方法<br>
这个方法最简单，并不是严格的chain-of-states方法，因为每个结构点是独立的。插入的结构所代表的点均匀分布在图8所示的短虚线上，也可以在过渡态附近位置增加点的密度。每个点都在垂直于短虚线的超平面上优化，在图中就是指平行于长虚线方向优化。这种方法一般是奏效的，但也很容易失效，图8就是一例，优化后点的分布近似于从产物和反应物用最缓上升法得到的路径（黑色粗曲线），不仅反应路径错误，而且两段不连接，与黑色小点所示的真实MEP相距甚远（黑色点是用下文的NEB方法得到的）。目前基本不使用此方法。</p>
<p>6.2 PEB方法(plain elastic band)<br>
这是下述Chain-of-state方法的基本形式。也是在反应物到产物之间插入一系列结构，共插入P-1个，反应物编号为0，产编号物为P。不同的是优化不是对每个点孤立地优化，而是优化一个函数，每一步所有点一起运动。下文用∑[i=1,P]X(i)符号代表由X(1)开始加和直到X(P)。PEB函数是这样的：S(R(1),R(2)...R(P-1))=∑[i=1,P-1]V(R(i)) + ∑[i=1,P]( k/2*(R(i)-R(i-1))^2 )。其中R(i)代表第i个点的势能面上的坐标，V(R(i))是R(i)点的能量，k代表力常数。优化过程中反应物R(0)和产物R(P)结构保持不变，优化此函数相当于对一个N*(P-2)个原子的整体进行优化，N为体系原子数。</p>
<p>优化过程中，式中的第一项目的是让每个点尽量向着能量极小的位置移动。第二项相当于将相邻点之间用自然长度为0、力常数为k的弹簧势连了起来，目的是保持优化中相邻点之间距离均衡，避免过大。当只有第一项的时候，函数优化后结构点都会跑到作为能量极小点的反应物和产物位置上去而无法描述MEP，这时必然会有一对儿相邻结构点距离很大。当第二项出现后，由于此种情况下弹簧势能很高，在优化中不可能出现，从而避免了这个问题。drag method法在图8中失败的例子中，也有一对儿相邻结构点距离太远，所以也不会在PEB方法中出现。简单来说，PEB方法就是保持相邻结构点的间距尽量小的情况下，优化每个结构点位置。可以近似比喻成在势能面的模型上，将一串以弹簧相连的珠子，一边挂在反应物位置，另一边挂在产物位置，拉直之后松手，这串珠子受重力作用在模型上滚动，停下来后其形状可当作MEP，最高的位置近似为过渡态。</p>
<p>但是PEB方法的结果并不能很好描述MEP。图15描述的是常见的A、B、C三原子反应的LEPS势能面，B可与A或C成键，黑色弧线为NEB方法得到的较真实的MEP。左图中，在过渡态附近PEB的结构点没有贴近MEP，得到的过渡态能量过高，称为corner-cutting问题。这是因为每点间的弹簧势使这串珠子僵硬、不易弯曲，由图15右图可见，R(i)朝R(i-1)与R(i+1)方向都会受到弹簧拉力，其合力牵引R(i)，使R(i-1)、R(i)、R(i+1)的弧度有减小趋势。如果将弹簧力常数减小以减弱其效果，就会出现图15中间的情况，虽然结构点贴近了MEP，但相邻点间距没有得到保持，过渡态附近解析度很低，错过了真实过渡态，若以能量最高点作为过渡态则能量偏低，这称为sliding-down问题。可见弹簧力常数k的设定对PEB结果有很大影响，为权衡这两个问题只能取折中的k，但结果仍不准确。</p>
<p><img height="241" width="600" src="http://ojz2fg.blu.livefilestore.com/y1pb5DEY47rY07I17a-7uK3_WDtPvoFV7AcC56IB-xwYJxPhpHJV5RHRNkdn18YsTkhfuDAUha65LQTrPCr8g17_0lrmNbop9oP/LEPS.GIF"></p>
<p>[图15]LEPS势能面上不同k值的PEB结果</p>
<p>6.3 Elber-Karplus方法<br>
与PEB函数定义相似。第一项定义为1/L*∑[i=1,P-1]( V(R(i))*d(i,i-1) )，其中L为链子由0点到P-1点的总长，d(i,i+1)为R(i)与R(i+1)的距离，此项可视为所有插入点总能量除以点数，即插入点的平均能量。第二项为γ*∑[i=1,P](d(i,i-1)-&lt;d&gt;)^2，其中&lt;d&gt;代表相邻点的平均距离，是所有d(i,j)的RMS。此项相当于将弹簧自然长度设为了当前各个弹簧长度的平均值，由γ参数控制d(i,j)在平均值上下允许的波动的范围。此方法最初被用于研究蛋白质体系的构象变化。</p>
<p>6.4 SPW方法(Self-Penalty Walk)<br>
在Elber-Karplus方法的基础上增加了第三项互斥项，∑[i=0,P-1]∑[i=j+1,P-1]U(ij)，其中U(ij)=ρ*exp(-d(i,j)/(λ*&lt;d&gt;))，&lt;d&gt;定义同上。此项相当于全部点之间的&ldquo;非键作用能U(ij)&rdquo;之和，不再仅仅是相邻点之间才有限制势。任何点之间靠近都会造成能量升高，可以避免Elber-Karplus方法中出现的在能量极小点处结构点聚集、路径自身交错的问题，能够使路径充分地展开，确保过渡态区域有充足的采样点。式中ρ和λ都是可调参数来设定权重。此外相对与Elber-Karplus方法还考虑了笛卡儿坐标下投影掉整体运动的问题。</p>
<p>6.5 LUP方法(Locally Updated planes)<br>
特点是优化过程中，只允许每个结构点R(i)在垂直于R(i-1)R(i+1)向量的超平面上运动。由于每步优化后R(i-1)与R(i+1)连线方向也会变化，故每隔一定步数重新计算这些向量，重新确定每个点允许移动的超平面。但是LUP缺点是结构点之间没有以上述弹簧势函数相连来保持间隔，容易造成结构点在路径上分布不均匀，甚至不连续，还可能逐渐收敛至两端的极小点。</p>
<p>6.6 NEB方法(Nudged Elastic Band)<br>
NEB方法集合了LUP与PEB方法的优点，其函数形式基于PEB。从PEB方法的讨论可以看出，弹簧势是必须的，它平行于路径切线（R(i)-R(i-1)与R(i+1)-R(i)矢量和的方向）的分量保证结构点均匀分布在MEP上来描述它；但其垂直于路径的分量造成的弊端也很明显，它改变了这个方向的实际的势能面，优化后得到的MEP'就与真实的MEP发生了偏差，造成corner-cutting问题。解决这个问题很简单，在NEB中称为nudge过程，即每个点在平行于路径切线上的受力只等于弹簧力在这个方向分量，每个点在垂直于路径切线方向的受力只等于势能力在此方向上分量。这样弹簧力垂直于路径的分量就被投影掉了，而有用的平行于路径的分量完全保留；势能力在路径方向上的分量也不会再对结构点分布的均匀性产生影响，被保留的它在垂直于路径上的分量将会引导结构点地正确移动。这样优化收敛后结构点就能正确描述真实的MEP，矛盾得到解决。弹簧力常数的设定也比较随意，不会再对结果产生明显影响。但是当平行于路径方向能量变化较快，垂直方向回复力较小的情况，NEB得到的路径容易出现曲折，收敛也较慢，解决这一问题可以引入开关函数，即某点与两个相邻点之间形成的夹角越小，此点就引入更多的弹簧势垂直于路径的分量，使路径不易弯曲而变得光滑，但也会带来一定corner-cutting问题。也可以通过将路径切线定义为每个点指向能量更高的相邻点的方向来解决。</p>
<p>6.7 DNEB方法(Double Nudged Elastic Band)<br>
弹簧势垂直于路径的分量坏处是造成corner-cutting问题，好处是避免路径卷曲。更具体来说，前者是由于它平行于势能梯度方向的那个分量造成的，若只将这个分量投影掉，就可避免corner-cutting问题，而其余分量的力F(DNEB)仍可以避免路径卷曲，这便是DNEB的主要思想。故DNEB与NEB的不同点就是DNEB保留了弹簧势垂直于路径的分量其中的垂直于势能梯度的分量。</p>
<p>DNEB的这个设定却导致结构点不能精确收敛到MEP上。正确的MEP上的点在垂直于路径方向上受势能力一定为0，但是当用了DNEB方法后，若其中某一点处路径是弯曲的，即弹簧力在垂直于路径方向上有分量F'，而且此点势能梯度方向不垂直于此点处路径的切线，即F'不会被完全投影掉，F'力的分量F(DNEB)将继续带着这个点移动，也就是说结构点就不在正确的MEP上了。只有当结构点所处路径恰为直线，即F'为0则不会有此问题。为了解决此问题有人将开关函数加入到DNEB，称为swDNEB，当结果越接近收敛，即垂直于路径的势能力越小的时候，F(DNEB)也越小，以免它使结构点偏离正确MEP。一些研究表明DNEB和swDNEB相比NEB在收敛性（结构点受力最大值随步数降低速度）方面并没有明显提升，DNEB难以收敛到较高精度以内，容易一直震荡。</p>
<p>6.8 String方法<br>
与NEB对力的投影定义一致，但点之间没有弹簧势连接，保持点的间距的方法是每步优化后使这些点在路径上平均分布。</p>
<p>6.9 Simplified String方法<br>
String中计算每个点的切线并投影掉势能力平行于路径的分量的过程也去掉了，所有点之间用三次样条插值来表述路径，每一个点根据实际势能力运动后，在路径上重新均匀分布。优化方法最好结合RK4方法。NEB在点数较小的情况下比Simplified String方法能在更短时间内收敛到更高精度，但点数较多情况下则Simplified String更占优势。</p>
<p>6.10 寻找过渡态的chain-of-state方法</p>
<p>除非势能面对称且结构点数目为奇数，否则不会有结构点恰好落在过渡态。以能量最高的点作为过渡态只是近似的，为了更好地描述过渡态，可以增加结构点数，或者增加局部弹簧力常数，使过渡态附近点更密。根据已得到的点的能量，通过插值方法估算能量最高点是另一个办法。近似的过渡态也可以作为QN法的初猜寻找准确的过渡态。</p>
<p>6.10.1 CI-NEB方法<br>
NEB与String等方法都可以结合Climbing Image方法，它专门考虑到了定位过渡态问题。CI-NEB与NEB的关键区别是能量最高的点受力的定义，在CI-NEB中这个点不会受到相邻点的弹簧力，避免位置被拉离过渡态，而且将此点平行于路径方向的势能力分量的符号反转，促使此点沿着路径往能量升高的方向上爬到过渡态。这个方法只需要很少的点，比如包含初、末态总共5个甚至3个点就能准确定位过渡态，是最有效率的寻找过渡态的方法之一。如果还需要精确描述MEP，可以在此过渡态上使用Stepwise descent方法、最陡下降法、RK4等方法沿势能面下坡走出MEP，整个过程比直接使用很多点的NEB方法能在更短时间内得到更准确的MEP。</p>
<p>6.10.2 ANEBA方法(adaptive nudged elastic band approach)<br>
这个方法也是基于NEB，专用来快速寻找过渡态。一般想得到高精度的过渡态区域，NEB的链子上必须包含很多点，耗费计算时间。而ANEBA方法中链子两端的位置不是固定的，而是不断地将它们移动到离过渡态更近的位置，仅用很少几个点的链子就可以达到同样的精度。具体来说，设链子两端的点分别叫A点和B点（对于第一步就是反应物和产物位置），先照常做NEB，收敛至一定精度后（不需要精度太高），改变A和B的位置为链子中能量最高点相邻的两个点，然后再优化并收敛至一定精度，再如此改变A和B的位置，反复经历这一步骤，最终链子上能量最高点就是精确的过渡态。ANEBA相当于不断增加原先NEB链子的过渡态附近的点数，但实际上点数没有变。有研究表明ANEBA比CI-NEB效率更高，如果结合ANEBA与CI（称CI-ANEBA），即先用ANEBA方法经上述步骤移动几次A、B点，使之聚焦到过渡态附近，再用CI-NEB方法，效率可以进一步提高。</p>
<p><img height="506" width="415" src="http://ojz2fg.blu.livefilestore.com/y1p5pjyreAg9b9PW_7vdmN5Abxmdoq3lIaYg1la-zmUkSiCFAE1E67gVOz-V5GzLbrmSkinCyr6NCaJuJ9yXfaMbPWQMgXC5APi/ANEBA.GIF"></p>
<p>[图16]ANEBA方法示意图</p>
<p>6.11 chain-of-states方法的一些特点<br>
NEB方法的设定只是决定了每一步结构点实际感受到的势能面是怎么构成的，并没有指定优化方法。NEB可以结合一些常见的优化方法，比如最陡下降法、共轭梯度法、quick-min、FIRE、L-BFGS法等（没有线搜索步的全局L-BFGS法效率一般最高），但只能像前述寻找IRC方法一样得到一条路径。实际上很多情况反应的路径不止一条，尤其是势能面复杂的大分子构象转变过程。当NEB结合构象搜索方法，比如分子动力学、蒙特卡罗等方法时，就可以用于寻找多条反应路径。例如有几条反应路径，彼此间都有一定高度的势垒分隔，如果初始给出的路径在第i条附近，优化后只能收敛到第i条路径，若对每个点使用分子动力学方法，设定一定温度，则这些点有机会凭借动能越过势垒到达另外一条路径k附近，随后逐渐降温减小动能，相当于对它们进行最陡下降法优化，就找到了第k条路径，若如此反复多次，有可能找到更多路径。</p>
<p>这类chain-of-states方法的优点还在于易于实现，算法简单，只有能量和其一阶导数是必须要算的，随着体系尺度增大计算量的增加远比基于Hessian矩阵的方法要小。对于大体系储存Hessian并求逆亦是困难的，在某些情况下Hessian矩阵受计算能力制约只能在低水平方法下得到或者无法获得，chain-of-states方法避免了这个问题，很适合用于分子力学研究生物大分子的结构变化路径以及平面波基组下的DFT方法研究固体表面化学反应。此方法也容易并行化，例如可以每个节点负责优化其中一个或几个点，只有计算弹簧力时才需要从另外节点传入相邻结构点坐标，数据通信量小，并行效率高。</p>
<p>6.12 高斯中opt关键字的path=M方法<br>
与chain-of-states方法有一定类似之处，可以在一次计算中获得优化后的过渡态、产物、反应物以及用于描述IRC的中间点结构，总共M个点。此方法须结合QST2或QST3关键字。结合QST2时，除反应物和产物以外剩下的M-2个点在二者冗余内坐标下线性插值产生，结合QST3则是剩下的M-3个点在反应物与过渡态、过渡态与产物之间插值产生。之后迭代的每一步主要分为以下几个步骤：(1)初始输入的反应物、产物通过RFO法向最优构型优化。(2)能量最高的点q(k)（此点在第一步确定）通过EF法向过渡态优化，并设一段圆弧通过q(k-1)、q(k)、q(k+1)，此圆弧在q(i)处的切线作为EF方法选择所跟踪的本征向量的引导，类似于STQN步。(3)其余的点执行微迭代步骤（迭代内的迭代），其中包含类似于GS法的球面优化步骤以及调整间距步骤。可参考图14，优化其中任意点q(i)前，首先获得经过q(i-1)、q(i)并与q(i-1)的梯度相切的圆弧或曲线，将其在q(i)处的切线定义为T(i)，然后定义一个在q(i)处法线与T(i)平行、经过q(i-1)与q(i)的球面，使q(i)限制在此球面上优化。然后在这些点依次相连的路径上调整这些点的间距至平均，之后重复微迭代直至每一步力和位移都已收敛，或者有任何点位移超过了置信半径。(4)检查力和位移是否都已收敛至标准。这个方法比单独优化反应物、产物、过渡态并计算IRC省时间，而且对于难找的过渡态比STQN法更容易成功。</p>
<p>6.13 CPK方法(Conjugate Peak Refinement)<br>
在某种意义上称为动态的chain-of-states方法。每条链子只含一个可动点，链子数由最初的一条开始不断增加，对MEP的描述也越来越精确。CPK中的第一步类似LST，在连接反应物和产物的直线中找到能量最高点（称为Peak），然后沿着共轭方向优化得到中间点，对中间点与反应物、中间点与产物分别再做上述步骤，先找到最大点再共轭优化，如此反复直到收敛。最后将反应物、产物以及执行CPK过程中所有优化后的点相连，就得到了近似的反应路径。CPK方法所得的反应路径可以经过很多过渡态，很适合寻找一些涉及到复杂结构重排、包含甚至上百个过渡态的构象变化路径，如蛋白质局部折叠/去折叠过程。CPK方法缺点是实现起来相对复杂，定位过渡态较为费时。</p>
<p><img height="450" width="548" src="http://ojz2fg.blu.livefilestore.com/y1pRXucZ2H41hH-zVAPH4h3HBz88vXq89LsJ1FnV52BxzsnRhYXRmS728KDWO0eHjzWbn1eabt4jTbbeGbw6F7LKE3IfoXKtv_r/CPK.GIF"></p>
<p>[图17]CPK方法示意图</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/47cd7cd18fee62da572c841f.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-03  02:02</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/47cd7cd18fee62da572c841f.html</guid>
</item>

<item>
        <title><![CDATA[[原创]过渡态、反应路径的计算方法及相关问题I]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/e68d3cedf6441bddb31cb11f.html]]></link>
        <description><![CDATA[
		
		<p>PS：本文是我写过的最耗时（24天）、字数最多（两万五千余字）、最辛苦的帖子。</p>
<p>图片较多，不知什么时候图片会都变成红叉，重新贴太麻烦，所以图片全都打包，若看不见图片请下载图片包：<a href="http://www.brsbox.com/filebox/down/fc/5678ba823274826535f67b0b98ec6fc0">http://www.brsbox.com/filebox/down/fc/5678ba823274826535f67b0b98ec6fc0</a></p>
<p> </p>
<p align="center"> </p>
<p align="center"> </p>
<p align="center"><font size="4"><strong>过渡态、反应路径的计算方法及相关问题</strong></font></p>
<p align="center"><strong><font size="4">Sobereva</font></strong><strong><br>
</strong>Department of Chemistry, University of Science and Technology Beijing, Beijing 100083, China</p>
<p> </p>
<p>前言：本文主要介绍过渡态、反应路径的计算方法，并讨论相关问题。由于这类算法极多，可以互相组合，限于精力不可能面面俱到展开，所以只介绍常用，或者实用价值有限但有启发性的方法。文中图片来自相关文献，做了一定修改。由于本文作为帖子发布，文中无法插入复杂公式，故文中尽量将公式转化为文字描述并加以解释，这样必然不如公式形式严谨，而且过于复杂的公式只能略过，但我想这样做的好处是更易把握方法的梗概，有兴趣可以进一步阅读原文了解细节。对于Gaussian中可以实现的方法，文中对其在Gaussian中的使用进行了一些讨论，希望能纠正一些网上流传的误区。虽然绝大多数人不专门研究计算方法，其中很多方法也不会用到，但多了解一下对开阔思路是很有好处的。</p>
<p>文中指的&ldquo;反应&rdquo;包括构象变化、异构化、单分子反应等任何涉及到过渡态的变化过程。&ldquo;反应物&rdquo;与&ldquo;产物&rdquo;泛指这些过程的初态和末态。&ldquo;优化&rdquo;若未注明，包括优化至极小点和优化至过渡态。势能面是高维的，但为了直观以及表述方便，文中一般用二维势能面模型来讨论，应推广至高维情况。限于纯文本格式，向量、矩阵无法加粗表示，但容易自行判断。</p>
<p><br>
目录：</p>
<p>1.过渡态<br>
2.过渡态搜索算法<br>
2.1 基于初猜结构的算法<br>
2.1.1 牛顿-拉弗森法(Newton-Raphson,NR)与准牛顿法(quasi-Newton,QN)<br>
2.1.2 AH方法(augmented Hessian)<br>
2.1.2.1 RFO法(Rational Function Optimization，有理函数优化)<br>
2.1.2.2 P-RFO法(Partitioned-RFO)<br>
2.1.2.3 QA法(Quadratic Approximation，二次逼近)<br>
2.1.2.4 TRIM法(trust-region image minimization，置信区域镜像最小化)<br>
2.1.2.5 在高斯中的常见问题<br>
2.1.3 GDIIS法(Geometry Direct Inversion in the Iterative Subspace)<br>
2.1.4 梯度模优化(gradient norm minimization)<br>
2.1.5 Dimer方法<br>
2.2 基于反应物与产物结构的算法<br>
2.2.1 同步转变方法(synchronous transit,ST)<br>
2.2.2 STQN方法(Combined Synchronous Transit and Quasi-Newton Methods)<br>
2.2.3 赝坐标法(pseudo reaction coordinate)<br>
2.2.4 DHS方法(Dewar-Healy-Stewart，亦称Saddle方法)与LTP方法(Line-Then-Plane)<br>
2.2.5 Ridge方法<br>
2.2.6 Step-and-Slide方法<br>
2.2.7 Müller-Brown方法<br>
2.2.8 CI-NEB、ANEBA方法<br>
2.3 基于反应物结构的算法<br>
2.3.1 最缓上升法(least steep ascent,shallowest ascent)<br>
2.3.2 本征向量/本征值跟踪法(eigenvector/eigenvalue following,EF。也称mode walking/mode following/Walking up valleys)<br>
2.3.3 ARTn(activation-relaxation technique nouveau)<br>
2.3.4 梯度极值法(Gradient extremal,GE)<br>
2.3.5 约化梯度跟踪(reduced gradient following,RGF)<br>
2.3.6 等势面搜索法(Isopotenial Searching)<br>
2.3.7 球形优化(Sphere optimization)<br>
2.4 全势能面扫描<br>
3.过渡态相关问题<br>
3.1 无过渡态的反应途径(barrierless reaction pathways)<br>
3.2 Hammond-Leffler假设<br>
3.2 对称性问题<br>
3.3 溶剂效应<br>
3.4 计算过渡态的建议流程<br>
4.内禀反应坐标(intrinsic reaction coordinate,IRC)<br>
5.IRC算法<br>
5.1 最陡下降法(Steepest descent)<br>
5.2 IMK方法(Ishida-Morokuma-Kormornicki)<br>
5.3 Müller-Brown方法<br>
5.4 GS(Gonzalez-Schlegel)方法<br>
6.chain-of-states方法<br>
6.1 Drag method方法<br>
6.2 PEB方法(plain elastic band)<br>
6.3 Elber-Karplus方法<br>
6.4 SPW方法(Self-Penalty Walk)<br>
6.5 LUP方法(Locally Updated planes)<br>
6.6 NEB方法(Nudged Elastic Band)<br>
6.7 DNEB方法(Double Nudged Elastic Band)<br>
6.8 String方法<br>
6.9 Simplified String方法<br>
6.10 寻找过渡态的chain-of-state方法<br>
6.10.1 CI-NEB方法<br>
6.10.2 ANEBA方法(adaptive nudged elastic band approach)<br>
6.11 chain-of-states方法的一些特点<br>
6.12 高斯中opt关键字的path=M方法<br>
6.13 CPK方法(Conjugate Peak Refinement)</p>
<p><br>
1.过渡态</p>
<p>过渡态结构指的是势能面上反应路径上的能量最高点，它通过最小能量路径(minimum energy path,MEP)连接着反应物和产物的结构（如果是多步反应的机理，则这里所指反应物或产物包括中间体）。对于多分子之间的反应，更确切来讲过渡态结构连接的是它们由无穷远接近后因为范德华力和静电力形成的复合物结构，以及反应完毕但尚未无限远离时的复合物结构。确定过渡态有助于了解反应机理，以及通过势垒高度计算反应速率。一般来讲，势垒小于21kcal/mol就可以在室温下发生。</p>
<p>在势能面上，过渡态结构的能量对坐标的一阶导数为0，只有在反应坐标方向上曲率（对坐标二阶导数）为负，而其它方向上皆为正，是能量面上的一阶鞍点。过渡态结构的能量二阶导数矩阵（Hessian矩阵）的本征值仅有一个负值，这个负值也就是过渡态拥有唯一虚频的来源。若将分子振动简化成谐振子模型，这个负值便是频率公式中的力常数，开根号后即得虚数。</p>
<p>分子构象转变、化学反应过程中往往都有过渡态的存在，即这个过程在势能面上的运动往往都会经历满足上述条件的一点。化学反应的过渡态更确切应当成为&ldquo;反应过渡态&rdquo;。需要注意的是化学反应未必都经历过渡态结构。</p>
<p>由于过渡态结构存在时间极短，所以很难通过实验方法获得，直到飞秒脉冲激光光谱的出现才使检验反应机理为可能。计算化学方法在目前是预测过渡态的最有力武器，尽管计算上仍有一些困难，比如其附近势能面相对于平衡结构更为平坦得多、低水平方法难以准确描述、难以预测过渡态结构、缺乏绝对可靠的方法（如优化到能量极小点可用的最陡下降法）等。</p>
<p>搜索过渡态的算法一般结合从头算、DFT方法，在半经验、或者小基组条件下，难以像描述平衡结构一样正确描述过渡态结构，使得计算尺度受到了限制。结合分子力场可以描述构象变化的过渡态，但不适用描述反应过渡态，因为大部分分子力场的势函数不允许分子拓扑结构的改变，虽然也有一些力场如ReaxFF可以支持，有的力场还有对应的过渡态原子类型，但目前来看适用面仍然较窄，而且不够精确，尽管更为快速。</p>
<p>注：严格来说，&ldquo;过渡结构&rdquo;是指势能面上反应路径上的能量最高点，而&ldquo;过渡态&rdquo;是指自由能面上反应路径上的能量最高点，由于自由能变主要贡献自势能部分，所以多数情况二者结构近似一致。但随着温度升高，往往熵变的贡献导致自由能面与势能面形状发生明显偏离，从而导致过渡结构与过渡态明显偏离，两个词就不能混用了。但本文不涉及相关问题，故文中过渡态、过渡结构一律指势能面上反应路径上的能量最高点。</p>
<p>2.过渡态搜索算法</p>
<p>2.1 基于初猜结构的算法</p>
<p>2.1.1 牛顿-拉弗森法(Newton-Raphson,NR)与准牛顿法(quasi-Newton,QN)<br>
NR法是寻找函数一阶导数为0（驻点）位置的方法。通过对能量函数的泰勒级数的二阶近似展开，然后使用稳态条件dE/dr=0，可导出步进公式：下一步的坐标向量 = 当前坐标向量 - 能量一阶导数向量 * Hessian矩阵的逆矩阵。在势能面上以NR法最终找到的结果是与初猜位置Hessian矩阵本征值正负号一致、离初猜结构最近的驻点，由于能量极小点、过渡态和高阶鞍点的能量一阶导数皆为0，故都可以用NR法寻找。</p>
<p>对于纯二次形函数NR法仅需一步即可找到正确位置，而势能面远比之复杂，所以需要反复走步直至收敛。也因为势能面这个特点，为了改进优化，实际应用中NR法一般还结合线搜索步(line search)，对于优化至极小点，就是找当前点与NR法算出来的下一点的连线上的能量极小点作为实际下一步结构；若优化至过渡态，且连线方向主要指向过渡态，则找的是连线上能量极大点，若主要指向其它方向则找连线的能量极小点，若指向二者程度均等则一般不做线搜索。由于精确的线搜索很花时间，所以一般只是在连线的当前位置附近计算几个点的能量，以高阶多项式拟和后取其最小/最大点。</p>
<p>NR法每一步需要计算Hessian矩阵并且求其逆，所以十分昂贵。QN法与NR法的走步原理一样，但Hessian矩阵最初是用低级或经验方法猜出来的，每一步优化中通过当前及前一步的梯度和坐标对Hessian矩阵逆矩阵逐渐修正。由于只需计算一阶导数，即便Hessian矩阵不准确造成所需收敛步数增加，但一般仍比NR法速度快得多。QN法泛指基于此原理的一类方法，常用的是BFGS(Broyden Fletcher Goldfarb Shanno)，此法对Hessian的修正保持其对称性和正定性，最适合几何优化，但显然不能用于找过渡态。还有DFP(Davidon-Fletcher-Powell)，MS(Murtagh-Sargent，亦称symmetric rank 1，SR1)，PSB(Powell-symmetric-Broyden)。也有混合方法，如Bofill法是PSB和MS法对Hessian修正量的权重线性组合，比二者独立使用更优，权重系数通过位移、梯度改变量和当前Hessian计算得到，它对Hessian的修正不强制正定，很适宜搜索过渡态。</p>
<p>将NR步进公式放到Hessian本征向量空间下其意义更为明显（此时Hessian为对角矩阵），可看出在每个方向上的位移就是这个方向势能的负梯度除以对应的本征值，比如在i方向上的位移可写为ΔX(i)=-g(i)/h(i)，在受力越大、越平坦的方向位移越大。每一步实际位移就是这些方向上位移的矢量和。对于寻找过渡态，因为虚频方向对应Hessian本征值为负，使位移为受力相反方向，所以NR法在过渡态附近每一步都是使虚频方向能量升高，而在其它正交的方向朝着能量降低的方向位移，通过这个原理步进到过渡态。若有n个虚频，则NR法就在n个方向升高能量而其它方向降低能量找到n阶鞍点。</p>
<p>由于NR法的这个特点，为找到正确类型的驻点，初猜结构必须在目标结构的二次区域(quadratic region)内。所谓的二次区域，是指驻点附近保持Hessian矩阵本征值符号不变的区域，它的形状可以用多变量的二次函数近似描述，例如二维势能面情况下这样的区域可以用F(x,y)=A*x^2+B*y^2+C*x+D*y+E*x*y来近似描述。对于能量极小点，就是指初猜点在目标结构附近Hessian矩阵为正定矩阵的范围；对于找过渡态，就需要初猜点在它附近含有且仅含有一个负本征值的范围内。并且这个范围内不能有其它同类驻点比目标结构距离初猜结构更近。NR法方便之处是只需要提供一个初猜结构即可，但是由于过渡态二次区域很小（相对于能量极小点来讲），复杂反应过渡态又不容易估计，故对使用者的直觉和经验有一定要求，即便是老手，也往往需要反复尝试。</p>
<p>NR法对初猜结构比较敏感，离过渡态越近所需收敛步数越少，成功机率越高。模版法可以帮助给出合理的初猜，也就是如果已经知道其它机理相同的反应的过渡态结构，可以保持反应位点部分的结构不变而替换周围的原子，使之变成自己要研究的化合物反应的初猜结构。</p>
<p>2.1.2 AH方法(Augmented Hessian)<br>
AH方法并不是独立的寻找过渡态的方法，而是通过修改原始Hessian矩阵来调整NR法步进的长度和方向的一种方法。在NR法的步进公式中加入了一个移位参数λ，式子变为ΔX(i,λ)=-g(i)/(h(i)-λ)，NR法相当于λ等于0时的特例。λ控制着每步步进距离，它与h(i)的相对大小也控制着这个坐标上的步进方向。根据设定λ方法的不同，常见的有RFO、P-RFO和QA/TRIM。这些方法每一步也使用QN方法来快速地更新Hessian。</p>
<p>下面提及的置信半径R(Trust radius)是指二阶泰勒级数展开这种近似的合理的区域，可以在优化过程中固定也可以动态改变，比如下一步位置的实际能量与使用二阶泰勒级数展开预测的能量符合较好则加大R，反之减小。优化的每一步移动距离不应超过R，否则可能进入二阶泰勒级数展开近似的失效区域，NR法在势能面平坦的时候容易超过这个范围，应调整λ避免。</p>
<p>2.1.2.1 RFO法(Rational Function Optimization，有理函数优化)<br>
对能量函数根据有理近似展开，而不是NR法的二阶泰勒级数近似展开，可推得与AH方法形式相同的步进公式。确定其中λ的公式是λ=∑( g(i)^2/(h(i)-λ) )，g(i)和h(i)代表此方向的梯度和本征值，加和是对所有本征向量方向加和。通过迭代方法会解出N+1个λ（N代表势能面维数），将λ按大小排列，则有λ(i)≤h(i)≤λ(i+1)。故选其中最小的λ可使各个方向位移公式的(h(i)-λ)项皆为正，保证每步位移都向着极小点。选其中大于m个Hessian本征值的λ，将会在本征值最低的m个方向上沿其上的受力反方向位移提升能量，在其余N-m个方向上降低能量，由此确保优化到m阶鞍点，若m为1即用来找过渡态。所以用了这个方法寻找指定类型驻点不再像NR法对初猜位置Hessian本征值符号有要求，而是直接通过选择λ来设定向着何种鞍点位移。如果每步步长度超过了R，则乘以一个小于1的因子来减小步长。值得一提的是，λ与势能面维数N的平方根近似成正比，随着体系尺度的增大，RFO的λ对NR法的二次近似就会趋现&ldquo;校正过度&rdquo;情况，产生大小不一致问题，可使用SIRFO(Size independent RFO)方法解决，即AH走步公式中的λ改为λ/N^0.5。</p>
<p>2.1.2.2 P-RFO法(Partitioned-RFO)<br>
专用于优化过渡态，效率比RFO更高。RFO对所有方向的步进都使用同一个λ，而在P-RFO中在指向过渡态的方向使用独立计算的λ(TS)，λ(TS)=g(TS)^2/(h(TS)-λ(TS))，应选这个一元二次方程的最大的解，可保证在这个方向上升高能量。其余方向λ的确定和RFO的公式一样，加和就不再包含指向过渡态的方向，并且选最小的λ解以使这些方向能量降低。这里所谓指向过渡态的方向一般是指最低本征值的方向，在上述RFO方法m为1时也是如此假设（限于其形式RFO也只能用这最低模式），但有时会是其它的非最低的模式，P-RFO也可以将这样的模式作为指向过渡态的模式，见后文EF方法的讨论。</p>
<p>2.1.2.3 QA法(Quadratic Approximation，二次逼近)<br>
确定λ的公式是(ΔX(i))^2=∑( -g(i)/(h(i)-λ) )^2=R^2，也就是说每一步移动的距离恰好是置信半径，这样步进速度较快。若优化到过渡态，计算λ公式的加和中指向过渡态本征向量的那一项的λ改为-λ，即ΔX(TS)=-g(TS)/(h(TS)+λ)。</p>
<p>2.1.2.4 TRIM法(trust-region image minimization，置信区域镜像最小化)<br>
这个方法假设Hessian本征值最小的方向的梯度和曲率符号与原本相反，而其它方向不变。经过这样的变化后原来的过渡态位置就成为了能量极小点(过渡态的image)，这样就可以通过优化到极小点而得到过渡态。将TRIM的假设g(TS)'=-g(TS)，h(TS)'=-h(TS)代入AH方法的步进公式ΔX(i,λ)=-g(i)/(h(i)-λ)，再使分子分母同乘以-1，可知在过渡态方向上的步进公式与其它方向区别仅在于反转了λ的符号。又由于TRIM也是通过调整λ使步进长度等于为置信半径，所以在公式的形式上与QA法找过渡态的公式完全一致，QA与TRIM可互为同义词。</p>
<p>通过如上调整AH方法引入的λ可使NR法的步进更有效率、更稳定，还可以通过它改变步进公式在不同方向上的分母项符号，使优化过渡态的初猜点不限于过渡态的二次区域。可直接指定沿某个振动模式升高能量来找过渡态，即便当前点这个方向的Hessian本征值可能是正值，例如从极小点开始跟踪至过渡态，见后文的EF方法。</p>
<p>2.1.2.5 在高斯中的常见问题<br>
高斯中opt=ts是使用Berny算法来找过渡态，需要提供一个初猜结构。Berny默认的走步的方法是RFO/P-RFO(分别对于优化至极小值/鞍点），若加了Newton选项，则走步基于NR法。每一步对Hessian矩阵的更新方法以UpdateMethod选项指定，寻找极小点时默认用BFGS，找过渡态时默认用Bofill。Berny算法还包括一些细节步骤在内，比如投影掉被冻结的变量、更新置信半径、设定了线搜索过程中几种方案等等，详见手册opt关键字。</p>
<p>使用了每步修正Hessian的准牛顿法后，初猜的Hessian矩阵质量明显影响结构收敛速度，它的不准确容易导致搜索过渡态失败（在高斯中默认使用价键力场得到Hessian）。这种情况需要昂贵的calcfc关键字以当前方法水平计算最初的Hessian矩阵，若使用的方法在程序中支持解析二阶导数，速度会较好。或者用readfc来读取包含了Hessian矩阵信息的chk文件，可以先使用低水平方法进行简正振动分析得到chk文件，再将之读入作为Hessian矩阵初猜，能够节约时间，但前提是此势能面对方法等级不敏感（一般如此）。使用了更准确的初猜后不仅可以增加找到过渡态的成功机率，还有助于在更短的优化步数内达到收敛标准。若使用calcall，则每一点都重新准确计算Hession，会更为可靠，但极为昂贵。</p>
<p>高斯中berny方法寻找过渡态默认每步会检查Hessian矩阵的本征值是否仅有一个为负，如果不符，就会提示&ldquo;a wrong sign eigenvalue in hessian matrix&rdquo;，经常一开始就报错，原因是初猜结构不符合这个条件，即便这个初猜通过berny方法最终能够正确优化到过渡态，这时应加noeigentest选项避免本征值符号的检查，不符合要求也继续优化，但因此可能收敛到其它类型驻点。有时这种情况由初猜的Hessian不准导致，可用calcfc解决。如果搜索的过渡态出现多个负本征值，可根据适当的虚频（高斯中以负数频率表示）振动方向调整结构以降低能量，直至剩下一个虚频，再重新优化。</p>
<p>高斯中默认的置信半径为0.3 bohr，若优化中步长（RFO/P-RFO步）超过就会输出&ldquo;Maximum step size (&nbsp;&nbsp;  0.300) exceeded in Quadratic search&rdquo;和&ldquo;Step size scaled by xxx&rdquo;，即乘以xxx调小步长至置信半径内。也可以使用iop(1/8=k)将置信半径改为k*0.01 bohr(1 bohr=0.5292埃)，调大后往往可以显著减少收敛步数，很适合势能面平坦的大体系。注意并不是每一步的步长都固定为k*0.01 bohr，若没超过置信半径则步长并不因此改变。寻找极小点时默认为允许动态改变置信半径，此时iop(1/8)设的就是最初的置信半径，对于寻找过渡态默认为关闭此功能（相当于用了NoTrustUpdate），可以使用trustupdate关键字来打开这个功能。</p>
<p>2.1.3 GDIIS法(Geometry Direct Inversion in the Iterative Subspace)<br>
GDIIS与DIIS原理一致，但用于几何优化，这个方法趋于收敛到离初始位置最近的驻点，包括过渡态。下一步坐标X(new)=X&quot;-H'g&quot;，H'代表当前步的Hessian逆矩阵，可见公式形式与NR法是一致的，但是X&quot;与g&quot;不再指当前步的坐标和梯度，而是由之前走过的点的坐标X(k)和梯度g(k)插值得到的，X&quot;=∑c(k)X(k)，g&quot;=∑c(k)g(k)，代入上式即X(new)=∑c(i)(X(i)-H'g(i))，其中∑是对之前全部走过的点加和。系数c(k)通过使误差向量r的模最小化得到，r=∑c(k)e(k)，并以∑c(k)=1为限制条件。e(k)常见有两种定义，一种是e(k)=-H'g(k)，另一种更常用，是e(k)=g(k)，可看出GDIIS利用的是已经搜索过的子空间中坐标与梯度的相关性，目的是估出梯度（即误差向量）的模尽可能小的坐标，这一点与后述的梯度模方法相似。</p>
<p>此方法缺点是由于势能面复杂，步进中容易被拉到已经过的势能面的其它驻点而不能到达指定类型驻点，还容易走到类似肩膀形状的拐点，梯度虽小却不为0，由于不能达到收敛标准而反复在此处震荡。另外随优化步数增加，误差向量数目逐渐加大，会逐渐出现的误差向量之间的线性相关，导致伪收敛和数值不稳定问题。在改进的方法中将GDIIS与更可靠的RFO方法结合，比较二者的步进方向和长度，并检验GDIIS中的组合系数c，根据一定规则来决定每一步对之前走过的点的保留方式，必要时全部舍去而重新开始GDIIS。Gaussian中用的这种改进的GDIIS方法解决了上述问题同时提高了效率，速度等于或优于RFO方法，尤其是以低水平对势能面平坦的大体系优化时更为突出。GDIIS计算量小，对Hessian矩阵很不敏感，可以在优化中不更新，也可以用QN法更新来改善性能。此方法自Gaussian98起就是默认的半经验优化算法，其它方法下也可以用OPT的gdiis关键词打开。</p>
<p>2.1.4 梯度模优化(gradient norm minimization)<br>
势能面上的驻点，包括能量极小点、过渡态和高阶鞍点的势能梯度都为0，所以在相应于势能面的梯度模面上进行优化找到数值为0的点，经过Hessian矩阵本征值符号的检验，就能得到过渡态。这相当于把搜索过渡态问题转化为了能量极小化问题，就有了更可靠的算法可用。（注：梯度模指的是势能梯度在各个维度分量平方和的平方根，即梯度大小的绝对值）。但是寻找数值更小点的优化方法比如最陡下降法只能找到离初始位置最近的极小点，若找到的梯度模面上的极小点数值大于0则是势能面肩膀形拐点，没有什么用处，而这样的点收敛半径往往很大，例如图中在x=2至8的区域内都会收敛到函数拐点，只有提供的初猜结构在x=1和9附近很小的范围内才会收敛到过渡态，收敛半径太小，难以提供合理初猜。梯度模面上还多出一些极大点，如x=1.5处，若使用收敛更快的NR法找极小点还容易收敛到这样没有意义的点上。基于这些原因，梯度模法很少使用。</p>
<p><img height="289" width="454" src="http://ojz2fg.blu.livefilestore.com/y1p-YPkuPZP-2eD5Kb-q8feAJPdAhtmZ9cac4W_fNJUcm0ECZzqzMHJtT-RnpXZQLrdxREqGmr9pKMZReswjCRrwqXEyQ2uNPFR/gradient%20norm.GIF"></p>
<p>[图1]原函数与它的梯度模曲线。</p>
<p>2.1.5 Dimer方法<br>
Dimer方法是一种高效的定位过渡态的方法。这个方法定义了由两个点R1和R2组成的一个Dimer，能量和所受势能力（由原始的势能面梯度造成受力，下同）分别为E1和E2、F1和F2。两个点间距为2ΔR，ΔR为定值。这两点的中间点为R，其受力F(R)=(F1+F2)/2。Dimer的总能量为E=(E1+E2)/2。这个方法的每一步包括平移Dimer和旋转Dimer两步。</p>
<p>旋转Dimer：保持R1、R2中点位置R不变作为轴，旋转Dimer直到总能量E最小。通过推导可知在旋转过程中，E与R点在dimer方向（R1-R2方向）上的曲率关系C是线性的，即最小化E的过程就是最小化C的过程。所以每一步的Dimer方向都是曲率最小方向，当最终R收敛到过渡态位置时，Dimer就会平行于虚频方向。</p>
<p>平移Dimer：Dimer根据受力F'移动R的位置，结合不同方法有具体步进方式，如quick-win、共轭梯度法。当C&lt;0（过渡态或高阶鞍点的二次区域内），F'等于将F(R)平行于Dimer方向力的分量符号反转；当C&gt;0（极小点二次区域内），F'等于F(R)平行于Dimer方向力的分量的负值，而没有垂直于Dimer方向的力，促使Dimer尽快离开这个区域。由于Dimer的方向就是曲率最小的方向，在过渡态二次区域内就是指虚频方向，在Dimer方法中F'的定义使这个方向以受力相反方向移动以升高能量，而其它方向顺着受力方向移动来最小化能量，可看出原理上与NR法相似。费时的计算Hessian矩阵最小本征值以确定提升能量方向的过程被旋转Dimer这一步代替了，仅需要计算一阶导数。Dimer法对初始位置要求很宽松，并不需要在过渡态二次区域内，若在极小点二次区域内就类似于后述的EF方法沿着最小振动模式爬坡。如果在高阶鞍点二次区域内，只在曲率最负的虚频方向沿着受力反向移动，在其它虚频方向上仍最小化能量，而不会像NR法收敛到高阶鞍点。</p>
<p><img height="247" width="600" src="http://ojz2fg.blu.livefilestore.com/y1pZbaKOTc-sfoHesLfvCwnP6RnbFauRNSYmScQzVtWxMiRUnOukhcUrxTHmIGm5_HZRYjTIPPoCJPwS9aIGlsOiqDZkXi-Ckpl/Dimer.GIF"></p>
<p>[图2]右侧为Dimer法在Müller-Brown模型势上面搜索两个过渡态过程中Dimer走的路径。</p>
<p>势能面上往往有许多鞍点，Dimer方法还可以做鞍点搜索。通过分子动力学方法给予Dimer一定动能，使之能够在势能面上广阔的区域内运动，根据一定标准提取轨迹中的一些点作为初猜，再执行标准Dimer方法就可以得到许多不同的鞍点。Dimer方法很适合双处理器并行，两个点的受力分别由两个处理器负责，速度可增加将近一倍。</p>
<p><br>
2.2基于反应物与产物结构的算法</p>
<p>2.2.1 同步转变方法(synchronous transit,ST)<br>
提供合理的初猜结构往往不易，ST方法可以只根据反应物和产物结构自动得到过渡态结构。&ldquo;同步转变&rdquo;这个名字强调的是反应路径上所有坐标一起变化，这是相对于后面提到的赝坐标法来说的（即只变化指定的坐标，尽管其它坐标优化后坐标也会变化）。</p>
<p>ST分为两种模型，最简单的就是LST模型(Linear synchronous transit,线性同步转变)，这个方法假设反应过程中，反应物结构的每个坐标都是同步、线性地变化到产物结构。如果反应物、产物的坐标分别以向量A、B表示，则反应过程中的结构坐标可表示为(1-x)*A+x*B，x由0逐渐变到1代表反应进度。注意LST并不是指反应中原子在真实空间上以直线运动，只有笛卡尔坐标下的LST才是如此，在内坐标下的LST，原子在真实空间中一般以弧线运动。以LST的假设，反应路径在其所用坐标下的势能面图上可描述为一条直线，LST给出的过渡态就是这条直线上能量最高点（图3的点1）。LST的问题也很显著，其假设的坐标线性变化多数是错误的，绘制在势能面图上也多数不会是直线，故给出的过渡态也有较大偏差，容易带两个或多个虚频。</p>
<p>比LST更合理的是QST(quadratic synchronous transit,二次同步转变)，它假设反应路径在势能面上是一条二次曲线。QST在LST得到的过渡态位置上，对LST直线路径的垂直方向进行线搜索找到能量极小点A（图3的点2）。QST给出的反应路径可以用经过反应物、A、产物的二次曲线来表示，如果这条路径上能量最大点的位置恰为A，则A就是QST方法给出的过渡态；如果不是，则以最大点作为过渡态。若想结果更精确，可以再对这个最大点向垂直于路径的方向优化，再次得到A并检验，反复重复这个步骤，逐步找到能量更低、更准确的过渡态。</p>
<p>QST方法在计算能力较低的年代曾是简单快速的获得过渡态和反应路径的方法，然而如今看来其结果是相当粗糙的，已极少单独使用，可以将其得到的过渡态作为AH法的初猜。</p>
<p><img height="441" width="600" src="http://ojz2fg.blu.livefilestore.com/y1pGh3PtVqznw7IYZ2_VA1jSkQ1eqe9EG7ru_fIsw84X8mgtSTXFofbh5I1DN8fWXW8uVnFtx7kI5w9iw_DwR6X96BgoiMTSMtZ/ST.GIF"></p>
<p>[图3]LST与QST方法示意图</p>
<p>2.2.2 STQN方法(Combined Synchronous Transit and Quasi-Newton Methods)<br>
STQN是ST与QN方法的结合（更准确地说是与EF法的结合）。但不要简单认为是按顺序独立执行这两步，即认为&ldquo;先利用反应物和产物结构以ST方法得到粗糙过渡态，再以之作为初猜用QN法精确寻找过渡态&rdquo;是错误的。STQN方法大意是：使结构从低能量的反应物出发，以ST路径在当前位置切线为引导，沿着LST或QST假设的反应路径行进（爬坡步），目的是使结构到达假设路径的能量最高处附近（真实过渡态二次区域附近）。当符合一定判据时就转换为QN法寻找精确过渡态位置（EF步）。下面介绍具体步骤。</p>
<p>先说明后面用到的切线的定义：STQN当中的LST路径与前面ST部分介绍的LST路径无异，都是直线，切线T在优化中是不变的，就是反应物R指向产物P的单位向量。STQN方法中的QST路径定义与ST方法介绍的不同，走的不是二次曲线而是圆形的一段弧，如图4所示。这个圆弧经过R、P以及优化中的当前步位置X，切线就是圆在X处的单位切线向量，圆弧和切线在每一步都是变化的。虽然QST路径比LST更为合理，但对于QSTN方法，QST路径在收敛速度和成功机率上的优势并不显著。</p>
<p><img height="274" width="248" src="http://ojz2fg.blu.livefilestore.com/y1pxYNuUzHO1VAqmnbnkn98AgIziTyJNC4jsZN5QHUu937mz2-0I2cD4u0t65qT_m33GaOXpekydHFMW0d-QmDU7C3a1eSZ0D7u/STQN.GIF"></p>
<p>[图4]STQN对QST路径的定义</p>
<p>STQN每一步执行内容如下：(1)首先重新计算或用QN法更新Hessian。(2)按上述方法计算当前位置处的切线。(3)决定这一步是爬坡步还是EF步。如果是优化的第前两步，则一定认为是爬坡步，因为此时离过渡态区域还较远，应当先爬坡。如果是第3、4步，则估算出在切线方向的位移，超过一定标准就是爬坡步，否则说明爬得差不多了就进入EF步找过渡态。如果是第5步之后，一般已离过渡态区域较近，故一定认为是EF步。(4)如果是爬坡步，则在切线方向上移动（将切线方向作为EF方法所跟踪的振动方向来计算位移大小）。如果是EF步，首先计算Hessian各个本征向量的与切线重叠情况，如果有重叠大于0.8的本征向量，则以EF法跟踪本征值最大的本征向量来移动，相当于继续向上爬。如果没有大于0.8的，就跟踪最小本征值的本征向量移动来寻找过渡态。(5)步长长度若大于标准则调小，默认0.3 bohr。(6)根据预置受力、位移标准判断是否已收敛，收敛则结束循环。</p>
<p>注意，ST方法中具体包含LST和QST两种方法，STQN也用到了LST和QST两种反应路径的假设。高斯中的LST方法指的是ST中的LST方法，而QST2/3指的是利用QST路径假设的STQN方法，它们原理上截然不同，不要混淆。高斯中的QST2只需输入反应物和产物结构，通过几何方法估出STQN的初始步结构X。QST3需额外输入猜测的过渡态，它直接作为X，一般比QST2效果更好。对于经验不足的用户，用STQN方法往往比只提供过渡态初猜的方法更为适合。注意产物和反应物应当使用同样方法同样基组进行优化，如果是多分子比如A+B=C+D这样的反应，应当优化A和B/C和D的复合物作为输入的产物/产物，而不是单独优化A、B然后拼到一起，因为形成范德华复合物后孤立的分子会有一定构象改变，能量也低于它们孤立状态的加和。</p>
<p>2.2.3 赝坐标法(pseudo reaction coordinate)<br>
也称为坐标驱动法(Coordinate Driving)。这个方法在高斯中就是柔性扫描(Relaxed Scan)，即扫描一个变量，但每一步对其它变量自动进行优化，每一步得到的结构就是在这个变量为一定值情况下的最优结构。赝坐标法扫描的是反应物转变到产物过程中的关键坐标，比如扫描化学键断裂/生成反应中的键长。扫描的结果就是近似的IRC，可以再将能量最高点作为初猜找过渡态，或者用更小的步长再次扫描能量最高点附近找更精确的过渡态结构。这个找过渡态方法实际上用的是能量极小化优化过程，由于这样的算法比寻找过渡态的算法更为稳健，所以赝坐标法是颇可靠的，其它方法失败时可考虑这种方法。</p>
<p>这个方法缺点是费时间，而且不适合通向过渡态路径中反应区域涉及多个坐标变化的反应过程，因为自定义扫描的内容很难全面、准确考虑到这些坐标变量的变化，结果难以说明问题，没有考虑进去的关键变量容易产生滞后效应(hysteresis effect)。比如乙烷由交叉构象变化到另一个交叉构象，需要经历重叠构象的过渡态，会涉及到三个HCCH二面角同时由60度变化到0度，如果用赝坐标法只扫描其中一个HCCH由60度变到0度，则每一步其它两个HCCH角一定会大于这个扫描的二面角，与实际不符。这是因为这两个角越小，分子的能量越高，每一步自动优化的时候它们更倾向于保持在大角度。最终到达过渡态时，所扫描的二面角到达了0度，另外两个二面角却大于0度，说明它们的运动比实际的过程滞后了。由于滞后效应，从反应物和产物两个方向扫描同相同的坐标，得到的路径也不同。上述简单的反应此方法滞后效应尚且严重，对于复杂变化，这种效应导致的问题更难以预测。故此方法确定的IRC、过渡态不可靠，只建议对简单的反应使用这种方法，扫描变量的选择注意避免滞后效应。</p>
<p>在高斯中此方法可以使用opt=modredundant或Opt=Z-matrix结合分子结构部分标记的扫描变量来实现。例如使用opt=modredundant并在分子结构末尾写上A 3 2 1 S 10 1.000000来指定3 2 1原子组成的角度进行柔性扫描，共10步，每步1.0度。如果不熟悉，也可以很方便地在GaussView里的冗余坐标编辑器里面添加要柔性扫描的变量。</p>
<p>如果只执行常规的某个变量的扫描，比如高斯中的scan来找能量最高点作为初猜结构，对于简单体系可行，但对于复杂体系，这样忽略了此变量的变化导致分子其它部分结构的驰豫，如此得到的能量最高点作为过渡态初猜很不可靠，因为势能中掺入了不合理的结构造成的能量升高，使势能曲线形状改变。</p>
<p>2.2.4 DHS方法(Dewar-Healy-Stewart，亦称Saddle方法)与LTP方法(Line-Then-Plane)<br>
DHS方法中第一步将反应和产物分别作为A点和B点，确定哪个点能量低，比如A比B低，就把A点的结构向B点稍微做调整(~5%)得到A'，然后限制变量空间中A'与B的距离不变（即在超球面上）对A'进行优化得到A''。将A''与B当作下一步的起始点A与B，重复上述方法。这样反复进行迭代，若以序号n代表第n次得到的A''或B''，会依次得到例如A''(1)、A''(2)、B''(1)、A''(3)......直到A与B十分接近时才停止迭代，此位置就是过渡态。将得到的全部A''(n)按序号n依次连接，B''(n)也按序号依次连接，再将序号最大的A''(n)与B''(n)连接，得到的就是近似的IRC。LTP与DHS方法基本一致，不同的是每步是在垂直于A'与B连线的超平面上优化。DHS方法虽然可以很快地走到过渡态附近的位置，但是越往后每步的AB距离缩近也越少，故并不能有效率地贴近过渡态。然而每步的在连线上调整的距离不可过大，否则可能造成一侧的点跨过过渡态势垒跑到另一侧得到错误结果。</p>
<p><img height="227" width="518" src="http://ojz2fg.blu.livefilestore.com/y1pRXucZ2H41hFmr_BydRqP-LTgWwTIBprP9HDVauv__Qi9_jpIlDGWTdj_HFkwEuspzciaM0NbC0vZBAuPlS6ogeYos1r7vGqJ/DHS.GIF"></p>
<p>[图5]DHS方法示意图</p>
<p>2.2.5 Ridge方法<br>
第一步时将反应物、产物作为A点和B点，在其LST的路径上找到能量最大点C，然后在AC与BC直线上相距C为s的位置上分别设一点A'和B'，将A'与B'分别沿着此处势能面负梯度优化p距离，将得到的A''与B''作为下一步的A和B。反复进行这个步骤，收敛后C的位置就是过渡态位置。s和p是计算过程中动态调节的参数，对结果影响较大，它们应当随C逐渐接近过渡态而减小，可设若当前步的C能量高于上一步的C，则减小p至原先一半；若s与p的比值大于某个数值，s也减半。Ridge方法的缺点是接近过渡态时效率较低，可以当C进入过渡态二次区域后改用QN法来加快收敛。也可以结合DIIS法，速度比原先有一半以上的提升，效率有时还高于基于二阶导数的方法，而且在某些势能面非常平坦的体系比二阶导数方法更可靠。</p>
<p><img height="359" width="383" src="http://ojz2fg.blu.livefilestore.com/y1pwDwQpRg1TlBXzTAVVrzoh7kK6ZypL8uDT1B8g9CKi0mRAVO3P5U5-ucap1fqy9_flRA0R_VPJuJXOZujWlKFlHN2eQmy8z9x/Ridge.GIF"></p>
<p>[图6]Ridge方法示意图</p>
<p>2.2.6 Step-and-Slide方法<br>
使产物和反应物的结构同时顺着LST描述的路径相对移动(step步)，直到它们的能量都等于某个预先设定的能量，然后让这两个结构在它们当前所在的势能等值面上滑动(slide步)，使二者结构在坐标空间中的距离最小。重复上述step和slide步骤，最终当两个结构碰上，这个位置就是过渡态。</p>
<p><img height="370" width="430" src="http://ojz2fg.blu.livefilestore.com/y1pGh3PtVqznw4iVcXUKt1l7IKoDdU_0LX2-g3MMlqsafwDvKlzblsN6gXtWAsTPhHYuElwMgUF7nkC1_3aAEwWa5nnerhai74e/Step%20and%20Slide.GIF"></p>
<p>[图7]Step and Slide方法示意图</p>
<p>2.2.7 Müller-Brown方法<br>
见下文IRC算法相应部分</p>
<p>2.2.8 CI-NEB、ANEBA方法<br>
见下文&ldquo;寻找过渡态的chain-of-state方法&rdquo;相应部分</p>
<p><br>
2.3 基于反应物结构的算法</p>
<p>2.3.1 最缓上升法(least steep ascent,shallowest ascent)<br>
由反应物结构到达过渡态结构的过程是沿着势能面最容易行进的路径进行的（不考虑动力学问题），这个途径一般比其它方向要缓和，所以由反应物结构开始，沿着势能面最缓的方向逐渐往上爬，往往可以沿着MEP到达过渡态。但要注意这条路径时常与从过渡态沿最陡下降路径所走出的MEP并不一致，因此原理上此法不能保证一定能到达过渡态。图8描述的是LEPS势结合谐振势的势能面，最缓上升法所走的黑色粗曲线严重不符合实际MEP（黑点所示路径），而且曲线是中断的。此法也可能走到与此平衡结构相连的其它过渡态，而非预期的过渡态。还容易因为步长问题导致走到中途时跑到另外一条错误路径上，虽然设小步长能得到解决，但是需要花费更长时间。因为种种问题，这个方法使用较少。</p>
<p><img height="450" width="473" src="http://ojz2fg.blu.livefilestore.com/y1pZQAGPyXCjyqzau_58qqkk0q1ICKC1yyhVZDQHQ1LHUpOpclmVOwuNONGeLqVNK35ww7-U26X7KDLwrUOuh4w_vdKngd3bjKX/LEPS%2Bharmonic-least%20steep%20ascent-NEB.GIF"></p>
<p>[图8]势能面上最缓上升法所走的路径（黑色粗曲线）</p>
<p>2.3.2 本征向量/本征值跟踪法(eigenvector/eigenvalue following,EF。也称mode walking/mode following/Walking up valleys)<br>
由于平衡结构越过势垒发生反应的能量主要来自分子某振动模式提供的动能，考虑这一点，由平衡结构沿着此振动矢量方向步进，能够找到过渡态，经历的路径就是反应路径。这种方法需要首先对平衡结构进行振动分析，由用户最初指定一个可能指向过渡态的振动模式。因为平衡态通向过渡态路径势能面平缓，曲率（可视为振子力常数）一般小于其它方向，故一般跟踪频率最低的振动模式（高斯中默认）。每走一步后重新计算Hessian矩阵的本征值和本征向量，如果跟踪的是本征值最低的模式，仍取本征值最小的本征向量继续跟踪；如果跟踪的是其它振动模式，就取与上一步所跟踪的向量重叠最大的向量继续跟踪。重复执行，直到符合收敛标准为止。</p>
<p>如果一个结构涉及到多个过渡态，则跟踪不同的本征向量有可能得到不同的过渡态，即便所跟踪的不是最低模式，当接近过渡态后也会成为最低的模式。此方法也可以直接由过渡态初猜结构开始跟踪，或者说EF方法是一种不需要初猜在过渡态二次区域内的寻找过渡态的方法。由稳定结构通过EF方法跟踪至过渡态相对与直接给出初猜显然更为费时，但对于不能预测过渡态结构的情况下往往是有用的。LMOD法搜索构象也是基于这一原理，不断地根据低频振动方向越过构象转变的过渡态到达新的构象。</p>
<p>最初的EF方法只是简单地沿所跟踪的振动模式移动来升高能量。高斯中opt=(EF,TS)方法还使结构同时在其余方向上沿能量更低的方向移动，其实它用的就已介绍的P-RFO法，所跟踪的模式用独立计算的λ的最大解，其它的模式使用相同的另外计算的λ的最小解。由于Berny方法寻找过渡态已经包含了P-RFO步，所以EF方法实际上也已经包含在内了，除非要用到跟踪特定模式等功能时才有使用的必要。</p>
<p>2.3.3 ARTn(activation-relaxation technique nouveau)<br>
此方法主要用于研究无序材料的在能量面上由极小点穿过过渡态到达其它极小点的过程，解决由于势垒高而难以用MD和MC方法研究的问题。方法分两步，(1)将初始结构由极小点位置激活并收敛到过渡态(activation步)，(2)由过渡态通过常规的能量极小化算法寻找极小点(relaxation步)。(1)中的每一步中在任意方向上移动结构，然后在垂直于走过的路径方向的超平面上做能量极小化，反复执行，直到Hessian矩阵出现一个负本征值为止。之后进入收敛至鞍点的步骤，在最小本征值的方向上沿受力反方向移动，其余方向根据受力移动，最终将找到一阶鞍点。由于大体系Hessian矩阵本征值求解困难，此方法中使用Lanczos算法快速求解最低本征值和本征向量。ART法可以获得与初始极小点相连的许多过渡态。</p>
<p>2.3.4 梯度极值法(Gradient extremal,GE)<br>
梯度极值路径连接的是每一个等值线（高维情况为超曲面）上的梯度的模|g|为极大或极小值的点（相对于同一等值线上的其它点的梯度模来说）。因为势能面的每一点的梯度垂直于此点等值线的切线，故梯度模极值点的位置相当于垂直于等值线方向上等值线间隔比处在相同等值线上相邻的点更远或更近。|g|的极值与g^2一致，设势能函数为f，限制所在等值线能量为k，通过拉格朗日乘子法求g^2的极值▽[g^2-2λ(f-k)]=0，可知梯度极值点的梯度方向等于此点Hessian矩阵某一本征向量。由于势能面上每个驻点必有一条或多条梯度极值路径通过而互相构成网络（但任意驻点间不一定有梯度极值路径直接相连），所以系统地跟踪梯度极值路径是一种获得势能面上全部驻点的方法，目前已有几种跟踪算法，然而即便对于简单体系，梯度极值路径数目也极多，尤其是包含对称性情况下。由极小点跟踪梯度极值路径也能够用于寻找过渡态，但极小点未必与过渡态通过梯度极值路径直连，且此方法并不能控制要寻找哪类驻点，故为了寻找过渡态可能需要从多个其它驻点跟踪多个梯度极值路径，计算量很大，所以单纯为了寻找过渡态而使用这种方法不切实际。</p>
<p><img height="372" width="386" src="http://ojz2fg.blu.livefilestore.com/y1pZbaKOTc-sfr2RKj8HF2keyXNX2YQ-7XeVdyvR7IxG4yqQuPxoQiRywx_fxdKgIjeOYCm6ga5VCVZuXf1wqQCbUm2HMOJ8kHC/Gradient%20extremal.GIF"></p>
<p>[图9]梯度极值路径示意图</p>
<p>2.3.5 约化梯度跟踪(reduced gradient following,RGF)<br>
这个方法同梯度极值法一样可以得到包括过渡态、极小点在内的各种驻点。设势能面为N维，此方法将跟踪N条路径，其中第i条(i=1,2,3...N)路径只有在第i维上梯度不为0，而其它N-1个维度上皆为0，故称为约化梯度。这样的路径交汇的位置，就是所有维度上梯度皆为0的位置，即驻点。例如简单的二维情况E(x,y)=x^3+y^3-6xy，跟踪的RGF方程就是Ex(x,y)=3x^2-6y=0和Ey(x,y)=3y^2-6x=0，前者仅y方向梯度不为0，后者仅x方向梯度不为0，相交得到的驻点为一个一阶鞍点和一个极小点。也可以使用原始坐标组合的正交坐标系，例如跟踪仅x+y和仅x-y方向上梯度不为0的两条路径。</p>
<p><img height="372" width="386" src="http://ojz2fg.blu.livefilestore.com/y1pwDwQpRg1TlB3-tHp1PJ-qrkUOiJU03NOX6_a-o9kaYZcTrGilMQp0voPI-DnTpSRHGJ-QFOpAfrzjE3L-HuqtuH-6GxPRgY0/RGF.GIF"></p>
<p>[图10]x^3+y^3-6xy面上约化梯度路径示意图</p>
<p>跟踪约化梯度的步进算法是第m点的坐标x(m+1)=x(m)+StL*x'(m)/|x'(m)|。StL是步长，x'(m)/|x'(m)|代表路径切线方向单位向量。x'可以通过H'x'=0方程以QR分解法获得，其中H'与Hessian矩阵唯一不同的是，若当前跟踪的是仅第k维梯度不为0的约化梯度路径，则H'没有Hessian矩阵的第k行。一般起始步由某驻点开始，此步准确计算Hessian，步进过程中Hessian可用前述的DFP方法修正。每步检验所跟踪方向上的朝向下一个驻点的牛顿步步长，若小于标准则停止，并且再精确计算一次Hessian以确认此驻点是什么类型。每次走步的结果如果在数值上与&ldquo;仅某维度上梯度为0&rdquo;条件符合较好，可以动态增加步长，类似AH法的置信半径概念，如果相差较大，则调用校正步（后期方法将校正步合并入步进步，改善了效率和稳定性）。</p>
<p>这个方法计算量也很大，而且也无法指定要搜索的驻点的类型，所以不适合独立用作寻找过渡态。</p>
<p>2.3.6 等势面搜索法(Isopotenial Searching)<br>
如果将反应物位置附近的势能面比做一个湖，这个方法可以看作逐渐往湖里面灌水，由于过渡态能量比周围地方更低，所以随着水位（势能）逐渐升高，水最先流出来的地方就是过渡态。继续灌水，随着水位继续升高，还可以找到其它能量更高的过渡态。</p>
<p>具体实现的方法是：首先最小化反应物的能量E0，在反应物位置附近设置一些测试点，可以随机也可以根据经验设定，作为&ldquo;水位&rdquo;来检测是否已到达过渡态能量。然后设定目标能量E(target)，一般高于E0几百KJ/mol。计算那些测试点的能量和势能梯度，检查其能量与E(target)的差的绝对值，若大于10KJ/mol，即没达到目标水位，就让它们沿着梯度方向行进以提升能量，之后再次检查是否符合条件，直到小于10KJ/mol，即已到达目标水位，就对这些点进行人工的检查，包括结构、成键分析等，考察在E(target)时是否已经达到或超过了过渡态的能量。如果找到了过渡态，就调整这些点的位置继续找别的过渡态；如果未找到，就提高E(target)并且调测试点整位置以增大找到过渡态的概率，然后再沿着梯度方向提升测试点的能量并进行接下来的检测，反复如此。</p>
<p>上述提到的&ldquo;调整点的位置&rdquo;有很多算法，但主要都是使那些测试点在垂直于梯度，即在等值面上移动。因为测试点无法密集覆盖整个等势面，受计算能力制约其数目有限的，很难有哪个点随着E(target)的提升而移动后恰好落在过渡态的位置。直到E(target)提升到有测试点可判断为过渡态时，其能量一般已高出实际过渡态很多。所以使用此方法得到的过渡态能量与初始点位置和调整点位置的算法都有很大关系，一般都显著偏高，甚至不能找到过渡态，可尝试以不同初始位置和调整算法重新执行以改善结果。等势面搜索法适合在只有反应物结构而难以预测过渡态和产物结构的情况下寻找过渡态，例如预测质谱中分子的可能裂解的方式，有时还可能找到全新未曾考虑到的反应机理。但是此方法的结果很粗糙，而且计算量极大，尤其是大分子的高维势能面，有限的测试点很容易漏掉许多重要过渡态。</p>
<p>2.3.7 球形优化(Sphere optimization)<br>
在几何参数的变量空间上，以反应物或产物为中心，在不断增加半径的超球面上做能量最小化。将相邻球面上得到的能量极小点相连接，就得到一条由反应物或产物为起点的低能量的路径，可做为IRC（未必正确，考虑图8的势能面），并由此找到过渡态。如果每个球面上可以找到多个极小点，则连接后有可能得到多条反应路径。此法若以坐标驱动法为类比，此方法就是对几何参数空间中反应物或产物结构代表的点的距离进行柔性扫描。</p>
<p><img height="256" width="500" src="http://ojz2fg.blu.livefilestore.com/y1p8EddazrCnJt_OlB3JYAUjQpsZSv36pvMQyKXRyhyH-xIBtgDMGerxwxd_UoMb8egdBlmQjwDNJZBsXPn8VHhSrp2pe7xd48m/Sphere%20opt.GIF"></p>
<p>[图11]球形优化示意图</p>
<p><br>
2.4 全势能面扫描<br>
当一切方法都不能找到过渡态，全势能面扫描是最终途径。由于扫描得到的势能面格点是离散的，可通过插值提高格点密度以增加精度。得到势能面后，就可以通过一些算法找到过渡态，例如用这些点拟合出解析表达式，然后用标准微分方法找过渡态。但全势能面扫描极为昂贵，内坐标下需要计算X^(3N-6)次（X代表每个变量扫描步数），只限于反应中仅涉及几个自由度的势能面扫描，往往不得不考虑更低级的方法如半经验或者分子力学，变量稍多的体系则完全不能实现。全势能面扫描的结果还提供了过渡态位置以外结构的信息，例如可以用于研究反应路径、用于构象搜索等。</p>
<p> </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/e68d3cedf6441bddb31cb11f.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-03  02:02</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/e68d3cedf6441bddb31cb11f.html</guid>
</item>

<item>
        <title><![CDATA[[原创]一些计算化学相关的免费的在线数据库、分子结构库及工具(updated 2009-NOV-7)]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/678cbfea778c78dad539c9e1.html]]></link>
        <description><![CDATA[
		
		<p>这些是我平时收集的和计算化学/分子模拟有关的免费的在线的库和工具，既在线又免费的实用的网站是很有价值的。下列网址在写入本文时均可访问，若无法访问可尝试代理，若确实网址已改变请告诉我。前面有√的代表比较重要。很多在线工具需要java运行环境。如果有其它好的免费的化学相关的在线的库或工具欢迎回帖补充，我也会在日后逐渐补充。</p>
<p><br>
1 在线信息数据库部分</p>
<p>ChemSpider小分子信息整合数据库：<a href="http://www.chemspider.com/">http://www.chemspider.com</a><br>
简介：是当前众多的在线分子数据库的信息整合，便于用户搜索，数据来自200种数据库。根据分子俗名、系统命名、Smile/InChI字符串、注册号、分子式等方式搜索，会列出分子平面结构、实验测定和实时估算的理化性质（含LogP等）、毒性、分子简介、Smile/InChI/InChIKey字符串、在其它分子数据库中的编号和链接、相关文章及专利、同义词、相关蛋白质、NMR/IR光谱图等，某些分子还可以链入web CSD获得三维结构。</p>
<p>√ SDBS光谱数据库：<a href="http://riodb01.ibase.aist.go.jp/sdbs/cgi-bin/direct_frame_top.cgi">http://riodb01.ibase.aist.go.jp/sdbs/cgi-bin/direct_frame_top.cgi</a><br>
简介：很好的有机化合物光谱数据库，包含六类光谱：EI-MS、FT-IR、H-NMR、C13-NMR、ESR、Raman。含3万余个化合物，其中以商业化学试剂为主，约2/3是6碳至16碳的化合物。数据大部分是其自行测定的，并不断添加。可以通过化合物、分子式、分子量、CAS/SDBS注册号、元素组成、光谱峰值位置/强度方式搜索。</p>
<p>生物核磁共振数据库：<a href="http://bmrb.protein.osaka-u.ac.jp/deposit">http://bmrb.protein.osaka-u.ac.jp/deposit</a></p>
<p>CRYSTAL程序基组数据库：<a href="http://www.tcm.phy.cam.ac.uk/~mdt26/crystal.html">http://www.tcm.phy.cam.ac.uk/~mdt26/crystal.html</a></p>
<p>√ 计算化学比较和基准数据库(CCCBDB)：<a href="http://cccbdb.nist.gov/">http://cccbdb.nist.gov</a><br>
简介：此数据库包括各种量子化学方法、各种基组下对不同分子的各种属性的计算结果，也包含实验数据。可用来对比不同方法计算结果优劣，此数据库内容在不断增加。</p>
<p>√ 量化频率计算校正因子：<a href="http://cccbdb.nist.gov/vibscale.asp">http://cccbdb.nist.gov/vibscale.asp</a><br>
简介：实际上就是CCCBDB的一个子页面，比较重要故单独列出。</p>
<p>IUPAC金属络合物稳定常数数据库：<a href="http://www.acadsoft.co.uk/">http://www.acadsoft.co.uk</a><br>
注：需要付费，可免费下载试用版。</p>
<p>√ NIST化学数据库：<a href="http://webbook.nist.gov/chemistry">http://webbook.nist.gov/chemistry</a><br>
简介：是美国国家标准与技术研究院NIST的基于Web的物性数据库。输入分子查找条件，可获得分子量、CAS登记号、各种热力学数据、谱图等信息，部分分子包含3D结构。</p>
<p>RESP ESP charge DDataBase(REDDB)：<a href="http://q4md-forcefieldtools.org/REDDB/index.php">http://q4md-forcefieldtools.org/REDDB/index.php</a><br>
简介：分子的RESP电荷的数据库</p>
<p>Uppsala Electron Density Server：<a href="http://eds.bmc.uu.se/eds">http://eds.bmc.uu.se/eds</a><br>
简介：用于评价蛋白质数据库中晶体结构电子密度。输入pdb ID（比如1cbs）进入后可以对各种内容做图。点击EDS Summary下面的Go按钮可以自动启动基于java的电子密度图可视化程序观看电子密度图，注意不要开启浏览器的弹出窗口过滤。</p>
<p>√ 上海有机所化学专业数据库：<a href="http://202.127.145.134/scdb/default.htm">http://202.127.145.134/scdb/default.htm</a><br>
简介：十分有用的数据库，免费注册。可获得分子的红外、质谱谱图、结构、物化性质、毒性、生物活性以及相关反应等。还包括中英互译、药品名称检索等功能。</p>
<p>√ EMSL基组数据库：<a href="https://bse.pnl.gov/bse/portal">https://bse.pnl.gov/bse/portal</a></p>
<p>Clarkson大学相对论有效势数据库：<a href="http://people.clarkson.edu/~pac/reps.html">http://people.clarkson.edu/~pac/reps.html</a></p>
<p>含重原子全电子STO基组数据库：<a href="http://www.scm.com/Downloads/zorabasis/Welcome.html">http://www.scm.com/Downloads/zorabasis/Welcome.html</a></p>
<p>原子间势参数数据库：<a href="http://www.dfrl.ucl.ac.uk/Potentials">http://www.dfrl.ucl.ac.uk/Potentials</a></p>
<p>Stuttgart赝势参数数据库：<a href="http://www.theochem.uni-stuttgart.de/pseudopotentials/clickpse.en.html">http://www.theochem.uni-stuttgart.de/pseudopotentials/clickpse.en.html</a></p>
<p>ChemBioFinder：<a href="http://chembiofinder.cambridgesoft.com/chembiofinder/SimpleSearch.aspx">http://chembiofinder.cambridgesoft.com/chembiofinder/SimpleSearch.aspx</a><br>
简介：根据分子质量、名称或者自行绘制结构，从几十万分子中搜索，得到二维结构、Smiles、InCHI字符串、分子量等简单信息。</p>
<p>Sigma-Aldrich公司产品数据库：<a href="http://www.sigmaaldrich.com/Area_of_Interest/The_Americas/United_States.html">http://www.sigmaaldrich.com/Area_of_Interest/The_Americas/United_States.html</a><br>
简介：主要用来获得化合物IR、NMR谱图。右上角输入化合物的名字，搜索到后进入相应条目，如果在左侧有FT-IR Raman、FT-NMR字样，就可以进入察看，没有则说明此化合物无光谱数据。也可以获得化合物的一些物性数据，但不全面。</p>
<p>基本物理常数数据库：<a href="http://physics.nist.gov/cuu/Constants/index.html">http://physics.nist.gov/cuu/Constants/index.html</a><br>
简介；可以查到精确的计算化学中涉及的物理常数及换算关系，如hartree-&gt;eV</p>
<p>百奥知识数据库：<a href="http://tong.bioknow.cn/html/sites/database/index.htm">http://tong.bioknow.cn/html/sites/database/index.htm</a><br>
简介：一个生物信息数据库的比较全的列表，每个数据库有简单官方介绍。</p>
<p>UniProt(universal protein resource)：<a href="http://www.uniprot.org/">http://www.uniprot.org</a><br>
简介：整合了Swiss-Prot、TrEMBL、PIR三个数据库，可以得到蛋白质序列、相关文献、人工（有黄色五角星标识）或机器自动生成的注释、所属分类、蛋白质序列特征等丰富信息。还可以进行序列对比、BLAST搜索。</p>
<p>=====================<br>
2 结构数据库部分</p>
<p>GLYCAM寡糖数据库：<a href="http://glycam.ccrc.uga.edu/CCRC/Library/index.jsp">http://glycam.ccrc.uga.edu/CCRC/Library/index.jsp</a></p>
<p>√ ICSD无机晶体数据库：<a href="http://icsd.ill.fr/icsd/index.php">http://icsd.ill.fr/icsd/index.php</a><br>
简介：免费在线提供部分晶体结构信息及cif文件。</p>
<p>√ NDB核酸数据库：<a href="http://ndbserver.rutgers.edu/">http://ndbserver.rutgers.edu</a><br>
简介：根据NDB ID，获得核酸坐标文件、出处等信息，类似RCSB蛋白质数据库。</p>
<p>PDBbind-CN：<a href="http://www.pdbbind.org.cn/index.asp">http://www.pdbbind.org.cn/index.asp</a><br>
简介：收集了pdb数据库中的生物分子复合物。给出受体、配体名称、亲和性、序列等信息，可在线观看或下载结构，可根据配体名称、结构搜索含有此配体的复合物。</p>
<p>PDB Wiki：<a href="http://pdbwiki.org/index.php/Main_Page">http://pdbwiki.org/index.php/Main_Page</a><br>
简介：基于PDB数据库，对蛋白质进行了简单分类，访问者可以给每个蛋白添加注释。</p>
<p>sc-PDB：<a href="http://bioinfo-pharma.u-strasbg.fr/scPDB">http://bioinfo-pharma.u-strasbg.fr/scPDB</a><br>
简介：收集了PDB数据库中含有可以为药物结合的位点的蛋白。可根据配体、蛋白、结合方式为特征进行搜索。</p>
<p>√ RCSB PDB数据库：<a href="http://www.rcsb.org/pdb/home/home.do">http://www.rcsb.org/pdb/home/home.do</a></p>
<p>HPDB蛋白质数据库：<a href="http://hpdb.hbu.edu.cn/">http://hpdb.hbu.edu.cn</a><br>
简介：河北大学的蛋白质数据库，可通过此库间接下载到RCSB蛋白质数据库的文件。有中文PDB文件格式的介绍，比较有用，还有另外一介绍蛋白质的些文章。</p>
<p>√ ZINC化合物虚拟筛选数据库：<a href="http://zinc.docking.org/index.shtml">http://zinc.docking.org/index.shtml</a><br>
简介：根据自定义的化合物的性质，在800万种以上可买到的产品中进行筛选。可以下载到结构文件。</p>
<p>√ PubChem：<a href="http://pubchem.ncbi.nlm.nih.gov/">http://pubchem.ncbi.nlm.nih.gov</a><br>
简介：NCBI下属的小分子数据库，包括化合物、物质、生物活性三大数据库，含上千万条目并不断增加。可通过分子结构、名称、分子式、分子量、XLogP、氢键信息方式查询。可以得到分子的简介、化学结构、XLogP（自动计算）、同义词、生物活性、毒性、药理学信息及分类、SMILE和InChI/key字符串、相似化合物、2D的SDF文件。一些结构还有3D SDF结构文件，进入条目后可在页面最下面点SDF按钮保存，可被一些软件直接读取，如ChemBio3D。是一个很有用的获得小分子三维结构的方法。</p>
<p>SuperNature天然产物数据库：<a href="http://bioinformatics.charite.de/supernatural">http://bioinformatics.charite.de/supernatural</a><br>
简介：几万种天然产物数据库，可通过名称、结构、相似度、LogP、分子量、分子式等信息搜索，也可以绘制结构或根据结构模版搜索，可在线观看结构，并获得净电荷、偶极矩、手形中心数目、可旋转键数目、氢键受/配体等信息。</p>
<p>蛋白质pKa数据库(PPD)：<a href="http://www.jenner.ac.uk/PPD">http://www.jenner.ac.uk/PPD</a></p>
<p>蛋白质分类数据库(CATH)：<a href="http://www.cathdb.info/">http://www.cathdb.info</a><br>
简介：其中结构来自PDB数据库，半自动地对每个结构根据二级结构、形状、拓扑、同源性进行了分类，可以根据这些特点进行分类查询。</p>
<p>蛋白质结构分类数据库(SCOP)：<a href="http://scop.mrc-lmb.cam.ac.uk/scop">http://scop.mrc-lmb.cam.ac.uk/scop</a><br>
简介：和CATH的功能类似，包含几万个蛋白质结构。但是是人工对每个蛋白结构进行分类，比CATH的分类更为合理。结构分类基于四个层次：class、fold、superfamily、family。</p>
<p>结构相似蛋白质家族数据库(FSSP)：<a href="http://srs.ebi.ac.uk/srsbin/cgi-bin/wgetz?-page+LibInfo+-id+5Ti2u1RffMj+-lib+FSSP">http://srs.ebi.ac.uk/srsbin/cgi-bin/wgetz?-page+LibInfo+-id+5Ti2u1RffMj+-lib+FSSP</a><br>
简介：此数据库对pdb数据库中的结构使用Dali算法进行了相似度计算，用以找到相似蛋白质。</p>
<p>=========================<br>
3 在线工具部分</p>
<p>√ Dali server：<a href="http://ekhidna.biocenter.helsinki.fi/dali_server">http://ekhidna.biocenter.helsinki.fi/dali_server</a><br>
简介：输入PDB ID或者上传PDB，服务器会对此结构与PDB数据库中的结构用dali算法计算，将其中有一定结构相似度的PDB列出。通过复选框选择几个结构，可以对比序列，以及在线观看它们重叠后的3D结构。Dali Database(<a href="http://ekhidna.biocenter.helsinki.fi/dali/start">http://ekhidna.biocenter.helsinki.fi/dali/start</a>)每年更新两次，如果是在更新日期以前发布的pdb，可以直接在Dali Database里面查询之前已算好的结果，而不必在Dali server里面重新计算。</p>
<p>√ Xemistry Web Sketcher：<a href="http://85.214.71.72/edit/frame.html">http://85.214.71.72/edit/frame.html</a><br>
简介：非常好的在线绘制平面分子结构的工具，它的一大好处是不需要安装java运行环境或其它插件，也不必等待缓慢的载入过程，打开网页直接就可以用。绘制结构方便，界面简洁，还可以进入模版页面直接调用基团。在绘制过程中可以实时生成SMILE、InChI等字符串，可以自动将当前绘制的结构在化学结构数据库中检索，立刻得到它的比如CAS编号、PubChem CID编号、名称等信息。绘制的结构可以导出为mol、ChemDraw的CDX、Sybyl的sln等格式，还可以导出png/gif等图形、pdf文件、swf文件等。也可以直接输入Smile字符串，或者上传分子结构文件来导入此编辑器。</p>
<p>Molsoft：<a href="http://www.molsoft.com/mprop">http://www.molsoft.com/mprop</a><br>
简介：此网站提供了几个在线工具，在页面左侧Online Tools选择。PDB Viewer可以输入pdb id观察直接调用jmol在线观看蛋白。2D to 3D Converter可以绘制二维结构，直接生成smile字符串，并且观看三维结构。Chemical Search可以搜索与输入的分子相似的分子以及其销售商。Drug LIkeness可以绘制分子二维结构，然后预测LogP、LogS(水溶性)、分子极性部分面积、计算分子体积，预测这种分子是否有可能作为药物。ODA可以在线进行Optimal Docking Areas方法计算蛋白表面的相互作用位点，结果可以以免费的ICM-browser打开。</p>
<p>生成分子的3D pdf文件：<a href="http://85.214.71.72/pdf3d">http://85.214.71.72/pdf3d</a><br>
简介：acrobat从8.0开始就支持内嵌3D对象的pdf文件，可以直接在pdf文档中旋转这些3D对象。此网站只要输入分子的PubChem中的CID号（可从PubChem网站搜分子名得到），就可以得到内嵌了这个分子3D对象的pdf文件，还可以设定显示方式。免得用acrobat 3D从可视化软件中捕捉3D对象的麻烦。</p>
<p>分析分子的片断：<a href="http://85.214.71.72/fragment">http://85.214.71.72/fragment</a><br>
简介：可以上传结构或者绘制结构，程序会通过UNIFAC或Sedlbauer-Majer算法分析分子是由哪些片断构成的，以及数目分别是多少，以此帮助确定分子的物理和化学性质。例如异戊二烯，程序会分析出CH3、CH2=CH、CH2=C三种片断各有1个。</p>
<p>分子标识符转换：<a href="http://cactus.nci.nih.gov/chemical/structure">http://cactus.nci.nih.gov/chemical/structure</a><br>
简介：以Smile/InchI字符串、分子名称等标识符输入分子，然后转换为其它分子标识符或者分子平面图形，比如输入aspirin转化为CAS注册号。也可以通过网址方式直接转换，网址格式是<a href="http://cactus.nci.nih.gov/chemical/structure/">http://cactus.nci.nih.gov/chemical/structure/</a>&quot;输入标示符&quot;/&quot;输出方式&quot;，例如要将2-丁烯转化为分子平面图形，可以在浏览器输入<a href="http://cactus.nci.nih.gov/chemical/structure/2-butene/image">http://cactus.nci.nih.gov/chemical/structure/2-butene/image</a>。<br>
另外还可以输出通用的或某些软件特有格式的文件，例如将CAS注册号为119-65-3的分子转化为pdb格式，只需输入<a href="http://cactus.nci.nih.gov/chemical/structure/119-65-3/file?format=pdb">http://cactus.nci.nih.gov/chemical/structure/119-65-3/file?format=pdb</a>。还支持输出cif、gjf、gromacs、mol2、sdf等格式的文件，把format=后面改成这些名字即可。</p>
<p>在线生成金刚石结构（包括同晶体结构的硅、锗）：<a href="http://turin.nss.udel.edu/research/diamondonline.html">http://turin.nss.udel.edu/research/diamondonline.html</a></p>
<p>在线生成石墨结构：<a href="http://turin.nss.udel.edu/research/graphiteonline.html">http://turin.nss.udel.edu/research/graphiteonline.html</a></p>
<p>在线生成碳纳米管结构：<a href="http://turin.nss.udel.edu/research/tubegenonline.html">http://turin.nss.udel.edu/research/tubegenonline.html</a></p>
<p>ADIT蛋白质检查工具：<a href="http://deposit.rcsb.org/adit">http://deposit.rcsb.org/adit</a><br>
简介：可以自行上传pdb文件，通过Validate操作，自动通过PROCHECK程序绘制出各种图表用以检查蛋白质。包括ramachandran图，chi1-chi2图，主链/侧链信息图（解析度标准偏差、不合理接触等）、二级结构图、扭转角分布、键长距离分布、侧链上平面结构偏差分布、主链键长键角扭曲情况。</p>
<p>webPIPSA(Protein Interaction Property Similarity Analysis)：<a href="http://pipsa.eml.org/pipsa">http://pipsa.eml.org/pipsa</a><br>
简介：上传pdb/pqr或输入pdb ID，自动调用APBS/UHBD计算它们的静电势，根据一定规则绘制成距离矩阵，并做簇分析。可以分析不同蛋白质在相互作用上的相似性。可以下载到运行期间的中间文件，包括转化后的pqr和计算得到的grid格点文件，可被vmd等软件读取。</p>
<p>CASTp：<a href="http://sts-fw.bioengr.uic.edu/castp/calculation.php">http://sts-fw.bioengr.uic.edu/castp/calculation.php</a><br>
简介：找出某蛋白所有口袋或孔洞，并得到它们的容积和表面积，有助于研究潜在的配体结合位点。</p>
<p>Q-SiteFinder：<a href="http://www.modelling.leeds.ac.uk/qsitefinder">http://www.modelling.leeds.ac.uk/qsitefinder</a><br>
简介：以甲基为疏水探针，找出蛋白质上配体可能结合的位点，结果以Jmol在线显示。</p>
<p>SFoldRate预测蛋白质折叠速率：<a href="http://gila.bioengr.uic.edu/lab/tools/foldingrate/fr0.html">http://gila.bioengr.uic.edu/lab/tools/foldingrate/fr0.html</a></p>
<p>ALOGPS：<a href="http://www.vcclab.org/lab/alogps">http://www.vcclab.org/lab/alogps</a><br>
简介：在线上传分子结构，计算LogP、水溶性、PKa、SMILE字符串等信息。支持分子结构格式十分多。</p>
<p>CORINA：<a href="http://www.molecular-networks.com/online_demos/corina_demo.html">http://www.molecular-networks.com/online_demos/corina_demo.html</a><br>
简介：通过SMILE字符串得到分子的结构文件</p>
<p>一些有用的晶体学工具：<a href="http://www.cryst.ehu.es/">http://www.cryst.ehu.es</a></p>
<p>GETAREA：<a href="http://curie.utmb.edu/getarea.html">http://curie.utmb.edu/getarea.html</a><br>
简介：计算分子SASA和溶解能，服务器不太稳健</p>
<p>DockingServer：<a href="http://www.dockingserver.com/web/">http://www.dockingserver.com/web/</a>?<br>
简介：在线分子对接，须注册，对免费用户功能有限制</p>
<p>GLYCAM在线构建糖、糖蛋白结构：<a href="http://glycam.ccrc.uga.edu/ccrc/biombuilder/biomb_index.jsp">http://glycam.ccrc.uga.edu/ccrc/biombuilder/biomb_index.jsp</a></p>
<p>MolEdit：<a href="http://159.149.163.21/moledit.htm">http://159.149.163.21/moledit.htm</a><br>
简介：在线绘制2D结构，自动转化为三维坐标文件，支持格式很多。</p>
<p>√ E-Babel：<a href="http://www.vcclab.org/lab/babel">http://www.vcclab.org/lab/babel</a><br>
简介：相当于在线版的Babel，可以支持几十种结构文件格式的转换。注意不要打开浏览器弹出窗口过滤功能。</p>
<p>√ Opal Dashboard：<a href="http://ws.nbcr.net/opal2/GetServicesList.do">http://ws.nbcr.net/opal2/GetServicesList.do</a><br>
简介：一大批软件的在线计算工具，包括MEME（搜索一组DNA/蛋白序列中的基序），APBS（解PB方程得到静电势分布、溶解自由能），PDB2PQR（往pdb格式中添加原子半径信息，转为apbs等软件所需的pqr文件），Prepare receptor/GPF（创建pdbqt、GPF文件），Autogrid（计算autodock所需的格点文件），Autodock（分子对接），FIMO，GLAM2，GLAM，GOMO。</p>
<p>在线版PDB2PQR：<a href="http://nbcr.sdsc.edu/pdb2pqr">http://nbcr.sdsc.edu/pdb2pqr</a></p>
<p>Prodrg 2.5：<a href="http://davapc1.bioch.dundee.ac.uk/cgi-bin/prodrg_beta">http://davapc1.bioch.dundee.ac.uk/cgi-bin/prodrg_beta</a><br>
简介：输入结构或者在线绘制结构，生成gromacs等软件的拓扑文件，以及加过氢的pdb、gro、mol结构文件。支持gromos87/96力场，支持结构优化。</p>
<p>Karlsberg+：<a href="http://agknapp.chemie.fu-berlin.de/karlsberg/index.php">http://agknapp.chemie.fu-berlin.de/karlsberg/index.php</a><br>
简介：基于线性PB方程在线计算蛋白质Pka</p>
<p>PROPKA：<a href="http://propka.ki.ku.dk/">http://propka.ki.ku.dk</a><br>
简介：输入PDB ID或者上传pdb文件，计算PKa。输出结果包括每个残基的Pka，不同PH下的蛋白去折叠化能、最稳定时的PH值，折叠与去折叠时在不同PH下所带电荷、等电点PH、缓冲能力。虽然独立状态的氨基酸的PKa是已知的，但在蛋白中由于受到周围其它氨基酸的影响PKa会发生改变，故此程序有助于正确判断在不同PH环境下模拟蛋白质时氨基酸所应处的质子化态。</p>
<p>H++：<a href="http://biophysics.cs.vt.edu/H++/">http://biophysics.cs.vt.edu/H++/</a><br>
简介：通过隐式溶剂(GB/PB)和分子力学模型计算Pka，并根据指定PH自动将结构质子化</p>
<p>ProBuilder：<a href="http://159.149.163.21/probuilder.htm">http://159.149.163.21/probuilder.htm</a><br>
简介：输入蛋白质序列和预期的二级结构生成蛋白结构文件</p>
<p>PDBsum：<a href="http://www.ebi.ac.uk/pdbsum">http://www.ebi.ac.uk/pdbsum</a><br>
简介：输入PDB ID或者序列，显示蛋白质信息、基本结构特征、结构出处的文献摘要，可调用PROCHECK分析结构，可在线观看3D结构。</p>
<p>√ PLATINUM：<a href="http://model.nmr.ru/platinum">http://model.nmr.ru/platinum</a><br>
简介：此程序基于分子疏水势的概念。上传受体/配体结构文件后计算，会显示分子总面积、极性面积、非极性面积的大小。得到的疏水势格点文件可保存也可以在线自动调用Jmol观看，以不同颜色描述分子的疏水/亲水性质，可以直观了解受、配体不同方式的的结合能力。对于脂体系可以显示2D疏水图。</p>
<p>√√ MarvinSketch：<a href="http://www.chemaxon.com/marvin/sketch/index.jsp">http://www.chemaxon.com/marvin/sketch/index.jsp</a><br>
简介：一款功能强大的绘制分子结构、反应式并计算相关性质的软件的在线版，需要java运行环境，载入较慢。可自行绘制也可以直接通过名字生成结构(edit-import name)，可以直接从模版库/基团库中插入结构(insert-template library/group)，可以保存结构文件到本地。可以显示周期表(view-periodic table)，获得smile字符串(选中分子，edit-save as smile，然后随便找个文本框paste)，显示3D结构(view-Open MarvinView3D/Space)，给出结构的名字(tools-Naming)，得到分子式、分子量、元素组成(tools-Elemental analysis)，绘制滴定曲线、计算PKa、等电点、获得指定PH环境下的被质子化/去质子化后的结构(tools-Protonation)，计算LogP、LogD(tools-partitioning)，计算原子电荷、极化率、轨道电负性(tools-charge)，获得互变异构体、立体异构体(tools-isomers)，计算各个异构体的能量、做简单分子动力学(tools-conformation)，结构拓扑分析、优化并计算能量、计算SASA(tools-geometry)，显示氢键供体/受体原子数目、Huckel分析、计算折射率、显示共振结构、获得结构框架(tools-other)。在程序下方文本框中可以使用Chemical term语言编写表达式来通过性质筛选分子、计算属性。亦可免费下载此软件的单机版。</p>
<p>MarvinSpace：<a href="http://www.chemaxon.com/marvinspace/applet.html">http://www.chemaxon.com/marvinspace/applet.html</a><br>
简介：在线的基于java的分子可视化程序，使用Opengl库，支持pdb、mol和cub格点文件。可用NewCartoon等方式显示蛋白质骨架结构，可以用几种方式显示分子表面，并在上面用颜色显示包括静电势在内的几种信息。缺点是程序载入很慢。</p>
<p>REDS(RESP ESP charge Derive Server)：<a href="http://q4md-forcefieldtools.org/REDS">http://q4md-forcefieldtools.org/REDS</a><br>
简介：在线计算RESP电荷，注册十分麻烦。</p>
<p>计算RRKM反应速率：<a href="http://phd.marginean.net/rrkm.html">http://phd.marginean.net/rrkm.html</a></p>
<p>DynDom：<a href="http://fizz.cmp.uea.ac.uk/dyndom/runDescription.jsp">http://fizz.cmp.uea.ac.uk/dyndom/runDescription.jsp</a><br>
简介：输如蛋白质分子的两个构象，可分析出构象变化所绕着的旋转轴，以及导致结构变化的关键残基。结果可以用rasmol程序显示。</p>
<p>StrucTools：<a href="http://helixweb.nih.gov/structbio/basic.html">http://helixweb.nih.gov/structbio/basic.html</a><br>
简介：可以绘制蛋白质二级序列图，计算主链氢键，绘制B因子-残基图，计算残基所占体积并绘图，计算残基SASA，做Ramachandran图，做蛋白质旋转的gif/mpeg动画。</p>
<p>TarFisDock(Target Fishing Dock)：<a href="http://www.dddc.ac.cn/tarfisdock">http://www.dddc.ac.cn/tarfisdock</a><br>
简介：反向对接程序，提供小分子结构，寻找受体蛋白。国内可能需要国外代理才能访问，速度比较慢。</p>
<p>VRML File Creator：<a href="http://cactus.nci.nih.gov/vrmlcreator">http://cactus.nci.nih.gov/vrmlcreator</a><br>
简介：通过smile字符串或者结构文件，创建VRML(.wrl)文件。比如可以导入Acrobat 3D，在pdf文档中演示分子的立体结构。</p>
<p>w3DNA：<a href="http://w3dna.rutgers.edu/">http://w3dna.rutgers.edu</a><br>
简介：输入核酸PDB ID或上传结构文件，分析其碱基结构参数。</p>
<p>WebMO：<a href="http://www.webmo.net/demo/index.html">http://www.webmo.net/demo/index.html</a><br>
简介：提供了友好的GUI界面，可以在线绘制或导入结构并调用服务器上的Gaussian、Gamess、Mopac、Molpro、NWChem、QChem、Tinker程序进行量化/分子力学计算。对于免费用户WebMO提供了guest帐户登入，但运算时间限制在60秒以内，在缺乏计算条件下可以应急使用。</p>
<p>估算REMD模拟适宜的温度设定：<a href="http://folding.bmc.uu.se/remd">http://folding.bmc.uu.se/remd</a></p>
<p>在线蛋白质分析工具列表：<a href="http://www.bioinf.org.uk/servers">http://www.bioinf.org.uk/servers</a></p>
<p>PBT Profiler：<a href="http://www.pbtprofiler.net/">http://www.pbtprofiler.net</a><br>
简介：输入化合物代码或在线绘制结构，快速预测此化合物对环境污染的情况，包括在各种环境下的半衰期和分布状况、生物累积性、毒性等。</p>
<p>√ WHAT IF：<a href="http://swift.cmbi.ru.nl/servers/html/index.html">http://swift.cmbi.ru.nl/servers/html/index.html</a><br>
简介：提供了十分丰富的蛋白质模拟相关工具。包括同源模建、检查和修复蛋白结构、残基突变、蛋白结构分析、可及表面计算、分析氢键、补全质子、原子间不正当接触检测、计算盐桥、生成FlexDock输入文件等等。</p>
<p>3D-JIGSAW：<a href="http://www.bmm.icnet.uk/~populus/">http://www.bmm.icnet.uk/~populus/</a><br>
简介：根据已知结构进行同源模建的在线工具，提交任务几个小时后会收到电子邮件反馈计算结果。</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/678cbfea778c78dad539c9e1.html#comment">查看评论</a>]]></description>
        <pubDate>2009-07-11  21:31</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/678cbfea778c78dad539c9e1.html</guid>
</item>

<item>
        <title><![CDATA[[原创]谈谈分子模拟中的隐式溶剂模型与GB模型(Updated 2009-Sep-24)]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/124afdd4e5979308a18bb7aa.html]]></link>
        <description><![CDATA[
		
		<p>谈谈分子模拟中的隐式溶剂模型与GB模型  Last Update: 2009-Sep-24</p>
<p>本文主要讨论分子模拟中隐式溶剂模型和GB模型（广义Born模型）的各个方面。</p>
<p><br>
隐式水模型优势主要有下：<br>
减少体系的粒子数从而降低计算开销。<br>
没有溶剂摩擦效应，可以加快构象变化。<br>
不显著、具体地表现溶剂运动而直接表现平均效果，便于计算自由能，不需要动力学很长时间采样。<br>
不需要显式水的预平衡过程。<br>
适用于常PH模拟、REMD等方法。<br>
适合计算能量面，结果比较光滑，真实的水会带来噪音，溶剂的运动、碰撞使主体分子产生许多能量局部极小点。<br>
等等......</p>
<p>总体来说，隐式(implicit)水模型相对于显式(explicit)水模型，是一个离散化到连续化的过程。溶剂模型的近似关系如下（越左边越真实，越右边近似程度越大）：<br>
显式溶剂模型--&gt;隐式溶剂模型--&gt;明确拆分为静电、非极性贡献--&gt;PB--&gt;GB</p>
<p>溶质分子在溶剂环境下的总能量Etot=溶剂化能deltaG(solv)+相同构象但是在真空中的能量Evac。<br>
deltaG(solv)=deltaG(elec)+deltaG(nonpolar)=deltaG(elec)+deltaG(vdw)+deltaG(cavity)</p>
<p>注：有时明确包含氢键项等近程强相互作用，但一般算进deltaG(elec)。另外，在真空和溶剂环境下，相同构象的溶质的振动模式改变（以低频为主）对配分函数的影响而导致的自由能变也应当加进去，但是由于难以计算，比较耗时，结果亦不准确，而且对自由能贡献很小，所以一般不考虑。至于在两种环境下同构象溶质的平动、转动变化对配分函数的影响以及P*delta(V)项引入的自由能变，则完全忽略。对于可极化力场，溶剂对溶质的极化作用造成的能变也算进在deltaG(solv)里。</p>
<p>其中deltaG(elec)就是溶剂环境下的静电作用能与真空下的静电作用能之差，主要包括溶剂与溶质间的静电作用，以及溶剂对溶质原子之间静电作用的屏蔽效果。deltaG(nonpolar)就是除此以外，即体系各原子皆无电荷时，溶剂环境与真空环境下能量之差。它又分为deltaG(vdw)和deltaG(cavity)。deltaG(vdw)是溶质与溶剂的范德华作用，由于范德华作用随距离衰减快，所以只考虑第一溶剂化层的溶剂，此项造成能量降低。deltaG(cavity)表现的是溶质反抗溶剂压力形成洞穴的做功以及溶质周围溶剂（第一溶剂化层为主）的重构造成的熵罚（溶剂在溶质表面会变得有序导致熵减小），此项造成能量升高。</p>
<p>因为deltaG(nonpolar)的两项都主要涉及第一溶剂化层，它正比于SASA（溶剂可及表面积），故最简单、常用的表达是a*SASA+b，比例系数a（有时也称为表面张力参数）由拟合实验值得到，一般为7.2cal/mol/&Aring;^2，b一般为0，这样计算结果可以重现碳氢化合物的水和能。也有其它一些隐势溶剂模型使用的表达式是∑a(i)SASA(i)，即不同类型原子使用不同的表面张力参数，然后乘以每个原子的SASA，最后加和，结果比全部原子使用相同表面张力参数一般更为准确。另有其它更严格的方案计算，比如包括溶质体积、溶质直径、溶剂密度等信息在内的方程，还有比如deltaG(vdw)通过对SAS的积分得到，而deltaG(cavity)仍用正比于SASA的方案等等。在GB模型下的MD模拟中，对于原始状态的生物大分子，由于SASA变化很小，原子因非极性作用导致的受力往往可以忽略，若需计算的话则是求它对坐标的导数。由于a*SASA+b的a为正值，可见deltaG(nonpolar)的效果是减小溶质的SASA，此项体现了疏水效应。</p>
<p>deltaG(elec)在量子化学中使用自洽反应场方法(SCRF)精确计算，溶剂效应对溶质的影响体现在对哈密顿算符添加的微扰项，会使溶质电子云被极化，它对溶剂产生影响，又使微扰项改变，故需要反复迭代求解。在一般的分子模拟中不需要太高计算精度，也为了运算速度，并不直接表达出电子，而是将原子抽象为一个数值不变的点电荷，多数情况也不再用额外方案考虑极化效应，故溶剂化自由能可以一步解出。最常用的方法是GB和PB方法计算，GB速度快但一般准确度低于PB。</p>
<p>Born方程是指在某种介电常数ε的溶剂中，使其中半径为a的粒子带上q电荷所引起自由能的改变为0.5*q^2/ε/a。Born方程加上库仑静电能就得到了体系静电能，求处在真空与处在ε溶剂中的静电能差，就得到了广义Born方程：-0.5*(1-1/ε)*∑[i]q(i)^2/a(i)-(1-1/ε)∑[j&gt;i]∑[i]q(i)q(j)/r(ij)，其中∑[i]代表对i下标的项加和。但是这样计算的结果高估了溶剂对处于分子内部原子之间相互作用的影响。目前常用的GB方程由Still于1990年提出（原文<a href="http://www.brsbox.com/filebox/down/fc/90f984299e8583a61e0f33942bd13260">http://www.brsbox.com/filebox/down/fc/90f984299e8583a61e0f33942bd13260</a>），依据是库仑定律和Born方程，但以另一种相似的形式出现。在这个方程中，当粒子相离较远时，方程等价于上述原始GB方程能量，相距为0时等价于Born方程，当距离较近时等价于Onsager反应场能量。方程中还可以再引入单价粒子的屏蔽校正项。GB方程得到的deltaG(elec)加上a*SASA得到的deltaG(nonpolar)来计算溶解自由能称为GB/SA方案，但我们往往直接简称为GB方案。GB方程使用的原子电荷q适合使用拟合静电势方法来得到，即ESP电荷。</p>
<p>GB方程中重要参数是有效Born半径。某个原子电荷与溶剂作用对deltaG(elec)的贡献实际上是把分子中其它原子电荷去掉后，溶剂化状态与真空状态能量差。如果用的有效Born半径以GB方程算的结果与之一样，就是正确的Born半径。或者粗略来说：某原子用有效Born半径算得的GB式中的&ldquo;自身项&rdquo;的能量应当与真实的分子中此原子与溶剂的静电相互作用能一致。这样，有了正确的Born半径，就可以用GB式得到合理的deltaG(elec)。</p>
<p>有效Born半径对计算deltaG(elec)有重要影响，模拟过程中分子构象不断改变，依赖于它的有效Born半径也不断改变，需要每一步重新计算，若构象变化不明显可每隔一定步数重新计算，这是GB计算量中的主要部分之一。计算有效Born半径在不同程序中有不同方法。一般使用CFA（库仑场近似），有效Born半径就可以对溶质分子表面内的空间进行积分获得。而分子内空间的范围不便于描述，简单的方法是直接将原子VDW球内区域叠加作为分子内空间，称GB-HCT，但这样就忽略了原子VDW空间之间的缝隙，可以乘以4/3来近似校正。也有人根据原子被埋程度的概念提出了基于经验的简单、快速的函数，其中引入可调参数，在amber里称为GB-OBC方法，结果明显优于GB-HCT，应注意可调参数是通过预先优化得到的，面向不同体系模拟应使用不同参数。amber中还支持更新的GBn方法，结果优于GB-OBC，适合蛋白而不适于核酸体系。</p>
<p>GB方程的优点是形式简单，计算快速，结果较准确，而且有简单的解析导数，可直接计算GB环境下原子在MD模拟中的受力。GB可以结合分子力场及量子力学模拟各种分子体系的溶剂化效果。可以用在类似MM/PBSA的结合自由能计算的静电项中，即MM/GBSA。一些模拟方法则只能使用GB，比如amber中可以实现的结合MC的常PH模拟，原理是根据Metropolis判据在MD过程中动态决定是否某点被质子化或去质子化。对于REMD，因为随着体系粒子数的增加，需要的副本数目飙升（否则能量重叠较差，交换概率低而起不到效果），所以总是结合GB方法来显著降低粒子数量。对于不大的体系，GB比显式溶剂模型有更快的速度。GB方程也被用于量子化学的溶剂模型中，称为SMx方法，将GB方程作为微扰项，电荷以Mulliken布局等方法得到。</p>
<p>但GB方法也有缺点。与显式水模型仍有一定差距，将水分子进行了&ldquo;连续化&rdquo;的近似，故不能表现与溶剂的强相互作用、特殊相互作用（如水桥）。对于膜体系，溶剂、溶质、膜都有着不同的介电常数，这样复杂的情况介电常数环境下GB也难以表达。对于电荷较多的核酸体系，也不能较好表达多价抗衡粒子与它的相互作用。一些研究也表明用GB模拟多肽会产生与显式溶剂模型不同的构象，与实验结果有一定偏差。计算deltaG(elec)项时，相对于原理严格的PB也有差距（即便使用最佳的有效Born半径），但是好处是GB计算速度快得多。不过PB的结果亦不可作为绝对的金标准，因为一些误差在PB引入的近似中就已经出现了。在计算速度上，显式溶剂体系计算量是O(N^2)，但使用Ewald等方法后，可降至Nlog(N)以下，而GB模型如果在cutoff上不做近似（往往取无限大），对于大体系反倒更慢。</p>
<p>除GB、PB以外也有其它一些方案，最简单的隐式模型是介电常数依赖于作用距离的方法，其中库仑作用的介电常数等于粒子间距离（即静电作用能1/r变为了1/(r^2)），以体现溶剂的屏蔽效果，此方法精度显然低于GB。近来还有一些新方法，如AGBNP（Analytical Generalized Born plus Nonpolar），在GB基础上引入另外形式的deltaG(nonpolar)项。ALPB（analytical linearized Poisson-Boltzmann），其方程类似GB（在无限介电常数下回归为GB方程），故有着基本一致的计算速度，但引入了有效分子静电尺寸参数，模拟水比GB有着更好的精度，结果更接近于PB。这些新模型理论上有着更好的结果，但仍需广泛地应用于模拟来检验。还有隐式与显式溶剂模型相结合的方法，也就是在主体分子外面包一层溶剂分子，往往以弹簧势限制住溶剂避免跑走，而更外面则用隐式溶剂模型，结合了两种方法的一些优点。</p>
<p>目前Amber对隐式溶剂模型支持较好，支持GB、ALPB，也有内建的PB模块pbsa（老版本挂的是第三方的delphi）。而Gromacs在最新版本4.0.5中尚不支持GB/PB，需要外接第三方软件如APBS，但在接下来的版本中即将加入GB。</p>
<p>对于GB模型，适用领域与不适用领域的界限尚为模糊，一般来说，对于必须用GB的地方，或者已证明有明显优势的地方可以使用，但如果不确定，尽量还是用显式溶剂模型，毕竟GB是基于多层近似后的溶剂模型。</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/124afdd4e5979308a18bb7aa.html#comment">查看评论</a>]]></description>
        <pubDate>2009-06-20  19:10</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/124afdd4e5979308a18bb7aa.html</guid>
</item>

<item>
        <title><![CDATA[[原创]用VMD做太极拳动画]]></title>
        <link><![CDATA[http://hi.baidu.com/sobereva/blog/item/8a394cf3de803858352acc2e.html]]></link>
        <description><![CDATA[
		
		用VMD做太极拳动画 文/Sobereva
<p> </p>
<p>VMD不仅仅可以用来做研究，还可以用来娱乐，在娱乐过程中也可以学到很多使用技巧。</p>
<p>这里我用VMD做了一个小人打太极拳的轨迹动画，以此为基础对方法进行说明，希望起到抛砖引玉的作用，由于时间所限，只作了5个动作。所用VMD为windows版1.8.6。</p>
<p><br>
<a target="_blank" href="http://flfqdq.blu.livefilestore.com/y1pkSvfKegrEWkVQ36pRrcso2Fq4z9CFgfT0FqcjiH9qeAA4GEmgzS2HGMpT7GU8zsLvjAVm_G1rp_-ZQTRqPhB7fgrP2edzU_c/snap.PNG"><img class="blogimg" border="0" small="0" src="http://flfqdq.blu.livefilestore.com/y1pkSvfKegrEWkVQ36pRrcso2Fq4z9CFgfT0FqcjiH9qeAA4GEmgzS2HGMpT7GU8zsLvjAVm_G1rp_-ZQTRqPhB7fgrP2edzU_c/snap.PNG"></a></p>
<p><br>
动画下载地址：<br>
<a href="http://www.brsbox.com/filebox/down/fc/7119b0d351ce6a86ca6636795fafdbea">http://www.brsbox.com/filebox/down/fc/7119b0d351ce6a86ca6636795fafdbea</a><br>
下载后，把解压后的文件放到vmd默认目录下（vmd控制台输入pwd后显示的路径）。启动一个新的vmd，在控制台输入source start.tcl，即开始播放，如上图。视角会自动调好，上方文字显示动作名称。</p>
<p> </p>
<p>制作方法：<br>
制作前先考虑做什么内容，不适合通过VMD来实现的题材尽量避开，这需要对VMD比较熟悉才能判断。用原子构成小人，做太极拳动作在VMD里是比较容易实现的。</p>
<p>首先绘制小人，虽然很多软件都可以干这个活，但是GaussView在我看来是最方便的。首先通过旋转调整好坐标轴，使YZ平面与屏幕平行。然后选择成添加原子的模式，在屏幕上点出来小人的关节原子，之后用设置化学键的方法将关节间连上。建议将头部、胳膊、腿、身子分别用不同元素原子，这可以使不同部位有不同颜色。此例中身体使用5个氮原子，名字为N1、N2、N3、N4、N5。最终绘制好后小人的整体平面应当恰在YZ平面上，脚踩在XY平面上。如果小人相对于坐标轴偏斜了，可以用这两个操作来调整：按住ALT后左键/右键拖动小人可以让小人旋转，但不旋转坐标轴。按住ALT和SHIFT后左键拖动小人可以让小人平移，但不平移坐标轴。</p>
<p> </p>
<p><a target="_blank" href="http://flfqdq.blu.livefilestore.com/y1pU_FrORZ0V4NTAXJEftNFioEiWHvpm0KctLpg2_ZrMqkvyCrdXrwCo4uo0J8MsaHjC-vZkOFj6g8p1FRaXgH06dKY7kf_8mIP/gs.png"><img class="blogimg" border="0" small="0" src="http://flfqdq.blu.livefilestore.com/y1pU_FrORZ0V4NTAXJEftNFioEiWHvpm0KctLpg2_ZrMqkvyCrdXrwCo4uo0J8MsaHjC-vZkOFj6g8p1FRaXgH06dKY7kf_8mIP/gs.png"></a></p>
<p>之后保存为man.mol2。mol2格式的一个好处是包含了原子间的拓扑关系，避免读入VMD后胡乱判断成键。接下来制作动画过程中的工作目录假定为d:\study\VMD186\manmovie（VMD启动后默认目录为d:\study\VMD186）。将man.mol2拷到工作目录下。</p>
<p> </p>
<p>做动画之前应当先把做动画的工具准备好，工欲善其事必先利其器，否则很难做。显然不可能做动画中每一帧时都挪动一次小人的原子然后保存，太费事。可以使用类似做flash的方法，先通过移动原子创建两个关键帧，然后生成过渡帧。我编了一个小软件vmdmovie，下载地址<a href="http://www.brsbox.com/filebox/down/fc/dfbaa1fb729dc6ac29564d589902a58b">http://www.brsbox.com/filebox/down/fc/dfbaa1fb729dc6ac29564d589902a58b</a>。将压缩包内的vmdmovie.exe拷到工作目录下。</p>
<p>使用方法：vmdmovie f.pdb l.pdb 10 3，其中f.pdb为起始关键帧，l.pdb为结束关键帧，10代表生成的过渡帧数，3代表过渡帧名字的前缀。vmdmovie输入和输出的都是.pdb格式。此例会输出003-00001.pdb 003-00002.pdb ..... 003-00011.pdb。实际共生成了11帧，其中最后一帧003-00011.pdb与结束关键帧l.pdb是一样的。</p>
<p>接下来要在vmd里构建好制作动画的环境。通过移动原子设定人物动作需要有准确的坐标，需要有东西作为参考，否则可能小人越做越歪。VMD的坐标轴在左下角，不好用来作为参考，所以需要在坐标原点处自行绘制一个新的坐标轴，并且显示出地面（XY平面）。另外每次移动小人原子后通过VMD菜单保存坐标太麻烦，若每次按一个键就能保存一个新坐标文件，且文件名连续就会方便很多。这需要下面的脚本。</p>
<p>在d:\study\VMD186下面创建一个reset.tcl文件，内容如下：<br>
set nowframe 0 #关键帧起始编号<br>
cd D:\\study\\VMD186\\manmovie #进入工作目录</p>
<p>mol delete top<br>
mol default style CPK #设默认显示方式为CPK，新载入的结构就会以CPK显示<br>
mol new D:\\study\\VMD186\\manmovie\\man.mol2</p>
<p>draw delete all #删除其它自行绘制的物件，绘制新的坐标轴<br>
draw color red<br>
draw cylinder { 0 0 0 } { 20 0 0 } radius 0.2<br>
draw cone { 20 0 0 } { 22 0 0 } radius 1 resolution 20<br>
draw color green<br>
draw cylinder { 0 0 0 } { 0 20 0 } radius 0.2<br>
draw cone { 0 20 0 } { 0 22 0 } radius 1 resolution 20<br>
draw color blue<br>
draw cylinder { 0 0 0 } { 0 0 20 } radius 0.1<br>
draw cone { 0 0 20 } { 0 0 22 } radius 1 resolution 20<br>
draw color white #绘制两个白色的三角组成矩形，来表示地面<br>
draw triangle {15 -35 0} {-15 -35 0} {-15 35 0}<br>
draw triangle {15 -35 0} {15 35 0} {-15 35 0}</p>
<p>rotate y by -90 #旋转、调整好视角<br>
rotate z by 270<br>
scale to 0.12 #设定缩放尺寸，越小则人物越小<br>
mol addrep top #新增一个representation（以下简称rep）<br>
mol modselect 1 top {name N1 N2 N3 N4 N5} #新rep所选内容设为小人的身体原子</p>
<p>set sel [atomselect top all]</p>
<p>user add key o { #新加入一个快捷键，在VMD的3D窗口中按o，小人的坐标就会被保存一次<br>
global nowframe<br>
incr nowframe #每次保存坐标时更新文件名，最终得到1.pdb 2.pdb ......<br>
$sel writepdb $nowframe.pdb}</p>
<p>启动vmd，控制台运行source reset.tcl，此时会看到场景被布置好了。</p>
<p> </p>
<p><a target="_blank" href="http://flfqdq.blu.livefilestore.com/y1pkSvfKegrEWk6Tmn6N56rvSTXSW74utEwmvMU7kkplDJ0w3ilMEvS9YaMK0r9rjTWZRq890wrA7X7IYPKL0q5RIdcRB2YzbVf/reset.PNG"><img class="blogimg" border="0" small="0" src="http://flfqdq.blu.livefilestore.com/y1pkSvfKegrEWk6Tmn6N56rvSTXSW74utEwmvMU7kkplDJ0w3ilMEvS9YaMK0r9rjTWZRq890wrA7X7IYPKL0q5RIdcRB2YzbVf/reset.PNG"></a></p>
<p>现在按o，得到第一个关键帧。会看到工作目录出现了1.pdb。然后按数字键5，即选成移动原子的模式，拖动每个关节原子，将它们摆成下一个关键帧的位置，再按o，工作目录就有了2.pdb，依此类推，得到所有关键帧的结构文件。挪动原子时主要靠三视图来定位原子，以避免偏离，也就是依次在三个坐标轴垂直于屏幕时挪动原子。建议不要使用透视模式，而使用正交模式(Display-Orthographic)，这样可以比较容易看出当前视角是否摆正了。</p>
<p>涉及到小人身体移动的时候将组成身体的5个原子一个一个地移动比较麻烦，而且可能导致身体变形。VMD里面有个很好的功能，就是可以移动整个rep包含的原子，由于rep的内容可以十分灵活地选择，所以可以整体移动任意范围的原子。前面的脚本已经将小人的身体设定了一个rep，但是由于身体的rep与整个小人rep相重叠，鼠标点这个rep不到，所以在Representations里先将身体的rep原子半径设大（Sphere Scale设大），这样就可以点到了。之后在3D窗口里点数字9进入Rep移动模式，就可以鼠标拖动身体平移了，按住shift拖动是旋转身体。</p>
<p> </p>
<p>之后我们把所有关键帧之间生成过渡帧，控制台运行：<br>
for {set i 0} {$i&lt;100} {incr i 1} {vmdmovie $i.pdb [expr $i+1].pdb 10 $i}<br>
这里假设关键帧数小于100，每个关键帧之间插10帧。</p>
<p>现在我们来看看结果，删除当前分子的所有帧，然后运行：<br>
foreach i [glob 0*.pdb] {mol addfile $i}<br>
这里假设关键帧数小于100，所以生成的帧名字开头为0，这条命令就把所有生成的帧读进去了。注意读入的不仅仅是过渡帧，也包括关键帧，因为vmdmovie每次生成的帧的最后一帧就是关键帧。</p>
<p>现在就可以播放了。如果发现某帧不合适，就把那帧读入，改完坐标后保存，再用vmdmovie生成过渡帧，vmdmovie的速度是比较快的。</p>
<p>如果没问题，就file-save coordinates，选择原子范围设all，文件类型设.trr，保存为all.trr放到工作目录下。</p>
<p> </p>
<p>最后我们希望在动画播放时加一些花样，比如显示字幕、用VMD绘图函数绘制场景等等，可以使用一个.tcl脚本来完成。太极拳动画压缩包里的start.tcl就是做这个用的，这里解释一下：</p>
<p>trace variable vmd_frame(1) w sdf #每当ID=1的分子帧数变化时（比如播放时），即vmd_frame(1)变量变化时，就调用sdf命令，这里ID=1就是小人的动画<br>
mol new #新生成一个层，即ID=0的层，用来绘制地面、显示文字</p>
<p>proc sdf {args} { #下面定义sdf命令的行为，用来显示当前小人动作的名称<br>
global vmd_frame #vmd_frame是VMD自带的数组变量，第n个元素就是ID=n的帧的当前帧号，在自定义指令里调用这个全局数组变量需要先用这条命令使它在内部可用。<br>
graphics 0 delete all #删除之前的字<br>
graphics 0 color white #设字为白色</p>
<p>if {$vmd_frame(1)&lt;150} {graphics 0 text {0 -23 18} &quot;Qi Shi&quot; size 4<br>
} elseif {$vmd_frame(1)&lt;580} {graphics 0 text {0 -23 18} &quot;ZuoYouYeMaFenZong&quot; size 3 #当帧数在150~580之间的时候就在屏幕上方显示ZuoYouYeMaFenZong，文字的坐标需要自行调整尝试才能合适。VMD不支持中文，所以只能将&ldquo;左右野马分鬃&rdquo;用拼音来写。<br>
} elseif {$vmd_frame(1)&lt;640} {graphics 0 text {0 -23 18} &quot;BaiHeLiangChi&quot; size 3<br>
} elseif {$vmd_frame(1)&lt;850} {graphics 0 text {0 -23 18} &quot;ZuoLouXiAoBu&quot; size 3<br>
} elseif {$vmd_frame(1)&lt;964} {graphics 0 text {0 -23 18} &quot;Shou Shi&quot; size 4}</p>
<p>if {$vmd_frame(1)==640} {after 800} #在白鹤亮翅这个动作做完时停顿一下，停止800ms<br>
if {$vmd_frame(1)==545} {after 500}<br>
}</p>
<p>mol default style CPK<br>
mol new man.mol2 #读入小人.mol2文件作为初始帧并确定拓扑关系，随后读入动画轨迹all.trr<br>
mol addfile all.trr<br>
draw color white #绘制地面<br>
draw triangle {15 -35 0} {-15 -35 0} {-15 35 0}<br>
draw triangle {15 -35 0} {15 35 0} {-15 35 0}<br>
rotate y by -90<br>
rotate z by 270<br>
scale to 0.1<br>
animate speed 0.96 #播放速度，1为全速<br>
translate by 1 0 0 #平移场景至位置合适<br>
animate forward #播放动画</p>
<p><br>
本文的目的是希望大家能够解放思想，运用VMD可以制作出有趣的动画，寓教于乐。VMD还可以用来制作简单游戏，我会在以后谈到。</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/sobereva/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/sobereva/blog/item/8a394cf3de803858352acc2e.html#comment">查看评论</a>]]></description>
        <pubDate>2009-05-25  20:40</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[sobereva]]></author>
		<guid>http://hi.baidu.com/sobereva/blog/item/8a394cf3de803858352acc2e.html</guid>
</item>


</channel>
</rss>