tkatomsiteobject プログラム仕様

原子サイトオブジェクトを管理するモジュール。

このモジュールは、結晶構造内の原子サイトを表す tkAtomSiteObject クラスを提供します。 原子のタイプ、位置、電荷、占有率などの詳細な情報をカプセル化し、 それらの属性を設定・取得するためのインターフェースを提供します。 原子サイトは、結晶構造モデリングやシミュレーションにおいて基本的な構成要素となります。

関連リンク: tkatomsiteobject.py ライブラリ技術ドキュメント

tklib.tkcrystal.tkatomsiteobject.Round01(x)[ソース]

数値を0.0から1.0の範囲に丸めます。

概要:

数値を0.0から1.0の範囲に丸め、特に1.0や0.0に近い値を正確に扱います。

詳細説明:

入力値 x が1.0または0.0に非常に近い場合、それぞれ1.0または0.0を返します。 それ以外の場合、x の小数部分を返します。 x が1.0より大きい場合は x - int(x)、1.0より小さいが0.0より大きい場合は x - int(x) + 1.0 を計算し、 結果が常に0.0から1.0の範囲に収まるようにします。

パラメータ:

x -- float: 丸める対象の数値。

戻り値:

float: 0.0から1.0の範囲に丸められた数値。

tklib.tkcrystal.tkatomsiteobject.RoundParameter(x, tol)[ソース]

数値を指定された許容誤差の倍数に丸めます。

概要:

数値を指定された許容誤差の倍数に丸めます。

詳細説明:

この関数は、入力値 xtol の倍数に丸めます。 内部的には (x + 0.1 * tol) / tol を整数に変換し、再度 tol を乗算することで丸め処理を行います。 この丸めは、一般的な四捨五入とは異なる振る舞いをする可能性があります。

パラメータ:
  • x -- float: 丸める対象の数値。

  • tol -- float: 丸めの基準となる許容誤差(単位)。

戻り値:

float: 丸められた数値。

class tklib.tkcrystal.tkatomsiteobject.tkAtomSiteObject(atomtype=None, label=None, name='', charge=None, pos=[], force=None, velocity=None, occ=1.0, m=1, ws=None, hydrogen=None, **args)[ソース]

ベースクラス: tkObject

結晶構造における原子サイトの情報を保持するクラス。

概要:

結晶構造における単一の原子サイト(原子の位置とその属性)を表すオブジェクトです。

詳細説明:

このクラスは、原子のタイプ、ラベル、名前、電荷、座標、力、速度、占有率、多重度、 Wyckoff位置、水素原子の有無などの情報をカプセル化します。 これらの属性を設定・取得するためのメソッドを提供し、原子サイトの管理を容易にします。 tklib.tkobject.tkObject を継承しています。

AtomName()[ソース]

原子サイトの名称を取得します。(大文字エイリアス)

概要:

atom_name メソッドの大文字エイリアスです。現在設定されている原子サイトの名称を返します。

戻り値:

str: 原子サイトの名称。

AtomNameOnly(DelPar=0)[ソース]

原子サイトの名称から修飾子を除いた部分を取得します。(大文字エイリアス)

概要:

atom_name_only メソッドの大文字エイリアスです。原子名からサイトタイプや電荷などの付加情報を取り除いた部分を返します。

パラメータ:

DelPar -- int, optional: 0の場合タイプ名を、0以外の場合基本名称を返すフラグ。デフォルトは0。

戻り値:

str: 修飾子を除いた原子名またはタイプ名。

AtomType()[ソース]

原子サイトに関連付けられた原子タイプオブジェクトを取得します。

概要:

現在設定されている原子サイトに関連付けられた原子タイプオブジェクトを返します。

戻り値:

object or None: 原子タイプオブジェクト。

Charge()[ソース]

原子サイトの電荷を取得します。

概要:

現在設定されている原子サイトの電荷を返します。

詳細説明:

電荷が既に設定されている場合、Charge2f 関数を適用して返します。 電荷が設定されていない場合(Noneの場合)、SplitAtomName 関数を使用して現在の原子名から電荷を抽出し、 抽出できればそれを設定し、Charge2f を適用して返します。 電荷が抽出できない場合、デフォルトで0.0を返します。

戻り値:

float: 原子サイトの電荷。

Force()[ソース]

原子サイトにかかる力を取得します。

概要:

現在設定されている原子サイトにかかる力を返します。

詳細説明:

力が設定されていない場合(Noneの場合)、[None, None, None]を返します。

戻り値:

list of float or list of None: 原子サイトにかかる力のリスト。

Hydrogen()[ソース]

原子サイトが水素原子であるかを取得します。

概要:

原子サイトが水素原子であるかを示すフラグを返します。

戻り値:

bool or None: 水素原子であるかを示すブール値。

