smb_input confusing logic
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- リファクタリング
- 明瞭さ
- 説明が足りない
- 活発さ
- 停滞
- 技術スタック
- fortran
- 領域
- backend
調査の方向性
issue の説明と、参照されている glad_main.F90、glad_timestep.F90、glide_io.F90 のエントリポイントを起点に、Glissade ドライバー内で smb_input を追跡する。standalone の acab/smb 入力と coupled CESM 変換を比較し、その後、より明確なオプションの動作または名前と、有用なログ出力を定義する。ユーザーがどのフィールドから SMB が供給されるかを判断でき、standalone と coupled のケースが意図したソースを使用すれば完了とする。
索引モデルが issue の本文から書いたものです。
説明
As of cism_main_2.02.003 the logic surrounding the smb_input field has some confusing and unintended side effects. There is a cism_wrapper issue describing the problems HERE. For ease of reference, here is the text from Bill's email (feel free to add more details in the comments @whlipscomb !)
I think the problem may be with the config setting smb_input. This setting tells CISM (in the Glissade driver) whether the input SMB has units of mm/yr water equivalent (the units of model%climate%smb) or m/s ice (the units of model%climate%acab). If smb_input = 1, Glissade will compute acab by copying from smb and changing the units. If smb_input = 0, Glissade will ignore the smb field and use the existing value of acab.
In standalone CISM, this means we should have smb_input = 0 when reading acab from the input file, and smb_input = 1 when reading smb from the input file.
But in coupled CESM, it's not so simple. That's because we have Glad code in between. While the incoming qsmb from the coupled has units of mm/yr w.e., Glad converts to acab units when it's filling the arrays params%instances%acab and model%climate%acab. So when we get to Glissade, we should not compute model%climate%acab from model%climate%smb, but rather should go with the existing model%climate%acab, i.e. we want smb_input = 0.
[If you want to see the details, take a look at glad_main.F90, starting around l. 800. This is where Glad converts units. The qsmb field comes from the coupler with units of mm/yr w.e. (or equivalently, kg/m2/s) and is copied into params%instances(i)%acab. Then at l. 822, the units are converted to m/yr ice just before the call to glad_i_tstep_gcm. Subroutine glad_i_tstep_gcm is in glad_timestep.F90. At l. 200 there is a call to glide_set_acab. This is where the acab value in the params%instances derived type is copied into model%climate%acab. Subroutine glide_set_acab is in glide_io.F90. It converts the units from m/yr ice to m/s ice, which are the units CISM now uses.]
I think either the logic around these options or the names of the options (or both) should be cleaned up so it is more obvious if you are about to change your settings such that you are not getting SMB where you expect to get it from. This is a high-impact change, and it should be clear to the user what they are doing. Perhaps some log output would be good to have for this as well.
- 主要言語
- Fortran
- スター
- 13
- フォーク
- 17
- 平均マージ
- 3日 15時間
- マージ済み PR(30日)
- 1
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
ESCOMP/CISM のほかの issue
-
Need to update cmake_minimum_required再び着手できるかも @Katetc が 69 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンbug
-
Adding PFunit unit testing to CISM再び着手できるかも @Katetc が 235 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
-
Methods for initializing isotopes within the Ice Sheet再び着手できるかも @Katetc が 249 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
-
Infrastructure to bring isotopes as tracers into CISM再び着手できるかも @Katetc が 249 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
-
enhancement
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
micromatch/picomatch#243 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
yetone/magpie#4095 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[Bug]: Guest messages near the 4,000-char limit fail with 400 "The request was not valid." because multipart turns \n into \r\n対応中かも @juliusmarminge が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
メンテナーはふだん 1 日以内に返信