まず,一般に格子,あるいはネットワークについて考えるとき,ノードに与えられた情報とノード間のエッジがどのように張られているかが問題となる。
この視点から考えると,2次元平面上の三角格子は,(x, y)の2つの変数を持ち,周囲には等距離,等間隔に6つのノードが存在するネットワークと捉えることができる。
したがって,これをプログラムで扱いやすい形にするためには,一旦2×2の行列を考え,行列の上下左右のみでなく,さらに二つの点が隣接していると捉えるように拡張することによって,その位置関係を表すことができる。
また,これらそれぞれの点に(x, y)の座標が割り振られるが,これはある点の座標とノード間の距離を定めることによって決められる。
クラスの設計としては,
の2つの要素が必要なことが分かる。以上をふまえて,LatticeTriangularクラスを以下のように作成した。
LatticeTriangular(lattice=None, boundary='periodic', scale=10, x0=0, y0=0)
lattice: (ndarray) 格子点の初期条件
boundary: ('periodic' or 'boundary') 格子の境界条件を周期境界条件にするか,反射境界条件にするか
scale: (int or float)