= 海洋モデルミーティングログ(2015/09/09)

== 参加者(敬称略)

* 林, 中島, 竹広, 高橋, 石渡, 河合


== 進捗状況の報告(河合)

=== 大気・海洋海氷結合モデルによる水惑星実験

* 相手モデルに受け渡したフラックスをモデルの時間発展に反映させた. 

* 大気海洋海氷結合モデルによる水惑星実験を実施する中で, 結合モデルのデバックを行っている.
  * 実験設定
    * 系の設定
      * 水惑星設定, 海底地形なし(水深 5.2 km)
    * モデル
      * 大気モデル(DCPAM)
        * 力学過程
	  * プリミティブ方程式
        * 物理過程
　　　　　* 地球用放射
	  * 大規模凝結
	  * 積雲パラメタリゼーション(Relaxed Arakawa Schubert)
	  * Mellor and Yamada 2.5 次
      * 海洋モデル(今回は軸対称モデルを用いた)
        * 力学過程
	  * ブジネスクプリミティブ方程式
	* 物理過程
	  * メソスケール渦による混合(Gent McWilliams), 対流調節
     * 初期条件
        * 大気: 温度一様, 静止状態
	* 海洋: 温位, 塩分一様, 静止状態
     * その他
        * 時間ステップ
	  * 大気: 0.5 hour, 海洋: 4 hour
	* 日変化なし, 季節変化あり
	* 地表面温度, 地表面アルベド, 海面フラックスの更新は 4 hour ごとに行う
      
  * 大気 3D & 海洋軸対称モデルによる結果
    * 20 年積分まで行った結果を示した.
      * 定性的には, Neale and Hoskins やこれまで行ってきた軸対称海洋計算の結果と整合的な
        大気大循環, 海洋大循環が駆動されている.
      * 海洋の成層構造が平衡に達するまでは積分時間が足りていないが, これまでの数値実験で見てきた,
        レンズ状の温位・塩分分布ができつつある.
      * 半球非対称な循環場が形成される
    * 計算時間に関して
      * 4 Core CPU が乗った PC 1 台(MPI フラット並列で実行)でおよそ 5 日ぐらい計算時間がかかる.  
      * 海洋大循環が平衡状態に達するまでは実際には O(1000) 年必要であり, 計算時間を短縮する方法
        を考えた方が良いだろう. 
  * 大気軸対称 & 海洋軸対称モデル
    * 3 次元計算に比べて, 1/50 ~ 1/100 程度の計算時間
    * (予期されていたことだが)渦輸送が適切に表現できないため, 実現される東西風分布が三次元計算の結果
      と大きく異なる.
    * 海洋大循環の駆動という観点では, 中緯度の東西方向の海面応力が弱いため, 三次元計算で見られた東西流
      ジェットや子午面循環が駆動されない. 

* TODO
  * 半球非対称な分布が, フラックス交換のための補間ルーチンのバグでないかを調べる. 
  * 補間に伴うフラックスの全球積分値のずれを確認する.
  * 海洋モデル(&海氷モデル)におけるエネルギー収支を確認する
  * エネルギー保存を満たす補間法の調査と実装


=== 結合モデルの長時間積分(O(1000) 年)に向けた取り組み

* 現状, 開発中の結合モデルを O(1000) 年積分するのに
   * PC (4 プロセス): 75 days
   * スパコン(FX10) (16 プロセス): 90 days
  に必要.
* デバックや今後のパラメータ実験のことを考えると, 計算時間を 1/10 ほど短縮したい

* 計算時間短縮のために試してみたこと
  * 作戦 1
    * ハイブリッド並列により並列数を増やす.
      * 例: F10 において, 16 プロセスx 16 スレッド
    * DCPAM のスレッド並列コードの改良
      * スレッド並列の速度向上率が低い箇所やまだスレッド並列化がなされていない hotspot に
        手を加えた.
      * PC 上ではスレッド並列時の並列化効率がいくらか改善した
        * 例: 4 スレッド利用時の並列化効率(前 0.32 -> 後 0.48)
      * しかし, FX10 上では改良後のコードを用いても, 並列化効率は 1.2 程度で飽和してしまった.
        * おそらく, サブルーチン内の一時変数のメモリ確保が非常に遅いことと, malloc 時のスレッドのロック・解除の
	  オーバヘッドが原因かと思われる. 
  * 作戦 2
    * 海洋大循環が初期からある程度落ち着き始めるまで, 大気・海洋モデルともに軸対称モデルを用いる
      * しかし, 上での述べたように, 渦輸送の効果を考慮した強制を与えないと, 期待される海洋大循環が駆動されない. 

* (ミーティング時に提案してもらった内容も含めた)今後の長時間積分の方針
  * 海洋大循環が落ち着くまでは, 大気モデルと海洋モデルは別々に時間発展させる.
    [1] 海洋モデルの海面強制に気候値(大気モデルを数年走らせ, ある程度落ち着いてきた結果を平均して
      海面フラックスを得る)を与え, 場が落ち着き始めるまで海洋モデルを走らせる. 
    [2] [1] で得た海水面温度を大気モデルに与えて, 大気モデルを数年走らせる.
    [3] [1] に戻る.
  * 計算資源が利用可能であれば, 常に結合して時間発展させる計算をバックグラウンドで行っておき,
    上の方法で得られた平衡状態の検証に用いる. 
  * FX10 においてスレッド並列性能がでない問題は時間がとれるときに作業することにし, ひとまず置いておく. 


=== 対流調節スキームの調査と導入

* TODO
  *「遅い」対流調節の計算結果とそれと等価な拡散方程式の数値解の比較をノートに追加する. 
  * 対流調節前後で, 温位, 塩分の鉛直コラム内での保存性を確認

=== 中規模渦パラメタリゼーション(Redi スキーム, GM スキーム) 

* TODO
  * GM スキームの解釈図を, 簡単な関形数を考えて描いてみる.
  
=== 全体的な TODO

* 大気海洋氷結合モデルによる水惑星実験の最近の研究の調査
* 海洋海氷モデルの開発に関して後回しにしたこと
  * 海氷の厚さの拡散の導入
    * 海氷の力学を第一次近似で表現したことになる.
  * rigid lid 近似の排除と自由表面(線形)の導入(Marshall et al., 1997)

== 次回予定日

*  10/05(水) 16:30 から


