博文

从化学看科学与哲学的关系(2007-01-27 20:30:00)

摘要: 导言   科学和哲学都是人类在不断地认识和改造自然的过程中逐渐形成和发展起来的。科学源于人类在认识和改造自然中所积累的经验和知识,但这些经验和知识本身尚不足以形成科学,只有当人们用理性思维对这些经验和知识加以概括、总结和推演,把具体的经验上升到抽象的理论,把零散的知识构建成严整的体系时,科学才在真正意义上形成了。因此,科学就是求实精神和理性精神的结合。 而哲学也是源于人类的经验和知识,但哲学并不单纯是对这些经验和知识的总结,从某种意义上说,既是对人类所有经验和知识的共性和本质进行总结,又是对人类理性认识和理性过程进行总结。 这样看来,科学和哲学的对象和目的是不同的,科学研究的是自然界中具体的事物,总结出具体的规律和本质;哲学研究的是这些具体规律和本质之中所蕴涵的更加广泛和更加深刻的规律和本质,同时总结出理性思维的一般规律。 正因如此,科学与哲学并不孤立,而是相互依存、不断交融、共同发展的。首先,科学虽以人们对自然的经验和知识为基础,但必须经过理性思维的概括、总结和升华才能溶入科学体系之中,而这些理性认识和理性过程则是深受哲学影响的。反过来,哲学从根本上又必须紧紧依赖于各种科学规律和本质,从而归纳出更广泛和更深刻的哲学原理和思维规律。因此,历史上科学界的每一次重大突破无不带来哲学界和思想界的深刻革命,而每一次哲学思想的完备和流行反过来又引导着科学的前进。 科学与哲学的这种关系的确是很有意思和很有意义的,为了能更生动地说明这一点,本文将从化学这一门典型而古老的自然学科来看看科学与哲学的美妙关系。  ****************************   上篇      哲学:化学的引路人   一  古代化学的哲学启蒙   在古代,人们无法对化学现象有多么深刻的认识,所以古代化学并没有真正意义上的“化学理论”,如果说有,或者至少说有什么一种思想对化学实践进行指导的话,那么只能是哲学。 人们最早对化学运动的理论概括大概就是对物质世界本原问题的形形色色的哲学学说。 早在商周之交,中国就产生了五行说,认为世界万物都是由金、木、水、火、土这“五行”构成的,五行之间存在着相生、相克、相乘、反侮等辨证关系,从而产生了万物的运动和......

阅读全文(7383) | 评论:0

关于固体结构和性质理论研究工作的概况(2007-01-27 20:25:00)

摘要:关于固体结构和性质理论研究工作的概况 2006-12-22 00:00:34 / 个人分类:个人原创   目前我做的是低维固体方面的工作,属于交叉的研究领域,介于物理和化学之间。在这一方向前人已经做了很多铺垫性工作,但到目前为止还有许多问题没有解决,并且随着材料科学、纳米技术的发展,这一领域越来越受到人们的重视和兴趣。这里我仅就固体结构和性质的理论研究做一个简单的综述。 (一)固体和表面的理论研究综览 固体可以是结晶体、分子晶体或无定形体。分子晶体是可以区分出单个分子的排列有序的固体。在化学实验研究中情况稍不同与理论研究。因为实验得到的晶体分子的几何对称性大多来自晶态化合物的X-射线衍射,而大多数的较高级别的计算技术则针对于气态化合物。同时,许多化学家最为困扰的是溶液相中化合物的行为。 一、连续体模型 把固体看成是一个具有给定切变强度的连续体,这种模型或类似模型常用于预言固体的力学性质。可以利用有限元或有限差分的方法来建立这些模型,工程师经常用这种类型的模型来进行结构分析,这里就不再进一步讨论了。   二、团簇 使用气相分子计算软件是模拟固体的一种方法。可以模拟足够大的一块固体,这样实际晶体的中心区域就可以用一个无限晶体的中心区域来描述,这叫作团簇计算。 上述计算完成后,必须对结构按照某种方式进行修整。要是不进行特别修整的话,团簇最边缘的原子就会带有悬键,这就会影响这些原子的行为,从而反过来影响邻近的原子,继而又会反过来要求需要更多的原子进行模拟。对于存在共价键的有机晶体,用氢原子修整结构是非常合理的,因为氢原子的电负性接近于碳原子,从而占用最少的计算资源。对于离子性很强的化合物,采用一组点电荷——称为“马德隆势(Madelung potential)”对结构进行修整比较合理。介于上述两种极端类型之间的化合物,该选用哪种方法对结构进行修整就不得而知,必须一个一个地去试,经常需要研究一番才能做出最好的选择。 这些计算再现了无限大固体的电子结构,而这对于很多类型的研究非常重要,如模拟一种用于太阳能电池的化合物,此时确定是直接带隙还是间接带隙就显得很重要。计算能带结构对于模拟无限规则晶体比较理想,但不适合模拟表面化学或带有缺陷的区域。   三、缺陷的计算 化学上的兴趣不只是在于研究无限晶体,而更在于研究......

