構造解析ことはじめ/03 プログラムのインストール
 #floatcontents
 * CHARMMのインストール -- &color(red){Vine 4.2}; [#vc4a77d5]
 分子動力学シミュレーション(MD)で使用されるCHARMMをインストールします。~
 AMBERと同じく手元にあるのがc32b2と古いバージョンですが、Intel Compiler 11.0でコンパイルおよび動作確認しました。AMBER8に比べてインストールは簡単です。なお、最適化オプションが古いのでIntel Compiler 11用のパッチ(&ref(charmm-c32b2-ic11.patch);)を作ってみました。パッチによる修正点は以下の通りです。
 - install.com
 -- 最適化オプションの変更(-tpp7 -> -xsse2 -axsse4.2 -no-prec-div -ip)~
 Intel Compiler 10の場合やSSE4.2に対応していないプロセッサの場合は[[Intel Compiler/コンパイルオプション]]を参照して適宜変更して下さい。
 -- LAM-MPIリンクオプションに-lpthreadを追加
 - build/UNX/Makefile_gnu
 -- 静的リンクをIntel Compilerのもののみに変更(-static -> -static-intel)
 -- -Vaxlibオプションを追加(効果はよくわかりませんが)
 
 ** インストール手順 [#lb8af3ab]
 ビルドしたディレクトリが実行ファイルの出力先になるのでrootで実行します。ここでは/usr/local/c32b2をビルドディレクトリにしてますが、必要に応じて変更して下さい。なお、一般ユーザーのホームディレクトリ以下で構築して/usr/localにコピーしても動くと思います。
 
 *** シングル版のビルド [#ke59d3fd]
 MPI対応ではないスタンドアロン版をビルドします。
  # cd /usr/local
  # tar zxvf c32b2.tar.gz
  # cd /usr/local/c32b2
  # patch -p1 < charmm-c32b2-ic11.patch   <-- パッチを当てる
  # source /opt/intel/Compiler/11.0/074/bin/iccvars.sh ia32
  # source /opt/intel/Compiler/11.0/074/bin/ifortvars.sh ia32
  # ./install.com gnu medium IFORT        <-- medium版の場合(必要に応じて変更します)
  Tue Feb 17 13:58:25 JST 2009
   install.com> Directory /usr/local/c32b2/build/gnu does not exist.
                Creating /usr/local/c32b2/build/gnu ...
   install.com> Phase 1 completed.
   install.com> Phase 2 completed.
   install.com> Processing CHARMM source on gnu...
 
 しばらくすると''c32b2/exec/gnu/charmm''が作成されます。このファイルにパスを通せば使用可能です。~
 なお、環境変数MAKE_COMMANDで''make -j4''などの並列コンパイルオプションを追加できますが、私の環境では並列コンパイルは失敗しました。
 
 *** LAM-MPI版のビルド [#t9aada64]
 MPI対応版をビルドします。~
 install.comの実行時オプションにMPIオプションが追加されます。
  # ./install.com gnu medium IFORT M LAMMPI
 なお、ここで使うLAM-MPIはIntel Compilerでビルドしたものである必要があります。インストール方法は[[AMBER/インストール]]を参照して下さい。install.comにパッチを当てない状態だと''-lpthread''が不足しているのでリンクエラーになりますので注意して下さい。
  undefined reference to `pthread_condattr_setpshared'
  undefined reference to `pthread_mutexattr_destroy'
  undefined reference to `pthread_mutexattr_init'
  undefined reference to `pthread_mutex_trylock' 
 こんなエラーが発生します。
 
 ** テスト [#fbcf2696]
 実行テストを行います。ただ、結果の見方がよくわかりません&huh;
  # cd /usr/local/c32b2/test
  # ./test.com gnu
 これでテストスクリプトが流れるようです。
 
 ** 注意点 [#te3547db]
 *** プログラムを実行しようとするとSegmentation fault(コアダンプ)する [#n0acb76b]
 ** トラブル [#te3547db]
 *** Segmentation fault(コアダンプ)する [#n0acb76b]
 プログラムを実行しようとするとSegmentation faultでコアダンプしました。
  % charmm
  Segmentation fault
 このプログラムは実行時にホスト名を確認するため名前解決ができない環境ではSegmentation faultするようです。DNSによる名前引きが可能なら問題ありませんが、プライベートネットワークなどで名前引きができない環境の場合は''/etc/hosts''にホスト名を追加しておきます。~
 例えばdobuo.biokids.orgというホスト名なら、
 :/etc/hosts|
  # Do not remove the following line, or various programs
  # that require network functionality will fail.
  127.0.0.1               dobuo.biokids.org dobuo localhost.localdomain localhost
 
 というようにホスト名を追加しておきます。