Tutorials:LatticesAndUnitCells/ja

From ALPS
Jump to: navigation, search


格子モデルで計算を行う場合、通常、無限または有限格子上で定義されたモデルを考えます。ここでは、無限、有限格子のXML形式での指定方法を説明します。

無限格子

格子は2次元で、次に示すように、格子の基底ベクトルの整数倍で表現し単一セルを複製し生成します。

TutorialLatticeHOWTOLattice1.gif

このような格子は(省略可な)nameと次元によって記述されます。また、格子の基底ベクトルのデカルト座標を指定することもできます。上記の格子の場合、記述は次のようになります。

<LATTICE name="2D" dimension="2">
  <BASIS>
    <VECTOR>   1 0 </VECTOR>
    <VECTOR> 0.5 1 </VECTOR>
  </BASIS>
</LATTICE>

基底ベクトルも下記のようにシンボリックまたはパラメータ化された方法で指定することができます。

<LATTICE name="2D" dimension="2">
  <PARAMETER name="a" default="1"/>
  <PARAMETER name="b" default="1"/>
  <PARAMETER name="phi" default="Pi/2"/>
  <BASIS>
    <VECTOR>   a 0 </VECTOR>
    <VECTOR> b*sin(phi) b*cos(phi) </VECTOR>
  </BASIS>
</LATTICE>

有限格子

有限の範囲

ほとんどのコンピュータシミュレーションでは、格子の有限部分では、上記のような無限格子上では動作しません。このような有限格子を定義する方法は多くあります。格子の任意の有限部分集合が有限格子となります。まず最初に、有限範囲設定のために、基本的な格子を定義します。その単位セルは正方形、長方形、立方体や超立方格子で、任意の次元を指定することができます。

TutorialLatticeHOWTOLLattice2.gif

有限格子の生成の例:

<FINITELATTICE name="5x3">
  <LATTICE name="2D" dimension="2"/>
  <EXTENT dimension="1" size="5"/>
  <EXTENT dimension="2" size="3"/>
</FINITELATTICE>


属性dimensionが省略されると、全ての次元について同じ値size=4が設定されます。

<FINITELATTICE>
  <LATTICE dimension="3"/>
  <EXTENT size="4"/>
</FINITELATTICE>

すべての次元が有限である必要は無く、次の図のように縦方向が2で横方向が無限格子という設定も可能です。

TutorialLatticeHOWTOLattice3.gif

<FINITELATTICE name="strip">
  <LATTICE name="2D" dimension="2"/>
  <EXTENT dimension="2" size="2"/>
</FINITELATTICE>

多くのアプリケーションで標準的な拡張は一定ではなく、インプットパラメータはユーザによって定義されます。ALPSでは、<PARAMETER>要素で拡張を制御することができます。縦方向L×2の例は次の通りです。

<FINITELATTICE>
  <LATTICE name="2D" dimension="2"/>
  <PARAMETER name="L"/>
  <EXTENT dimension="1" size="L"/>
  <EXTENT dimension="2" size="2"/>
</FINITELATTICE>

下記のようにL x Wの拡張設定をおこなうときに、Wの定義、デフォルト値の設定が可能です。

<FINITELATTICE>
  <LATTICE name="2D" dimension="2"/>
  <PARAMETER name="L" />
  <PARAMETER name="W" default="2" />
  <EXTENT dimension="1" size="L" />
  <EXTENT dimension="2" size="W" />
</FINITELATTICE>

最後に、よく用いられるモデルで、正方形、立方格子など全方向で同じサイズの場合、個別に値を与えずに、次の記述のようにL、W、Hを設定することができます。

<FINITELATTICE>
  <LATTICE name="3D" dimension="3"/>
  <PARAMETER name="L" />
  <PARAMETER name="W" default="L" />    
  <PARAMETER name="H" default="W" />
  <EXTENT dimension="1" size="L" />
  <EXTENT dimension="2" size="W" />
  <EXTENT dimension="3" size="H" />
</FINITELATTICE>

最初に定義したパラメータは次元数を指定します。例えば、Lだけを定義したらLxLxLの立方体、LとWを定義したらLxWxWの直方体、LとHならばLxLxHの直方体、L、W、Hすべてが指定されたら、 LxWxHの直方体がそれぞれ定義されます。

境界条件

有限格子の拡張設定に加え、境界条件の設定が必要になります。一般的に使用される境界条件は以下の通りです。

  • open: 格子は開放系で、境界のセルは一個より多くの隣接した格子を持ちません。
  • periodic: 格子は周期系です。格子の端は、その反対側の格子という扱いになります。例えば、格子の右端セルは左端と等しく、上端セルと下端セルは同じものということになります。

二次元格子の場合、ドーナツ上の形状になります。

これらの2タイプの境界条件は<BOUNDARY>要素で定義されます。下記の記述は、LxL正方の周期境界条件の指定の例です。

<FINITELATTICE>
  <LATTICE name="2D" dimension="2"/>
  <EXTENT size="L" />
  <BOUNDARY type="periodic" />
</FINITELATTICE>

次の例は、縦方向は周期境界条件で、横方向はサイズ2の例です。

<FINITELATTICE name="strip">
  <LATTICE name="strip" dimension="2"/>
  <PARAMETER name="W" default="2" />
  <EXTENT dimension=1 size="L" />
  <EXTENT dimension=2 size="W" />
  <BOUNDARY dimension="1" type="periodic" />
  <BOUNDARY dimension="2" type="open" />
</FINITELATTICE>

また、下記の記述のように、境界条件に名前を付け、デフォルト値を設定することも可能です。

<FINITELATTICE>
  <LATTICE name="cube" dimension="3"/>
  <PARAMETER name="BC" default="periodic" />
  <EXTENT size="L" />
  <BOUNDARY type="BC" />
</FINITELATTICE>

デフォルトで周期境界条件の立方格子モデルに"BC"と名前をつけて定義しています。 毎回格子条件を設定する代わりに、定義済みの格子に追記することも可能です。次の記述が例です。

<FINITELATTICE name = "finite tilted 2D">
  <LATTICE name="tilted 2D" dimension="2">
    <BASIS>
      <VECTOR>   1 0 </VECTOR>
      <VECTOR> 0.5 1 </VECTOR>
    </BASIS>
  </LATTICE>
  <PARAMETER name="BC" default="periodic" />
  <EXTENT dimension="1" size="L" />
  <EXTENT dimension="2" size="W" />
  <BOUNDARY type="BC" />
</FINITELATTICE>

最初に次のように無限格子を定義します。

<LATTICE name="tilted 2D" dimension="2"
  <BASIS>
    <VECTOR>   1  0 </VECTOR>
    <VECTOR> 0.5, 1 </VECTOR>
  </BASIS>
</LATTICE>

次に、LATTICE要素内のref属性を用いて参照定義をおこないます。これらを使用することで、計算毎に格子の定義をおこなう作業を軽減することができます。

<FINITELATTICE name = "finite tilted 2D">
  <LATTICE ref="tilted 2D">
  <PARAMETER name="BC" default="periodic" />
  <EXTENT dimension="1" size="L" />
  <EXTENT dimension="2" size="W" />
  <BOUNDARY type="BC" />
</FINITELATTICE>