흔한 입력 실수
처음 ORCA를 쓰며 가장 자주 깨지는 지점들을 모았다. 대부분 입력 한 줄 차이다. ★ 표시는 이 가이드를 만들며 ORCA 6.1.1로 직접 돌려 보다 실제로 부딪힌 것이다.
| 실수 | 증상 · 고치는 법 |
|---|---|
| 출력을 리디렉션 안 함 | orca a.inp만 치면 결과가 화면을 스쳐 사라진다. 항상 orca a.inp > a.out. |
| 최적화 안 한 구조에서 진동수 | 그래디언트가 0이 아닌 점에서 Freq를 돌리면 허수 진동수가 엉뚱하게 뜬다. 같은 레벨로 먼저 Opt. |
| 종마다 다른 기저집합 | 반응 에너지를 비교하는데 종마다 기저집합이 다르면 오차가 상쇄되지 않는다. 모든 종을 같은 기저집합으로. |
| DFT에 분산 보정 빠짐 | B3LYP 같은 표준 DFT는 분산력을 못 잡는다. 거의 항상 D4를 같이 켠다. |
| 다중도 오입력 | * xyz 0 1의 둘째 수가 다중도(2S+1)다. 홀수 전자인데 1을 쓰면 SCF가 깨진다. 라디칼이면 UKS도 함께. |
| RIJCOSX인데 보조 기저집합 없음 | RIJCOSX에는 def2/J가 짝이다. 빠뜨리면 느려지거나 오류가 난다. |
| 정상 종료를 성공으로 착각 | TERMINATED NORMALLY는 “끝까지 돌았다”일 뿐이다. 수렴 · 허수진동수 · ⟨S²⟩를 직접 확인한다. |
| ★ DLPNO + Extrapolate에 AutoAux 누락 | ! DLPNO-CCSD(T) Extrapolate(3/4,cc)만 쓰면 “보조 기저집합 필요”로 죽는다. AutoAux를 붙인다. |
| ★ Extrapolate 콤마 뒤 공백 | Extrapolate(3/4, cc)(공백)는 파싱 실패. Extrapolate(3/4,cc)로 붙여 쓴다. |
★ DFT(D4) → CCSD(T)를 한 $new_job에 | D4 분산이 CC 단계로 넘어가 “dispersion + correlated method” 오류로 죽는다. CC는 입력 파일을 분리하고 D4를 뺀다. |
| CCSD(T)에 분산 보정 추가 | CCSD(T)는 분산을 내재한다. D4를 또 넣으면 이중 계산이다. CC 단계엔 분산 보정 없이. |
SCF가 수렴하지 않을 때
매뉴얼 §8.3은 SCF 수렴 실패가 거의 항상 열린 껍질 상황에서 나오고, 해결책의 핵심은 “더 나은 초기 궤도(better starting orbitals)”라고 못 박는다. 권장 전략은 이렇다.
전략 ① — 작은 기저집합으로 먼저 수렴
# 1단계: 작은 기저집합 + 느슨한 수렴 + 강한 감쇠
! BP86 def2-SV def2/J SlowConv LooseSCF
%scf
MaxIter 300
end
* xyzfile 0 3 mol.xyz
$new_job
# 2단계: 1단계의 궤도를 읽고 큰 기저집합으로 확장
! BP86 def2-TZVP def2/J MOREAD
%moinp "step1.gbw"
%scf
GuessMode CMatrix
end
* xyzfile 0 3
$new_job
# 3단계: 목표 함수로 마무리
! B3LYP D4 def2-TZVP RIJCOSX def2/J MOREAD
%moinp "step2.gbw"
* xyzfile 0 3
전략 ② — SOSCF 또는 TRAH 활용
DIIS가 0.001 언저리에서 정체되면 2차 SCF(SOSCF)나 TRAH(Trust-Region Augmented Hessian)를 켠다.
%scf
SOSCF true # 2차 SCF
SOSCFStart 0.001 # DIIS 오차가 이보다 작으면 SOSCF로 전환
end
# 가장 어려운 경우의 마지막 수단: TRAH
! B3LYP def2-TZVP TRAH
전략 ③ — 큰 감쇠와 level shift
%scf
DampFac 0.90 # 큰 감쇠
DampErr 0.02 # DIIS 오차가 이 값 이하가 되면 감쇠 끔
Shift shift 0.5 erroff 0 end # 가상 궤도를 0.5 Eh 만큼 위로 밀어 올림
end
전략 ④ — 연관된 닫힌 껍질에서 시작
홀수 전자 시스템이 잘 수렴하지 않으면, 양이온이나 음이온의 닫힌 껍질 계산을 먼저 하고 그 궤도를 읽어 오는 방법이 있다. 닫힌 껍질이 대체로 더 잘 수렴한다.
매뉴얼도 대놓고 말하듯, 수렴 실패의 가장 흔한 원인은 “말도 안 되는 구조”다. 결합 길이가 0.5 Å로 짧거나, 두 원자가 같은 자리에 있거나, 단위가 Å이 아니라 bohr인 채로 들어갔거나 하는 경우다. 방법을 바꾸기 전에 좌표가 화학적으로 말이 되는지부터 확인한다.
최적화가 발산할 때
- 최대 step 줄이기:
%geom MaxStep 0.1 end(단위 bohr). 진동을 잠재운다. - 좌표계 전환:
!COpt로 데카르트 좌표를 시도한다. - 초기 헤시안 강화: 싼 방법으로 헤시안을 계산한 뒤
InHess Read로 읽어 온다. 매뉴얼이 드는 예가 “1단계 NumFreq → 2단계 OptTS” 패턴이다. - SCF 임계값 강화: 평탄한 표면에서는 SCF 잡음이 그래디언트를 흔든다.
TightSCF이상을 권한다. - 적분 격자 강화:
DefGrid3으로 DFT 격자 정밀도를 올린다.
진동수에 작은 음수가 섞일 때
허수가 ±10~30 cm⁻¹ 정도로 작으면 대개 “진짜 음의 곡률”이 아니라 수치 잡음이다. 아래 순서로 시도해 본다.
VeryTightSCF DefGrid3로 SCF와 격자 정밀도를 올린 뒤 재최적화 + 재계산.VeryTightOpt로 최적화 임계값을 강화.NumFreq CentralDiff true로 양측 차분(시간은 2배가 된다).
반대로 큰 허수(수백 cm⁻¹)는 진짜 음의 곡률이다. 그 모드 방향으로 약간 변위를 줘서 재최적화하면 된다.
orca_pltvib를 쓰면 변위된 좌표를 쉽게 만들 수 있다.
메모리 부족
“Please increase MaxCore” 메시지를 만났다면 아래를 점검한다.
%maxcore값을 늘린다 (단위 MB). 가용 메모리의 60~70%까지 배정한다.- 병렬 프로세스 수를 줄여 코어당 메모리를 늘린다.
- 스크래치 디렉토리(
$ORCA_SCRDIR)가 용량이 넉넉한 빠른 SSD를 가리키는지 확인한다. - 가능하면 RI 근사(
RIJCOSX,RI-JK)를 켜 메모리를 아낀다.
# 클러스터 작업 스크립트에서 스크래치 설정 예
export ORCA_SCRDIR=/scratch/$USER/orca_$$
mkdir -p $ORCA_SCRDIR
cd $ORCA_SCRDIR
orca $SLURM_SUBMIT_DIR/job.inp > $SLURM_SUBMIT_DIR/job.out
cp -r * $SLURM_SUBMIT_DIR/
cd / && rm -rf $ORCA_SCRDIR
병렬이 느릴 때
코어 수를 늘렸는데 속도가 별로 안 빨라지면 아래를 점검한다.
- I/O 병목: 네트워크 디스크에서 실행하면 모든 코어가 같은 디스크를 두드려 느려진다. 반드시 로컬 디스크(NVMe SSD 이상)를 스크래치로 쓴다.
- 과도한 병렬화: RI-DFT는 16코어 이상에서 효율이 떨어진다. CCSD(T)는 8~16코어가 무난하다.
- OpenMPI 통신: 노드 간 통신(infiniband 등)이 없으면, 한 노드 안에서만 병렬화하는 게 좋다.
- NumFreq, NEB처럼 “독립적인 변위·이미지”가 많은 작업은
nprocs_group으로 변위 단위 병렬화를 쓰면 좋다.
스핀 오염
UKS/UHF 계산에서 ⟨S²⟩이 이상값에서 벗어나면 “스핀 오염”이 있다고 한다. 도플렛(S = 1/2)의 이상값은 0.75, 트리플렛(S = 1)은 2.0이다. 벗어남이 5% 이내면 무시할 만하지만, 10%를 넘으면 결과를 믿기 어려워진다.
매뉴얼이 권하는 진단 도구는 !UNO !UCO 조합이다.
! B3LYP D4 def2-SVP UNO UCO TightSCF
* xyzfile 0 1 mol.xyz
출력의 UCO Overlap 테이블에서 0.85 이하 오버랩이 보이면 “스핀-커플드 페어”로 읽는다. 단일항 디라디칼이나 결합이 끊어지는 과정에서 자주 나온다. 이런 시스템은 대체로 단일참조 DFT/HF의 한계 영역이라, 정확한 결과를 원하면 다중참조(CASSCF/NEVPT2)로 넘어가는 게 좋다.
상황별 권장 워크플로우
일반 유기 분자의 정밀 자유에너지
r2SCAN-3c Opt Freq로 구조와 깁스 보정을 얻는다.DLPNO-CCSD(T)/cc-pVTZ + Extrapolate(3/4,cc)단일점으로 전자 에너지를 정밀화한다.- 필요하면
SMD로 용매 효과를 더한다.
전이금속 착물 (3d 금속)
TPSSh D4 def2-TZVP Opt Freq— 메타-GGA 하이브리드가 스핀 상태를 잘 묘사.- 스핀 상태가 미묘하면 같은 방법으로 다른 다중도를 모두 계산해 비교한다.
- UV-Vis는
TDDFT, EPR g-tensor는!EPRNMR로 추가 계산한다.
유기 광물리 (UV-Vis, 형광)
- 기저 상태:
B3LYP D4 def2-TZVP Opt. - 흡수: 위 구조에서
TDDFT NRoots=20. - 형광:
%tddft IRoot 1 end !Opt로 S1 최적화 후 다시 TD-DFT. - 전하 이동 의심:
CAM-B3LYP또는wB97X-V로 재계산하여 비교.
반응 메커니즘
- 반응물·생성물을
r2SCAN-3c로 최적화. !XTB NEB-TS로 빠르게 TS 1차 추정.- DFT 수준으로 OptTS + AnFreq + IRC. 정확히 하나의 허수 모드 확인.
- 모든 상태점에 DLPNO-CCSD(T) 단일점 + SMD 보정.
- ΔG‡, ΔGrxn 산출.
매뉴얼이 강조하는 일반 원칙
매뉴얼 §8.2가 강조하듯, 최소 기저집합(STO-3G)나 3-21G 같은 작은 split-valence 기저집합은 정량적 결과엔 부적합하다. Karlsruhe def2 시리즈를 일관되게 쓰는 게 좋다. 반응물·생성물·전이 상태 모두 같은 기저집합을 써야 오차가 상쇄된다.
큰 기저집합(예: def2-QZVPP)로 작업할 때 DFT 적분 격자가 DefGrid2에 머물러 있으면,
정확도가 격자 잡음에 묶인다. 큰 기저집합을 쓸 때는 DefGrid3으로 격자도 같이 올린다.
매뉴얼의 표현을 빌리면 “격자에서 온 수치 잡음으로 애써 얻은 정확도를 깎아 먹지 말 것”.
D3·D4 보정은 계산 시간을 거의 늘리지 않으면서 정확도를 크게 끌어올린다. 함수가 분산력을 자체 처리(VV10 내장)하는 경우가 아니면 거의 항상 켜는 게 좋다.
ORCA TERMINATED NORMALLY가 떠도 결과가 저절로 믿을 만해지는 건 아니다.
(1) SCF 수렴 여부, (2) 최적화 수렴 여부, (3) 진동수가 모두 양수인지(TS는 허수 하나인지),
(4) ⟨S²⟩가 합리적인지, (5) 출력의 WARNING 메시지를 반드시 직접 확인한다.
매뉴얼 §8.2 끝에 인상적인 한마디가 있다. “문제를 푸는 건 컴퓨터가 아니라 사람이다. 숫자 한두 개를 더 정확하게 만든다고 해서, 그게 우리가 다루는 분자의 화학·분광학을 이해하는 데 곧장 도움이 되는 건 아니다. 기술적 디테일에 갇혀 본래의 통찰을 놓치는 위험은 실제로 있다.” 계산의 정확도를 좇는 건 좋지만, 그게 화학적 통찰을 대신해 주지는 않는다는 걸 잊지 말자.
여기까지가 이 가이드의 마지막 장이다. 일상 연구에 조금이라도 도움이 됐으면 한다. 더 깊은 옵션이나 특수한 사용 사례는 ORCA 매뉴얼 6.0.0판(공식 PDF)을 직접 펴 보면 된다. 그리고 막히는 데가 있으면 공식 포럼(orcaforum.kofo.mpg.de)에서 비슷한 사례를 찾아보는 게 큰 도움이 된다.