この記事ではPymatgenの Elementモジュールの利用方法 について簡単に紹介します。
Compositionクラスでは、組成の文字列から様々な情報を取り出せます。記事の後半では、Compositionクラスを応用した簡単な秤量計算機のプログラムを紹介します。
※この記事はPymatgenの使用法・実例をまとめた Pymatgenの使い方 の一部です。
Compositionクラスの呼び出し
import pymatgen as mg
と入力
comp = mg.Composition("BaTiO3")
と入力して、 comp
という変数に Composition
オブジェクトを割り当てる。
これで呼び出しは完了です。この comp
に対して操作することで、この例でいうBaTiO3の各種情報を取り出せます。
Compositionクラスの属性
試しにBaTiO3の分子量を取得してみましょう。
print(comp.weight)
分子量 が取得できました。
その他取得できる情報の一例を下に示します。
Baは重いので、BaTiO3のうち58.8%の重量を占めているようですね。
このように、 プログラム上便利な情報を取ってくれる のが Composition
クラスです。
他の属性や関数などは 公式document を参考にしてください。
秤量計算機を作ってみよう
実用的な秤量計算機 を、Compositionクラスを用いて作ってみます。
完成コード
先に 完成コード を示します。.pyファイルや、jupyter notebook上のセルに入力して実行すると動きます。
from pymatgen.core import Composition
from time import sleep
#化合物の組成式を入力
comp_name = input("Target compound name:\n")
gram = input("Target compound weight(g)\n")
comp = Composition(comp_name)
#化合物の物質量(mol)を出力
print("Weight of {} per mol:\n{:.3f}\n".format(comp_name,comp.weight))
comp_mol = float(gram)/comp.weight
print("mol of compound:{:.5f}".format(comp_mol))
mat_list = []
mol_list = []
#nが入力されるまで原料化合物の入力
while input("Calculate other compound? (y/n):") == "y":
#化合物の組成式を入力
mat_list.append(input("compound name:"))
mol_list.append(input("composition ratio:"))
#入力された化合物の必要量を表示
print("\n=============================================\n")
for i in range(len(mat_list)):
print("{}:\n{:.4}g\n".format(mat_list[i],Composition(mat_list[i]).weight*float(mol_list[i])*comp_mol))
sleep(60)
以下解説です。
組成の入力
まず組成を 文字列 として入力し、それを Composition
オブジェクトに変えます。
comp_name = input("Target compound name:\n")
gram = input("Target compound weight(g)\n")
comp = Composition(comp_name)
この時に、 最終的に作りたい化合物の必要重量 を入れておきましょう。例えばBaTiO3を1.5 g作りたい場合は、それぞれの入力で「BaTiO3」「1.5」と入力します。
目的化合物のモルを算出
次に、入力した情報から、 目的の物質の量は何モルか を算出します。例えばBaTiO3が1.5gがあった時、その物質量(モル)は1.5/233.19(分子量) となりますね。それをプログラムに書き下しただけです。
comp_mol = float(gram)/comp.weight
print("mol of compound:{:.5f}".format(comp_mol))
合成に必要な物質のリストを作成
ここで2つのリストを用意します。一つ目は 原材料の名前を格納 する mat_list
、二つ目は そのモル比を格納 する mol_list
です。
H2Oの場合、簡単に以下のような合成式を考えます。
H2 + 1/2O2 –> H2O
目的物を1とした時、H2は1、O2は0.5になりますね。この1,0.5を mol_list
に格納し、計算に使います。
mat_list = []
mol_list = []
#nが入力されるまで原料化合物の入力
while input("Calculate other compound? (y/n):") == "y":
#化合物の組成式を入力
mat_list.append(input("compound name:"))
mol_list.append(input("composition ratio:"))
while文にして、目的物に対する各成分のモル比を入力 してあげます。H2Oの場合は「H2, 1, O2, 0.5」のようにします。
各原料の必要重量を算出
#入力された化合物の必要量を表示
print("\n=============================================\n")
for i in range(len(mat_list)):
print("{}:\n{:.4}g\n".format(mat_list[i],Composition(mat_list[i]).weight*float(mol_list[i])*comp_mol))
ここでは各原料をfor文で回し、各成分の必要量を算出しています。
各成分の必要なmol数は、モル比×目的物のmol数 で表されますね。
例えばH2Oが1.8g (0.1mol)作りたい場合に必要なO2は、0.5×0.1 = 0.05molになります。
その計算が float(mol_list[i])*comp_mol
です。
原料のモル質量( Composition.weight
)にこのmol数を掛ければ必要な重量 が出てきます。
それを計算する式が以下です。
Composition(mat_list[i]).weight*float(mol_list[i])*comp_mol)
以上がCompositionクラスを使った秤量計算機の一例でした。
このように単純な機能でありながら、 人間では時間のかかることを短い時間で行う ことができます。
他のpymatgeの使い方
その他のPymatgenの使用法については Pymatgenの使い方 をご覧ください。
この記事ではPymatgenのElementモジュールの利用方法について簡単に紹介します。
Compositionクラスでは、組成の文字列から様々な情報を取り出せます。記事の後半では、Compositionクラスを応用した簡単な秤量計算機のプログラムを紹介します。
※この記事はPymatgenの使用法・実例をまとめたPymatgenの使い方の一部です。
目次
Compositionクラスの呼び出し
import pymatgen as mg
と入力comp = mg.Composition("BaTiO3")
と入力して、comp
という変数にComposition
オブジェクトを割り当てる。これで呼び出しは完了です。この
comp
に対して操作することで、この例でいうBaTiO3の各種情報を取り出せます。Compositionクラスの属性
試しにBaTiO3の分子量を取得してみましょう。
print(comp.weight)
分子量が取得できました。
その他取得できる情報の一例を下に示します。
comp.total_electrons
:全電子数comp.fractional_composition
:全体が1になるような組成comp.get_atomic_fraction(el)
:el
のモル分率el
にはElementオブジェクト
を入れます。これはmg.Element("name")
で生成できます。例えばBaのモル分率を知りたい場合は以下のようにしましょう。comp.get_wt_fraction(el)
:el
の重量分率Baは重いので、BaTiO3のうち58.8%の重量を占めているようですね。
このように、プログラム上便利な情報を取ってくれるのが
Composition
クラスです。他の属性や関数などは公式documentを参考にしてください。
秤量計算機を作ってみよう
実用的な秤量計算機を、Compositionクラスを用いて作ってみます。
完成コード
先に完成コードを示します。.pyファイルや、jupyter notebook上のセルに入力して実行すると動きます。
以下解説です。
組成の入力
まず組成を文字列として入力し、それを
Composition
オブジェクトに変えます。この時に、最終的に作りたい化合物の必要重量を入れておきましょう。例えばBaTiO3を1.5 g作りたい場合は、それぞれの入力で「BaTiO3」「1.5」と入力します。
目的化合物のモルを算出
次に、入力した情報から、目的の物質の量は何モルかを算出します。例えばBaTiO3が1.5gがあった時、その物質量(モル)は1.5/233.19(分子量) となりますね。それをプログラムに書き下しただけです。
合成に必要な物質のリストを作成
ここで2つのリストを用意します。一つ目は原材料の名前を格納する
mat_list
、二つ目はそのモル比を格納するmol_list
です。H2Oの場合、簡単に以下のような合成式を考えます。
H2 + 1/2O2 –> H2O
目的物を1とした時、H2は1、O2は0.5になりますね。この1,0.5を
mol_list
に格納し、計算に使います。while文にして、目的物に対する各成分のモル比を入力してあげます。H2Oの場合は「H2, 1, O2, 0.5」のようにします。
各原料の必要重量を算出
ここでは各原料をfor文で回し、各成分の必要量を算出しています。
各成分の必要なmol数は、モル比×目的物のmol数で表されますね。
例えばH2Oが1.8g (0.1mol)作りたい場合に必要なO2は、0.5×0.1 = 0.05molになります。
その計算が
float(mol_list[i])*comp_mol
です。原料のモル質量(
Composition.weight
)にこのmol数を掛ければ必要な重量が出てきます。それを計算する式が以下です。
Composition(mat_list[i]).weight*float(mol_list[i])*comp_mol)
以上がCompositionクラスを使った秤量計算機の一例でした。
このように単純な機能でありながら、人間では時間のかかることを短い時間で行うことができます。
他のpymatgeの使い方
その他のPymatgenの使用法についてはPymatgenの使い方をご覧ください。