分子構造構築システム、方法、プログラム、及び、記憶媒体
【課題】 本発明の課題は、原子間結合次数を自動設定可能な分子構造構築システム及び方法を提供することを目的とする。
【解決手段】 上記課題は、分子の原子配置に基づいて配置された原子毎に電子数及び軌道数と結合後の末端状態を示す結合フラグとを対応させた原子データ構造と、原子間を結合する結合軸毎に結合次数を対応させた結合軸データ構造とを有するデータ構造と、前記原子間を結合可能な距離閾値に従ってσ結合を行い、前記結合次数を1加算し、該σ結合された原子の電子数及び軌道数を1ずつ減算することによって末端原子になると前記結合フラグを更新するσ結合手段と、前記結合フラグを参照して、第一原子に前記σ結合される第二原子のうち、一の第二原子を残して他第二原子が末端である場合、該第一原子と該一の第二原子とにπ結合を行うπ結合手段とを有する分子構造構築システムにより達成される。
【解決手段】 上記課題は、分子の原子配置に基づいて配置された原子毎に電子数及び軌道数と結合後の末端状態を示す結合フラグとを対応させた原子データ構造と、原子間を結合する結合軸毎に結合次数を対応させた結合軸データ構造とを有するデータ構造と、前記原子間を結合可能な距離閾値に従ってσ結合を行い、前記結合次数を1加算し、該σ結合された原子の電子数及び軌道数を1ずつ減算することによって末端原子になると前記結合フラグを更新するσ結合手段と、前記結合フラグを参照して、第一原子に前記σ結合される第二原子のうち、一の第二原子を残して他第二原子が末端である場合、該第一原子と該一の第二原子とにπ結合を行うπ結合手段とを有する分子構造構築システムにより達成される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、原子間の結合次数を自動設定可能な分子構造構築システム、方法、プログラム、及び、記憶媒体に関する。
【背景技術】
【0002】
コンピュータの高性能化に伴い、ドラッグデザインなどの先端研究における分子軌道計算、分子動力学計算など理論化学計算のニーズが高まっている。これらの理論化学計算を実行するには、計算手法のみならず計算対象となる分子の構造を入力データに用いる必要がある。ドラッグデザインなどの先端研究では、分子動力学的手法を用いて物性を算出する状況が多々生じることから、適切な初期分子構造を構築する必要性が増している。このようなニーズから、分子構造構築の作業効率を向上させることを目的として、グラフィック表示機能を利用した分子設計システムが実用化されている。
【0003】
分子動力学計算では原子間に働く力場ポテンシャルを設定するために、適切な結合次数の情報を必要とする。従来より、ユーザがGUI上で結合軸を選択し、各結合軸について適切な結合次数を一つ一つ設定することが行われているが、原子数が多く構造が複雑な場合にはユーザへの負担が大きい。
【0004】
また単なる負担だけでは済まない問題として、低分子の場合には目視による結合軸の判別と修正が可能であっても、高分子では目視での判定が非常に困難な場合が生じる場面もある。このような問題に対して、結合次数の自動判定法として、任意に選択した2個の原子対の結合の強さを示す結合次数を計算し、その結果を用いて原子間の結合の有無を判定することが提案されている(例えば、特許文献1を参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平7−282096号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した従来の手法では、事前に分子軌道計算を実行する必要が生じ、構造を表示するためだけに多大な計算が必要になってしまう。また結合次数の判定基準として特許文献1の段落0018に示されている数1は、実際には2つの原子軌道に関する電子密度を表現しており、全ての原子軌道の考慮が必要な結合次数の判定に用いることは適切でない。
【0007】
従って、各原子に設定されている原子軌道数と電子数を考慮した手法ではないため、各原子間結合に対して結合次数を適切に判定することができない、また、高分子であってもユーザに負担をかけることなく分子を設計することができない等の問題があった。
【課題を解決するための手段】
【0008】
開示の分子構造構築システムは、分子の原子配置に基づいて、配置された原子毎に電子数及び軌道数と結合後の末端状態を示す結合フラグとを対応させた原子データ構造と、原子間を結合する結合軸毎に結合次数を対応させた結合軸データ構造とを少なくとも有するデータ構造を記憶した記憶領域と、前記原子間を結合可能な距離閾値に従ってσ結合を行い、前記結合次数を1加算し、該σ結合された原子の電子数及び軌道数を1ずつ減算し、該減算によって末端原子になると前記結合フラグを更新するσ結合手段と、前記結合フラグを参照して、第一原子に前記σ結合される第二原子のうち、一の第二原子を残して他第二原子が末端である場合、該第一原子と該一の第二原子とにπ結合を行い、該電子数及び軌道数を1ずつ減算し、前記結合次数を1加算するπ結合手段と、を有するように構成される。
【0009】
上記手段を機能としてコンピュータが処理する方法、上記手段を機能としてコンピュータに実行させるためのプログラム、及び、そのプログラムを記憶したコンピュータ読み取り可能な記憶媒体とすることもできる。
【発明の効果】
【0010】
開示の分子構造構築システムによって、分子の3次元構造構築に際し、構造に応じて原子間の結合次数を自動的に判断できるため、分子設計を容易に行うことができる。
【図面の簡単な説明】
【0011】
【図1】分子構造構築システムのハードウェア構成を示す図である。
【図2】分子の3次元構造構築を説明するための図である。
【図3】分子の3次元構造構築処理の全体フローを示す図である。
【図4】データ構造を示す図である。
【図5】データ構造の初期化処理を説明するためのフローチャート図である。
【図6】分子の3次元構造構築処理の詳細フローを示す図である。
【図7】分子の3次元構造構築処理の詳細フローを示す図(続き)である。
【図8】分子の3次元構造構築処理の詳細フローを示す図(続き)である。
【図9】電子配置と結合結果の例を示す図である。
【図10】C2H4(エチレン)の場合の状態遷移例を示す図である。
【図11】C6H5CHO(ベンズアルデヒド)の場合の状態遷移例を示す図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態を図面に基づいて説明する。原子間結合に対して結合次数の自動判定を可能とする本実施例に係る分子の3次元構造構築処理を実行する分子構造構築システムは、図1に示されるようなハードウェア構成を成す。図1は、分子構造構築システムのハードウェア構成を示す図である。図1において、分子構造構築システム100は、コンピュータによって制御される端末であって、CPU(Central Processing Unit)11と、メモリユニット12と、表示ユニット13と、出力ユニット14と、入力ユニット15と、通信ユニット16と、記憶装置17と、ドライバ18とを有し、システムバスBに接続される。
【0013】
CPU11は、メモリユニット12に格納されたプログラムに従って分子構造構築システム100を制御する。メモリユニット12には、RAM(Random Access Memory)及びROM(Read-Only Memory)等が用いられ、CPU11にて実行されるプログラム、CPU11での処理に必要なデータ、CPU11での処理にて得られたデータ等を格納する。また、メモリユニット12の一部の領域が、CPU11での処理に利用されるワークエリアとして割り付けられている。
【0014】
表示ユニット13は、CPU11の制御のもとに必要な各種情報を表示する。出力ユニット14は、プリンタ等を有し、利用者からの指示に応じて各種情報を出力するために用いられる。入力ユニット15は、マウス、キーボード等を有し、ユーザが分子構造構築システム100が処理を行なうための必要な各種情報を入力するために用いられる。通信ユニット16は、例えばインターネット、LAN(Local Area Network)等に接続し、外部装置との間の通信制御をするための装置である。記憶装置17には、例えば、ハードディスクユニットが用いられ、各種処理を実行するプログラム等のデータを格納する。
【0015】
分子構造構築システム100によって行われる処理を実現するプログラムは、例えば、CD−ROM(Compact Disc Read-Only Memory)等の記憶媒体19によって分子構造構築システム100に提供される。即ち、プログラムが保存された記憶媒体19がドライバ18にセットされると、ドライバ18が記憶媒体19からプログラムを読み出し、その読み出されたプログラムがシステムバスBを介して記憶装置17にインストールされる。そして、プログラムが起動されると、記憶装置17にインストールされたプログラムに従ってCPU11がその処理を開始する。尚、プログラムを格納する媒体としてCD−ROMに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。本実施例に係る処理を実現するプログラムは、通信ユニット16によってネットワークを介してダウンロードし、記憶装置17にインストールするようにしても良い。また、USB対応の分子構造構築システム100であれば、USB接続可能な外部記憶装置からインストールするようにしても良い。更に、SDカード等のフラッシュメモリ対応の分子構造構築システム100であれば、そのようなメモリカードからインストールするようにしても良い。
【0016】
先ず、3次元分子構造構築について概要を図2で説明する。図2は、分子の3次元構造構築を説明するための図である。分子構造構築システム100において、最初に、表示ユニット13に表示されたGUI上に、ユーザによって原子配置が行われる(ステップSI)。
【0017】
表示ユニット13のスクリーン上に作業用のメインウィンドウを持ち、メインウィンドウに表示される3次元分子構造の原子アイテムを、マウスなどのポインティングデバイスのクリックやドラッグアンドドロップかキーボード操作によって選択し、さらにメインウィンドウ上の3次元分子構造に対するマウスなどのポインティングデバイスのドラッグアンドドロップ、またはメインウィンドウのコマンドメニューに対するポインティングデバイスやキーボードでの選択、メインウィンドウ上のコマンドエリアに対するポインティングデバイスのドラッグアンドドロップ、もしくはキーボードによるファイルなどの入力により、ユーザによる原子配置、また、以降必要に応じてこのようにユーザによる操作が行われる。
【0018】
次に、CPU11が、ユーザによって成された原子配置に係る情報に基づいて、距離がしき値以下となる原子間に結合軸を設定して(ステップSII)、軌道数及び電子数に基づいて結合次数を設定し、結合次数を示した分子構造を表示ユニットに表示させる(ステップSIII)。
【0019】
CPU11によって実行されるステップSII及びSIIIに係る分子の3次元構造構築処理は、図3に示す手順で行われる。図3は、分子の3次元構造構築処理の全体フローを示す図である。
【0020】
図3において、CPU11は、ユーザによって成された原子配置に係る情報に基づいて、後述される図4に示すデータ構造30に値を設定し(ステップS1)、また、原子座標を読み込む(ステップS2)。
【0021】
次に、CPU11は、距離がしきい値以下の原子間毎に結合軸を設定する(ステップS3)。CPU11は、データ構造30において、距離がしきい値以下となる原子対の原子毎に、結合軸に係る情報を設定する。
【0022】
そして、CPU11は、軸端原子対の1軌道1電子ずつをσ結合に設定する(ステップS4)。CPU11は、データ構造30において、ステップS2で特定した原子対の原子毎に、σ結合に係る情報を設定する。
【0023】
また、CPU11は、軸端原子の1軌道2電子を孤立電子対に設定する(ステップS5)。CPU11は、データ構造30において、原子対の原子毎に、孤立電子対に係る情報を設定する。
【0024】
更に、CPU11は、軸端原子対の1軌道1電子ずつをπ結合に設定する(ステップS6)。CPU11は、データ構造30において、原子対の原子毎に、π結合に係る情報を設定する。
【0025】
そして、CPU11は、電子数と軌道数の残りから原子電荷を設定する(ステップS7)。CPU11は、データ構造30において、原子対の原子毎に、原子電荷に係る情報を設定する。
【0026】
原子電荷を設定した後、CPU11は、原子対間の全結合数を軸の結合次数に設定する(ステップS8)。CPU11は、データ構造30において、結合軸毎に、結合次数係る情報を設定する。そして、CPU11は、この処理を終了する。
【0027】
次に、分子の3次元構造構築処理にて使用されるデータ構造30について図4で説明する。図4は、データ構造を示す図である。図4に示すデータ構造30は、メモリユニット12又は記憶装置17の記憶領域(以下、単に記憶領域と言う)に展開され、分子の3次元構造構築処理にて情報を格納することによって設定し、又は、格納された情報を参照するためのデータ構造である。
【0028】
データ構造30は、ヘッダ31と、分子データ32と、元素データ33とを有する。また、分子データ32は、更に、分子メイン32mと、原子データ32aと、結合軸データ32bとを有する。
【0029】
ヘッダ31は、分子データポインタ(M)と、元素データポインタ(El)と、イベントデータポインタ(E)とによるデータ構造を有する。分子データポインタ(M)は、分子データ32が格納されている先頭アドレスを示すポインタであり、元素データポインタ(El)は、元素データ33が格納されている先頭アドレスを示すポインタであり、イベントデータポインタ(E)は、イベントデータが格納されている先頭アドレスを示すポインタである。
【0030】
分子データ32に関して、分子メイン32mは、原子データポインタ(A)と、結合軸データポインタ(B)と、原子数(n)と、結合軸数(nb)とによるデータ構造を有する。原子データポインタ(A)は、原子データ32aが格納されている先頭アドレスを示すポインタであり、結合軸データポインタ(B)は、結合軸データ32bが格納されている先頭アドレスを示すポインタである。分子データ32のデータ構造を、分子データ構造Mとする。
【0031】
また、原子数(n)は、この分子データ32で管理される原子の個数、つまり、ユーザがGUI上に配置した原子の個数であり、また、原子データ32aの数に相当する。結合軸数(nb)は、この分子データ32で管理される結合軸の個数、つまり、分子の3次元構造構築処理で自動的に設定した結合軸の個数であり、結合軸データ32bの数に相当する。
【0032】
原子データ32aは、原子順序番号(a)と、原子元素番号(N)と、位置座標(c)と、電子数(n)と、軌道数(m)と、結合フラグ(bf)と、含有結合軸数(nb)と、含有結合軸番号(b)と、原子電荷(q)とによるデータ構造を有する。原子データ32aのデータ構造を、原子データ構造Aとする。
【0033】
結合フラグ(bf)は、結合軸を設定可能かどうかという状態を表すフラグである。例えば、結合フラグ(bf)の初期値をFとし、軌道数(m)と電子数(n)とがゼロであれが「F」、また、軌道数(m)か含有結合軸数(nb)がゼロでなく、含有結合軸番号(b)に関与する他の原子jについて結合フラグ(bf)が「F」となる結合が1つ、残りの結合はすべて「T」の場合には値を「C」とする。処理の過程において、他の原子jについて結合フラグ(bf)が「C」となる結合が1つ、残りの結合はすべて「T」の場合にも値を「C」とする。
【0034】
結合軸データ32bは、結合軸順序番号(b)と、ベクトル(v)と、結合次数(bt)と、両端原子番号(a)とによるデータ構造を有する。結合軸データ32bのデータ構造を、結合軸データ構造Bとする。
【0035】
元素データ33は、基準電子数設定(n0)と、基準軌道数設定(m0)と、結合半径(r)とによるデータ構造を元素毎に有する。元素データ33のデータ構造を、元素データ構造Elとする。
【0036】
図4のデータ構造30において、例えば、ある原子の原子データAの結合フラグbfは、「A−>bf」というポインタで表現できる。また、例えば、元素データ33について、各元素(iと表現する)について少なくともEl[i]−>r、El[i]−>n0、El[i]−>m0という要素を持つと表現できる。
【0037】
原子データ構造Aについて、原子順序番号A−>aは内部座標における識別番号である。原子元素番号A−>Nは元素記号もしくは元素の原子番号である。含有結合軸数A−>nbは原子が有する他原子との結合軸数である。A−>nbの値は、入力構造から原子半径El−>rを元に、原子対を成していると推定される結合軸の数を表す。結合軸識別番号A−>b[nb]は、結合軸数に含まれる各結合軸の含有結合軸番号bの集合データである。
【0038】
位置座標A−>c[3]は原子の3次元座標の各成分である。電子数A−>nは図3の処理動作によって初期値El−>n0から0にまで変動し得る。軌道数A−>mは図3の処理動作によって初期値El−>m0から0にまで変動し得る。
【0039】
結合フラグA−>bfは、結合軸を設定可能かどうかという状態を表すフラグである。設定例としてはA−>bfの初期値をFとし、A−>mとA−>nがゼロであればT、またA−>mかA−>nbがゼロでなく、A−>bに関与する他の原子jについてA[j]−>bfがFとなる結合が1つ、残りの結合はすべてTの場合には、値をCとする。またA−>qは原子上の電荷を表す。
【0040】
結合軸データ構造Bについて、結合軸順序番号B−>bは全ての結合軸を1対1対応させるために必要な識別番号である。両端原子番号B−>a[2]は、結合軸の両末端に存在する原子順序番号A−>aの部分集合データである。結合次数B−>btについて、初期値は0であり、図3の処理動作によって適切な結合次数へと変動する。ベクトルB−>vについては、結合軸を3次元ベクトルと1対1に対応させたものである。
【0041】
元素データ構造Elの各要素は、結合半径El−>r、基準電子数El−>n0、基準軌道数El−>m0と表される。
【0042】
図5は、データ構造の初期化処理を説明するためのフローチャート図である。図5において、CPU11は、分子データ構造M及び元素データ構造Elを構築する(ステップS11)。
【0043】
元素データ構造Elについて、例えば、原子番号1の水素から92のウランまで設定する場合には、元素データ構造ElについてEl[1:92]に必要な記憶領域を確保する。原子半径と基準電子数、基準軌道数については各元素に適切な値を設定する。例えば、原子半径El−>rは各元素のファンデアワールス半径とし、電子数El−>n0と軌道数El−>m0は最外殻の数値とする。この場合、水素原子についてはEl[1]−>n0=1、El[1]−>m0=1であり、炭素原子についてはEl[6]−>n0=4、El[6]−>m0=4、酸素原子についてはEl[8]−>n0=6、El[8]−>m0=4となる。
【0044】
分子データ構造Mについて、原子データ構造AへのポインタM−>A、及び結合軸データ構造BへのポインタM−>Bに必要な記憶領域を確保し、更に、全原子数M−>nと全結合軸数M−>nb用の記憶領域を確保する。よって、分子メイン32mの記憶領域が確保される。なお支障がなければポインタM−>A、及びM−>Bを設定しなくても良い。
【0045】
次に、CPU11は、原子の位置座標を入力し(ステップS12)、入力した原子の位置座標の個数に基づいて、原子数nを原子数M−>nに設定する(ステップS13)。そして、CPU11は、原子数n分の原子データ構造M−>A[1:M−>n]の記憶領域を確保する(ステップS14)。
【0046】
CPU11は、原子を順番に指定する原子順番変数i(以下、単に原子iと言う)をゼロに、また、含有結合軸数A−>nbをゼロに初期化する(ステップS15)。CPU11は、原子iを1増やして次の原子を指定し、原子iの結合対象となる原子jを原子iとし(ステップS16)、更に、結合対象の原子jを1増やしておく(ステップS17)。
【0047】
そして、CPU11は、原子iと原子jの距離が夫々の結合半径rから定まる閾値より小さいか否かを判断する(ステップS18)。閾値以上の場合、CPU11は、原子jを原子iの結合対象とせずにステップS17へ戻り、上述同様の処理を繰り返す。一方、閾値より小さい場合、CPU11は、結合軸数M−>nbを1増やす。
【0048】
そして、CPU11は、原子iに対する結合対象の原子jとして原子数M−>n分の処理を終了したか否かを判断する(ステップS20)。原子iに対する結合対象の原子j全てに対して処理を終了していない場合、CPU11は、ステップS14へ戻り、上述同様の処理を繰り返す。
【0049】
一方、原子iに対する結合対象の原子j全てに対して処理を終了した場合、CPU11は、原子数M−>nから1減算した個数分の原子i全てに対して処理を終了したか否かを更に判断する(ステップS21)。原子i全てに対して処理を終了していない場合、CPU11は、ステップS13へ戻り、上述同様の処理を繰り返す。
【0050】
一方、原子i全てに対して処理を終了した場合、含有結合軸数が決定したことになるため、CPU11は、含有結合軸数nb分の結合軸データ構造M−>B[1:M−>nb]の記憶領域を確保して(ステップS22)、このデータ構造の初期化処理を終了する。
【0051】
つまり、原子データ構造Aと結合軸データ構造B用の記憶領域に関しては、与えられた原子とその座標情報を元に生成される。先ず、原子データ構造Aに関しては原子数をM−>nに設定後、原子数分の原子データ構造A[1:M−>n]の記憶領域を確保する。次に、結合軸データ構造Bに関しては、原子の位置座標をA−>cに設定後、原子iと原子j間の距離を計算し、その距離が、原子iの結合半径El[A[i]−>N]−>rと原子jの結合半径El[A[j]−>N]−>rから定まる閾値よりも小さい場合に結合軸を持つとしてM−>nbの値を1増やす。この処理を全2原子間について実行することで、全結合軸数M−>nbが決まり、結合軸数分の結合軸データ構造B[1:M−>nb]の記憶領域を確保する。
【0052】
次に、分子の3次元構造構築処理の詳細フローについて図6から図8で説明する。図6、図7、及び図8は、分子の3次元構造構築処理の詳細フローを示す図である。図6から図8で、CPU11によって行われる結合次数設定に係る一連の処理が示される。
【0053】
(初期データ設定及びσ結合の設定)
先ず、ステップS31からステップS56における処理の概要を説明する。原子データの設定について、原子iの順序番号A[i]−>aには入力した順番号を設定する。原子番号A[i]−>Nには入力原子の原子番号を、座標A[i]−>cには入力原子のCartesian座標を設定する。また初期電子数にはA[i]−>n=E[A[i]−>N]−>n0を、初期軌道数にはA[i]−>m=El[A[i]−>N]−>m0を設定する。初期電荷についてはA[i]−>q=0とし、初期結合フラグについてはA[i]−>bf=Fとする。含有結合軸数および含有結合軸番号については、結合軸データBの初期設定と同時に設定する。
【0054】
結合軸データについては、原子iと原子jの距離が閾値以下と判定した原子間について、判定した順序で設定する。例えば結合軸がそれまでにk−1個設定されている場合に、原子iと原子jの距離が閾値以下と判定された場合には、ij間の結合軸をB[k]として設定する。ここでB[k]−>b=k、B[k]−>a[1]=i、B[k]−>a[2]=jと設定し、その他にA[i]−>nb=A[i]−>nb+1、A[j]−>nb=A[j]−>nb+1、A[i]−>b[nb]=k、A[j]−>b[nb]=kと設定する。
【0055】
結合軸の設定はσ結合の設定と同値と考え、原子iとjの軌道数と電子数を1ずつ減らし、結合軸kの結合次数を1増やす。具体的にはA[i]−>m=A[i]−>m−>1、A[j]−>m=A[j]−>m−1、A[i]−>n=A[i]−>n−>1、A[j]−>n=A[j]−>n−1、B[k]−>bt=1と設定する。設定後に原子iの電子数か軌道数が0になった場合には、A[i]−>bf=Tと設定する。また電子数も軌道数も0でなく、結合軸B[A[i]−>b]−>aに関与する他の原子A[B[A[i]−>b]−>a[1,2]]−>bfが「F」となるものが1つ、残りはすべて「T」の場合には、値を「C」に設定する。
【0056】
以下にステップ毎に詳述する。CPU11は、データ構造M、El、A、及びBを構築し(ステップS31)、原子の位置座標を読み込む(ステップS32)。そして、CPU11は、原子データ構造A[11:M−>n]に、配置された原子を所定順序番号に従って、各原子に関する値を含有結合軸番号A−>bを除いて設定する(ステップS33)。
【0057】
CPU11は、原子を順番に指定する原子順番変数i(以下、単に原子iと言う)をゼロに、また、結合軸を順番に指定する軸順番変数k(以下、単に結合軸kと言う)をゼロに初期化する(ステップS34)。CPU11は、原子iを1増やして次の原子を指定し、原子iの結合対象となる原子jを原子iとし(ステップS35)、更に、結合対象の原子jを1増やしておく(ステップS36)。
【0058】
そして、CPU11は、原子iと原子jの距離が夫々の結合半径rから定まる閾値より小さいか否かを判断する(ステップS37)。閾値以上の場合、CPU11は、原子jを原子iの結合対象とせずにステップS36へ戻り、上述同様の処理を繰り返す。一方、閾値より小さい場合、CPU11は、原子データ構造Aにおける、原子iと原子j間の軌道数m及び電子数nを1減算し(ステップS38)、原子iと原子j間の含有結合軸数nbを1増やす(ステップS39)。
【0059】
次に、CPU11は、結合軸kに1を加算して次の結合軸を指定する(ステップS40)。そして、CPU11は、結合軸kの結合次数B[k]−>btに1を設定し、原子iの含有結合軸番号A[i]−>b及び原子jの含有結合軸番号A[j]−>bに結合軸kを追加する(ステップS41)。
【0060】
CPU11は、原子iに対する結合対象の原子jとして原子数M−>n分の処理を終了したか否かを判断する(ステップS42)。原子iに対する結合対象の原子j全てに対して処理を終了していない場合、CPU11は、ステップS36へ戻り、上述同様の処理を繰り返す。
【0061】
一方、原子iに対する結合対象の原子j全てに対して処理を終了した場合、CPU11は、原子数M−>nから1減算した個数分の全ての原子iに対して処理を終了したか否かを更に判断する(ステップS43)。全ての原子iに対して処理を終了していない場合、CPU11は、ステップS35へ戻り、上述同様の処理を繰り返す。
【0062】
一方、全ての原子iに対して処理を終了した場合、含有結合軸数が決定したことになり、σ結合を設定するための処理(図3のステップS4)を行うために、CPU11は、原子iをゼロに初期化した後(ステップS44)、1加算して原子iを設定する(ステップS45)。
【0063】
CPU11は、原子データ構造Aにおいて、原子iの軌道数A[i]−>m又は電子数A[i]−>nの少なくとも一方がゼロであるか否かを判断する(ステップS46)。いずれもゼロでない場合、CPU11は、ステップS49へと進む。一方、少なくとも一方がゼロであるである場合、原子iの結合フラグA[i]−>bfを「T」に設定し(ステップS47)、原子iの結合フラグA[i]−>bfに「T」のみが設定されているか否かを判断する(ステップS48)。「T」以外を含む場合、CPU11は、ステップS43へと戻り、次の原子i+1について上述同様の処理を行う。
【0064】
一方、ステップS48にて、原子iの結合フラグA[i]−>bfに「T」のみが設定されている場合は、CPU11は、原子iに対する結合対象の原子jをゼロに初期化し、原子iの含有結合軸数A−>nbを結合軸kに設定する(ステップS49)。
【0065】
そして、CPU11は、jを1増加させた原子jを原子iに対する次の結合対象とする(ステップS50)。CPU11は、原子iの結合対象としての原子jの含有結合軸番号bによって特定される結合軸の両端原子番号aに関し、原子データ構造Aの結合フラグbfに「T」が含まれているか否かを判断する(ステップS51)。CPU11は、「T」が含まれていない場合、ステップS50へ戻り、次の結合対象について上述同様の処理を行う。
【0066】
一方、ステップS51にて、原子データ構造Aの結合フラグbfに「T」が含まれていると判断した場合、CPU11は、結合軸kを1減算し(ステップS52)、原子jが原子iの含有結合軸数A−>nbに一致するか否かを判断することによって、全ての含有結合軸について処理を終了したか否かを判断する(ステップS53)。一致しない場合、CPU11は、ステップS50へ戻り、上述同様の処理を行う。
【0067】
一方、ステップS53にて、CPU11は、結合軸kが1であるか否かを判断する(ステップS54)。結合軸kが1でない場合、CPU11は、ステップS56へと進む。一方、結合軸kが1の場合、CPU11は、原子iの結合フラグA[i]−>bfに「C」を設定する(ステップS55)。そして、CPU11は、原子iが原子数M−>nに一致するか否かを判断することによって、全ての原子iについて処理を終了したか否かを判断する(ステップS56)。終了していない場合、CPU11は、ステップS45に戻り、上述同様の処理を行う。
【0068】
(孤立電子対の設定)
先ず、ステップS57からステップS63における処理の概要を説明する。σ結合の設定が終了した後、原子iについて軌道数1に対し電子数が2確保できる場合には、A[i]−>m=A[i]−>m−1、A[i]−>n=A[i]−>n−2と設定する。この処理を繰り返し、もし軌道数か電子数が0になった場合にはA[i]−>bt=Tと設定する。
【0069】
以下にステップ毎に詳述する。全ての原子iに対して処理を終了した場合、軸端原子対の1軌道1電子ずつをσ結合に設定したことになり、軸端原子の1軌道2電子を孤立電子対に設定するための処理(図3のステップS5)を行うために、CPU11は、原子iをゼロに初期化した後(ステップS57)、1加算して原子iを設定する(ステップS58)。
【0070】
CPU11は、原子iの、軌道数A[i]−>m−1がゼロ以上、かつ、電子数A[i]−>n−2がゼロ以上であるか否かを判断することによって、軸端原子の1軌道2電子を孤立電子対が存在するか否かを判断する(ステップS59)。片方又は両方がゼロ以上でない場合、CPU11は、孤立電子対が存在しないと判断し、ステップS62へと進む。一方、両方がゼロ以上である場合、CPU11は、孤立電子対が存在すると判断し、原子iから1軌道2電子を減算する(ステップS60)。すなわち、原子iの軌道数A[i]−>mから1減算し、電子数A[i]−>nから2減算する。
【0071】
そして、CPU11は、原子iが原子数M−>nに一致するか否かを判断することによって、全ての原子iについて処理を終了したか否かを判断する(ステップS61)。終了していない場合、CPU11は、ステップS58に戻り、上述同様の処理を行う。全ての原子iに対して処理を終了した場合、CPU11は、原子iの軌道数A[i]−>mがゼロ、又は、電子数A[i]−>nがゼロであるか否かを判断する(ステップS62)。いずれもゼロでないと判断した場合、CPU11は、ステップS64へと進む。いずれか一方がゼロである場合、CPU11は、原子iの結合フラグA[i]−>bfに「T」を設定する(ステップS63)。
【0072】
(π結合の設定及び原子電荷の設定)
先ず、ステップS64からステップS114における処理の概要を説明する。孤立電子対用に軌道数と電子数を減らした後、結合軸iについて、結合両端原子B[i]−>a[1]、B[i]−>a[2]の結合フラグA[B[i]−>a[1]]−>bfまたはA[B[i]−>a[2]]−>bfが「C」か「F」であり、かつ両端原子の軌道数と電子数が0でないならばA[B[i]−>a[1]]−>m=A[B[i]−>a[1]]−>m−1、A[B[i]−>a[2]]−>m=A[B[i]−>a[2]]−>m−1、A[B[i]−>a[1]]−>n=A[B[i]−>a[1]]−>n−1、A[B[i]−>a[2]]−>n=A[B[i]−>a[2]]−>n−1と設定し、結合次数についてもB[i]−>bt=B[i]−>bt+1と設定する。各原子の軌道数と電子数が0になる場合にはその原子の結合フラグを「T」に設定する。もし結合両端原子の結合フラグに「C」が存在しない場合には、結合フラグが両方とも「F」の結合軸に関して、上記処理を実施する。
【0073】
その後、原子iの電子数も軌道数も0でなく、結合軸B[A[i]−>b]−>aに関与する他の原子A[B[A[i]−>b]−>a[1,2]]−>bfがFとなるものが1つ、残りはすべてTの場合には、値を「C」に設定する。これまでの処理を繰り返し、最終的に結合両端原子の結合フラグについて、「C」か「F」で構成される組が存在しなくなるまで処理を実施する。原子iについて電子数が0で軌道数が0でない場合、A[i]−>q=A[i]−>m、A[i]−>m=0、A[i]−>bf=Tと設定する。逆に軌道数が0で電子数が0でない場合、A[i]−>q=A[i]−>n*(−1)、A[i]−>n=0、A[i]−>bf=Tと設定する。軌道数と電子数のどちらも0でない場合には、どちらかが0になるまでそれぞれの値を減らし、その後で上記の電荷設定処理を実施する。
【0074】
以下にステップ毎に詳述する。全ての原子iについて軸端原子の1軌道2電子を孤立電子対として設定する処理を終了し、次に、軸端原子対の1軌道1電子ずつをπ結合に設定するための処理(図3のステップS6)を行うために、CPU11は、結合軸i及び変数lをゼロに初期化した後(ステップS64)、1加算して結合軸iを設定する(ステップS65)。CPU11は、結合軸iの両端原子番号aの各々に関し、原子データ構造Aの結合フラグbfに「C」及び「F」が在るか否かを判断する(ステップS66)。「C」及び「F」が在る場合、CPU11は、ステップS65へ戻り、次の結合軸i+1について上述同様の処理を行う。
【0075】
一方、「C」及び「F」がない場合、CPU11は、変数lに1を設定する(ステップS67)。CPU11は、結合軸iの両端原子の軌道数A[B[i]−>a[1,2]]−>m夫々から1ずつ減算し(ステップS68)、また、結合軸iの両端原子の軌道数A[B[i]−>a[1,2]]−>n夫々から1ずつ減算する(ステップS69)。そして、CPU11は、結合軸iの結合次数B[i]−>btを1加算する(ステップS70)。
【0076】
続けて、CPU11は、両端原子の一方の軌道数A[B[i]−>a[1]]−>m又は電子数A[B[i]−>a[1]]−>nがゼロか否かを判断する(ステップS71)。いずれもゼロでない場合、CPU11は、ステップS73へと進む。一方、いずれか一方がゼロの場合、CPU11は、その一方の原子の結合フラグA[B[i]−>a[1]]−>bfに「T」を設定する(ステップS72)。
【0077】
更に、CPUは、両端原子の他方の軌道数A[B[i]−>a[2]]−>m又は電子数A[B[i]−>a[2]]−>nがゼロか否かを判断する(ステップS73)。いずれもゼロでない場合、CPU11は、ステップS75へと進む。一方、いずれか一方がゼロの場合、CPU11は、その他方の原子の結合フラグA[B[i]−>a[2]]−>bfに「T」を設定する(ステップS74)。
【0078】
そして、CPU11は、両端原子夫々の結合フラグA[B[i]−>a[1,2]]−>bfに「T」が含まれているか否かを判断する(ステップS75)。「T」が含まれていない場合、CPU11は、ステップS68へ戻り、上述同様の処理を行う。一方、「T」が含まれている場合、CPU11は、全ての含有結合軸M−>nbについて処理を終了したか否かを判断する(ステップS76)。終了していない場合、CPU11は、ステップS66へ戻り、上述同様の処理を行う。一方、終了している場合、CPU11は、変数lがゼロであるか否かを判断する(ステップS77)。ゼロの場合、CPU11は、ステップS91へと進む。
【0079】
一方、ゼロでない場合、CPU11は、原子iをゼロに初期化して(ステップS78)、1加算して原子iを設定する(ステップS79)。
【0080】
CPU11は、原子iの原子データ構造Aにおいて、軌道数A[i]−>m又は電子数A[i]−>nの少なくとも一方がゼロであるか否かを判断する(ステップS80)。いずれもゼロでない場合、CPU11は、ステップS83へと進む。一方、少なくとも一方がゼロであるである場合、原子iの結合フラグA[i]−>bfを「T」に設定し(ステップS81)、原子iの結合フラグA[i]−>bfに「T」のみが設定されているか否かを判断する(ステップS82)。「T」以外を含む場合、CPU11は、ステップS79へと戻り、次の原子i+1について上述同様の処理を行う。
【0081】
一方、ステップS82にて、原子iの結合フラグA[i]−>bfに「T」のみが設定されている場合は、CPU11は、原子iに対する結合対象の原子jをゼロに初期化し、原子iの含有結合軸数A−>nbを結合軸kに設定する(ステップS83)。
【0082】
そして、CPU11は、jを1増加させた原子jを原子iに対する次の結合対象とする(ステップS84)。CPU11は、原子iの結合対象としての原子jの含有結合軸番号bによって特定される結合軸の両端原子番号aに関し、原子データ構造Aの結合フラグbfに「T」が含まれているか否かを判断する(ステップS85)。CPU11は、「T」が含まれていない場合、ステップS84へ戻り、次の結合対象について上述同様の処理を行う。
【0083】
一方、ステップS85にて、原子データ構造Aの結合フラグbfに「T」が含まれていると判断した場合、CPU11は、結合軸kを1減算し(ステップS86)、原子jが原子iの含有結合軸数A−>nbに一致するか否かを判断することによって、全ての含有結合軸について処理を終了したか否かを判断する(ステップS87)。一致しない場合、CPU11は、ステップS84へ戻り、上述同様の処理を行う。
【0084】
一方、ステップS87にて、CPU11は、結合軸kが1であるか否かを判断する(ステップS88)。結合軸kが1でない場合、CPU11は、ステップS90へと進む。一方、結合軸kが1の場合、CPU11は、原子iの結合フラグA[i]−>bfに「C」を設定する(ステップS89)。そして、CPU11は、原子iが原子数M−>nに一致するか否かを判断することによって、全ての原子iについて処理を終了したか否かを判断する(ステップS90)。終了していない場合、CPU11は、ステップS79に戻り、上述同様の処理を行う。
【0085】
全ての原子iに対して処理を終了した場合、CPU11は、結合軸iをゼロに初期化した後(ステップS91)、1加算して結合軸iを設定する(ステップS92)。CPU11は、結合軸iの両端原子番号aの各々に関し、原子データ構造Aの結合フラグbfが「F」であるか否かを判断する(ステップS93)。「F」である場合、CPU11は、ステップS92へ戻り、次の結合軸i+1について上述同様の処理を行う。
【0086】
一方、「F」である場合、CPU11は、変数lに1を設定する(ステップS94)。CPU11は、CPU11は、結合軸iの両端原子の軌道数A[B[i]−>a[1,2]]−>m夫々から1ずつ減算し(ステップS95)、また、結合軸iの両端原子の軌道数A[B[i]−>a[1,2]]−>n夫々から1ずつ減算する(ステップS96)。そして、CPU11は、結合軸iの結合次数B[i]−>btを1加算する(ステップS97)。
【0087】
続けて、CPU11は、両端原子の一方の軌道数A[B[i]−>a[1]]−>m又は電子数A[B[i]−>a[1]]−>nがゼロか否かを判断する(ステップS98)。いずれもゼロでない場合、CPU11は、ステップS73へと進む。一方、いずれか一方がゼロの場合、CPU11は、その一方の原子の結合フラグA[B[i]−>a[1]]−>bfに「T」を設定する(ステップS99)。
【0088】
更に、CPUは、両端原子の他方の軌道数A[B[i]−>a[2]]−>m又は電子数A[B[i]−>a[2]]−>nがゼロか否かを判断する(ステップS100)。いずれもゼロでない場合、CPU11は、ステップS75へと進む。一方、いずれか一方がゼロの場合、CPU11は、その他方の原子の結合フラグA[B[i]−>a[2]]−>bfに「T」を設定する(ステップS101)。
【0089】
そして、CPU11は、両端原子夫々の結合フラグA[B[i]−>a[1,2]]−>bfに「T」が含まれているか否かを判断する(ステップS02)。「T」が含まれていない場合、CPU11は、ステップS95へ戻り、上述同様の処理を行う。CPU11は、変数lがゼロであるか否かを判断する(ステップS03)。ゼロでない場合、CPU11は、ステップS78へと戻り、上述同様の処理を行う。
【0090】
一方、ゼロの場合、CPU11は、原子iをゼロに初期化して(ステップS104)、1加算して原子iを設定し(ステップS105)、電子数と軌道数の残りから原子電荷を設定するための処理(図3のステップS7)を行う。
【0091】
CPU11は、原子iの原子データ構造Aにおいて、軌道数A[i]−>mはゼロではなく、かつ、電子数A[i]−>nがゼロであるが成立するかを判断する(ステップS106)。不成立の場合、CPU11は、ステップS108へと進む。成立する場合、CPU11は、原子iの原子電荷A[i]−>qに軌道数A[i]−>m*1を設定して、軌道数A[i]−>mをゼロにする(ステップS107)。原子iの電荷として軌道数が設定される。
【0092】
CPU11は、原子iの原子データ構造Aにおいて、軌道数A[i]−>mはゼロであり、かつ、電子数A[i]−>nがゼロではないが成立するかを判断する(ステップS108)。不成立の場合、CPU11は、ステップS110へと進む。成立する場合、CPU11は、原子iの原子電荷A[i]−>qに電子数A[i]−>n*(−1)を設定して、電子数A[i]−>nをゼロにする(ステップS109)。原子iの電荷として負の電子数が設定される。
【0093】
CPU11は、原子iの原子データ構造Aにおいて、軌道数A[i]−>mはゼロではなく、かつ、電子数A[i]−>nがゼロではないが成立するかを判断する(ステップS110)。不成立の場合、CPU11は、ステップS112へと進む。成立する場合、CPU11は、原子iの軌道数A[i]−>mを1減算し、また、電子数A[i]−>nを1減算にする(ステップS111)。
【0094】
CPU11は、原子iの軌道数A[i]−>mがゼロ、かつ、電子数A[i]−>nがゼロであるが成立するかを判断する(ステップS112)。成立しない場合、CPU11は、ステップS106へ戻り、上述同様の処理を行う。不成立の場合、CPU11は、原子iの結合フラグbfに「T」を設定する(ステップS113)。
【0095】
そして、CPU11は、分子Mの原子数M−>nの原子i全てに対して処理を終了したか否かを判断する(ステップS114)。CPU11は、原子i全てに対して処理を終了していない場合、ステップS105に戻り、上述同様の処理を行う。一方、原子i全てに対して処理を終了した場合、CPU11は、この処理を終了する。
【0096】
(結合次数の設定)
σ結合毎に加算された結合次数(ステップS70)、及び、π結合毎に加算された結合次数(ステップS97)によって、原子対間の全結合数が軸の結合次数として設定される。
【0097】
[実施例1]
次に、上述した分子の3次元構造構築処理による実施例を説明する。先ず、実施例1として、図9に示すように、C2H4(エチレン)の原子配置80に対して、元素Cが2次結合された結合結果89が、上述した分子の3次元構造構築処理によって自動的に正しく得られることを図10で説明する。
【0098】
図10は、C2H4(エチレン)の場合の状態遷移例を示す図である。図10中、データ構造30に基づいて記憶領域に展開された情報のうち、各状態の説明に必要な部分をテーブルT10で示し、理解を容易にするため、状態遷移毎のテーブルT10に対応させて結合次数が設定される様子を例示させている。
【0099】
<状態1>
図10において、図9に示すようなC2H4(エチレン)の原子配置80がユーザによって成されると、CPU11は、この原子配置80用にデータ構造30をテーブルT10として記憶領域内に構築し、原子データ構造Aを作成した段階である。原子はA[1]からA[6]まで、原子順序番号については例えばA[1]−>N=6のように設定されている。この段階ではまだ結合軸データ構造Bは記憶領域のみ確保された段階である。
【0100】
<状態2>
原子A[1]と原子A[2]の距離が閾値以下と判断されて、テーブルT10に最初の結合軸が設定された段階である。結合軸B[1]は同時にσ結合の設定をB[1]−>bt=1で意味し、結合形成のために両端原子A[1]とA[2]の軌道数と電子数は1ずつ減少している。
【0101】
<状態3>
原子A[1]と原子A[3]の距離が閾値以下と判定されて、テーブルT10に結合軸B[2]が設定された段階である。この時、B[2]−>bt=1となり、両端原子の軌道数と電子数は1ずつ減少している。ここで、A[3]−>m=0、A[3]−>n=0となったため、A[3]−>bf=Tと設定される。
【0102】
<状態4>
原子A[1]と原子A[4]の距離が閾値以下と判定されて、テーブルT10に結合軸B[3]が設定された段階である。この時、B[3]−>bt=1となり、両端原子の軌道数と電子数は1ずつ減少している。ここで、A[3]−>m=0、A[3]−>n=0となったため、A[3]→bf=Tと設定される。さらにこの時、A[1]−>m=1、A[1]−>n=1とどちらも0でなく、A[1]の属する結合軸の逆端原子A[3]、A[4]の結合フラグが「T」となっている。逆端原子の結合フラグが「T」でないのは原子A[2]のみであるため、A[1]−>bf=Cと設定される。
【0103】
<状態5>
原子A[2]とA[5]の距離が閾値以下と判定されて、テーブルT10に結合軸B[4]が設定された段階である。この時、B[5]−>bt=1となり、両端原子の軌道数と電子数は1ずつ減少している。ここでA[5]−>m=0、A[5]−>n=0となったため、A[5]−>bf=Tと設定される。
【0104】
<状態6>
原子A[2]と原子A[6]の距離が閾値以下と判定されて、テーブルT10に結合軸B[5]が設定された段階である。この時、B[6]−>bt=1となり、両端原子の軌道数と電子数は1ずつ減少している。ここで、A[6]−>m=0、A[6]−>n=0となったため、A[6]−>bf=Tと設定される。さらにこの時、A[2]−>m=1、A[2]−>n=1とどちらも0でなく、A[2]の属する結合軸の逆端原子A[5]、A[6]の結合フラグが「T」となっている。逆端原子の結合フラグが「T」でないのはA[1]のみであるため、A[2]−>bf=Cと設定される。
【0105】
<状態7>
結合軸B[1]の両端原子A[1]とA[2]について、結合フラグが両方ともCであることから、テーブルT10にπ結合を設定する段階である。具体的には、軌道数と電子数を1ずつ減少し、結合次数B[1]−>btは1増大して2に設定される。この時、A[1]−>m=0、A[1]−>n=0、A[2]−>m=0、A[2]−>n=0であることから、A[1]−>bf=T、A[2]−>bf=Tに設定される。
【0106】
従って、テーブルT10によって、図9に示すような適切に結合次数が設定された結合結果89を得ることが可能なことを確認できる。
【0107】
[実施例2]
次に、実施例2として、C6H5CHO(ベンズアルデヒド)の原子配置90に対して、結合次数が設定された結合結果99が、上述した分子の3次元構造構築処理によって自動的に正しく得られることを図11で説明する。
【0108】
図11は、C6H5CHO(ベンズアルデヒド)の場合の状態遷移例を示す図である。図11中、データ構造30に基づいて記憶領域に展開された情報のうち、各状態の説明に必要な部分をテーブルT11で示し、理解を容易にするため、状態遷移毎のテーブルT10に対応させて結合次数が設定される様子を例示させている。
【0109】
<状態1>
図11において、C6H5CHO(ベンズアルデヒド)の原子配置90がユーザによって成されると、CPU11は、この原子配置90用にデータ構造30をテーブルT11として記憶領域内に構築し、原子データ構造Aを作成した段階である。原子はA[1]からA[14]まで、原子順序番号については例えばA[1]−>N=6のように設定されている。この段階ではまだ結合軸データ構造Bは記憶領域のみ確保された段階である。
【0110】
<状態2>
図10と同様の処理により各原子間距離が閾値以下と判定されて、σ結合が設定された段階である。14個の結合軸について、結合次数はB[1:14]−>bt=1と設定されている。また炭素原子の軌道数と電子数はすべて1となり、水素原子の軌道数と電子数はすべて0となる。そのため水素原子の結合フラグはすべて「T」と設定されている。この時、酸素原子A[8]についてはA[8]−>m=3、A[8]−>n=5、A[8]−>bf=Cと設定されている。ここまでは図10の処理とまったく同様に進めることができる。
【0111】
<状態3>
酸素原子の軌道数1に対して電子数2となる組を2つ考慮することができることから、考慮した数の組を孤立電子対として減少させた段階である。具体的にはA[8]−>m=A[8]−>m−2=1、A[8]−>n=A[8]−>n−2*2=−>1と設定される。
【0112】
<状態4>
両端原子の結合フラグの組が「C」と「F」の組であるB[8]について、π結合が設定された段階である。具体的にはB[8]−>bt=B[8]−>bt+1=2と設定され、両端原子A[7]とA[8]の軌道数と電子数が1ずつ減少される。結果としてA[7]−>m=0、A[7]−>n=0、A[8]−>m=0、A[8]−>n=0と設定され、この時A[7]−>bf=T、A[8]−>bf=Tと設定される。
【0113】
<状態5>
両端原子の結合フラグの組が「F」同士の組である結合軸についてπ結合が設定され、その後で「C」と「F」による組の結合軸についてπ結合が設定され、「C」か「F」の組である結合軸が存在しなくなるまでπ結合の設定を進めた段階である。具体的にはすべての原子について、軌道数と電子数が0と設定され、結合フラグは「T」と設定されている。
【0114】
<状態6>
従って、テーブルT11によって、適切に結合次数が設定された結合結果99を得ることが可能なことを確認できる。
【0115】
以上より、分子構造構築システムにおいて、上述した分子の3次元構造構築処理によって、各原子が末端か否かを原子データ構造Aの結合フラグbfを利用して判定することによって、末端からπ結合の設定を行うことができ、共役系の結合次数を矛盾なく設定することができる。
【0116】
従来手法を用いた場合と異なり、分子構造の構築に関して、例えば、マウスによる結合軸の選択、結合次数の選択、結合軸の選択解除などのユーザによる操作数を削減し、特に巨大分子系における構造の変更設定など、個別の選択操作に困難を生じる系の分子設計を容易に進めることが可能になる。また付随して、従来手法で生じる結合次数設定ミスによる分子物性計算の異常動作を解消し、計算への連携をスムーズに進めることも可能になる。
【0117】
従って、分子構造をGUIなどで構築する際に、各原子に設定されている原子の軌道数と電子数の情報に基づき、各原子間の結合に対して結合次数を自動判定でき、高分子であってもユーザに負担をかけることなく分子設計を容易とし、更には分子物性計算などについても正常動作を可能とする。
【0118】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【0119】
11 CPU
12 メモリユニット
13 表示ユニット
14 出力ユニット
15 入力ユニット
16 通信ユニット
17 記憶装置
18 ドライバ
19 記憶媒体
30 データ構造
80、90 原子配置
89、99 結合結果
100 分子構造構築システム
T10、T11 テーブル
【技術分野】
【0001】
本発明は、原子間の結合次数を自動設定可能な分子構造構築システム、方法、プログラム、及び、記憶媒体に関する。
【背景技術】
【0002】
コンピュータの高性能化に伴い、ドラッグデザインなどの先端研究における分子軌道計算、分子動力学計算など理論化学計算のニーズが高まっている。これらの理論化学計算を実行するには、計算手法のみならず計算対象となる分子の構造を入力データに用いる必要がある。ドラッグデザインなどの先端研究では、分子動力学的手法を用いて物性を算出する状況が多々生じることから、適切な初期分子構造を構築する必要性が増している。このようなニーズから、分子構造構築の作業効率を向上させることを目的として、グラフィック表示機能を利用した分子設計システムが実用化されている。
【0003】
分子動力学計算では原子間に働く力場ポテンシャルを設定するために、適切な結合次数の情報を必要とする。従来より、ユーザがGUI上で結合軸を選択し、各結合軸について適切な結合次数を一つ一つ設定することが行われているが、原子数が多く構造が複雑な場合にはユーザへの負担が大きい。
【0004】
また単なる負担だけでは済まない問題として、低分子の場合には目視による結合軸の判別と修正が可能であっても、高分子では目視での判定が非常に困難な場合が生じる場面もある。このような問題に対して、結合次数の自動判定法として、任意に選択した2個の原子対の結合の強さを示す結合次数を計算し、その結果を用いて原子間の結合の有無を判定することが提案されている(例えば、特許文献1を参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平7−282096号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した従来の手法では、事前に分子軌道計算を実行する必要が生じ、構造を表示するためだけに多大な計算が必要になってしまう。また結合次数の判定基準として特許文献1の段落0018に示されている数1は、実際には2つの原子軌道に関する電子密度を表現しており、全ての原子軌道の考慮が必要な結合次数の判定に用いることは適切でない。
【0007】
従って、各原子に設定されている原子軌道数と電子数を考慮した手法ではないため、各原子間結合に対して結合次数を適切に判定することができない、また、高分子であってもユーザに負担をかけることなく分子を設計することができない等の問題があった。
【課題を解決するための手段】
【0008】
開示の分子構造構築システムは、分子の原子配置に基づいて、配置された原子毎に電子数及び軌道数と結合後の末端状態を示す結合フラグとを対応させた原子データ構造と、原子間を結合する結合軸毎に結合次数を対応させた結合軸データ構造とを少なくとも有するデータ構造を記憶した記憶領域と、前記原子間を結合可能な距離閾値に従ってσ結合を行い、前記結合次数を1加算し、該σ結合された原子の電子数及び軌道数を1ずつ減算し、該減算によって末端原子になると前記結合フラグを更新するσ結合手段と、前記結合フラグを参照して、第一原子に前記σ結合される第二原子のうち、一の第二原子を残して他第二原子が末端である場合、該第一原子と該一の第二原子とにπ結合を行い、該電子数及び軌道数を1ずつ減算し、前記結合次数を1加算するπ結合手段と、を有するように構成される。
【0009】
上記手段を機能としてコンピュータが処理する方法、上記手段を機能としてコンピュータに実行させるためのプログラム、及び、そのプログラムを記憶したコンピュータ読み取り可能な記憶媒体とすることもできる。
【発明の効果】
【0010】
開示の分子構造構築システムによって、分子の3次元構造構築に際し、構造に応じて原子間の結合次数を自動的に判断できるため、分子設計を容易に行うことができる。
【図面の簡単な説明】
【0011】
【図1】分子構造構築システムのハードウェア構成を示す図である。
【図2】分子の3次元構造構築を説明するための図である。
【図3】分子の3次元構造構築処理の全体フローを示す図である。
【図4】データ構造を示す図である。
【図5】データ構造の初期化処理を説明するためのフローチャート図である。
【図6】分子の3次元構造構築処理の詳細フローを示す図である。
【図7】分子の3次元構造構築処理の詳細フローを示す図(続き)である。
【図8】分子の3次元構造構築処理の詳細フローを示す図(続き)である。
【図9】電子配置と結合結果の例を示す図である。
【図10】C2H4(エチレン)の場合の状態遷移例を示す図である。
【図11】C6H5CHO(ベンズアルデヒド)の場合の状態遷移例を示す図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態を図面に基づいて説明する。原子間結合に対して結合次数の自動判定を可能とする本実施例に係る分子の3次元構造構築処理を実行する分子構造構築システムは、図1に示されるようなハードウェア構成を成す。図1は、分子構造構築システムのハードウェア構成を示す図である。図1において、分子構造構築システム100は、コンピュータによって制御される端末であって、CPU(Central Processing Unit)11と、メモリユニット12と、表示ユニット13と、出力ユニット14と、入力ユニット15と、通信ユニット16と、記憶装置17と、ドライバ18とを有し、システムバスBに接続される。
【0013】
CPU11は、メモリユニット12に格納されたプログラムに従って分子構造構築システム100を制御する。メモリユニット12には、RAM(Random Access Memory)及びROM(Read-Only Memory)等が用いられ、CPU11にて実行されるプログラム、CPU11での処理に必要なデータ、CPU11での処理にて得られたデータ等を格納する。また、メモリユニット12の一部の領域が、CPU11での処理に利用されるワークエリアとして割り付けられている。
【0014】
表示ユニット13は、CPU11の制御のもとに必要な各種情報を表示する。出力ユニット14は、プリンタ等を有し、利用者からの指示に応じて各種情報を出力するために用いられる。入力ユニット15は、マウス、キーボード等を有し、ユーザが分子構造構築システム100が処理を行なうための必要な各種情報を入力するために用いられる。通信ユニット16は、例えばインターネット、LAN(Local Area Network)等に接続し、外部装置との間の通信制御をするための装置である。記憶装置17には、例えば、ハードディスクユニットが用いられ、各種処理を実行するプログラム等のデータを格納する。
【0015】
分子構造構築システム100によって行われる処理を実現するプログラムは、例えば、CD−ROM(Compact Disc Read-Only Memory)等の記憶媒体19によって分子構造構築システム100に提供される。即ち、プログラムが保存された記憶媒体19がドライバ18にセットされると、ドライバ18が記憶媒体19からプログラムを読み出し、その読み出されたプログラムがシステムバスBを介して記憶装置17にインストールされる。そして、プログラムが起動されると、記憶装置17にインストールされたプログラムに従ってCPU11がその処理を開始する。尚、プログラムを格納する媒体としてCD−ROMに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。本実施例に係る処理を実現するプログラムは、通信ユニット16によってネットワークを介してダウンロードし、記憶装置17にインストールするようにしても良い。また、USB対応の分子構造構築システム100であれば、USB接続可能な外部記憶装置からインストールするようにしても良い。更に、SDカード等のフラッシュメモリ対応の分子構造構築システム100であれば、そのようなメモリカードからインストールするようにしても良い。
【0016】
先ず、3次元分子構造構築について概要を図2で説明する。図2は、分子の3次元構造構築を説明するための図である。分子構造構築システム100において、最初に、表示ユニット13に表示されたGUI上に、ユーザによって原子配置が行われる(ステップSI)。
【0017】
表示ユニット13のスクリーン上に作業用のメインウィンドウを持ち、メインウィンドウに表示される3次元分子構造の原子アイテムを、マウスなどのポインティングデバイスのクリックやドラッグアンドドロップかキーボード操作によって選択し、さらにメインウィンドウ上の3次元分子構造に対するマウスなどのポインティングデバイスのドラッグアンドドロップ、またはメインウィンドウのコマンドメニューに対するポインティングデバイスやキーボードでの選択、メインウィンドウ上のコマンドエリアに対するポインティングデバイスのドラッグアンドドロップ、もしくはキーボードによるファイルなどの入力により、ユーザによる原子配置、また、以降必要に応じてこのようにユーザによる操作が行われる。
【0018】
次に、CPU11が、ユーザによって成された原子配置に係る情報に基づいて、距離がしき値以下となる原子間に結合軸を設定して(ステップSII)、軌道数及び電子数に基づいて結合次数を設定し、結合次数を示した分子構造を表示ユニットに表示させる(ステップSIII)。
【0019】
CPU11によって実行されるステップSII及びSIIIに係る分子の3次元構造構築処理は、図3に示す手順で行われる。図3は、分子の3次元構造構築処理の全体フローを示す図である。
【0020】
図3において、CPU11は、ユーザによって成された原子配置に係る情報に基づいて、後述される図4に示すデータ構造30に値を設定し(ステップS1)、また、原子座標を読み込む(ステップS2)。
【0021】
次に、CPU11は、距離がしきい値以下の原子間毎に結合軸を設定する(ステップS3)。CPU11は、データ構造30において、距離がしきい値以下となる原子対の原子毎に、結合軸に係る情報を設定する。
【0022】
そして、CPU11は、軸端原子対の1軌道1電子ずつをσ結合に設定する(ステップS4)。CPU11は、データ構造30において、ステップS2で特定した原子対の原子毎に、σ結合に係る情報を設定する。
【0023】
また、CPU11は、軸端原子の1軌道2電子を孤立電子対に設定する(ステップS5)。CPU11は、データ構造30において、原子対の原子毎に、孤立電子対に係る情報を設定する。
【0024】
更に、CPU11は、軸端原子対の1軌道1電子ずつをπ結合に設定する(ステップS6)。CPU11は、データ構造30において、原子対の原子毎に、π結合に係る情報を設定する。
【0025】
そして、CPU11は、電子数と軌道数の残りから原子電荷を設定する(ステップS7)。CPU11は、データ構造30において、原子対の原子毎に、原子電荷に係る情報を設定する。
【0026】
原子電荷を設定した後、CPU11は、原子対間の全結合数を軸の結合次数に設定する(ステップS8)。CPU11は、データ構造30において、結合軸毎に、結合次数係る情報を設定する。そして、CPU11は、この処理を終了する。
【0027】
次に、分子の3次元構造構築処理にて使用されるデータ構造30について図4で説明する。図4は、データ構造を示す図である。図4に示すデータ構造30は、メモリユニット12又は記憶装置17の記憶領域(以下、単に記憶領域と言う)に展開され、分子の3次元構造構築処理にて情報を格納することによって設定し、又は、格納された情報を参照するためのデータ構造である。
【0028】
データ構造30は、ヘッダ31と、分子データ32と、元素データ33とを有する。また、分子データ32は、更に、分子メイン32mと、原子データ32aと、結合軸データ32bとを有する。
【0029】
ヘッダ31は、分子データポインタ(M)と、元素データポインタ(El)と、イベントデータポインタ(E)とによるデータ構造を有する。分子データポインタ(M)は、分子データ32が格納されている先頭アドレスを示すポインタであり、元素データポインタ(El)は、元素データ33が格納されている先頭アドレスを示すポインタであり、イベントデータポインタ(E)は、イベントデータが格納されている先頭アドレスを示すポインタである。
【0030】
分子データ32に関して、分子メイン32mは、原子データポインタ(A)と、結合軸データポインタ(B)と、原子数(n)と、結合軸数(nb)とによるデータ構造を有する。原子データポインタ(A)は、原子データ32aが格納されている先頭アドレスを示すポインタであり、結合軸データポインタ(B)は、結合軸データ32bが格納されている先頭アドレスを示すポインタである。分子データ32のデータ構造を、分子データ構造Mとする。
【0031】
また、原子数(n)は、この分子データ32で管理される原子の個数、つまり、ユーザがGUI上に配置した原子の個数であり、また、原子データ32aの数に相当する。結合軸数(nb)は、この分子データ32で管理される結合軸の個数、つまり、分子の3次元構造構築処理で自動的に設定した結合軸の個数であり、結合軸データ32bの数に相当する。
【0032】
原子データ32aは、原子順序番号(a)と、原子元素番号(N)と、位置座標(c)と、電子数(n)と、軌道数(m)と、結合フラグ(bf)と、含有結合軸数(nb)と、含有結合軸番号(b)と、原子電荷(q)とによるデータ構造を有する。原子データ32aのデータ構造を、原子データ構造Aとする。
【0033】
結合フラグ(bf)は、結合軸を設定可能かどうかという状態を表すフラグである。例えば、結合フラグ(bf)の初期値をFとし、軌道数(m)と電子数(n)とがゼロであれが「F」、また、軌道数(m)か含有結合軸数(nb)がゼロでなく、含有結合軸番号(b)に関与する他の原子jについて結合フラグ(bf)が「F」となる結合が1つ、残りの結合はすべて「T」の場合には値を「C」とする。処理の過程において、他の原子jについて結合フラグ(bf)が「C」となる結合が1つ、残りの結合はすべて「T」の場合にも値を「C」とする。
【0034】
結合軸データ32bは、結合軸順序番号(b)と、ベクトル(v)と、結合次数(bt)と、両端原子番号(a)とによるデータ構造を有する。結合軸データ32bのデータ構造を、結合軸データ構造Bとする。
【0035】
元素データ33は、基準電子数設定(n0)と、基準軌道数設定(m0)と、結合半径(r)とによるデータ構造を元素毎に有する。元素データ33のデータ構造を、元素データ構造Elとする。
【0036】
図4のデータ構造30において、例えば、ある原子の原子データAの結合フラグbfは、「A−>bf」というポインタで表現できる。また、例えば、元素データ33について、各元素(iと表現する)について少なくともEl[i]−>r、El[i]−>n0、El[i]−>m0という要素を持つと表現できる。
【0037】
原子データ構造Aについて、原子順序番号A−>aは内部座標における識別番号である。原子元素番号A−>Nは元素記号もしくは元素の原子番号である。含有結合軸数A−>nbは原子が有する他原子との結合軸数である。A−>nbの値は、入力構造から原子半径El−>rを元に、原子対を成していると推定される結合軸の数を表す。結合軸識別番号A−>b[nb]は、結合軸数に含まれる各結合軸の含有結合軸番号bの集合データである。
【0038】
位置座標A−>c[3]は原子の3次元座標の各成分である。電子数A−>nは図3の処理動作によって初期値El−>n0から0にまで変動し得る。軌道数A−>mは図3の処理動作によって初期値El−>m0から0にまで変動し得る。
【0039】
結合フラグA−>bfは、結合軸を設定可能かどうかという状態を表すフラグである。設定例としてはA−>bfの初期値をFとし、A−>mとA−>nがゼロであればT、またA−>mかA−>nbがゼロでなく、A−>bに関与する他の原子jについてA[j]−>bfがFとなる結合が1つ、残りの結合はすべてTの場合には、値をCとする。またA−>qは原子上の電荷を表す。
【0040】
結合軸データ構造Bについて、結合軸順序番号B−>bは全ての結合軸を1対1対応させるために必要な識別番号である。両端原子番号B−>a[2]は、結合軸の両末端に存在する原子順序番号A−>aの部分集合データである。結合次数B−>btについて、初期値は0であり、図3の処理動作によって適切な結合次数へと変動する。ベクトルB−>vについては、結合軸を3次元ベクトルと1対1に対応させたものである。
【0041】
元素データ構造Elの各要素は、結合半径El−>r、基準電子数El−>n0、基準軌道数El−>m0と表される。
【0042】
図5は、データ構造の初期化処理を説明するためのフローチャート図である。図5において、CPU11は、分子データ構造M及び元素データ構造Elを構築する(ステップS11)。
【0043】
元素データ構造Elについて、例えば、原子番号1の水素から92のウランまで設定する場合には、元素データ構造ElについてEl[1:92]に必要な記憶領域を確保する。原子半径と基準電子数、基準軌道数については各元素に適切な値を設定する。例えば、原子半径El−>rは各元素のファンデアワールス半径とし、電子数El−>n0と軌道数El−>m0は最外殻の数値とする。この場合、水素原子についてはEl[1]−>n0=1、El[1]−>m0=1であり、炭素原子についてはEl[6]−>n0=4、El[6]−>m0=4、酸素原子についてはEl[8]−>n0=6、El[8]−>m0=4となる。
【0044】
分子データ構造Mについて、原子データ構造AへのポインタM−>A、及び結合軸データ構造BへのポインタM−>Bに必要な記憶領域を確保し、更に、全原子数M−>nと全結合軸数M−>nb用の記憶領域を確保する。よって、分子メイン32mの記憶領域が確保される。なお支障がなければポインタM−>A、及びM−>Bを設定しなくても良い。
【0045】
次に、CPU11は、原子の位置座標を入力し(ステップS12)、入力した原子の位置座標の個数に基づいて、原子数nを原子数M−>nに設定する(ステップS13)。そして、CPU11は、原子数n分の原子データ構造M−>A[1:M−>n]の記憶領域を確保する(ステップS14)。
【0046】
CPU11は、原子を順番に指定する原子順番変数i(以下、単に原子iと言う)をゼロに、また、含有結合軸数A−>nbをゼロに初期化する(ステップS15)。CPU11は、原子iを1増やして次の原子を指定し、原子iの結合対象となる原子jを原子iとし(ステップS16)、更に、結合対象の原子jを1増やしておく(ステップS17)。
【0047】
そして、CPU11は、原子iと原子jの距離が夫々の結合半径rから定まる閾値より小さいか否かを判断する(ステップS18)。閾値以上の場合、CPU11は、原子jを原子iの結合対象とせずにステップS17へ戻り、上述同様の処理を繰り返す。一方、閾値より小さい場合、CPU11は、結合軸数M−>nbを1増やす。
【0048】
そして、CPU11は、原子iに対する結合対象の原子jとして原子数M−>n分の処理を終了したか否かを判断する(ステップS20)。原子iに対する結合対象の原子j全てに対して処理を終了していない場合、CPU11は、ステップS14へ戻り、上述同様の処理を繰り返す。
【0049】
一方、原子iに対する結合対象の原子j全てに対して処理を終了した場合、CPU11は、原子数M−>nから1減算した個数分の原子i全てに対して処理を終了したか否かを更に判断する(ステップS21)。原子i全てに対して処理を終了していない場合、CPU11は、ステップS13へ戻り、上述同様の処理を繰り返す。
【0050】
一方、原子i全てに対して処理を終了した場合、含有結合軸数が決定したことになるため、CPU11は、含有結合軸数nb分の結合軸データ構造M−>B[1:M−>nb]の記憶領域を確保して(ステップS22)、このデータ構造の初期化処理を終了する。
【0051】
つまり、原子データ構造Aと結合軸データ構造B用の記憶領域に関しては、与えられた原子とその座標情報を元に生成される。先ず、原子データ構造Aに関しては原子数をM−>nに設定後、原子数分の原子データ構造A[1:M−>n]の記憶領域を確保する。次に、結合軸データ構造Bに関しては、原子の位置座標をA−>cに設定後、原子iと原子j間の距離を計算し、その距離が、原子iの結合半径El[A[i]−>N]−>rと原子jの結合半径El[A[j]−>N]−>rから定まる閾値よりも小さい場合に結合軸を持つとしてM−>nbの値を1増やす。この処理を全2原子間について実行することで、全結合軸数M−>nbが決まり、結合軸数分の結合軸データ構造B[1:M−>nb]の記憶領域を確保する。
【0052】
次に、分子の3次元構造構築処理の詳細フローについて図6から図8で説明する。図6、図7、及び図8は、分子の3次元構造構築処理の詳細フローを示す図である。図6から図8で、CPU11によって行われる結合次数設定に係る一連の処理が示される。
【0053】
(初期データ設定及びσ結合の設定)
先ず、ステップS31からステップS56における処理の概要を説明する。原子データの設定について、原子iの順序番号A[i]−>aには入力した順番号を設定する。原子番号A[i]−>Nには入力原子の原子番号を、座標A[i]−>cには入力原子のCartesian座標を設定する。また初期電子数にはA[i]−>n=E[A[i]−>N]−>n0を、初期軌道数にはA[i]−>m=El[A[i]−>N]−>m0を設定する。初期電荷についてはA[i]−>q=0とし、初期結合フラグについてはA[i]−>bf=Fとする。含有結合軸数および含有結合軸番号については、結合軸データBの初期設定と同時に設定する。
【0054】
結合軸データについては、原子iと原子jの距離が閾値以下と判定した原子間について、判定した順序で設定する。例えば結合軸がそれまでにk−1個設定されている場合に、原子iと原子jの距離が閾値以下と判定された場合には、ij間の結合軸をB[k]として設定する。ここでB[k]−>b=k、B[k]−>a[1]=i、B[k]−>a[2]=jと設定し、その他にA[i]−>nb=A[i]−>nb+1、A[j]−>nb=A[j]−>nb+1、A[i]−>b[nb]=k、A[j]−>b[nb]=kと設定する。
【0055】
結合軸の設定はσ結合の設定と同値と考え、原子iとjの軌道数と電子数を1ずつ減らし、結合軸kの結合次数を1増やす。具体的にはA[i]−>m=A[i]−>m−>1、A[j]−>m=A[j]−>m−1、A[i]−>n=A[i]−>n−>1、A[j]−>n=A[j]−>n−1、B[k]−>bt=1と設定する。設定後に原子iの電子数か軌道数が0になった場合には、A[i]−>bf=Tと設定する。また電子数も軌道数も0でなく、結合軸B[A[i]−>b]−>aに関与する他の原子A[B[A[i]−>b]−>a[1,2]]−>bfが「F」となるものが1つ、残りはすべて「T」の場合には、値を「C」に設定する。
【0056】
以下にステップ毎に詳述する。CPU11は、データ構造M、El、A、及びBを構築し(ステップS31)、原子の位置座標を読み込む(ステップS32)。そして、CPU11は、原子データ構造A[11:M−>n]に、配置された原子を所定順序番号に従って、各原子に関する値を含有結合軸番号A−>bを除いて設定する(ステップS33)。
【0057】
CPU11は、原子を順番に指定する原子順番変数i(以下、単に原子iと言う)をゼロに、また、結合軸を順番に指定する軸順番変数k(以下、単に結合軸kと言う)をゼロに初期化する(ステップS34)。CPU11は、原子iを1増やして次の原子を指定し、原子iの結合対象となる原子jを原子iとし(ステップS35)、更に、結合対象の原子jを1増やしておく(ステップS36)。
【0058】
そして、CPU11は、原子iと原子jの距離が夫々の結合半径rから定まる閾値より小さいか否かを判断する(ステップS37)。閾値以上の場合、CPU11は、原子jを原子iの結合対象とせずにステップS36へ戻り、上述同様の処理を繰り返す。一方、閾値より小さい場合、CPU11は、原子データ構造Aにおける、原子iと原子j間の軌道数m及び電子数nを1減算し(ステップS38)、原子iと原子j間の含有結合軸数nbを1増やす(ステップS39)。
【0059】
次に、CPU11は、結合軸kに1を加算して次の結合軸を指定する(ステップS40)。そして、CPU11は、結合軸kの結合次数B[k]−>btに1を設定し、原子iの含有結合軸番号A[i]−>b及び原子jの含有結合軸番号A[j]−>bに結合軸kを追加する(ステップS41)。
【0060】
CPU11は、原子iに対する結合対象の原子jとして原子数M−>n分の処理を終了したか否かを判断する(ステップS42)。原子iに対する結合対象の原子j全てに対して処理を終了していない場合、CPU11は、ステップS36へ戻り、上述同様の処理を繰り返す。
【0061】
一方、原子iに対する結合対象の原子j全てに対して処理を終了した場合、CPU11は、原子数M−>nから1減算した個数分の全ての原子iに対して処理を終了したか否かを更に判断する(ステップS43)。全ての原子iに対して処理を終了していない場合、CPU11は、ステップS35へ戻り、上述同様の処理を繰り返す。
【0062】
一方、全ての原子iに対して処理を終了した場合、含有結合軸数が決定したことになり、σ結合を設定するための処理(図3のステップS4)を行うために、CPU11は、原子iをゼロに初期化した後(ステップS44)、1加算して原子iを設定する(ステップS45)。
【0063】
CPU11は、原子データ構造Aにおいて、原子iの軌道数A[i]−>m又は電子数A[i]−>nの少なくとも一方がゼロであるか否かを判断する(ステップS46)。いずれもゼロでない場合、CPU11は、ステップS49へと進む。一方、少なくとも一方がゼロであるである場合、原子iの結合フラグA[i]−>bfを「T」に設定し(ステップS47)、原子iの結合フラグA[i]−>bfに「T」のみが設定されているか否かを判断する(ステップS48)。「T」以外を含む場合、CPU11は、ステップS43へと戻り、次の原子i+1について上述同様の処理を行う。
【0064】
一方、ステップS48にて、原子iの結合フラグA[i]−>bfに「T」のみが設定されている場合は、CPU11は、原子iに対する結合対象の原子jをゼロに初期化し、原子iの含有結合軸数A−>nbを結合軸kに設定する(ステップS49)。
【0065】
そして、CPU11は、jを1増加させた原子jを原子iに対する次の結合対象とする(ステップS50)。CPU11は、原子iの結合対象としての原子jの含有結合軸番号bによって特定される結合軸の両端原子番号aに関し、原子データ構造Aの結合フラグbfに「T」が含まれているか否かを判断する(ステップS51)。CPU11は、「T」が含まれていない場合、ステップS50へ戻り、次の結合対象について上述同様の処理を行う。
【0066】
一方、ステップS51にて、原子データ構造Aの結合フラグbfに「T」が含まれていると判断した場合、CPU11は、結合軸kを1減算し(ステップS52)、原子jが原子iの含有結合軸数A−>nbに一致するか否かを判断することによって、全ての含有結合軸について処理を終了したか否かを判断する(ステップS53)。一致しない場合、CPU11は、ステップS50へ戻り、上述同様の処理を行う。
【0067】
一方、ステップS53にて、CPU11は、結合軸kが1であるか否かを判断する(ステップS54)。結合軸kが1でない場合、CPU11は、ステップS56へと進む。一方、結合軸kが1の場合、CPU11は、原子iの結合フラグA[i]−>bfに「C」を設定する(ステップS55)。そして、CPU11は、原子iが原子数M−>nに一致するか否かを判断することによって、全ての原子iについて処理を終了したか否かを判断する(ステップS56)。終了していない場合、CPU11は、ステップS45に戻り、上述同様の処理を行う。
【0068】
(孤立電子対の設定)
先ず、ステップS57からステップS63における処理の概要を説明する。σ結合の設定が終了した後、原子iについて軌道数1に対し電子数が2確保できる場合には、A[i]−>m=A[i]−>m−1、A[i]−>n=A[i]−>n−2と設定する。この処理を繰り返し、もし軌道数か電子数が0になった場合にはA[i]−>bt=Tと設定する。
【0069】
以下にステップ毎に詳述する。全ての原子iに対して処理を終了した場合、軸端原子対の1軌道1電子ずつをσ結合に設定したことになり、軸端原子の1軌道2電子を孤立電子対に設定するための処理(図3のステップS5)を行うために、CPU11は、原子iをゼロに初期化した後(ステップS57)、1加算して原子iを設定する(ステップS58)。
【0070】
CPU11は、原子iの、軌道数A[i]−>m−1がゼロ以上、かつ、電子数A[i]−>n−2がゼロ以上であるか否かを判断することによって、軸端原子の1軌道2電子を孤立電子対が存在するか否かを判断する(ステップS59)。片方又は両方がゼロ以上でない場合、CPU11は、孤立電子対が存在しないと判断し、ステップS62へと進む。一方、両方がゼロ以上である場合、CPU11は、孤立電子対が存在すると判断し、原子iから1軌道2電子を減算する(ステップS60)。すなわち、原子iの軌道数A[i]−>mから1減算し、電子数A[i]−>nから2減算する。
【0071】
そして、CPU11は、原子iが原子数M−>nに一致するか否かを判断することによって、全ての原子iについて処理を終了したか否かを判断する(ステップS61)。終了していない場合、CPU11は、ステップS58に戻り、上述同様の処理を行う。全ての原子iに対して処理を終了した場合、CPU11は、原子iの軌道数A[i]−>mがゼロ、又は、電子数A[i]−>nがゼロであるか否かを判断する(ステップS62)。いずれもゼロでないと判断した場合、CPU11は、ステップS64へと進む。いずれか一方がゼロである場合、CPU11は、原子iの結合フラグA[i]−>bfに「T」を設定する(ステップS63)。
【0072】
(π結合の設定及び原子電荷の設定)
先ず、ステップS64からステップS114における処理の概要を説明する。孤立電子対用に軌道数と電子数を減らした後、結合軸iについて、結合両端原子B[i]−>a[1]、B[i]−>a[2]の結合フラグA[B[i]−>a[1]]−>bfまたはA[B[i]−>a[2]]−>bfが「C」か「F」であり、かつ両端原子の軌道数と電子数が0でないならばA[B[i]−>a[1]]−>m=A[B[i]−>a[1]]−>m−1、A[B[i]−>a[2]]−>m=A[B[i]−>a[2]]−>m−1、A[B[i]−>a[1]]−>n=A[B[i]−>a[1]]−>n−1、A[B[i]−>a[2]]−>n=A[B[i]−>a[2]]−>n−1と設定し、結合次数についてもB[i]−>bt=B[i]−>bt+1と設定する。各原子の軌道数と電子数が0になる場合にはその原子の結合フラグを「T」に設定する。もし結合両端原子の結合フラグに「C」が存在しない場合には、結合フラグが両方とも「F」の結合軸に関して、上記処理を実施する。
【0073】
その後、原子iの電子数も軌道数も0でなく、結合軸B[A[i]−>b]−>aに関与する他の原子A[B[A[i]−>b]−>a[1,2]]−>bfがFとなるものが1つ、残りはすべてTの場合には、値を「C」に設定する。これまでの処理を繰り返し、最終的に結合両端原子の結合フラグについて、「C」か「F」で構成される組が存在しなくなるまで処理を実施する。原子iについて電子数が0で軌道数が0でない場合、A[i]−>q=A[i]−>m、A[i]−>m=0、A[i]−>bf=Tと設定する。逆に軌道数が0で電子数が0でない場合、A[i]−>q=A[i]−>n*(−1)、A[i]−>n=0、A[i]−>bf=Tと設定する。軌道数と電子数のどちらも0でない場合には、どちらかが0になるまでそれぞれの値を減らし、その後で上記の電荷設定処理を実施する。
【0074】
以下にステップ毎に詳述する。全ての原子iについて軸端原子の1軌道2電子を孤立電子対として設定する処理を終了し、次に、軸端原子対の1軌道1電子ずつをπ結合に設定するための処理(図3のステップS6)を行うために、CPU11は、結合軸i及び変数lをゼロに初期化した後(ステップS64)、1加算して結合軸iを設定する(ステップS65)。CPU11は、結合軸iの両端原子番号aの各々に関し、原子データ構造Aの結合フラグbfに「C」及び「F」が在るか否かを判断する(ステップS66)。「C」及び「F」が在る場合、CPU11は、ステップS65へ戻り、次の結合軸i+1について上述同様の処理を行う。
【0075】
一方、「C」及び「F」がない場合、CPU11は、変数lに1を設定する(ステップS67)。CPU11は、結合軸iの両端原子の軌道数A[B[i]−>a[1,2]]−>m夫々から1ずつ減算し(ステップS68)、また、結合軸iの両端原子の軌道数A[B[i]−>a[1,2]]−>n夫々から1ずつ減算する(ステップS69)。そして、CPU11は、結合軸iの結合次数B[i]−>btを1加算する(ステップS70)。
【0076】
続けて、CPU11は、両端原子の一方の軌道数A[B[i]−>a[1]]−>m又は電子数A[B[i]−>a[1]]−>nがゼロか否かを判断する(ステップS71)。いずれもゼロでない場合、CPU11は、ステップS73へと進む。一方、いずれか一方がゼロの場合、CPU11は、その一方の原子の結合フラグA[B[i]−>a[1]]−>bfに「T」を設定する(ステップS72)。
【0077】
更に、CPUは、両端原子の他方の軌道数A[B[i]−>a[2]]−>m又は電子数A[B[i]−>a[2]]−>nがゼロか否かを判断する(ステップS73)。いずれもゼロでない場合、CPU11は、ステップS75へと進む。一方、いずれか一方がゼロの場合、CPU11は、その他方の原子の結合フラグA[B[i]−>a[2]]−>bfに「T」を設定する(ステップS74)。
【0078】
そして、CPU11は、両端原子夫々の結合フラグA[B[i]−>a[1,2]]−>bfに「T」が含まれているか否かを判断する(ステップS75)。「T」が含まれていない場合、CPU11は、ステップS68へ戻り、上述同様の処理を行う。一方、「T」が含まれている場合、CPU11は、全ての含有結合軸M−>nbについて処理を終了したか否かを判断する(ステップS76)。終了していない場合、CPU11は、ステップS66へ戻り、上述同様の処理を行う。一方、終了している場合、CPU11は、変数lがゼロであるか否かを判断する(ステップS77)。ゼロの場合、CPU11は、ステップS91へと進む。
【0079】
一方、ゼロでない場合、CPU11は、原子iをゼロに初期化して(ステップS78)、1加算して原子iを設定する(ステップS79)。
【0080】
CPU11は、原子iの原子データ構造Aにおいて、軌道数A[i]−>m又は電子数A[i]−>nの少なくとも一方がゼロであるか否かを判断する(ステップS80)。いずれもゼロでない場合、CPU11は、ステップS83へと進む。一方、少なくとも一方がゼロであるである場合、原子iの結合フラグA[i]−>bfを「T」に設定し(ステップS81)、原子iの結合フラグA[i]−>bfに「T」のみが設定されているか否かを判断する(ステップS82)。「T」以外を含む場合、CPU11は、ステップS79へと戻り、次の原子i+1について上述同様の処理を行う。
【0081】
一方、ステップS82にて、原子iの結合フラグA[i]−>bfに「T」のみが設定されている場合は、CPU11は、原子iに対する結合対象の原子jをゼロに初期化し、原子iの含有結合軸数A−>nbを結合軸kに設定する(ステップS83)。
【0082】
そして、CPU11は、jを1増加させた原子jを原子iに対する次の結合対象とする(ステップS84)。CPU11は、原子iの結合対象としての原子jの含有結合軸番号bによって特定される結合軸の両端原子番号aに関し、原子データ構造Aの結合フラグbfに「T」が含まれているか否かを判断する(ステップS85)。CPU11は、「T」が含まれていない場合、ステップS84へ戻り、次の結合対象について上述同様の処理を行う。
【0083】
一方、ステップS85にて、原子データ構造Aの結合フラグbfに「T」が含まれていると判断した場合、CPU11は、結合軸kを1減算し(ステップS86)、原子jが原子iの含有結合軸数A−>nbに一致するか否かを判断することによって、全ての含有結合軸について処理を終了したか否かを判断する(ステップS87)。一致しない場合、CPU11は、ステップS84へ戻り、上述同様の処理を行う。
【0084】
一方、ステップS87にて、CPU11は、結合軸kが1であるか否かを判断する(ステップS88)。結合軸kが1でない場合、CPU11は、ステップS90へと進む。一方、結合軸kが1の場合、CPU11は、原子iの結合フラグA[i]−>bfに「C」を設定する(ステップS89)。そして、CPU11は、原子iが原子数M−>nに一致するか否かを判断することによって、全ての原子iについて処理を終了したか否かを判断する(ステップS90)。終了していない場合、CPU11は、ステップS79に戻り、上述同様の処理を行う。
【0085】
全ての原子iに対して処理を終了した場合、CPU11は、結合軸iをゼロに初期化した後(ステップS91)、1加算して結合軸iを設定する(ステップS92)。CPU11は、結合軸iの両端原子番号aの各々に関し、原子データ構造Aの結合フラグbfが「F」であるか否かを判断する(ステップS93)。「F」である場合、CPU11は、ステップS92へ戻り、次の結合軸i+1について上述同様の処理を行う。
【0086】
一方、「F」である場合、CPU11は、変数lに1を設定する(ステップS94)。CPU11は、CPU11は、結合軸iの両端原子の軌道数A[B[i]−>a[1,2]]−>m夫々から1ずつ減算し(ステップS95)、また、結合軸iの両端原子の軌道数A[B[i]−>a[1,2]]−>n夫々から1ずつ減算する(ステップS96)。そして、CPU11は、結合軸iの結合次数B[i]−>btを1加算する(ステップS97)。
【0087】
続けて、CPU11は、両端原子の一方の軌道数A[B[i]−>a[1]]−>m又は電子数A[B[i]−>a[1]]−>nがゼロか否かを判断する(ステップS98)。いずれもゼロでない場合、CPU11は、ステップS73へと進む。一方、いずれか一方がゼロの場合、CPU11は、その一方の原子の結合フラグA[B[i]−>a[1]]−>bfに「T」を設定する(ステップS99)。
【0088】
更に、CPUは、両端原子の他方の軌道数A[B[i]−>a[2]]−>m又は電子数A[B[i]−>a[2]]−>nがゼロか否かを判断する(ステップS100)。いずれもゼロでない場合、CPU11は、ステップS75へと進む。一方、いずれか一方がゼロの場合、CPU11は、その他方の原子の結合フラグA[B[i]−>a[2]]−>bfに「T」を設定する(ステップS101)。
【0089】
そして、CPU11は、両端原子夫々の結合フラグA[B[i]−>a[1,2]]−>bfに「T」が含まれているか否かを判断する(ステップS02)。「T」が含まれていない場合、CPU11は、ステップS95へ戻り、上述同様の処理を行う。CPU11は、変数lがゼロであるか否かを判断する(ステップS03)。ゼロでない場合、CPU11は、ステップS78へと戻り、上述同様の処理を行う。
【0090】
一方、ゼロの場合、CPU11は、原子iをゼロに初期化して(ステップS104)、1加算して原子iを設定し(ステップS105)、電子数と軌道数の残りから原子電荷を設定するための処理(図3のステップS7)を行う。
【0091】
CPU11は、原子iの原子データ構造Aにおいて、軌道数A[i]−>mはゼロではなく、かつ、電子数A[i]−>nがゼロであるが成立するかを判断する(ステップS106)。不成立の場合、CPU11は、ステップS108へと進む。成立する場合、CPU11は、原子iの原子電荷A[i]−>qに軌道数A[i]−>m*1を設定して、軌道数A[i]−>mをゼロにする(ステップS107)。原子iの電荷として軌道数が設定される。
【0092】
CPU11は、原子iの原子データ構造Aにおいて、軌道数A[i]−>mはゼロであり、かつ、電子数A[i]−>nがゼロではないが成立するかを判断する(ステップS108)。不成立の場合、CPU11は、ステップS110へと進む。成立する場合、CPU11は、原子iの原子電荷A[i]−>qに電子数A[i]−>n*(−1)を設定して、電子数A[i]−>nをゼロにする(ステップS109)。原子iの電荷として負の電子数が設定される。
【0093】
CPU11は、原子iの原子データ構造Aにおいて、軌道数A[i]−>mはゼロではなく、かつ、電子数A[i]−>nがゼロではないが成立するかを判断する(ステップS110)。不成立の場合、CPU11は、ステップS112へと進む。成立する場合、CPU11は、原子iの軌道数A[i]−>mを1減算し、また、電子数A[i]−>nを1減算にする(ステップS111)。
【0094】
CPU11は、原子iの軌道数A[i]−>mがゼロ、かつ、電子数A[i]−>nがゼロであるが成立するかを判断する(ステップS112)。成立しない場合、CPU11は、ステップS106へ戻り、上述同様の処理を行う。不成立の場合、CPU11は、原子iの結合フラグbfに「T」を設定する(ステップS113)。
【0095】
そして、CPU11は、分子Mの原子数M−>nの原子i全てに対して処理を終了したか否かを判断する(ステップS114)。CPU11は、原子i全てに対して処理を終了していない場合、ステップS105に戻り、上述同様の処理を行う。一方、原子i全てに対して処理を終了した場合、CPU11は、この処理を終了する。
【0096】
(結合次数の設定)
σ結合毎に加算された結合次数(ステップS70)、及び、π結合毎に加算された結合次数(ステップS97)によって、原子対間の全結合数が軸の結合次数として設定される。
【0097】
[実施例1]
次に、上述した分子の3次元構造構築処理による実施例を説明する。先ず、実施例1として、図9に示すように、C2H4(エチレン)の原子配置80に対して、元素Cが2次結合された結合結果89が、上述した分子の3次元構造構築処理によって自動的に正しく得られることを図10で説明する。
【0098】
図10は、C2H4(エチレン)の場合の状態遷移例を示す図である。図10中、データ構造30に基づいて記憶領域に展開された情報のうち、各状態の説明に必要な部分をテーブルT10で示し、理解を容易にするため、状態遷移毎のテーブルT10に対応させて結合次数が設定される様子を例示させている。
【0099】
<状態1>
図10において、図9に示すようなC2H4(エチレン)の原子配置80がユーザによって成されると、CPU11は、この原子配置80用にデータ構造30をテーブルT10として記憶領域内に構築し、原子データ構造Aを作成した段階である。原子はA[1]からA[6]まで、原子順序番号については例えばA[1]−>N=6のように設定されている。この段階ではまだ結合軸データ構造Bは記憶領域のみ確保された段階である。
【0100】
<状態2>
原子A[1]と原子A[2]の距離が閾値以下と判断されて、テーブルT10に最初の結合軸が設定された段階である。結合軸B[1]は同時にσ結合の設定をB[1]−>bt=1で意味し、結合形成のために両端原子A[1]とA[2]の軌道数と電子数は1ずつ減少している。
【0101】
<状態3>
原子A[1]と原子A[3]の距離が閾値以下と判定されて、テーブルT10に結合軸B[2]が設定された段階である。この時、B[2]−>bt=1となり、両端原子の軌道数と電子数は1ずつ減少している。ここで、A[3]−>m=0、A[3]−>n=0となったため、A[3]−>bf=Tと設定される。
【0102】
<状態4>
原子A[1]と原子A[4]の距離が閾値以下と判定されて、テーブルT10に結合軸B[3]が設定された段階である。この時、B[3]−>bt=1となり、両端原子の軌道数と電子数は1ずつ減少している。ここで、A[3]−>m=0、A[3]−>n=0となったため、A[3]→bf=Tと設定される。さらにこの時、A[1]−>m=1、A[1]−>n=1とどちらも0でなく、A[1]の属する結合軸の逆端原子A[3]、A[4]の結合フラグが「T」となっている。逆端原子の結合フラグが「T」でないのは原子A[2]のみであるため、A[1]−>bf=Cと設定される。
【0103】
<状態5>
原子A[2]とA[5]の距離が閾値以下と判定されて、テーブルT10に結合軸B[4]が設定された段階である。この時、B[5]−>bt=1となり、両端原子の軌道数と電子数は1ずつ減少している。ここでA[5]−>m=0、A[5]−>n=0となったため、A[5]−>bf=Tと設定される。
【0104】
<状態6>
原子A[2]と原子A[6]の距離が閾値以下と判定されて、テーブルT10に結合軸B[5]が設定された段階である。この時、B[6]−>bt=1となり、両端原子の軌道数と電子数は1ずつ減少している。ここで、A[6]−>m=0、A[6]−>n=0となったため、A[6]−>bf=Tと設定される。さらにこの時、A[2]−>m=1、A[2]−>n=1とどちらも0でなく、A[2]の属する結合軸の逆端原子A[5]、A[6]の結合フラグが「T」となっている。逆端原子の結合フラグが「T」でないのはA[1]のみであるため、A[2]−>bf=Cと設定される。
【0105】
<状態7>
結合軸B[1]の両端原子A[1]とA[2]について、結合フラグが両方ともCであることから、テーブルT10にπ結合を設定する段階である。具体的には、軌道数と電子数を1ずつ減少し、結合次数B[1]−>btは1増大して2に設定される。この時、A[1]−>m=0、A[1]−>n=0、A[2]−>m=0、A[2]−>n=0であることから、A[1]−>bf=T、A[2]−>bf=Tに設定される。
【0106】
従って、テーブルT10によって、図9に示すような適切に結合次数が設定された結合結果89を得ることが可能なことを確認できる。
【0107】
[実施例2]
次に、実施例2として、C6H5CHO(ベンズアルデヒド)の原子配置90に対して、結合次数が設定された結合結果99が、上述した分子の3次元構造構築処理によって自動的に正しく得られることを図11で説明する。
【0108】
図11は、C6H5CHO(ベンズアルデヒド)の場合の状態遷移例を示す図である。図11中、データ構造30に基づいて記憶領域に展開された情報のうち、各状態の説明に必要な部分をテーブルT11で示し、理解を容易にするため、状態遷移毎のテーブルT10に対応させて結合次数が設定される様子を例示させている。
【0109】
<状態1>
図11において、C6H5CHO(ベンズアルデヒド)の原子配置90がユーザによって成されると、CPU11は、この原子配置90用にデータ構造30をテーブルT11として記憶領域内に構築し、原子データ構造Aを作成した段階である。原子はA[1]からA[14]まで、原子順序番号については例えばA[1]−>N=6のように設定されている。この段階ではまだ結合軸データ構造Bは記憶領域のみ確保された段階である。
【0110】
<状態2>
図10と同様の処理により各原子間距離が閾値以下と判定されて、σ結合が設定された段階である。14個の結合軸について、結合次数はB[1:14]−>bt=1と設定されている。また炭素原子の軌道数と電子数はすべて1となり、水素原子の軌道数と電子数はすべて0となる。そのため水素原子の結合フラグはすべて「T」と設定されている。この時、酸素原子A[8]についてはA[8]−>m=3、A[8]−>n=5、A[8]−>bf=Cと設定されている。ここまでは図10の処理とまったく同様に進めることができる。
【0111】
<状態3>
酸素原子の軌道数1に対して電子数2となる組を2つ考慮することができることから、考慮した数の組を孤立電子対として減少させた段階である。具体的にはA[8]−>m=A[8]−>m−2=1、A[8]−>n=A[8]−>n−2*2=−>1と設定される。
【0112】
<状態4>
両端原子の結合フラグの組が「C」と「F」の組であるB[8]について、π結合が設定された段階である。具体的にはB[8]−>bt=B[8]−>bt+1=2と設定され、両端原子A[7]とA[8]の軌道数と電子数が1ずつ減少される。結果としてA[7]−>m=0、A[7]−>n=0、A[8]−>m=0、A[8]−>n=0と設定され、この時A[7]−>bf=T、A[8]−>bf=Tと設定される。
【0113】
<状態5>
両端原子の結合フラグの組が「F」同士の組である結合軸についてπ結合が設定され、その後で「C」と「F」による組の結合軸についてπ結合が設定され、「C」か「F」の組である結合軸が存在しなくなるまでπ結合の設定を進めた段階である。具体的にはすべての原子について、軌道数と電子数が0と設定され、結合フラグは「T」と設定されている。
【0114】
<状態6>
従って、テーブルT11によって、適切に結合次数が設定された結合結果99を得ることが可能なことを確認できる。
【0115】
以上より、分子構造構築システムにおいて、上述した分子の3次元構造構築処理によって、各原子が末端か否かを原子データ構造Aの結合フラグbfを利用して判定することによって、末端からπ結合の設定を行うことができ、共役系の結合次数を矛盾なく設定することができる。
【0116】
従来手法を用いた場合と異なり、分子構造の構築に関して、例えば、マウスによる結合軸の選択、結合次数の選択、結合軸の選択解除などのユーザによる操作数を削減し、特に巨大分子系における構造の変更設定など、個別の選択操作に困難を生じる系の分子設計を容易に進めることが可能になる。また付随して、従来手法で生じる結合次数設定ミスによる分子物性計算の異常動作を解消し、計算への連携をスムーズに進めることも可能になる。
【0117】
従って、分子構造をGUIなどで構築する際に、各原子に設定されている原子の軌道数と電子数の情報に基づき、各原子間の結合に対して結合次数を自動判定でき、高分子であってもユーザに負担をかけることなく分子設計を容易とし、更には分子物性計算などについても正常動作を可能とする。
【0118】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【0119】
11 CPU
12 メモリユニット
13 表示ユニット
14 出力ユニット
15 入力ユニット
16 通信ユニット
17 記憶装置
18 ドライバ
19 記憶媒体
30 データ構造
80、90 原子配置
89、99 結合結果
100 分子構造構築システム
T10、T11 テーブル
【特許請求の範囲】
【請求項1】
分子の原子配置に基づいて、配置された原子毎に電子数及び軌道数と結合後の末端状態を示す結合フラグとを対応させた原子データ構造と、原子間を結合する結合軸毎に結合次数を対応させた結合軸データ構造とを少なくとも有するデータ構造を記憶した記憶領域と、
前記原子間を結合可能な距離閾値に従ってσ結合を行い、前記結合次数を1加算し、該σ結合された原子の電子数及び軌道数を1ずつ減算し、該減算によって末端原子になると前記結合フラグを更新するσ結合手段と、
前記結合フラグを参照して、第一原子に前記σ結合される第二原子のうち、一の第二原子を残して他第二原子が末端である場合、該第一原子と該一の第二原子とにπ結合を行い、該電子数及び軌道数を1ずつ減算し、前記結合次数を1加算するπ結合手段と、
を有することを特徴とする分子構造構築システム。
【請求項2】
前記データ構造は、更に、元素毎に少なくとも結合半径を対応させた元素データ構造を有し、
前記距離閾値は、前記原子間の距離が各元素の前記結合半径に基づいて定められる前記閾値であることを特徴とする請求項1記載の分子構造構築システム。
【請求項3】
前記σ結合された2原子の各原子に対して、孤立電子対として電子数2に対して軌道数1の割合で、前記原子データ構造における該各原子の前記電子数及び前記軌道数を減算する孤立電子対処理手段を有することを特徴とする請求項1又は2記載の分子構造構築システム。
【請求項4】
前記原子間の前記σ結合及び前記π結合後の前記電子数及び前記軌道数を用いて原子電荷を設定する原子電荷設定手段を有することを特徴とする付記1乃至3のいずれか一項記載の分子構造構築システム。
【請求項5】
前記原子間の前記σ結合及び前記π結合を、前記結合次数を示して表示ユニットに表示させる結合結果表示手段を有することを特徴とする請求項1乃至4のいずれか一項記載の分子構造構築システム。
【請求項6】
コンピュータが分子構造を構築する分子構造構築方法であって、該コンピュータは、
分子の原子配置に基づいて、配置された原子毎に電子数及び軌道数と結合後の末端状態を示す結合フラグとを対応させた原子データ構造と、原子間を結合する結合軸毎に結合次数を対応させた結合軸データ構造とを少なくとも有するデータ構造を記憶した記憶領域を有し、
前記原子間を結合可能な距離閾値に従ってσ結合を行い、前記結合次数を1加算し、該σ結合された原子の電子数及び軌道数を1ずつ減算し、該減算によって末端原子になると前記結合フラグを更新するσ結合手順と、
前記結合フラグを参照して、第一原子に前記σ結合される第二原子のうち、一の第二原子を残して他第二原子が末端である場合、該第一原子と該一の第二原子とにπ結合を行い、該電子数及び軌道数を1ずつ減算し、前記結合次数を1加算するπ結合手順と、
を実行することを特徴とする分子構造構築方法。
【請求項7】
分子構造を構築する分子構造構築装置としてコンピュータを機能させるためのコンピュータ実行可能なプログラムであって、該コンピュータに、
分子の原子配置に基づいて、配置された原子毎に電子数及び軌道数と結合後の末端状態を示す結合フラグとを対応させた原子データ構造と、原子間を結合する結合軸毎に結合次数を対応させた結合軸データ構造とを少なくとも有するデータ構造を記憶領域に生成するデータ構造生成手順と、
前記原子間を結合可能な距離閾値に従ってσ結合を行い、前記結合次数を1加算し、該σ結合された原子の電子数及び軌道数を1ずつ減算し、該減算によって末端原子になると前記結合フラグを更新するσ結合手順と、
前記結合フラグを参照して、第一原子に前記σ結合される第二原子のうち、一の第二原子を残して他第二原子が末端である場合、該第一原子と該一の第二原子とにπ結合を行い、該電子数及び軌道数を1ずつ減算し、前記結合次数を1加算するπ結合手順と、
を実行させることを特徴とするコンピュータ実行可能なプログラム。
【請求項8】
分子構造を構築する分子構造構築装置としてコンピュータを機能させるためのプログラムを記憶したコンピュータ読取可能な記憶媒体であって、該コンピュータに、
分子の原子配置に基づいて、配置された原子毎に電子数及び軌道数と結合後の末端状態を示す結合フラグとを対応させた原子データ構造と、原子間を結合する結合軸毎に結合次数を対応させた結合軸データ構造とを少なくとも有するデータ構造を記憶領域に生成するデータ構造生成手順と、
前記原子間を結合可能な距離閾値に従ってσ結合を行い、前記結合次数を1加算し、該σ結合された原子の電子数及び軌道数を1ずつ減算し、該減算によって末端原子になると前記結合フラグを更新するσ結合手順と、
前記結合フラグを参照して、第一原子に前記σ結合される第二原子のうち、一の第二原子を残して他第二原子が末端である場合、該第一原子と該一の第二原子とにπ結合を行い、該電子数及び軌道数を1ずつ減算し、前記結合次数を1加算するπ結合手順と、
を実行させることを特徴とするコンピュータ読取可能な記憶媒体。
【請求項1】
分子の原子配置に基づいて、配置された原子毎に電子数及び軌道数と結合後の末端状態を示す結合フラグとを対応させた原子データ構造と、原子間を結合する結合軸毎に結合次数を対応させた結合軸データ構造とを少なくとも有するデータ構造を記憶した記憶領域と、
前記原子間を結合可能な距離閾値に従ってσ結合を行い、前記結合次数を1加算し、該σ結合された原子の電子数及び軌道数を1ずつ減算し、該減算によって末端原子になると前記結合フラグを更新するσ結合手段と、
前記結合フラグを参照して、第一原子に前記σ結合される第二原子のうち、一の第二原子を残して他第二原子が末端である場合、該第一原子と該一の第二原子とにπ結合を行い、該電子数及び軌道数を1ずつ減算し、前記結合次数を1加算するπ結合手段と、
を有することを特徴とする分子構造構築システム。
【請求項2】
前記データ構造は、更に、元素毎に少なくとも結合半径を対応させた元素データ構造を有し、
前記距離閾値は、前記原子間の距離が各元素の前記結合半径に基づいて定められる前記閾値であることを特徴とする請求項1記載の分子構造構築システム。
【請求項3】
前記σ結合された2原子の各原子に対して、孤立電子対として電子数2に対して軌道数1の割合で、前記原子データ構造における該各原子の前記電子数及び前記軌道数を減算する孤立電子対処理手段を有することを特徴とする請求項1又は2記載の分子構造構築システム。
【請求項4】
前記原子間の前記σ結合及び前記π結合後の前記電子数及び前記軌道数を用いて原子電荷を設定する原子電荷設定手段を有することを特徴とする付記1乃至3のいずれか一項記載の分子構造構築システム。
【請求項5】
前記原子間の前記σ結合及び前記π結合を、前記結合次数を示して表示ユニットに表示させる結合結果表示手段を有することを特徴とする請求項1乃至4のいずれか一項記載の分子構造構築システム。
【請求項6】
コンピュータが分子構造を構築する分子構造構築方法であって、該コンピュータは、
分子の原子配置に基づいて、配置された原子毎に電子数及び軌道数と結合後の末端状態を示す結合フラグとを対応させた原子データ構造と、原子間を結合する結合軸毎に結合次数を対応させた結合軸データ構造とを少なくとも有するデータ構造を記憶した記憶領域を有し、
前記原子間を結合可能な距離閾値に従ってσ結合を行い、前記結合次数を1加算し、該σ結合された原子の電子数及び軌道数を1ずつ減算し、該減算によって末端原子になると前記結合フラグを更新するσ結合手順と、
前記結合フラグを参照して、第一原子に前記σ結合される第二原子のうち、一の第二原子を残して他第二原子が末端である場合、該第一原子と該一の第二原子とにπ結合を行い、該電子数及び軌道数を1ずつ減算し、前記結合次数を1加算するπ結合手順と、
を実行することを特徴とする分子構造構築方法。
【請求項7】
分子構造を構築する分子構造構築装置としてコンピュータを機能させるためのコンピュータ実行可能なプログラムであって、該コンピュータに、
分子の原子配置に基づいて、配置された原子毎に電子数及び軌道数と結合後の末端状態を示す結合フラグとを対応させた原子データ構造と、原子間を結合する結合軸毎に結合次数を対応させた結合軸データ構造とを少なくとも有するデータ構造を記憶領域に生成するデータ構造生成手順と、
前記原子間を結合可能な距離閾値に従ってσ結合を行い、前記結合次数を1加算し、該σ結合された原子の電子数及び軌道数を1ずつ減算し、該減算によって末端原子になると前記結合フラグを更新するσ結合手順と、
前記結合フラグを参照して、第一原子に前記σ結合される第二原子のうち、一の第二原子を残して他第二原子が末端である場合、該第一原子と該一の第二原子とにπ結合を行い、該電子数及び軌道数を1ずつ減算し、前記結合次数を1加算するπ結合手順と、
を実行させることを特徴とするコンピュータ実行可能なプログラム。
【請求項8】
分子構造を構築する分子構造構築装置としてコンピュータを機能させるためのプログラムを記憶したコンピュータ読取可能な記憶媒体であって、該コンピュータに、
分子の原子配置に基づいて、配置された原子毎に電子数及び軌道数と結合後の末端状態を示す結合フラグとを対応させた原子データ構造と、原子間を結合する結合軸毎に結合次数を対応させた結合軸データ構造とを少なくとも有するデータ構造を記憶領域に生成するデータ構造生成手順と、
前記原子間を結合可能な距離閾値に従ってσ結合を行い、前記結合次数を1加算し、該σ結合された原子の電子数及び軌道数を1ずつ減算し、該減算によって末端原子になると前記結合フラグを更新するσ結合手順と、
前記結合フラグを参照して、第一原子に前記σ結合される第二原子のうち、一の第二原子を残して他第二原子が末端である場合、該第一原子と該一の第二原子とにπ結合を行い、該電子数及び軌道数を1ずつ減算し、前記結合次数を1加算するπ結合手順と、
を実行させることを特徴とするコンピュータ読取可能な記憶媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2011−198221(P2011−198221A)
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【出願番号】特願2010−66012(P2010−66012)
【出願日】平成22年3月23日(2010.3.23)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【出願日】平成22年3月23日(2010.3.23)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]