2010年2月24日 星期三

[轉載] 研究生的學習與訓練

本文摘錄自藏經閣:研究生的學習與訓練,我認為切中許多要點,是非常值得現值研究生階段的學子思考的。


一、前言:

又到了碩士班、博士班入學,尋找指導教授的時間,我很喜歡和同學分享經驗,但似乎最有效率的作法,是把他寫下來,讓有興趣的同學參考。這篇文章是希望整理自己在研究道路上的一些體驗,絕不是什麼定律,也絕不適用於每一個人,只是分享一些經驗,給同學一些參考或是借鏡。

二、瞭解自己的需要和目的:

說到研究生的學習與訓練,應該打從有了繼續深造的念頭說起,為何要花兩年時間唸個碩士,花個3-5年唸個博士呢?是因為大家都唸,不唸很奇怪?還是想要有多點收入,以後升遷容易?還是真的想從研究生的訓練裡來提昇自己的能力。我覺得首先必須清楚自己要的是什麼,唸個學位帶給自己的又是什麼?如果期待碩士帶給你的是加薪,升遷,我想念碩士應該不是一個最有效率的投資。對我來說,研究生是一個訓練,訓練自己更有效率地使用知識與資料,更有效率,更有系統,更科學的發現與解決問題。這個訓練的結果或許會反應到未來工作的選擇,工作內容上,但我相信這只是這個訓練的結果而不應該是碩士班訓練的目的。這個訓練是辛苦的,絕不是把24個學分的課修完,論文一交就結束了。如果你踏入研究所抱持跟我一樣的態度,是來訓練自己使用知識,瞭解與解決問題的能力,我想做為研究生的第一步,應該是讓自己隨時隨刻知道自己在研究生的訓練過程中該努力什麼,時時地警惕有無做到這樣的訓練。

三、找尋適合自己的研究環境:

決定了繼續深造這條路,接下來就是找一個適合自己的研究環境,現在爭取學校入學資格的方式與途徑很多,很多人都可以擁有數個選擇的機會。我想許多人面對的問題就是學校和指導教授的選擇,有人考慮延續大學的專題,繼續留在系上,有些人則選擇出去闖一闖,開拓自己的視野。我的看法是,環境影響一個人,如果說大學的環境會影響大學生的風格與氣質,那實驗室將影響研究生的研究能力與態度。研究生與指導教授,實驗室伙伴的關係遠遠超過學校對研究生的影響,所以大部分的人都會同意我說,碩士班或博士班的訓練應該以指導教授和實驗室為選擇的主要考慮,所以找一個適合自己的指導教授和實驗室是很重要的。在這裡我說”適合或不適合”,應該是從自己學習的個性,指導教授訓練的方式與專業能力,實驗室專長與研究重點,實驗室其他成員的程度與軟硬體設施幾個方面來考慮,在說明尋找一個適合自己的環境之前,請容許我就個人的經驗來談談到底什麼才是選擇環境的主要考慮。我覺得指導教授是重要的,因為他影響實驗室的風格和你之後兩年的訓練,實驗室同儕是重要的,因為人多半近朱者赤,環境帶給人的影響通常遠比自己帶給自己的影響來的大很多。指導教授的重要,並不全然取決與指導教授的專業能力,而是在學生與老師互動的關係上,適合自己的老師遠比能力強的老師來的有影響,所以並不見得到其他的學校,找其他的老師會比留在系上跟自己熟悉的老師來的有幫助。但是值得注意的是,在選擇任何環境之前,必須思考這個環境帶給自己的優缺點是什麼,什麼是這個環境所缺乏而你又希望在碩士班的訓練中得到的。舉個自己的例子來說,我當年選擇繼續留在系上讀碩士班,博士班,是因為我對系上的環境和老師十分熟悉,幾乎不用花任何時間在適應環境上,可以把所有的時間投入做研究或訓練自己的其他能力,但我知道我缺乏國際觀的訓練,所以我時時刻刻注意自己的英文能力,爭取參加國際會議的機會,我知道我缺乏大環境的衝擊與刺激,所以我利用研究之餘的時間到中研院,工研院工作,學習不同的工作方式,工作態度與專業技術。尋找一個好的環境是極為重要的,在已經選定的環境中,因應客觀環境訂定適合自己的學習方法和方式更是重要。所以我必須要說,找一位和自己學習方式,態度能配合的老師是重要的,如果你很清楚自己獨立慣了,希望能走出一條自己的路,不妨找一個可以讓你大顯身手的老師,如果你需要嚴格的訓練,那不妨找一個要求嚴格,已有一條明確道路的老師。所以很清楚的要找一個跟你能配合的老師,我想很多人都會建議,不妨在選擇老師之前,和老師談談,和實驗室的同學,學長談談,我想更重要的事情是搞清楚自己的研究態度和學習方式,才能找到一個適合自己的老師。

