2015年4月8日 星期三

關於最近缺水兩三事

前陣子有師大的助理教授提到梅雨鋒面北抬的趨勢,就讓我想到學妹上次問我在warming scenarioHadley Circulation擴張的特徵,不過同樣是全球尺度的warming,聖嬰現象卻是反向的趨勢。
這裡要討論到幾個概念 (2,3先富堅,等想法完備之後再聊)
(1)熱力直接環流
(2)有效的beta effect
(3)variation of vertical structure


熱力直接環流結構是否改變了?
為了遵循熱力學第二定律 (maximum entropy),能量註定有個趨勢要做均勻的分布,而這點Hadley Circulation很盡責的做了跨緯度的能量傳輸。 而傳輸的對象熱力學第零定律告訴我們,高的往低的傳。這其實隱含著ITCZ數學解 transverse circulation中很重要的一項:南北向的forcing gradient 
(可參考project10的第18 或者是project4的第10 https://sites.google.com/site/q1q2dynamic/project ) ,間單來說,如果某處的空氣比周遭的更暖更輕,那他就會獲得向上的浮力,但根據流體的連續特質,這裡向上的空氣,也連動的其他地區往下的補充的空氣。

在這個簡單的基礎上,我們可以開始想 "Hadley Circulation為什麼擴張了?"
最直觀的就是maximum thermal gradient 的位置變了。梯度最大的區域伴隨著最強的能量傳輸,以最簡單的Hadley Circulation數學模型來看(Project10的最後一張圖),紅色區域是個const heating source,而在這數學解中,真正決定stream function存不存在的是thermal gradient 存不存在,也就是圖中是否有紅底和白底的交界。而global warming 做了些甚麼事? global warming下,雖然稱做global,每個緯度增加的potential energy卻不相同(像是最有名的polar amplification<--極區的正回饋所造成增溫效應遠大於低緯度)。上述的一切都還只是建立在zonal mean的狀況下,如果再看regional的變化,包括不同區域的cloud variationdesert dust albedo或者是是anthropogenic deforestation...等都有助於thermal gradient位置的變化。而下面的故事就不是三兩篇paper能說清楚的了。



這篇只是想告訴那天問我問題的學弟妹,如果之後做研究需要的話,或許可以畫個thermal gradient 的分布 (<---雖然我覺得pattern會很亂就是)

2014年9月21日 星期日

社會和科學閒聊

趁著今天吃飽撐著 (感謝 李澤軒XDD),就來借著這影片談談統計學或者是物理學裡面常有的一個概念 "自由度" (degree of freedom)。常常有人說,選舉是一人一票,票票等值,但這在實際的自然現象或者是社會中通常都是無稽之談XD。 (主要是看到鄉長候選人的影片中裡面有好幾個讚,讓我突然想聊聊這塊大自然與人類神奇的共通點)。

一樣先從最簡單的概念出發:

今天假設我們有個 10*10的矩陣,那最大可以擁有多少自由度呢?答案就是10*10。
舉個簡單的例子,這10*10的矩陣就像是我們氣象中常用的網格點一樣,而每個點"各自"震盪,"互不干擾" (這是自由度的重要前提)。那我們要完整且一點不漏地表示這個地圖,最直觀的方式就是每個點都是獨立的"mode" ,如同線性代數,有n個維度,就至少要有n組向量來表示,借此n組互不平行的向量就能構成完整的空間。

問題來了,"人在江湖身不由己" (<--有點粗淺的統計學概念就會覺得他是至理名言了XDD)。假設今天我們這組地圖,有個行星尺度的波動通過,那波動所到之處,每個點都聞之起舞,在同組波動裡的各點,看似各自震盪,實際上卻是被波動綁定了。最簡單的例子就像是球場玩的波浪舞,假設這組波浪舞波速固定,每次對面最高點的時候,我們所坐的這側剛好是最低點,我們就可以預期當對面是最低點時,就輪到我們是最高點了,而這就是所謂"mode"的概念,當"mode"所涵蓋的範圍越大,隨時間的振幅明顯,那這個系統的可預報度就越高。


上面講了這麼多話,想要說些什麼呢?"其實,我們都不是那麼的自由"。我們所處的空間其實被許多"giant mode"綁定了。例如:今天台北市選市長,有柯P和連勝文,今天羅淑蕾攻擊柯P,而不會去攻擊連勝文,其實就是"連勝文mode"綁定的結果。他的自由度侷限于"站台連勝文"與"攻擊柯P",所以我們只要知道柯P和連勝文接下來的動向,就能預報羅淑蕾的反應,可預報度之高,絕對遠勝大氣流體!(同理也可以用在蔡正元身上XD)。 所以我們能幫羅淑蕾蔡正元個別算一個自由度嗎?答案是否定的。

人類社會跟自然一樣,一人一票,票票雖然等值,但只有少數人決定了這個值何去何從,少數人決定了整個社會的變異度。(PS:我相信馬英九應該是聖嬰現象)

2013年7月3日 星期三

How to read DYNAMO sounding data Part1

當資料越原始,他就越難處理。這裡要介紹資料中的大魔王--sounding,之後更進一步延伸到Yanai (1973)的傳奇工作,如何用探空計算出積雲對流的做功(這是part2才會討論的東西)。

DYNAMO sounding 網站 http://data.eol.ucar.edu/master_list/?project=DYNAMO


首先手頭上需要三個東西

(1)sounding資料 cls檔的格式--->這當然是廢話啦XD
(2)Matlab  ---> 好處是讀資料和畫圖可以一起用
(3)工作站


一開始資料會長這樣,最前面的是所謂的head(也就是說明測站的部份)。通常一個cls檔會有1~9個不等的head,但為什麼會數量不一呢?所謂人有失足馬有失蹄,放氣球總會失敗,而那該死多放幾次的東西就會變成資料處理的夢魘...除此之外,氣球飛行的速度也不一樣,所以不用期望他每天會有相同的資料量= =+


所以我們的第一步就是把他所有head找出來(這邊很幸運的,資料總是在16行head之後出現,這部份是很固定的),所以我們需要一個工作站和一支shell大量處理cls檔。


Step1:先把所有cls放到工作站的同個資料夾內

Step2:執行下面這之shell檔

#!bin/sh
ls > list.txt
for i in $(cat list.txt)
do
grep -n "Data"  ./${i} > test2.txt
awk 'NR==1;NR==2;NR==3;NR==4;NR==5;NR==6;NR==7;NR==8;' test2.txt | cut -f 1 -d : > ${i}.txt
done

簡單介紹一下幾個關鍵指令 grep是找尋字元(而我們這次要找的就是上面圖中第一行的Data這個字),但如果今天我們要知道字元在哪行,就要加上-n這個附屬性質,
他會回傳
1:Data
2:Data
之類的東西。後面的awk則是去掉數字以外的部份,這樣一來我們就可以只留下行數,而不留下"Data"這個字。(反正看不懂的話就執行這支檔案就懂了XDDD)

有了所有的cls檔的head所在位置之後,便可以把他和cls檔一起載下來,而我檔名命名的習慣
就是在原來的cls之後直接加上.txt
例如:Colombo20111001.cls 對應的head行數檔就是 Colombo20111001.cls.txt



Step3:使用Matlab

這邊提供我使用的程式總共三支
main:https://www.dropbox.com/s/xrn2az7aweb2txj/read2.m
水氣:https://www.dropbox.com/s/0mk8b0s9913s9hf/saturate_q.m
標準層(每25hPafitting):https://www.dropbox.com/s/7gtyo23j94a9ncd/inteptest.m

主要是第一支,另外兩支則是function。簡單講解概念如下,因為matlab從cls檔讀出之後全部都是字串,所以必須轉成數字,但我們只需要轉有數字的部份,這也是為什麼Step1 & Step2的地方要先把所有有英文字的位置先找出來。

然後這邊主要要改的有三個
(1)第十行的start time (2)第十二行的endtime (3)底下的一堆的32

(1)(2)的部份要對照剛剛從工作站下載下來的其中一個檔案list.txt,看自己的第一個cls是從哪邊開始,如下圖。如果想作10/01~10/15那就放starttime=2 endtime=16

(3)而這一堆的32是指垂直有32層,如果欲求不滿,想要來個威猛200層也是不反對(通常sounding資料都可以超過 2000層),那就要先去修改inteptest這支function,這支function設定每25hPa做一次fitting,如果想要改細,那就在inteptest的倒數第二行"aa=aa-25"的地方把25改小,然後把回圈loop次數調高就可以了。(目前設定是讓回圈跑到200hPa)


Step4:執行Matlab主程式,他就會自動吐出一天四筆且內插過的測站資料,如果有人白爛少放了一次氣球,沒關係防爆功能也已經做好了,該次就會整個column顯示nan(但一天只放一顆或兩顆的目前還沒把防爆功能寫入,3~8顆的都可以順利讀入,如果數量過多或過少則一天四筆都會顯示nan)。而目前設定輸出 RH H U V W qv T等變數。