概要
    Introduction
    Top > Products > 回転楕円体格子変換内挿テーブル生成パッケージ > v01.03.02
    目次
     + 概要  + 実行環境  + パッケージの入手から実行まで  + 設定ファイルの書式
    概要
     SPRINGは正式名称を「SPheroidal coordinates Regridding INterpolation table Generator」といい、日本語にすると「回転楕円面格子変換内挿テーブル作成パッケージ」となります。  その名のとおり、地球のような回転楕円体の面上で定義される格子系である回転楕円面格子の変換内挿テーブルを作成することを目的として開発されたプログラムです。回転楕円面格子は球面上で定義される球面格子を含みます。  簡単のため、以下では変換内挿テーブルを内挿テーブルと表記します。  基本的な機能は以下の4つです。   + 回転楕円面格子の内挿テーブルを作成し、データの格子変換を行う   + 複数の内挿テーブルを統合する   + 格子データを作成する   + 格子データをラスター化する  クリックすると設定ファイルの詳細な記述方法を見ることができます。  設定ファイルの基本的な書式は本項に記載されていますので、そちらを先にご覧ください。  その他、下記の拡張機能を備えています。   + ILSの境界条件を作成する   + デフォルトのILS用の内挿テーブルを作成する   + AOGCM結合用のILSの>境界条件及び内挿テーブルを作成する(ページ作成中)  今のところ自由度は低いですが、今後必要に応じて拡張していく予定です。
    実行環境
     使用言語はFortran90、C、Pythonです。  Linuxで動かすことを想定しています(Windows Subsystem for Linux 2 (WSL2)を含む)。  FortranとCについては、Intelコンパイラ(version 19.0.3.199)での動作を確認済みです。  Pythonは図の作成にのみ用いられます。  したがってPython環境が無い場合でも作図以外の各種機能は使用することが出来ます。
    パッケージの入手から実行まで
    パッケージの入手  パッケージは以下から入手できます。   ウェブサイト:    + /~akira/pub/SPRING/SPRING.v01.03.02.tar.gz   GitHub:    +   (内部関係者用)   芳村研サーバー isotope2/3:    - /data7/akira/SPRING/pkg/SPRING.v03.01.02.tar.gz   沖研サーバー rainbow:    - /data4/akira/work/SPRING/pkg/SPRING.v03.01.02.tar.gz 展開  SPRING.v01.03.02に入ると、以下の6つのディレクトリがあります。  adm   コンパイラやコンパイルオプション、各種コマンドを設定するファイルを置くためのディレクトリです。  bin   実行プログラムを置くためのディレクトリです。   作図用のPythonスクリプトもここに置かれます。  dat   入力データを置くためのディレクトリです。   サンプルスクリプトで用いる入力データは全てここに置かれています。  out   出力データを置くためのディレクトリです。   サンプルスクリプトでは全てここに出力することにしています。  run   データセットの作成など、特定の目的のために用意されたスクリプト等を置くためのディレクトリです。   陸面モデルMATSIROの境界条件の作成や、ILSでのモデル結合用の内挿テーブルの作成に用いるスクリプトなどが用意されています。  set   設定ファイルを置くためのディレクトリです。   設定ファイルのサンプルは全てここに置かれています。  src   ソースコードを置くためのディレクトリです。   ソースコードは全てここに置かれています。  pkg   外部ツールを置くためのディレクトリです。   今は河道網の生成に用いるFLOWというプログラムが置かれています。 コンパイル  srcのソースコードをコンパイル・インストールすると実行プログラムがbinの中に作成されます。  基本的な機能を提供する実行ファイルはbin/main_stdに、拡張機能を提供するものはbin/main_extに置かれます。 実行  T85からGSWP3への格子変換をしてみます。  両者ともいわゆる緯度経度格子と呼ばれる格子系で、緯度経度平面を水平な線と鉛直な線で分割して定義される格子系です。  T85は格子数(nx,ny) = (256,128)で、格子線は非等間隔です。  GSWP3は格子数(nx,ny) = (720,360)で、格子線は等間隔です。  メインプログラムは、実行ファイルに設定ファイルをコマンドライン引数として与えることで実行します。  作図プログラムはPythonで書かれています。同様に設定ファイルをコマンドライン引数として与えて実行します。  設定ファイルはカレントディレクトリからの相対パスまたは絶対パスで指定します。  以下で実行プログラムbin/std/regrid/main.exeに設定ファイルset/regrid/T85_to_GSWP3.confを与え、  T85からGSWP3への内挿テーブルの作成、及び格子データの変換を行います。  また変換前のデータ(T85の格子データ)と変換後のデータ(GSWP3の格子データ)の作図を行います。  Python環境が無い場合は作図はスキップしてください。
    設定ファイルの書式
     設定ファイルはテキストファイルです。  書式はnamelistやJSONファイルではなく、SPRING独自のものとなっています。  先ほど実行したT85からGSWP3への格子変換に用いる設定ファイルを例に、基本的な構造を見てみます。  簡単のため一部省略しています。 レポートファイル  最初にレポートファイルのパスを path_report: ''  という形で指定します。  レポートファイルに出力される情報は実行するプログラムによって異なりますが、主に出力データの基本的な情報などが書き出されます。 ブロック  続いて各種設定をブロックを用いて次のように記述します。 [] : : ... [end]  ブロックは[]で開始します。  ブロック名block_nameでこのブロックが何に関する設定をするものなのかを示し、その中で各種設定、例えば入出力データのパスや付属情報、オプションなどを記述します。  最後に[end]でブロックを閉じます。  ブロックは基本的に複数記述することになります。  レポートファイルのパスを除く全ての設定はブロックで記述されます。 キーと値  ブロック内でキーとそれに対応する値を記述することで各種設定を行います。  基本的にキーと値は一対一で対応していますが、一部例外もあります。  なお設定ファイルのサンプルではインデントを入れていますが、設定には影響しません。  先に述べたように、GSWP3は解像度0.5°、つまり格子数(nx,ny) = (720,360)の緯度経度格子系です。  領域は全球で、東端・西端はそれぞれ-180°・180°、南端・北端はそれぞれ-90°・90°です。  したがってGSWP3の格子系の情報は次のように記述されます。 nx: 720 ny: 360 west: -180 east: 180 south: -90 north: 90  キーと値が一対一で対応しない場合には、以下のようなものがあります。  (1) ファイルを指定するとき   本パッケージではレポートファイル以外のファイルの形式はプレーンバイナリに限定されています(Fortran式に言うと書式指定なし、直接探査)。   入力元または出力先としてファイルを指定するために必要な情報は、パスのほかにデータ型、レコード番号、エンディアンがあり、ファイルを指定する際にはこれらを同時に指定することになります。具体的には次のようになります。 f_lon_bound: 'dat/T85/T85_lon_bound.bin', dble, 1, little  左から順にパス、データ型、レコード番号、エンディアンを示します。dbleは倍精度浮動小数点数です。  パス以外の値は場合によっては省略することができます(詳細は後述)。  (2) ファイルの形状等を指定するとき  やや発展的な使い方になります。  ラスターデータの一部のみを読み込んで使いたいときや、検証データの整形に用いる格子番号データの形状を与えるときなどに用います。  詳細は各機能の設定ファイルの説明で行いますが、例えば以下のようにカンマで区切って複数の整数を指定します。 in_grid_sz: 720, 360 データ型  キーに対応する値には、以下の種類があります。 (1) integer (2) real (3) logical (4) character (5) path (6) file (1) integer  8バイト整数。 (2) real  8バイト浮動小数点数です。  整数で与えても問題ありません。  (例)  2.0  1  1.d-10  6371.e3 (3) logical  論理値。  .true.か.false.で与えます。 (4) character (文字列)  ファイルのデータ型やエンディアン、格子系の名前などを与えます。  基本的にシングルクォートやダブルクォートで囲む必要はありません(囲んでもよい)が、文字列がカンマを含む場合は囲む必要があります。  (例)  name: COCO 1deg  earth_shape: sphere (5) path (パス)  レポートファイル、ディレクトリ、ファイルのパスが該当します(詳細は後述)。  必ずシングルクォートかダブルクォートで囲まなければなりません。  (正しい例)   dir: "dat/T85"   dir: 'dat/T85'  (誤った例)   dir: dat/T85 (6) file (ファイル)  パスやデータ型等の複数の情報から成るデータの組です。  先に述べたように、本パッケージではレポートファイル以外のファイルの形式はプレーンバイナリに限定されており、この形式は付属情報を持たないため、パスに加えてデータ型、レコード番号、エンディアンを指定する必要があります。これらの値はカンマで区切って与えます。  次のように順に書いていくのが最も基本的な書き方になります。   : '<パス>', <データ型>, <レコード番号>, <エンディアン>  (例)   f_lon_bound: 'dat/T85/T85_lon_bound.bin', dble, 1, little  各変数のデータ型は以下のとおりです。
    変数 データ型
    パス path
    データ型 character
    レコード番号 integer
    エンディアン character
     パスはシングルクォートかダブルクォートで囲みます。  データ型として指定可能なのは以下の6つです。
    値 意味
    int1 1バイト整数
    int2 2バイト整数
    int4 4バイト整数
    int8 8バイト整数
    real 単精度浮動小数点数
    dble 倍精度浮動小数点数
     レコード番号は1以上の整数で与えます。  エンディアンはリトルエンディアン、ビッグエンディアンの2通りが指定可能で、それぞれlittle、bigとします。  これらの値は常に全て指定しなければならないわけではなく、各ファイルにはデフォルト値が与えられているため、それと同じ値を取る場合は省略できます。  例えばf_lon_boundのデフォルト値が   パス  : ''   データ型: dble (倍精度浮動小数点数)   レコード番号: 1   エンディアン: little (リトルエンディアン) で、入力ファイルもパス以外これと同じだった場合、次のように簡略化して記述することができます。   f_lon_bound: 'dat/T85/T85_lon_bound.bin'  パスとデータ型だけを指定したい場合は   f_lon_bound: 'dat/T85/T85_lon_bound.bin', dble とすることができます。  キーを使って指定することも可能です。  値をカンマで区切って並べたとき、左から1番目がパス、2番目がデータ型、3番目がレコード番号、4番目がエンディアンと解釈されますが、次のようにキーを用いることで順番を無視することができます。   f_lon_bound: 'dat/T85/T85_lon_bound.bin', endian=big  このときこのデータは、データ型はdble、レコード番号は1、エンディアンはbigとして読み込まれます。  各変数を指定するキーは以下のとおりです。
    変数 キー
    パス path
    データ型 dtype
    レコード番号 rec
    エンディアン endian
     なお、ファイルのデフォルト値は基本的に、パスが空文字列、レコード番号が1、エンディアンがlittleで、データ型は整数のデータならint4、浮動小数点数のデータならdbleとなっています。  具体的な値は各機能のページを参照してください。