四、改變吸收知識的方法:

決定了繼續深造也找好了學校老師,接下來就是進行一連串的訓練,研究生的訓練因指導教授而異,因人而異,也因研究領域而有不同,在這裡只是試著列舉些個人經驗和大家分享。在大學時代,我幾乎是跟著老師跟著課本,一步一腳印地學習所謂的基本知識,到了碩士班,我吸收知識的方式有了很大的改變,我幾乎沒有看完任何一本書或是論文(其實在大學時代我也沒有好好看完一本書),吸收知識的方式幾乎都是問題導向,遇到一個問題,思考一個問題,尋找跟這個問題有關的資料,閱讀和這個問題有關的章節,舉個例子來說,我不瞭解PC的開機程序,我想知道從我打開電腦電源直到Windows 2000提示我輸入帳號密碼之間發生了什麼事情,我找了有關於PC,Windows的所有資料開始閱讀,做些實驗,我慢慢瞭解開機之後大概會先做執行 BIOS,POST檢查等等,完成之後會檢查硬碟分割表,在執行Windows開機,我發現我對BIOS那段還不是很確定,於是我繼續尋找PC BIOS的程序與資料,繼續展開問題,繼續研究。所以我不斷的展開問題與學習,我看了很多書的很少部分,可是讓我對一件事情,一個問題有完整的認識與瞭解。這樣以問題為導向的吸收知識的方法是我在研究生的訓練過程中常常使用的,比較有效率,但是必須建立在對專業知識有基本的認識之上。

五、蒐集與整理資料

研究生蒐集與整理資料是基本能力,現在蒐集與整理資料比起我那個年代(雖然沒有差幾年)是方便多了,我以前幾乎一個星期要跑圖書館數十次,西文期刊室,微片光碟閱覽室是我流連的地方,現在網際網路發達,上Google,IEEE Explorer隨便一個Key Word都可以找到一堆的論文,報告,資料的蒐集方便,來源非常多,相對起來資料的整理便顯的更加的重要,看完資料不加以吸收整理,時間一久,其實跟沒看沒什麼兩樣,花十分鐘的時間看資料,也花十分鐘的時間整理資料是有必要的。把資料讀完,用自己的文字記錄自己所得到,是一件一定要做的工作,以前我學長教我每讀完一篇資料,在筆記本上紀錄這篇資料的重點,和對於這篇資料的一些有系統或是隨意的想法,定期的閱讀這些想法和資料將有助於研究,事實證明這樣的方式幫我整理出了許多研究的問題與解決方法,更進一步,我現在我在電腦上做資料的整理,慢慢建立一套屬於自己的資訊庫系統,一個研究課題,一個技術,可以透過一個自己熟悉而且有效率,有系統的方式找到,一些隨意的想法,和一些片段的研究過程可以透過這種方式保存與重新咀嚼。此外國內外相同領域的實驗室,會議,論壇,研究人員的整理也是必要的,透過與國內外專家的討論,使遠比埋頭苦讀來的有效率的。在這裡有個重點希望和大家分享,身處與資訊爆炸的時代,資料的整理遠比資料的取得來的重要,不經整理的資料,永遠都只是資料,不是知識,透過同儕或是相同領域專家的激盪與討論,遠優於埋首苦讀。

六、學習思考:

