IPSLにおける標準インタフェースの取り決め

プログラマよALMAをめざせ |  →原文(英語)


 この文書は, IPSL モデルにおける一般的インタフェース(Polcher et al. 1998)を記述するものです.

 ORCHIDEEで用いられたドライバプログラム( dim2_driver.f90, readdim2.f90, )およびインタフェースルーティン( intersurf.f90 )も公開していますので,実装の実態がおわかりになるでしょう.このドライバは現在はALMA対応netCDFファイルを直接読むようになっています.

ドライバ」はフォーシング(外力)データを読み込み,それをLand Surface Scheme(LSS)用に調整するコードです.一方,「インタフェース」はLSSに関する情報を含み,フォーシングデータをLSSにあわせる役目をします.

おそらくは,LSS本体にこれら二つのプログラムをつける形でプログラムを提供するほうがはるかによいでしょう.こうすると,インタフェースの働きがよりよく理解できるからです.私はこのドライバと組み合わせることができるバケツモデルを持ってはおりませんが,どなたかが手助けしてくれることでしょう.

さて,ドライバプログラムdim2_driver.f90はポイントスケールから全球まで,どんな空間スケールのフォーシングデータをも読むことができます.これはFortran90のallocate命令と,汎用データフォーマットnetCDFの使用により可能となりました.ここで,フォーシングデータに求められる要件は,「netCDFに格納されていること」だけです.ORCHIDEEのWWWサイトに,いくつかのデータセットからこれらのフォーシングデータファイルを作るプログラムを公開しています.また,ISLSCP CDROMとCabauwデータをnetCDFに変換するプログラムも公開しています(訳注:2000年9月段階でバグあり.修正法は後日公開します).ここ数ヶ月のうちに,新しいデータセットが使用可能となります(訳注:ISLSCP IIのことか?).もし読者の方で,ご自分のデータセットを同じような形式で配布したい方がいらっしゃれば,ぜひ私たちにコンタクトを取ってください.


基本的な考え方

 インタフェースの開発に当たっては,次のような基本理念に従っています:


インタフェースに関する現時点での仕様と制約

汎用インタフェースの実装をすることは,LSSならびに大気モデルに対して,データマネジメントに関する何らかの仮定を設けてしまうことに他なりません.この問題を克服するためにはまだまだ作業が必要ですが,しかし私たちだけではなかなか難しいことです.というのは,私たちは他の大気モデルやLSSがどのようにしてデータを取り扱っているかという知識がないためです.ですから,もし読者の方がこのインタフェースを実装することに困難を感じていたら,ぜひ私たちにコンタクトをとってください.私たちはインタフェースを改良する方策を探ります.

さて,インタフェースならびにドライバの,すべての入出力にかかわる部分はパブリックドメインのパッケージである IOIPSL(IPSLで開発されています)により行われています.このパッケージはIPSLの全てのモデルで使用されています.もし読者の方が,私たちが開発したデータハンドリング技法に興味をお持ちなら,ぜひIOIPSLをダウンロードしてください(訳者注:2000年8月の段階では,ダウンロードにはCVSのインストールが必要です).


インタフェースサブルーチン

以下に,ドライバプログラムdim2_driver.f90からインタフェースサブルーチンを呼ぶ方法および渡される変数を紹介します.これはPILPSGSWPといった実験で用いられたドライバと同様の形式です.変数のサイズのみが変わっています.

    CALL intersurf_main &
         & (istp,  iim, jjm, nbindex,  kindex, &
         & dt,  first_call, last_call, coupling,  lon, lat,  date0, &
    ! first level conditions
         & zlev_vec, zlflu_vec, for_u, for_v, &
         & for_qair, for_tair, for_eair, for_ccanopy, &
    ! Variables for the implicit coupling
         &  for_cdrag,  petAcoef, peqAcoef, petBcoef, peqBcoef, &
    ! Rain, snow, radiation and surface pressure
         &  for_rain, for_snowf, &
         &  for_lwdown, for_swnet, for_swdown, for_psurf, &
    ! Output : Fluxes
         &  vevapp, fluxsens, fluxlat, run_off_tot,  &
    ! Surface temperatures and surface properties
         &  tsol_rad,  temp_sol_NEW, albedo, emis,  z0)

