zeo++とは
http://www.maciejharanczyk.info/Zeopp/examples.html
こちらのサイトにあります。主にゼオライトなどの多孔質物質の
- 穴のサイズ(入り口付近と真中付近)
- とあるサイズの球(プルーブ)が到達可能な表面積
- 空隙率
などをモンテカルロシミュレーションを用いて計算してくれます。
インストール方法
MacとLinuxであれば素直にイントールでき、windowsであればcygwinで構築するのがいいみたいです。
今回はMacでのみインストールを検証しています。
まずはこちらのサイトにアクセスします。
- まず最初にメアドを登録する。The registration form is available here. となっているhereの部分をクリックすると下のフォームが出るので、記入するとメールが届きそちらにpasswordなどが書いてます。
- download hereと書いてある部分をクリックするとidとパスワードを聞かれるのでメールに書いてあるものを記入します。
- インストール手段に従ってインストールします。大まなか流れとしては解凍したあとにvoroというフォルダに移動してmakeコマンドでmakeします。(zeo++はvoroに依存している)。その後にもとのディレクトリでzeo++自体をmakeします。長い辛抱のあと、
./network
が使えるようになります。
使い方
zeo++のディレクトリ下でコマンドを実行します。pathを通せるのかもしれませんが、ハマったのでpathは通しませんでした。
対応inputファイル
- CSSR
- CUC
- V1
- CIF
- ARC
用語説明
- probe 到達可能な表面積を計算するのに使う。探査機という日本語訳のとおり、どの程度のサイズの球体が到達可能かという文脈で使われる。
- channel ゼオライトなどの分子間の空いた空間のこと。ここを吸着物質が通ることから運河という意味をあてたのかも?
- void なにもない空間
穴の大きさを知りたい
-ha
オプションはhigh accuracyという意味で、このオプションを付けると時間はかかりますが正確な値を出してくれます。
-res
オプションをつけると穴のサイズを出してくれます。
./network -ha -res output_file.res input_structure.cssr
出力ファイル
EDI.res 4.89082 3.03868 4.81969
値のそれぞれの意味は 下の図のDi Df Difを意味します。
到達可能な表面積を知りたい
-sa
オプションをつけると穴のサイズを出してくれます。プルーブのサイズとチャンネルのサイズは一致させるとよいと公式サイトには書いてました。サンプル数はモンテカルロシミュレーションのサンプル数です。
構文
./network -sa chan_radius probe_radius num_samples outputfile.sa input_structure.cssr
例
./network -ha -sa 1.2 1.2 2000 EDI.cssr
出力ファイル
@ EDI.sa Unitcell_volume: 307.484 Density: 1.62239
ASA_A^2: 60.7713 ASA_m^2/cm^3: 1976.4 ASA_m^2/g: 1218.21
NASA_A^2: 0 NASA_m^2/cm^3: 0 NASA_m^2/g: 0
asaが到達可能表面積
nasaが到達不可能表面積
を表す。
シェルスクリプトを用いて自動化
あまりシェルスクリプトを書いたことがないので稚拙なものですがこんな感じになりました。
#/bin/bash
CIF_DIR="ここにcifが入ったディレクトリを指定"
# ディレクトリのファイル数
count=`ls -U1 $CIF_DIR | wc -l`
# forで回すよう
i=0
for cif in $CIF_DIR/*; do
i=$((++i))
# 標準出力は捨て、errorはerror.logに追記 (tail -f error.logなどで確認)
# 穴のサイズ計算
./network -res "$HOME/cosmos/`basename $cif .cif`.res" $cif 1>> /dev/null 2>> "$HOME/cosmos/error.log"
# 表面積計算
./network -sa 1.5 1.5 2000 "$HOME/cosmos/`basename $cif .cif`.sa" $cif 1>> /dev/null 2>>"$HOME/cosmos/error.log"
# 進捗を%表示
printf "%5s%%\r" $((i*100/count))
done
python(cython) wrapperもあるみたい
ソースを除くとcython wrapperもあります。そちらのconfigファイルをいじってvoroのディレクトリを調整したのちsetup.pyを実行すれば使える様になるみたいですが、検証はしてません。