剛剛提到閱讀資料和整理資料,一個很重要的關鍵在於閱讀資料和整理資料都需要思考,思考是需要學習的。我常常覺得國內教育最值得爭議的地方在於對思考的訓練不夠(最少在我那個年代是這樣),我在國中的時候幾乎可以看到題目的前幾個字就可以作答,很多時候我根本不知道問題,就已經有了答案。我常常以為知識的可貴在於知道問題,而不是知道答案。以答案為導向的訓練會讓人喪失發掘問題與思考的能力。希望大家沒有這樣的困擾,如果有,則需要開始學習思考。我前一陣子幫華碩R&D的工程師上課,課後他們希望我可以與他們分享一些學習上的經驗,我以一句話和他們共勉~”資料和知識最大的差別在於,資料是別人整理的,知識是自己整理的。打開書本閱讀和閡上書本思考是一樣的重要。”看完資料,閡上資料,先別管別人的方法是什麼,先問自己讀了什麼,問題是什麼,如果是你,如果解決,想不出方法了,再看看別人怎麼做。所以我看論文是三段式的,先試著瞭解問題,放下論文,思考問題,如果問題有意義,我需要,我開始思考如果是我,我怎麼做,經驗告訴我常常”我的解決方法”,和”別人的方法”相似,但是那是我的解法,是經由我大腦思考出來的解法,如果想不出方法,在去看論文的後半部,思考他的方式和技術,第三個階段則是瞭解完問題和答案後再回去思考問題本身,常常你會發現其實還有問題。我不是什麼聰明的人,如果我是這樣,我相信工科系的其他學生也會如此。我記得學弟曾經問我,在碩士博士期間,需要看多少論文,我看了多少論文,答案是我真正看完的論文少的可憐,絕大部分的論文只看 Introduction就停下來。但是重點是我花了遠超過讀論文的時間在思考論文想要討論的問題。

七、發掘問題:

以前聽過一個故事是這麼說的,一個東方的小孩回家,父母會問他的小孩,今天在學校回答了幾個問題,一個西方的小孩回家,父母會迫不及待的問他,今天在學校問了幾個問題。我們受的訓練的確是這樣的,是一個回答問題的訓練,當然這無所謂對錯,只是訓練的方式不同,回答問題和提出問題都需要思考,但是沒有經過思考的答案和問題都是沒有意義的。在研究生的訓練過程中,學習發掘問題是重要的一環。如果你問我,我如何找問題,如何知道什麼才是有意義值得研究的問題?我的答案是這也需要訓練,我常常從別人的研究裡找問題,這也是許多過來人給的意見,但我也從自己的研究和自己的工作經驗裡找問題,我常常覺得問題通常是遇到了才知道,所以有些人建議讀碩士前應該有工作的經驗,因為從工作之中,你才會遇到問題,才會逼迫著你去找尋答案,在學校,你通常在看到問題的同時也得到了答案,所以對於發掘問題的訓練,我覺得一方面從別人的研究與經驗獲得,也可以透過動手的經驗(比方說碩士課程中對於Project的研究)找到靈感。 Well define你的問題和問題的發掘一樣的重要,任何一個問題都必須瞭解前因後果才有意義,無病呻吟的題目雖然可以完成論文,但不會有意義。在國外技術人員在解決問題之前,一定作兩件事情,一是Problem Statement,清楚定義你的問題,二是Requirement Statement,說明你要Target的目標。任何問題都需要明確的描述,才能確定問題的Target和目的(Objective),不然往往你會花了很多時間作一個問題卻被一個很簡單的假設所擊倒。

八、建立模型,尋求解決方法並科學化地驗證:

清楚地瞭解問題,接下來就是替你的問題建立模型(Model)並找到解決方法,能否有效率,科學地找到一個方法或是給予問題適當的模型,或是開創自己的一套理論系統,常常需要仰賴基本知識的根基,把一個問題用科學化或數學化的方式描述和定義有助於思考問題,但建立模型需要基本知識的根基和訓練,並沒有一定的規則或方式可以遵循,在研究生的訓練過程中,科學化系統化的建立問題模型,並找到答案也是重要的訓練。有了模型,有了方法,接下來需要驗證,系統化的驗證在科學的過程中是非常重要的一環,如果一個方法比另一方法好,則必須需先訂出比較的方法,最好有科學的量測方式和參數(Index),有一般解或是 Close Form當然最好,或者是實驗或是模擬證明都是一個完整研究所不能或缺的。研究的過程一個Iteration,所以在任何一個點,都需要重回前一步驟或是最先的步驟來重新思考,檢查,或者是從新來過,透過研究過程數個步驟的反覆進行,才能使研究趨於完備。