Id()[ソース]

原子サイトのIDを取得します。

概要:

原子サイトのID (__IdAsymmetricAtomSite の値) を返します。

戻り値:

int: 原子サイトのID。

IdAsymmetricAtomSite()[ソース]

非対称原子サイトのIDを取得します。

概要:

現在設定されている非対称原子サイトのIDを返します。

戻り値:

int: 非対称原子サイトのID。

IdSite()[ソース]

サイトIDを取得します。

概要:

現在設定されている原子サイトのサイトIDを返します。

戻り値:

int: サイトID。

IsSelected()[ソース]

原子サイトの選択状態を取得します。

概要:

原子サイトが選択されているかを示すフラグを返します。

戻り値:

int: 選択状態(0または1)。

Label()[ソース]

原子サイトのラベルを取得します。

概要:

現在設定されている原子サイトのラベルを返します。

戻り値:

str: 原子サイトのラベル。

Multiplicity()[ソース]

原子サイトの多重度を取得します。

概要:

現在設定されている原子サイトの多重度を返します。

戻り値:

int or None: 原子サイトの多重度。

Occupancy()[ソース]

原子サイトの占有率を取得します。

概要:

現在設定されている原子サイトの占有率を返します。

戻り値:

float: 原子サイトの占有率。

Position(IsReduce01=0)[ソース]

原子サイトの座標を取得します。(大文字エイリアス)

概要:

position メソッドの大文字エイリアスです。現在設定されている原子サイトの座標を返します。

パラメータ:

IsReduce01 -- int, optional: 0以外の場合、座標を0-1の範囲に丸めるフラグ。デフォルトは0。

戻り値:

list of float: 原子サイトの座標リスト。

SetAtomName(AtomName)[ソース]

原子サイトの名称を設定します。

概要:

原子サイトの名称(例: 'C1', 'O2-')を設定します。

パラメータ:

AtomName -- str: 設定する原子サイトの名称。

SetAtomSite(atomtype=None, iatomtype=None, label=None, name=None, charge=None, pos=None, force=None, velocity=None, occ=1.0, m=None, ws=None, hydrogen=None)[ソース]

原子サイトの全てのプロパティを一括で設定します。

概要:

原子サイトのタイプ、ラベル、名前、電荷、位置、力、速度、占有率、多重度、Wyckoff位置、水素原子フラグを更新します。

詳細説明:

このメソッドは、指定された引数に基づいて原子サイトの各属性を更新します。 引数がNoneの場合、その属性は変更されません(ただし、一部のSetメソッド内でデフォルト値が適用される場合があります)。 `label`がNoneの場合、`name`の値が`label`として設定されます。

パラメータ:
  • atomtype -- object or None, optional: 原子タイプオブジェクト。

  • iatomtype -- int or None, optional: 内部原子タイプID。

  • label -- str or None, optional: 原子サイトのラベル。

  • name -- str or None, optional: 原子サイトの名前。

  • charge -- float or None, optional: 原子サイトの電荷。

  • pos -- list of float or None, optional: 原子サイトの分数座標。

  • force -- list of float or None, optional: 原子サイトにかかる力。

  • velocity -- list of float or None, optional: 原子サイトの速度。

  • occ -- float, optional: 原子サイトの占有率。デフォルトは1.0。

  • m -- int or None, optional: 原子サイトの多重度。

  • ws -- str or None, optional: Wyckoff位置の記号。

  • hydrogen -- bool or None, optional: 水素原子であるかを示すフラグ。

SetAtomType(at)[ソース]

原子サイトに関連付けられた原子タイプオブジェクトを設定します。

概要:

原子サイトに関連付けられた原子タイプオブジェクトを設定します。

パラメータ:

at -- object or None: 設定する原子タイプオブジェクト。

SetCharge(charge=None)[ソース]

原子サイトの電荷を設定します。

概要:

原子サイトの電荷を設定します。

詳細説明:

charge がNoneでない場合、その値をfloat型に変換して設定を試みます。 charge がNoneの場合、SplitAtomName 関数を使用して現在の原子名から電荷を抽出し、設定します。 原子名から電荷が抽出できない場合は、電荷はNoneのままです。

パラメータ:

charge -- float or None, optional: 設定する電荷。デフォルトはNone。

SetForce(force)[ソース]

原子サイトにかかる力を設定します。

概要:

原子サイトにかかる力([fx, fy, fz])を設定します。

パラメータ:

force -- list of float or None: 設定する力のリスト。

SetHydrogen(h)[ソース]

原子サイトが水素原子であるかを設定します。

概要:

原子サイトが水素原子であるかを示すフラグを設定します。

パラメータ:

h -- bool or None: 設定する水素原子フラグ。

SetId(id)[ソース]

