Saturday, December 14, 2013

怎么制作好的PPT SLIDES

做好科研的PPT报告很重要,我这里总结一下几个要点。
1. 主题要明确,做研究的动机,理论,现有进展,你的主要研究步骤,主要结果,结论要给出。
2. 重要的东西要放前面。
2.讲清楚东西新在哪里?和别人的不同在哪里?
2. 每个页面要有标题。
3.要有OUTLINES,具体说要有清晰的小节和分界线。
4. 图片要漂亮,清楚。
5. 页面要留点空间,别太满。



Friday, December 13, 2013

转载-来自MIT人工智能实验室:如何做研究?

作者:人工智能实验室全体研究生
编辑:David Chapman
版本:1.3
时间:19889
译者:柳泉波 北京师范大学信息学院2000级博士生


研究是艰苦的工作,很容易对之失去兴趣。一个令人尴尬的事实是在本实验室读博的学生只有很少比例最后获得学位。有些人离开是因为可以在产业界赚到更多的钱,或者由于个人的原因;最主要的原因则是由于论文。本节的目标是解释这种情况发生的原因,并给出一些有益的建议。
  所有的研究都包含风险。如果你的项目不可能失败,那是开发,不是研究。面对项目失败时是多么艰难啊,很容易将你负责的项目失败解释为你自己的失败。虽然,这实际上也证明了你有勇气向困难挑战。
   在人工智能领域很少有人总是一直成功,一年年地出论文。实际上,失败是经常的。你会发现他们经常是同时做几个项目,只有一些是成功的。最终成功的项目也 许反复失败过多次。经历过很多由于方法错误的失败之后,才取得最终的成功。在你以后的工作生涯中,会经历很多失败。但是每一个失败的项目都代表了你的工 作,很多思想,思考方式,甚至编写的代码,在若干年后你发现可用于另外一个完全不同的项目。这种效果只有在你积累了相当程度的失败之后才会显现出来。因此 要有最初的失败以后将会起作用的信念。
   研究所花费的实际时间往往比计划的要多得多。一个小技巧是给每个子任务分配三倍于预期的时间(有些人加了一句:“……,即使考虑了这条原则”)。成功的 关键在于使得研究成为你日常生活的一部分。很多突破和灵感都发生在你散步时。如果无时无刻地都潜意识的思考研究,就会发现思如泉涌。成功的AI研究者,坚持的作用一般大于天资。“尝试”也是很重要的,也就是区分浅薄的和重要的思路的能力。
   你会发现自己成功的比例是很随机的。有时候,一个星期就做完了以前需要三个月才能完成的工作。这是令人欣喜的,使得你更愿意在本领域工作下去。其他一些 时候,你完全陷在那里,感觉什么也做不了。这种情况很难处理。你会觉得自己永远不会做出任何有价值的东西了,或者觉得自己不再具备研究者的素质了。这些感 觉几乎肯定是错误的。如果你是MIT录取的学生,你就是绝对合格的。你需要的是暂停一下,对糟糕的结果保持高度的容忍。
  通过定期设置中短期的目标,例如每周的或者每月的,你有很多工作要做。增加达到这些目标的可能性有两种方法,你可以把目标记在笔记本中,并告诉另外一个人。你可以与某个朋友商定交换每周的目标并看谁最终实现了自己的目标。或者告诉你的导师。
  有时你会完全陷在那里,类似于写作过程的思路阻塞,这有很多可能的原因,却并无一定的解决方法。
  范围过于宽泛了,可尝试去解决流程中的子问题。
  有时候对你研究能力的怀疑会消磨掉你所有的热情而使得你一事无成。要牢记研究能力是学习而得的技能,而不是天生的。
  如果发现自己陷入严重的困境,一个多星期都毫无进展,尝试每天只工作一小时。几天后,你可能就会发现一切又回到了正轨。
  害怕失败会使得研究工作更加困难。如果发现自己无法完成工作,问问自己是否是由于在逃避用实验检验自己的思路。发现自己最近几个月的工作完全是白费的这种可能,会阻止你进一步开展工作。没有办法避免这种情况,只要认识到失败和浪费也是研究过程的一部分。
  看看Alan Lakien的书《How to Get Control of Your Time and Your Life》, 其中包含很多能使你进入充满创造力的状态的无价方法。很多人发现自己的个人生活和做研究的能力是相互影响的。对于有些人来说,当生活中一切都不如意时,工 作是避难所。其他的人如果生活陷入混乱时就无法工作了。如果你觉得自己确实悲痛得难以自拔,去看看心理医生。一份非正式的调查表明,我们实验室大约有一半 的学生在读研期间看过一次心理医生。
   使得人工智能那么难的一个原因是没有被普遍接受的成功标准。在数学中,如果你证明了某个定理,你就确实做了某些事情;如果该定理别人都证不出来,那么你 的工作是令人兴奋的。人工智能从相关的学科中借来了一些标准,还有自己的一些标准。不同的实践者,子领域和学校会强调不同的标准。MIT比 其他的学校更强调实现的质量,但是实验室内部也存在很大的不同。这样的一个后果就是你不可能令所有的人都满意。另外一个后果就是你无法确定自己是否取得了 进展,这会让你觉得很不安全。对你工作的评价从“我所见过最伟大的”到“空虚,多余,不明所以”不一而足,这都是很正常的,根据别人的反馈修订自己的工 作。
   有几种方法有助于克服研究过程中的不安全感。被承认的感觉:包括毕业论文的接受,发表论文等。更重要的是,与尽可能多的人交流你的思路,并听取反馈。首 先,他们能贡献有用的思路;其次,肯定有一些人会喜欢你的工作,这会使得你感觉不错。由于评价进展的标准是如此不确定,如果不与其他的研究者充分的交流, 很容易盲目。特别当你感觉不太好时,应该就你的工作进行交流。此时,获得反馈和支持是非常重要的。
  很容易看不到自己的贡献,总是想:“如果我能做,肯定是微不足道的。我的所有思想都太明显了”。实际上,当你回头看时,这些虽然对你是很明显的,对别人并不一定是明显的。将你的工作解释给很多门外汉听,你会发现现在对你来说是平淡无奇的东西原来那么难!写下来。
   一项对诺贝尔获奖者实施的有关怀疑自己问题(在你研究的过程中,你一直觉得自己是在做震惊世界的工作吗?)的调查表明:获奖者们一致回答他们经常怀疑自 己工作的价值和正确性,都经历过觉得自己的工作是无关的,太明显了或者是错误的时期。任何科学过程的常见和重要的部分就是经常严格的评价,很多时候不能确 定工作的价值也是科学过程不可避免的一部分。
   有些研究者发现与别人协作比单打独斗工作效果更好。虽然人工智能研究经常是相当个人主义的,但是也有一部分人一起工作,创建系统,联合发表论文。我们实 验室至少已经有一个联合做毕业论文的先例。缺点是很难与协作者区分对论文的贡献。与实验室之外的人合作,例如暑期工作时,问题就会少一些。
  很多来到MIT AI实 验室的学生都是以前所在学校最厉害的人。来到这里之后,会发现很多更聪明的人。这对于很多一年级左右学生的自尊形成了打击。但周围都是聪明人也有一个好 处:在你把自己不怎么样的(但自己又没有觉察到)想法发表之前就被其他人给打倒在地了。更现实的讲,现实世界中可没有这么多聪明人。因此到外面找一份顾问 的工作有利于保持心理平衡。首先,有人会为你的才能付费,这说明你确实有些东西。其次,你发现他们确实太需要你的帮助了,工作良好带来了满足感。反之,实 验室的每一个学生都是从四百多个申请者挑选出来的,因此我们很多学生都很自大。很容易认为只有我才能解决这个问题。这并没什么错,而且有助于推进领域的发 展。潜在的问题是你会发现所有的问题都比你想象的要复杂得多,研究花的时间比原先计划的多得多,完全依靠自己还做不了。这些都使得我们中的很多人陷入了严 重的自信危机。你必须面对一个事实:你所做的只能对某个子领域的一小部分有所贡献,你的论文也不可能解决一个重大的问题。这需要激烈的自我重新评价,充满 了痛苦,有时候需要一年左右的时间才能完成。但这一切都是值得的,不自视过高有助于以一种游戏的精神去作研究。
   人们能够忍受研究的痛苦至少有两个情感原因。一个是驱动,对问题的热情。你做该研究是因为离开它就没法活了,很多伟大的工作都是这样做出来的。虽然这样 也有油尽灯枯的可能。另外一个原因是好的研究是充满乐趣的。在大部分时间里,研究是令人痛苦的,但是如果问题恰好适合你,你可以玩一样的解决它,享受整个 过程。二者并非不可兼容的,但需要有一个权衡。
  要想了解研究是怎么样的,遭到怀疑的时候应该如何安慰自己,读一些当代人的自传会有些作用。Gregory Bateson's Advice to a Young Scientist, Freeman Dyson's Disturbing the Universe, Richard Feynmann's Surely You Are Joking, Mr. Feynmann!, George Hardy's A Mathematician's Apology, Jim Watson's The Double Helix.
  当你完成了一个项目——例如论文——一两个月后,你可能会觉得这一切是那么不值。这种后冲效果是由于长时间被压抑在该问题上,而且觉得本可以做得更好。总是这样的,别太认真。等再过了一两年,回头看看,你会觉得:嘿,真棒!多棒的工作

Wednesday, November 27, 2013

Gaussian transition state scan input file


#P HF/6-31G(d) opt=Z-Matrix

HCN to CNH isomerization pathway, HF/6-31G(d)

0 1
N1
C2  1  r2
H3  2  r3  1  a3

r2=1.2
r3=1.1
a3=170.0 S  16  -10.0

Monday, November 25, 2013

gnuplot: some scripts and tips