研究生的訓練當然不僅與如此,拉拉雜雜說的一大堆,希望對大家有些幫助,剩下的部分需要大家自己去思考,去發掘,我就在此打住,最後和大家分享一些自己的零碎經驗,希望對大家有幫助。

  • 第一,人是習慣動物,要試著養成好習慣:
  • 讀書,作筆記,思考,生活作息等等,我記得曾經過了一年十分有規律的生活,早上6:00起床,跑步到8:00, 9:00上班,5:00下班,7:00坐上書桌聽一個小時英文,8:00-12:00寫論文,在那一年裡面,我寫了20多篇論文,完成了博士班絕大部分的工作,我並不特別,而是持續而規律的習慣是很驚人的,別忘了如果我第一天給你一塊錢,之後每天給你前一天1倍的錢,如果你在連續第29天都拿而在第30天放棄,那你第30天損失的將超過你前29天的總和,學習也是這樣子的。

  • 第二,時時警惕自己:
  • 辛苦工作不見得會成功,但是成功的背後一定是一段辛苦的過程,如果你覺得生活過得很愜意,你也許需要警惕自己是否鬆懈,當然並不是研究生都必須過得很辛苦,而是陶醉在研究的同時,通常在別人看事件很辛苦的事。訓練的過程中,別給自己太多的藉口,也別輕易放棄。

  • 第三,從失敗中學習經驗,在逆境中成長:
  • 人要從成功的例子裡學到什麼我覺得很難,通常都是從失敗的例子裡學到東西(因為那會痛,會有深刻的印象),研究的過程中就好像人生,不可能一直順遂,你必須對時常發生的艱苦狀況有心理準備,並學著從逆境中爬起,我常常跟學弟妹說,如果你在學習的過程中覺得很難過,很痛苦,很沮喪那是必然的,因為每個人都是這樣,沒有人例外。放棄問題,你會不再痛苦,但你也享受不了挑戰問題之後的喜樂。我記得我碩一的時候到工研院報告我的一項研究成果,幾乎被評審委員批評的體無完膚,在之後的三天裡我幾乎食不下厭,一言不語,三天之後,我想出了解決方案,我不應該放棄,我應該正視我研究上的缺失,改進問題,直到現在為止我再也沒有遇到這樣的困境,我在博二暑假的時候,獨自到美國Bell Lab.工作,我在美國沒有親友,也是第一次到國外工作居住,剛去的前幾週,我必須自己處理工作,生活(或者我應該用”生存”更貼切些)的所有問題,工作的壓力和自我的要求讓我常常躲在房間,面對窗外,一面想家,一面痛恨自己沒事幹嘛來這裡受苦受難,但幾週之後,我開始感謝我當時的”錯誤決定”,在美國的那段時間可以說是煎熬,但是也學到很多。人深處逆境,在受苦受難的時候應該高興才對,因為你在之後的某一時刻會發現,這一切都是最好的安排。

  • 第四,勇於接受挑戰:
  • 我說YES的次數,遠超過NO的次數,雖然有時候不知道如何說NO會把自己弄得很辛苦。但是勇敢接受挑戰是很重要的,有了較多的經驗與歷練,就會有更多成功的機會。在許多時候,不需要計較事情做多做少,也無須計較是誰的工作或是誰的成就,經驗與歷練是沒有人可以從你身上拿走的。勇於把自己丟在一個惡劣的環境,一個嚴格的環境和監督之下,把自己的研究丟出來讓大家批評,勇於接受挑戰,我常常覺得如果我25歲跌倒,可能爬的起來,但是我 52歲跌到,可能就很辛苦了。勇於接受挑戰,勇於嘗試自己沒有的經驗和歷練,用樂觀積極的態度面對困難,這是我在研究生和在工作上抱持的態度,也希望和大家共勉。

