折腾好几天了,快两星期了,终于把这该死的程序检查好了。
一个简单的球塌缩的模型,用来检验我程序的准确性,折腾死我了。。。借此机会来随便写点作为纪念吧!
我目前写的这个程序,是在一个box中做一个简单的模拟,模拟红移畸变这样一个观测效应。这需要做随机场来实现,因为宇宙的物质分布就是随机的,不过在某个特征尺度上是否线性那就另当别论了,在这里我要讨论的只限于线性情况下的,就是说这些密度场的扰动值很小,能够用线性微扰论来描述,并且是高斯的(这里说的高斯是在傅立叶空间里讲的,意思是这些扰动的振幅满足高斯分布,方差就是平时所说的功率谱,而相位则是随机的,因为在傅立叶空间里这些扰动不再是实数,而是有实部虚部的。),这个场可以根据给定的功率谱来做,这一步我很快就学会并且实现了,还是比较简单的。
现在讲讲我这个模拟到底做些什么事情。我们知道红移畸变是一种观测上的效应,就是说我们观测到的物质的分布,并不是真是的物质分布。因为远处的天体(恒星,星系,星系团等)有本动速度,这是真实的物理速度,和由于宇宙膨胀带来的退行速度不一样。正式由于这样的速度的存在,我们在推测天体的距离时,就无法得到真实的距离。天文观测上经常是通过测量红移来确定一个天体的距离,而本动速度会引起额外的红移,可是我们却无法区分出这一部分红移的贡献,因此就造成我们对距离推算的偏差。
不过这个偏差是可以和本动速度联系起来的。设想一下,如果我们能从理论上预言物质密度扰动和本动速度的关系,那我们理论计算物质功率谱的时候,就可以把本动速度的影响加入进去,最终得到的功率谱就应该可以拿来和观测得到的功率谱进行直接比较,从而来检验我们的理论。但是一般而言这不是一件容易的事情,主要是由于宇宙演化的末期(红移较低的时候)宇宙中出现了非线性的结构,这是用线性微扰论无法预言或者计算的。这个问题主要有两条路,一是进行数值模拟,二是发展出非线性的扰动论。数值模拟一般都是用来检验理论的,但是无法直接提高我们对宇宙结构演化的认识,因为各种因素都被混合在一起了。而理论则是综合考虑了多种因素,给出一些理论公式,可以让我们了解那些效应占主导地位,这就很定量地让我们明白了物质分布演化过程中那些因素更重要了。
到这里有点偏离主题了,但是道出了做模拟的重要性。我的小模拟是检验我们最近得到的一个公式,为后面进一步做研究提供新思路或者方向。
要检验理论,首先得保证我的模拟做的是正确的(主要是指数值计算的精确),这是一个比较麻烦的过程,我在这上面花了很多时间,老板给我出了一个办法,用一个球塌缩的模型来计算本动速度(线性近似下),可是我没接触过这个模型,于是去查找资料,但是资料里讲得都不是很清楚,过了好几天,才理清楚。当时担心一个问题,这个模型计算的本动速度一定和线性扰动论给出的结果一样么?因为两种情况下扰动的形式不一样,尽管都是线性的。这个问题我也试了好久,终于在上周末从理论上证明了它们是等价的,终于可以放心使用这个模型了。
然后就是重新写了一个程序,专门为球塌缩模型写的。但是导师的意思是让我在原先计算红移畸变的那个程序里写,方便检查可能出现的问题,但是我怕把程序搞得杂乱难看,才另外独立写的,最后只要移植回需要检验的那个程序就完事了。这个新的程序几十分钟就写完了,然后调试。。。结果总是对不上。。。我悲剧的在这上面浪费了几天的时间,最后,在今天下午组会的时候,我一边开会一边调,终于找到毛病了。。。原来是我丢失了一行计算k-mode的k的平方的代码。。。所以最后的结果错的一塌糊涂。。。好在找出毛病来了,不然我真的要崩溃了。。。
数值计算的功力还需要慢慢磨练啊!不然我的效率永远无法提升。。。那样的话我就真的彻底悲剧了。。。
评论