時間(input)

istp
callのタイムステップ.LSSはistpからistp+1まで計算を実行します
date0
istpが0であるときのjulian date.
dt
タイムステップ間の時間間隔

データのサイズ(input)

iim
経度方向のグリッド数
jjm
緯度方向のグリッド数
nbindx
LSSが計算するグリッド数

The list of land points (input)

kindex
LSSが計算を実行する点を格納した整数配列.たとえば全球の(海洋も陸面も含んだ)フォーシングデータを与えた場合でも,この配列によってどこを計算対象にすればいいか明示すればいいわけです.入力データのgatheringおよび出力データのscatteringはインタフェースによって行われます.

LSSのlogical control(input)

first_call
このフラグ(logical型)をセットすると,そのcallが最初のコールであることをLSSに指示したことになります.これはたとえばLSSの初期化に用いられます.
last_call
このフラグ(logical型)をセットすると,そのcallが最後のコールであることをLSSに指示したことになります.LSSはそれに応じて,たとえばリスタートファイルの作成などを行います.
coupling
文字列型((CHARACTER(LEN=10))).LSSがPBLとどのようにカップリングされているか明示するものです.エネルギー収支の解法がimplicitかexplicitか,はたまた何か他のカップリング手法を用いるか指定します.

グリッドの地理的分布 (input)

lon
LSSに渡される全てのデータ点についての経度.単位は度.これは長方形グリッドシステムを前提としていません.ただしインタフェースルーチン自体は(現時点では)長方形グリッドシステムを仮定しています(It is not the call to the interface which uses the assumption of a rectangular grid, but the the interface subroutine itself).これはlonによって渡されるベクトル(サイズ=iim×jjm)から2次元配列(iim, jjm)に変換されるからです.
lat
lonと同様に全データ点の緯度を格納します.

垂直方向のグリッド (input)

zlev_vec
大気フォーシングデータが与えられている高さ.単位はmです.これはフォーシングデータと同じランクと次元を持ちます.したがって,全てのフォーシングデータが同じ高さで与えられている必要はありません.
zlflu_vec
LSSにおいてフラックスが計算され,大気モデル側で利用される高さ.単位はmです.

境界層からのフォーシングデータ (input)

for_u
高さzlev_vecにおける風速東向き成分.単位はm/sです.フォーシングデータは,2次元マトリクスの形(iim, jjm)でも,1次元ベクトル(サイズ=iim×jjm)の形でも構いません(以下同様).
for_v
高さzlev_vecにおける風速北向き成分.単位はm/sです.
for_qair
高さzlev_vecにおける比湿.単位はg/gです.
for_tair
高さzlev_vecにおける気温.単位はKです.
for_eair
空気のエンタルピー
for_ccanopy
大気下部におけるCO2濃度.単位はppmvです.

地表抵抗Surface drag (input/output)

for_cdrag
大気モデルまたはドライバに対して,LSSにおける気温並びに湿度の拡散のためのsurface dragをインポーズすることを許可します.もしこれらの値の最大値が0だったら,surface dragはLSSによって計算されることになります.そうでない場合には,大気モデルが直前のタイムステップにおける地表粗度を用いてsurface dragを計算することになります.

地表と境界層(PBL)の結合 (input)

これらの変数についての詳細な記述は,Polcher et al.(1998)を参照してください.

petAcoef
気温に関する係数A(上記論文のAppendixで説明されています.以下同様).
petBcoef
気温に関する係数B.
peqAcoef
湿度に関する係数A.
peqBcoef
湿度に関する係数B.

降雨ならびに降雪 (input)

for_rain
タイムステップ間における降雨量.単位はkg/m2です.下向きが正となります.
for_snowf
タイムステップ間における降雪量.単位はkg/m2です.下向きが正となります.

LSSの入力となる放射 (input)

