地球上の大気・海洋・陸域システムの数値シミュレーションを行う

古気候研究とは

地球は46億年前に誕生したのが定説となっています。地球の誕生から現在に至るまでには、例えば白亜紀の恐竜の大量絶滅など環境の変動によって、その時代に地球に生息する生物や動物に大きな影響を与えてきました。近年でも地球温暖化が人間の影響によって引き起こされたと話題になっていますが、もちろん、人間によって大気に排出されたCO2産業革命後は産業革命以前と比べて急速に増加しており、人間によって地球温暖化が加速的に進行しているという説は有力です。しかし、地球の46億年という膨大な歴史を紐解くと地球の温度が低下した時期(氷期)と温度が氷期と比べ相対的に上昇した時期(間氷期)のサイクルが存在することが分かります。このサイクルはミランコビッチ・サイクルと呼ばれ地球が太陽の周りを公転する軌道の変動によって、地球の環境が変化していることを根拠としています。このように過去に地球環境がどのような理由(根拠)によってどのように変動(海水温が上昇した・下降したなど)したのかを解明するということは地球の未来を考察する上で重要となります。

古気候モデルは過去の気候変動をパソコン上で数値シミュレーションすることによって表現することができます。

古気候モデル(LOVECLIM)

 

LOVECLIMはベルギーで開発されているEMIC (Earth System Model of Intermdiate Complexity)です。EMICは古気候の研究によく使われ1万年以上の積分をパソコン上でフリーで行うことができます。

日本では気象庁の気象研究所で EMIC は開発・運用されていますが、ライセンスが必要となるため個人では手が出せません。

そこでフリーで提供されているLOVECLIMについてLinux環境でインストールし、主に海洋分野でよく使われる描写ソフトGrADSを用いて可視化する工程を説明していきたいと思います。

 

インストール&実験

  • 使用するファイルの準備

LOVECLIMの公式サイトからLOVECLIM1.3.tar.gz、NetCDF-4.1.3.tar、udunits-1.12.11.tar、HDFグループの公式サイトのSource-Gzipのリンクからhdf5-1.10.4.tar.gzをダウンロードします。

(LOVECLIMを解凍すると作成されるLoveclim_V1.3ディレクトリ内のREADMEには他にも必要なライブラリが記載されていますが、今回はこの3つのライブラリを例に取り上げます。)

NetCDFやudunits、hdf5はライブラリと呼ばれ、LOVECLIMを実行する際に必要となる関数などを集積したファイルです。

次にホームディレクトリなどにLOVECLIMの作業ディレクトリを作成し、そこにLOVECLIM1.3.tar.gzを解凍したLoveclim_V1.3をmvコマンドなどで移動させます。

 

  • ライブラリの整備

ダウンロードしたNetCDF-4.1.3.tar、udunits-1.12.11.tar、hdf5-1.10.4.tar.gzを解凍し、ホームディレクトリにlibディレクトリを作成し、netcdf-4.1.3、udunits-1.12.11、hdf5-1.10.4を移動させます。

(今回は私がスーパーユーザーになれない状況でインストールを行ったのでmacportsやhomebrewなどのパッケージ管理ソフトがインストールされている場合はそちらでもインストールできると思います。)

ではライブラリのインストールですが、udunits-1.12.11を例に取り上げて説明をしていきます。

libディレクトリに移動させたudunits-1.12.11の以下のsrcディレクトリ内で作業を進めていきます。

 まず最初の手順としてconfigureの編集を行います。インストールされているエディターソフト(viやemacs、geditなど)でconfigureを開き、prefixという文字列を検索します。

ac_default_prefix=/usr/local

 

上記の箇所がひっかかると思います。ここの=以下の/usr/localを先ほど作成した/home/lib/udunits-1.12.11へ編集します。ここを編集することで、インストールされるディレクトリの指定をすることができます。

 次にconfigureを保存して閉じ、実行をします。実行コマンドはLoveclim_V1.3内のREADMEに詳しく書かれていますが、udunits-1.12.11の場合は以下のコマンドです。

CC=icc CFLAGS='-Df2cFortran -fPIC' ./configure --prefix=/opt/udunits  

 

