なぜ日本沿岸海況監視予測システムGPVの水温と流速の格子点の位置が異なるのか

# TL;DR

[MRI.COM](https://www.mri-jma.go.jp/Publish/Technical/DATA/VOL_47/47.html) が [Arakawa B-grid](https://en.wikipedia.org/wiki/Arakawa_grids) を用いているため。

# はじめに

気象庁から気象業務支援センター経由で配信されている[日本沿岸海況監視予測システムGPV](https://www.data.jma.go.jp/suishin/shiyou/pdf/no30508)では、水温・塩分・海面高度の格子数が1422×1603なのに対して、水平流速の1423×1604と東西と南北にそれぞれ1格子多く、位置を見ると半グリッド分ずれて互い違いになっています。また、[日本沿岸海況監視予測システム海氷GPV](https://www.data.jma.go.jp/suishin/shiyou/pdf/no30605)についても同様で、海氷密接度および海氷の厚さと、海氷の漂流速度では同様に半グリッド分ずれています。この理由を理解するためには、海洋モデルがどのような計算を行っているかを理解する必要があります。

# Arakawa grid

海洋モデルの中では、流体を支配する偏微分方程式系（Navier–Stokes方程式）を解いており、一般に有限差分法を用いて離散化されています。有限差分法で計算するときに、東西流・南北流・水温・塩分・海面高度をどのように配置するかは何種類かやり方があり、[Arakawa grid](https://en.wikipedia.org/wiki/Arakawa_grids) と呼ばれています。

![Discretization_for_the_different_Arakawa_grids_correct.svg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/829116/16220135-d263-8898-c306-64439ef10655.png)
Image by [Rpnl ocn - Different Arkawa grids (2016)](https://commons.wikimedia.org/wiki/File:Discretization_for_the_different_Arakawa_grids_correct.svg) / [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)

図中の $u$ は東西流、 $v$ は南北流、$q$ はトレーサー（水温、塩分、海面高度など）が置かれる場所を表します。Arakawa grid には Arakawa A-gridから E-grid まで5種類ありますが、E-grid は45°傾けると B-grid に一致するので、実質的に4種類となります。

どの Arakawa grid を用いるのが数値計算上良いかは、支配方程式や表現する現象の空間スケールに応じて異なり、モデルごとにどの grid を用いているかも異なります。海洋モデルの場合、中規模渦を解像しない粗い(>100km)格子を用いる場合は B-grid がよく、渦解像(<50km)の場合は C-grid が良いと言われています[^1]。

# B-grid を用いる MRI.COM

気象庁の日本沿岸海況監視予測システムは、MRI.COMという海洋モデルを用いており[^2]、このモデルは B-grid を採用しています[^3]。2km解像度で計算を行うのには C-grid のほうが良いのかもしれませんが、解像度の粗い計算が主であった1980年ごろに B-grid で開発が始まったという経緯によるものだと思われます。

また筆者が平成29年度の気象庁モデル開発者特別研修を聴講した際に、MRI.COM で B-grid を採用した理由として以下のような説明がありました。

- 海岸にトレーサー点がある（海岸での潮位観測と海面高度の比較がしやすい）
- 海峡が1グリッドで表現可能である（解像度が粗い場合に海峡が塞がりにくい）

厳密に言うとこの利点は B-grid 全てに当てはまるものではなく、MRI.COM のように海岸がトレーサー点になる場合にのみ当てはまります。同じ B-grid でも海岸を流速点にするモデル（e.g. COCO[^4]）ではこういった恩恵は受けられません。

海岸にトレーサー点を置くメリットは大きいように思いますが、一方で側面境界条件を考えると、海岸に流速点を設定し流速が0であるという条件を課した方が実装上は簡単だと思われます。

# まとめ

細かい話になりましたが、結論としては B-grid の格子点データをそのまま配信しているために、[日本沿岸海況監視予測システムGPV](https://www.data.jma.go.jp/suishin/shiyou/pdf/no30508)の流速とその他の変数の格子が半グリッド分ずれて互い違いになるわけです。[海氷GPV](https://www.data.jma.go.jp/suishin/shiyou/pdf/no30605)についても（たぶん）海洋モデルと同じ格子で計算しているためだと思います。

余談ですが、[全球数値予報モデル(GSM)GPV](https://www.data.jma.go.jp/suishin/shiyou/pdf/no12501) や [メソ数値予報モデル(MSM)GPV](https://www.data.jma.go.jp/suishin/shiyou/pdf/no12601) では風速や気温など全ての変数が同じ格子位置になっています。この理由は GSM や MSM で A-grid を使っているからではなく、モデル格子（GSM はスペクトル法で適合ガウス格子、MSM は C-grid でランベルト正角円錐座標）から等緯度経度格子へと内挿しているためです。


[^1]: BATTEEN, M.L. and HAN, Y.‐J. (1981), On the computational noise of finite‐difference schemes used in ocean models. Tellus, 33: 387-396. https://doi.org/10.1111/j.2153-3490.1981.tb01761.x
[^2]: 広瀬成章・坂本圭・碓氷典久・山中吾郎・高野洋雄 (2020): 日本沿岸海況監視予測システム10年再解析値（JPN Atlas 2020）. 気象研究所技術報告, (83), https://doi.org/10.11483/mritechrepo.83
[^3]: 石川一郎・辻野博之・平原幹俊・中野英之・安田珠幾・石崎廣 (2005): 気象研究所共用海洋モデル（MRI.COM）解説．気象研究所技術報告, (47), https://doi.org/10.11483/mritechrepo.47
[^4]: Hasumi, H., (2015): CCSR Ocean Component Model (COCO) version 4.0, https://ccsr.aori.u-tokyo.ac.jp/~hasumi/COCO/coco4.pdf