script:
COLVAR gnuplot script.
set xrange [0:1]
set yrange [0:10]
plot "COLVAR" u ($1/120*20*0.0242*6/1000):2 t "CV  C1" w l, \
     "COLVAR" u ($1/120*20*0.0242*6/1000):3 t "    C2" w l, \
     "COLVAR" u ($1/120*20*0.0242*6/1000):4 t "    F1" w l, \
     "COLVAR" u ($1/120*20*0.0242*6/1000):5 t "an  F2" w l, \
     "COLVAR" u ($1/120*20*0.0242*6/1000):6 t "    H1" w l, \
     "COLVAR" u ($1/120*20*0.0242*6/1000):7 t "    H2" w l, \
     "COLVAR" u ($1/120*20*0.0242*6/1000):8 t "    H3" w l, \
     "COLVAR" u ($1/120*20*0.0242*6/1000):9 t "    H4" w l, \
     "COLVAR" u ($1/120*20*0.0242*6/1000):10 t "    H5" w l
set output "colvar.jpg"
set terminal jpeg
replot
-----------------------------------------------------------------------------------------
KS energy script file
set xrange [0:29.1]
set yrange [0:160]
plot "ENERGIES" u ($1*0.0242*6/1000):($4+55.9)*2625.50/4.18 notitle w l
set output "1000k-ch3oh-o2-no4-Eksvstime-ps-v2.jpg"
set terminal jpeg
replot
---------------------------------------------------------------------------------------
multiple script file

set output "h-so2-Eksvstime-sprint-ps.jpg"
set terminal jpeg


set multiplot layout 3,1
#set tmargin 0.2
#set bmargin 0.8
set lmargin 5
#set rmargin 5

set xrange [0:4.35]
set yrange [0:320]
set ytic 0,50,300
set format x " "
plot "ENERGIES" u ($1-10500)*6*0.0242/1000:(($4+42.54)*2625.50) notitle w l



set xrange [0:4.35]
set yrange [0:80]
set ytic 0,20,60
set format x " "
plot "ENERGIES" u ($1-10500)*6*0.0242/1000:($2*2625.50) notitle w l



set xrange [0:4.35]
set yrange [0:3.0]
set ytic 0,1.0,2.5
set key center bottom
set key spacing .6
set key font ",6"
set format x " %g "
plot "COLVAR" u ($1/120*20-10500)*6*0.0242/1000:2 t "SPRINT S1" w l, \
     "COLVAR" u ($1/120*20-10500)*6*0.0242/1000:3 t "       O1" w l, \
     "COLVAR" u ($1/120*20-10500)*6*0.0242/1000:4 t "       O2" w l, \
     "COLVAR" u ($1/120*20-10500)*6*0.0242/1000:5 t "       H1" w l

unset multiplot
set output

Friday, November 22, 2013

metadynamic and well-tempered metadynamics

well tempered mtd
------------------------------------------------------------------
# CPMD units are a.u.: energy = hartree, distance = bohr, time = 0.024 fs
HILLS  HEIGHT 0.00009 W_STRIDE 50
WELLTEMPERED SIMTEMP 300 BIASFACTOR 10
PRINT W_STRIDE 20

g1->
1 2 3 4 5 6 8 9 10 11 12
g1<- p="">
POSITION LIST SIGMA 0.35 DIR Z

ENDMETA


MTD
-------------------------------------------------------------------
# CPMD units are a.u.: energy = hartree, distance = bohr, time = 0.024 fs
HILLS RESTART HEIGHT 0.009 W_STRIDE 300
PRINT W_STRIDE 20

all->
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
all<- div="">

SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 1 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 2 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 3 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 4 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 5 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 6 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 7 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 8 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 9 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 10 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 11 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 12 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 13 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 14 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 15 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 16 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 17 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 18 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 19 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 20 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 21 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 22 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 23 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 24 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 25 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 26 SIGMA 1.5
SPRINT LIST NN 6 MM 12 R_0 10  5.0 5.0 5.0 4.2 5.0 5.0 4.2 5.0 4.2 4.2 INDEX 27 SIGMA 1.5



RGYR LIST SIGMA 1.5
NOHILLS CV 28

UWALL CV 28 LIMIT 8.00 KAPPA 0.5 EXP 2

ENDMETA

Thursday, November 21, 2013

Gaussian some input files for transition states

pbs file
#!/bin/bash
#PBS -N test
#PBS -l nodes=1:ppn=8
#PBS -l walltime=8:00:00
#PBS -j oe
### this will send and email when your job's status changes

### Specify the app to run here                           ###
###                                                       ###
cd $PBS_O_WORKDIR
export g09root="/codes/G09"
export GAUSS_SCRDIR=$PBS_O_WORKDIR
#GAUSS_SCRDIR="/GAUSS_SCRATCH"
#export g09root GAUSS_SCRDIR
. $g09root/g09/bsd/g09.profile



## AND NOW WE DO A CALCUATION
##     g09 test.com
       g09 nofre.com
##   g09 opt.com
### include any post processing here                      ###
###                                                       ###
#

exit 0

-----------------------------------------------------------------------------------------------------
qst2

%chk=ts-ch3oh-o2.chk
%nprocshared=8
%mem=16gb
# HF/6-31G* opt(qst2)

reactants

0,3
 C     -3.177481      1.256011     -0.187008
 O     -2.284301      2.342144     -0.515577
 O      0.492876     -1.214734     -0.800401
 O      0.426581     -1.291085      0.456829
 H     -4.238756      1.523717     -0.259563
 H     -2.955856      1.011776      0.884952
 H     -2.897823      0.467761     -0.819904
 H     -2.002079      2.824345      0.282715

products

0,3
 C    -1.645926    -0.498130    -1.077528
 O    -0.653966    -0.919073    -0.210084
 O    -0.966639     2.622203    -0.355541
 O    -1.547804     2.285127     0.638756
 H    -1.389444     1.733866    -1.118653
 H    -2.380255     0.183607    -0.458397
 H    -1.835573    -1.384190    -1.610873
 H    -0.680901    -0.013826     0.290209

----------------------------------------------------------------------------------------------------------
qst3

%chk=ts-ch3oh-o2.chk
%nprocshared=8
%mem=16gb
# HF/6-31G* opt(qst3)

reactants

0,3
 C     -1.831936     -0.455294     -1.000156
 O     -0.493883     -0.890046     -0.235749
 O     -0.766284      1.611589     -0.147007
 O     -1.805811      1.258415      0.542778
 H     -1.655954      0.534975     -1.543149
 H     -2.343630     -0.276478     -0.109751
 H     -2.120258     -1.175328     -1.691490
 H     -0.381442     -0.063029      0.144704

products

0,3
 C     -1.900815     -0.845392     -0.927500
 O     -0.665315     -0.785582     -0.219485
 O     -1.001482      1.767697     -0.378953
 O     -1.532152      1.101734      0.691260
 H     -0.132511      1.357497     -0.774537
 H     -2.655260      0.101360     -0.672792
 H     -1.549617     -1.018987     -1.970438
 H     -0.674073      0.069990      0.341985

transition state

0,3
 C     -1.645926     -0.498130     -1.077528
 O     -0.653966     -0.919073     -0.210084
 O     -0.966639      1.622203     -0.355541
 O     -1.612905      1.247369      0.750135
 H     -1.389444      0.733866     -1.118653
 H     -2.380255      0.183607     -0.458397
 H     -1.835573     -1.384190     -1.610873
 H     -0.680901     -0.013826      0.290209

------------------------------------------------------------------------------------------------
direct ts opt file

%chk=ts-ch3oh-o2.chk
%nprocshared=8
%mem=16gb
# BLYP/6-311+G** opt(calcall,ts,noeigen,maxcycle=1000, Cartesian) freq scf=maxcycle=1000 nosymm 

this is a test for ts

0,3
 C    -1.645926    -0.498130    -1.077528
 O    -0.653966    -0.919073    -0.210084
 O    -0.966639     1.622203    -0.355541
 O    -1.547804     1.285127     0.638756
 H    -1.389444     0.733866    -1.118653
 H    -2.380255     0.183607    -0.458397
 H    -1.835573    -1.384190    -1.610873
 H    -0.680901    -0.013826     0.290209

Wednesday, November 20, 2013

perl and bash scripts

