    ! aercntnm_mt_ckd_3.0.tar.gz

    ! (http://www.rtweb.aer.com/)


* step 0

  * <TOPDIR> = trial-2017-07-26

  * MTCKD のソースコード, aercntnm_mt_ckd_3.0.tar.gz を
    http://www.rtweb.aer.com/ からダウンロード.
  * 準備

      $ cd <TOPDIR>
      $ tar xvf aercntnm_mt_ckd_3.0.tar.gz

    cntnm ディレクトリができた

  * テスト実行

      $ cd cntnm/build
      $ make -f make_cntnm linuxGNUdbl

    ../cntnm_v3.0_linux_gnu_dbl ができた

      $ cd ..
      $ ./cntnm_v3.0_linux_gnu_dbl

      This version is limited to 5000 values

      *** F      USE phys_constsor this program, vmr_h2o is taken with respect to the total column ***

      read: pressure (mb)  if negative use default values
      -1
       Pressure (mb), Temperature (K), Path Length (cm),    VMR H2O
          1013.000000         296.0000            1.0000  0.01000000


* step 0-2

      $ cd <TOPDIR>
      $ cp cntnm/src/cntnm_progr.f90 cntnm/src/contnm.f90 cntnm/src/lblparams.f90 cntnm/src/phys_consts.f90 cntnm/src/planet_earth.f90 src

  * Makefile を編集
    * MTCKD_SRC に下のファイルを指定
      * contnm.f90 lblparams.f90 phys_consts.f90
    * TEST00_LM に下のファイルを指定
      * cntnm_progr.f90 planet_earth.f90

  * 実行

      $ ./test00.LM

         This version is limited to 5000 values

        *** F      USE phys_constsor this program, vmr_h2o is taken with respect to the total column ***

        read: pressure (mb)  if negative use default values
        -1
         Pressure (mb), Temperature (K), Path Length (cm),    VMR H2O
            1013.000000         296.0000            1.0000  0.01000000

      $ diff cntnm/CNTNM.OPTDPT CNTNM.OPTDPT
      $ diff cntnm/WATER.COEF WATER.COEF

    WATER.COEF は下一桁が異なることもあるらしい.
    gfortran で -fdefault-integer-8 -fdefault-real-8 -frecord-marker=4 を
    指定すると差がない.

  * 結果を保存

      $ mv CNTNM.OPTDPT WATER.COEF ../result00


* step 1

  * MTCKD コードの変更
    * split and modify resultant codes
    * make a test programs

        $ bash convert_mtckd.sh

#      * program for no N2, O2 continuum, nor Rayleigh scattering
      * make test program ver. 1
      * make test program ver. 2

  * 結果として得られるコード: 
    * cntnm_progr_procedures.f90
      * MTCKD の Block data といくつかの subroutine
      * このファイルは main program やラッパー module から include
        されるべきもの
    * contnm_mod.f90
      * contnm.f90 の修正版
    * 以下のテストプログラム
      * cntnm_progr.f90
#      * cntnm_progr_no_n2_o2_rf.f90
      * test01_main.f90
      * test02_cntnm_progr_core.f90


* step 2

  テストプログラムをコンパイル

  $ make

  テストプログラム:
  * ver. 0
    * 出力
      * CNTNM.OPTDPT
      * WATER.COEF
    * cntnm_progr.f90
      * MTCKD 同梱 Fortran90 プログラムそのもの

#  * ver. 0 modified
#    * 出力
#    * cntnm_progr_no_n2_o2_rf.f90
#      * スクリプトによって生成; program
#      * このファイルは中身の演算としては, N2, O2 の連続吸収とレイリー散乱
#        を含まないことを除けば, cntnm_progr.f90 と同じ.

  * ver. 1
    * 出力
      * CNTNM.OPTDPT: ver. 0 と同じ
      * WATER.COEF  : ver. 0 と同じ
    * test01_main.f90
      * スクリプトによって生成; program
      * このファイルは, 下の点を除いて cntnm_progr.f90 と同じ.
        * cntnm_progr.f90 の末尾にある block data と procedures を削除
        * それらは, cntnm_progr_procedures.f90 を include

  * ver. 2
    * 出力
      * CNTNM.OPTDPT: ver. 0 と同じ
      * WATER.COEF  : ver. 0 と同じ
    * test02_cntnm_progr_core.f90
      * スクリプトによって生成; 文 (not program nor subroutines, functions)
        * PROGRAM 文はコメントアウトされている
      * このファイルは, test02_mtckd_wrapper.f90 から include されている
    * test02_mtckd_wrapper.f90
      * 自作; module
      * このファイルは以下のファイルを include
        * test02_cntnm_progr_core.f90
        * cntnm_progr_procedures.f90
    * test02_main.f90
      * 自作; program
      * このファイルは以下のファイル内の module を use
        * test02_mtckd_wrapper.f90

  * ver. 3
    * 出力
      * CNTNM.OPTDPT: ver. 0 とほぼ同じ
        * 若干の違いは単精度・倍精度の差?
      * WATER.COEF  : ver. 0 と同じ
    * test03_mtckd_wrapper.f90
      * 自作; module
        * 中身は test02_cntnm_progr_core.f90 のようなもの
	* フラグ等の導入
      * このファイルは以下のファイルを include
        * cntnm_progr_procedures.f90
    * test03_main.f90
      * 自作; program
      * このファイルは以下のファイル内の module を use
        * test03_mtckd_wrapper.f90

  * ver. 4
    * 出力
      * CNTNM.OPTDPT: ver. 3 と同じ
      * WATER.COEF  : ver. 3 と同じ
    * test04_mtckd_wrapper.f90
      * 自作; module
        * test03_mtckd_wrapper.f90 の変数名等を少し変更
      * このファイルは以下のファイルを include
        * cntnm_progr_procedures.f90
    * test04_main.f90
      * 自作; program
        * test03_main.f90 を test04_mtckd_wrapper.f90 に合わせて変更
      * このファイルは以下のファイル内の module を use
        * test04_mtckd_wrapper.f90

  * test05:
    * 出力
      * CNTNM.OPTDPT    : ver. 3 と同じ
      * CNTNM.OPTDPT-mod: 説明文がないことを除くと CNTNM.OPTDP と同じ
      * WATER.COEF      : ver. 3 と同じ
    * test05_mtckd_wrapper.f90
      * 自作; module
        * test04_mtckd_wrapper.f90 を少し変更
	  * Flag_Output, Arg_jrad の設定を test05_main.f90 から test05_mtckd_wrapper.f90 に移動
	  * 出力を test05_main.f90 から test05_mtckd_wrapper.f90 に移動
      * このファイルは以下のファイルを include
        * cntnm_progr_procedures.f90
    * test05_main.f90
      * 自作; program
        * test04_main.f90 を test05_mtckd_wrapper.f90 に合わせて変更
      * このファイルは以下のファイル内の module を use
        * test05_mtckd_wrapper.f90

  * test06:
    * 出力
      * CNTNM.OPTDPT-mod: ver. 5 と同じ
    * test06_mtckd_wrapper.f90
      * 自作; module
        * test05_mtckd_wrapper.f90 を変更
	  * 組成ごとの連続吸収の吸収係数の和の計算を test05_main.f90 に移動
	  * 出力しないように変更
      * このファイルは以下のファイルを include
        * cntnm_progr_procedures.f90
    * test06_main.f90
      * 自作; program
	  * 組成ごとの連続吸収の吸収係数の和の計算を test05_mtckd_wrapper.f90
	    から移動
	  * 出力しないように変更
      * このファイルは以下のファイル内の module を use
        * test06_mtckd_wrapper.f90

  * test07:
    * 出力
      * CNTNM.OPTDPT-mod: ver. 5 と同じ
    * test07_mtckd_wrapper.f90
      * 自作; module
        * test06_mtckd_wrapper.f90 を変更
	  * 任意の配列サイズに対応
          * 不要な演算をコメントアウト
      * このファイルは以下のファイルを include
        * cntnm_progr_procedures.f90
    * test07_main.f90
      * 自作; program
        * test06_main.f90 を test07_mtckd_wrapper.f90 に合わせて変更
      * このファイルは以下のファイル内の module を use
        * test07_mtckd_wrapper.f90

  * test08:
    * 出力
      * CNTNM.OPTDPT-mod: ver. 5 とほぼ同じ
        * contnm_mod.f90 を使ったことにより, WTOT の計算方法が変わったため
	* しかし, 4 桁目の数字が 1, 2 だけ変わる程度 (< 0.1%)
    * test08_mtckd_wrapper.f90
      * 自作; module
        * test07_mtckd_wrapper.f90 を変更
	  * cntnm_progr_procedures.f90 の代わりに
	    cntnm_progr_procedures_mod.f90 を include
      * このファイルは以下のファイルを include
        * cntnm_progr_procedures_mod.f90
    * test08_main.f90
      * 自作; program
        * test07_main.f90 をコピー
      * このファイルは以下のファイル内の module を use
        * test08_mtckd_wrapper.f90
    * WARNING:
      * このプログラムは, H2O, CO2, O3, O2, N2 の連続吸収, および
        レイリー散乱の光学的厚さを別々に計算することを意図した.
      * test08_main.f90 内の MolNum を指定することにより, 各組成の
        光学的厚さを個別に計算する.
      * ただし, どの組成の光学的厚さを計算する場合でも,
	H2O の体積混合比は設定しなければいけない.
	なぜならば, CO2, O3, O2, N2, および大気全体の分子数の計算は,
	乾燥大気の分子数に混合比をかけることで計算されるためである.
	* 常にすべての組成の混合比を設定しておけばよい.
        * 計算したい組成の混合比のみ設定しても良い.
	  例えば, CO2 の光学的厚さを計算したいとき, CO2 の混合比と
	  H2O の混合比の値のみを設定し, その他の混合比をゼロとしても,
	  CO2 の光学的厚さが計算される. 
	  ただし, N2 については, これでは上手く計算できないため, 注意すること. 
      * このプログラムは, ファイル番号 7, 66 で出力してしまう

  * test09:
    * 出力
      * CNTNM.OPTDPT-mod: ver. 8 と同じ
    * mtckd_wrapper.f90
      * 自作; module
        * test08_mtckd_wrapper.f90 を変更
          * call_mtckd_wrapper の引数の単位を MKS に変更
	  * 引数から波数の上端を削除
	  * cntnm_progr_procedures.f90 の代わりに
	    cntnm_progr_procedures_mod.f90 を include
      * このファイルは以下のファイルを include
        * cntnm_progr_procedures_mod.f90
    * test09_main.f90
      * 自作; program
        * test08_main.f90 を基に変更
          * call_mtckd_wrapper の引数の単位を MKS に変更
	  * call_mtckd_wrapper の引数から波数の上端を削除
      * このファイルは以下のファイル内の module を use
        * mtckd_wrapper.f90
    * WARNING:
      * ver. 8 の内容そのまま

  * test10:
    * 出力
      * CNTNM.OPTDPT-mod: ver. 8 とほぼ同じ
        * 波数のループを module mtckd_wrapper2 内に置き, 波数をその中で
	  計算することにしたことが ver. 8 との差の原因と考えられる
	* しかし, 4 桁目の数字が 1 だけ変わる程度 (< 0.1%)
    * mtckd_wrapper2.f90
      * 自作; module
        * mtckd_wrapper.f90 を変更
          * 波数のループを module mtckd_wrapper2 内に置いた
      * このファイルは以下のファイルを include
        * cntnm_progr_procedures_mod.f90
    * test10_main.f90
      * 自作; program
        * test09_main.f90 をコピーして作成 (変更なし)
          * mtckd_wrapper2 module を use するように変更
      * このファイルは以下のファイル内の module を use
        * mtckd_wrapper2.f90

  * test11:
    * 出力
      * CNTNM.OPTDPT-mod: ver. 10 と同じ
    * mtckd_wrapper3.f90
      * 自作; module
        * mtckd_wrapper2.f90 を変更
          * O3 の 40800 cm-1 における吸収係数がおかしい (おそらく 2 倍に
	    なっている) のを無理やり回避
      * このファイルは以下のファイルを include
        * cntnm_progr_procedures_mod.f90
    * test11_main.f90
      * 自作; program
        * test10_main.f90 をコピーして作成
          * mtckd_wrapper3 module を use するように変更
      * このファイルは以下のファイル内の module を use
        * mtckd_wrapper3.f90
