Introduction

Part of the LAMMPS Adatom Diffusion Series: This post builds on my Cu adatom diffusion tutorial. If you’re new to LAMMPS surface simulations, I’d recommend starting there for the detailed setup explanations. See the complete series overview for the full learning path.

I’m learning molecular dynamics simulations with LAMMPS as part of my graduate work. My goal is to generate trajectory data that can be used for training machine learning models.

I’ve previously written about simulating:

This post extends that work to platinum adatoms on a Pt(100) surface—a system that’s particularly relevant for understanding catalytic processes.

Simulation Setup

This simulation models a single platinum atom (called an “adatom”) moving across a platinum surface. An adatom is simply an atom sitting on top of a crystal surface rather than being part of the regular crystal structure.

Here are the key details:

Why platinum? Platinum is widely used in catalysis, so understanding how individual atoms move on its surface has practical relevance for designing better catalysts.

The setup uses a simple approach: fix the bottom layer of atoms in place and apply a heat bath to the next layer up to maintain realistic temperature conditions.

You can watch the simulation in action here:

LAMMPS Input Script

If you want to try this simulation yourself, here’s the complete LAMMPS input script. The script sets up the crystal structure, places the adatom, and runs the simulation while controlling temperature:

### Original Created by Eric N. Hahn  ###
### [email protected] ###

### Modifications by Hunter Heidenreich, CSE lab (Harvard, 2023)
### [email protected]
### 2023-09-01

### Simulating adatoms ###
### Version 0.2 ###


units metal
dimension 3
boundary p p s
atom_style atomic

lattice fcc 3.96
variable cubel equal 4
variable fixer1 equal "v_cubel+2"
variable fixer2 equal "v_cubel+1.49"
region  box block -${cubel} ${cubel} -${cubel} ${cubel} -${fixer1} 1 units lattice
region cbox block -${cubel} ${cubel} -${cubel} ${cubel} -${fixer1} 0 units lattice
create_box 1 box
create_atoms 1 region cbox
create_atoms 1 single -0.5 0 0.5 units lattice
region hold block INF INF INF INF -${fixer1} -${fixer2} units lattice
region temp block INF INF INF INF -${fixer2} -${cubel} units lattice
group hold region hold
group temp region temp

pair_style eam/alloy
pair_coeff * * Pt_Zhou04.eam.alloy Pt

timestep        0.005
compute         new all temp
velocity        temp create 600 12345
fix heater temp temp/rescale 1 850 850 5 1
fix nve all nve
fix freeze hold setforce 0 0 0

variable e     equal pe
variable k     equal ke
variable t     equal etotal
variable T     equal temp
fix energy all ave/time 1 50 50 v_k v_e v_t v_T file energy_avg.txt

minimize 1.0e-4 1.0e-6 1000 10000

dump eve all custom 5 dump.lammpstrj id type xu yu zu   # fx fy fz  # uncomment for forces
dump_modify eve sort id

thermo 50
run 100000  # 100_000 * 5 fs = 500 ps

What’s Next?

This type of simulation generates atomic trajectories that can be valuable for training machine learning models to predict material behavior. While this is a simple system, it’s a stepping stone toward more complex simulations of surface processes.

The data from these simulations could be used to train models that predict how atoms move on surfaces under different conditions—useful for understanding catalysis, crystal growth, and other surface phenomena.


Questions or suggestions? Feel free to reach out—I’m always happy to discuss molecular dynamics and machine learning applications.