ここでのprefixも先ほどと同じように=/opt/localを=/home/lib/udunits-1.12.11に書き換えて実行をします。

 実行後、無事終了したことを確認したら、コマンドライン上でmake、make installと順に実行し、srcディレクトリと同じ階層に以下のディレクトリが作成されていればインストールは完了です。

udunits-1.12.11]$ ls

bin  etc  include  lib  man  src

 

netcdf-4.1.3、hdf5-1.10.4も同様にして実行すればインストールできると思います。

 

  • LOVECLIMの整備&実行

全てのライブラリのインストールが終了したら、次にLOVECLIMの整備を行っていきます。

 最初にホームディレクトリからLoveclim_V1.3内のrefディレクトリに移動します。

home/Loveclim_V1.3/RUN/V1.3/expdir/ref

 

ここでmake.macrosをエディターソフトで開き、編集をします。ここからの編集のイメージとしては先ほどインストールしたudunitsなどの場所を指定すると考えれば分かりやすいと思います。

編集する場所はmake.macrosを開くと下の方にある以下で示す2箇所です。

# NETCDFINCLUDE = -I/opt/netcdf/include                                           

# NETCDFLIB     = -L/opt/netcdf/lib -lnetcdf -lnetcdff 

 

#UDUNITSINCLUDE = -I/opt/udunits/include                                          

#UDUNITSLIB     = -L/opt/udunits/lib -ludunits 

 

この2箇所について上段はnetcdf-4.1.3のインストールで作成されたincludeディレクトリ、libディレクトリの場所を home/lib/netcdf-4.1.3/include、home/lib/netcdf-4.1.3/lib などとして指定をします。下段も同様にインストールしたudunitsのincludeディレクトリ、libディレクトリの場所を指定します。

 次にexpdirディレクトリに移動します。

home/Loveclim_V1.3/RUN/V1.3/expdir

 

ここでexp.peramをエディターソフトで開き、編集をします。このファイルはLOVECLIMを実行する際のパラメータの調整をすることができます。具体的には以下の3箇所を編集します。

 

 Experiment Name ということで実験名です。今回の実験の結果をアウトプットするディレクトリを指定します。何でもいいですが、私はnycというディレクトリにしました。

############### Experiment Name ################                                                      

texp=nyc                                                                                              

# texp=control                                                                                        

 

 

 次に以下に示すScratch directoryですが、後に必要となる実行ファイルのアウトプット先を指定します。

Scratchdir=/home/Loveclim_V1.3/RUN/V1.3/scratchとします。

 

 次にLocation for saving of outputs files, parameters and initial conditionsですが、結果のアウトプット先ディレクトリの指定なので、分かりやすいようにresultとして指定します。

SavingPath=/home/Loveclim_V1.3/result

 

 Location where eco binary can be foundとLocation where cdo binary can be foundは、インストールしたhdf5-1.10.4とudunits-1.12.11のライブラリの場所を指定します。

ncodir="/home/lib/hdf-5.10.4/lib"

cdodir="/home/lib/udunits-1.12.11/lib"

################# DIRECTORIES ##################                                                                                         

#Scratch directory                                            

 Scratchdir=/scratch/${USER}                                                                                                    

 

#Location for saving of outputs files, parameters and initial conditions"                             

 SavingPath=/storage/${USER}/STORAGE                                                                 

                                                                                                      

#Location where nco binary can be found                                                               

 ncodir="/opt/nco/bin"                                                                               

 

#Location where cdo binary can be found                                                               

 cdodir="/opt/cdo/bin"                                                                               

 

 

最後に各パラメータの設定です。今回の実験で変更したのは Number of years and daysです。

lengthInDays=36000としました。他にも多くのパラメータを調整することができます。例えばStarting year and dayを変更してあげれば実験を開始する年を設定することができます。

################ RUN PARAMETER #################                                                      

#Starting year and day                                                                                

 start_y=1950; start_d=1                                                                              

 initdate=0                                                                                           

#Number of years and days (1yr=360days 1500yr=540000days)                                             

 lengthInDays=36000                                                                                   

