Tip: Run via http:// not file:// to avoid CORS blocking shader loads. For a quick local server run: python3 -m http.server 8000 in this folder, then open http://127.0.0.1:8000/ppafm_web/. If WebGL is disabled, enable hardware acceleration in your browser settings and restart (Chrome/Firefox/Edge), then verify at get.webgl.org.
Probe-Particle AFM (Stage 1: atoms as blobs)
View
Probe params
Stiffness
F → df
Advanced
Usage & physics
XYZ input: first line = number of atoms, then lines "Sym x y z [q]". Optional last column is atomic charge q (e).
Probe: Probe Q is tip charge, Rpp,Epp are LJ parameters for the probe particle. Sample LJ is taken from element type and mixed with probe (LorentzBerthelot).
Tip spring: k_lat,k_rad,R_tip define lateral and radial stiffness and equilibrium bond length; they control how strongly the CO-like particle bends and stretches.
Relaxation: Relax iters,dt,F2Conv set maximum iterations, step and convergence threshold. Osc steps,dz,Amp,Pre-relax,Substeps control the adiabatic approach and df integration along the oscillation path.
Render mode: 0 = frequency shift df (Giessibl convolution), 1 = relaxed vertical force Fz, 2 = residual |F| after relaxation, 3 = relative iteration count.
Model: This WebGL demo implements the probe-particle AFM model where a flexible particle (e.g. CO) attached to the tip relaxes in the combined Morse+LJ+Coulomb field of sample atoms, reproducing high-resolution nc-AFM contrast.
References: Hapala et al., Mechanism of high-resolution STM/AFM imaging with functionalized tips, Phys. Rev. B 90, 085421 (2014), doi:10.1103/PhysRevB.90.085421.
Oinonen et al., Advancing scanning probe microscopy simulations: A decade of development in probe-particle models, Comput. Phys. Commun. 305, 109341 (2024), doi:10.1016/j.cpc.2024.109341.
Code and related tools: github.com/Probe-Particle/PPSTM.