본문으로 건너뛰기

06. Device 0 V — TranSIESTA self-consistent NEGF

학습 목표

  • 전극 복제 영역과 산란 영역으로 이루어진 device 셀의 구성 원리를 설명할 수 있다.
  • Device 계산의 입력을 input.fdf(구조·basis·SCF)와 TS.fdf(TranSIESTA 블록)로 분리해 작성할 수 있다.
  • TS.ChemPots, TS.Elecs, contour 블록의 역할과 상호 참조 구조를 읽을 수 있다.
  • 0 V TranSIESTA SCF를 실행하고, trans.TSDE·trans.TSHS 생성과 수렴 여부를 확인할 수 있다.
  • 0 V 계산이 finite-bias chain의 시작점이 되기 위해 저장해야 하는 파일이 무엇인지 안다.

배경: device는 전극 사이에 낀 산란 영역이다

device 구성 배치

그림 1. device 구성 — 양끝 블록은 전극 단위 셀의 복사본이고, 그 사이가 산란 영역이다. 전극 Hamiltonian은 Electrode.TSHS 경로 참조로 공유하고, Green 함수를 푸는 범위는 TBT.Atoms.Device로 지정한다. (개념도)

NEGF 계산에서 device(산란 영역 셀)는 세 부분으로 구성된다.

[ Left 전극 복제 ] [ 산란 영역 (scattering region) ] [ Right 전극 복제 ]
원자 1–4 (C) 원자 5–16 (C ... N ... C) 원자 17–20 (C)
z = 0.00–3.87 z = 5.16–19.35 z = 20.64–24.51
  • 전극 복제 영역: device 셀의 양 끝은 챕터 05의 전극 단위 cell과 원자 종류·간격·배열이 완전히 동일해야 한다. TranSIESTA는 이 영역의 Hamiltonian을 전극 TSHS의 것으로 접합하므로, 여기가 bulk 전극과 조금이라도 다르면 경계에서 인공 산란이 생긴다.
  • 산란 영역: 결함·분자·계면 등 관심 대상이 들어가는 곳. 예제에서는 20원자 carbon chain의 정중앙(11번 원자, z=12.90z = 12.90 Å)을 N으로 치환한 C19N 을 쓴다(c=25.8c = 25.8 Å).
  • 전극 경계에 인접한 산란 영역 원자들은 potential이 bulk 값으로 회복될 만큼의 여유(screening 길이)를 가져야 한다. 산란 영역 길이에 대한 수렴 검사는 Advanced 챕터에서 다룬다.

C19N device 구조 렌더

그림 2. C19N device 구조(input.fdf 렌더, 20원자) — 정중앙 11번 원자만 N(파란색)이고 나머지는 C(회색)다. 양 끝 4원자씩은 전극 cell과 동일한 배열의 전극 복제 영역이다.

0 V에서 두 전극의 화학 퍼텐셜은 같지만(μL=μR=EF\mu_L = \mu_R = E_F), 계산 자체는 이미 열린 경계조건의 NEGF다. TranSIESTA의 self-consistent NEGF 형식은 Brandbyge et al. [3] 및 Papior et al. [4]에 따른다. 밀도는 Green function의 복소평면 contour 적분

ρ=1πImG(E)f(E)dE\rho = -\frac{1}{\pi} \int \mathrm{Im}\, G(E)\, f(E)\, dE

으로 구해지고, 이것이 SCF 사이클을 돈다. 0 V 결과는 그 자체로 transmission 계산(챕터 07)의 입력이자, finite-bias chain(챕터 09)의 출발점이다.

입력 파일

평형 밀도 복소평면 contour

그림 3. TranSIESTA 평형 밀도 적분의 복소평면 contour — 실수축 대신 Green 함수가 매끄러운 복소평면(circle + line + tail, ×\times = pole)으로 우회한다. TS.Contour 블록들이 이 경로를 정의한다. (개념도)

디렉토리 컨벤션은 전극과 나란히 bias 이름을 붙인다. 0 V device는 0bias/다.

work/
├── 01_electrode/
│ └── Electrode.TSHS # 챕터 05 산출물 (경로 참조로 공유)
└── 0bias/
├── input.fdf # 구조·basis·SCF + %include TS.fdf
├── TS.fdf # TranSIESTA 블록
├── C.psml
└── N.psml

역할 분리: input.fdf에는 어느 계산이든 공통인 것(구조, basis, SCF 설정)을, TS.fdf에는 TranSIESTA 고유 설정(전압, 화학 퍼텐셜, contour, 전극 정의)을 둔다. bias를 바꿀 때 TS.fdf만 손대면 되는 구조다.

input.fdf

0bias/input.fdf
# ------------------------------------------------------------
# 06. Device — C19N chain, 20원자 (11번 원자 N 치환), 0 V
# 좌 4원자 + 산란 영역 12원자 + 우 4원자 = 전극 C4 cell과 동일 배열
# ------------------------------------------------------------
SystemName C19N chain device
SystemLabel trans