本文摘錄自藏經閣:研究生的學習與訓練

Share

2010年2月6日 星期六

TauP指令筆記

TauP包含了八個指令以及一個圖形介面模式。圖形模式容易看得到圖,但是實際上,TauP強大的威力必須藉由命令列才能夠真的發揮。本文僅僅作為自己以及地震學同好的參考,若有疏漏,請不吝指正。

taup_time
主要目的:輸入深度、距離等參數,求出各種phase的走時以及ray parameter(horizontal slowness)。
可用參數:

  • -ph
  • 後面接一長串的phases list,每個phase之間以','分隔,例如PP,ScP
  • -pf
  • 後面接內含phase名稱的檔案。
  • -mod[el]
  • 接速度模型名稱,預設是iasp91,另外還可以選擇prem, qdt, ak135,以及你自訂的速度構造模型。
  • -h
  • depth(evdp),單位是km。
  • -deg
  • 大圓路徑的距離,單位是度。
  • -km
  • 大圓路徑的距離,單位是km。
  • -sta
  • 後面接stla及stlo。
  • -evt
  • 後面接evla及evlo。
  • -rayp
  • 只印出ray parameter。
  • -time
  • 只印出travel time。
  • -o
  • 指定output檔名。
  • -debug
  • 偵錯模式。
  • -verbose
  • 詳細輸出模式。
  • -version
  • 印出Taup版本號。
  • -help
  • 印出詳細參數資訊。
由於-o, -debug, -verbose, -version以及-help每個指令都有;且不在我們處理數據的目的之內,下面的command就不再列出。
使用範例:
在evdp=130km, gcarc=65o,以iasp91的模型看P,PcP,ScP的走時以及ray parameter:
taup_time -h 130 -deg 65 -ph P,PcP,ScP
Model: iasp91
Distance   Depth   Phase   Travel    Ray Param   Purist    Purist
  (deg)     (km)   Name    Time (s)  p (s/deg)  Distance   Name
----------------------------------------------------------------
   65.00   130.0   P        625.99     6.471      65.00  = P
   65.00   130.0   PcP      657.70     4.134      65.00  = PcP
在evdp=130km, stla/stlo=40/120.5, evla/evlo=12/140,以prem模型看ScP的走時及ray parameter:
taup_time -mod prem -sta 40 120.5 -evt 12 140 -h 210 -ph ScP
Model: prem
Distance   Depth   Phase   Travel    Ray Param   Purist    Purist
  (deg)     (km)   Name    Time (s)  p (s/deg)  Distance   Name
----------------------------------------------------------------
   32.86   210.0   ScP      736.43     3.470      32.86  = ScP
在evdp=330km, gcarc=4350km, iasp91的模型下看PKiKP的資訊,並匯出成PKiKP.dat檔:
taup_time -evdp 330 -km 4350 -ph PKiKP -o PKiKP.dat
不會有任何畫面上的輸出,因為結果已經輸出到PKiKP.dat裡。

taup_pierce
主要目的:輸入深度、距離等參數,求出各種ray穿透到各深度的時間、距離、走時,甚至是投影到地表的經緯度位置。
可用參數:

  • -ph
  • 後面接一長串的phases list,每個phase之間以','分隔,例如PP,ScP
  • -pf
  • 後面接內含phase名稱的檔案。
  • -mod[el]
  • 接速度模型名稱,預設是iasp91,另外還可以選擇prem, qdt,以及你自訂的速度構造模型。
  • -h
  • depth(evdp),單位是km。
  • -deg
  • 大圓路徑的距離,單位是度。
  • -km
  • 大圓路徑的距離,單位是km。
  • -sta
  • 後面接stla及stlo。
  • -evt
  • 後面接evla及evlo。
  • -az
  • 需搭配-evt方能使用。
  • -baz
  • 需搭配-sta方能使用。
  • -turn
  • 只印出反射面上端(topside of reflection),用於crust/mantle邊界。
  • -under
  • 只印出反射面下端(underside of reflection),用於crust/mantle邊界。
  • -rev
  • 同時印出反射面上下端。但是可能程式有一些邏輯問題,-rev跟-turn行為完全相同。
  • -pierce
  • 接一個深度值,可以多計算該深度的到時以及ray parameter。
  • -nodiscon
  • 搭配-pierce使用,僅印出-pierce所指定深度的資訊。
