計算モジュール(CASTEP,Dmol3など)をコマンドラインから実行する方法

通常は、Materials Studio にて分子のモデリングや計算の設定を行い、ネットワークを介してジョブを計算サーバへ投入します。 しかし、入出力ファイルのサイズが大きくCommunication Error が発生する、もしくは計算リソースが大量に必要な場合等には、 入力ファイルをユーザ自身で計算サーバへ転送し、直接コマンドラインからジョブを実行する方法(スタンドアローンモード)もあります。
ここでは、このスタンドアローンモードの実行方法について、説明します。

実行手順


Step 1
最初に、Materials Studio上で分子を構築し、計算に必要な各種パラメータの設定等を行います。 ここまでは通常のジョブ実行と同じです。そして、最後に、"CASTEP Calculation"ダイアログにて 「Run」ボタンを押す代わりに「Files...」ボタンを押します。



Step 2
" CASTEP Job Files"ダイアログにて、「Save Files」をクリックします。
その結果、Project ウィンドウに新規フォルダが作成され、 そのフォルダ内に入力ファイルが作成されます。 左図では3つのファイルが表示されていますが、実際にはこれら以外にも複数のファイルが生成されています。



Step 3
フォルダ名が l_alanine CASTEP GeomOpt のままではUNIXでは扱いづらいため、 空白を含まないフォルダ名に変えておいてください。ここでは、l_alanine というフォルダ名に変更します。 そして、ファイル転送ソフトなどを使って、フォルダごと計算サーバへ転送します。
もし、l_alanine というフォルダがどこにあるかわからない場合には、そのフォルダ上でマウス右ボタンでクリックして、Properties を選択します。
「場所:」の行でフォルダの保存場所を確認してください。



Step 4
転送されたディレクトリに移動し、バッチファイルを作成します。
以下にバッチファイルの例を示します。

#!/bin/csh
#PBS -q JP10
#PBS -N castep_job
#PBS -l select=1:ncpus=10

source /etc/profile.d/modules.csh
module load ms/2016

cd $PBS_O_WORKDIR
RunCASTEP.sh -np 10 l_alanine

module load コマンドでは、利用するMaterials Studioのバージョンを指定します。今回は、バージョン2016で 計算したいため、ms/2016 としています。

RunCASTEP.sh の引数は、転送したディレクトリ内のファイルの拡張子をはずした名前としてください。
今回のケースでは、l_alanine.param や l_alanine.xsd というファイル名なので、その拡張子を外した 共通名称である l_alanine という名称から、l_alanine となっています。
また、ncpus で指定する CPU数と RunCASTEP.sh の -np オプションで指定する CPU数は必ず同じにしてください。


Step 5
最後に、作成したバッチスクリプトをバッチ投入コマンド qsub で実行させます。 以下では、上記のバッチスクリプト名を castep.qsub としています。また、qstat -a でジョブの状況も確認できます。詳しくは、PBSジョブ投入システムをご参照下さい。

% qsub castep.qsub
1385327.fe3

% qstat -a

fe3:
                                                            Req'd  Req'd   Elap
Job ID          Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
1385327.fe3     fukumoto JP10     castep     164234   1  10  256gb 8760: R 00:12


Step 6
バッチジョブが終了後、計算結果ファイルを端末PCに転送し、Materials Studio にて結果を表示させることができます。


FAQ
【状況】

/var/spool/PBS_MOM/mom_priv/jobs/10383.fe3.SC: Command not found.
といったエラーメッセージが出力され、ジョブが実行できない。

【対処】
Windowsで利用される改行コードが正しく処理されないためです。その場合、 UNIXの改行コードへ変換してください。
計算サーバにて、ディレクトリ内で以下のコマンドを実行してください。
% perl -i -pe 's/\r//' *