NumberOfAtoms 20
NumberOfSpecies 2
%block ChemicalSpeciesLabel
1 6 C
2 7 N
%endblock ChemicalSpeciesLabel

LatticeConstant 1.0 Ang
%block LatticeVectors
15.000 0.000 0.000
0.000 15.000 0.000
0.000 0.000 25.800
%endblock LatticeVectors

AtomicCoordinatesFormat Ang
%block AtomicCoordinatesAndAtomicSpecies
7.500 7.500 0.000 1 # 1 - Left 전극 복제
7.500 7.500 1.290 1 # 2
7.500 7.500 2.580 1 # 3
7.500 7.500 3.870 1 # 4
7.500 7.500 5.160 1 # 5 - 산란 영역
7.500 7.500 6.450 1 # 6
7.500 7.500 7.740 1 # 7
7.500 7.500 9.030 1 # 8
7.500 7.500 10.320 1 # 9
7.500 7.500 11.610 1 # 10
7.500 7.500 12.900 2 # 11 - N (cell 중앙)
7.500 7.500 14.190 1 # 12
7.500 7.500 15.480 1 # 13
7.500 7.500 16.770 1 # 14
7.500 7.500 18.060 1 # 15
7.500 7.500 19.350 1 # 16
7.500 7.500 20.640 1 # 17 - Right 전극 복제
7.500 7.500 21.930 1 # 18
7.500 7.500 23.220 1 # 19
7.500 7.500 24.510 1 # 20
%endblock AtomicCoordinatesAndAtomicSpecies

# ----- basis / XC / grid — 전극과 동일해야 한다 -----
PAO.BasisSize DZP
XC.Functional GGA
XC.Authors PBE
MeshCutoff 300. Ry

# transport 방향 k는 1 — 열린 경계는 전극 self-energy가 담당한다
%block kgrid_Monkhorst_Pack
1 0 0 0.0
0 1 0 0.0
0 0 1 0.0
%endblock kgrid_Monkhorst_Pack

MaxSCFIterations 500
SCF.DM.Tolerance 1.0d-8
SCF.Mixer.Weight 0.2
SCF.Mixer.History 15
SpinPolarized T

# ----- finite-bias chain 시작점이 저장해야 하는 것 -----
DM.UseSaveDM T # 재시작 시 기존 DM 재사용
TS.HS.Save T # trans.TSHS 저장 (TBtrans 입력)
Write.DM T # trans.DM 저장

%include TS.fdf
0 V 계산은 finite-bias chain의 시작점이다

이후 finite-bias 계산(챕터 09)은 0 V의 trans.TSDE(density matrix + energy density matrix)를 이어받아 시작한다. 그래서 0 V input.fdf에는 DM.UseSaveDM T, TS.HS.Save T, Write.DM T가 반드시 들어가야 한다. 이 플래그들이 빠지면 TSDE/TSHS가 남지 않아 bias chain을 시작할 수 없다.

TS.fdf

0bias/TS.fdf
# ------------------------------------------------------------
# TranSIESTA 설정 — 0 V (finite-bias chain 시작점)
# TS.Voltage 한 줄만 바꾸면 mu와 contour가 전부 따라온다 (V 심볼 참조)
# ------------------------------------------------------------
SolutionMethod transiesta

TS.Voltage 0.00000 eV

# ----- 화학 퍼텐셜: 대칭 ±V/2 규약 -----
%block TS.ChemPots
Left
Right
%endblock TS.ChemPots

%block TS.ChemPot.Left
mu V/2
contour.eq
begin
C-Left
T-Left
end
%endblock TS.ChemPot.Left

%block TS.ChemPot.Right
mu -V/2
contour.eq
begin
C-Right
T-Right
end
%endblock TS.ChemPot.Right

# ----- 평형 contour (복소평면 적분 경로) -----
TS.Contours.Eq.Pole 2.50000 eV

%block TS.Contour.C-Left
part circle
from -40.00000 eV + V/2 to -10 kT + V/2
points 25
method g-legendre
%endblock TS.Contour.C-Left

%block TS.Contour.T-Left
part tail
from prev to inf
points 10
method g-fermi
%endblock TS.Contour.T-Left

%block TS.Contour.C-Right
part circle
from -40.00000 eV - V/2 to -10 kT - V/2
points 25
method g-legendre
%endblock TS.Contour.C-Right

%block TS.Contour.T-Right
part tail
from prev to inf
points 10
method g-fermi
%endblock TS.Contour.T-Right

# ----- 비평형 contour (finite bias에서만 실제 사용) -----
%block TS.Contours.nEq
neq
%endblock TS.Contours.nEq

%block TS.Contour.nEq.neq
part line
from -|V|/2 - 5 kT to |V|/2 + 5 kT
delta 0.01000 eV
method mid-rule
%endblock TS.Contour.nEq.neq

# ----- 전극 정의 -----
%block TS.Elecs
Left
Right
%endblock TS.Elecs

%block TS.Elec.Left
HS ../01_electrode/Electrode.TSHS
chemical-potential Left
semi-inf-direction -a3
electrode-position 1
%endblock TS.Elec.Left

