홈 예제 스크린샷 사용자 매뉴얼 Bluesky 로고 YouTube ☰
OghmaNano 유기/페로브스카이트 태양전지, OFET 및 OLED 시뮬레이션 다운로드 Quick Start guide

스텝 에디터: OghmaNano에서의 주기적 객체 배치

1. 서론

많은 광자 및 전자 소자 구조는 본질적으로 주기적이다. 분포형 피드백(DFB) 격자는 정밀하게 간격을 둔 능선 또는 슬롯 배열을 필요로 하며, 광결정은 규칙적인 유전체 물체 격자로 구성된다. 플라즈모닉 메타표면 역시 파장보다 작은 간격으로 반복되는 공진기 요소들로 이루어진다. 이러한 구조들을 개별 물체 단위로 제작하는 것은 비현실적이므로, OghmaNano는 단일 물체를 입력받아 사용자가 지정한 3차원 좌표 위치에 그 복제본들을 자동으로 생성해주는 스텝 에디터를 제공한다.

이 시스템의 중요한 특성은 생성된 모든 복제체가 원본 객체와 동일한 광학적 및 전기적 특성을 갖는다는 점입니다. 이러한 복제체들은 서로 독립적인 객체가 아니라 정확히 동일한 복제품들의 집합체이며, 모두 원본 객체의 재료 설정, 층 특성 및 광학 상수를 그대로 상속받습니다. 이로 인해 사용자는 원본 객체만 편집함으로써 전체 주기적 구조를 손쉽게 수정할 수 있습니다.

스텝 에디터는 복잡도가 점차 증가하는 세 가지 모드를 제공한다. 즉, 단순한 균일 배열 생성에 사용되는 기본 스텝 모드, 기본 격자 벡터로 구조를 정의하는 크리스탈 모드, 그리고 임의의 점 분포를 생성할 수 있는 Lua 스크립팅 모드가 있다.

2. 스텝 에디터에 접근하는 방법

스텝 에디터에 접근하려면 OghmaNano의 메인 시뮬레이션 창(??)에서 시작합니다. 복제하고자 하는 객체를 마우스 오른쪽 버튼으로 클릭한 뒤 컨텍스트 메뉴에서 ‘객체 편집’을 선택하면 ??에 나타난 객체 에디터가 열립니다.

객체 편집기에서 ‘스텝’ 행을 찾으십시오. 이 행에는 복사본들 간의 변위값(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 값은 0으로 둡니다. 이 설정은 ??에 나타난 구성으로, 단순한 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 nm 간격을 두고 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.
크리스탈 모드에서는 세 개의 기본 격자 벡터 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) 좌표에 점들을 배치할 수 있습니다. 3차원 뷰를 업데이트하려면 새로고침 버튼을 클릭하십시오.

4. 크리스탈 격자 모드

비직교적이거나 불균일한 주기성을 갖는 구조물의 경우 스텝 에디터 툴바에 있는 Crystal 버튼을 클릭하여 크리스탈 모드로 전환하면 됩니다(??). 이 모드에서는 결정학에서 브라베 격자를 기술할 때 사용되는 것과 동일한 방식으로 세 개의 기본 격자 벡터 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 스크립트 버튼(??)을 클릭함으로써 이용할 수 있다.

이 컨텍스트에서는 두 가지 내장 함수를 사용할 수 있습니다:

이러한 함수 호출들 사이에는 루프, 조건문, 삼각함수 및 math.random()을 통한 난수 생성 등 어떠한 유효한 Lua 코드도 사용할 수 있습니다. 스크립트를 편집한 후 ‘새로고침’ 버튼을 클릭하면 점 분포가 재생성되고 3차원 뷰가 업데이트됩니다.

간단한 예시로서, 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 마이크로미터입니다. a1 = (3 마이크로미터, 0, 0), a2 = (1.5 마이크로미터, 2.59 마이크로미터, 0), a3 = (0, 0, 3 마이크로미터)입니다.
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의 3차원 뷰어에 나타난 육각 격자 구조. 행들 간의 60° 각도 차이가 명확히 드러나 있으며, 이는 a1 벡터에 대해 60° 기울어진 a2 벡터와 일치함.

주요 값으로는 a2_x = a/2 = 1.5 µm 및 a2_y = a√3/2 = 2.598 µm가 있으며, 이 값들에 의해 a1과 a2 사이에 60° 각도가 형성되어 육각 대칭성이 결정됩니다. 면외 방향 벡터인 a3는 단순히 z축 방향으로 층간 반복 거리를 나타냅니다.

7. 예제: Lua 스크립팅을 이용한 이중 나선 구조

Lua 스크립팅 모드를 활용하여 제작할 수 있는 시각적으로 복잡한 예시로는 공통 축을 중심으로 감겨 있는 두 개의 나선형 가닥으로 구성된 이중 나선 구조가 있다. 이러한 기하학적 구조는 브라베 격자로 표현될 수 없으므로 스크립팅 인터페이스가 필수적이다. 해당 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 스크립트입니다. 이 스크립트는 매개변수화된 삼각함수를 활용하여 두 개의 나선형 가닿을 생성하며, 이들 가닿은 헬릭스 축을 기준으로 π 라디안만큼 서로 오프셋됩니다.
OghmaNano 3D simulation window showing a green double helix structure — two interleaved helical strands winding along the z axis over six complete turns.
OghmaNano의 3차원 뷰어에 표시된 이중 나선 구조물이다. 서로 교차하는 두 개의 나선형 가닥이 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와 선형적으로 증가한다. 두 번째 나선형 가닥은 π 라디안만큼 위상이 이동되어 각 지점에서 나선축의 반대편에 위치하게 되며, 이를 통해 특징적인 교차형 이중나선 구조가 형성된다.

8. 요약

OghmaNano의 스텝 에디터는 3차원 공간에 객체를 주기적으로 배치하기 위한 세 가지 방법을 제공한다. 기본 스텝 모드에서는 단일 변위 벡터를 이용해 단순한 균일 배열을 생성할 수 있다. 크리스탈 모드에서는 세 개의 기본 격자 벡터 a1, a2, a3를 활용하여 육각형, 입방형 혹은 기타 비직교적인 브라베 격자 구조를 설정할 수 있다. Lua 스크립팅 모드에서는 모든 기하학적 제약이 사라지며, 어떠한 수학적 표현식으로도 계산된 좌표에 객체를 배치할 수 있다. 위에서 제시된 이중 나선 구조 예시가 이를 잘 보여준다. 이 세 가지 모드 모두에서 생성된 객체 복사본들은 원본 객체와 동일한 광학적 및 전기적 특성을 유지하므로, 단 하나의 객체만 편집함으로써 전체 주기적 구조를 변경할 수 있다.