#Number of run                                                                                        

 NbRun=AUTO                                                                                           

#Multi simulations (Number of members)                                                                

 iens=0                                                                                               

## debug mode = 1 -> scratch stay in place after run                                                  

 debug_mode=1                                                                                         

 

 

ここまでの編集が終了したらexp.peramを保存して閉じ、./newexp exp.peram のコマンドで実行します。

ジョブが無事終了するとexp.peramと同じ階層に先ほど指定したnycディレクトリが作成されます。次にnycディレクトリに移動し、ディレクトリ内にあるlaunch_r1を ./launch_r1で実行します。

ジョブが無事に終了すると先ほど指定したscratchディレクトリに移動します。

home/Loveclim_V1.3/RUN/V1.3/scratch/LOVECLIM1.3/nyc/repo

 

このディレクトリにemic.xという実行ファイルが作成されていればLoveclimの整備は完了です。

 

 ここまでの作業でエラーが発生した場合は、おおかたパスの設定がうまくいっておらず、プログラムがライブラリなどをを見つけられていないことによるエラーだと思われます。もう一度編集箇所を確認してみてください。また、LD_LIBRARY_PATHがうまく指定されていない可能性もあります。

echo $LD_LIBRARY_PATHとコマンドを入力して確認をしてください。

LD_LIBRARY_PATHでのライブラリの指定に間違いがある場合は、ホームディレクトリから.bashrcをエディターで開き以下のように編集をしてください。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/local/bin/lib(例):$HOME/lib/netcdf-4.1.3/lib (こちらが重要)

 

  • 実験結果をGrADSで読むための設定

ここまでの整備でemic.xファイルが作成されていれば、./emic.x で実行をすることで結果がresultディレクトリに作成されますが、GrADSでは1年の日数の違いから結果のファイルを開くことができません。

そこで、LOVECLIMの設定を1箇所編集します。以下のLoveclim_V1.3内のsourcesディレクトリへ移動します。

/Loveclim_V1.3/LOVECLIM/V1.3/clio/sources                                             

このディレクトリにあるocean_outp.fというファイルをエディターソフトで開きます。編集箇所は以下の場所です。

c   time                                                                                          

 

  status=nf_def_var(ncid,'time',NF_DOUBLE,1,start,varid)

  status=nf_put_att_text(ncid,varid,'calendar',7,'360_day')                                 

 

status=nf_put_att_text(acid,varid,'calendar',7,'360_day')という書き込みの360_daysを365_daysに編集します。

status=nf_put_att_text(acid,varid,'calendar',7,'365_day')

 

編集後先ほど作成したscratchディレクトリにあるemic.xを ./emic.x で実行します。

問題がなければ指定したresultディレクトリに実験結果がアウトプットされるはずです。以下の2つの.ncファイルがアウトプットされた結果です。2つのファイルについてはCLI03a〜は1年毎の値という意味でのannualの略です。CLI03m〜は1ヶ月ごとの値という意味でmonthlyの略です。

/Loveclim_V1.3/result/LOVECLIM1.3/nyc/repo/output/ocean

$ ls

CLIO3a.001950_001.nc  CLIO3m.001950_001.nc

 

GrADSで結果を描写する手法

 

主に海洋物理学の分野で広く使われるGrADSですが、広く使われる一番の理由はGrADSは図の描写についてシンプルで比較的精度の高い図を簡単に作成できることです。GrADSのインストールに関してはここでは詳しくは書きませんが公式サイトから.gzファイルをダウンロードしてインストールを行ってください。

 

実験で作成した.ncファイルについてですが、そのままではGrADSで読むことができません。通常GrADS上でnetCDFファイルを読み込む場合はsdfopenコマンドを使用しますが以下のようにエラーが出ます。

ga-> sdfopen CLIO3a.001950_001.nc 

Scanning self-describing file:  CLIO3a.001950_001.nc

SDF Error: 365 day calendars are no longer supported by sdfopen.

  To open this file with GrADS, use a descriptor file with 

  a complete TDEF entry and OPTIONS 365_day_calendar. 

  Documentation is at http://iges.org/grads/gadoc/SDFdescriptorfile.html

 

