2012年3月1日 星期四

My first seminar in Japan 2-NICAM model grid point method

NICAM model最讓我驚奇的是他的網格點設置方法。這邊只能由衷的對日本人的數理觀念作讚嘆了,如果有印象,高中甚至是國中時期,幾乎所有人都學過一個元素,稱作碳60(又名富勒烯http://zh.wikipedia.org/zh-hk/%E7%A2%B360)。日本人在NICAM上最大的突破應該是這點,也是NICAM之所以能夠以全球網格資料計算高密度的區域模式成功所在。


一般來說,要計算全球的網格,大家最早的想法都是由經緯度作切割而來,但經緯度作切割最大的缺點就是周期性邊界條件的問題,還有南北極點資料處理部分(如果是作海洋模式的人,有時候會避免處理極點的問題,而把地球北極作人工調整到陸地上,通常是格陵蘭的地方)。

第二個問題就是,當要做大量計算的時候,必須用平行化處理,而平行化有幾個原則,像是左右相鄰的網格點必須能銜接,另外如果要達到最有效率的平行化計算,基本上cpu之間的落差也不能太大,而所處理的資料量也必須相仿,如此一來才不會出現cpu互相等候對方的狀況。

基本上幾個meshgrid的方式,在Matlab裡面都可以看到,最常見的戒是經緯度切法,但如果要單一網格覆蓋面積差不多,則必須採用Hexagon or Pentagon的切法,或者是三角形(非矩形之四邊形)的切法。

底下是幾個Matlab的實作+
                                                       
                                  (1)一般經緯度的切法,低緯形變較少,高緯度形變嚴重
                                 
                     (2)2D的三角形切法,平面的話邊界變形較嚴重,但如果切割叫細則形變較少

(3)為了讓平形化計算更快,第一個想到的是類似富勒烯的網格點

(4)利用Matlab仿NICAM所作的(四邊形or三角形)的grid point
--------------------------------------------------------------------------------------------------------------------------------

接下來對它基本網格切割有概念的話,來看看平行化的部分怎麼分配?

基本上NICAM model網格密度計算有一個通識

Ngrid=10*4^(glevel) glevel是它其中一個參數,決定全球網格密度而使用的。
delt_x=(4*pi*R^2/Ngrid)^0.5。delt_x就是決定glevel後所得的解析度

EX:   glevel                   全球網格點數                         解析度
               5                            10240                                 223.2km 
               6                            40960                                 111.6km
               7                           163840                                55.80km
               ....                            ....                                       ....
以此類推。(最底下會附圖)

第二個要引進的參數是rlevel,rlevel代表的是cpu的loading
其實算法也跟glevel一樣
EX:       rlevel                      # of regions
               0                              10
               1                              40
               2                             160

至於這是甚麼意思呢?假設今天glevel=5 代表總共有10240個網格點,但rlevel=0代表全球分十個區域,則每科cpu所需負責的就是1024個網格點。

第三個要引進的參數稱作beta,他決定了最大網格點和最小網格點之間的比例,在正常狀況下,我們希望每顆cpu處理的面積大小都一樣(全球domain),因此beta=1大家的比例都一樣;但是如果想看特定區域的部分,我們可以先移動他匯合中心到你所關注的區域,再調整beta的大小(如底下的第三圖),如此有甚麼好處呢?一般的模式最害怕的部分就是邊界效應可能damp或者是generate一些奇怪的東西出來,但如果吃進去的是全球網格資料,就不會有此問題。而NICAM在吃全球網格資料之虞,還能調整所關注區域的解析度,這是十分驚人的突破。
beta=lmax/lmin

g-level決定了全球網格密度
r-level決定了平行化後每顆cpu所要負責的網格數量
beta決定了最大間距和最小間距的比例
移動網格集中中心之後再調整beta值,你就可以對所關注的區域一覽無遺,又不用擔心處理邊界條件的問題了。


-------------------------------------------------------------------------------------------------------------------------
在這次研討會之後,只能說日本人太令人讚歎了,不管是所擁有的工具,或者是數理的思考能力,在亞洲上也都是數一數二的。



     


2 則留言:

  1. 幫你挑個錯字XD

    " (2)2D的三角形切法,平面的話邊界變形較嚴重,但如果切割叫細則形變較少"

    叫細 → 較細



    回覆刪除
  2. 太感動了Q^Q竟然有人在看

    回覆刪除