killjobs.sh
for ((i=1082042;i<1082096 br="" i="">do
qdel $i.login1
done

echo "all jobs done!"
---------------------------------------------------------------------------

makefile.sh
i=0

for ((i=0;i<20 br="" i="">do
mkdir ch3oh-o2$i
cat inputpart1 o2part$i inputpart2 >> input-o2-$i
cat inputpart1-pro o2part$i inputpart2 >> input-o2-$i-pro
mv input-o2-$i ch3oh-o2$i/input
mv input-o2-$i-pro ch3oh-o2$i/input-pro
cp cpmdrun.pbs plumed.dat plumed-pro.dat ch3oh-o2$i
done

#for ((i=0;i<10 br="" i="">#do
#cd ch3oh-oxy$i
#qsub cpmdrun.pbs
#cd ..
#done

rm o2part*
echo "all jobs done!"
--------------------------------------------------------------------------------------------
read-o2.pl

#! /usr/bin/perl -w
my @line=0;
my $i=0;
open FILE1, "20noatomo2methanol.xyz" or die $!;
@line=;
for ($i=0;$i<20 br="" i="">open FILE2, "> o2part$i";
print FILE2 $line[2*$i];
print FILE2 $line[2*$i+1];
close FILE2;
}
close FILE1;
------------------------------------------------------------------------------------------------------


use-findall.sh

i=0
mkdir all-fourfiles
for ((i=0;i<4 br="" i="">do
./find-1214161820.pl ch3oh-o2$i/production/TRAJEC.xyz
mv requiredTimestepsCordinates.xyz all-fourfiles/coordinate$i.xyz
done


echo "all jobs done!"
------------------------------------------------------------------------------------------------------

sum_wham.sh

#!/bin/bash


metafile=wham_metafile
fesout=fes.out

rm -rf $metafile $fesout
points=1000  #there are 500 points/COLVAR, we'll not count the 1st 50 for equilibration.

## important note!  Umbrella sampling uses a potential like
##  V = 1/2 kappa (CV - CV(0))^2 but UWALL/LWALL don't have the 1/2 in there. So if you are using
##  UWALL/LWALL to do your umbrella sampling, then you need to multiply your K value by 2!

for file in shortp? longp? longp??; do


tail -n $points $file/COLVAR | awk '{print $1,$2}' > $file/whamcv;

## get kappa value - multiply by 2
kappa=`grep UMBRELLA $file/plumed.dat  | head -n 1 | awk '{print $5}'`
## get umbrella center
PV=`grep UMBRELLA $file/plumed.dat  | head -n 1 | awk '{print $7}'`
echo $file/whamcv $PV $kappa >> wham_metafile
done;

first=`sort -n -k2 wham_metafile | awk '{print $2}' | head -n 1 `
last=`sort -n -k2 wham_metafile | awk '{print $2}' | tail -n 1 `
num=`wc -l wham_metafile | awk '{print $1}'`
tol=$1


wham $first $last $num 0.0001 300 0 $metafile $fesout$tol

--------------------------------------------------------------------------------------------------
read-operate.pl ! to generate the z direction small changes




#! /usr/bin/perl -w
use warnings;
use strict;

my $i=0;

my @total;
my @data1;
my @data2;
my @data3;
my @data4;
my @data5;
my @data6;

open FILE, 'cgeo.xyz' or die "without such a file, $!";
while () {
$total[$i]=$_;
$i++;
}

#print $total[0];

@data1=split /\s+ /, $total[0];
@data2=split /\s+ /, $total[1];
@data3=split /\s+ /, $total[2];
@data4=split /\s+ /, $total[3];
@data5=split /\s+ /, $total[4];
@data6=split /\s+ /, $total[5];

#my $test=pop @data1;

#print scalar $data1[1];
#print scalar @data1;

for($i=1;$i<61 file="" i="">

$data1[3]=$data1[3]+0.0529;
$data2[3]=$data2[3]+0.0529;
$data3[3]=$data3[3]+0.0529;
$data4[3]=$data4[3]+0.0529;
$data5[3]=$data5[3]+0.0529;
$data6[3]=$data6[3]+0.0529;
open DATA, ">clongp$i";
print DATA "@data1\n";
print DATA "@data2\n";
print DATA "@data3\n";
print DATA "@data4\n";
print DATA "@data5\n";
print DATA "@data6\n";
close (DATA);
}

@data1=split /\s+ /, $total[0];
@data2=split /\s+ /, $total[1];
@data3=split /\s+ /, $total[2];
@data4=split /\s+ /, $total[3];
@data5=split /\s+ /, $total[4];
@data6=split /\s+ /, $total[5];

for($i=1;$i<11 file="" i="">

$data1[3]=$data1[3]-0.0529;
$data2[3]=$data2[3]-0.0529;
$data3[3]=$data3[3]-0.0529;
$data4[3]=$data4[3]-0.0529;
$data5[3]=$data5[3]-0.0529;
$data6[3]=$data6[3]-0.0529;
open DATA, ">clongp-$i";
print DATA "@data1\n";
print DATA "@data2\n";
print DATA "@data3\n";
print DATA "@data4\n";
print DATA "@data5\n";
print DATA "@data6\n";

close (DATA);
}




#print @total;
#print "@data1";
$i=0;
open FILEH, 'hgeo.xyz' or die "without such a file, $!";
while () {
$total[$i]=$_;
$i++;
}

#print $total[0];

@data1=split /\s+ /, $total[0];
@data2=split /\s+ /, $total[1];
@data3=split /\s+ /, $total[2];
@data4=split /\s+ /, $total[3];
@data5=split /\s+ /, $total[4];
@data6=split /\s+ /, $total[5];

#my $test=pop @data1;

#print scalar $data1[1];
#print scalar @data1;

for($i=1;$i<61 br="" i="">$data1[3]=$data1[3]+0.0529;
$data2[3]=$data2[3]+0.0529;
$data3[3]=$data3[3]+0.0529;
$data4[3]=$data4[3]+0.0529;
$data5[3]=$data5[3]+0.0529;
$data6[3]=$data6[3]+0.0529;
open DATA, ">hlongp$i";
print DATA "@data1\n";
print DATA "@data2\n";
print DATA "@data3\n";
print DATA "@data4\n";
print DATA "@data5\n";
print DATA "@data6\n";
close (DATA);
}

@data1=split /\s+ /, $total[0];
@data2=split /\s+ /, $total[1];
@data3=split /\s+ /, $total[2];
@data4=split /\s+ /, $total[3];
@data5=split /\s+ /, $total[4];
@data6=split /\s+ /, $total[5];

for($i=1;$i<11 br="" i="">$data1[3]=$data1[3]-0.0529;
$data2[3]=$data2[3]-0.0529;
$data3[3]=$data3[3]-0.0529;
$data4[3]=$data4[3]-0.0529;
$data5[3]=$data5[3]-0.0529;
$data6[3]=$data6[3]-0.0529;
open DATA, ">hlongp-$i";
print DATA "@data1\n";
print DATA "@data2\n";
print DATA "@data3\n";
print DATA "@data4\n";
print DATA "@data5\n";
print DATA "@data6\n";

close (DATA);
}


perl and bash scripts ---II

read-water.pl
#! /usr/bin/perl -w
my @line=0;
my $i=0;
open FILE1, "10waterch3och3noatom.xyz" or die $!;
@line=;
for ($i=0;$i<10 br="" i="">open FILE2, "> water-opart$i";
open FILE3, "> water-hpart$i";
print FILE2 $line[3*$i];
print FILE3 $line[3*$i+1];
print FILE3 $line[3*$i+2];
close FILE2;
close FILE3;
}
close FILE1;
------------------------------------------------------------------------------------------------------

std.pl

#! /usr/bin/perl -w -l

my @eksenergy=0;
my $tempnumber=0;
my $nobias_average_energy=0;
my $product_average_energy=0;
my $temptotal=0;
my $count=0;
my $energy_std=0;
my $selected_range_start=0;
my $selected_range_end=35000;

open ENERGYFILE, 'eks.dat' or die 'can not find the file!';
while (){
$eksenergy[$tempnumber]=$_;
$tempnumber++;
}

close ENERGYFILE;
print 'total numbers are ', $tempnumber;

for ($count=$selected_range_start;$count<$selected_range_end; $count++){
$temptotal=$eksenergy[$count]+$temptotal;
}

$nobias_average_energy=$temptotal/($selected_range_end-$selected_range_start);

$temptotal=0;

for ($count=$selected_range_start;$count<$selected_range_end;$count++){
$temptotal=($eksenergy[$count]-$nobias_average_energy)**2+$temptotal
}

$energy_std=($temptotal/($selected_range_end-$selected_range_start))**(1/2);

print 'the STD is ', $energy_std*627.509;

print 'the average is ', $nobias_average_energy*627.509;
-----------------------------------------------------------------------------------------------------------

decide-h3.pl

#! /usr/bin/perl -w
my @line=0;
my $i=0;
open FILE1, "COLVAR" or die $!;
@line=;
for ($i=0;$i<500 br="" i="">open FILE2, "> hpart$i";
print FILE2 $line[$i];
close FILE2;
}
close FILE1;
-----------------------------------------------------------------------------------------------------------

 find-1214161820.pl

#! /usr/bin/perl -w

my @fileContent=0; # array to store contents of a file

my @tempStore=0;  # temporary array to store data

my @requiredCoordinates=qw(120001 140001 160001 180001 200001); # get the required time-step coordinates in a TRAJECTORY file.

my $moleculeNumberOfAtoms=8; # the number of one system: methanol and oxygen

my $numberOfSeparation=2; # the separation lines between two coordinate file

my $tempNumber=0; # the temporary number used in program

my $tempNumberTwo=0; # the temporary number used in program

my $coordInterval=50; # every 50 time step we choose one trajectory

open INPUTFILE, "@ARGV" or die "can not open TRAJEC.xyz $!"; # open the trajectroy file. If no files, returen a warning.

@fileContent=; # open the TRAJEC.xyz file and store it into fileContent array

open OUTPUTFILE, ">>requiredTimestepsCordinates.xyz"; # open a new file to store the required coordinates.

for ($tempNumber=0;$tempNumber<5 array="" br="" elements="" five="" in="" nbsp="" read="" requiredcoordinates="" tempnumber="">
for ($tempNumberTwo=0;$tempNumberTwo<($moleculeNumberOfAtoms+$numberOfSeparation);$tempNumberTwo++) { # read 10 lines from coordinate file
     ## you can not skip the N.O. 0 element since all arrays have first elment with index 0.
print OUTPUTFILE $fileContent[($requiredCoordinates[$tempNumber]-1)/50*($moleculeNumberOfAtoms+$numberOfSeparation)+ $tempNumberTwo]; #

}

}

close INPUTFILE;

close OUTPUTFILE;



some of my perl code and bash script------I

clean.sh
rm log.file HILLS* TRAJEC* COLVAR* RESTART.1 GEO_OPT.xyz HESSIAN *.out  LATEST ENERGIES GEOMETRY* input.out name*
--------------------------------------------------------------------------------------------------------------
average.pl

#! /usr/bin/perl -w
use warnings;
use strict;

my $m=0;
my $n =35000;
my $pn = 68000;
my @eks=0;
my $ksind=0;
my $reactave=0;
my $prodave=0;
my $temp=0;

open KSFILE, 'eks.dat';

while (){
$eks[$ksind]=$_+55.9;
$ksind +=1;
}

print "$eks[34999] \n";

print "the average of reactant";

for ($m=0;$m<$n;$m++){
$temp=$eks[$m]+$temp;
}
$reactave=$temp/$n*2625.5/4.18;

print "$reactave \n";
print "the average of product";

$temp=0;
$m=0;
for ($m=$pn;$m<$pn+4000;$m++){
$temp=$eks[$m]+$temp;
}
$prodave=$temp/4000*2625.5/4.18;
my $diff;
$diff= $prodave - $ reactave;

print "$prodave \n";

print "the energy difference betwen produc and reactant is ";
print "$diff \n";


--------------------------------------------------------------------------------------------
combine.sh
awk '{print $4}' ENERGIES > eks.dat
cp ~/to-gscratch/ch3oh/ch3oh-o2/01172013/nonpbc-10o2/ch3oh-oxy1/backup/ENERGIES nonpbc-energy
awk '{print $4}' nonpbc-energy > nonpbc-eks.dat
cat nonpbc-eks.dat eks.dat > eks-total.dat
---------------------------------------------------------------------------------------------
generate-zpe.pl
#! /usr/bin/perl
#!/usr/local/bin/perl
#
# change all occurances of a string in a file to another string
#
## first open a file to read all the lines

use strict;
use warnings;

my @all=0;
my @freq;
my $zpe=0;
my $m=0;
my $n=0;
my @temp;
my $newfile= "raw-freq";
my $targetfile = "freq.out";

open(MYFILE, $targetfile) or die("can not open the file freq.out");
open (OUTFILE,">", $newfile);

while () {
   next unless /PURIFICATION OF DYNAMICAL MATRIX/;
   $all[$m]= $_;
   while ()
    {
        $m +=1;
        $all[$m]= $_;
        last if /BIG MEMORY ALLOCATIONS/;
    }
  
}
##print @all;
##print $m;
##print $all[5];
##print $all[$m-3];

while ($n<$m-7){
@temp=split (' ', $all[$n+5]);
##print @temp;
$n +=1;
##print $n, @temp;
push (@freq,@temp);
}

foreach (@freq) {
if ($_ < 0) {
next;
}

else {
print OUTFILE "$_ \n";
$zpe=0.5*$_*4.556E-6 + $zpe;
##print "$zpe \n";
}

}

print "$zpe \n";
print OUTFILE "the ZPE is \n";
print OUTFILE $zpe;

close(MYFILE);
close (OUTFILE);




Tuesday, November 19, 2013

how to calculate a error bar

first, compute the average (i.e., the estimator) for your measurements, by evaluating the following formula:

average = (sample1 + sample2 + ... + sampleN) / N

Replace "sample1," sample2," ... "sampleN" by the measurements, and "N" by the total number of measurements in the experiment.

Second, compute the standard deviation by evaluating the following formula:

stdDev = sqrt(((sample1 - average)**2 + ... + (sampleN - average)**2)/N) or
stdDev = sqrt(((sample1 - average)**2 + ... + (sampleN - average)**2)/(N-1)) if two DOFs depend on each other.

Finally, compute the beginning and end points of the error bars, by evaluating the following formulas:

barBegin = average - stdDev

barEnd = average + stdDev

If you want to use gnuplot, following command is used.
plot "yourfile.txt" using 1:2:3 with yerrorbars !here 1, 2, 3 are steps, mean,
and stdev, respectively
 
or you can use
plot "yourfile.txt" using 1:($2-$3):($2-$3):($2+$3):($2+$3) with candlesticks!
this will generate a candlesticks.
 
  










Friday, November 15, 2013

one example to use CPMD to obtain the TS state

However, it may have some problems to get converged. Maybe the energy cutoff?
The initial guess structure?

&CPMD
  OPTIMIZE GEOMETRY XYZ
  INITIALIZE WAVEFUNCTIONS ATOMS
  RANDOMIZE COORDINATES
   0.1D0
  RESTFILE
    4
  STORE
    100
  LBFGS
  PRFO MODE
    10
  PRFO CORE=4
    1 2 9 10
  CONVERGENCE
    5.0D-7 5.0D-5
  CONVERGENCE RELAX
    15
  SPLINE POINTS QFUNCTION
    2001
  ISOLATED MOLECULE
  CENTER MOLECULE OFF
  MEMORY BIG
  LSD
&END

&DFT
  FUNCTIONAL PBE
  GC-CUTOFF
    5.0D-5
&END

&SYSTEM
  SYMMETRY
    0
  POISSON SOLVER TUCKERMAN
  ANGSTROM
  CELL
    10.0D0  1.0D0  1.0D0  0.0D0  0.0D0  0.0D0
  CUTOFF
    25.0D0
  MULTIPLICITY
    1
&END

&ATOMS
*N.uspp_ascii FORMATTED
   LMAX=P
    2
     4.525338176055      4.920747785642      4.949904563339
     5.765416638683      5.048851794396      5.079925564279
*H.uspp_ascii FORMATTED
   LMAX=S
    6
     4.265466440716      2.788011128505      4.858413782037
     2.878604693260      3.791408955331      4.306112314885
     4.333398001463      3.598265838244      3.267273093363
     6.467823612522      3.016976904998      5.093103687689
     6.554809448253      3.823511424486      3.501228774397
     7.703325625270      4.291321957329      4.803526469019
*C.uspp_ascii FORMATTED
   LMAX=P
    2
     3.972567677301      3.700817361171      4.307476081948
     6.672717274443      3.979768413937      4.589493362517
&END

Tuesday, November 12, 2013

Plumed utility usage: sum_hills and HILLS file

parallel.f90  serial.f90  sum_hills.f90 files are avaialble.
I use module to link library. In the following part, s denotes step. It seems that gcc is better.
s1: module load  gcc_4.4.7-ompi_1.6.5 (module list, module load, module avail, module unload)
s2:  mpif90 -O3 sum_hills.f90 parallel.f90 -o sum_hills_mpi.x
You should have sum_hills_mpi.x generated.s3. ldd sum_hills_mpi.x
Output:
        linux-vdso.so.1 =>  (0x00007fff205fd000)
        libmpi_f90.so.1 => /sw/openmpi-1.6.5_gcc-4.4.7/lib/libmpi_f90.so.1 (0x00002b18668f0000)
        libmpi_f77.so.1 => /sw/openmpi-1.6.5_gcc-4.4.7/lib/libmpi_f77.so.1 (0x00002b1866af5000)
        libmpi.so.1 => /sw/openmpi-1.6.5_gcc-4.4.7/lib/libmpi.so.1 (0x00002b1866d28000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002b18670d9000)
        libgfortran.so.3 => /usr/lib64/libgfortran.so.3 (0x00002b18672de000)
        libm.so.6 => /lib64/libm.so.6 (0x00002b18675d0000)
        libnuma.so.1 => /usr/lib64/libnuma.so.1 (0x00002b1867853000)
        librt.so.1 => /lib64/librt.so.1 (0x00002b1867a59000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00002b1867c62000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00002b1867e7a000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002b186807e000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b186828c000)
        libc.so.6 => /lib64/libc.so.6 (0x00002b18684a8000)
        /lib64/ld-linux-x86-64.so.2 (0x00002b18666d2000)
s4: gfortran -O3 sum_hills.f90 serial.f90 -o sum_hills.x   !OK. now serial version.
s5:  copy two *.x files to your bin directory.
s6. sum_hills.x -file HILLS -out fes.dat -ndim 3 -ndw 1 2 -kt 0.6 -ngrid 100 100 100
       -ndim: the dimensionality number.
       -ndw: the list of CVs in the desired order to plot the FES.
       -kt: KT specified by -kt (kT must be given in the energy units that were used
by in the code)

HILLS file
  first column      second     third               fourth
   time step          CV            SIGMA      Bias potential

Thursday, October 17, 2013

一个人擅长什么,不擅长什么,基本是后天的事情

如果我们承认知识和能力是后天学习而来,那么一个人擅长什么,不擅长什么,完全是后天决定的,也是每天的习惯决定的。

比如一个人不擅长英语写作,如果每天能用一个小时写作200-300字的英文短文,一年之后他就会成为英文写作的专家。当然,要有效的学习。

再比如一个人不擅长编程,如果每天花一个小时编程,一年之后就可以成为C/C++, JAVA的专家。当然,人不能太笨。

比如一个人如果不擅长英文阅读或是听说, 如果每天花一个小时练习听力,阅读或是当众演说,一年之后就可以成为英文读听说的专家。当然,人还是不能太笨。

最后,如果看人不擅长什么,就看他最近一年的工作,在重复做些什么?如果一个编程的人过去一年全在看小说,旅游,我们说这个人暂时废掉了。给一个月还是可能恢复的。当然,你如果从来没有学过英语和编程,大概连废掉的机会都么有。

我个人感觉,每天最理想的是花一个小时学习新东西,可以是新方法,比如编程JAVA的可以学学C/C++。比如做科研的,每天可以花一个小时看看别人用的什么新设备,软件,数值方法,或是新概念,然后动手去试试看。其余7个小时吗,还是老老实实做好自己的老本行。科研写文章,马工找工作,都是懂得越多越有市场,不是吗?

所以说,擅长都是练出来的,擅长都是时间堆出来的。

Monday, October 14, 2013

Conjugation effects, molecular wire and charge transport property

Related note
quantum interference:
Interference of two waves.svg
Considering wave-particle duality of real world objects, we can conclude any two objects can interfere with each other. And of course, human beings (can be regarded as particles) can interfere with each other too. We can conclude that the wavelength of a person with 60 kg weight is lambda (wavelength) = h/p =6.63/10^(-34) (J.s) / (60(kg)*465.1 m/s) (Speed: the equatorial speed of the earth) = 2.38 * 10 ^(-38) m.

Conjugation effect: a conjugated system is a system of connected p-orbitals with delocalized electrons in compounds with alternating single and multiple bonds, which in general may lower the overall energy of the molecule and increase stability. 

Thursday, October 10, 2013

CPMD and Metadynamic learning

CPMD
Q1: Can CPMD generate Free energy surface? With MetaD or Umbrella sampling?
Q2: What is meaning of collective variables? fictitious mass? fictitious energy?
        Is it a function of coordinate R (nuclear position)?
Q3: what is the meaning of 1/2(s_i(R)-s_i)^2? Is the deviation of original s_i?
Q4: V(t,s) potential = integration along trajectories.

Wednesday, October 9, 2013

Ionic liquid learning

File:Imidazole 2D numbered.svg
Compound: imidazole
File:Propargyl.png
Propargyl


dicyanamide: in IL, it should be an anion.

A one real IL propellant: 1-propargyl-3-methyl-imidazolium dicyanamide with WFNA (white fuming nitric acid)

Tuesday, October 8, 2013

How to use WHAM to obtain a free energy curve

WHAM is a program to be used to generate an relative free energy (FE) curve. Relative means you need specify a reference as zero.
1. Install WHAM.
2. Run your umbrella sampling (US) molecular dynamics simulations with PLUMED add-in. You should have a series of results. For example, if you want to obtain FE vs distances, you need manually specify a series of distances and run US around these distances.
3. Once you have all the results, you can use following script (a bash file):
#!/bin/bash

usfile=wham_usfile
fesout=fes.out

rm -rf $usfile $fesout
points=500  #there are 500 points/COLVAR.

for file in shortp? longp? longp??; do

tail -n $points $file/COLVAR | awk '{print $1,$2}' > $file/whamcv;
##get k constant
kappa=`grep UMBRELLA $file/plumed.dat  | head -n 1 | awk '{print $5}'`
## get umbrella center
PV=`grep UMBRELLA $file/plumed.dat  | head -n 1 | awk '{print $7}'`
echo $file/whamcv $PV $kappa >> wham_usfile
done;

first=`sort -n -k2 wham_usfile | awk '{print $2}' | head -n 1 `
last=`sort -n -k2 wham_usfile | awk '{print $2}' | tail -n 1 `
num=`wc -l wham_usfile | awk '{print $1}'`

wham $first $last $num 0.0001 500 0 $usfile $fesout
## above line shows command, min, max, number of points, tolerance, points of sampling around one distance, US input file, free energy outputfile. 

4. The output file will look like below.
#Coor           Free    +/-             Prob            +/-
9.410909        0.000000        nan     0.112293        nan
9.592727        0.228147        nan     0.076523        nan
9.774545        0.130469        nan     0.090179        nan
9.956364        0.022609        nan     0.108106        nan
10.138182       0.309783        nan     0.066711        nan
10.320000       0.200620        nan     0.080147        nan
10.501818       0.169518        nan     0.084449        nan
10.683636       0.125105        nan     0.090995        nan
10.865455       0.268023        nan     0.071562        nan
11.047273       0.013260        nan     0.109818        nan
11.229091       0.016527        nan     0.109217        nan
#Window         Free    +/-  
#0      0.000000        nan
#1      0.140395        nan
#2      -0.095729       nan
#3      -0.155083       nan
#4      -0.186455       nan
#5      -0.196517       nan
#6      -0.188120       nan
#7      -0.159148       nan
#8      -0.103205       nan
#9      -0.011637       nan
#10     0.124413        nan

We can have a FE curve using the first part. At the same time, we can obtain the probability distribution function based on the Boltzmann distribution equation (the fourth column).
The last part: these are the final F values from the wham calculation, and can be used
for computing weighted averages for properties other than the free energy.

The default unit is kcal/mol. 

Sunday, September 29, 2013

As a Chinese, how to write good English papers

I think if, as a Chinese scholar, you are not very confident to think in English, you should think in Chinese first. After you have clear logic and ideas to know how to organize contents of your papers, you can write your English versions.

The following Chinese contents is from CCTHERE. Thanks for the author's sharing.
英语学习的另一视角:写和说的关系   

如何提高写作,特别是学术文章的写作呢。建议由以下几点入手,一步一步。
1. 彻底忘掉所谓的技巧和速成。这不是去参加语言考试,你的目的是要把你自己的观点优雅大方地和别人交流,不是去增加几个得分点。
2. 学习。学习什么呢?通过阅读别人的文章来学习。现在有互联网了,方便的很,去经常浏览一下诸如经济学家,卫报(社论和读者来信)等部分。新闻网站就免了。河里也有很好的介绍。注意其中的复杂的句子的运用。
3. 开始写。开始写的时候要使用平实而详细的语言把事实说清楚,先不要考虑什么优美词语之类的(我至今还有印象小学三四年级写作文的时候,每每从小册子里翻一些所谓“优美词语”给自己空洞的文章润色,而最遗憾的是一直没有机会在我的作文里嵌入我曾经最欣赏的一句“东方露出了鱼肚白…”)。注意学术文章的目的是把事实和你的理论说清楚,不是要显得故做高深(题外话:个人感觉国内很多文章和教科书的主要目的就是要让人看不懂,本人感觉而已,看了不要太认真)。这个状态要注意的是语法的时态和冠词。还有,千万千万不要直接翻译你脑海中的中文句子(如果有的话),用简单清晰的英文表达就行了。
4. 提高。你可以开始试着用一些你看到和学到的复杂的句式了。除非特别需要,短句子能说清楚的就用短句子,长了大家都头痛。另外,多次阅读学术类文章后你会发现其中也有一些“八股”的成分在里头,也讲究一些“起承转合”的。你写的文章也要尽量使用类似的结构,这样同行阅读起来就顺畅一些。
5. 反馈。这时,你的师友恐成受害者了。但要有信心,经过如此这般的交流后,他们会乐此不疲,你文章的水平也就相当可以。
如果你慢慢地写作水平能到了上面的第4步,你会发现你再也不会为写Email花费多余的一点时间了,当然个别情况还有例外(比如写给你的老板或那个她/他)。你应该能描述复杂的现象,做幻灯片报告的时候也应该不会满屏文字,照章宣读,而是游刃有余,滔滔不绝了。


In the writing, the most often common mistakes by Chinese scholars are the usage of articles. For example, I realized that 67% of my mistakes are due to the usage of articles.

The following is copied from following link:
https://owl.english.purdue.edu/owl/resource/540/01/

What is an article? Basically, an article is an adjective. Like adjectives, articles modify nouns.
English has two articles: the and a/an. The is used to refer to specific or particular nouns; a/an is used to modify non-specific or non-particular nouns. We call the the definite article and a/an the indefinite article.
the = definite article
a/an = indefinite article
For example, if I say, "Let's read the book," I mean a specific book. If I say, "Let's read a book," I mean any book rather than a specific book.
Here's another way to explain it: The is used to refer to a specific or particular member of a group. For example, "I just saw the most popular movie of the year." There are many movies, but only one particular movie is the most popular. Therefore, we use the.
"A/an" is used to refer to a non-specific or non-particular member of the group. For example, "I would like to go see a movie." Here, we're not talking about a specific movie. We're talking about any movie. There are many movies, and I want to see any movie. I don't have a specific one in mind.
Let's look at each kind of article a little more closely.

Indefinite Articles: a and an

"A" and "an" signal that the noun modified is indefinite, referring to any member of a group. For example:
  • "My daughter really wants a dog for Christmas." This refers to any dog. We don't know which dog because we haven't found the dog yet.
  • "Somebody call a policeman!" This refers to any policeman. We don't need a specific policeman; we need any policeman who is available.
  • "When I was at the zoo, I saw an elephant!" Here, we're talking about a single, non-specific thing, in this case an elephant. There are probably several elephants at the zoo, but there's only one we're talking about here.

Remember, using a or an depends on the sound that begins the next word. So...

  • a + singular noun beginning with a consonant: a boy; a car; a bike; a zoo; a dog
  • an + singular noun beginning with a vowel: an elephant; an egg; an apple; an idiot; an orphan
  • a + singular noun beginning with a consonant sound: a user (sounds like 'yoo-zer,' i.e. begins with a consonant 'y' sound, so 'a' is used); a university; a unicycle
  • an + nouns starting with silent "h": an hour
  • a + nouns starting with a pronounced "h": a horse
    • In some cases where "h" is pronounced, such as "historical," you can use an. However, a is more commonly used and preferred.
      A historical event is worth recording.
Remember that these rules also apply when you use acronyms:
Introductory Composition at Purdue (ICaP) handles first-year writing at the University. Therefore, an ICaP memo generally discusses issues concerning English 106 instructors.
Another case where this rule applies is when acronyms start with consonant letters but have vowel sounds:
An MSDS (material safety data sheet) was used to record the data. An SPCC plan (Spill Prevention Control and Countermeasures plan) will help us prepare for the worst.
If the noun is modified by an adjective, the choice between a and an depends on the initial sound of the adjective that immediately follows the article:
  • a broken egg
  • an unusual problem
  • a European country (sounds like 'yer-o-pi-an,' i.e. begins with consonant 'y' sound)
Remember, too, that in English, the indefinite articles are used to indicate membership in a group:
  • I am a teacher. (I am a member of a large group known as teachers.)
  • Brian is an Irishman. (Brian is a member of the people known as Irish.)
  • Seiko is a practicing Buddhist. (Seiko is a member of the group of people known as Buddhists.)

Definite Article: the

The definite article is used before singular and plural nouns when the noun is specific or particular. The signals that the noun is definite, that it refers to a particular member of a group. For example:
"The dog that bit me ran away." Here, we're talking about a specific dog, the dog that bit me.
"I was happy to see the policeman who saved my cat!" Here, we're talking about a particular policeman. Even if we don't know the policeman's name, it's still a particular policeman because it is the one who saved the cat.
"I saw the elephant at the zoo." Here, we're talking about a specific noun. Probably there is only one elephant at the zoo.

Count and Noncount Nouns

The can be used with noncount nouns, or the article can be omitted entirely.
  • "I love to sail over the water" (some specific body of water) or "I love to sail over water" (any water).
  • "He spilled the milk all over the floor" (some specific milk, perhaps the milk you bought earlier that day) or "He spilled milk all over the floor" (any milk).
"A/an" can be used only with count nouns.
  • "I need a bottle of water."
  • "I need a new glass of milk."
Most of the time, you can't say, "She wants a water," unless you're implying, say, a bottle of water.

Geographical use of the

There are some specific rules for using the with geographical nouns.
Do not use the before:
  • names of most countries/territories: Italy, Mexico, Bolivia; however, the Netherlands, the Dominican Republic, the Philippines, the United States
  • names of cities, towns, or states: Seoul, Manitoba, Miami
  • names of streets: Washington Blvd., Main St.
  • names of lakes and bays: Lake Titicaca, Lake Erie except with a group of lakes like the Great Lakes
  • names of mountains: Mount Everest, Mount Fuji except with ranges of mountains like the Andes or the Rockies or unusual names like the Matterhorn
  • names of continents (Asia, Europe)
  • names of islands (Easter Island, Maui, Key West) except with island chains like the Aleutians, the Hebrides, or the Canary Islands
Do use the before:
  • names of rivers, oceans and seas: the Nile, the Pacific
  • points on the globe: the Equator, the North Pole
  • geographical areas: the Middle East, the West
  • deserts, forests, gulfs, and peninsulas: the Sahara, the Persian Gulf, the Black Forest, the Iberian Peninsula

Omission of Articles

Some common types of nouns that don't take an article are:
  • Names of languages and nationalities: Chinese, English, Spanish, Russian (unless you are referring to the population of the nation: "The Spanish are known for their warm hospitality.")
  • Names of sports: volleyball, hockey, baseball
  • Names of academic subjects: mathematics, biology, history, computer science

Wednesday, September 25, 2013

umbrella sampling learning

Q1: what is umbrella sampling?
The umbrella sampling applies bias energy to an interested system on some CVs. It is similar to heating a system. The motion of particles starts accelerating. The bare events, i.e. the some un-accessible near ground states, could be explored. The benefits of umbrella sampling is that US can obtain the relative free energy profiles.

Q2: what is free energy in simulation? Why free energy is used in MD simulations?

The thermodynamic free energy is the amount of work that a thermodynamic system can perform. The concept is useful in the thermodynamics of chemical or thermal processes in engineering and science. The free energy is the internal energy of a system minus the amount of energy that cannot be used to perform work. This unusable energy is given by the entropy of a system multiplied by the temperature of the system.

Internal energy has two major components, kinetic energy and potential energy. The kinetic energy is due to the motion of the system's particles (translations, rotations, vibrations), and the potential energy is associated with the static rest mass energy of the constituents of matter, static electric energy of atoms within molecules or crystals, and the static energy of chemical bonds. 
Enthalpy:  It includes the system's internal energy or thermodynamic potential (a state function), as well as its volume and pressure (the energy required to "make room for it" by displacing its environment, which is an extensive quantity).

Entropy: Entropy is a measure of the number of specific ways in which a system may be arranged, often taken to be a measure of disorder, or a measure of progressing towards thermodynamic equilibrium. The entropy of an isolated system never decreases, because isolated systems spontaneously evolve towards thermodynamic equilibrium, which is the state of maximum entropy.  Entropy is a logarithmic measure of the number of states with significant probability of being occupied. If all microstates have equal probability, the entropy is k_b*ln(the number of micro states)

In MD simulations, there are several common free energy types.
Common Free Energy Type
● Solvation Free Energy / Transfer Free Energy
● Binding Free energy
● Confomational Free Energy 


Ergodic hypothesis
time average = ensemble average

free energy difference:
ΔG = -RT ln (P1/P0)

Accurate calculations of absolute free energy is nearly impossible due to insufficient sampling in a
finite length and time scale simulation.  Need different methods to estimate free energy.
● Common method
- Thermodynamical integration
- Free energy perturbation
- Umbrella sampling
- Potential of mean force

Running US simulation
● Choose the reaction coordinate
● Choose the number of windows and the biasing potential
● Run the simulations
● Compute time series for the value of the reaction coordinate (histograms)
● Apply the WHAM equations






Monday, September 23, 2013

Compile a parallel version of VASP in a Linux Intel clusters

some basic concepts:
The most often used MPI (message passing interface), which are portable software to distribute and share memory in parallel clusters, and exchange data/information between different nodes, are
1. OPENMPI
2. MPICH

file types:
*.o file: objective file
*.a: a combination of multiple *.o files
*.so: shared object, similar to dynamic link library.

linking a *.so file
-L: list the file path.
-lmkl: link libmkl.so file.

two often used environmental variables in Linux.
LD_LIBRARY_PATH:  In Linux, the environment variable LD_LIBRARY_PATH is a colon-separated set of directories where libraries should be searched for first, before the standard set of directories.

PATH: PATH is an environmental variable in Linux and other Unix-like operating systems that tells the shell which directories to search for executable files (i.e., ready-to-run programs) in response to commands issued by a user. It increases both the convenience and the safety of such operating systems and is widely considered to be the single most important environmental variable.

"env" command will show all the current environmental variables and their values for the current user.
For PATH only, we can use 'env | grep PATH'.

Adding a path:
PATH="/usr/sbin:$PATH"
or
export PATH=$PATH:/usr/sbin
or 
An addition to a user's PATH variable can be made permanent by adding it to that user's .bash_profile file.

.bashrc and .bashprofile
.bash_profile is executed when you login. Stuff you put in there might be your PATH and other important environment variables.
.bashrc is used for non login shells. I'm not sure what that means. I know that RedHat executes it everytime you start another shell (su to this user or simply calling bash again) You might want to put aliases in there but again I am not sure what that means. I simply ignore it myself.
.profile is the equivalent of .bash_profile for the root. I think the name is changed to let other shells (csh, sh, tcsh) use it as well. (you don't need one as a user)
icc: intel c compiler
impi: intel mpi.

Module: The Environment Modules package provides for the dynamic modification of a user's environment via modulefiles. Each modulefile contains the information needed to configure the shell for an application. Once the Modules package is initialized, the environment can be modified on a per-module basis using the module command which interprets modulefiles. Typically modulefiles instruct the module command to alter or set shell environment variables such as PATH, MANPATH, etc. modulefiles may be shared by many users on a system and users may have their own collection to supplement or replace the shared modulefiles.

Modules can be loaded and unloaded dynamically and atomically, in an clean fashion. All popular shells are supported, including bashkshzshshcshtcsh, as well as some scripting languages such as perl andpython.
Modules are useful in managing different versions of applications. Modules can also be bundled into metamodules that will load an entire suite of different applications.

"ldd yourprogram" will show a list of the libraries that are needed for myprogram.

Now let's start to compile a parallel version of VASP.
The system information is following.
OS: "uname -rms", show Linux 2.6.18-348.6.1.el5 x86_64.
Hardware: grep "model name" /proc/cpuinfo, Intel(R) Xeon(R)
Compiler: ifort -v, mpif90 -v, icc -v. I used intel compiler.











Friday, September 20, 2013

Compile a VASP version 5.3 in a linux intel cluster

s1. Download  vasp.5.lib.tar and  VASP.tgz files from VASP website with permission and license.
s2. Make a diretory: vasp-paralell. Command: mkdir vasp-paralell
s3. copy vasp.5.lib.tar and  VASP.tgz into this directory. Command: cp vasp.5.lib.tar VASP.tgz vasp-paralell
s4.  cd vasp-paralell, tar -xzvf VASP.tgz, tar -xvf vasp.5.lib.tar
s5.  mkdir potpaw_LDA, mkdir potpaw_PBE, mkdir src
s6. mv potpaw_LDA.52.tar potpaw_LDA
s7. cd potpaw_LDA, tar -xvf potpaw_LDA.52.tar
s8. cd .. ,  mv  potpaw_PBE.52.tar potpaw_PBE
s9. cd potpaw_PBE, tar -xvf potpaw_PBE.52.tar
s10. mv vasp.5.3.3.tar src, mv vasp.5.lib src
s11. cd src, tar -xvf vasp.5.3.3.tar
s12. cd /vasp.5.lib
s13.cp makefile.linux_efc_itanium Makefile,
s14. make, you will see following information:
gcc -E -P -C preclib.F >preclib.f
ifort -O1 -FI -FR  -c preclib.f
mpicc -O -c timing_.c
mpicc -O -c derrf_.c
mpicc -O -c dclock_.c
gcc -E -P -C diolib.F >diolib.f
ifort -O1 -FI -FR  -c diolib.f
gcc -E -P -C dlexlib.F >dlexlib.f
ifort -O1 -FI -FR  -c dlexlib.f
gcc -E -P -C drdatab.F >drdatab.f
ifort -O1 -FI -FR  -c drdatab.f
ifort -O1 -FI  -c lapack_double.f
lapack_double.f(10179): remark #5140: Unrecognized directive
CDIR$          NEXTSCALAR
-------------------------^
lapack_double.f(10181): remark #5140: Unrecognized directive
CDIR$          NEXT SCALAR
--------------------------^
lapack_double.f(20692): remark #5140: Unrecognized directive
CDIR$          NEXTSCALAR
-------------------------^
lapack_double.f(20694): remark #5140: Unrecognized directive
CDIR$          NEXT SCALAR
--------------------------^
lapack_double.f(20706): remark #5140: Unrecognized directive
CDIR$             NEXTSCALAR
----------------------------^
lapack_double.f(20708): remark #5140: Unrecognized directive
CDIR$             NEXT SCALAR
-----------------------------^
lapack_double.f(20733): remark #5140: Unrecognized directive
CDIR$          NEXTSCALAR
-------------------------^
lapack_double.f(20735): remark #5140: Unrecognized directive
CDIR$          NEXT SCALAR
--------------------------^
ifort -O1 -FI  -c linpack_double.f
ifort -O1 -FI  -c lapack_atlas.f
lapack_atlas.f(12864): remark #5140: Unrecognized directive
CDIR$          NEXTSCALAR
-------------------------^
lapack_atlas.f(12866): remark #5140: Unrecognized directive
CDIR$          NEXT SCALAR
--------------------------^
lapack_atlas.f(18861): remark #5140: Unrecognized directive
CDIR$          NEXTSCALAR
-------------------------^
lapack_atlas.f(18863): remark #5140: Unrecognized directive
CDIR$          NEXT SCALAR
--------------------------^
lapack_atlas.f(18875): remark #5140: Unrecognized directive
CDIR$             NEXTSCALAR
----------------------------^
lapack_atlas.f(18877): remark #5140: Unrecognized directive
CDIR$             NEXT SCALAR
-----------------------------^
lapack_atlas.f(18902): remark #5140: Unrecognized directive
CDIR$          NEXTSCALAR
-------------------------^
lapack_atlas.f(18904): remark #5140: Unrecognized directive
CDIR$          NEXT SCALAR
--------------------------^
rm libdmy.a
rm: cannot remove `libdmy.a': No such file or directory
make: [libdmy.a] Error 1 (ignored)
ar vq libdmy.a preclib.o timing_.o derrf_.o dclock_.o  diolib.o dlexlib.o drdatab.o
ar: creating libdmy.a
a - preclib.o
a - timing_.o
a - derrf_.o
a - dclock_.o
a - diolib.o
a - dlexlib.o
a - drdatab.o
s15. cd VASP/vasp.5.3/src
s16. cp makefile.linux_ifc_P4 Makefile
s17. vi Makefile
s18. MKL_PATH=YOURPATH/mkl/lib/intel64
s19. MKL_FFTW_PATH=/YOURPATH/mkl//interfaces/fftw3xf/
s20. LAPACK= YOURPATH/mkl/lib/intel64/libmkl_intel_lp64.a
s21. make
Finally, you should be able to see vasp exe file generated.

Wednesday, August 7, 2013

天才训练指南-转载自西西河同人于野

我非常喜欢这篇文章。一切版权都归原作者同人于野兄。


前不久温家宝又在呼吁出学术大师了。我国在基础科学方面的水平可能比足球强不了多少,改革开放30来年了也没出个诺贝尔奖,一句话就是缺天才。为了 培养天才连少年班的主意都出了,怎么就是不行呢?心理学家 Anders Ericsson 的这项研究从技术角度解决了这个问题。研究覆盖了从职业运动员,艺术家到程序员差不多所有需要天才的领域,出版了一本900多页的书,结论是 天才还真是练出来的,但是关键在于怎么练
想要训练一个天才绝不是整天苦练就行,你需要的是 "deliberate practice":
- 每次训练有明确的目标
- 获得即时的反馈
- 既要注重结果,也要注重技术
我想在这里对比一下我国对理工科大学生的训练,看看是否满足这些要求。
首 先我国理工科教学根本没有明确的目标。这里所说的目标是一次训练中要达到的具体的小目标,并不是说什么拿诺贝尔奖这样的人生理想。科学教育的正确目标可以 是将来搞科研需要这个知识,可以是学会这个技术去使用它。但我国教学中,学生学习的目标不是知识本身,而是课本,不是这堂课我领会了什么思想,而是这堂课 有什么知识点有什么公式要背,换句话说是考试。有些学生不屑于为了考试学习,自己看书的,往往因为缺乏指导而茫然,不知道看这本书的目的何在。
" 即时的反馈" (immediate feedback) 是我国训练学生中最缺乏的一个方面,越是高端人才的培养中越是如此。如果说高手们有什么成功秘诀,我猜就是这个即时的反馈。文章说的一个事实是医生们离开 医学院以后,除了手术临床医生以外,其他专业的,比如看透视图的那些医生,他们的水平随时间在减弱,原因就是缺乏立即的反馈。就好比练武功,一招一式都需 要有人随时纠正,不对马上改别把错误动作形成习惯。在科研领域,这意味着你搞科研的时候需要一个好导师随时告诉你你干的这个活怎么样。中国缺乏好导师,而 且往往还一个导师带30个学生,谁给你反馈啊?
反馈还意味着需要跟同行随时交流切磋,别人怎么做的,你这么做人家怎么评价等等,这就要求科 研工作者需要经常跟高手开会,开会的时候还必须经常讨论。而国内的情况一方面会议就不多,开会的时候还大家都客气不爱提问。美国开学术会议除了发言以外广 泛采用 poster 形式,实际上在讨论工作方面往往更有价值,而国内可能还没有采取这样的形式。
这个技术还告诉我们想要提高自己的思想水平就应该经常在网上发帖,以便获得反馈。
" 结果和技术",最起码的要求是你得自己训练,而不是看别人练。站在场边把姚明的技术统计倒背如流也没用,关键得自己上场。我国训练学生搞科研的做法是不搞 科研,搞"课"研。请牛人来讲最新最强的理论,而不是强调让他们尽可能早的参与到科研活动中去,这就好比给北京青年队看NBA录像一样,培养出来的全是专 业球迷。美国学生队不是自己直接搞的领域可能不太了解,也可能不知道最近 Witten 发了什么文章,但他自己的小小领域内,他可能大二就开始干了。
很多人甚至喜欢评论课本,这本书写得好,这个人是牛人,陶醉在对课本的欣赏之中。在美国上课没见过任何一个老师赞美课本的,一线人物几乎没人写课本,所有课本都只不过是工具书,最终目的是为了科研这个结果。一切技术应该是为了科研服务。
"技术"是说你的训练得得法,这同样需要高人的指点,而且你还得听从人家的指点。
对 比心理学家的研究成果,可见我国科学教育为什么不行了。我国这种缘木求鱼的教育方法最终培养出来的都是精通"基本知识"的"科学的家",而不是"科学 家"。说到底就是两个字:实践。毛泽东说在战争中学习战争,解放军很多高级将领文化程度一般,为什么总能打胜仗,靠的就是在实践中学习。学习科学知识不是 为了考试,不是为了耍酷,不是为了有谈资,是为了搞科研。美国大学里面的技术课程一学期让学生做好几个 project,完全是追求学以致用,逼迫学生为了完成 project 而学习知识,其中还有小组合作,跟真正的科研没什么区别。
宁可在 本科的时候发几篇灌水小文章也比苦读十年期待一鸣惊人强。一提基础科学,有人总说"板凳要坐十年冷",这种思想完全不适合现代化科研体系。坐十年板凳的运 动员国家队能用么?马俊仁当年是一般比赛不参加,专门参加奥运会世界杯一鸣惊人结果人家怀疑你是不是服用禁药啊,一旦有点小事整个队伍居然崩溃了。这种做 法现在已经被淘汰。正确的做法是象现在刘翔这样有什么大奖赛都去,追求一个稳定的成绩。
科学工作者就好像运动员一样,需要不停的比赛,而不是不停的看录像。

附加一篇,供参考。观点少部分保留。

第六章自我管理
长处何在?
大多数人都以为清楚自己的长处何在,其实不然。一般人比较清楚自己的弱点,但是知己所长非常重要。一个人只能从自己的长处,而不能从自己的缺点上去发挥。
数十年前,大多数人知不知道自己有什么长处,根本无关紧要。一个人的工作与职业,出生时就已经注定了:农夫之子长大了做农夫,工匠之子长大成工匠,一个人如果不能继承父业,他就有辱天赋使命。但是现在,人可以选择要做的事,因此必须知己所长,才能知所归属。
发 现自己长处,只有惟一的方法,就是利用回馈分析法(feed back analysis)。这个方法是:每当做出重大决策或采取重要行动时,事先写下你所预期的结果。9到12个月之后,再以实际成果与当初的预期相互比较。我 自己运用这个方法,至今近20年,每次都有意外的收获。
这个简单的方法可以在相当短(大约2到3年)的时间内,显示出长处何在,这可能是认识自己最重要的一点。也能显示出由于你所做,或未做的哪些事情,使你的长处无法充分发挥。它会显示出哪些地方你并不特别高明,或哪些地方根本毫无希望。
运用回馈分析法之后,接下来应该:
一、专注于你的长处。做你所擅长的工作,让长处得以发挥。
二、加强你的长处。回馈分析法会指出,你在哪一方面需要改进技巧,或需要吸收新知,也会显示你在哪一方面的知识已经落伍了。我们可以借此了解该吸收哪一方面的知识或哪一方面的技能,以免被时代淘汰。
三、找出任何由于知识上的傲慢而造成的严重无知,然后设法克服。许多学有专精的人,往往对其他领域的知识嗤之以鼻。
例如,第一流的工程师常以人际关系的门外汉自居,并且沾沾自喜。相对地,人力资源工作者则经常以不懂基础会计学或计算方法而自傲。事实上,为了充分发挥长处,你应该设法去获得各种必要的能力与知识。
另一个重点是,改正不良习惯:任何会妨碍绩效表现的习惯。这种习惯可以通过回馈分析法来发现。
例 如,企划人员的伟大企划案所以会失败,是由于没有落实执行。许多绝顶聪明的人都以为,光靠想法就能移山填海,事实上,移山要靠推土机,而想法要用来指导推 土机工作。许多企划人员以为,企划完成就表示工作大功告成,事实上,这只是"工作"的起点。他必须去找别人来实行,向别人解释计划,还要视情况做调整,最 后再决定计划何时该告一段落。
这种将预期与结果相互比较的做法,还有另一个好处,就是显示出哪些是你不该做的事。在许多领域,我们往往缺乏天分,毫无才干或能力,就连勉强做到"马马虎虎"都不容易,所以应该避免这些领域的工作与任务。
对 于无能为力的领域,就不必再徒耗心力,试图改进。毕竟,从"毫无能力"进步到"马马虎虎"所需耗费的精力,远比从"一流表现"进步到'卓越境界"所需的功 夫更多。然而大多数人,包括老师,以及组织并不了解这一点,他们总是费尽心力,想让一个"毫无能力"的人变成"马马虎虎".事实上这些资源、时间,应该用 来一个"表现一流"的人进步到"登峰造极".一个人的精力一定要用在自己所擅长的方面。
我做事的方法为何?
这个问题同前一个问题同样重要——特别是对知识工作者而言。
事实上,这个问题也许更为重要。只有极少数的人知道,他们到底怎样完成一件工作。相反,大多数人根本没有察觉到,不同的人会用不同的方法做事,并有不同的表现。因此他们常常以不适合他们的方式工作。
会 有这么多人搞不清楚他们如何完成一件工作,一个主要原因是,自有学校以来就一直沿袭过去,任何学生都只能用同一种方法完成家庭作业。同时,一位老师面对 40位左右的学生,也没有足够的时间找出每个学生的独特之处。此外,老师还必须坚持,每位学生都必须在相同时间内、用相同方法完成相同的作业。因此每个人 进人职场之后,也只会用同一种方式完成一件工作。教育领域也许是新科技能够产生最大影响的地方必须设法让老师发觉,每一位学生如何学习,然后鼓励他以适合 他的方式完成工作。
就像一个人的长处一样,每个人的工作方式也相当不同。一个人的个性不管是先天的还是后天的,早在他进人职场之前,便已大势底定。因而一个人在工作上表现如何,就如一个人擅长什么或不擅长什么,大致上也没有太多改变的余地。表现的方法可以略加调整,但是不太可能彻底改变。
回馈分析可以指出,在这个人的工作表现中,有一点不顺畅,但无法找出原因。不过,通常也不难发现原因何在。只要有几年工作经验,就能够很快地发觉"我的工作表现如何",几种极平常的个性上的不同,就会影响一个人的表现。阅读者,还是倾听者?
很少人知道,人在个性特质上有"阅读者"与"倾听者"的分别,晓得自己属于哪一种的人更少。这种无知,常会带来严重的后果。
二 次大战期间,艾森豪威尔担任欧洲盟军总司令时,一直是媒体宠儿。能够参加他的记者招待会,被视为无上光荣:艾森豪威尔将军对于记者所问的问题,永远展现掌 握全局的威力。无论是情况的描述,或是政策的解释,他都能够用两三句漂亮优雅的语句交代清楚。可是10年之后,艾森豪威尔做了总统,那些当初对他佩服得五 体投地的记者,却满腹怨言:他的回答总是不得要领,而且常在不相干的主题上煤蝶不休。记者经常讥嘲艾森豪威尔,说他糟糕而不合文法的回答,简直就是糟蹋了 英语。
其中的原因在于,艾森豪威尔显然未曾认识到,他是阅读者而非倾听者。当他做盟军总司令时,幕僚会在记者会前半个小时,把记者所有的问 题以书面写好,交给他过目,所以他能够掌握全局。艾森豪威尔当选总统之后,效法前两任美国总统罗斯福与杜鲁门,举行现场自由发问的记者会。结果,他根本听 不懂记者在问什么。
阅读者很难成为优秀的倾听者,反之亦然。勉强的结果,往往无法有所表现。我如何学习?
想要了解自己如何表现,第二个重点是要掌握自己的学习方法。
许多一流作家(包括丘吉尔)的在校学习成绩都很差。上学对他们而言,有如苦刑折磨。他们与其他学生的差别在于,作家通常无法借倾听与阅读来学习。他们要从写作中学习,偏偏学校不用这种方法,成绩自然不好。
学 习的方法很多。有的人要像丘吉尔一样,用写作来学习。有的人以大量抄写来学习,例如贝多芬,他留下了大量的手稿,可是他说自己作曲时从来不看这些手稿。曾 有人问他目的何在,他回答:"如果不立即写下灵感,我马上就会忘记。一旦把它写在笔记本里面,我再也不会忘记他永远不必再看一一手将通用汽车推向产业龙头 宝座,并维持长达60年之久的著名企业家史隆(Alfred Sloan),通常在一些小型、随时举行的会议中决定公司的经营大计。会议一结束,史隆会立刻回到办公室,并且花好几个小时写一封信,给某一位参与会议的 同事。信里面详述会议中所讨论的主要议题、召集会议的原因、会议中达成的结论、会议中已经提出而尚未解决的问题等等。为什么要这样做?史隆解释:"如果我 不在会议结束后,马上将整个会议的过程回想一次,并且把它写下来。24小时之内我一定会忘记。"
我认识的一位企业负责人,则是用说话来学 习。他每个礼拜固定召集所有高层主管到他的办公室,对着他们讲上两三个钟头的话。通常他会拿政策性的议题开讲,每个议题都要以三种不同角度来讨论。他很少 询问其他人的意见,只需要有听众听他讲话,这是他学习的方式。用讲话来学习,其实并非罕见,优秀的法庭辩护律师与医疗诊断专家都用这种方法来学习。
学 习的方法有很多种,有些人以记录大量的备忘录来学习,例如贝多芬。史隆则从不在会议中做任何笔记,前面所提到的那位企业家也是如此。有人靠写作来学习,有 些人利用实际操作来学习,还有的人则是以自言自语的方式来学习。美国一位著作等身的知名的大学教授就对我说过:"我之所以教书,就是因为我必须听我自己说 话,惟有如此我才有办法将这些东西写出来。"
掌握自知之明的所有要点当中,了解自己如何学习,可算是最简单的一点。每次我问:"你如何学 习?"对方多半已经知道答案。但是当我再问:"你有没有根据自己的学习方式来学习?"很少人的回答是肯定的。根据自己擅长的学习方式来学习,正是一个人日 后有所表现的关键,不能这样学习的人,注定成绩平庸。
光是问自己"我如何做事?我如何学习?"还不够。为了有效管理自我,接下来还要再问自己的是:"我适合与人共事,还是一个人单打独斗?"如果你与别人共事顺利,那么你必须再问:"在什么关系下共事?"
有 些人天生适合担任部下。二次大战美国陆军英雄巴顿将军(General George Patton)便是一例。巴顿当时是美军高级将领,但是当他被拔撰成为独立指挥官时,美军参谋长联席会议主席马歇尔将军(堪称美国历史上最知人善任的将 领)曾有这样的观察:"巴顿是美国陆军有史以来最好的部下,但是他却会成为最差劲的指挥官。"
有些人适合担任团队成员,有些人适合做顾问。有些人具有担任教练与辅导者的天赋,有些人则根本无法辅导他人。
有些人在压力下充分发挥,有些人只能在安定平稳的环境下工作。另外,你愿为鸡首,或为牛后?几乎每个人只适合一种环境。因此有些人在大型公司,如通用电器或花旗银行表现优异,到了小公司却一败涂地。
另一个同样重要的问题是:"我究竟是作为决策者,还是作为顾问较能发挥,并有所表现?"许多人担任顾问的角色得心应手,却无法承受做决策的负担与压力。相对地,也有许多人需要顾问来协助他们思考,然后才能做出决策,勇敢自信地付诸行动。
这也解释了为什么组织中的第二号人物,一旦接任最高主管的位置,往往不能胜任。最高主管的位置,需要的角色是决策者。强势决策者习惯挑选亲信担任第二序位职务,这个人扮演顾问的角色很杰出,但是做老大就不行了。尽管他很清楚要做什么决策,但就是无法承担实际决定的责任。
切莫忘记:不要试图改变你自己,因为成功的机会很小。相反地,你应该努力改善你擅长的工作方式。还有,不要去尝试自己无法表现,或者只能勉强表现的工作。
——以上摘自《21世纪的管理挑战》(德鲁克著)

Friday, July 26, 2013

怎么写好一篇英文文章-II

一篇好的英文科研文章,其实就是讲好一个故事。

既然是一个故事,必然有时间,地点,人物和任务。

故事不是散文,必须有主线。

这点要牢记。

首先是时间,回顾这方面的研究者,做了些什么,怎么做的,达成了那些任务。

其实是地点,你的突破点。你准备在哪方面动手。为什么要在这里动手。

人物和任务,就是你和合作者,做了些什么任务,突破了什么?
这是高潮部分,你做的每一个小故事或是章节,都应该有个明确的结论。至少你自己应该清楚你为什么要做这个,目的是什么,结论是你做到了没有,观察到什么现象。为什么会有这些现象?

最后, 总结所有的现象,从小节里统计得到总体印象。最后总结。一定要有清晰的结论。比如“我们的方法有效的回答了XXX的问题。” 逻辑要合理,不要片面,不要有遗漏。


Thursday, June 20, 2013

编程风格问题-变量命名原则-转载

1. 匈牙利命名法
该方法最先由一位名叫 “Charles Simonyi” 的微软程序员提出。
匈牙利命名法的主要规范为,通过在变量名之前增加小写字母的符号前缀,以标识变量的属性、类型、作用域等参数。简单地说,即“变量名=属性+类型+对象描述”的形式。
示例:m_lpszStr,表示指向以 0 字符结尾的字符串的长指针成员变量。
2. 骆驼命名法
骆驼命令法,也叫驼峰式大小写。其主要规范为,混合使用大小写字母来构造变量名或函数名。即 “documentFormatType” 的命名形式。
示例:printEmployeePaychecks(),如代码所示,函数的每一个逻辑断点均用大写字母标识。
与此类似,普通的下划线法为:print_employee_paychecks(),逻辑断点使用下划线 “-” 而非字母大写化。
骆驼式命名法是较为流行的书写方式,具有简洁,阅读性强的特点。芒果在编写 PHP 时,一般也采用骆驼命名法。
3. 帕斯卡命名法
与骆驼命名法类似,骆驼命名法是首字母小写,而帕斯卡命名法则需要首字母大写。源自 Pascal 语言的命名惯例,也称为大驼峰式命名法。
示例:LoginCheck(),string UserName,二者都采用帕斯卡命名法。
当然,规范仅仅是规范,并不需要硬性遵守。但在团队开发中,一致的命名法则对软件的整体风格统一和功能实现,都是有帮助的。

Friday, June 7, 2013

cpmd and CP2K 的一些比较 转载

by ChemiAndy

首先看相同点,它们都是以第一原理(DFT)计算为主的模拟软件。

CPMD是单纯的基于平面波的DFT+赝势方法。这种平面波基組的DFT与gauss软件中那种计算气相孤立分子的、以原子核为中心的球形电子轨道基函数 不同,平面波函数是在整个周期盒子空间扩展的,它不属于任何具体的原子。这种平面波特别适合处理周期性固体体系。类似的平面波DFT计算软件很多,像 VASP, Castep, ABINIT, Quantum-espresso等等。CPMD的一大特色是支持Car-Pariinello MD分子动力学,这也是它名称的由来。Car-Parinello的核心思想是把电子波函数作为动力学变量,文献中称on the fly,即电子随着原子核运动在飞。

平面波的缺点是难以有效处理内层电子,因为内层电子的节面多,需要很多平面波来处理,大大增加计算量,所以一般要用赝势,然而赝势并不总是很好。对于需要 考虑所有电子的情况(个别材料的电、磁、极化等性质),我们不能使用赝势,怎么办呢?cp2k提出了使用gauss基函数处理内层电子,用平面波基函数来 处理外层电子的GPW方法。这是与CPMD的最大不同。

对于分子动力学模拟的支持也有所不同。cp2k也支持分子动力学,但是不能做CPMD,它只支持BOMD,这种MD不让电子飞,而是每一步去优化整个波函 数来计算原子核受力,这叫沿着着绝热面演进,而CPMD是靠近绝热面飞翔。当然了,CPMD也支持BOMD,因为BOMD很简单每步都做SCF就行了。

此外,设计思路不同。cp2k一开始就被设计为支持从QM, MM到QM/MM,从MD到MC,从DFT到从头算等各种模拟计算方法的平台。包含若干模块。而CPMD的功能相对单一,不支持从头算,QM/MM也需要额外的软件和界面。