阅读全文(4072) | 评论:0

Gaussian03自带nbo3.1程序输入格式的BUG(2007-01-27 20:20:00)

摘要:   用Gaussian03自带nbo3.1程序计算,
输入文件:
%chk=test.chk
#p pop=NBORead B3LYP/6-31G* SCF=Tight geom=check guess=read

title

0 1

$NBO $END
$CHOOSE
 BOND S 1 2
      S 1 5
      ...
      S 21 22
 END  
$END   结果out文件中错误信息是:
NATURAL BOND ORBITAL ANALYSIS:

Error in input of bond orbitals:
Keyword for orbital type is not LONE, BOND, or 3CBOND (read `S     ')

如果换成Gaussian98就没事了。 经过反复摸索,终于解决:

原来的确是g03所带nbo的bug!看来这个nbo程序在$CHOOSE关键词都要多读一个text field,因此,解决办法很简单:$CHOOSE后多写任一个词。例如:
$NBO ... $END
$CHOOSE OK
 LONE
   1 1
   2 1
   ...
 END
 BOND
   2 3
   3 4
 ...
 END
$END
 ......

阅读全文(4705) | 评论:0

去掉GaussView启动警告窗口的办法(2007-01-27 20:19:00)

摘要:去掉GaussView启动警告窗口的办法 2006-12-21 23:27:12 / 个人分类:个人原创 对于Windows版本的GaussView(G03VW),如果系统不装Gaussian 03,那么每次打开GaussView就会出现两个警告窗口:“Failed to locate main Gaussian directory”和“Failed to locate Gaussian serial number”。今天琢磨了一下,找到了一个很简单的办法去掉这两个警告窗口,现介绍如下。 首先,直接装GaussView(我这里的是3.0版本)而不必管是否已经装了Windows版的Gaussian 03以及Gaussian 03安装哪个路径。然后,在GaussView的安装目录(比如我的是D:\Program Files\G03VW)下新建两个空文件(文件名分别为G03VW.INI和G03W.INI)。然后将下面代码保存成g03.reg文件: Windows Registry Editor Version 5.00   [HKEY_LOCAL_MACHINE\SOFTWARE\Gaussian, Inc.\Gaussian 03W\Serial] "Serial No."="PC99388316W-0055N"   [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\g03w.exe] "Path"="."   然后,双击g03.reg文件,这样就将这些注册表信息添加到注册表中了。 至此,大功告成。不信,打开GaussView看看是否还会弹出那两个警告窗口。        ......

阅读全文(5041) | 评论:0

能带结构(翻译)(2007-01-27 20:19:00)

摘要: 在分子中可能的电子能级是分立的、量子化的。但分子变得更大时,这些能级相互就会靠得
更近。在晶体里能级之间靠得非常近以致于形成了连续的带子,这些带子的能量具有实际的利用目的。因此,晶体的电子结构可以用其能带结
构来描述。

能带的数学描述无限晶体的电子结构用能带图来描述,能带图给出k空间——叫作布里渊(Brillouin)区—
—中各点的电子轨道的能量。这与角分辨光电子能谱实验结果相一致。
k空间不是一个物理空间,它是对轨道成键性质的一种描述。一个无限长的原子链中,轨道?
相位可以是从全成键到全反键(这两个极端情况分别记为k=0和k=π/a)之间的任何状态。其中有时是一条直线有三个成键原子再接着一个反?

的原子的结合方式或者其他什么结合方式。定义了

k空间后,对于某些原子k=0对应于全成键的对称性,而对于其他原子则是全反键对称的,这
取决于原子轨道的对称性。
对于三维晶体k空间是三维的,(kx,ky,kz)。k空间中的某些点具有特定的名称。在各维
空间中,符号“Γ”指的都是k=0的点,“Μ”指的

都是k=π/a的点。“Χ”、“Y”、“Κ”和“Α”指的是k=0在某些方向上以及k=π/a在其
他方向上的点,这取决于晶体的对称性。典型的能

带结构图——称为spaghetti图——画出了沿着这些k点所对应的轨道能量,见图34.1。这些
符号在参考文献中有更相详细地讨论。
由于轨道展开成了能带,用于形成σ键或σ反键的轨道就展开成更宽的能带,π轨道则形成
更窄的能带,而δ轨道则形成最窄的轨道。

计算带隙
有时候研究者只需要知道晶体的带隙。一旦一条完整的能带计算出来,通过观察自然就很容
易知道带隙了。但是计算全部能带可能会花费大量

的工作,得到许多不必要的信息。估算带隙有一些方法,但并不完全可靠。
只在布里渊区的Μ、Κ、Χ和Γ点进行能带结构计算还不足以形成一条能带,因为任何给定
的能带的能量极小点和极大点有时会落在这些k点之

间。如果计算方法需要较高级别的CPU计算,有时就会进行这样的有限计算。例如,在确定?

否有必要进行高级别的完全计算时,就有可能先进
......

阅读全文(5736) | 评论:1

利用Cartes构造三维石墨晶体的坐标(2007-01-27 20:18:00)

摘要: 三维石墨晶体(Graphite)属于第186号空间群(P6(3)mc),立方晶系(Hexagonal),每个原胞里有4个不对称的原子。用Cartes软件构造三维石墨晶体分成以下几个步骤: 1.       编写初始Graphite.gjf文件。 用文本编辑器(记事本或UltraEdit等)新建一个名为Graphite.gjf的文件,格式如下: # 空一行 2.47 2.47 6.70 90.0 90.0 120.0 #Graphite 空一行 0 1 6   0. 0. 0. 6   0.33333333333 0.66666666667 0.   说明:上述初始文件中只定义了两个原子坐标,他们是一个原胞在石墨平面(Graphene)内的这两个原子A和B的分数坐标,如下图所示: 图中虚线是一个原胞在一个平面上的范围,矢量a, b是晶胞的基矢量。   2.       转换成直角坐标文件 Graphite.gjf文件保存后,运行Cartes软件,选择“导入分数坐标”(因为Graphite.gjf文件中的坐标是分数坐标),如下图: 导入后,晶胞参数文本框就自动读入Graphite.gjf文件中的晶胞参数信息,如下图:   点击“分数坐标转成直角坐标”按钮,如图: 保存成Graphite-car文件,如图: 3.       利用对称性操作得到一个原胞内所有原子的坐标。 再用Cartes软件的“导入直角坐标”按钮导入Graphite-car文件,如图: 点击“对称操作”,如图: 这样就打开了如下图所示的对话框: 先添加单位矩阵,直接点击“添加”按钮即可,如下图所示: 这一步操作表示我们保留原先石墨平面上一个晶胞内的A, B两个初始原子。下面我们就要从A, B两个原子通过晶体的平移对称性来得到整个原胞内的另两个原子A’和B’。 A’和B’是位于第二层石墨平面上的,因此c方向应当平移0.5(或-0.5)个晶胞......

阅读全文(4212) | 评论:0

一个轻松制作和处理矢量图的工具和方法(2007-01-27 20:14:00)

摘要: 我比较喜欢用MetaPost,因为它简单而优美,基本而强大。MetaPost尤其适合于绘制由数学精确控制的图形,例如我曾经利用MetaPost设计了一个平面石墨卷曲成碳纳米管的过程的演示动画,自以为很是得意,其实都是人家MetaPost的功劳。

然而,我有时会遇到这些情形——也许你可能也遇到过,比如:
1. 我从别人那里获得(如网上下载的)或者是别的软件(如MATLAB)生成了一些好看的矢量图,但我希望将这些图上的添加自己的一些注释性文字。
2. 我想将几张矢量图合成到一张矢量图中来,并且这些矢量图的大小和位置可以按自己需要设置。
3. 我想将几张好看的点阵图(位图)与其他矢量图同时合成到一张矢量图中来,并且能添上自己个性化的说明文本。
......

我想这些用MetaPost似乎很难实现——尽管MetaPost有个宏包可以实现插入eps图形,但似乎这个宏包不太好用,而且这些矢量图的大小和位置将是一件很麻烦的事情。也许你还会想到用LaTeX的一些包来实现在图形上添加各种文字,但同样,你需要很细致地尝试出合适的位置坐标,这同样也比较麻烦。我以前还有个笨方法,就是用Gsview将eps矢量图转换成*.mp文件,然后在这个*.mp文件中添加代码,再重新用mpost编译成矢量图。显然,这也是相当麻烦的且有很大的局限性。

在这里,我向大家介绍一下一个极其简便的方法,因为我个人觉得现在我实现上面的那些设想是件极其轻松的事情——就像用qq聊天那样稀松平常。

首先,你需要有的软件是:
1. M$ Word (M$ Office) (最好是Office XP以上,我用的是2003,低版本的行不行我海不太清楚)
2. Chem Draw (Chem Office) 或者 CorelDRAW (当然其他的能绘制矢量图并且能在Word中作为内嵌对象插入的软件也可以)
3. Adobe Arobat (注意不是Reader)
4. 最好还有Gsview或Imagemagick等工具

然后,我的思路就很简单了:
1. 先将你所要合成在一起的矢量图和点阵图都插入到Word里。值得注意的是Word 2003中插入的矢量图仍然保持着矢量图的特性。在这些图中,需要调整位置......

阅读全文(9766) | 评论:4

在MS Office中插入矢量图的最佳文件格式(2007-01-27 20:13:00)

摘要: 1. eps 文件

MS Office2003可以直接插入eps格式的矢量图,但插入之后显示效果比较难看,尤其是文本笔划粗细不均,很不美观。但它依然是矢量图,不信,你放大到500倍清晰度仍不减。而且,如果你将word或ppt转成pdf文件(比如用pdf打印机)之后,原来插入的eps图就又会恢复原来的美观模样了。如果直接将word用打印机打印,则纸张上的eps图形显示效果和屏幕上显示的word差不多,不太好看。

另外,有的eps图形插入到MS Office中后,色相居然完全颠倒了(但转成pdf后就又恢复正常了)。

因此,想要在MS Office中插入矢量图,eps格式不是最佳选择。

2. emf文件

eps文件用CorelDraw就可以转成emf 文件

如果将eps矢量图转成emf格式(Enhanced Windows Metafile)的图形,那么插入MS Office中仍然是矢量图,而且效果比eps要好看多了。

3. wmf 文件

eps文件用CorelDraw就可以转成wmf 文件。

我认为wmf 格式(Windows Metafile)的矢量图是插入MS Office的最佳格式。它不但保持了矢量化的图形,而且比eps和emf格式的图形都要美观——就是word转成pdf后,wmf也要比eps和emf好看些。

但在word中的wmf 格式图形打印和转成pdf后,线条稍细,而且字体不太光滑。

4. 如何得到透明背景的矢量图

以上的eps, emf和wmf格式的图形都支持透明背景。但有些软件(比如MATLAB)输出的矢量图往往不是透明背景的,这样插在ppt中就会很难看,就像贴了膏药似的。关于在MATLAB中如何得到透明背景的矢量图,我有个经验就是:用MATLAB导出pdf图形(而不是eps图形),然后用Acrobat另存成 eps图形,往往就是透明的了。不过,如果一个图形包含多个子图,那么很可能只有第一个子图的背景是透明的,其余子图背景仍为白色。

其实,CorelDraw是个相当不错的矢量图软件,用它可以得到具有透明背景的矢量图。将矢量图用CorelDraw打开,然后打开对象编辑器......

阅读全文(12514) | 评论:0

最好的富勒烯结构生成程序-CaGe的简便使用方法(2007-01-27 20:10:00)

摘要: 2006-7-28   CaGe免费,开源,而且功能十分强大,它应当是目前生成富勒烯结构的首选程序。读完本文,您就可以使用CaGe轻松生成任何你想要的富勒烯结构。   关键词:富勒烯(Fullerene),结构(Structure),坐标(Coordinate),CaGe,fullgen,免费软件(FreeSoftware),开源(Open Source)   目前很难找到一种通用程序,能够生成给定碳原子数目n的所有可能的富勒烯Cn的结构坐标。Sebastian Lisken用C和Java开发了一套开源软件包,名叫CaGe(http://www.mathematik.uni-bielefeld.de/~CaGe/)。它主要用来生成各种类型的数学图,其中某些类型与有趣的分子结构密切相关,同时还能够通过不同方式显示这些图形,并能将这些图以多种格式输出成文件。借助于CaGe就能实现我们开头提出的目标-生成我们想要的富勒烯的结构。据程序的作者介绍,CaGe是目前生成富勒烯结构最快最好的软件。然而,目前的CaGe是在Unix图形界面下运行的,而且必须预装有Java(Windows版本可能以后会推出)。因此,对于无法使用图形界面的远程登陆的用户,或者没有安装Java的用户,就无法使用CaGe了。     经过一些摸索,我发现可以在无Java且无图形界面的情况下使用CaGe生成富勒烯的结构坐标。下面我就来详细介绍一下。   1.   安装方法 首先,从CaGe的网站上下载这个软件包CaGe.zip。登陆你的Unix系统(不必是root),然后新建一个文件夹,把CaGe.zip解压进来:   mkdir cage   cd cage   unzip ../CaGe.zip 然后在将其中的CaGe-C.zip解压,就生成了Generators和Native连个文件夹:   cd Generators 进入Generators目录后,就会看到一些*.c的源文件,我们需要将它们编译成可执行文件:   make 在编译好的一系列可执行文件中,我们需要的只有fullgen和embed。下面我就介绍一下如何用这两个程序......

阅读全文(5224) | 评论:1

Linux下C编程注意事项(2007-01-26 19:22:00)

摘要: 一般可以用gcc编译器 1. 头文件
象conio.h应该变成curses.h 2. 没有itoa函数
itoa?不对吧,标准C/C++里根本没有这个函数。即使在Windows平台下某些编译器提供了该函数[3],没有任何移植性不说,还只能解决int类型(也许其他函数还可以解决long、unsigned long等类型),浮点类型又怎么办?当然,办法还是有,那就是:sprintf。 char s[100];
sprintf(s, "%f", 123.123456); 3. 关于sqrt,sin和cos函数
就算是引入math.h头文件,也不会找到sqrt,sin和cos函数。应该用链接库来解决。
有时候我们使用了某个函数,但是我们不知道库的名字,这个时候怎么办呢?很抱歉,对于这个问题我也不知道答案,我只有一个傻办法.首先, 我到标准库路径下面去找看看有没有和我用的函数相关的库,我就这样找到了线程(thread)函数的库文件(libpthread.a). 当然,如果找不到,只有一个笨方法.比如我要找sin这个函数所在的库. 就只好用 nm -o /lib/*.so|grep sin>~/sin 命令,然后看~/sin文件,到那里面去找了. 在sin文件当中,我会找到这样的一行libm-2.1.2.so:00009fa0 W sin 这样我就知道了sin在 libm-2.1.2.so库里面,我用 -lm选项就可以了(去掉前面的lib和后面的版本标志,就剩下m了所以是 -lm). 4. Makefile出现missing separator的错误
原因是目标声明行下面的命令行必须用Tab键分开(而不是空格) PG: PG.o
[ Tab键 ]gcc -o PG -O -O2 -lm /lib/ld-2.2.93.so PG.o
PG.o: PG.c pointgroup.h
[ Tab键 ]gcc -c -O -O2 PG.c
clean:
[ Tab键 ]rm -f *.o 5. 注意文件的DOS格式字符
调试的时候应该注意文件可能有DOS格式字符,必须先用如下命令去掉文件中的DOS格式字符:
tr -d <file> tmp_file
mv tmp......

阅读全文(5542) | 评论:0