왜 두 단계인가

컨포머 공간을 DFT로 직접 훑기에는 너무 비싸고, xTB 에너지만으로 결론을 내리기에는 오차가 크다. 그래서 xTB로 후보를 넉넉히 모으고, 살아남은 몇 개만 DFT로 다시 계산해 순위를 정한다. xTB는 "어떤 구조들이 있는가"에, DFT는 "그중 무엇이 가장 안정한가"에 답하는 셈이다.

전체 흐름

  1. 출발 구조를 xtb로 최적화한다 (2장).
  2. CREST로 앙상블을 만든다 (5장).
  3. 에너지 창 안의 컨포머를 개별 xyz로 나눈다.
  4. 각각을 DFT로 재최적화한다. 여기서는 ORCA의 r2SCAN-3c와 CPCM(water)를 썼다.
  5. DFT 에너지로 다시 줄 세우고, 필요하면 상위 몇 개만 진동수까지 계산해 자유에너지로 비교한다.

앙상블 나누기

crest_conformers.xyz는 여러 프레임 xyz라서 몇 줄로 나눌 수 있다.

lines = open("crest_conformers.xyz").read().splitlines()
n = int(lines[0])
frames = [lines[i:i + n + 2] for i in range(0, len(lines), n + 2)]
for k, fr in enumerate(frames[:8], 1):
    open(f"conf{k:02d}.xyz", "w").write("\n".join(fr) + "\n")

DFT 재최적화

# conf01.inp ... conf08.inp
! r2SCAN-3c Opt CPCM(water)
%pal nprocs 8 end
%maxcore 1500
* xyzfile 0 1 conf01.xyz

r2SCAN-3c는 비용 대비 구조와 컨포머 에너지가 좋은 복합 방법이다(ORCA 가이드 12장). 컨포머 에너지 차이가 1 kcal/mol 안쪽으로 붙어 있어 순위가 중요하다면, 최종 단일점을 더 높은 수준으로 한 번 더 계산한다.

결과: 순위가 얼마나 바뀌나

CREST 상위 8개(GFN2 기준 0.49 kcal/mol 안)를 ORCA 6.1.0으로 하나씩 재최적화했다. 8개 모두 정상 종료했고, 최적화에 23~40 사이클이 걸렸다. 8코어에서 컨포머당 8~14분, 차례로 돌려 모두 86분이다. CREST 탐색 전체(3분 45초)보다 20배 넘게 오래 걸린 셈이다.

CREST 순위ΔE GFN2 (kcal/mol)ΔE r2SCAN-3c (kcal/mol)DFT 순위φ / ψ 변화
10.000.556−83/73 → −86/73
20.320.557−83/72 → −86/73
30.410.658−144/164 → −156/154
40.480.003−104/161 → −62/145
50.490.001−107/160 → −62/145
60.490.002−107/160 → −62/145
70.490.004−99/161 → −63/145
80.490.015−88/163 → −62/145
GFN2와 r2SCAN-3c 상대 에너지 비교
왼쪽: 같은 컨포머의 GFN2 상대 에너지(가로)와 r2SCAN-3c 상대 에너지(세로). 점선 위에 있으면 DFT에서 상대적으로 불리해진 것이다. 오른쪽: xTB 구조(회색)에서 DFT 구조(주황)로 φ/ψ가 옮겨 간 방향.

GFN2에서 가장 낮았던 C7eq(CREST 1, 2위)가 r2SCAN-3c에서는 0.55 kcal/mol 위로 올라갔고, 가장 낮은 자리는 펼친 구조가 차지했다. GFN2에서 φ/ψ가 −88°~−107°/160° 근처로 조금씩 달랐던 CREST 4~8위는 DFT 최적화 뒤 모두 −62°/145°의 한 구조로 모였다. 폴리프롤린 II(PII)나 β라고 부르는 영역이다. 무거운 원자끼리 맞춘 RMSD가 0.00 Å이고 에너지 차이도 0.01 kcal/mol 안이라, 표의 DFT 순위 1~5위는 사실상 같은 구조를 다섯 번 계산한 것이다. CREST 1위와 2위도 DFT에서는 같은 C7eq 구조(RMSD 0.01 Å)로 합쳐졌다. C5(CREST 3위)는 −156°/154°로 조금 움직여 0.65 kcal/mol에 남았다. 결국 8개 입력에서 서로 다른 DFT 극소는 세 개뿐이다.

순서는 뒤집혔지만 세 구조가 모두 0.7 kcal/mol 안에 있다. 이 정도 차이는 r2SCAN-3c 같은 방법의 전형적인 오차와 비슷한 크기라서, "물에서는 PII/β가 가장 안정하다"고 이 계산만으로 단정할 수는 없다. 게다가 여기 비교한 것은 연속체 용매 안의 전자 에너지뿐이고, 영점 에너지와 열 보정, 엔트로피는 들어 있지 않다. 알라닌 다이펩타이드는 기체상과 물에서 선호하는 구조가 다르고, 물에서는 PII/β와 αR이 많이 채워진다고 알려져 있다. 분자 내 수소결합에 기대는 C7eq는 물과의 수소결합이 빠진 연속체 모델에서 유리하게 나올 수 있다. 정량적인 분포가 필요하면 자유에너지 보정과 명시적 용매까지 고려해야 한다. 이 예제에서 분명하게 말할 수 있는 것은 GFN2의 순위를 그대로 믿으면 안 된다는 점, 그리고 xTB에서 여러 개로 보이던 구조가 DFT에서 하나로 합쳐질 수 있다는 점이다.

실전 팁

  • 재최적화 중 합쳐지는 컨포머: 이 예제에서는 8개가 3개로 줄었다. xTB에서 다른 극소였던 구조가 DFT에서는 같은 구조로 수렴하기도 하니, DFT 구조끼리 다시 RMSD로 중복을 걸러 낸다(crest --cregen).
  • 몇 개까지: 상위 몇 개가 아니라 에너지 창으로 고른다. 보통 GFN2 기준 3~6 kcal/mol 안의 컨포머를 DFT로 넘긴다. 이 예제의 상위 8개는 GFN2 기준 0.49 kcal/mol 안에 몰려 있어서 C7ax(1.13 kcal/mol)나 αR 쪽 컨포머는 한 번도 DFT로 계산하지 않았다. DFT에서 상대 에너지가 0.5 kcal/mol씩 움직인 것을 보면, 이런 구조도 넘겨 봐야 했다.
  • 전자 에너지와 자유에너지: 순위가 1 kcal/mol 안에서 갈리면, 남은 극소 몇 개에 진동수를 계산해 자유에너지로 비교한다. 합쳐진 뒤에는 극소가 몇 개 안 되므로 비용도 크지 않다.
  • 자동화 도구: 이 과정을 여러 단계로 자동화한 CENSO가 있다. 컨포머가 수십 개 이상이면 고려할 만하다.