ホーム 例 スクリーンショット ユーザーマニュアル Blueskyロゴ YouTube ☰
OghmaNano 有機/ペロブスカイト太陽電池、OFET、OLEDをシミュレーション ダウンロード Quick Start guide

ステップエディタ:OghmaNanoにおける周期的なオブジェクト配置

1. はじめに

多くのフォトニック・電子デバイス構造は本質的に周期構造を有している。DFB(分布帰還型)回折格子では、正確な間隔で配置された隆起部やスロットの配列が必要となる。フォトニック結晶は、誘電体要素からなる規則的な格子構造によって形成される。プラズモニックメタ表面は、波長未満の間隔で繰り返される共鳴器要素から構成される。こうした構造を個々のオブジェクトごとに作成するのは現実的ではないため、OghmaNanoではステップエディタが用意されており、単一のオブジェクトを基にして3次元空間内の指定位置に自動的にそのコピーを生成する。

このシステムの重要な特性として、生成されるすべてのコピーが元のオブジェクトと同一の光学的・電気的特性を有する点が挙げられる。これらのコピーは独立したオブジェクトではなく、元のオブジェクトから材料設定や層の特性、光学定数をそのまま継承した完全な複製群である。このため、元のオブジェクトのみを編集するだけで周期構造全体を容易に変更することが可能となる。

ステップエディタには、複雑さが段階的に増す3つのモードが用意されている。単純な均一配列を生成するための基本ステップモード、基本格子ベクトルによって構造が定義される結晶モード、そして任意の点配置を実現するためのLuaスクリプトモードである。

2. ステップエディタへのアクセス方法

ステップエディタにアクセスするには、まずOghmaNanoのメインシミュレーションウィンドウ(??)を開きます。複製したいオブジェクトを右クリックしてコンテキストメニューから「Edit object」を選択すると、??に示すオブジェクトエディタが起動します。

オブジェクトエディタ内で「ステップ」という行を探してください。この行には現在設定されているステップパラメータ、すなわちコピー間の平行移動量(dx、dy、dz)および各方向におけるコピー数(nx、ny、nz)が表示されています。「ステップ」行の右端にある「…編集」ボタンをクリックすると、ステップエディタのウィンドウが開きます。

OghmaNano main simulation window showing a periodic array of objects with a right-click context menu open, highlighting the Edit object option
メインシミュレーションウィンドウで編集したいオブジェクトを右クリックし、「オブジェクトを編集」を選択すると、オブジェクトエディタが開きます。
OghmaNano object editor showing the Steps row with dx, nx, dy, ny, dz, nz fields and an Edit button with three-dot access to the step editor
オブジェクトエディタです。ステップ行には現在のステップ設定が表示されています。…編集ボタンをクリックするとステップエディタが開きます。

3. 基本ステップモード

ステップエディタはデフォルトで基本ステップモードで起動され、??に示す通りである。このモードは1次元、2次元、または3次元のオブジェクト配列を作成するための最も簡単な方法である。単一のステップベクトル(dx、dy、dz)を指定することで、各軸方向にオブジェクトを何回も配置する。各フィールドの内容は以下の通りである:

例えば、z軸方向に209 nm間隔で10個の要素からなる1次元回折格子を作成する場合、dzに209 nm、nzに10を設定し、dxとdyはゼロのままにします。これが??に示されている構成であり、単純なDFB回折格子の周期に対応します。

OghmaNano step editor in Basic step mode showing step fields dx, dy, dz and number of objects x, y, z. dz is set to 209 nm and nz to 10, producing a 1D array along z.
基本ステップモードでは、単一のステップベクトル(dx, dy, dz)およびオブジェクト数(nx, ny, nz)を用いることで、均一な1次元・2次元・3次元配列を生成できます。ここでは、z軸方向に209ナノメートル間隔で10個のオブジェクトが配置される1次元配列が設定されています。
OghmaNano step editor in Crystal mode showing primitive lattice vector fields a1, a2, a3 with x, y, z components, an Origin field, and Number of objects fields.
結晶モードでは、3つの原始格子ベクトルa1、a2、a3によって単位格子が定義され、その結果生成されるブラベー格子上にオブジェクトが配置されます。
OghmaNano step editor in Lua script mode showing a code editor with clear_points() and add_point() commands and a Refresh button to update the 3D view.
Luaスクリプトモードでは add_point() を用いて任意の (x, y, z) 座標に点を配置します。更新ボタンをクリックすると3Dビューが更新されます。

4. ブラベー格子モード

非直交的または非均一な周期構造を作成する場合、ステップエディタのツールバーにある「Crystal」ボタンをクリックしてクリスタルモードに切り替えてください(??)。このモードでは、結晶学においてブラベー格子を記述する際に用いられる形式と同様に、3つの原始格子ベクトルa1、a2、a3を用いて周期的配置を定義します。

各オブジェクトの位置は次の式により算出される:

\[ \mathbf{r}_{ijk} = \mathbf{r}_0 + i\,\mathbf{a}_1 + j\,\mathbf{a}_2 + k\,\mathbf{a}_3 \]

ここでi、j、kはそれぞれ0からnx−1、ny−1、nz−1までの整数インデックスであり、r₀は原点である。a1、a2、a3を適切に選定することで、単純立方格子、面心立方格子、体心立方格子、六方格子、あるいは任意の非直交的な配置を含むあらゆるブラベー格子を構築することが可能となる。

5. Luaスクリプトモード

