.. _fileformat: ファイルフォーマット ==================== 入力ファイル ------------ .. _modpara: ファイル名および計算条件指定ファイル ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4つの namelist (``filename``, ``ham``, ``cg``, ``dyn``)に分かれています. namelistのしくみについてはfortranについて書かれた書籍やWebページを参照してください. :: &filename inham = "" invec = "" / &ham nsite = 4 Jx = 1d0 Jy = 1d0 Jz = 1d0 Dz = 0d0 / &cg maxloops = 100 convfactor = 6 / &dyn calctype = "normal" nomega = 100 omegamin = (-2d0, 0.1d0) omegamax = ( 1d0, 0.1d0) outrestart = .TRUE. / ``"filename"`` ネームリストではハミルトニアンと右辺ベクトルを格納しているファイル名を指定します. - ``InHam`` **形式 :** string型 (default: ``""``) **説明 :** MatrixMarket形式のハミルトニアンファイル名(フルパスもしくは相対パス)を指定します. これが指定されなかった場合には, ``ham`` ネームリストのパラメーターから1次元スピン系の ハミルトニアンが生成されます. - ``InVec`` **形式 :** string型 (default: ``""``) **説明 :** 右辺ベクトルを格納したファイル名を指定します. これが指定されなかった場合には, まず最低エネルギー固有状態が計算され, それに :math:`{\hat S}_{1 z}` (サイト1のスピン:math:`z` 成分の演算子)がかかったものが右辺ベクトルとなります (すなわち1次元スピン系を計算しているものと勝手に解釈されます). ``"ham"`` ネームリストはハミルトニアンが生成されるモードでのみ読み込まれ, 次のハミルトニアンで表される1次元スピン系(Fig. :num:`spin` ) を構成するパラメーターを指定することに使われます. .. _spin: .. figure:: ../figs/spin.png 1次元スピン系の模式図. .. math:: \begin{align} {\hat H} = \sum_{i} \left( \begin{matrix} {\hat S}_{i x} & {\hat S}_{i y} & {\hat S}_{i z} \end{matrix} \right) \left( \begin{matrix} J_x & D_z & 0 \\ -D_z & J_y & 0 \\ 0 & 0 & J_z \end{matrix} \right) \left( \begin{matrix} {\hat S}_{i+1 x} \ {\hat S}_{i+1 y} \ {\hat S}_{i+1 z} \end{matrix} \right)\end{align} - ``nsite`` **形式 :** 整数 (default: ``4``) **説明 :** 1次元スピン模型のサイト数を指定します. - ``Jx`` **形式 :** 実数 (default: ``1.0``) **説明 :** Heisenberg模型の :math:`J_x` を指定します. - ``Jy`` **形式 :** 実数 (default: ``1.0``) **説明 :** Heisenberg模型の :math:`J_y` を指定します. - ``Jz`` **形式 :** 実数 (default: ``1.0``) **説明 :** Heisenberg模型の :math:`J_z` を指定します. - ``Dz`` **形式 :** 実数 (default: ``0.0``) **説明 :** Dzyaloshinskii-Moriya相互作用のパラメーター :math:`D_z` を指定します. ``cg`` ネームリストでは(双)共役勾配法の反復に関するパラメーターを指定します. - ``MaxLoops`` **形式 :** 整数 (default: ハミルトニアンの次元) **説明 :** 最大反復回数を指定します. - ``Convfactor`` **形式 :** 整数 (default: ``8``) **説明 :** 残差ベクトルの二乗ノルムを次元数で割ったものが, :math:`10^{-{\tt Convfactor}}` 未満となったら収束したとみなして計算を終了します. ``dyn`` ネームリストではスペクトルの計算に関するパラメーターを指定します. - ``OmegaMin`` **形式 :** 複素数 (default: ``invec`` を指定しなかった場合には (ハミルトニアンの最小固有値, 最大 :math:`\cdot` 最小固有値の差 :math:`\times0.01`), それ以外の場合には ``(0.0, 0.01)``) **説明 :** 振動数の始点を指定します. - ``OmegaMax`` **形式 :** 複素数 (default: ``invec`` を指定しなかった場合には (ハミルトニアンの最大固有値, 最大 :math:`\cdot` 最小固有値の差 :math:`\times0.01`), それ以外の場合には ``(1.0, 0.01)``) **説明 :** 振動数の終点を指定します. - ``NOmega`` **形式 :** 整数 (default: ``10``) **説明 :** 振動数の点数を指定します. - ``outrestart`` **形式 :** 論理型 (default: ``.FALSE.``) **説明 :** リスタート用ファイルを出力するか( ``.TRUE.``)否か( ``.FALSE.``)を指定します. - ``calctype`` **形式 :** String型. ``"normal"``, ``"recalc"``, ``"restart"`` のいずれか. (default: ``"normal"``) **説明 :** ``"normal"`` が指定された場合にはKrylov部分空間法をはじめから行います. ``"recalc"`` の場合には先行する計算で出力されたリスタート用ファイルを読み込み 先行する計算で行われたのと同じ反復回数まで計算します. 収束は保証されません. ``"restart"`` では先行する計算で出力されたリスタート用ファイルを読み込み, 先行する計算で行われたのと同じ反復回数まで計算したのち, 収束するか最大反復回数( ``MaxLoops``)に達するまで計算を続けます. .. _ham: InHamファイル ~~~~~~~~~~~~~ MatrixMarket形式に準じ, 以下のフォーマットを採用しています. InHamファイルの例 :: %%MatrixMarket matrix coordinate complex hermitian 16 16 20 1 1 1.000000 0.000000 3 2 0.500000 0.000000 5 3 0.500000 0.000000 6 4 0.500000 0.000000 6 6 -1.000000 0.000000 7 6 0.500000 0.000000 9 2 0.500000 0.000000 9 5 0.500000 0.000000 10 6 0.500000 0.000000 11 4 0.500000 0.000000 11 7 0.500000 0.000000 11 10 0.500000 0.000000 11 11 -1.000000 0.000000 12 8 0.500000 0.000000 13 6 0.500000 0.000000 13 11 0.500000 0.000000 14 12 0.500000 0.000000 15 8 0.500000 0.000000 15 14 0.500000 0.000000 16 16 1.000000 0.000000 1行目: 任意の文字列(コメントなど)が入ります. 2行目: 行数, 列数, 非ゼロ要素の数が入ります. 非ゼロ要素数に関しては **行列の下三角部分のみ** の数を記入してください. 3行目以降: 行番号, 列番号, 要素の実部, 要素の虚部が入ります. 2行目で入れた, 非ゼロ要素数と同じ数(下三角部分のみ)記入してください. .. _vec: InVecファイル ~~~~~~~~~~~~~ 励起ベクトルを入力するテキスト形式のファイルです. ファイル名は入出力ファイル指定ファイルで指定します. 以下のようなフォーマットをしています. :: 8192 0.02 0.01 0.02 0.001 (continue...) - 1行目: [ int01 ] **形式 :** int型 **説明 :** 計算対象のヒルベルト空間数を指定する整数. ハミルトニアンの次元と一致している必要があります. - 2行目-: [ double01 ] [ double02 ] **形式 :** double型 **説明 :** 励起ベクトルの値を表します. [ double01 ] が実部, [ double02 ] が虚部を表します. .. _recoeff: リスタート用係数 ~~~~~~~~~~~~~~~~ リスタート用の係数を入力するテキスト形式のファイルです. ファイル名は ``TriDiagComp.dat`` です. 以下のようなフォーマットをしています. :: 1000 1.0 0.0 0.1 0 0.01 0 0.2 0 0.021 0 (continue...) 2.1 -0.5 3.1 4.0 (continue...) - 1行目: [ int01 ] **形式 :** int型 **説明 :** :math:`\alpha, \beta` の読み込み総数を表します. 前回計算時のイタレーション数に相当します. - 2行目: [ double01 ] [ double02 ] **形式 :** double型 **説明 :** シード振動数 :math:`z_{\rm seed}` の値を表します. [ double01 ] が :math:`z_{\rm seed}` の実部, [ double02 ] が :math:`z_{\rm seed}` の虚部を表します. - 3行目-2+ [ int01 ] 行目: [ double03 ] [ double04 ] [ double05 ] [ double06 ] **形式 :** double型 **説明 :** :math:`\alpha, \beta` の値を表します. [ double03 ] が :math:`\alpha` の実部, [ double04 ] が :math:`\alpha` の虚部, [ double05 ] が :math:`\beta` の実部, [ double06 ] が :math:`\beta` の虚部を表します. - 3+ [ int01 ] 行目-2 + 2 :math:`\times` [ int01 ] 行目: [ double07 ] [ double08 ] **形式 :** double型 **説明 :** 各反復での残差ベクトルと励起ベクトルの内積を表します. [ double07 ] が実部, [ double08 ] が虚部を表します. .. _revec: リスタート用ベクトル ~~~~~~~~~~~~~~~~~~~~ リスタート用ベクトルを入力するテキスト形式のファイルです. ファイル名は ``ResVec.dat`` です. 以下のようなフォーマットをしています. :: 8192 0.02 0.01 0.02 0.001 (continue...) 0.02 0.01 0.02 0.001 (continue... Only for BiCG) - 1行目: [ int01 ] **形式 :** int型 **説明 :** 計算対象のヒルベルト空間数を指定する整数. - 2行目-1+ [ int01 ] 行目: [ double01 ] [ double02 ] **形式 :** double型 **説明 :** 残差ベクトルの値を表します. [ double01 ] が実部, [ double02 ] が虚部を表します. - 3行目-1+ :math:`2\times[` int01 ] 行目: [ double03 ] [ double04 ] **形式 :** double型 **説明 :** (ハミルトニアンが複素の場合のみ出力)影の残差ベクトルの値を表します. [ double03 ] が実部, [ double04 ] が虚部を表します. 出力ファイル ------------ リスタート用係数 ~~~~~~~~~~~~~~~~ Sec. :ref:`recoeff` と同じ形式を取ります. リスタート用ベクトル ~~~~~~~~~~~~~~~~~~~~ Sec. :ref:`revec` と同じ形式を取ります. .. _dynamicalg: 動的グリーン関数ファイル ~~~~~~~~~~~~~~~~~~~~~~~~ 動的グリーン関数の計算結果を出力するテキスト形式のファイルです. 以下のようなフォーマットをしています. :: -10 0.001 0.001 -0.0001 -9.8 0.001 0.0012 -0.0002 -9.6 0.001 0.0014 -0.0003 (continue...) - 1行目-: [ double01 ] [ double02 ] [ double03 ] [ double04 ] - [ double01 ], [ double02 ] **形式 :** double型 **説明 :** 周波数数の実部 [ double01 ] と虚部 [ double02 ] を表します. - [ double03 ], [ double04 ] **形式 :** double型 **説明 :** 動的グリーン関数の値を表します. [ double01 ] が実部, [ double02 ] が虚部を表します.