組成制限
最終更新日:2026年10月16日
バージョン1.5.0から,EA-vcにおいて,探索する組成範囲を制限できるようになった.
cryspy.inの[structure]セクションでmin_compとmax_compを指定する.
ランダム構造生成にも進化的操作による構造生成にも適用される.
2元系・3元系に加え,4元系以上でも組成制限を利用できる.
ただし,組成の許容範囲や探索結果の図の出力は2元系・3元系に対応している.
設定方法
各原子種の組成は,その原子種の原子数をセル内の総原子数で割った値であり,0から1の範囲をとる. 例えば,原子数が(Cu, Au) = (2, 6)の場合,組成は(Cu, Au) = (0.25, 0.75)となる.
min_compは組成の下限,max_compは上限を表す.
どちらもatypeと同じ順序・要素数で指定し,境界の値も許容範囲に含まれる.
min_compのみを指定した場合,max_compは全原子種について1.0に補完される.max_compのみを指定した場合,min_compは全原子種について0.0に補完される.- 両方を省略した場合,組成制限は課されない.
ll_natとul_natは各原子種の原子数を制限するのに対し,min_compとmax_compは各原子種の原子数の割合を制限する.
これらを併用した場合,すべての条件を満たす原子数の組合せが探索対象となる.
入力変数の一覧は入力ファイル > [structure]セクションを参照.
2元系の例
cryspy.inの[structure]セクションの例:
この場合,Cuの組成は0.6以下,Auの組成は0.5以下に制限される. 2元系ではCuとAuの組成の和が1になるため,Auの上限0.5からCuの下限は0.5,Cuの上限0.6からAuの下限は0.4となる. したがって,Cuの組成が0.5以上0.6以下,Auの組成が0.4以上0.5以下となる構造のみ生成される. 例えば,原子数が(Cu, Au) = (4, 4),(3, 2),(6, 4)の構造は条件を満たすが,(2, 6),(6, 2)やCuのみ,Auのみからなる構造は条件を満たさない.
上記のmin_compとmax_compを次のように変更しても,同じ組成範囲になる.
CrySPYを初めて実行すると,組成の許容範囲が自動的にプロットされ,./data/convex_hull/composition_window_1.svgに保存される.
ファイル名の1は,この組成制限を適用する世代番号を表す.
拡張子は[visual]セクションのfig_formatに従い,デフォルトはsvgである.
最初の入力例に対応する図を以下に示す.
2元系の組成範囲の図の横軸は,convex hullの図と対応するように,[visual]セクションのaxis_orderに従って原子種を配置している.
この図の横軸はAuの組成を表す.
下側の青色の帯はCuの組成制限,上側の橙色の帯はAuの組成制限に対応し,両方を満たす範囲が濃い色と破線で示される.
この例では,Auの組成が0.4以上0.5以下の範囲が許容される.
この組成制限を用いた,第3世代までの探索結果の例を以下に示す.
この図の横軸はAuの組成を表し,青色の領域が組成の許容範囲(0.4以上0.5以下)に対応する.
3元系の例
cryspy.inの[structure]セクションの例:
上記ではinput 1が有効になっている.
input 2やinput 3を使用する場合は,input 1のmin_compとmax_compをコメントアウトし,使用する組の2行の先頭にある#を外す.
各原子種の組成の和は常に1である.
そのため,3元系の許容領域は,三角形の組成図の中で,各原子種の下限・上限をすべて満たす領域となる.
2元系と同様に,初回実行時には./data/convex_hull/composition_window_1.<fig_format>に図が自動的に保存される.
以下の3枚は,各入力についてcryspy-Eplot -cで描画した例である.
各図では上の頂点がCu,左下の頂点がAg,右下の頂点がAuに対応し,破線は指定した組成の下限・上限を表す.
左からinput 1,input 2,input 3の順に示す.
input 1
Cuの組成を0.0以上0.6以下,Agを0.2以上0.5以下,Auを0.2以上0.7以下に制限する. 青色の領域が,これらの条件をすべて満たす組成の許容範囲を表す. 例えば,原子数が(Cu, Ag, Au) = (3, 2, 5)の場合,組成は(0.3, 0.2, 0.5)となり,条件を満たす.
input 2
Cuの組成を0.4以上0.6以下,AgとAuをそれぞれ0.2以上0.4以下に制限する. この場合,許容領域は,組成(Cu, Ag, Au) = (0.6, 0.2, 0.2),(0.4, 0.4, 0.2),(0.4, 0.2, 0.4)を頂点とする三角形になる. 例えば,原子数が(Cu, Ag, Au) = (4, 3, 3)の場合,組成は(0.4, 0.3, 0.3)となり,条件を満たす.
input 3
Cuの組成の下限・上限をともに0.6とし,Agを0.2以上0.5以下,Auを0.2以上0.7以下に制限する.
Cuの組成が0.6に固定されるため,AgとAuの組成の和は0.4になる.
AgとAuの下限はそれぞれ0.2なので,許容される組成は(Cu, Ag, Au) = (0.6, 0.2, 0.2)の1点のみとなり,図では青色の点で示される.
この場合も,原子数は固定されない.
例えば,原子数が(Cu, Ag, Au) = (3, 1, 1)と(6, 2, 2)の構造は,同じ組成を持ち,ll_natとul_natの条件も満たす.
探索結果の例
input 1の組成制限を用いた,第3世代までの探索結果の例を以下に示す. 青色の領域が組成の許容範囲に対応する.
電荷中性条件との併用
chargeと組成制限を併用することもできる.
この場合,原子数制限,組成制限,電荷中性条件をすべて満たす構造が生成される.
電荷中性条件の例と同様に,Cu,Ag,Auにそれぞれ仮想的に+1,+2,-1の電荷を割り当てている. 組成はCuを0.0以上0.3以下,Agを0.1以上0.4以下,Auを0.4以上0.7以下に制限する. 例えば,原子数が(Cu, Ag, Au) = (1, 2, 5)の場合,組成は(0.125, 0.25, 0.625)となり,組成制限を満たす. 電荷の合計も1 × (+1) + 2 × (+2) + 5 × (-1) = 0となるため,電荷中性条件も満たす.
左は組成の許容範囲,右は組成制限と電荷中性条件を併用した第3世代までの探索結果の例である.
青色の領域は組成制限による許容範囲を表し,電荷中性条件は反映されない. 実際に生成される構造は,この領域内でさらに電荷中性条件を満たす組成に限られる.
許容される組成範囲の確認
2元系・3元系では,組成制限を指定してCrySPYを初めて実行すると,許容領域の図が./data/convex_hull/composition_window_1.<fig_format>に自動的に保存される.
ファイル名の番号は,組成制限を適用する世代番号を表す.
探索の途中でmin_compやmax_compを変更した場合,変更後の制約は,次の世代交代における親候補の絞り込みと構造生成から適用される.
画像は世代交代を待たず,入力変更後にCrySPYを再実行した時点で,現在の世代番号に1を加えた名前で保存される.
例えば,第3世代の計算途中で変更して再実行すると,./data/convex_hull/composition_window_4.<fig_format>が出力され,変更後の制約は第4世代を作る際に適用される.
axis_orderやfig_formatを変更した場合も,次世代の番号を用いて画像が保存される.
これらの設定に変更がなければ,毎世代画像が出力されるわけではない.
探索を開始せずに入力した組成制限による許容領域を確認するには,cryspy.inがあるディレクトリで次のコマンドを実行する.
図は./data/convex_hull/composition_window_input.<fig_format>に保存される.
fig_formatやaxis_orderは[visual]セクションで指定できる.
詳細はcryspy-Eplotおよび入力ファイル > [visual]セクションを参照.
この図はmin_compとmax_compから求めた連続的な組成領域を表す.
ll_nat・ul_natによる整数の原子数の制約や,chargeによる電荷中性条件は反映されないため,実際に生成可能な組成は図の領域の一部となる場合がある.
注意点
各原子種についてmin_compはmax_comp以下である必要がある.
また,各原子種の組成の和が1になる組合せが存在する必要があるため,min_compの合計は1以下,max_compの合計は1以上でなければならない.
連続的な組成領域が存在しても,ll_nat・ul_natの範囲内で条件を満たす整数の原子数の組合せが存在しない場合は,構造を生成できない.
chargeを併用する場合は,電荷中性条件を満たす組合せも存在するように設定すること.
探索の途中で組成制限を変更した場合,次世代の親候補およびエリート候補は,変更後の原子数制限・組成制限で絞り込まれる. 条件を厳しくしすぎて候補がすべて除外されると,探索を継続できなくなるので注意すること.