使用範例:
在evdp=122.5km, gcarc=60o時,印出ScP travel time隨距離變化的資訊:
taup_pierce -h 122.5 -deg 60 -ph ScP
> ScP at   867.49 seconds at    60.00 degrees for a    122.5 km deep source in the iasp91 model.
    0.00   122.5     0.0
    0.15   210.0    19.7
    0.53   410.0    63.2
    1.12   660.0   111.4
   13.48  2889.0   469.6
   57.47   660.0   785.6
   58.62   410.0   813.9
   59.36   210.0   838.7
   59.65   122.5   850.1
   59.92    35.0   861.6
   59.96    20.0   863.9
   60.00     0.0   867.5
此時的三個欄位分別是gcarc, depth以及travel time。
在stla/stlo=-40/120, evla/evlo=0/140且evdp=105km的情況下,計算ScP的資訊並額外求出在440km處的travel time, ray parameter等資訊:
taup_pierce -h 105 -sta -40 120 -evt 0 140 -pierce 440 -ph ScP
> ScP at   802.18 seconds at    43.96 degrees for a    105.0 km deep source in the iasp91 model.
    0.00   105.0     0.0      0.00    140.00
    0.17   210.0    23.6     -0.15    139.94
    0.52   410.0    67.0     -0.48    139.81
    0.58   440.0    73.0     -0.53    139.78
    1.06   660.0   115.0     -0.98    139.60
   12.28  2889.0   468.3    -11.36    135.30
   41.65   660.0   721.3    -37.98    121.44
   42.58   440.0   745.7    -38.80    120.87
   42.70   410.0   749.1    -38.90    120.80
   43.37   210.0   773.6    -39.49    120.37
   43.69   105.0   787.1    -39.76    120.17
   43.89    35.0   796.3    -39.94    120.05
   43.92    20.0   798.6    -39.97    120.03
   43.96     0.0   802.2    -40.00    120.00
此時的五個欄位分別是:gcarc, depth, travel time, lat, lon。也會多算出440km處的資訊。
在stla/stlo=-40/120, evdp=105km, gcarc=1387km且baz=65o時,求ScP的資訊:
taup_pierce -h 105 -km 1387 -sta -40 120 -baz 65 -ph ScP
> ScP at   707.47 seconds at    12.47 degrees for a    105.0 km deep source in the iasp91 model.
    0.00   105.0     0.0    -33.90    133.64
    0.06   210.0    23.3    -33.93    133.58
    0.19   410.0    66.0    -34.00    133.45
    0.39   660.0   113.1    -34.11    133.25
    4.28  2889.0   445.5    -36.16    129.21
   11.66   660.0   630.8    -39.65    120.95
   12.03   410.0   656.7    -39.81    120.53
   12.26   210.0   680.0    -39.91    120.25
   12.38   105.0   692.9    -39.96    120.12
   12.45    35.0   701.7    -39.99    120.03
   12.46    20.0   704.0    -39.99    120.02
   12.47     0.0   707.5    -40.00    120.00
靈活給定-evt/-az以及-sta/-baz,幾乎就掌握了taup_pierce這個指令。欲取得各個phase在構造邊界的反彈點位置,例如ScP反彈點投影到地表的座標,利用taup_pierce把2889.0給grep出來,取第四、第五欄位就可以了!

taup_path
主要目的:輸入深度、距離等參數,用來輸出可以用於psxy的格式,以GMT繪製出ray path。
可用參數:

  • -ph
  • 後面接一長串的phases list,每個phase之間以','分隔,例如PP,ScP
  • -pf
  • 後面接內含phase名稱的檔案。
  • -mod[el]
  • 接速度模型名稱,預設是iasp91,另外還可以選擇prem, qdt,以及你自訂的速度構造模型。
  • -h
  • depth(evdp),單位是km。
  • -deg
  • 大圓路徑的距離,單位是度。
  • -km
  • 大圓路徑的距離,單位是km。
  • -sta
  • 後面接stla及stlo。
  • -evt
  • 後面接evla及evlo。
  • -gmt
  • 輸出結果直接是GMT script。