エラー内容が書かれていますが、とにかくファイル形式が対応していないとのことです。そこでncdumpコマンドを使用してCLI03a.001950_001.ncファイルの中身を開いてみます。

$ ncdump CLIO3a.001950_001.nc |less

 

dimensions:

        ptlon = 120 ;

        pulon = 120 ;

        ptlat = 65 ;

        pulat = 65 ;

        tdepth = 20 ;

        wdepth = 21 ;

        wedges = 22 ;

        corners = 4 ;

        sflat = 57 ;

        sfdepth = 22 ;

        sfedges = 23 ;

        basidx = 4 ;

        ptlonp = 121 ;

        pulonp = 121 ;

        ptlatp = 66 ;

        pulatp = 66 ;

        time = UNLIMITED ; // (29 currently)

variables:

        double ptlon(ptlon) ;

                ptlon:units = "degrees_east" ;

                ptlon:long_name = "pseudo tracer grid longitude" ;

                ptlon:modulo = "m" ;

                ptlon:topology = "circular" ;

        double pulon(pulon) ;

                pulon:units = "degrees_east" ;

                pulon:long_name = "pseudo momentum grid longitude" ;

                pulon:modulo = "m" ;

                pulon:topology = "circular" ;

 

.ncファイルの中身を見ることができ、データの次元 (dimension) を知ることができました。

ファイルの構成を知ることができたので、GrADSのコントロールファイルを作成していきます。

  • .xctl (コントロールファイル) ファイルの作成

GrADSでnetCDFファイルを読み込む場合は前述した通り、sdfopenコマンドを使用します。sdfopenで開けるファイルの中身をエディターソフトで参照すると、ヘッダー部分(ファイルを開いた時の上部)に内包しているデータについての詳細 (例えばx方向の値や深さの値、時間の値など)が記入されています。GrADSはこのデータをもとにして図を描写しているのです。この情報が記入されているヘッダー部分は単独のファイルとしても存在することができます。このファイルを.ctl (コントロールファイル) と言います。この場合はGrADS上でopenコマンドを使用して.ctl ファイルを開きます。この時に .ctlファイルに指定されている .nc ファイルなどのnetCDFファイルをデータとして読み込むのです。.xctlファイルはGrADSがコントロールファイルを読む際に最低限の情報のみで動きますので、今回は .xctlファイルを作成します。

 

それでは図を描写するために .xctlファイルを作成していきます。

記入する項目としては、DSET(読み込むデータ)、TITLE(タイトル)、DTYPE(データの形式)、UNDEF(データの存在しない点)、XDEF(x軸の変数)、YDEF(y軸の変数)、ZDEF(z軸の変数)、TDEF(時間スケール)です。これらの情報を指定してあげればGrADSはデータを正しく読むことができます。さきほどのncdumpコマンドで開いたデータの中身からこれらの情報を拾います。

なお、 こちらに私が使用した .xctlファイルをアップロードしています。ファイル名はdclio-taxpypzp.xctlです。

 

dclio-taxpypzp.xctl

File Edit Options Buffers Tools Help                                                                     

DSET ^CLIO3a.%ch_001.nc                                                                                  

TITLE tracer-related quantities in the original coordinates of CLIO                                      

* Type 'xdfopen dclio-taxpypzp.xctl' from Grads prompt                                                   

* For details, try the following commands:                                                               

* q file                                                                                                 

* q dims                                                                                                 

* q ctlinfo                                                                                              

*                                                                                                        

DTYPE netcdf                                                                                             

*                                                                                                        

OPTIONS 365_day_calendar TEMPLATE                                                                        

CHSUB 1 100 001950                                                                                       

CHSUB 101 200 002050                                                                                     

CHSUB 201 300 002150                                                                                     

CHSUB 301 400 002250                                                                                     

CHSUB 401 500 002350                                                                                     

CHSUB 501 600 002450                                                                                     

CHSUB 601 700 002550                                                                                     

CHSUB 701 800 002650                                                                                     

CHSUB 801 900 002750                                                                                     

CHSUB 901 1000 002850                                                                                    

*                                                                                                        