完全に任意な点分布、すなわち螺旋構造や準結晶、あるいは単純な格子として表現できないあらゆる幾何形状を生成する場合、ステップエディタにはLuaスクリプト用のインターフェースが用意されており、これはLuaスクリプトボタン(??)をクリックすることで利用可能となる。

この文脈においては、2つの組み込み関数が利用可能である:

これらの呼び出しの間には任意のLuaコードを記述可能であり、ループ処理や条件分岐、三角関数、さらにはmath.random()を利用した乱数生成も行えます。スクリプトの編集後、更新ボタンをクリックすることで点分布が再生成され、3Dビューも更新されます。

簡単な例として、z軸方向上に等間隔でオブジェクトを配置し、各位置にわずかなランダムなばらつきを加える方法を以下に示す。これは回折格子構造における製造上の不規則性をモデル化する際に有用である。

clear_points()

N = 14
lambda = 240e-9
roughness = 4e-9    -- set to 0, 1e-9, 2e-9, 5e-9, etc.

z = 0.0

for n = 1, N do
    for i = 1, 10 do
        add_point(0.0, 0.0, z + (math.random() * 2.0 - 1.0) * roughness)
        z = z + lambda
    end
end

6. 例:六方格子

クリスタルモードの実用的な例として、フォトニック結晶や六方配列したナノピラーアレイの作成が挙げられる。格子エディタの設定内容は??に、生成された3次元構造は??に示されている。

OghmaNano crystal editor configured for a hexagonal lattice. a1 is set to (3 µm, 0, 0), a2 to (1.5 µm, 2.59 µm, 0), a3 to (0, 0, 3 µm), with 3×3×3 objects.
六方格子用に設定された格子エディタであり、格子定数は3 µmである。基本ベクトルはa1 = (3 µm, 0, 0)、a2 = (1.5 µm, 2.59 µm, 0)、a3 = (0, 0, 3 µm)となる。
OghmaNano 3D simulation window showing a hexagonal array of red spheres arranged in a close-packed hexagonal pattern, viewed from above and to the side.
OghmaNanoの3Dビューに表示される生成された六方格子。行同士の間に60°の角度差が明確に確認でき、これはa2ベクトルがa1ベクトルに対して60°の角度をなすことと一致している。

主要な値は a2_x = a/2 = 1.5 µm、および a2_y = a√3/2 = 2.598 µmであり、これらにより a1とa2の間に60°の角度が生じ、六方対称性が形成される。面外方向のベクトルであるa3は、単純にz軸方向における層間の繰り返し距離となる。

7. 例:Luaスクリプトを用いた二重螺旋構造の生成

Luaスクリプトモードで作成可能な、より視覚的に複雑な例としては二重螺旋構造が挙げられる。これは共通の軸を中心に巻き付く2本の螺旋状ストランドから成る。このような幾何構造はブラベー格子として表現できず、スクリプトインターフェースが不可欠となる。??にLuaコードが、??に生成された構造が示されている。

OghmaNano Lua script editor showing the double helix code. Two helical strands are generated using sin and cos functions offset by pi, with 200 points per strand over 6 turns.
この二重螺旋構造を生成するためのLuaスクリプトでは、パラメトリックな三角関数を用いて2本の螺旋ストランドを生成しており、それらは螺旋軸を中心にπラジアンだけ位相がずれている。
OghmaNano 3D simulation window showing a green double helix structure — two interleaved helical strands winding along the z axis over six complete turns.
OghmaNanoの3Dビューに表示された二重螺旋構造。2本の螺旋ストランドが6回転分にわたって絡み合いながら形成されており、非周期構造の生成においてLuaスクリプトモードがいかに柔軟に利用できるかを示している。

この構造を生成するためのLuaスクリプト全体は以下の通りである:

clear_points()

N = 200
radius = 1.5e-6
pitch = 3e-6
turns = 6

for i = 1, N do
    t = (i / N) * turns * 2 * math.pi

    -- first helix strand
    x1 = radius * math.cos(t)
    y1 = radius * math.sin(t)
    z1 = (i / N) * turns * pitch
    add_point(x1, y1, z1)

    -- second helix strand offset by pi (opposite side)
    x2 = radius * math.cos(t + math.pi)
    y2 = radius * math.sin(t + math.pi)
    add_point(x2, y2, z1)

end

各螺旋ストランドは、パラメータtを0から2π×回転数まで変化させることで描画される。x座標およびy座標は指定された半径の円上を動き、z座標は指定されたピッチに従ってtに対して線形に増加する。2番目のストランドはπラジアンだけ位相がずれており、これにより各点において螺旋軸の反対側に配置されるため、特徴的な交互配置の二重螺旋構造が形成される。

8. まとめ

OghmaNanoのステップエディタには、3次元空間内でオブジェクトを周期的に配置するための3つの手法が用意されている。基本ステップモードでは単一の変位ベクトルを用いて単純な均一配列を生成できる。クリスタルモードでは3つの基本ベクトルa1、a2、a3を指定することで任意のブラベー格子を構築でき、六方格子や立方格子、あるいは非直交なカスタム配列も実現可能だ。Luaスクリプトモードではあらゆる幾何学的制約が取り除かれ、任意の数式から算出される座標にオブジェクトを配置できる。前述の二重螺旋構造の例がこれを示している。いずれのモードにおいても生成されるオブジェクトのコピーはすべて元のオブジェクトと同一の光学的・電気的特性を有するため、単一のオブジェクトを編集するだけで全体の周期構造を容易に変更できる。