* CNS 1.1インストールメモ -- &color(red){Vine 4};/&color(blue){Vine 3};[#yf647aa4]
Intel Compilerを使ってCNSをコンパイル、インストールしました((参考文献:平田kunyo博士のCNSインストールメモ))。ついでにパッチを作りました。~
** インストール方法 [#qc1d601d]
ここではインストール先は/usr/local/cns_solve_1.1にしました。
*** aptで追加インストール [#ib5143ea]
- flex
*** ファイルの展開 [#j111d6e3]
/usr/local以下に以下のファイルを展開
- cns_solve_1.1_basic_inputs.tar.gz
- cns_solve_1.1_data.tar.gz
- cns_solve_1.1_test.tar.gz (これは好みで)
- &ref(cns_solve_1.1_Vine-3.2_Intel-9.0.patch); インストール用パッチ
-- instlib/machine/supported/linux/Makefile.headerをIntel Compiler用に書き換え
-- cns_solve_envのsedオプションを修正
-- source/xpeakpik.fの不具合を修正
/usr/localでパッチを当てます。
# cd /usr/local
# patch -p0 < cns_solve_1.1_Vine-3.2_intel-9.0.patch
# cd /usr/local/cns_solve_1.1
以降の作業は/usr/local/cns_solve_1.1で行いました。
*** cns_solve_envの編集 [#m1f1cf1e]
cns_solve_envを編集。通常は、
18 setenv CNS_SOLVE '_CNSsolve_location_'
の'''_CNSsolve_location_'''を環境に合わせて修正します。
18 setenv CNS_SOLVE '/usr/local/cns_solve_1.1'
*** インストール [#z5a8690f]
# tcsh (tcshで作業)
# source /opt/intel/cc/9.0/bin/iccvars.csh (C++環境設定)
# source /opt/intel/fc/9.0/bin/ifortvars.csh (Fortran環境設定)
# source cns_solve_env
# make install
で終わりです。Intel Compilerでコンパイルされます。
linking: cns_solve
created executable file cns_solve-0606121008.exe
と出力されれば実行ファイルはできているはずです。
*** 備考 [#q5c2aaf9]
インストール出力の最後の方に
compiling: machine_c.c
machine_c.c(100): warning #880: omission of explicit type is nonstandard ("int" assumed)
outbuf_()
^
という警告が最後に出ますが、どうやらインストールはできているような気がします・・・
** CNSでの既知の不具合 [#dba91445]
以下の不具合をパッチで修正してあります。
*** cns_solve_envでsedが通らない [#t9dd3724]
構造生物グループMLより:
インストール自体は問題なく行ったのに、環境変数ファイルcns_solve_env
にsourceを貼ると
sed: -e expression #1, char 11: Invalid range end
と表示されました。cnsbbによると、FedoraやRedhatEnterprise2から
現れた問題のようで、SEDのオプション仕様が変更されたことが原因の
ようです。そこで、インストール前にcns_solve_envファイルとgetarch
ファイルの以下の部分を次のように変更します。
sed 's/[A-z] => sed 's/[A-Z,a-z]
cns_solve_envには2箇所、getarchには1箇所の変更箇所があります。
そうすると問題なしです。
Vineでは特に影響を受けませんでしたが、ついでだったのでパッチに取り込みました。
*** CNSにおいてwater_pickができない [#ec2177af]
構造生物グループMLより:
私的にはもう一つ気になっている問題がありました。自分の使用している
FC3のDual Xeon PCでは、cnsのwater_pickで水が拾えない(no water residue
となる)ことがしばしばあって困っていました。仕方ないので、もう一台の
Athlon64 PCの方で拾わせていました。これもどうやら最近出てきた問題の
ようで、メモリを3GB以上積むと発現することがあるとcnsbbに出てました。
対応策は以下の通りだそうです。
$ vi $cns_solve_1.1/source/xpeakpik.f
145行目:IF (MPACK.GT.0) THEN => IF (MPACK.NE.0) THEN
と変更してからmake g77installすれば良いようです。
私の環境ではメモリ2GBで再現したのでGCCのバージョンにも依存するのかも知れません。以上のように修正してmakeしたら問題は解決できました⌣