NOTE 32-04-00 · 정전기 방법: PPPM vs MSM
1. 일반 사항
A. 목적
- 이 노트는 슬랩 계의 장거리 정전기를 PPPM 또는 MSM 으로 설정하는 절차를 다룬다.
- 이 노트는 두 방법의 입력 차이, 제약, 계산 비용을 비교한다.
참고 쿨롱 상호작용은 거리에 반비례($1/r$)해서 천천히 줄어든다. 단순히 cutoff 로 자르면 오차가 크다. 에탄올 수산기처럼 부분 전하가 큰(q_O = -0.7e, q_H = +0.435e) 분자가 있으면 장거리 기여가 시스템 에너지에서 차지하는 몫이 커진다.
B. 적용 범위
boundary p p f(z 비주기) 슬랩 계에 적용한다.- 힘장 OPLS-AA, TraPPE-UA 와 정전기 PPPM, MSM 의 네 조합에 적용한다.
- 장거리 정전기는 다음 두 방법으로 처리한다.
- Particle-Particle Particle-Mesh (PPPM, Hockney & Eastwood 1988): FFT 기반이다. 분자동역학에서 가장 널리 쓰인다.
- Multilevel Summation Method (MSM, Hardy et al. 2009): 다중격자(multigrid) 기반이다. 슬랩 기하에 그대로 적용할 수 있다.
C. 결과 요약
- PPPM 은 슬랩 계에서
kspace_modify slab 3.0과 z 상단 벽이 필요하다. - MSM 은 실공간 pair style 로
lj/cut/coul/msm을 써야 한다.coul/long은 오류다. - MSM 은
compute group/group ... kspace yes를 지원하지 않는다. - MSM 은 실공간 Coulomb cutoff 를 스스로 바꾼다.
opls.data에서는 12 Å 이 9.37 Å 으로 줄어든다. - 2,471원자 계에서 MSM 은 PPPM + slab 보다 1.63배 느렸다. 첫 흡착층 구조는 통계 오차 안에서 같았다.
2. 준비 정보
A. 필요한 개념
- 계의 경계 조건이
boundary p p f(z 비주기) 임을 알아야 한다.
B. 참조 자료
| 참조 | 제목 |
|---|---|
| Hockney & Eastwood (1988) | R. W. Hockney, J. W. Eastwood, "Computer Simulation Using Particles", Adam Hilger (1988). ISBN: 0-85274-392-0. |
| Yeh & Berkowitz (1999) | I.-C. Yeh, M. L. Berkowitz, "Ewald summation for systems with slab geometry", J. Chem. Phys. 111, 3155-3162 (1999). DOI: 10.1063/1.479595 |
| Hardy et al. (2009) | D. J. Hardy, J. E. Stone, K. Schulten, "Multilevel Summation of Electrostatic Potentials Using Graphics Processing Units", Parallel Comput. 35, 164-177 (2009). DOI: 10.1016/j.parco.2008.12.005 |
LAMMPS kspace_style |
https://docs.lammps.org/kspace_style.html |
LAMMPS kspace_modify |
https://docs.lammps.org/kspace_modify.html |
LAMMPS fix wall/lj93 |
https://docs.lammps.org/fix_wall.html |
| PPPM vs MSM 글 | PPPM vs MSM 글 |
C. 사용 프로그램
| 항목 | 용도 |
|---|---|
LAMMPS kspace_style pppm |
FFT 기반 장거리 정전기 |
LAMMPS kspace_style msm |
다중격자 기반 장거리 정전기 |
D. 관련 파일
| 항목 | 용도 |
|---|---|
opls.data |
MSM cutoff 자동 조정 확인에 쓴 데이터 파일 |
inputs/ |
실공간 cutoff 12.0 Å, 정확도 1.0e-4 를 쓰는 입력 파일 묶음 |
3. 절차
A. PPPM 슬랩 설정
- PPPM 의 작동 방식과 요구 조건을 확인한다.
- 전하를 격자에 옮긴 뒤 FFT(Fast Fourier Transform)로 역공간에서 장거리 부분을 계산한다.
- 계산 복잡도는 O(N log N) 이다.
- 모든 방향에서 주기 경계 (
boundary p p p) 가 필요하다. - 매우 빠르며 정확도 제어가 쉽다.
- 슬랩 시스템 (z 방향 비주기) 에는 직접 사용할 수 없다.
경고
volfactor 를 3.0 보다 줄이면 슬랩-슬랩 상호작용이 남는다. 값을 키우면 계산만 는다.
3.0 은 LAMMPS kspace_modify 공식 문서가 권하는 값이기도 하다.
- 슬랩 보정을 더해 PPPM 을 설정한다.
kspace_style pppm 1.0e-4
kspace_modify slab 3.0
참고
kspace_modify slab 3.0은 다음 일을 한다 (LAMMPS kspace_modify 문서).
- 시뮬레이션 박스의 z 방향으로 빈 공간 (vacuum) 을 추가하여 시스템을 인공적으로 3배 큰 박스 (volfactor = 3.0) 로 만든다.
- 인접 슬랩과의 쌍극자-쌍극자 상호작용을 제거한다 (Yeh & Berkowitz 1999의 방법).
주의 z 방향이 비주기이므로 원자가 z-경계 밖으로 빠져나가지 않게 벽(wall)을 둬야 한다.
- z 상단에 벽을 둔다.
# z-상단에 LJ 9-3 형태의 부드러운 벽 (atoms cannot escape)
fix wall_top organic wall/lj93 zhi EDGE 0.1 3.0 10.0 units box
# UROPS run 이 쓴 벽 (12-6 형태, epsilon 1.0 kcal/mol, sigma 3.0 A, cutoff 2.5 A)
# fix wall_top organic wall/lj126 zhi EDGE 1.0 3.0 2.5
# 또는 단순 반사 벽
fix wall_top_reflect all wall/reflect zhi EDGE
참고 LAMMPS fix wall/lj93 문서에 따르면 9-3 형태는 Cu 슬랩 같은 평면 표면에서 유도되는 LJ 벽 포텐셜이다.
- PPPM 입력에는
kspace_modify pressure/scalar를 넣지 않는다.
참고
kspace_modify pressure/scalar 는 MSM 전용 키워드다. yes 로 두면 MSM 이 스칼라 압력만 빠르게 계산하고,
압력 텐서와 원자별 virial(compute stress/atom)은 나오지 않는다. 기본값은 no 다.
PPPM 에서는 아무 효과가 없다.
(LAMMPS 공식 문서)
B. MSM 설정
- MSM 의 작동 방식과 요구 조건을 확인한다.
- 다중격자 기법으로, FFT 없이 여러 층의 격자 사이를 보간하며 계산한다.
- 계산 복잡도는 O(N) 이다.
- 3차원이면 주기/비주기/shrink-wrap 경계를 모두 쓸 수 있다.
- 슬랩 시스템에 추가 보정 없이 자연스럽게 적용할 수 있다.
- 정확도가 같은 수준일 때 PPPM 보다 느릴 수 있다 (특히 작은 시스템에서).
주의
kspace_modify slab 은 MSM과 함께 쓸 수 없다(LAMMPS 공식 문서).
MSM은 애초에 비주기 경계를 지원하기 때문이다.
- 슬랩 보정 없이 MSM 을 지정한다.
kspace_style msm 1.0e-4
# slab 보정 명령어 불필요
주의
MSM 의 실공간 pair style 은 lj/cut/coul/msm 이어야 한다. lj/cut/coul/long 을 쓰면 오류가 난다.
- pair style 과 kspace 설정을 함께 작성한다.
pair_style lj/cut/coul/msm 12.0
kspace_style msm 1.0e-4
kspace_modify order 10 pressure/scalar no
order값을 4, 6, 8, 10 중에서 고른다. MSM 의 기본값은 10 이다(PPPM 은 5).
경고
MSM 은 정확도 목표를 맞추려고 실공간 Coulomb cutoff 를 스스로 바꾼다. 위 설정을 opls.data 에 걸면
"Adjusting Coulombic cutoff for MSM, new cutoff = 9.373041" 경고와 함께 cutoff 가 12 Å 에서 9.37 Å 으로 줄어든다.
- log 에서 cutoff 조정 경고를 확인한다.
- 조정을 막으려면
kspace_modify cutoff/adjust no를 쓴다.
참고
정확도를 위해 pair_modify table 0 을 권하는 경고도 함께 나온다.
LAMMPS kspace_modify 문서 참조.
C. 실공간 cutoff 설정
- 실공간(real-space) 부분의 cutoff 를 LJ cutoff 와 맞춘다. 장거리 정전기(PPPM/MSM)를 쓸 때의 일반적인 방식이다.
- 힘장별 권장 cutoff 를 확인한다.
| 힘장 | 권장 cutoff |
|---|---|
| OPLS-AA | 10.0 Å (또는 12.0 Å) |
| TraPPE-UA | 14.0 Å (TraPPE 공식 권장) |
경고 TraPPE-UA 에서 cutoff 를 더 짧게 쓰면 파라미터 fit 의 정확도가 조금 떨어질 수 있다. MSM 에서는 3.B 에 적었듯 Coulomb cutoff 가 자동으로 바뀔 수 있다.
- cutoff 를 12.0 Å 으로 설정한다.
inputs/는 통일성을 위해 이 값을 쓴다(UROPS run 은 14.0 Å).
pair_style lj/cut/coul/long 12.0
D. 정확도 매개변수 설정
kspace_style {pppm|msm}의 두 번째 인자에 상대 정확도를 준다.
kspace_style pppm 1.0e-4 # 1.0e-4 = 0.01% 상대 정확도
경고 1.0e-3 은 빠른 스크리닝용이다. 계면 시뮬레이션에는 부족하다.
- 용도에 맞는 값을 고른다.
- 1.0e-4:
inputs/의 값. - 1.0e-5: UROPS run 의 값. 더 정확하지만 비용이 크다.
- 1.0e-4:
E. 힘장·정전기 조합 입력 작성
- 네 프레임워크 중 하나의 핵심 kspace 설정을 고른다.
- OPLS-AA + PPPM 은 다음과 같이 쓴다.
pair_style lj/cut/coul/long 12.0
pair_modify mix geometric tail no
kspace_style pppm 1.0e-4
kspace_modify slab 3.0
- OPLS-AA + MSM 은 다음과 같이 쓴다.
pair_style lj/cut/coul/msm 12.0
pair_modify mix geometric tail no
kspace_style msm 1.0e-4
kspace_modify pressure/scalar no
- TraPPE-UA + PPPM 은 다음과 같이 쓴다.
pair_style lj/cut/coul/long 12.0
pair_modify mix arithmetic tail no
kspace_style pppm 1.0e-4
kspace_modify slab 3.0
- TraPPE-UA + MSM 은 다음과 같이 쓴다.
pair_style lj/cut/coul/msm 12.0
pair_modify mix arithmetic tail no
kspace_style msm 1.0e-4
kspace_modify pressure/scalar no
참고 힘장(mix rule)과 정전기(kspace_style)만 바꾸면 같은 프로토콜로 네 조합을 모두 돌릴 수 있다. 그래서 힘장과 정전기의 영향을 따로 떼어 보는 2×2 비교가 된다.
4. 시험 및 검사
A. PPPM 과 MSM 항목 비교
- 두 방법의 특성을 다음 표로 비교한다.
| 항목 | PPPM | MSM |
|---|---|---|
| 계산 복잡도 | O(N log N) | O(N) |
| 슬랩 처리 | slab 3.0 필요 |
자연스럽게 지원 |
| 경계 조건 | p p p (또는 slab으로 p p f) | 모든 조합 가능 |
| 정확도 제어 | accuracy 인자 (여기서는 1.0e-4) | accuracy 인자 (여기서는 1.0e-4) |
| 실공간 pair style | lj/cut/coul/long |
lj/cut/coul/msm (coul/long 은 오류) |
compute group/group ... kspace yes |
지원 | 지원 안 함 |
| FFT 사용 | 사용 | 사용 안 함 |
| 병렬 확장성 | 큰 시스템에서 FFT가 병목 가능 | 좋음 |
| 메모리 사용 | 중간 | 다소 큼 |
| 정확도 차이 | 매우 비슷 (slab 보정 후) | 매우 비슷 |
주의
MSM 을 쓸 때는 compute group/group ... kspace yes 를 쓸 수 없다.
B. 계산 비용과 결과 비교
- UROPS run 두 개의 조건을 확인한다. 2,471원자, 40 MPI 랭크, 정확도 1e-5, 4,000,000 스텝이다.
- 루프 시간을 비교한다. PPPM + slab 19,647 s, MSM 31,988 s 로 MSM 이 1.63배였다.
- kspace 비중을 비교한다. PPPM 22 %, MSM 65 % 였다.
- 첫 흡착층 구조를 비교한다. 두 방법이 통계 오차 안에서 같았다 (PPPM vs MSM 글).
참고 이 규모에서는 MSM 이 확실히 느렸다. MSM 의 O(N) 이점은 수만 원자 이상에서나 기대할 수 있다.
5. 종료
A. 결과 정리
- 슬랩 계의 PPPM 은
slab 3.0과 z 상단 벽으로 설정한다. - MSM 은
lj/cut/coul/msm과 함께 쓰고, cutoff 자동 조정을 log 에서 확인한다. - 이 계의 크기에서는 PPPM 이 더 빠르고, 첫 흡착층 구조는 두 방법이 같다.
B. 후속 작업
- PPPM 이 분자동역학에서 가장 널리 쓰이는 방법이므로, 두 방법으로 모두 돌려 결과를 서로 대조한다.