UNDEF -1.0e+32 missing_value _FillValue                                                                  

XDEF ptlon                                                                                               

YDEF ptlat                                                                                               

ZDEF tdepth                                                                                              

TDEF time 99999 LINEAR 01JAN1950 1yr  

 

  • .xctlファイルによる図の描写

作成した.xctlファイルをGrADSで開いてみます。

GrADSを起動したら xdfopenコマンドで .xctlファイルを開きます。以下のようにset gxout shaded、d sst とコマンドを打ち込むと図を作成することができます。 SSTは海水の表面温度 (Sea Surface Temperature)の略で海洋学では基本的な物理量になります。

 

ga-> xdfopen ファイル名.xctl                           

Scanning Descriptor File:  ファイル名.xctl

SDF file CLIO3a.001950_001.nc is open as file 1

LON set to 0 360 

LAT set to -79.5 112.5 

LEV set to -5126.18 -5126.18 

Time values set: 1950:1:1:0 1950:1:1:0 

E set to 1 1 

ga-> set gxout shaded

ga-> d sst

Contouring: -0 to 30 interval 3 

ga-> 

 

作成した図が次の図になります。

図の作成は無事にすることができましたが、60°Nのあたりから違和感があります。

そこで、データに組み込まれている緯度と経度を重ねて描写してみます。コマンドはd tlon、d tlatです。

この図からモデルによる結果と描写しているグリッド間で相違があることがわかります。

では次の章でこの相違の修正を施していきます。

描写グリッドの修正

描写グリッドの修正についてですが、モデル結果のデータには上記の図で示すようにSSTの値と緯度・経度のデータは内包されているので、イメージとしてはデータに内包されている緯度経度を全球マップの正しい場所に配置してあげれば良いのです。

ではそのプログラムをfortranで行っていきます。作成したスクリプトはアップロードしますので、ポイントを説明していきます。

 

プログラム名はmkpdefとして、まず .ncファイルのtlon, tlat, angleを読み込みます。

 

program mkpdef

 

implicit none

include 'netcdf.inc'

 

! original model grid in the netcdf output of CLIO                                                 

real(8),dimension(1:120,1:65) :: ntlon, ntlat, nurot

! same as above except for attachment of cyclic buffers                                            

real(4),dimension(0:121,1:65) :: mtlon, mtlat, murot

! mapping information from original- and target-grid sets                                          

real(4),dimension(1:120,1:57) :: gi,gj,gd,gr

real(4) :: dist, mindist, lon, lat, a, b, clat, clon, crot

integer :: i,j, ii, jj, ci,cj

integer :: err, id_file, id_tlon, id_tlat, id_urot

 

err = nf_open('CLIO3a.001950_001.nc', NF_NOWRITE, id_file)

write(*,*) 'step 1', err, id_file

err = nf_inq_varid(id_file, 'tlon', id_tlon)

write(*,*) 'step 2', err, id_tlon

err = nf_inq_varid(id_file, 'tlat', id_tlat)

write(*,*) 'step 3', err, id_tlat

err = nf_inq_varid(id_file, 'angle', id_urot)

write(*,*) 'step 4', err, id_urot

err = nf_get_var_double(id_file, id_tlon, ntlon)

write(*,*) 'step 5', err,  ntlon(1,1), ntlon(120,1), ntlon(1,65), ntlon(120,65)

err = nf_get_var_double(id_file, id_tlat, ntlat)

write(*,*) 'step 6', err,  ntlat(1,1), ntlat(120,1), ntlat(1,65), ntlat(120,65)

err = nf_get_var_double(id_file, id_urot, nurot)

write(*,*) 'step 7', err,  nurot(1,1), nurot(120,1), nurot(1,65), nurot(120,65) 

 

 次に正しい位置への転換ですが、モデル結果の緯度、経度(探索点)と射影先グリッドの緯度、経度(目的点)との距離(dist)を計算することで行います。ここでのポイントですが、モデル結果のグリッドで探索点をはじき出す際に、10倍細かいグリッドを指定しています。これは単純に精度を上げるための処理です。

