附錄-進階修改 - 非標準資料之輸出

以下的修改皆需要動到 MM5 內的 Fortran 程式碼,請三思而後行,此外修改後記得要重新編譯來讓變更生效。

由於有時候會需要一些非標準輸出的值(如邊界層參數化造成的風場變化趨勢、雲微物理造成的溫度變化趨勢等等)此時就需要修改 MM5 主程式,讓它能夠在運算的過程中就把這些數值給丟出來。

進行修改:

在 MM5 中負責主要計算的程式為 MM5/dynamics/nonhydro/solve.F 這支程式會依據你所選擇的各種物理過程呼叫不同的副程式,而這些相關的副程式大多位於 MM5/physics 底下。一般來說如果只是想要得到經過某項物理過程之後的結果,那麼修改 solve.F 就夠了。

在 solve.F 中,XTIME 為目前時間,單位是分鐘。 mix/mjx 分別為 i、j 方向上 Cross Point 的格點數。 ILX/JLX 分別為 i,j 方向上 Dot Point 的格點數 (ILX=mix-1, JLX=mjx-1) 就看需要什麼變數再來修改吧,總之記得修改完要重新編譯。

範例 - 取得邊界層參數化對水平風場造成之摩擦力影響

假設我們需要取得邊界層參數化中水平風場所受到的摩擦力,那就可以從攔截經過邊界層參數化運算後的值來下手。以下為 solve.F 中呼叫 MRF 邊界層參數化副程式的程式碼:

c$omp&private(j) SOLVE.1026 Ccsd$ parallel do private(j) schedule(static,1) 23DEC04.775 DO J=1,JLX 07NOV00.1038 PARJSUM(ITQEVA_SUM,J)=0.0 SOLVE.1028 CALL MRFPBL(IYY,JXX,J,INEST,U3D,V3D,T3D,QV3D,PP3D,QC3D,QI3D, SOLVE.1029

 +         QNC3D,UCD,VCD,QC3DTEN,T3DTEN,QV3DTEN,QI3DTEN,QNC3DTEN,            07NOV00.1039
 +         TGA,TGB,PSB,RPSB,XLV,                                             07NOV00.1040
 +         TA2,QA2,UA10,VA10,                                                07NOV00.1041
 +         SVP1,SVP2,SVP3,SVPT0,EP1,EP2,ZNT,XLAND,UST,                       07NOV00.1042
 +         MAVAIL,                                                           07NOV00.1043
 +         REGIME,HOL,PBL,ZOL,MOL,QFX,HFX,RV,TSLA,TSLB,T0,PPB,               07NOV00.1044
 +         HFXSI,QFXSI,TGSI,SEAICE,                                          23DEC04.776
 +         EMISS,GLW,GSW,TMN,CAPG,SNOWC,XLAT,XLONG,                          07NOV00.1045
 +         RAINP,RAINC,RAINNC,                                               07NOV00.1046
 +         PRW,ALB,SHC,THC,SATBRT,                                           07NOV00.1047
 +         XMOIST,ISICE,                                                     23DEC04.777
 +         INTERIOR_MASK,                                                    07NOV00.1049
 +         1,ILX)                                                            07NOV00.1050
    ENDDO                                                                    SOLVE.1031

Ccsd$ end parallel do 23DEC04.778

在這邊的 UCD 以及 VCD 即為 U V 風場兩個方向的摩擦力項,只要在這段程式碼後面把它們取出來即可。在此例中 UCD 與 VCD 一開始為零,直到經過 MRFPBL 運算後才有值,所以沒有必要做運算前與運算後的相減。在處理不同參數時可能有不同的狀況,記得要適時的把值取出來檢查看看。

results matching ""

    No results matching ""