使用範例:
在evdp=560km, gcarc=74o時,印出PcP,PKiKP的ray path,需匯出成GMT script:
taup_path -h 560 -deg 74 -ph PcP,PKiKP -gmt -o 1999.009.raypath.gmt
不指定輸出檔名時,預設輸出檔名為taup_path.gmt。執行taup_path.gmt會得到這樣的圖型:

taup_curve
主要目的:輸入深度、距離等參數,用來輸出可以用於psxy的格式,以GMT繪製出travel time curve。
可用參數:

  • -ph
  • 後面接一長串的phases list,每個phase之間以','分隔,例如PP,ScP
  • -pf
  • 後面接內含phase名稱的檔案。
  • -mod[el]
  • 接速度模型名稱,預設是iasp91,另外還可以選擇prem, qdt,以及你自訂的速度構造模型。
  • -h
  • depth(evdp),單位是km。
  • -gmt
  • 輸出結果直接是GMT script。
  • -reddeg
  • 輸出曲線其速度衰減單位為deg/sec。
  • -redkm
  • 輸出曲線其速度衰減單位為km/sec。
使用範例:
taup_curve -h 138 -mod prem -gmt -o curve-deg.gmt

畫出來還不是普通的醜,所以必須要自己改一下才行。

taup_setsac
主要目的:幫助標記phase名稱以及該phase的理論到時,並寫入到sac檔的headers(t0~t9以及kt0~kt9)內。
可用參數:

  • -ph
  • 後面接一長串的phases-number,每個phase之間以','分隔,例如PP-1,ScP-5
  • -pf
  • 後面接內含phase-number的檔案。
  • -mod[el]
  • 接速度模型名稱,預設是iasp91,另外還可以選擇prem, qdt,以及你自訂的速度構造模型。
  • -devpkm
  • 設置evdp單位為km(預設是meter)。這個參數很容易忘記,一定要加上去。
使用範例:
將sac檔的PcP與ScP的到時標記起來並寫入到headers裡。
taup_setsac -ph ScP-1,PcP-2 -evdpkm ST40.01.BHZ.sac
ST40.01.BHZ.sac
Swap bytes for linux: swapBytes(npts) (40743*4) + header(632) =  file length=163604
此時看一下sac檔的headers:
SAC> lh t1 kt1 t2 kt2


  FILE: ST40.01.BHZ.sac - 1
 --------------------------------------

      t1 = 8.076501e+02
     kt1 = ScP
      t2 = 5.859711e+02
     kt2 = PcP
關於這個指令,需特別注意sac headers裡的evdp跟o都必需要被設定過(也就是必須有值);有些phase在某距離內會有多個到時,注意taup只會取第一個到時,其餘忽略。另外,這裡如果沒有加上-evdpkm,則用meter計算會天差地遠;後面的sac檔名不適用萬用字元或正規表示法,如果要三個方向的sac檔都要寫入,必須輸入三個檔名才行。

taup_table
主要目的:將速度構造模型匯出成LocSAT可以使用的travel time table格式,或是一般格式。
可用參數:

  • -ph
  • 後面接一長串的phases list,每個phase之間以','分隔,例如PP,ScP
  • -pf
  • 後面接內含phase名稱的檔案。
  • -mod[el]
  • 接速度模型名稱,預設是iasp91,另外還可以選擇prem, qdt,以及你自訂的速度構造模型。
  • -header
  • 接一個LocSAT格式的檔案,內含有depth-distance的資料檔。
  • -locsat
  • 輸出LocSAT格式的travel time table(ascii)。
  • -generic
  • 輸出一般的travel time table(ascii)。