do jj = 1, 57   射影先の球グリッド(緯度

do ii = 1, 120  射影先の球グリッド(経度)

   lon = (ii-1)*3.0e0+1.5      射影先の球座標の細かさ (目的点)

   lat = (jj-1)*3.0e0-79.5e0   射影先の球座標の細かさ (目的点)

   mindist = 400.0d0

   do j = 1, 641  モデル結果のグリッド(緯度、探索点)

   do i = 1, 1200 モデル結果のグリッド (経度、探索点)

      ci = int(1 + (i-1)*0.1)  モデル結果のグリッドの整数化 (四方囲い原点)

      cj = int(1 + (j-1)*0.1)  モデル結果のグリッドの整数化 (四方囲い原点)

      a = (i-1)*0.1-int((i-1)*0.1)

      b = (j-1)*0.1-int((j-1)*0.1)

      clon = mtlon(ci,cj)*(1.0-a)*(1.0-b) + mtlon(ci+1,cj)*a*(1.0-b) + &  球座標での探索点

             mtlon(ci,cj+1)*(1.0-a)*b + mtlon(ci+1,cj+1)*a*b

      clat = mtlat(ci,cj)*(1.0-a)*(1.0-b) + mtlat(ci+1,cj)*a*(1.0-b) + &  球座標での探索点

             mtlat(ci,cj+1)*(1.0-a)*b + mtlat(ci+1,cj+1)*a*b

      crot = murot(ci,cj)*(1.0-a)*(1.0-b) + murot(ci+1,cj)*a*(1.0-b) + &

             murot(ci,cj+1)*(1.0-a)*b + murot(ci+1,cj+1)*a*b

      dist = min((clon-lon)**2+(clat-lat)**2, &

                 (clon-lon-360.0d0)**2+(clat-lat)**2)  目的点と探索点の距離 (近さ)

      if (dist < mindist) then

         mindist = dist

         gi(ii,jj) = 1 + (i-1)*0.1e0

         gj(ii,jj) = 1 + (j-1)*0.1e0

         gr(ii,jj) = crot

         gd(ii,jj) = mindist

      endif

      if(gi(ii,jj) == 120.0e0) then

         gi(ii,jj) = 119.9999e0

      endif

   enddo

   enddo

   write(*,*) ii,jj, gi(ii,jj), gj(ii,jj), gd(ii,jj), gr(ii,jj)

enddo

enddo

 

では、fortranプログラムの概要についてはこのあたりにして、実際に実行して修正していきます。

使用したfortranプログラムはこちら。実行コマンドはMakefileに記述されているので、モデル結果の .ncファイルと同じディレクトリに移動させたら、make execpで実行させてください。

その際の注意点としては、fortranはifortを使用していること(学生であればフリーでインストールできます)、netcdfの位置を編集することです。

Makefileをエディターソフトで開きます。以下の項目のMYINC、MYLIBをそれぞれ該当の箇所に編集します。

MYINC = /home/lib/netcdf-4.1.3/include

MYLIB = /home/lib/netcdf-4.1.3/lib

# change MYINC and MYLIB depending on your unix environment                     

MYINC = /opt/local/include

MYLIB = /opt/local/lib

 

 make execpを実行させ、execpという実行ファイルが作成されたら、 ./execp で実行します。すると、新しいファイルdclio-xpyp.pdef が作成されます。このファイルがモデル結果から緯度、経度を正しい配置に置き換えたデータファイルとなります。

修正したデータの描写

それでは、作成した .pdef ファイルをGrADSで描写していきます。

使用するコントロールファイルは先ほど作成した .xctl ではなく、z方向の変数を圧力(p)に置き換え、.pdefファイルに対応させたものを使用します。使用した .ctlファイルはこちら

 

dclio-taxpypzp.ctl

 

DSET ^CLIO3a.%ch_001.nc

*                                                                                                                                                                

TITLE tracer-related quantities mapped onto standard lat-lon coordinates

* Type 'open dclio-taxpypzp.ctl' from Grads prompt

* For details, try the following commands:

* q file

* q dims

* q ctlinfo

*

DTYPE netcdf

PDEF 120 65 bilin stream binary-big ^dclio-xpyp.pdef

*

OPTIONS TEMPLATE

CHSUB 1 100 001950

CHSUB 101 200 002050

CHSUB 201 300 002150

CHSUB 301 400 002250                                                                          

CHSUB 401 500 002350                                                                                                                                                                            

CHSUB 501 600 002450                                                                                                                                                                            

CHSUB 601 700 002550                                                                                                                                                                            

CHSUB 701 800 002650                                                                                                                                                                            

CHSUB 801 900 002750                                                                                                                                                                            

CHSUB 901 1000 002850                                                                                                                                                                           

*                                                                                                                                                                                               

UNDEF -1.0e+32 missing_value _FillValue                                                                                                                                                         

XDEF    120  LINEAR      1.5000     3                                                                                                                                                           

YDEF    57  LINEAR      -79.5000      3                                                                                                                                                         

ZDEF 20 LEVELS -5126.18 -4385.22 -3661.11 -2963.25 -2307.36 -1717.9 -1225.11 -850.19 -588.88 -415.07 -299.29 -219.86 -163.28 -121.52 -89.75 -64.96 -45.2 -29.17 -15.98 -5                       

TDEF 99999 LINEAR 01JAN1950 1yr                                                                                                                                                                 

vars 26                                                                                                                                                                                         

tlon=>tlon  0  y,x  longitude                                                                                                                                                                   

tlat=>tlat  0  y,x  latitude                                                                                                                                                                    

dxs1=>dxs1  0  y,x  zonal length of grid box sides                                                                                                                                              

dxs2=>dxs2  0  y,x  meridional length of grid box sides                                                                                                                                         

dxc1=>dxc1  0  y,x  zonal width at grid box centres                                                                                                                                             

dxc2=>dxc2  0  y,x  meridional width at grid box centres                                                                                                                                        

area=>area  0  y,x  surface area of tracer grid box                                                                                                                                             

tmask=>tmask  0  y,x  horizontal tracer grid mask                                                                                                                                               

h=>h  0  y,x  bathymetry on tracer gridpoints                                                                                                                                                   

temp=>temp  20  t,z,y,x  averaged potential temperature                                                                                                                                         

salt=>salt  20  t,z,y,x  averaged salinity                                                                                                                                                      

ssh=>ssh  0  t,y,x  averaged sea surface height                                                                                                                                                 

sst=>sst  0  t,y,x  averaged SST                                                                                                                                                                

sss=>sss  0  t,y,x  averaged sea surface salinity                                                                                                                                               

shflx=>shflx  0  t,y,x  averaged surface heat flux                                                                                                                                              

sfflx=>sfflx  0  t,y,x  averaged surface freshwater flux                                                                                                                                        

zmix=>zmix  0  t,y,x  averaged depth of ocean surface mixed layer                                                                                                                               

zcnv=>zcnv  0  t,y,x  averaged depth of convection                                                                                                                                              

msl=>msl  0  t,y,x  averaged G-M slope                                                                                                                                                          

hice=>hice  0  t,y,x  averaged ice thickness                                                                                                                                                    

hicp=>hicp  0  t,y,x  averaged ice production                                                                                                                                                   

albq=>albq  0  t,y,x  averaged lead fraction                                                                                                                                                    

hsn=>hsn  0  t,y,x  averaged snow thickness                                                                                                                                                     

snow=>snow  0  t,y,x  averaged snow precipitation                                                                                                                                               

tice=>tice  0  t,y,x  averaged ice temperature                                                                                                                                                  

fb=>fb  0  t,y,x  averaged heat flux at ice base                                                                                                                                                

endvars                                                                                                                                                                                         

 

.ctlファイルを準備できたら、GrADS上でopenコマンドで開きます。その後コマンドをset gxout shaded、d sst と続けて行くと以下の図が作成されます。

説明の最初に示した図の作成ができました。

確認として、緯度と経度をd tlon d tlat のコマンドで重ねて表現してみましょう。

60°N以北についても正しく配置されています。

これでLOVECLIMを使用したGrADSでのSSTの表現方法についての紹介は終わりとなります。

 

今後もこのように海洋学に関係して興味を持った事柄を紹介していきたいと思います。