原子サイトのIDを設定します。

概要:

原子サイトのIDを設定します。このメソッドは SetIdAsymmetricAtomSite を呼び出します。

パラメータ:

id -- int: 設定するID。

SetIdAsymmetricAtomSite(i)[ソース]

非対称原子サイトのIDを設定します。

概要:

非対称原子サイトのIDを設定します。このIDは __idSite__IdAsymmetricAtomSite の両方に設定されます。

パラメータ:

i -- int: 設定するID。

SetIdSite(i)[ソース]

サイトIDを設定します。

概要:

原子サイトのサイトIDを設定します。

パラメータ:

i -- int: 設定するサイトID。

SetIsSelected(IsSelected)[ソース]

原子サイトの選択状態を設定します。

概要:

原子サイトの選択状態を示すフラグを設定します。

パラメータ:

IsSelected -- int: 選択状態(0または1)。

SetLabel(Label)[ソース]

原子サイトのラベルを設定します。

概要:

原子サイトの表示用ラベルを設定します。

詳細説明:

Label`がNoneの場合、内部で保持されている原子名 (`self.AtomName) がラベルとして設定されます。 それ以外の場合は、指定された`Label`がそのまま設定されます。

パラメータ:

Label -- str or None: 設定するラベル。

SetMultiplicity(mult)[ソース]

原子サイトの多重度を設定します。

概要:

原子サイトの多重度を設定します。

パラメータ:

mult -- int or None: 設定する多重度。

SetOccupancy(occ=1.0)[ソース]

原子サイトの占有率を設定します。

概要:

原子サイトの占有率を設定します。

パラメータ:

occ -- float, optional: 設定する占有率。デフォルトは1.0。

SetPosition(pos)[ソース]

原子サイトの座標を設定します。

概要:

原子サイトの分数座標([x, y, z])を設定します。

パラメータ:

pos -- list of float: 設定する座標リスト。

SetVelocity(v)[ソース]

原子サイトの速度を設定します。

概要:

原子サイトの速度([vx, vy, vz])を設定します。

パラメータ:

v -- list of float or None: 設定する速度のリスト。

SetWycoffPosition(ws)[ソース]

原子サイトのWyckoff位置記号を設定します。

概要:

原子サイトのWyckoff位置記号を設定します。

パラメータ:

ws -- str or None: 設定するWyckoff位置記号。

SetiAtomType(i)[ソース]

原子サイトの内部原子タイプIDを設定します。

概要:

原子サイトの内部原子タイプIDを設定します。

パラメータ:

i -- int or None: 設定する内部原子タイプID。

Velocity()[ソース]

原子サイトの速度を取得します。

概要:

現在設定されている原子サイトの速度を返します。

詳細説明:

速度が設定されていない場合(Noneの場合)、[None, None, None]を返します。

戻り値:

list of float or list of None: 原子サイトの速度のリスト。

WycoffPosition()[ソース]

原子サイトのWyckoff位置記号を取得します。

概要:

現在設定されている原子サイトのWyckoff位置記号を返します。

戻り値:

str or None: Wyckoff位置記号。

atom_name()[ソース]

原子サイトの名称を取得します。

概要:

現在設定されている原子サイトの名称を返します。

戻り値:

str: 原子サイトの名称。

atom_name_only(del_par=0)[ソース]

原子サイトの名称から修飾子を除いた部分を取得します。

概要:

原子名からサイトタイプや電荷などの付加情報を取り除いた純粋な原子名またはタイプ名を返します。

詳細説明:

内部で SplitAtomName 関数を使用して原子名を解析します。 del_par が0(デフォルト)の場合、原子のタイプ名(例: 'C', 'O')を返します。 del_par が0以外の場合、原子の基本名称(例: 'C', 'O')を返します。

パラメータ:

del_par -- int, optional: 0の場合タイプ名を、0以外の場合基本名称を返すフラグ。デフォルトは0。

戻り値:

str: 修飾子を除いた原子名またはタイプ名。

iAtomType()[ソース]

原子サイトの内部原子タイプIDを取得します。

概要:

現在設定されている原子サイトの内部原子タイプIDを返します。

戻り値:

int or None: 内部原子タイプID。

position(is_reduce01=0)[ソース]

原子サイトの座標を取得します。

概要:

現在設定されている原子サイトの座標を返します。

詳細説明:

is_reduce01 が0以外の場合、座標値を0.0から1.0の範囲に丸めて返します。 具体的には Round01Reduce01 関数が適用されます。 is_reduce01 が0の場合、生の値の座標リストをそのまま返します。

パラメータ:

is_reduce01 -- int, optional: 0以外の場合、座標を0-1の範囲に丸めるフラグ。デフォルトは0。

戻り値:

list of float: 原子サイトの座標リスト。