이 페이지에서 다룹니다
NOTE 31-05-00 · 상호작용 모델
1. 일반 사항
A. 목적
- 이 노트는 LAMMPS 입력에서 원자 사이의 상호작용을 정의하는 명령을 다룬다.
- 대상 명령은
pair_style, 결합 계열 style,kspace_style이다.
B. 적용 범위
- LAMMPS는 원자 사이의 상호작용을 크게 두 갈래로 나눠 표현한다.
- 비결합 상호작용 (non-bonded):
pair_style로 정의한다. 두 원자 사이의 거리만으로 정해지는 상호작용(LJ, 쿨롱, EAM 등)이 여기 속한다. - 결합 상호작용 (bonded):
bond_style,angle_style,dihedral_style,improper_style로 정의한다. 분자 시스템에서만 쓴다.
- 비결합 상호작용 (non-bonded):
- 여기에 장범위 정전기를 위한
kspace_style이 더해진다.
C. 결과 요약
- style은 박스를 정의하기 전에 한 번 선언한다.
- 계수는 박스를 정의한 뒤에
pair_coeff,bond_coeff등으로 준다. - 이 단계의 오류는 거의 항상 4.A 의 네 가지 사례 중 하나다.
2. 준비 정보
A. 필요한 개념
- 단위계(
units)와atom_style을 정해 두어야 한다. - 박스 정의 명령의 위치를 알아야 한다. style 선언은 그 앞에, 계수 입력은 그 뒤에 온다.
B. 참조 자료
| 참조 | 제목 |
|---|---|
| LAMMPS 매뉴얼, style별 페이지 | 각 style의 계수 의미 |
| 사용할 힘장의 원본 논문 | 힘장이 가정하는 functional form |
D. 관련 파일
| 항목 | 용도 |
|---|---|
Cu_u3.eam |
EAM 매개변수 파일 (3.D) |
데이터 파일 (Bonds, Angles, Dihedrals 섹션) |
결합 type 지정 (3.E) |
3. 절차
A. pair_style 선택
- 쓰려는 힘장의 원본 논문이 어떤 functional form을 가정하는지 확인한다.
- 그에 맞는 style을 아래 표에서 고른다.
| pair_style | 용도 |
|---|---|
lj/cut |
순수 Lennard-Jones, 절단 거리 |
lj/cut/coul/cut |
LJ + 단순 절단 쿨롱 |
lj/cut/coul/long |
LJ + 장범위 쿨롱 (kspace 필요) |
morse |
Morse 포텐셜 (결합 해리 모델) |
buck |
Buckingham (산화물 등) |
eam, eam/alloy, eam/fs |
EAM (금속) |
tersoff, tersoff/mod |
Tersoff (공유 결합 비금속) |
meam, meam/c |
MEAM (금속·반도체) |
reaxff |
ReaxFF (반응성 시뮬레이션) |
airebo, rebo |
탄소 시스템 (REBO/AIREBO) |
sw |
Stillinger-Weber (Si, Ge) |
hybrid, hybrid/overlay |
위 style들을 한 시뮬레이션에서 조합 |
B. lj/cut 설정 (LJ 액체)
pair_style과pair_coeff를 다음과 같이 입력한다.
pair_style lj/cut 2.5
pair_coeff 1 1 1.0 1.0 2.5
# ^ ^ ^ ^ ^
# i j ε σ cutoff (옵션)
pair_coeff i j eps sigma cutoff형식으로 type 조합마다 한 번씩 입력한다.- i ≠ j 조합은
pair_modify mix arithmetic또는geometric으로 자동 생성할 수도 있다.
C. lj/cut/coul/long 설정 (분자 시스템)
- 단위계, atom_style, pair_style, kspace_style 을 다음과 같이 함께 입력한다.
units real
atom_style full
pair_style lj/cut/coul/long 10.0 10.0
pair_coeff 1 1 0.1660 3.5000 # 예: OPLS-AA의 C, kcal/mol·Å
pair_coeff 2 2 0.0300 2.5000 # 예: H
# ...
pair_modify mix geometric tail yes
kspace_style pppm 1.0e-4
참고
lj/cut/coul/long 은 단거리 LJ와 단거리 쿨롱을 직접 계산하고, 장거리 쿨롱은 kspace_style 에 맡긴다. OPLS-AA, AMBER, CHARMM 계열은 대부분 이 조합을 쓴다.
D. eam 설정 (금속)
- 단위계, atom_style, pair_style 을 다음과 같이 입력한다.
units metal
atom_style atomic
pair_style eam
pair_coeff * * Cu_u3.eam
참고
EAM은 매개변수 파일 하나에 모든 정보가 들어 있어서 pair_coeff 가 아주 간단하다. * * 는 "모든 type 조합"을 뜻한다.
E. 결합 상호작용 설정
- 분자 시스템(
atom_style full또는molecular)에서는 결합·각·이면각 계수를 함께 정의한다.
bond_style harmonic
bond_coeff 1 340.0 1.090 # K(kcal/mol/Ų), r0(Å)
angle_style harmonic
angle_coeff 1 33.0 107.8 # K(kcal/mol/rad²), θ0(°)
dihedral_style opls
dihedral_coeff 1 0.0 0.0 0.30 0.0
improper_style harmonic
improper_coeff 1 1.1 0.0
- 계수가 무엇을 뜻하는지는 style마다 다르므로 매뉴얼의 해당 페이지에서 확인한다.
- 데이터 파일에서
Bonds,Angles,Dihedrals섹션을 읽는다. 어느 결합이 어떤 type 인지는 자동으로 들어간다.
참고
harmonic 말고도 morse, class2, fourier, charmm 등의 style이 있다.
F. 장범위 정전기 설정: kspace_style
경고
쿨롱 상호작용을 그냥 절단하면(coul/cut) 시스템에 따라 큰 인공물이 생긴다. 그래서 정전기가 있는 시스템은 거의 다 장범위 처리를 한다.
- 정전기가 있는 시스템에
kspace_style을 선언한다.
kspace_style pppm 1.0e-4 # Particle-Particle Particle-Mesh, 정확도 1e-4
# 또는
kspace_style ewald 1.0e-6 # 작은 시스템용
# 또는
kspace_style msm 1.0e-4 # 슬랩/비주기 일부에 유리
- 시스템 크기와 경계 조건에 맞는 알고리즘을 아래 표에서 고른다.
| 알고리즘 | 특징 |
|---|---|
ewald |
정통 Ewald 합. 작은 시스템(원자 수 < ~수천)에 효율적 |
pppm |
mesh 기반 Ewald. 큰 시스템에서 가장 흔히 쓰임 |
msm |
multi-level summation. 비주기 차원 처리에 강점 |
- 완전 주기적(p p p) 시스템에는 PPPM을 쓴다. PPPM은 이 경우에 가장 잘 동작한다.
- 일부 차원이 비주기적(p p f) 인 슬랩 시스템에는 MSM을 검토한다. MSM은 이 경우 보정 비용이 작다.
- 슬랩 시스템에서 PPPM을 쓰려면
kspace_modify slab 3.0같은 보정을 더한다.
4. 시험 및 검사
A. 잘못 짝지은 흔한 사례 점검
atom_style atomic인데bond_style을 선언하지 않았는지 확인한다. 결합 정보를 저장할 공간 자체가 없어 오류가 난다.kspace_style을 선언했다면pair_style이coul/long류인지 확인한다. 아니면kspace_style은 의미가 없다.- 단위계와 계수 단위가 맞는지 확인한다. 예:
units real인데 eV 단위의 EAM 파일. - 데이터 파일 안의 type 수와
pair_coeff의 type 수가 맞는지 확인한다.
참고 이 단계에서 오류가 나면 거의 항상 위 넷 중 하나다.