我本人就是搞计算物理的,目前在美国的大学攻读PhD,方向是计算凝聚态。趁着这个问题,我来给大家详细讲解一下计算物理这个方向,回答题主提出的各个问题。文章较长,还请大家耐心阅读,有什么建议可以在评论区提出。
另外,对于hubbard模型的科普我写的可能会让非物理专业的人看不懂,不过没关系,这个不影响你对主旨的把握。
一,什么是计算物理
计算物理,顾名思义,就是用计算机去研究物理,我们这些搞计算物理的,就是物理界的程序猿。物理学有两大派,理论物理和实验物理,这两种物理大家都非常的好理解。但是呢,理论物理发展到现在,有好多的问题,要么根本就没法得到精确解,要么能得到精确解,但是耗费巨大,得不偿失。
不能得到精确解的例子有很多。举个最简单的例子,求一个高次方程的根,很难得到精确解。物理上也是如此,比如求解多电子系统,需要考虑的项太多了,电子之间库仑斥力,原子核对电子的吸引力,而且还要考虑电子云的屏蔽作用。这个,多少个大脑多少张纸都是算不出来的。但是我们又需要用,那怎么办?
解决办法,一个就是采用近似,对其他干扰项不管了!
比如凝聚态经典的hubbard模型,这个模型看不懂也没关系啊!它直接把一堆电子放到了格点上。我们只考虑两项,一个是电子自身的运动,从一个格点跳到另一个格点,就是下图中的-t。
另一个是库伦排斥,两个负电荷的电子肯定会有排斥作用的啊,我们这里只考虑两个自旋相反的电子占据同一个格点的情况,让其势能增加U,就是下图中的U。按理说在不同的格点应该也有排斥,我们不管,直接让其为0,看看多么简单粗暴!
至于其他的作用,不要了,统统不要了 !
这样我们就可以写出系统的能量(看不懂没关系,和本课题是无关的)
看看,就两项,是不是变的如此简单?Hubbard模型就是对多电子系统的一个非常粗糙的近似。实际上近似处理是物理学非常常见的一个手段。因为我们不需要算的非常精确。精确值1,我们能算到0.9就很不错了,做实验还会有各种各样的误差。当然,这也是我们被数学系鄙视的重要原因之一,他们认为我们遇到难题只会近似,柿子专挑软的捏。
但是,就是这么简单的一个模型,二维以上的精确解也是很难算的。还是看刚才那个模型,一个格点,有四种情况,没有电子占据,有一个自旋为上的电子占据,有一个自旋为下的电子占据,两个电子占据。一个格点4种情况,两个格点呢,那就是16种情况。N个格点呢,那就是4的N次方。
当然了,电子数是守恒的,我们可以排除一些情况,但是它仍然是指数增加的啊!想想那个国际象棋棋盘上的小麦数量。想算精确解,算到猴年马月去吧!
那么,这里,计算物理就应运而生了,计算物理告诉你:“精确解我给不了,但是近似解我还是能给你的。1我给不了,但是我可以得到0.9±0.1。”算了,我们就退而求其次吧。那么计算物理怎么给你?这里就要介绍蒙特卡洛方法了。
二,蒙特卡洛方法
蒙特卡洛是一座著名的赌城。一想到赌,就会自然而然就会想到概率,想到随机数。没错,蒙特卡洛就是用随机数抽样来计算某个东西的。
比如,给你下面一个图形,正方形面积为1,你怎么计算黑色区域的面积?
这个区域很不规则,得到精确解简直是天方夜谭。但是我有一个方法,我往里面投石子,投100个,然后数有几个落在黑色区域了。比如23个落在黑色区域了,那面积就是0.23!嫌不够精确?很简单,多投几个,我投10000个!投的越多,结果肯定是越精确啊。不过不幸的是,实验误差是和实验次数的开方成反比的,也就是说,如果是想要10倍的精确,你需要100倍的实验次数,所以太精确会导致计算时间加长很多。
当然,你亲自投10000个石子,别人会觉得你疯了,你自己也坚持不下来,但是计算机会很乐意帮你的忙,设计一个for循环,给一个判定,直接出结果,1万次计算连1毫秒都不到。这也是计算机的一个很大的好处,只要告诉它具体怎么做,它能以非常快的速度完成。
所以,计算物理很大的部分就是对复杂系统进行“投石子“,用学术的词就叫抽样。想算更精确一点,就多抽几次,不关心精确度,就少抽几次,好节省时间干别的事。
当然,实际的情况要复杂的多,需要各种各样的技巧,我们这里就给个轮廓而已。
三,计算物理的研究方向
首先纠正答主的一点,计算物理并不是一个专业,它是只是一个物理的分支,一种方法。
物理从方法上,有理论物理,实验物理,计算物理。从领域方向上,有光学,原子分子,等离子体,高能,凝聚态,生物物理.....每个方向都会有计算物理的影子。
比如凝聚态,理论凝聚态就是一帮人拿着一张纸和一支笔苦思冥想。实验凝聚态则是一帮搬砖工在操作各种仪器,制作各种各样晶体材料。而计算凝聚态,则是一帮程序猿在电脑前写代码跑数据,但是光会写代码跑数据还不行,我们还要思考,还要有扎实的理论基础,计算物理也是物理。
所以,计算物理并没有特定的研究方向,它寄存于物理的各个领域,为理论物理和实验物理服务。理论太复杂?没关系我们来给你近似解。实验太难做?没关系我们先在电脑上实验。当然,计算物理更多的是服务于理论的,所以它更偏向于理论物理,你动手能力差没关系,但是你的理论得扎实。当然,真正的裁判还是在实验,你理论搞出来了,计算物理证实了,但是现实中实验就是模拟不出来,那就全是空中楼阁。
至于国内的导师,这个我实在是了解甚少,我只知道科大的。我本科的丁泽军老师就是搞计算物理的,他主要侧重的是固体微结构,实验室非常庞大。另外何力新老师是第一性原理还有凝聚态模型的,我在的时候他在用Tensor network搞海森堡模型,不知道现在还有没有做这个。另外朱文光老师也是搞第一性原理的,其他的老师就不是很了解。不过这样的信息建议去学校物理学院的官网,看每个老师的简介和主页,都会有详细介绍的。
四,专业学习以及就业
从事这个专业的研究,自然而然就要理论和编程兼顾了。一般计算物理做的计算都很花时间,所以你仅仅会MATLAB是远远不够的,最好要掌握C,python还有fortran,因为实验室有很多比较古老的代码都是用fortran写的,不过如果你掌握了C,fortran很容易上手。你必须会使用超级计算机,所以一定要学会linux系统的基本操作,怎么提交程序啊,怎么Makefile啊。
最重要的一点,就是虽然这些计算机的内容很重要,但是你的主要精力还是要放在物理上,新手一般都是用师兄们现成的程序稍微改改,然后进行模拟。所以千万不要忙着忙着失去了思考,变成了一个纯粹的批量操作的程序员。
另外,个人认为,发paper的难度,实验 < 理论 < 计算。 实验是灌水的重灾区,你弄出个材料,测测它的若干性质,就能写一篇paper。理论和计算都很难发 paper,但是计算和理论相比,计算在顶级期刊发paper的难度更大。因为很多顶级物理学家对计算物理都有轻视的态度,认为他们鼓捣出来的小玩意儿没什么意义。所以,计算物理专业的,如果能一年出一篇含金量高点的PAPER,那就是大神。所以计算物理专业的老师的H因子都偏低。
找工作的难度,计算 < 理论 < 实验。 虽然是小于,但是实际上难度也小不了多少。计算物理方向的学生一般数据分析能力都比较强,如果是搞材料的,在工业界也会有一定的应用。计算物理有程序猿的一点点基础,虽然不值一提,但是总比没有强吧。理论物理因为身经百战,数理基础很强,也会有一部分企业青睐,而实验物理就属于密集劳动型了,这种一般就业都最困难。不过它们都是物理,都是专业不对口,所以也差不了太多。
最后强调一点,计算物理专业的学生最大的错觉就是"我能转CS"。说实话你那点计算机水平,在搞CS的眼里完全不值一提。这就好比一个计算机专业的学生去申物理学博士,然后跟导师说:“导师,我会求解定态薛定谔方程。”觉得可笑不可笑? 所以,如果你想转CS或者金融,请直接申请相关专业,千万不要搞计算物理来“曲线救国”。毕竟,穿上马甲的蛇也是蛇,变不成乌龟,计算物理也是物理。
计算物理,就是利用计算机去求解那些没有解析解,或者解析解很难求出来的物理问题。
举个例子,假如我想研究铁原子的能级,我可以测一测它的光谱,这是实验物理。
我也可以直接解出他的定态波函数,求得本征能级。但铁原子的波函数求解太困难,解到退休也解不出来。所以就得用计算机求数值解,这是计算物理。
计算物理的研究尺度很大,从亚原子尺度的高能领域到宏观尺度的经典力学都有涉及。个人眼光有限,难以做出全局评价。
计算物理要求研究生的理论功底比较扎实,并且对编程能力也有要求。入门相对实验物理要慢一些,所以组内一定要有前辈带你,否则在超算上装个程序就能折腾你一个月。毕业困难与否取决于你们课题组的积累。
上班时间基本上都是坐在电脑前,比较适合宅男宅女,好动的同学谨慎选择。