気象アプリケーション - 世界気象

映画の話が現実となる?

大きな高波がニューヨークを襲い、テニスボール大の雹が東京に降り、北半球全体が氷河期になる、これらは映画 "The day after tomorrow" の中の破滅的なシーンの一つですが、温暖化現象によって、地球全体の温度が上昇してるのは、映画の中の話だけとは思えません。 これらの現象を防ぐ方法はあるでしょうか? ない場合、大災害とならないように自然現象の衝撃を和らげる方法はあるでしょうか? おそらく文明化が我々にもたらす実際の副作用を誰も知りませんが、気候の変化は、地球の将来の状態と人類に大きな影響を与え、これは、気象学者にとって、大きな挑戦となります。

 

自然災害の予防と準備

地球の温暖化は、天気予報を困難にしてますが、自然災害を和らげるために、天気予報は、効果的でかつ正確さを強調せざるを得ません。 高性能な観測装置に加え、シミュレーション アプリケーションもまた気象データを処理するのに必要不可欠です。 しかしながら、既存のアプリケーションは、制限、または冗長性を持った機能を提供しがちです。 より実践的にするために、研究者の中には、研究の目的を満たすために、自らアプリケーションを作成する人もいます。ただし、現在、多くの利用可能なツールは、ソフトウェアのメンテナンスを容易にできるようにデザインされていません。 これらのツールでアプリケーションの UI を記述することによって、コードのメンテナンスに多くの時間を費やすことになります。 MATFOR 4 の UI の作成と実装機能によって、この問題を解決し、アプリケーションのコードを記述する時間と労力を削減します。


MATFOR 4 GUI 例: 世界気象のシミュレーション
(Data courtesy of Dr. Tseng Chien-Han, Department of Meteorology, Central Weather Bureau of Taiwan)

MATFOR 4 にはまた、地図射影機能があり、多くの二次元グラフで地球の湾曲した表面を数学的に表示します。 MATFOR に組み込まれた機能を使用して、射影する前に、メッシュ プロットのジオイドと海岸線のデータを作成します。 以下の例は、Central Weather Bureau of Taiwan の研修者からのデータです; さまざまな Data Set、Draw Method および Mapping を使用して、グローバルな気候をシミュレートします。

 

Data Set: T
Draw Method: Contour
Mapping: Transverse Cylinder Equal

Data Set: Q
Draw Method: PColor
Mapping: Transverse Cylinder Equal

Data Set: U
Draw Method: PColor
Mapping: Lamber Conformal Conic

Data Set: V
Draw Method: Quiver + Contour
Mapping: Global

MATFOR 4 を使用したアプリケーションのビルド

UI ファイルと MATFOR のライブラリを統合することによって、MATFOR GUI System は、複雑なコードをパッケージし、アプリケーションのビルドを容易にします。 新しい MATFOR GUI builder で、ドラッグ アンド ドロップ操作を可能にし、ソース コードのテンプレートを自動的に生成し、さらに、MATFOR 4 は、Fortran と C++ プログラマに容易な UI プログラミングを提供します。 以下のダイアグラムは、基本的な MATFOR GUI システムのワークフローを示しています。 プログラムは、UI コンポーネントの初期化によって開始し、ハンドルをそれぞれのコールバック関数へ設定するコールバック登録に続きます。 プログラムが main ループに入ると、UI Engine がイベント モニタリングを開始します。 mouse イベントが発生すると、UI Engine がコールバック関数と計算およびシミュレーション手続きをトリガします。

 


MATFOR 4 GUI 例: ソース コードの要約

Step 1
MATFOR 関数を使用した、RDC_core.f90 のサブルーティンの実装。 組み込みのデータ操作関数を使用して、3D ジオイド データと海岸線データを作成し、さらに地図射影を実行します。

Step 2
MATFOR GUI Builder を使用して、新しいインターフェースを作成します。 名前を指定して、使用するすべての UI オブジェクトのハンドルを作成し、MFUI ファイル (RDC.mfui) にインターフェースを保存します。関数テンプレートを持つソース ファイル (RDC.f90) もまた、自動的に生成されます。

Step 3
新しいプロジェクトを作成後、ソース ファイル (RDC.f90) を開き、各ハンドラーに対して発生するアクションを定義します。 定義済みのイベントが発生すると、これらの関数のコードをトリガします。 以下の例は、ボタン クリックのイベントをハンドルする実装を示しています。 画面上で "Animate" ボタンをクリックすると、ボタンのアクション イベントを実行します。 btnAnimate は、ボタンの名前で、ハンドラ btnAnimate_Click を使用するように登録され、ボタンをクリックする度に、この関数を呼びます。

(RDC.f90)
!///////////////////////////////////////////////////////////////////////////////
!// MxUI Callback BEGIN
subroutine btnAnimate_Click(sender)
...
// Actions performed
// Enter your code here

end subroutine btnAnimate_Click
...
!// MxUI Callback END
!///////////////////////////////////////////////////////////////////////////////

!///////////////////////////////////////////////////////////////////////////////
!// Set UI Callbacks
subroutine msSetUICallbacks
...
call msUISetOnClick( 'btnAnimate', btnAnimate_Click )
...
end subroutine msSetUICallbacks
!// msSetUICallbacks END
!///////////////////////////////////////////////////////////////////////////////