for_lwdown
下向き長波放射量.単位はW/m2で,下向きが正となります.
for_swnet
地表面におけるネット短波放射量.単位はW/m2で,下向きが正となります.放射スキームが地表モデルに渡し,地表におけるエネルギー収支を解くのに使われなければならない値です.LSSに渡されるアルビードもこの計算に使われます.
for_swdown
地表面における下向き短波放射量.単位はW/m2で,下向きが正となります.これは地表アルビードの計算にのみ使われなければなりません.これは純粋に診断的変数であり,上記for_swnetの代わりに使ってはいけません.もしそうすると地表におけるエネルギー保存則が成り立たなくなる恐れがあります.

地表気圧 (input)

for_psurf
地表面における気圧.単位はPaです.

LSSが計算したフラックス (output)

vevapp
タイムステップistpistp+1の間における蒸発量.単位はKg/m2で,上向きが正です.これは地表から大気に向かって流れたトータルの水フラックスです.LSSがsurface tilingをサポートしている場合は,全タイルにおける値の単純平均となります.これは大気側のサブグリッドバリエーションが定義されていない(not relevant)からです.
fluxsens
顕熱フラックス.単位はW/m2,上向きが正です.
fluxlat
潜熱フラックス.単位はW/m2,上向きが正です.ここで,昇華が起こっている場合は蒸発量と潜熱フラックスの関係は極めて複雑になル可能性があります.ここで,蒸発および紹介に関して大気側と陸面モデル側が同じ気化熱・昇華熱の値を使っていない場合は,潜在的な問題が存在し得ます.これは大気陸面相互作用においてエネルギー保存則が失われることになるので,調整の作業が不可欠です.
run_off_tot
海岸線からの流出量(The runoff along the coastline).下向きが正です(訳注:単位は書いてありませんでした).LSSから出力されて海洋に注ぐものとして,海洋モデルに与えられる水のフラックスです.各グリッドからの流出量は,LSSの内部変数です.というのは他のコンポーネントではこの値は実用的意味がない(not relevant)からです.言い換えれば,もしLSSが河川ルーティングモデル・地下水流動モデル等を持たない場合は,この値はすべて0となります.

地表面からの放射特性 (output)

tsol_rad
地表の放射温度.単位はKです.これは下記temp_sol_NEWと同じ温度である必要はありません.これは各LSSが地表面エネルギー収支計算に際して上向き長波放射をどのように計算しているかに依存します.大気モデルの放射スキームではグリッド平均のフラックスを計算するためにサブグリッドヴァリエーションに関する情報を用いますから,LSSにおけるこの計算もサブグリッドヴァリエーションに関する全ての情報を勘案しなければならないでしょう.なお,放射スキームとLSSのタイムステップが異なる場合は,大気モデル側が,時間平均を計算する処理を用いなければなりません.
albedo
時刻istp+1から始まるタイムステップにおける地表面アルビード.この値は大気モデルの放射スキームが用い,そして地表におけるネット短波放射フラックスを(LSSに)返します.
emis
グリッド平均での,地表の放射率.この値自身はLSSが上向き長波放射を計算するのに使っているかもしれません.そしてこの値は,大気モデル側も,上向き長波放射を正しく再計算するために必要としています.

その他の地表面状態 (output)

temp_sol_NEW
次のタイプステップにおける地表面温度(訳注:単位は未記載).istpからistp+1のタイムステップの計算においてこの値が用いられます.大気モデルは,おそらくは診断diagnostic用(たとえば大気安定度)にのみこの値を用いるでしょう.
z0
グリッド平均の地表面粗度.これは大気モデルが気温及び湿度のsurface dragを計算するのに用いられ,計算されたこれらの値はインタフェースを通じてまた戻されてきます.また,大気モデルはモーメントのsurface dragを計算するためにこの値を用いることがあります.

References

Polcher, J., McAvaney, B., Viterbo, P., Gaertner, M.-A., Hahmann, A., Mahfouf, J.-F., Noilhan, J., Phillips, T., Pitman, A., Schlosser, C.A. , Schulz, J.-P., Timbal, B., Verseghy, D. and Xue Y. (1998)
A proposal for a general interface between land-surface schemes and general circulation models. Global and Planetary Change, 19, pp:263-278

プログラマよALMAをめざせ |  →原文(英語)


原文:Jan Polcher
日本語版:AGATASHI

原文:Last modified: Thu Sep 21 13:50:26 CEST 2000