Regrid
    Top > Works > SPRING
    設定ファイルの書式
    ブロックの宣言  ブロック名を指定し、その中にキーと値を記述する。ブロックの始まりと終わりはそれぞれ「[block_name]」、「[end block_name]」で宣言する。  (例)  キーは値を一つしか指定できないものと複数の値を指定できるものがある。 値を一つしか指定できないキー  上の例のように、単に「key: value」と書く。 複数の値を指定可能なキー  値はデフォルトの並びを持つがいずれも省略可能である。またタグを指定することで順番に関係なく値を設定することが出来る。タグを指定した場合、それより後ろの値はタグを省略できない。  (例)
    変数型
     本稿では、変数型を次のように表記する。
    表記 説明
    char 文字列
    int 基本整数型
    int1 1バイト整数
    int2 2バイト整数
    int4 4バイト整数
    int8 8バイト整数
    real 4バイト浮動小数点数
    dble 8バイト浮動小数点数
    log 基本論理型
    File ファイルの基本情報(要素数を含む)
    File* ファイルの基本情報(要素数を含まない)
    「File」及び「File*」について  ファイルの基本情報。  ファイル形式は今のところプレーンバイナリのみ対応。 「File」で指定可能な変数
    変数 キー 変数型 デフォルト値 備考
    パス path char 長さゼロの文字列 クォーテーション又はダブルクォーテーションで挟むこと。
    データ型 dtype char データにより異なる ['int1'|'int2'|'int4'|'int8'|'real'|'dble']
    レコード番号 rec int 1
    エンディアン endian char リトルエンディアン ['little'|'big']
    「File*」で指定可能な変数
    変数 キー 変数型 デフォルト値 備考
    パス path char 長さゼロの文字列 クォーテーション又はダブルクォーテーションで挟むこと。
    データ型 dtype char データにより異なる ['int1'|'int2'|'int4'|'int8'|'real'|'dble']
    レコード番号 rec int 1
    エンディアン endian char リトルエンディアン ['little'|'big']
    要素数 length int8 0 配列のサイズと言い換えても良い。
     キーが指定されない値は、左から1番目:パス、2番目:データ型、3番目:レコード番号、4番目:エンディアン、5番目:要素数 として解釈される。  デフォルト値から変更する必要が無ければ省略して良い。 (例1) f_lon_bound: "/home/user/miroc/lon_left.bin", dble, 1, big -> パス    :"/home/user/miroc/lon_left.bin" データ型  :dble (8バイト浮動小数点数) レコード番号:1 エンディアン:big (ビッグエンディアン) (例2) f_grid_idx: "/home/user/miroc/idx.bin" -> パス    :"/home/user/miroc/idx.bin" データ型  :int4 (4バイト整数) レコード番号:1 エンディアン:little (リトルエンディアン)  データ型、レコード番号、エンディアンにはデフォルト値が与えられる。 (例3) f_coord_default: path="/home/user/nicam/gl5rl2.bin", endian=big f_x_vertex: rec=1 f_y_vertex: rec=2 f_z_vertex: rec=3 -> パス    :"/home/user/nicam/gl5rl2.bin" データ型  :dble (8バイト浮動小数点数) レコード番号: x, y, z それぞれ 1, 2, 3 エンディアン: big (ビッグエンディアン)  データごとにデフォルト値を設定するためのキーが用意されており(次項参照)、ここではf_x_vertexなどのデフォルト値をf_coord_defaultで設定している。  f_coord_defaultでも設定されなかった変数には元のデフォルト値が与えられる。  つまり、各データについて次のような処理が行われると考えればよい。   (1) プログラムのデフォルト値が与えられる   (2) ユーザーが設定したデフォルト値で上書きされる   (3) ユーザーが設定した個別の値で上書きされる
    grid_system_lattice
    キー 型 必須 複数回指定可 説明 デフォルト値
    id char 格子系の識別子。
    nx int o 経度方向の格子数。
    ny int o 緯度方向の格子数。
    west dble (1) 東端(度)。
    east dble (1) 西端(度)。
    south dble (2) 南端(度)。
    north dble (2) 北端(度)。
    dir char 各ファイルの親ディレクトリ。 ''
    f_coord_default File f_lon_bound及びf_lat_boundのデフォルト値。 '', 'dble', 1, 'little'
    f_lon_bound File (1) 格子線(経線)の経度。
    f_lat_bound File (2) 格子線(緯線)の緯度。
    coord_unit char 座標の単位。['degree'|'radian'] 'degree'
    f_grid_idx_default File f_grid_idxのデフォルト値。 '', 'int4', 1, 'little'
    f_grid_val_default File f_grid_valのデフォルト値。 '', 'dble', 1, 'little'
    f_grid_idx File o 格子番号。
    f_grid_val File o 格子の値。
    grid o f_grid_idx及びf_grid_valの付属情報。
    有効なキー:range、input、idxmin、idxmax
    origin_y char 格子系のy軸の始点。['south'|'north'] 'south'
    idx_miss int8 格子番号の欠損値。
    [格子系全体の情報] id  格子系を表す識別子。ログ以外の出力には影響しない。 nx、ny [必須]  それぞれ経度方向、緯度方向の格子数。 west、east、f_lon_bound [準必須] westとeast、又はf_lon_boundのどちらかを必ず指定する。  west、east:   それぞれ東端、西端。等間隔の格子系に対してはこれを指定すればよい。このときf_lon_boundは指定しない。単位は度。  f_lon_bound:   緯度方向の格子線の経度データ。非等間隔格子に対してはこれを与える。このときwestとeastは指定しない。   大きさnx+1の1次元配列。単位はデフォルトでは度(coord_unitで指定可能)。 south、north、f_lat_bound  同上。 coord_unit  座標の単位。'degree'(デフォルト)又は'radian'を指定する。 [格子の情報] f_grid_idx  格子番号データ。基本的には形状(nx, ny)の2次元配列。gridで格子系における領域やファイル上の位置を指定できる。省略すると格子番号が自動的に与えられる(「格子番号の自動割り振り」参照)。  f_grid_idxは任意の回数指定可能。 f_grid_val  (未実装) origin_y  Y軸の原点。'south'(デフォルト)又は'north'を指定する。f_grid_idxやf_grid_valはこれに従うものとみなされる。例えば'south'のとき、f_grid_idxで与えられた2次元配列は、第2次元のインデックス1が南、nyが北に対応するものとして解釈される。  f_grid_idxを指定しないとき格子番号が自動的に割り振られるが、これもこの値に依存する(「格子番号の自動割り振り」参照)。  なおf_lat_boundのデータは必要に応じて内部で反転されるので格納順はどちらでも問題無い。 idx_miss  格子番号の欠損値。  f_grid_idxでこの番号を与えられた格子は欠損格子として扱われ、内挿テーブルには含まれず、検証データでも欠損値が与えられる。 grid  格子データ(f_grid_idx、f_grid_val)の付属情報。基本的に不要だが、入力データの一部を読み込ませたいときや、定義した格子系の一部を対象として計算を行いたいときに用いる。  rangeでは格子系における入力データの位置を定義する。記述方法は次のとおりで、x方向及びy方向の始点と終点を文字列で指定する。各値はカンマないし半角スペースで区切る。 range = "x_begin, x_end, y_begin, y_end"  inputではデータの読み込み範囲を指定する。ファイルに格納された配列の一部のみを入力として与えたいとき、これを指定する。配列形状が(sz1, sz2)で、その中の(l1:u1, l2:u2)を入力としたいとき、次のように文字列で記述する。各値はカンマないし半角スペースで区切る。   input = "sz1, l1, u1, sz2, l2, u2" 格子番号の自動割り振り  f_grid_idxなどで格子番号を与えなかった場合、格子番号が自動的に割り振られる。  経度方向については東から西へ増加する。  緯度方向については、origin_yが'south'のとき南から北へ増加し、'north'のときは逆になる。  なお常に経度方向が優先される。
    grid_system_raster
    キー 型 必須 複数回指定可 説明 デフォルト値
    id char 座標系のID。
    nx int o 経度方向の格子数。
    ny int o 緯度方向の格子数。
    west dble o 東端(度)。
    east dble o 西端(度)。
    south dble o 南端(度)。
    north dble o 北端(度)。
    dir char 各ファイルの親ディレクトリ。
    f_raster_idx_default File f_raster_idxのデフォルト値。 '', 'int4', 1, 'little'
    f_raster_val_default File f_raster_valのデフォルト値。 '', 'dble', 1, 'little'
    f_raster_idx File o o ラスターの格子番号。
    f_raster_val File o ラスターの値。
    raster o f_raster_idx及びf_raster_valの付属情報。
    有効なキー:range, input, idxmin, idxmax
    f_grid_idx_default File* f_grid_idxのデフォルト値。 '', 'int4', 1, 'little', 0
    f_grid_val_default File f_grid_valのデフォルト値。 '', 'dble', 1, 'little'
    f_grid_idx File* o 格子番号。 f_grid_idx_defaultの値
    f_grid_val File o 格子の値。 f_grid_val_defaultの値
    grid o f_grid_idx及びf_grid_valの付属情報。
    有効なキー:w{input, idxmin, idxmax}
    origin_y char 格子系のy軸の始点。['south'|'north'] 'south'
    idx_miss int8 格子番号の欠損値。
    [格子系全体の情報] id  格子系を表す識別子。ログ以外の出力には影響しない。 nx、ny [必須]  それぞれ経度方向、緯度方向の格子数。 west、east、south、north [必須] それぞれ東端、西端、南端、北端。  raster格子は格子線が等間隔という制約があるので、lattice格子とは異なりf_lon_boundやf_lat_boundで格子線の座標を指定することができない。 f_raster_idx  ラスターの格子番号データ。基本的には形状(nx, ny)の2次元配列。rasterで格子系における領域やファイル上の位置を指定できる。 f_raster_val  (未実装) raster  ラスターデータ(f_raster_idx、f_raster_val)の付属情報。基本的に不要だが、入力データの一部を読み込ませたいときや、定義した格子系の一部を対象として計算を行いたいときに用いる。  仕様は[grid_system_lattice]のgridと同じ。 [格子の情報] f_grid_idx  格子番号データ。格子が2次元配列状に整列しているlattice格子系とは異なり、raster格子系は格子の並びに関してそういった制約が無い。従ってここでは配列の長さを明記する必要がある。記述の仕方はエンディアンなどと同様である(詳細は「『File』について」を参照)。 f_grid_val  (未実装) grid  格子データ(f_grid_idx、f_grid_val)の付属情報。仕様は[grid_system_lattice]のgridとほぼ同じだが、格子系上の領域を定義するrangeは指定できない。これはraster格子系においては格子が2次元配列状に整列するという制約がないためである。
    grid_system_convex
    キー 型 必須 複数回指定可 説明 デフォルト値
    id char 座標系のID。
    nij int8 格子系全体での格子数。
    np int o 格子系全体での頂点の最大数。
    dir char 各ファイルの親ディレクトリ。
    f_coord_default File* f_x_vertex、f_y_vertex及びf_z_vertexのデフォルト値。 '', 'dble', 1, 'little', 0
    f_x_vertex File* o o 頂点のx座標。 f_coord_defaultの値
    f_y_vertex File o o 頂点のy座標。 f_coord_defaultの値
    f_z_vertex File (o) o 頂点のz座標。 f_coord_defaultの値
    coord_sys char o 座標系。['spherical'|'cartesian']
    coord_unit char 座標の単位。['degree'|'radian'|'m'|'km']
    coord_miss dble 座標の欠損値。
    f_arc File o 格子線の種類。
    arc_parallel log 端点の緯度が等しい格子線を緯線(小円弧)として扱う。
    f_grid_idx_default File f_grid_idxのデフォルト値。
    f_grid_val_default File f_grid_valのデフォルト値。
    f_grid_idx File o 格子番号。
    f_grid_val File o 格子の値。
    grid o 各ファイルの付属情報。
    有効なキー:range, input, idxmin, idxmax
    idx_miss int8 格子番号の欠損値。
    [格子系全体の情報] id  格子系を表す識別子。ログ以外の出力には影響しない。 nij  格子の数。 np [必須]  頂点の最大数。 coord_sys [必須]  座標系。'spherical'で緯度経度座標系を、'cartesian'で三次元直交座標系を指定する。 coord_unit  座標の単位。座標系により指定可能な値が異なる(下表)。 表 指定可能な座標系とそれに対する入力
    座標系 coord_sysの値 f_*_vertexのうち指定するもの coord_unitの取り得る値
    緯度経度座標系 'spherical' x, y 'degree'又は'radian'
    三次元直交座標系 'cartesian' x, y, z 'm'又は'km'
    ※三次元直交座標系は未実装 f_x_vertex、f_y_vertex、f_z_vertex [必須]  頂点の座標。前二者は常に必須、f_z_vertexは座標系により必須の場合と指定不可の場合とがある。  f_coord_defaultでデフォルト値を指定可能。 coord_miss  座標の欠損値。非構造格子系では頂点の個数は必ずしも一定ではないため、バイナリファイルで座標を与える場合、欠損値が必要となる。 f_arc、arc_parallel  格子線の種類。  凸多角形で構成される非構造格子系の格子線は大円弧(球の中心を通る平面と球面との交線)であることが多いが、海洋モデルCOCOの三極座標系やMODISのサンソン図法で定義される格子系のように、大円弧と小円弧(水平な平面と球面との交線)が混在している場合がある。このような場合、各格子線の種類(大円弧又は小円弧)を記録したものをf_arcで与える。  また格子線の両端点の緯度が等しいこととその格子線が小円弧であることとが同値であることが分かっている場合は、ファイルを省略して単にarc_parallelの値を.true.とすれば良い。 [格子の情報] f_grid_idx  格子番号データ。省略した場合、座標データの格納順に応じて格子番号が自動的に割り振られる。 f_grid_val  (未実装) grid  格子データ(f_grid_idx、f_grid_val)の付属情報。基本的に不要だが、入力データの一部を読み込ませたいときや、定義した格子系の一部を対象として計算を行いたいときに用いる。  仕様は[grid_system_lattice]のgridとほぼ同じだが、こちらは1次元配列に関するものなので、regionとinputは次のように記述される。   region = "x_bgn, x_end"   input = "sz1, l1, u1"
    regridding_table
    キー 型 必須 複数回指定可 説明
    action char o 入力・出力のどちらか。['read'|'write']
    dir char 各ファイルの親ディレクトリ。
    f_attr_path char テーブルの付属情報を記録するファイルのパス。
    f_idx_default File f_send及びf_recvのデフォルト値。
    f_val_default File f_area及びf_coefのデフォルト値。
    f_send File o 変換テーブル。送信側格子の格子番号。
    f_recv File o 変換テーブル。受信側格子の格子番号。
    f_area File o 変換テーブル。格子の重複面積。
    f_coef File o 変換テーブル。格子の重複面積割合。
    division char 変換テーブルの分割方法。['send'|'recv'|'none']
    coef_grid char 重複面積率をどちらの格子について求めるか。['sesnd'|'recv']
    coef_sum char これを指定するとき、重複面積率の和がこの値となるよう補正する。
    allowEmpty log テーブルのサイズが0であるとき、これを許容する。
    vrf_send_format char 送信側格子の検証データの整形方法。['grid'|'index']
    f_vrf_send_idx_default File f_vrf_send_idxのデフォルト値。
    f_vrf_send_val_default File f_vrf_send_area、f_vrf_send_rerr及びf_vrf_send_coefのデフォルト値。
    f_vrf_send_idx File o 送信側格子の検証データ。格子番号。
    f_vrf_send_area File o 送信側格子の検証データ。重複面積の和。
    f_vrf_send_rerr File o 送信側格子の検証データ。重複面積の和の、格子面積に対する相対誤差。
    f_vrf_send_coef File o 送信側格子の検証データ。重複面積率の和。
    vrf_recv_format char 受信側格子の検証データの整形方法。['grid'|'index']
    f_vrf_recv_idx_default File f_vrf_recv_idxのデフォルト値。
    f_vrf_recv_val_default File f_vrf_recv_area、f_vrf_recv_rerr及びf_vrf_recv_coefのデフォルト値。
    f_vrf_recv_idx File o 受信側格子の検証データ。格子番号。
    f_vrf_recv_area File o 受信側格子の検証データ。重複面積の和。
    f_vrf_recv_rerr File o 受信側格子の検証データ。重複面積の和の、格子面積に対する相対誤差。
    f_vrf_recv_coef File o 受信側格子の検証データ。重複面積率の和。
    vrf_miss dble 検証データの欠損値。
    dir_im char 中間ファイルの親ディレクトリ。
    removeIntermediates log 中間ファイルを削除する。
    [基本設定] action [必須]  内挿テーブルを新しく作る場合は'write'、既にあるものを使ってデータの内挿を行う場合は'read'を指定する。  現在内挿は実装されていないので'write'のみ有効。 dir  内挿テーブルと検証データのディレクトリ。 [内挿テーブル] f_send、f_recv、f_area、f_coef  内挿テーブルを構成する4つのデータ。それぞれ送信側格子番号、受信側格子番号、重複面積、内挿係数。  f_idx_defaultでf_sendとf_recvのデフォルト値を、f_val_defaultでf_areaとf_coefのデフォルト値をそれぞれ設定できる、 division  内挿テーブルは格子系に基づいて分割して出力することができる。その格子系を'send'又は'recv'で指定する。'none'(デフォルト)のとき分割しない。 coef_grid  内挿係数は、重複面積を送信側格子ないし受信側格子の面積で除して得られる。  'send'のとき送信側格子、'recv'(デフォルト)のとき受信側格子で除す。 coef_sum  (未実装) allowEmpty  2つの格子系が重複部を持たない場合など内挿テーブルの長さがゼロとなるケースが存在するが、これを許容するとき.true.とする。 [検証データ]  重複面積の和などを集計して整形したもの。これを図化するなどして、内挿テーブルが正しく作成されているかを大まかに確認できる。  以下は送信側格子の検証データに関する説明であるが、受信側格子についても全く同様である。 vrf_send_format  整形方法。'grid'又は'index'を指定する。  'grid':定義された格子系に従って整形される。整形用のデータは不要。例えば送信側格子がlattice gridで、解像度がnx = 256、ny = 128のとき、検証データは(256,128)の2次元配列で出力され、その並びは送信側格子の格子番号の並びに対応する。  'index':整形用の格子番号データに従って整形される。整形用のデータはf_vrf_send_idxで与える。 f_vrf_send_idx  入力データ。整形方法(vrf_send_format)を'index'としたとき、整形用の格子番号データをこれで与える。  f_send_idx_defaultでデフォルト値を指定できる。 f_vrf_send_area、f_vrf_send_rerr、f_vrf_send_coef  出力データ。それぞれ重複面積の和、重複面積の和の格子面積に対する相対誤差、内挿係数の和。  f_send_val_defaultでデフォルト値を指定できる。 vrf_miss  欠損値。欠損格子(格子番号が欠損値である格子)に与えられる。送信側・受信側格子両方の検証データに共通。 [中間データ]  入力ファイルや計算領域が複数に分かれている場合、内挿テーブルはそれぞれのデータないし領域に対して別々に作成されて最後に統合される。その際、別々に作られた内挿テーブル(及び検証データ)は一度中間ファイルとして書き出される。 dir_im、removeIntermediates  中間ファイルの親ディレクトリはdir_imで指定可能。指定しない場合他の出力ファイルから自動的に決定されるが、安全のため中間ファイル用のディレクトリを用意することをお勧めする。  removeIntermediatesが.true.のとき(デフォルト)、中間ファイルは自動的に削除される。  なお計算領域が分割されない場合などは中間ファイルは作成されない。