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는 전극 사이에 낀 산란 영역이다

그림 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번 원자, Å)을 N으로 치환한 C19N 을 쓴다( Å).
- 전극 경계에 인접한 산란 영역 원자들은 potential이 bulk 값으로 회복될 만큼의 여유(screening 길이)를 가져야 한다. 산란 영역 길이에 대한 수렴 검사는 Advanced 챕터에서 다룬다.

그림 2. C19N device 구조(input.fdf 렌더, 20원자) — 정중앙 11번 원자만 N(파란색)이고 나머지는 C(회색)다. 양 끝 4원자씩은 전극 cell과 동일한 배열의 전극 복제 영역이다.
0 V에서 두 전극의 화학 퍼텐셜은 같지만(), 계산 자체는 이미 열린 경계조건의 NEGF다. TranSIESTA의 self-consistent NEGF 형식은 Brandbyge et al. [3] 및 Papior et al. [4]에 따른다. 밀도는 Green function의 복소평면 contour 적분
으로 구해지고, 이것이 SCF 사이클을 돈다. 0 V 결과는 그 자체로 transmission 계산(챕터 07)의 입력이자, finite-bias chain(챕터 09)의 출발점이다.
입력 파일

그림 3. TranSIESTA 평형 밀도 적분의 복소평면 contour — 실수축 대신 Green 함수가 매끄러운 복소평면(circle + line + tail, = 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
# ------------------------------------------------------------
# 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
이후 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
# ------------------------------------------------------------
# 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 transiesta | siesta 실행이 대각화 대신 NEGF SCF를 수행하도록 전환 |
TS.Voltage | 전극 간 전압. 아래 mu와 contour 경계가 전부 이 값의 심볼 V를 참조하므로, bias를 바꿀 때 이 한 줄이 기준이 된다 |
TS.ChemPots + TS.ChemPot.Left/Right | 화학 퍼텐셜 정의. 대칭 규약 를 썼다(한쪽을 0에 고정하는 규약도 가능 — 챕터 09). 각 에 딸린 평형 contour 이름 목록을 contour.eq로 지정 |
TS.Contour.C-* / T-* | 평 형 밀도 적분 경로 — 복소평면의 원호(circle)와 Fermi 꼬리(tail). 경계가 V/2 심볼로 쓰여 있어 bias에 자동 연동된다 |
TS.Contours.nEq | bias 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(이 예제에서 )다.
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/overlap | TBtrans의 입력 (챕터 07) |
trans.TSDE | density matrix + energy density matrix | finite-bias chain의 필수 이어받기 파일 (챕터 09) |
trans.DM | density matrix | 재시작·다음 bias의 SCF initial guess |
trans.XV | 최종 구조 | bias 간 geometry 동일성 확인 |
네 파일이 모두 있어야 이후 챕터를 진행할 수 있다.
연습문제
- N 위치를 11번에서 8번 원자로 옮긴 비대칭 device를 만들어 0 V 계산을 반복하라. 이 결과는 챕터 09의 정류(rectification) 논의에서 다시 쓴다.
- 산란 영역을 늘린 C27N(28원자, Å, N은 중앙 유지) device를 만들어 같은 계산을 수행하고, SCF 수렴에 필요한 iteration 수와 결과를 비교하라. 산란 영역 길이 수렴은 Advanced 챕터 주제다.
TS.ChemPot블록에서 규약을 대신 Left는 0, Right는 로 바꾸었을 때 0 V 결과가 달라지는지 확인하고, finite bias에서 두 규약의 차이가 물리량에 영향을 주는지(주지 않는지) 설명하라.