回覆列表
  • 1 # 想做小學生857

    首先回答題主的問題:

    模型:最簡單的是基本的牛頓引力問題,即解泊松方程:

    ∇^2 φ(x) = 4πGρ(x)

    必要的引數:有太多,比如你要模擬的宇宙尺度的大小,粒子(就是天體)數目,等等。。。還有一些計算機的引數,通常要把這些引數全部寫進一個或幾個檔案才可以。

    計算機語言:C/C++,Fortran

    然後展開了說:

    這類問題其實就是多體問題,給出粒子的初始位置與速度,算出粒子與粒子之間的牛頓引力,計算其根據時間的演化。只是在此過程中,你需要考慮宇宙膨脹的效應。

    當然,當粒子數量很少的時候,我們還是很容易計算的。對於計算機來說,也沒有任何負擔,但是當例子數目增加到成百上千萬的時候,我堅信你自己的計算機肯定是沒戲了~

    那好,我們這樣做一個計算:

    我們假設每個粒子質量一樣,只計算牛頓引力,因此每一個粒子的性質可以用它的位置(x1,x2,x3)和速度(v1,v2,v3)來描述,我們做如下假設:

    每個粒子用單精度儲存,則:

    2-Body問題需要佔用4B*6*2=48B的記憶體,計算1個粒子-粒子作用力(pp-force),可以解出Kepler 軌道。3-Body問題需要佔用4B*6*3=72B的記憶體,計算3個粒子-粒子作用力(pp-force),軌道沒有解析解。類推,N-body問題需要佔用4B*6*N=(24*N)B,計算(N-1)N/2個粒子-粒子作用力(pp-force),也沒有軌道的解析解。

    這裡解釋一下,我們在這裡假設所有粒子分佈在一個正方形“盒子”中,這個盒子滿足週期性邊界條件,也就是說粒子從一個邊出去,就從對應的另一邊進來。上圖 np是指初始我們撒粒子時,每一條邊撒的數目,於是np^3就是粒子總數了。我們把粒子的位置和速度資訊存入xv.dat檔案,可以看看這個檔案的大小。假設你的計算機記憶體是4G,你估算一下,還是假設粒子資訊以4B的精度儲存,你只能算約500^3的粒子數目。因此你需要大型計算機。我們繼續估算,當粒子數目很多的時候,如10^12兩級,無論什麼樣子的計算機也承受不了10^24這個數量級的pp-force的計算。(給一個圖來感受一下)

    因此我們需要簡化這個計算過程,通常來說,有兩種方法:

    1、Tree-Method(樹形法):

    也就是根據粒子密度不同,劃分網格,將粒子歸算與一個網格之內,計算格點格點與格點間的作用力。著名的Gadget程式就是這個方法,稍後在多科普一些Gadget,先回到pp-force的解決辦法上。

    2、Particle-Mesh:

    這種方法不同於樹形法,這個方法的網格大小是相同的,固定的,不會根據粒子密度不同而改變。這種方法下面還要分為 Cloud-in-Cell (CIC)和 Nearest-Grid-Particle (NGP)兩種解Poisson方程的演算法。

    格點之間之間,計算格點與格點的作用力,格點內部,計算粒子與粒子的作用力,透過這種方法減少計算量。

    在CubeP3M這個程式中,粗格點計算使用CIC,細格點使用NGP

    如上圖,左面是粗格點,右面是細格點。

    給一個CubeP3M的連結:

    CubePM - CITA Computing

    這個程式我一會也會說一些。

    其實這裡面有一個小問題,就是假設粒子與粒子距離過於緊密,那麼根據平方法比例,粒子與粒子作用力就會很大很大,粒子加速度會很大很大很大很大,最後粒子就飛了。這會出問題的。這會兒就需要一個 force softening,即力的軟化問題。即在一個粒子的一定範圍內,不計算粒子與粒子之間的作用力。但是,即使簡化了這些計算,我們的小PC機還是不能滿足計算需求(除非你費大量時間一個一個地計算作用力),因此我們需要程式進行平行計算:Message Passing Interface(MPI),Open Multi-Processing (OpenMP),等等。。。

    隨後就可以說一下計算的流程:

    第一:生成初始條件(物質密度分佈),即生成粒子的在“盒子”的位置

    粒子的初始位置是根據初始功率譜確定的,可以透過CAMB計算轉移方程得到,而且我們計算得到的這個密度場是一個隨機高斯場。在操作時,我們先把粒子均勻擺在格點內,然後根據這個密度場將粒子進行移動,到它的初始位置。

    第二:生成了計算每一步的作用力,然後算出粒子接下來的位置和速度,以此迴圈,知道模擬至當今宇宙(紅移等於0)。這一步說起來很簡單,但是實際上是程式中最複雜的一部分,核心是對泊松方程進行傅立葉變換,在傅立葉空間求解後返回實空間。(具體的看文獻吧,較複雜,太長不贅述,看Gadget和CubeP3M的文獻即可) 當然,如果我們在這一步裡面不只有引力作用,比如我們加了磁流體加了重子,我們便需要考慮引力之外的物理過程,這會使得計算更復雜。

    第三:計算物質密度功率譜(最主要),與觀測對比,檢驗結果。

    這裡實際上就是計算物質密度分佈的統計資訊,根據尺度得到物質密度的功率譜。

    (功率譜大概就長上圖這樣,實線是觀測,虛線是幾次模擬的)

    算到這裡基本就結束了以此模擬運算,然後會有資料處理,不贅述。

    除了純暗物質模擬,我們還可以加入重子(baryonic particles)過程,加入磁流體過程,等等。

    下面舉例開始:

    這中模擬宇宙演化的程式其實還是不少的。

    通常來講,我們最常用的還是Gadget,而且很多程式都是基於它做的:Cosmological simulations with GADGET 文獻:GADGET: a code for collisionless and gasdynamical cosmological simulations,The cosmological simulation code GADGET-2,這個程式你在你自己的筆記本上也能玩的起來,但是規模很小而已~(下圖為當時自己筆記本跑的,因為筆記本壞了一次,引數都丟了。。。)

    還有CubeP3M,這是我接觸的第一個這種程式http://arxiv.org/abs/1208.5098,jharno/cubep3m · GitHub這個程式目前的記錄是3萬億粒子(暗物質+中微子,應該是粒子數目的最高紀錄),在天河2號上執行的。目前資料正在處理中(下圖只是一個暗物質+中微子的小規測試時的模模擬)。

    當然還有很多組在做這類工作,比如去年很火的Illustris:Properties of galaxies reproduced by a hydrodynamic simulation。如下圖(很帥!):

    國內也有做的,比如盤古模擬,

    見下面這篇文獻:現代宇宙學中的數值模擬技術和應用--《中國科學:物理學 力學 天文學》2013年06期(這個講的應該很詳細了,中文的,把模擬原理很學術化地講一下,講的也很清楚)

    最後做一個對未來的展望,數值模擬會怎樣發展呢?引用文獻的圖一給了很好的答案。粒子的數量級和年份呈線性增長。

    |

    最後,LZ確實姿勢水平有限,寫的比較淺顯,先這樣吧(也許還會有更新)

  • 2 # 三清源

    這個模擬在理論上是行得通的,但也僅僅是在理論上。

    為什麼這麼說?

    首先,以人類的認知,只能理解三維空間。

    簡單地說就是:零維是點,沒有長度、寬度及高度。一維是由無數的點組成的一條線,只有長度,沒有其中的寬度、高度。二維是由無數的線組成的面,有長度、寬度沒有高度。三維是由無數的面組成的體,有長度、寬度、高度。而第四維有說是時間軸的也有說是時間維的,只是現在沒有辦法證明,而宇宙起碼是四維的。超弦理論的提出又將維度提升到了幾十種。。。感覺地球滅亡前都搞不明白這個事。

    我相信人類的好奇心會促使一些科學院做出瘋狂的舉動。但就算做出來的也沒有意義。

    為什麼沒有意義?

    首先,這樣的計算機起碼要能計算四維空間及以上的能力。而以人類的主觀感知也僅僅停留在二維的世界裡。或許將來能感受到更高維度,但我想那時已經不是人類了。也可能更高的文明。

    簡單的比喻一下就是你用疊紙飛機的水平就想造宇宙飛船,這顯然是不現實的。反過來說如果人類達到了四維空間的層次,那麼在造這麼個玩意有什麼意義?腦袋就能想明白的事沒必要多此一舉。

    假如在機緣巧合下達到了製造這種計算機的水平,並且造了出來。那對人類來說就是一場滅絕之災。試想一個二維世界造除了高出自己無數個等級的boss且不受控制,還沒有絲毫感情可言,這不是災難是什麼?

    二維人類對計算機輸入程式碼說:“嘿,你是我們造出來的,乖乖聽話”。

    四維計算機說:“滾你媽蛋,骯髒的人類去死吧”。

    至於後面的模擬宇宙那些事和人類就沒什麼關係了,看過《終結者》的都知道,而電影裡的那臺電腦在它面前就是個渣渣。

    宇宙還是很美麗的。

  • 3 # 科學認識論

    這個問題要說清楚的需要答主有很強的專業知識,而且讀者也要具有一定的水平!首先給出答案:宇宙確實可以用計算機模擬,但是難度是很大的。而且目前的模擬都是需要利用簡化方法!不然宇宙這麼大的資料量人類一輩子都造不出來這麼牛逼的計算機.....

    為什麼模擬需要簡化

    對計算機稍微瞭解的人都會知道,模擬宇宙其實就是將相關資訊轉化為引數,而通常需要將這些引數全部寫進一個檔案或幾個檔案中!

    舉個簡單例子,我們需要計算粒子間的引力作用!在其間我們必須考慮宇宙膨脹!那麼我們就必須將粒子的位置(x1,x2,x3)和速度(v1,v2,v3)描述出來,如果只是簡單兩個原子的話那麼很輕鬆,因為只存在兩個粒子間的力可能只需要48B,但是一旦增加粒子那麼粒子間的相互作用就變的非常複雜,假設我們計算機是4G記憶體最多也就算500^3的粒子數目,這還是理想情況!所以當你要模擬宇宙.....粒子數到10^24無論什麼計算機都無法承受了。所以我們只能簡化模型!!!

    這一點做計算物理的同學會深有感觸,有時候粒子數多的系統跑一次任務可能有時需要幾個月......

    簡化模型計算

    前面已經說了必須簡化模型,那麼我們通常簡化模型的方式分為Tree-Method(樹形法)和Particle-Mesh簡單而言第一種方法就是根據粒子密度的不同來劃分網格,計算格點間的作用力。而第二種方法就是不會因為密度不同網格大小不同,所有網格大小一致!

    隨後開始計算,這裡涉及很多的程式還有理論很複雜我只敘述大致過程!

    第一步:生成初始條件,簡單而言就是知道粒子的初始位置!

    第二步:生成了作用力,接下來就開始迴圈進行粒子接下來的位置和速度。這是最耗時間和最複雜的一步。

    第三步:計算物質密度功率譜,與觀測結果進行對比!(最主要的目的)

    總之接下來還有資料處理,就不做過多敘述了。當然如果對這方面感興趣的話也可以自己在計算機上跑,只不過要下點功夫看文獻,學程度,當然你所能跑的規模很小!

    實話說目前我們網上流傳出色彩鮮明的宇宙圖片都是模擬出來的,(包括暗物質、暗能量)只不過都是大型計算機完成的,例如天河二號這種........

    最後給大家介紹一個文獻現代宇宙學中的數值模擬技術和應用--《中國科學:物理學 力學 天文學》2013年06期可以去看看是中文的,講的很清晰!

    如果沒有功夫去實踐的朋友就當看個熱鬧了,確實還是比較複雜的.....

  • 4 # 匡夫

    宇宙無限大,無邊無際。

    因此,宇宙無形。

    所以,宇宙全形無可模擬。

    但是,宇宙區域性可以模擬。

    電腦,當然可以模擬宇宙區域性。

  • 中秋節和大豐收的關聯?
  • 銀龍魚掉鱗片怎麼辦?