使用範例:
將prem模型的ScP,PcP的travel time以一般格式輸出:
taup_table -model prem -ph ScP,PcP -generic -o generic_ScP_PcP.dat
輸出的結果部份如下:
prem     0.00      0.0 PcP    510.35     0.000       0.00  PcP
prem     0.00      0.0 ScP    723.01     0.000       0.00  ScP
prem     0.10      0.0 PcP    510.35     0.010       0.10  PcP
prem     0.10      0.0 ScP    723.01     0.012       0.10  ScP
prem     0.20      0.0 PcP    510.35     0.019       0.20  PcP
prem     0.20      0.0 ScP    723.01     0.025       0.20  ScP
prem     0.30      0.0 PcP    510.36     0.029       0.30  PcP
prem     0.30      0.0 ScP    723.02     0.037       0.30  ScP
prem     0.40      0.0 PcP    510.36     0.038       0.40  PcP
prem     0.40      0.0 ScP    723.02     0.050       0.40  ScP
將prem模型的ScP,PcP的travel time以LocSAT格式輸出:
taup_table -model prem -ph ScP,PcP -locsat -o locsat_ScP_PcP.dat
輸出的結果部份如下:
n # ScP,PcP travel-time tables for prem structure. (From TauP_Table)
40     # number of depth samples
   0.00   1.00   2.00   3.00   4.00   5.00  10.00  15.00  19.00  21.00
  25.00  30.00  33.00  35.00  40.00  45.00  49.00  51.00  55.00  60.00
  70.00  80.00  90.00 100.00 120.00 140.00 160.00 180.00 200.00 220.00
 240.00 260.00 280.00 300.00 350.00 400.00 450.00 500.00 550.00 600.00
207    # number of distances
   0.00   0.10   0.20   0.30   0.40   0.50   0.60   0.70   0.80   0.90
   1.00   1.10   1.20   1.30   1.40   1.50   1.60   1.70   1.80   1.90
   2.00   2.10   2.20   2.30   2.40   2.50   2.60   2.70   2.80   2.90
   3.00   3.10   3.20   3.30   3.40   3.50   3.60   3.70   3.80   3.90
   4.00   4.10   4.20   4.30   4.40   4.50   4.60   4.70   4.80   4.90
   5.00   5.10   5.20   5.30   5.40   5.50   5.60   5.70   5.80   5.90
   6.00   6.10   6.20   6.30   6.40   6.50   6.60   6.70   6.80   6.90
   7.00   7.10   7.20   7.30   7.40   7.50   7.60   7.70   7.80   7.90
如果你想使用LocSAT,網站上提供的ftp下載處連結是錯誤的,請下載Linux版本,或是HP unix版本,或是Solaris版本

taup_create
主要目的:自訂一個速度構造的模型。
可用參數:只有兩個參數可用

  • -nd
  • "named discontinuities"格式的檔案,請參考$TAUP_HOME/modelFiles/prem.nd。
  • -tvel
  • ".tvel"格式的檔案,請參考$TAUP_HOME/modelFiles/iasp91.tvel。
使用範例:
修改prem速度模型後,產生一個新的model:
taup_create -nd new_prem.nd
結果會在工作目錄下產生名為new_prem.taup的一個速度模型檔,這是一個binary。
修改iasp91速度模型後,產生一個新的model:
taup_create -tvel new_iasp91.tvel
結果會在工作目錄下產生名為new_iasp91.taup的一個速度模型檔,這是一個binary。
很可惜的,taup_create並沒有-o參數,他必定會用輸入檔當成輸出的檔名。這個新的速度模型檔放在工作目錄下就可以被找到並且指定:
taup_time -mod new_prem -evdp 330 -km 4350 -ph PKiKP -o PKiKP.dat
如此一來便可以搭配自訂模型來處理問題。

taup_peek
主要目的:用於debugging先前taup_create所產生的模型細節問題。
可用參數:只有一個參數可用

  • -mod
  • 接我們所產生的model檔名。
使用範例:
taup_peek -mod new_prem
然後在互動式的問答輸入depth跟distance來作詳細的偵錯。

如果你看了這篇筆記,對你有些幫助或是有需要補充的地方,請留言給筆者,謝謝!

Share