| LAMMPS | |
|---|---|
| 종류 | 고전 분자동역학 시뮬레이터 |
| 개발 | Sandia National Laboratories |
| 언어 | C++ (MPI 병렬) |
| 라이선스 | GPL v2 |
| 최초 공개 | 1995년 |
| 분야 | 재료·고분자·생체분자·매개입자 |
| 플랫폼 | Linux (주력), macOS, Windows |
1. 개요[편집]
병렬 원자를 세는 데 있어서 이 코드는 겸손하지 않다.
LAMMPS(Large-scale Atomic/Molecular Massively Parallel Simulator)는 미국 샌디아 국립연구소(Sandia National Laboratories)가 주도하여 개발한 오픈소스 고전 분자동역학 시뮬레이터다. 이름에 “대규모 병렬”이 대놓고 박혀 있는 데서 알 수 있듯, 수백만~수십억 개의 원자를 MPI 기반 도메인 분할로 병렬 계산하는 데 특화되어 있다. 재료과학·고분자·생체분자·과립 물질(granular material)까지 다루는 범용성이 강점이라, 특정 분야 전용 코드가 아니라 “일단 뭐든 원자로 모델링되면 던져보는” 만능 도구에 가깝다.
이름이 길어 부르기 곤란하다는 점은 개발진도 인정한 듯, 공식적으로 “램스”로 발음한다. 두문자어를 억지로 만든 티가 역력하지만, 두문자어 억지 조합은 미국 국립연구소 소프트웨어의 유서 깊은 전통이므로 넘어가자.
2. 역사와 개발 주체[편집]
LAMMPS는 1990년대 중반 미국 에너지부(DOE) 산하 연구소들과 기업(듀폰 등)의 공동 협력 프로젝트에서 출발했다. 초기 버전은 포트란으로 작성되었으나, 2004년 무렵 C++로 전면 재작성되면서 지금의 모듈형 구조를 갖췄다. 이 재작성이 LAMMPS를 단순한 MD 코드에서 “기능을 플러그인처럼 붙이는 프레임워크”로 바꿔놓았다.
핵심 개발자인 스티브 플림턴(Steve Plimpton)이 오랫동안 프로젝트를 이끌었으며, 그가 발표한 도메인 분할 병렬화 알고리즘 논문은 병렬 MD 분야의 고전으로 인용된다. 현재는 전 세계 수백 명이 기여하는 커뮤니티 프로젝트로, 릴리스는 날짜 기반 버전(예: 2 Aug 2023)으로 관리된다. “stable” 릴리스와 “feature” 릴리스를 구분하는데, 논문에 쓸 거면 stable을 쓰라는 게 불문율이다.1
3. 아키텍처와 병렬화[편집]
LAMMPS의 심장은 **공간 도메인 분할(spatial decomposition)**이다. 시뮬레이션 상자를 3차원 격자로 잘라 각 MPI 프로세스에 하위 영역을 하나씩 맡기고, 경계 근처의 원자 정보만 이웃 프로세스와 교환한다. 통신량이 표면적에 비례하고 계산량이 부피에 비례하므로, 프로세스당 원자 수가 충분히 크면 병렬 효율이 이상적으로 유지된다. 이 스케일링 특성 덕분에 슈퍼컴퓨터 수십만 코어에 원자를 뿌려도 라이선스 서버가 화내지 않는다 — 애초에 라이선스 서버가 없다.
이웃 원자 탐색에는 **셀 리스트(cell list)와 이웃 리스트(neighbor list)**를 결합한 고전적 기법을 쓴다. 컷오프 반경 내 원자쌍만 골라내 불필요한 거리 계산을 건너뛰는 것으로, 이 자료구조 관리가 사실상 MD 코드 성능의 절반을 좌우한다.
시간 적분은 기본적으로 속도 베를레 적분(velocity Verlet)을 사용한다. 심플렉틱(symplectic) 성질 덕분에 장시간 적분에서도 에너지가 발산하지 않고 일정하게 진동하는데, 이는 룽게-쿠타법 같은 범용 적분기가 MD에서 잘 쓰이지 않는 이유이기도 하다. 고차 정확도보다 위상공간 부피 보존이 훨씬 중요하기 때문이다.
4. 힘장과 퍼텐셜[편집]
LAMMPS의 진짜 무기는 지원하는 힘장(force field)과 원자간 퍼텐셜의 압도적 다양성이다. pair_style 명령 하나로 갈아끼우는 퍼텐셜의 종류는 수백 가지에 이른다.
- 레너드-존스 퍼텐셜 — 반 데르 발스 상호작용의 교과서적 모델. MD 입문의
Hello, World이며, LAMMPS에서도 대부분의 튜토리얼이 여기서 시작한다.
- EAM (Embedded Atom Method) — 금속과 합금 모델링의 표준. 원자를 전자 밀도의 바다에 담근다는 발상으로 금속 결합을 근사한다.
- Tersoff / Stillinger-Weber — 결합 각도에 의존하는 다체(many-body) 퍼텐셜로, 반도체(실리콘)·탄소 계열 공유결합 재료에 쓰인다.
- ReaxFF — 화학 결합의 생성과 파괴를 다루는 반응력장. 연소·촉매 반응을 원자 수준에서 흉내 낼 수 있다.
- 머신러닝 퍼텐셜 — 근래에는 신경망 기반 퍼텐셜(예: 그래프 신경망 계열)을 붙여 밀도범함수이론 수준의 정확도를 MD 속도로 구현하려는 흐름이 활발하다.
정전기 상호작용의 장거리 항은 PPPM(particle-particle particle-mesh) 방식으로 처리하는데, 실공간과 역공간(FFT)을 나눠 계산하는 이 접근은 장거리 쿨롱 힘을 다루는 사실상의 표준이다.
5. 입력 스크립트와 사용법[편집]
LAMMPS에는 GUI도, 프로젝트 파일도 없다. 모든 것은 도메인 특화 명령어로 짜인 텍스트 입력 스크립트다. 명령을 위에서 아래로 순차 실행하는 인터프리터에 가깝다.
units lj
atom_style atomic
region box block 0 20 0 20 0 20
create_box 1 box
create_atoms 1 random 4000 12345 box
pair_style lj/cut 2.5
pair_coeff 1 1 1.0 1.0
fix 1 all nve
run 10000
핵심은 fix 명령이다. 온도 제어(nvt), 압력 제어(npt), 벽 구속, 외력 인가 등 시뮬레이션에 붙이는 거의 모든 물리적·수치적 조작이 fix로 표현된다. 이 유연성이 LAMMPS를 강력하게 만들지만, 동시에 초심자가 “어떤 fix를 어떤 순서로 걸어야 하는가”의 미궁에 빠지는 원인이기도 하다.2
6. 활용 분야와 생태계[편집]
LAMMPS는 재료의 소성 변형, 균열 전파, 열전도, 확산, 상전이 같은 전산과학 문제에 폭넓게 쓰인다.3 나노 구조물의 기계적 물성 평가나 고분자 사슬의 얽힘 동역학처럼, 실험으로 직접 들여다보기 어려운 원자 스케일 현상을 다루는 데 특히 강하다.
같은 고전 MD 진영의 GROMACS와 자주 비교되는데, 대략적인 구도는 이렇다. GROMACS가 생체분자(단백질·지질·물)에 극한 최적화된 전문가라면, LAMMPS는 재료·고분자·매개입자까지 아우르는 만능형이다. 물 분자 상자를 나노초 단위로 굴리는 벤치마크에서는 GROMACS가 앞서는 경우가 많지만, “새로운 퍼텐셜을 붙여 이상한 물질을 모델링하고 싶다”면 LAMMPS의 확장성이 빛을 발한다.
GPU 가속은 KOKKOS와 GPU 패키지를 통해 지원되며, 후처리·가시화는 OVITO나 VMD 같은 외부 도구에 맡기는 것이 관례다. 결과의 신뢰성을 확보하려면 힘장 파라미터의 출처와 앙상블 설정을 논문에 명시하는 검증 및 확인 절차가 필수인데, “논문의 퍼텐셜 파일을 그대로 썼다”는 문장 하나가 재현성의 절반을 담당한다.