1.Meshing
1. Meshing이란 무엇인가?
메싱은 연속적인 물리 영역을 컴퓨터가 처리할 수 있는 이산 점들의 집합으로 나누는 과정입니다. 예를 들어 한쪽 끝에는 촛불이 있고 다른 쪽 끝에는 얼음 덩어리가 있는 금속 막대를 따라 열이 흐르는 상황을 상상해 보십시오. 실제로는 막대를 따라 온도가 연속적으로 변하지만 시뮬레이션에서는 무한히 많은 값을 저장할 수 없습니다. 대신 막대는 유한한 수의 샘플 포인트(메시)로 표현되며 계산은 그 위치에서만 수행됩니다 (?? 참조). 메시를 사용하면 연속적인 문제를 수치 방법으로 해결할 수 있는 이산 문제로 변환할 수 있습니다. 이 원리는 물리학과 공학에서 널리 사용되는 유한차분, 유한요소 및 기타 계산 방법의 기초가 됩니다.
2. 서로 다른 문제를 위한 서로 다른 메시
OghmaNano에서는 세 가지 핵심 물리 모델이 해결됩니다: 광학 모델 (빛 흡수와 전파), 열 모델 (열 생성과 흐름), 그리고 전기 모델 (전하 수송과 재결합). 이러한 과정은 보통 매우 다른 길이 스케일에서 발생하므로 각각 자체 메시가 필요합니다. 예를 들어:
- 유기 태양전지: 전기적으로 중요한 효과는 활성층 (≈100 nm 두께)에 집중되므로 drift–diffusion 방정식은 그 영역에서만 풀면 됩니다. 하지만 빛은 소자 스택의 모든 층(≈1 µm 두께)과 상호작용하므로 광학 문제는 전체 소자에 대해 풀어야 합니다. 이 경우 광학 메시가 전체 스택을 포함하고, 전기 메시가 활성층에 집중됩니다.
- Quantum Well 레이저 다이오드: 이 소자는 quantum well (≈30 nm 두께)과 waveguide 층(≈1 µm 두께)에서 상당한 열을 생성할 수 있지만 이 열은 결국 수 센티미터 두께의 구리 히트싱크로 방출됩니다. 여기서 전기 효과는 소자 내부의 나노미터~마이크로미터 스케일에서 모델링되어야 하고, 열 효과는 히트싱크의 센티미터 스케일까지 확장되는 메시가 필요합니다.
실제로 이는 서로 다른 물리 효과가 서로 다른 길이 스케일에서 시뮬레이션되어야 함을 의미합니다. 또한 소자 구조에는 몇 나노미터 두께의 매우 얇은 접촉 또는 인터페이스 층이 포함되는 경우가 많습니다. 광학적으로 이러한 층은 빛의 파장보다 훨씬 작아 종종 무시할 수 있지만 전기적으로는 소자의 전류–전압 특성을 결정하기 때문에 매우 중요합니다. 이러한 효과를 포착하려면 해당 영역에 매우 세밀한 전기 메시를 사용하고 광학 메시를 더 거칠게 하여 그 위를 가로질러 정의할 수 있습니다.
OghmaNano는 모델을 결합할 때 자동으로 메시 간 보간을 수행합니다. 예를 들어 열 메시에서 열 프로파일을 정의했지만 전기 솔버가 국소 온도 값을 필요로 하는 경우 보간을 통해 값이 전달됩니다. 광학량(예: 캐리어 생성률)도 동일하게 필요할 때 광학 메시에서 전기 메시로 보간됩니다. 사용자가 이러한 전달을 직접 관리할 필요는 없습니다.
3. OghmaNano의 세 가지 메시
OghmaNano는 문제에 따라 별도로 정의할 수 있는 세 가지 독립 메시 - thermal, optical, electrical - 를 제공합니다. 각 메시에는 해당 ribbon 탭에서 접근할 수 있습니다 (Figure ?? 참조).
3.1 Electrical mesh
Electrical ribbon에서 Electrical mesh 버튼을 클릭하면 mesh editor 창이 열립니다 (??). 창 상단에는 X, Y, Z 버튼이 있습니다. 이 버튼은 시뮬레이션에서 활성화되는 공간 차원을 전환합니다. 예를 들어 Y만 활성화하면 1D 시뮬레이션이 되고, X와 Y를 함께 활성화하면 2D 시뮬레이션이 설정됩니다. 표시된 예에서는 X와 Y가 모두 활성화되어 있으므로 메시가 2D OFET 시뮬레이션을 위해 구성됩니다. 중앙의 표는 스프레드시트처럼 작동하며 각 활성 차원에 대한 메시 구조를 정의합니다. 주요 열은 다음과 같습니다:
- Thickness: 각 메시 영역의 물리적 두께.
- Mesh points: 해당 영역의 이산화 포인트 수.
- Step multiply: 영역 내부에서 격자 간격이 증가하는 비율.
예를 들어 값이
1.1이면 각 스텝이 이전 스텝보다 10%씩 증가합니다. - Left/Right: 메시 생성이 시작되는 소자 측을 설정합니다.
결과 메시 분포는 창 하단의 그래프에 표시되어 포인트 간격과 분포를 즉시 확인할 수 있습니다. Import from layer editor 버튼은 복잡한 소자를 위한 바로 가기 기능을 제공합니다. 이 버튼은 Y-메시를 초기화하고 Layer Editor의 모든 층을 자동으로 가져와 각 층에 네 개의 메시 포인트를 할당합니다. 이는 레이저 다이오드와 같이 많은 층을 가진 구조에서 특히 유용합니다.
Electrical mesh의 상세: ?? 는 electrical mesh가 어떻게 구성되는지를 보여줍니다. 메시의 시작점은 정확히 소자 경계가 아니라 소자 내부로 반 메시 간격만큼 이동한 위치입니다. 이렇게 하면 첫 계산 노드가 활성 시뮬레이션 영역 내부에 위치하게 되어 경계 조건(예: 전기 접촉)을 메시 외부의 명확한 위치에 적용할 수 있습니다. 동일한 규칙이 소자의 반대쪽 끝에도 적용되어 메시가 마지막 물리 지점보다 반 스텝 더 확장됩니다.
- 경계에서 직접 미분을 계산하려 할 때 발생하는 수치 문제를 피할 수 있습니다.
- 첫 번째와 마지막 메시 포인트를 실제 소자 내부를 가장 잘 나타내는 위치에 배치하면서 외부 조건을 일관되게 적용할 수 있습니다.
Automatic meshing: Layer thickness는 layer editor에서 정의됩니다. 소자의 물리적 구조를 정의한 후 사용자는 electrical mesh를 업데이트하여 메시 기하 구조가 소자의 실제 치수와 일치하도록 해야 합니다. 실제로 새로운 사용자들은 electrical mesh도 다른 CAD 표현과 마찬가지로 물리적 객체 크기와 일치해야 한다는 점을 종종 인식하지 못합니다.
설정 오류를 줄이기 위해 OghmaNano는 실행 시 자동 meshing 가정을 적용합니다. 시뮬레이션은 layer editor에서 지정된 층의 너비와 높이가 올바르다고 가정하고 이러한 치수를 electrical mesh에 자동으로 매핑하려고 시도합니다. 예를 들어 소자가 단일 층으로 구성되어 있고 해당 메시 높이가 잘못된 경우 시뮬레이션은 내부적으로 메시를 구성할 때 layer editor의 층 두께를 사용합니다.
소자 층의 수가 수직 메시 층의 수와 일치하면 각 메시 층은 자동으로 해당 소자 층 두께와 연결됩니다. 이러한 조정은 시뮬레이션 중 내부적으로 적용되며 editor에서 보이는 메시 매개변수는 수정되지 않습니다. 메시 층 수가 활성 소자 층 수와 일치하지 않거나 매핑이 모호한 경우 자동 meshing은 적용되지 않으며 메시 정의가 소자 구조와 일치하지 않는다는 오류와 함께 시뮬레이션이 종료됩니다.
3.2 Optical mesh
Optical mesh editor (??)는 electrical mesh editor와 레이아웃이 유사하지만 wavelength mesh를 정의하는 추가 패널이 포함되어 있습니다. 창 상단의 X, Y, Z 버튼은 공간 차원을 활성화하고 λ (Wavelength) 버튼은 스펙트럼 격자를 활성화합니다.
왼쪽 패널은 electrical mesh와 동일한 열 (Thickness, Mesh points, Step multiply, Left/Right)을 사용하여 나노미터 단위의 공간 이산화를 지정합니다. 오른쪽 패널은 Start 및 Stop 파장, points 수, 스텝 배수를 설정하여 스펙트럼 범위를 정의합니다. 이러한 파장 포인트는 ray tracing, FDTD, transfer matrix 시뮬레이션을 포함한 모든 광학 솔버에서 일관되게 사용됩니다.
Automatic meshing: 광학 시뮬레이션의 경우 소프트웨어는 광학 문제가 일관되도록 optical mesh를 자동으로 조정하려고 시도합니다. 보다 복잡한 2차원 또는 3차원 시뮬레이션에서 optical과 electrical mesh가 일치하지 않으면 솔버가 이를 자동으로 업데이트하려고 시도합니다. 이것이 불가능하거나 의도된 메시 구성이 명확하지 않으면 메시 정의가 일관되지 않다는 오류와 함께 시뮬레이션이 종료됩니다.
3.3 Thermal mesh
Thermal mesh editor (??)는 electrical 및 optical mesh editor와 동일한 방식으로 작동하며 공간 차원을 활성화하기 위한 X, Y, Z 버튼을 제공합니다. 또한 전용 T (Temperature) 메시가 포함됩니다.
온도 메시는 예를 들어 self-heating을 활성화하거나 온도 범위에 따른 전기 특성을 평가할 때처럼 시뮬레이션이 온도 의존성을 고려해야 할 때 사용됩니다. 시뮬레이션이 실행되기 전에 OghmaNano는 페르미 준위와 온도에 따른 캐리어 밀도 또는 Fermi–Dirac 적분과 같은 양을 미리 계산하여 테이블로 저장합니다. 이러한 테이블을 사용하면 실행 중 반복 계산 대신 값을 빠르게 조회할 수 있습니다.
대부분의 경우 thermal mesh는 자동으로 처리되지만 고급 사용자는 강한 온도 의존 문제가 있을 때 충분한 정확도를 보장하기 위해 범위와 해상도를 조정할 수 있습니다.
4. OghmaNano에서 언제 meshing을 신경 써야 하는가?
Electrical mesh: Layer Editor는 소자를 서로 다른 재료의 층으로 나눕니다 (Section 3.1.3 참조). active로 표시된 층은 electrical 모델이 적용되는 층입니다. 이러한 층에는 finite-difference 메시가 정의되어야 합니다. 메시 길이는 active layer 길이와 정확히 일치해야 하며 그렇지 않으면 오류가 발생합니다. OghmaNano는 일반적으로 적절한 메시를 자동으로 생성하므로 대부분의 단순한 소자에서는 수동 설정이 필요하지 않습니다. 그러나 여러 active layer가 존재하거나 시뮬레이션 속도를 높이기 위해 메시 포인트 수를 줄이거나 정확도를 높이기 위해 늘려야 할 경우 electrical mesh를 수동으로 구성해야 할 수 있습니다.
Optical mesh: optical mesh는 공간 및 파장 샘플링을 모두 제어합니다. 시뮬레이션 파장 범위를 변경하거나 빛이 소자의 서로 다른 층과 상호작용하는 방식을 더 세밀하게 표현하기 위해 조정이 필요할 수 있습니다. 메시 포인트 수를 늘리면 광학 정확도는 향상되지만 시뮬레이션 시간도 증가합니다.
Thermal mesh: thermal mesh는 self-heating이 활성화된 경우에만 관련됩니다. 이 경우 소자 전체의 온도 변화를 모델링하고 열 효과가 트랩 및 재결합 과정과 결합되는 것을 표현하기 위한 해상도를 제공합니다. 그렇지 않은 경우 OghmaNano가 자동으로 처리합니다.
5. Meshing 팁
1D, 2D, 3D 중 어느 차원으로 시뮬레이션해야 할까?
올바른 차원을 선택하는 것은 시뮬레이션 설정에서 가장 중요한 결정 중 하나입니다. 관심 있는 물리를 포착하는 데 필요한 최소 차원을 항상 사용해야 하며 이는 시간과 계산 자원을 절약합니다.
- Solar cells: 변동이 주로 수직(두께) 방향에서 발생하므로 일반적으로 1D 메시만 필요합니다.
- Optical filters: 주요 광학 간섭이 스택 방향에서 발생하므로 역시 보통 1D입니다.
- OFETs: 반도체를 통한 수직 전류 흐름과 소스–드레인 사이의 수평 전류를 모두 해석해야 하므로 2D가 필요합니다.
속도 대 정확도
메시 포인트를 많이 추가할수록 항상 정확도가 증가한다고 생각하기 쉽습니다. 실제로는 어느 정도까지는 도움이 되지만 너무 많은 포인트는 시뮬레이션을 덜 정확하거나 불안정하게 만들 수도 있습니다. 제한 요소는 종종 계산 성능이 아니라 수치 조건수입니다. 많은 소자 시뮬레이션에서는 매우 작은 값(예: 밀도 또는 재결합률)과 매우 큰 값(전기장, 전류, 도핑)이 동시에 존재합니다. 컴퓨터는 유한 정밀도 연산을 사용하므로 매우 큰 수와 매우 작은 수가 함께 포함된 계산에서는 유효 숫자가 손실될 수 있습니다. 이러한 정밀도 손실은 오차의 주요 원인이 되며 가짜 진동, 노이즈 전류 또는 수렴 문제를 유발할 수 있습니다.
메시 밀도를 증가시키면 이 문제가 오히려 더 심해질 수 있습니다. 더 촘촘한 메시에서는 국소 기울기가 더 커지고 미분 항이 증가하며 이웃 노드 간 결합이 강해집니다. 이는 선형 시스템에서 최소값과 최대값 사이의 범위를 더 크게 만들 수 있습니다. 결과적으로 솔버가 실제 물리와 수치 노이즈를 구분하기 어려운 조건수가 나쁜 문제가 될 수 있습니다. 이러한 경우에는 약간 더 거친 메시가 더 매끄러운 필드와 더 나은 조건수를 제공하여 더 신뢰할 수 있는 결과를 줄 수 있습니다.
좋은 작업 흐름은 먼저 거친 메시로 시작하여 설정이 올바른지 확인하고 정성적 동작이 맞는지 확인한 후 필요한 만큼만 메시를 정밀화하는 것입니다. 메시 정밀화는 근거에 기반해야 합니다. 핵심 출력(JV 곡선, 캐리어 프로파일, 광학 생성 등)이 메시 포인트를 추가해도 더 이상 의미 있게 변하지 않는다면 추가 정밀화는 정확도를 개선하지 않을 가능성이 큽니다.
OghmaNano에서 소자를 설정할 때 다음 지침을 고려하십시오:
- 가능한 최소 차원을 사용: 가능하면 1D를 사용하고 물리가 요구할 때만 2D/3D로 이동합니다.
- 가능한 메시 포인트 최소화: 핵심 물리를 포착하는 최소 포인트 수를 목표로 합니다. 이는 속도를 높이고 수치적 안정성을 향상시킬 수 있습니다.
- 포인트 수가 많다고 항상 좋은 것은 아님: 메시 밀도를 높였을 때 노이즈 전류, 수렴 문제 또는 불안정한 프로파일이 발생하면 포인트 수를 줄이거나 중요한 영역만 정밀화하십시오.
- 탐색에는 거친 메시 사용: 피팅을 테스트하거나 일반적인 소자 거동을 조사할 때 메시 밀도를 줄여 빠른 피드백을 얻고 이후 필요한 영역만 정밀화하십시오.
- 목적을 가지고 정밀화: 실제 기울기가 존재하는 영역(인터페이스, 공핍 영역, 얇은 층)에 포인트를 추가하고 모든 곳을 균일하게 정밀화하지 마십시오.