tkspacegroup プログラム仕様

結晶空間群に関するデータと操作を提供するモジュール。

詳細説明: このモジュールは、空間群の名称、指標、対称操作、格子系などの情報を扱い、 SPGDB (Space Group Database) からの読み込みや解析を行うためのクラス tkSpaceGroup を提供します。 結晶構造データの解析やシミュレーションにおいて、空間群の情報を正確に管理するために使用されます。

関連リンク: tkspacegroup.py 技術ドキュメント

class tklib.tkcrystal.tkspacegroup.tkSpaceGroup(**args)[ソース]

ベースクラス: tkSpaceGroupObject

空間群のデータを管理し、関連する操作を提供するクラス。

詳細説明: tkSpaceGroupObjectを継承し、空間群の名称、指標、対称操作、格子パラメータ、格子系などを保持・操作します。 SPGDBファイルから空間群情報を読み込み、結晶学的な解析をサポートします。

AddSymmetryOperation(symop)[ソース]

新しい対称操作を追加する。

詳細説明: 指定された文字列を解析し、対称操作としてリストに追加します。 すでに存在する場合は追加しません。

パラメータ:

symop -- str: 追加する対称操作を表す文字列。

戻り値:

int: 追加後の対称操作の総数。

AnalyzeLatticeAxis(*, latticesystem='', SearchByLatticeParameter=0, tollatt=1e-05, tolangle=1e-05)[ソース]

格子パラメータに基づいて格子軸の名称を解析し設定する。

詳細説明: 現在の格子パラメータ (a, b, c, alpha, beta, gamma) の値と許容誤差に基づいて、 結晶学的な格子軸(例:cubic, tetragonal, monoclinicなど)を判定し、内部変数に設定します。

パラメータ:
  • latticesystem -- str, optional: 既存の格子系名称。デフォルトは空文字列。

  • SearchByLatticeParameter -- int, optional: 格子パラメータに基づいて検索するかどうかのフラグ。デフォルトは0。

  • tollatt -- float, optional: 格子定数の比較に使用する許容誤差。デフォルトは1.0e-5。

  • tolangle -- float, optional: 格子角の比較に使用する許容誤差。デフォルトは1.0e-5。

戻り値:

str: 解析された格子軸の名称。

ClearSymmetryOperation()[ソース]

設定されている対称操作と並進ベクトルをクリアする。

詳細説明: 対称操作リストを空にし、並進ベクトルを '[0, 0, 0]' のみを含む状態にリセットします。 これにより、対称操作と並進の数を更新します。

DoSymmetryOperation(iop, pos, IsReduce01=1)[ソース]

指定された対称操作を座標に適用する。

詳細説明: 指定されたインデックスの対称操作を、与えられた座標に適用し、新しい座標を計算します。 オプションで結果を0から1の範囲に正規化します。

パラメータ:
  • iop -- int: 適用する対称操作のインデックス。

  • pos -- list[float]: 適用する元の座標 [x, y, z]。

  • IsReduce01 -- int, optional: 結果を0から1の範囲に正規化するかどうかのフラグ (1:正規化する, 0:しない)。デフォルトは1。

戻り値:

