Skip to content
QuickMDSim

3D trajectory player

Write a normal LAMMPS dump custom. After the job finishes, rotate, zoom, and play the atoms in the browser.

No new LAMMPS command. The player reads a standard dump custom (or XYZ) that the 17 Apr 2024 runner already writes.

Loading 3D trajectory…

Live demo from a real job — a (10,10) Tersoff nanotube that kinks. Same player as Outputs, packed from dump.qmd3d.lammpstrj. Job 2579cb45-2e19-4fd9-9a98-41c339660923.

Input snippet

In the app editor, click Add 3D viewer dump, or paste:

# qmd_view — opens in the in-browser 3D player after the job finishes
dump            qmd3d all custom 50 dump.qmd3d.lammpstrj id type x y z
dump_modify     qmd3d sort id

Any .lammpstrj, .xyz, or dump.* output also opens. Use x y z or unwrapped xu yu zu. Atoms are colored by type.

Put the snippet in the input script (input.lammps), never in data.lammps. A data file is topology — read_data cannot parse dump. The editor button always targets the input script, even if a data-file tab is open.

In the app

  1. Run the job as usual.
  2. Open Outputs and select the dump.
  3. Play / pause, drag to rotate, scroll to zoom, right-drag to pan.

This is a replay of the finished dump, not a live stream. Crystal-melt already writes dump.melt.lammpstrj — that file is enough.

API

Authenticated, same JWT / PAT as the rest of the API:

GET /api/job_output_files/:id/trajectory/?max_frames=150&max_atoms=5000

Returns compact qmd3d JSON (base64 Float32 positions). List outputs include kind: "trajectory" on dump files. Dumps over 24 MB return 413 — dump less often, or download for OVITO.

MCP

After list_outputs, call get_trajectory with job_id and the dump name. Same downsample knobs.