ここではプログラムとポテンシャルの入手、プログラムのコンパイル、および環境のセットアップの方法を簡潔に記述します。
STATEはまだ一般公開されていません。CMDワークショップに参加あるいは開発者に直接連絡を取って最新版(>=5.6.6)のソースコードと擬ポテンシャルを入手して下さい。
計算を始めるためにPCクラスター(smithあるいはsb100)にログインします(クラスターシステムの使用方法を参照)。
プログラムのコンパイルのために以下のモジュールを読み込みます。
module load intel/2020.2.254 module load intelmpi/2020.2.254
module load intel/2021.2.0 module load intelmpi/2021.2.0ログインする度にモジュールをロードするのは面倒ですので、~/.bashrc等に上記のコマンドを追加し、以下を実行します。
$ source ~/.bashrc
このチュートリアルではソースコード、擬ポテンシャル、データはそれぞれ以下のディレクトリに置くものとします。
${HOME}/STATE/src ${HOME}/STATE/gncpp ${HOME}/STATE/outs
ここで${HOME}はホームディレクトリ(ログインした最初のディレクトリ)を意味します。 ホームディレクトリでSTATEのディレクトリを作成し、ディレクトリを移動します。
$ mkdir STATE $ cd STATE
ここで``$``はコマンドプロンプトを示します。 次に擬ポテンシャル用のディレクトリを用意します。 ここでは講師(筆者)のものを利用します。以下のコマンドを実行します。
$ ln -s ~ikutaro/STATE/gncpp
次にソース用ディレクトリを作成し、そこに移動します。
$ mkdir src $ cd src
以下では5.6.9 (state-5.6.9.tgz)を使用するものとします。
先ず講師(筆者)のディレクトリにあるソースコードをソースディレクトリ (STATE/src)にコピーします。
$ cp ~ikutaro/STATE/src/state-5.6.9.tgz .
次にソースコードをtarコマンドを使って解凍します。
$ tar zxf state-5.6.9.tgz
これによりstate-5.6.9/というディレクトリが得られます。
以下を実行しディレクトリを移動
$ cd state-5.6.9/src
そしてMakefileの準備を行います。具体的には../arch/ディレクトリにある適当なmake.arch.*ファイルをコピーするかシンボリックリンクを作ります。ここではシンボリックリンクを作ることにします。 smithの場合
$ ln -s ../arch/make.arch.intel_smith make.arch
sb100の場合
$ ln -s ../arch/make.arch.intel_sb100 make.arch
となるでしょう。make.archを必要に応じて編集した後にmakeを実行しコンパイルを実行します。
$ make
これによりsrc/ディレクトリにSTATEコマンドが生成されます。
さらにユーティリティコマンドをコンパイルするためにutil/ディレクトリに移動します。
$ cd ../util "make.inc"を環境に応じて編集しmakeを実行します。 $ make
コンパイルされたプログラムはutil/binにインストール(シンボリックリンク)されます。
解析の際のコマンド入力を簡単にするためにコマンドサーチパスを追加するのが良いでしょう。ここではホームディレクトリにある.bashrcに以下を追加します。
export PATH=${PATH}:${HOME}/STATE/src/state-5.6.9/util/bin
現在のXCrySDenのパスが正しくないので以下のaliasも.bashrcに追加しましょう。
alias xcrysden='/usr/local/xcrysden-1.5.53/xcrysden'
変更を反映させるために以下を実行します。
$ source ~/.bashrc
(一度ログアウトし再ログインしても環境変数の変化を反映させることは可能です)
STATEディレクトリ(~/STATE)で以下を実行します。
$ git clone https://github.com/ikuhamada/state-examples.git examples
ただしsb100ではこのコマンドがうまく実行できません。 以下の手順でexamplesのダウンロードを行って下さい。
$ cd /homesb/[username]/STATEここで[username]は自分のユーザー名を指します。
$ git clone https://github.com/ikuhamada/state-examples.git examples