    ! aercntnm_mt_ckd_2.5.2.tar.gz

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

* step 0

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

* step 1

  * MTCKD コードの変更
    * Fortran77 から Fortan90 に変更
    * split and modify resultant codes
    * make a test programs
      * program for no N2, O2 continuum, nor Rayleigh scattering
      * test program ver. 1
      * test program ver. 2

  $ bash convert_mtckd.sh

  * 結果として得られるコード: 
    * cntnm_progr_procedures.f90
      * MTCKD の Block data といくつかの subroutine
      * このファイルは main program やラッパー module から include
        されるべきもの
    * contnm.f90
      * MTCKD のいくつかの subroutine
      * このファイルは, cntnm_progr_procedures.f90 の末尾において 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
      * スクリプトによって生成; program
      * このファイルは中身の演算としては cntnm_progr.f と同じ.
        * cntnm_progr.f は, MTCKD に元々含まれていたテストプログラム.

  * 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_main.f90 内の変数が倍精度だからだろう
	  * MTCKD では単精度 (たぶん)
    * 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 とほぼ同じ
        * 若干の違いは test03_mtckd_main.f90 内の変数が倍精度だからだろう
	  * MTCKD では単精度 (たぶん)
    * 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_main.f90 内の変数が倍精度だからだろう
	  * MTCKD では単精度 (たぶん)
    * 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. 6 と同じ
    * 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. 6 とほぼ同じ
        * contnm_mod.f90 を使ったことにより, WTOT の計算方法が変わったため
	* しかし, 4 桁目の数字が 1 だけ変わる程度 (< 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