list[float] or None: 対称操作適用後の新しい座標 [x', y', z']。入力が無効な場合はNone。

DoVelocitySymmetryOperation(iop, v, IsReduce01=0)[ソース]

指定された対称操作を速度ベクトルに適用する。

詳細説明: 速度ベクトルに対して DoSymmetryOperation メソッドを呼び出しますが、正規化は行いません。 これは、速度が周期境界条件を考慮しないためです。

パラメータ:
  • iop -- int: 適用する対称操作のインデックス。

  • v -- list[float]: 適用する元の速度ベクトル [vx, vy, vz]。

  • IsReduce01 -- int, optional: 結果を0から1の範囲に正規化するかどうかのフラグ (0:しない)。常に0が渡されます。

戻り値:

list[float] or None: 対称操作適用後の新しい速度ベクトル [vx', vy', vz']。入力が無効な場合はNone。

GetBravaisLattice()[ソース]

空間群名とLaue群からBravais格子タイプを返す。

詳細説明: 空間群名に含まれる中心化の記号 (P, F, I, A, B, C) とLaue群を組み合わせて、 Bravais格子の記述を生成します。

戻り値:

str: Bravais格子の記述文字列 (例: "P(Triclinic)", "FC(Cubic)")。

GetSpaceGroupList(dbpath='D:\\git\\tkProg\\tkdb\\Databases\\spgra', StopByError=1)[ソース]

空間群データベースからすべての空間群のリストを取得する。

詳細説明: データベースを読み込み、各空間群エントリのSPG番号、セット番号、名称を含む文字列のリストを生成します。

パラメータ:
  • dbpath -- str, optional: 空間群データベースファイルのパス。デフォルトは SPGDBPath

  • StopByError -- int, optional: エラー時にプログラムを終了するかどうかのフラグ (0:しない, 1:する)。デフォルトは1。

戻り値:

list[str] or int: 空間群の情報を整形した文字列のリスト、またはエラー時に0。

GetSymmetryOperationList()[ソース]

すべての対称操作のリストを返す。

戻り値:

list[str]: 対称操作を表す文字列のリスト。

GetiSPGFromSPGName(spgname, dbpath='D:\\git\\tkProg\\tkdb\\Databases\\spgra', StopByError=1)[ソース]

空間群名称から空間群番号とセット番号を取得する。

詳細説明: データベースを検索し、指定された空間群名称に一致するエントリの空間群番号、セット番号、 およびデータベース内のインデックス(カウント)を返します。

パラメータ:
  • spgname -- str: 検索する空間群名称。

  • dbpath -- str, optional: 空間群データベースファイルのパス。デフォルトは SPGDBPath

  • StopByError -- int, optional: エラー時にプログラムを終了するかどうかのフラグ (0:しない, 1:する)。デフォルトは1。

戻り値:

tuple[int, int, int] or int: (カウント, 空間群番号, セット番号) のタプル。見つからない場合は (-1, -1, -1)。エラー時に0。

GuessBravaisLattice(tollatt, tolangle, EPSCoord)[ソース]

空間群名と格子パラメータに基づいてBravais格子を推測する。

詳細説明: まず空間群名からF, I, A, B, Cなどの中心化情報をチェックします。 その後、原子サイト情報が存在する場合は、サイトの位置から中心化を判定します。

パラメータ:
  • tollatt -- float: 格子定数の許容誤差。

  • tolangle -- float: 格子角の許容誤差。

  • EPSCoord -- float: 座標の許容誤差。

戻り値:

list[str]: [格子系, Bravais格子タイプ] のリスト。

LatticeAxis()[ソース]

設定されている格子軸の名称を返す。

詳細説明: lattice_axis メソッドを呼び出して格子軸の名称を取得します。

戻り値:

str: 格子軸の名称 (例: 'cubic', 'monoclinic')。

LatticeParameters()[ソース]

設定されている格子パラメータのリストを返す。

戻り値:

list[float]: 格子パラメータ [a, b, c, alpha, beta, gamma]。

LatticeSystem()[ソース]

設定されている格子系の名称を返す。

詳細説明: 内部変数 __LatticeSystem の値を返します。

戻り値:

str or None: 格子系の名称 (例: 'cubic', 'monoclinic')。

LatticeSystemFromLaueGroup(LaueG)[ソース]

Laue群の名称から格子系を推測し、返す。

詳細説明: 特定のLaue群名に基づいて格子系(例えば、菱面体晶、三方晶、単斜晶など)を判断します。 Laue群名の括弧内の情報は除去されます。

パラメータ:

LaueG -- str: Laue群の名称。

戻り値:

str: 推測された格子系の名称 (小文字)。

LatticeSystemFromSPGName(SPGName)[ソース]

空間群名称から格子系を推測し、返す。

詳細説明: 空間群名称の特定のキーワード(例: '4', '6', 'R', '2')に基づいて 格子系(例:cubic, hexagonal, rhombohedral, monoclinic)を判断します。

パラメータ:

SPGName -- str: 空間群の名称。

戻り値:

str or None: 推測された格子系の名称 (小文字)。SPGNameが空文字列の場合はNone。

LaueGroupByRietanIndex(idx=None)[ソース]

RIETANのLaue群インデックスに基づいてLaue群名称を返す。

詳細説明: 1から15までのインデックスに対応するLaue群の名称をリストから取得します。

パラメータ:

idx -- int, optional: Laue群のインデックス (1-15)。デフォルトはNone。

戻り値:

str: 対応するLaue群の名称。インデックスが無効な場合は空文字列。

ReadNextSpaceGroup(db)[ソース]

データベースファイルから次の空間群エントリを読み込む。

詳細説明: 指定されたデータベースオブジェクトから1つの空間群エントリをパースし、辞書形式で返します。 読み込みはファイルの現在の位置から行われます。

パラメータ:

db -- tklib.tkfile.tkFile: 空間群データベースファイルオブジェクト。

戻り値:

dict or None: 読み込まれた空間群データを含む辞書、またはファイルの終端に達した場合や無効なエントリの場合はNone。

ReadSpaceGroup(ispg, iset, SettoSelf=0, dbpath='D:\\git\\tkProg\\tkdb\\Databases\\spgra', StopByError=1)[ソース]

空間群番号とセット番号に基づいて空間群データをデータベースから読み込む。

詳細説明: 指定された空間群番号とセット番号に合致するエントリをデータベースから探し、そのデータを返します。 読み込んだデータをオブジェクト自身に設定することもできます。

パラメータ:
  • ispg -- int: 検索する空間群番号。

  • iset -- int: 検索するセット番号。

  • SettoSelf -- int, optional: 読み込んだデータをこのオブジェクト自身に設定するかどうかのフラグ (0:しない, 1:する)。デフォルトは0。

  • dbpath -- str, optional: 空間群データベースファイルのパス。デフォルトは SPGDBPath

  • StopByError -- int, optional: エラー時にプログラムを終了するかどうかのフラグ (0:しない, 1:する)。デフォルトは1。

戻り値:

dict or None: 読み込まれた空間群データを含む辞書 (SettoSelf=0の場合)、または None (見つからない場合やエラー時)。 SettoSelf=1の場合は、このオブジェクト自体にデータが設定され、戻り値は None。

ReadSpaceGroupFromSPGName(SPGName)[ソース]

空間群名称に基づいて空間群データを読み込む。

詳細説明: 空間群名称から空間群番号とセット番号を特定し、その情報を用いて ReadSpaceGroup メソッドを呼び出します。

パラメータ:

SPGName -- str: 検索する空間群名称。

戻り値:

dict or None: 読み込まれた空間群データを含む辞書、または見つからない場合はNone。

SPGName()[ソース]

設定されている空間群名称を返す。

戻り値:

str: 空間群名称。

SetLatticeAxis(*, latticeaxis='', SearchByLatticeParameter=1, tollatt=1e-05, tolangle=1e-05)[ソース]

格子軸を設定し、必要に応じて格子パラメータから推測する。

詳細説明: 明示的に格子軸を設定するか、または SearchByLatticeParameter が有効な場合は 現在の格子パラメータから格子軸を解析し設定します。

パラメータ:
  • latticeaxis -- str, optional: 明示的に設定する格子軸名称。デフォルトは空文字列。

  • SearchByLatticeParameter -- int, optional: 格子パラメータに基づいて格子軸を検索するかどうかのフラグ (0:しない, 1:する)。デフォルトは1。

  • tollatt -- float, optional: 格子定数の比較に使用する許容誤差。デフォルトは1.0e-5。

  • tolangle -- float, optional: 格子角の比較に使用する許容誤差。デフォルトは1.0e-5。

戻り値:

str or None: 設定または推測された格子軸の名称。現在の格子パラメータが不完全な場合はNone。

SetLatticeParameters(latt, GuessLatticeSystem=0)[ソース]

格子パラメータを設定し、必要に応じて格子系と格子軸を推測する。

詳細説明: 与えられた格子パラメータ (a, b, c, alpha, beta, gamma) を内部変数に設定します。 GuessLatticeSystem フラグが有効な場合、設定後に格子系を自動的に解析し設定します。

パラメータ:
  • latt -- list[float]: 設定する格子パラメータ [a, b, c, alpha, beta, gamma]。

  • GuessLatticeSystem -- int, optional: 格子系を自動的に推測して設定するかどうかのフラグ (0:しない, 1:する)。デフォルトは0。

SetLatticeSystem(*, latticesystem='', SearchByLatticeParameter=0, tollatt=1e-05, tolangle=1e-05)[ソース]

格子系を設定し、必要に応じて格子パラメータから推測する。

詳細説明: 明示的に格子系を設定するか、または SearchByLatticeParameter が有効な場合は 現在の格子パラメータから格子系を解析し設定します。空間群名から推測する場合もあります。

パラメータ:
  • latticesystem -- str, optional: 明示的に設定する格子系名称。デフォルトは空文字列。

  • SearchByLatticeParameter -- int, optional: 格子パラメータに基づいて格子系を検索するかどうかのフラグ (0:しない, 1:する)。デフォルトは0。

  • tollatt -- float, optional: 格子定数の比較に使用する許容誤差。デフォルトは1.0e-5。

  • tolangle -- float, optional: 格子角の比較に使用する許容誤差。デフォルトは1.0e-5。

戻り値:

str or None: 設定または推測された格子系の名称。

SetP1()[ソース]

空間群をP1 (三斜晶系、空間群番号1) に設定する。

詳細説明: 対称操作をクリアし、空間群名、空間群番号、セット番号をP1に設定します。 基本的な対称操作として 'x,y,z' を追加し、格子系と格子軸を 'triclinic' に設定します。

SetSPGName(SPGName)[ソース]

空間群名称を設定する。

詳細説明: 与えられた名称から引用符を除去して設定します。

パラメータ:

SPGName -- str: 設定する空間群名称。

SetSpaceGroup(SPGName, iSPG, iSet=1)[ソース]

空間群の名称、空間群番号、セット番号をまとめて設定する。

詳細説明: 与えられた名称から引用符を除去し、番号を整数型に変換して設定します。

パラメータ:
  • SPGName -- str: 設定する空間群名称。

  • iSPG -- int: 設定する空間群番号。

  • iSet -- int: 設定するセット番号。デフォルトは1。

SetiLaueGroup(iLaueG=None)[ソース]

Laue群のインデックスを設定する。

詳細説明: 与えられたインデックスで内部変数 __iLaueG を更新します。 引数がNoneの場合は何もしません(LaueGroupByRietanIndex が呼び出されますが、その結果は使われません)。

パラメータ:

iLaueG -- int, optional: 設定するLaue群のインデックス。デフォルトはNone。

SetiSPG(iSPG)[ソース]

空間群番号を設定する。

詳細説明: 与えられた値を整数型に変換して設定します。

パラメータ:

iSPG -- int: 設定する空間群番号。

SetiSet(iSet=1)[ソース]

セット番号を設定する。

詳細説明: 与えられた値を整数型に変換して設定します。デフォルト値は1です。

パラメータ:

iSet -- int: 設定するセット番号。デフォルトは1。

SymmetryOperation(i)[ソース]

指定されたインデックスの対称操作を返す。

パラメータ:

i -- int: 取得する対称操作のインデックス。

戻り値:

str: 指定されたインデックスの対称操作を表す文字列。

TranslationVector(i)[ソース]

指定されたインデックスの並進ベクトルを返す。

パラメータ:

i -- int: 取得する並進ベクトルのインデックス。

戻り値:

list[int]: 並進ベクトル [tx, ty, tz]。

iCenter()[ソース]

中心化の数を返す。

詳細説明: 内部変数 __iCenter の値を返します。

iLaueG()[ソース]

設定されているLaue群のインデックスを返す。

詳細説明: 内部変数 __iLaueG の値を返します。

戻り値:

int: Laue群のインデックス。

iLaueGroup()[ソース]

設定されているLaue群のインデックスを返す。

詳細説明: 内部変数 __iLaueG の値を返します。

戻り値:

int: Laue群のインデックス。

iSPG()[ソース]

設定されている空間群番号を返す。

戻り値:

int: 空間群番号。

iSet()[ソース]

設定されているセット番号を返す。

戻り値:

int: セット番号。

lattice_axis()[ソース]

設定されている格子軸の名称を返す。

詳細説明: 内部変数 __LatticeAxis が設定されていればそれを返し、なければ空文字列を返します。

戻り値:

str: 格子軸の名称 (例: 'cubic', 'monoclinic')。

nSymmetryOperation()[ソース]

現在設定されている対称操作の数を返す。

戻り値:

int: 対称操作の数。

nTranslation()[ソース]

現在設定されている並進ベクトルの数を返す。

戻り値:

int: 並進ベクトルの数。