Category Archives: 计算和模拟

三年不练手生

春节几天呆在在家里,虽有一大堆比较无聊的事情要做,但家里不通网,给了一个不做的理由。于是,静下心来写了一个小程序,用类似重整化群变换的方法计算一维势井的最低的几个能级。 S. R. White的密度矩阵重整化群的前奏就是用类似方法算了一下方势井的基态,受到启发而创立了著名的密度矩阵重整化群算法。现在,这个问题的算法很清楚,大概可以作为一个很好的计算物理的课程练习。可是,不幸的是,这个练习我自己竟然做了整整三天多,差不多40个工时。当正确的结果出来后再回头去看,所花的大量的调试时间都是一些非常无聊的错误,如数组用完后忘了置零,然后只对非零部分重新赋值后就拿去用了,又如把循环变量j写成了i等。 作为一个老程序员,这些都是不应该犯的错误。赶快找原因,才发现有大约5年没有自己写过程序了。突然想起小时候小学老师的谆谆教导:书要天天念(朗读),字要天天写,三天不念口生,三天不写手生。 对于一个老程序员,程序还得经常写,要是三年不写,估计也就很生了。 原发 科学网(2008)

Posted in 旧文重发, 计算和模拟 | Leave a comment

【旧文重发】也谈计算问题

“我的青铜时代”–也谈计算问题 (原文于2003年5月5日发表在虹桥科教论坛, 略有修改) 说说我自己的计算史吧,我是从打纸带,打卡片开始计算的,资格够老了吧,可是一直不 长进。直到现在,没有花钱买过软件。 82年老板买了一台PC,8086,64K 内存,两个320K的五寸软驱。带DOS1.0和 CPM/86两个操作系统。DOS自带一个BASIC解释器。兄弟几个排队算题,机器24 小时不间断工作,后来加了个8087,内存加到128K,改用FORTRAN,速度快了 很多。后来粗略统计了一下,这台机器上总共算出了大约50来篇SCI,可惜那 个时候不统计这个。 86年老板买了一台286,这时候弟兄不多,其他几个师弟妹喜欢推公式,所以就可以独用了,最得意之作是用DOS2.0下面的Debug用汇编写了一个算辛普松 积分的程序,用Fortran调用,比用Fortran直接写的快了不少,原来算一天的, 只要10来个小时就可以了。可惜存这个程序的软盘发霉了,那程序也找不回来 了,一想起来就心痛,那可是差不多2个月的心血啊。 再后来,就是486,奔腾什么的,MS也不用了,改用Linux了,Fortran不用了, 改用C了(有点与时俱进吧! 其实是逼得,那时候的Linux下就有gcc,没有g77, 没有办法),不算积分了,做模拟了。 现在吗,买了十几台PC,联到一起,按照最高效率的并行算法用串行程序算题, 也偶尔调试一下并行程序,调试好了,送到其他系的SGI上算,学校有规定, 不论那个学院买的大型机,都要向全校开放。免费算题,不需要维护机器,有问题还可以问,服务不好还可以发飙,够美的了。 很多年前也做过一点”从头计算”的东西,是在CRAY上做的,程序的大部分也是问别人讨的。前几年做了一个很得意的东西,用了一个很小的技巧,把一个问 题的计算时间减小到原来的千分之一,可惜的是,文章发了,没人引,方法也没有人用,这个估计就是属于没有意义的问题吧,哈哈。 我是属于小打小闹的一类,我有几个朋友,是大手笔,他们自己买SGI,买创腾 的软件,这边算,那边做实验,然后发Science,Nature 什么的。我个人觉得 都可以啊。大手笔做大事,有成就感; 小打小闹玩自己喜欢玩而且别人没有玩 过的,味道也不错。

Posted in 计算和模拟 | Tagged , , , , , | Leave a comment