%block TS.Elec.Right
HS ../01_electrode/Electrode.TSHS
chemical-potential Right
semi-inf-direction +a3
electrode-position end -1
%endblock TS.Elec.Right

블록별 해설:

블록/키워드의미
SolutionMethod transiestasiesta 실행이 대각화 대신 NEGF SCF를 수행하도록 전환
TS.Voltage전극 간 전압. 아래 mu와 contour 경계가 전부 이 값의 심볼 V를 참조하므로, bias를 바꿀 때 이 한 줄이 기준이 된다
TS.ChemPots + TS.ChemPot.Left/Right화학 퍼텐셜 정의. 대칭 규약 μL,R=±V/2\mu_{L,R} = \pm V/2를 썼다(한쪽을 0에 고정하는 규약도 가능 — 챕터 09). 각 μ\mu에 딸린 평형 contour 이름 목록을 contour.eq로 지정
TS.Contour.C-* / T-*평형 밀도 적분 경로 — 복소평면의 원호(circle)와 Fermi 꼬리(tail). 경계가 V/2 심볼로 쓰여 있어 bias에 자동 연동된다
TS.Contours.nEqbias window 안의 비평형 밀도 적분(실수축 근방). 0 V에서는 window가 없어 실질적으로 쓰이지 않지만, 챕터 09에서 그대로 재사용하도록 미리 정의해 둔다
TS.Elecs + TS.Elec.Left/Right전극 정의. HS는 챕터 05 산출물의 상대 경로 참조(복사 아님), chemical-potential은 위 ChemPot 이름과 연결, semi-inf-direction ±a3는 반무한 방향, electrode-position은 전극 복제 영역의 위치(1 = 원자 1부터, end -1 = 마지막 원자에서 끝)
스핀 처리

이 C19N 모델은 총 81가전자로 홀수 전자계다. 따라서 예제는 SpinPolarized T로 시작하며, 최종 자기모멘트와 spin-resolved transmission을 확인해야 한다. 비자성 해가 목표라면 spin-polarized 계산에서 최종 모멘트가 0인지 확인한 뒤에만 비스핀 계산으로 단순화한다.

실행

먼저 ../01_electrode/Electrode.TSHS가 존재하는지 확인한다. SIESTA 5.x에서 TranSIESTA는 별도 실행 파일이 아니라 siesta에 통합되어 있어, SolutionMethod transiesta가 설정된 입력으로 siesta를 실행하면 TranSIESTA SCF가 수행된다.

cd work/0bias
ls ../01_electrode/Electrode.TSHS # 전극 준비 확인
siesta < input.fdf > siesta.stdout

기존 density matrix가 없으면 TranSIESTA는 일반적으로 먼저 통상적인 주기 경계 SCF로 초기 밀도를 만든 뒤 NEGF 사이클로 전환한다. stdout에서 두 단계가 순서대로 보인다.

출력 분석

수렴 확인

TranSIESTA SCF 사이클의 로그에는 iteration마다 density matrix 변화량(dDmax)과 Hamiltonian 변화량(dHmax)이 찍힌다. 수렴 판정 기준은 SCF.DM.Tolerance(이 예제에서 10810^{-8})다.

grep -c "ts-scf" siesta.stdout # NEGF SCF 사이클이 돌았는지
tail -5 siesta.stdout # 정상 종료 라인
>> End of run: ...
Job completed

마지막 줄의 Job completed가 정상 종료의 기준이다. 중간에 끊긴 계산은 이 줄이 없다. dDmax가 iteration에 따라 단조롭게 떨어지지 않고 진동하면 SCF.Mixer.Weight를 낮추는 것이 첫 번째 처방이다.

산출물 확인

ls trans.TSHS trans.TSDE trans.DM trans.XV
파일내용쓰임
trans.TSHS수렴된 device Hamiltonian/overlapTBtrans의 입력 (챕터 07)
trans.TSDEdensity matrix + energy density matrixfinite-bias chain의 필수 이어받기 파일 (챕터 09)
trans.DMdensity matrix재시작·다음 bias의 SCF initial guess
trans.XV최종 구조bias 간 geometry 동일성 확인

네 파일이 모두 있어야 이후 챕터를 진행할 수 있다.

연습문제

  1. N 위치를 11번에서 8번 원자로 옮긴 비대칭 device를 만들어 0 V 계산을 반복하라. 이 결과는 챕터 09의 정류(rectification) 논의에서 다시 쓴다.
  2. 산란 영역을 늘린 C27N(28원자, c=36.12c = 36.12 Å, N은 중앙 유지) device를 만들어 같은 계산을 수행하고, SCF 수렴에 필요한 iteration 수와 결과를 비교하라. 산란 영역 길이 수렴은 Advanced 챕터 주제다.
  3. TS.ChemPot 블록에서 μ\mu 규약을 ±V/2\pm V/2 대신 Left는 0, Right는 V-V로 바꾸었을 때 0 V 결과가 달라지는지 확인하고, finite bias에서 두 규약의 차이가 물리량에 영향을 주는지(주지 않는지) 설명하라.