Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

smb_input confusing logic

オープン
#76 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
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 を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

ESCOMP/CISM のほかの issue

ESCOMP/CISM の issue をすべて見る

似ている issue

Backend & API Design の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。