Spaces:
Running
Running
File size: 7,202 Bytes
6140238 95fa686 6140238 fd46c63 bce3a70 9d75f8c bce3a70 6140238 fd46c63 6140238 fd46c63 6140238 fd46c63 6140238 fd46c63 6140238 fd46c63 bce3a70 6140238 fd46c63 6140238 fd46c63 6140238 fd46c63 6140238 fd46c63 6140238 fd46c63 bce3a70 6140238 fd46c63 bce3a70 fd46c63 bce3a70 fd46c63 6140238 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | <!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script>
// a copy of this page cached from before a deploy asks for bundles the deploy removed: reload once (src/app/boot.ts)
addEventListener('error', (e) => {
const u = e.target && (e.target.src || e.target.href);
if (!u || !/\/assets\//.test(u)) return;
try { if (sessionStorage.getItem('mlipviz-stale')) return; sessionStorage.setItem('mlipviz-stale', '1'); } catch (_) { return; }
location.reload();
}, true);
</script>
<title>MLIP Dynamics</title>
<meta name="description" content="Molecular dynamics (NVE) and diffusion Monte Carlo with machine-learning interatomic potentials, in your browser." />
<script>
// the saved theme (or the system's), before the first paint; see src/viz/theme.ts
try { const t = localStorage.getItem('mlipviz-theme'); document.documentElement.dataset.theme = t === 'light' || t === 'dark' ? t : matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'; } catch (e) {}
</script>
<script type="module" crossorigin src="./assets/md-CwURKBHq.js"></script>
<link rel="modulepreload" crossorigin href="./assets/xyz-BkjxBniX.js">
<link rel="stylesheet" crossorigin href="./assets/xyz-CMSHb8Wz.css">
<link rel="stylesheet" crossorigin href="./assets/md-D-QfxpVl.css">
</head>
<body class="md mode-md">
<header>
<a class="brand" href="./" title="Back to the network visualiser">MLIP<span>viz</span></a>
<nav id="modes" title="What to run">
<button data-mode="md" class="on" title="Classical molecular dynamics at constant energy">NVE dynamics</button>
<button data-mode="dmc" title="Diffusion Monte Carlo: the quantum vibrational ground state">Diffusion Monte Carlo</button>
</nav>
<label title="The kind of model">Model <select id="kind"></select></label>
<label title="Which trained weights">Weights <select id="model"></select></label>
<label>Structure <select id="structure"></select></label>
<label class="file">Open .xyz…<input id="xyz-file" type="file" accept=".xyz,.extxyz" /></label>
<label class="md-only" id="force-mode-wrap" title="How forces are computed">Forces <select id="force-mode">
<option value="conservative">conservative (−∂E/∂r)</option>
<option value="direct">direct (non-conservative)</option></select></label>
<label class="md-only" title="Initial temperature: Maxwell–Boltzmann velocities, no net momentum">T₀ <input id="temperature" type="number" value="300" min="0" max="5000" step="50" /> K</label>
<label class="md-only" title="Time step (applies immediately)">Δt <input id="dt" type="number" value="0.5" min="0.05" max="5" step="0.05" /> fs</label>
<label class="dmc-only" title="Target number of walkers (all are evaluated in batched passes)">Walkers <input id="walkers" type="number" value="500" min="20" max="20000" step="100" /></label>
<label class="dmc-only" title="Imaginary time step, atomic units (applies immediately)">Δτ <input id="dtau" type="number" value="10" min="0.5" max="50" step="1" /> a.u.</label>
<button id="run" class="on" title="Run or pause (Space)">Pause</button>
<button id="restart" title="Start again from the starting structure (R)">Restart</button>
<button id="theme" title="Theme"></button>
<div id="status">starting…</div>
</header>
<main>
<section id="stage">
<div id="traj"></div>
<div id="clock"></div>
<div id="md-loading" hidden>
<div class="loader-title"></div>
<div class="loader-stage"></div>
<div class="loader-bar"><i></i></div>
</div>
</section>
<aside id="panel">
<div class="tiles md-only">
<div class="tile"><small>Temperature</small><b id="t-now">–</b><span id="t-mean"></span></div>
<div class="tile"><small>Energy drift</small><b id="drift">–</b><span id="drift-max"></span></div>
<div class="tile" title="Simulated nanoseconds per day of wall-clock time at this rate"><small>Speed</small><b id="speed">–</b><span id="ms"></span></div>
<div class="tile flops-tile"><small>Compute</small><b id="flops">–</b><span id="flops-detail"></span></div>
</div>
<div class="tiles dmc-only">
<div class="tile" title="Mean of E_ref − V_min over the second half of the run, with a blocking error"><small>Zero-point energy</small><b id="zpe">–</b><span id="zpe-detail"></span></div>
<div class="tile"><small>Walkers</small><b id="walkers-now">–</b><span id="walkers-detail"></span></div>
<div class="tile" title="Walker energies evaluated per day of wall-clock time at this rate"><small>Throughput</small><b id="samples">–</b><span id="samples-detail"></span></div>
<div class="tile flops-tile"><small>Compute</small><b id="dmc-flops">–</b><span id="dmc-flops-detail"></span></div>
</div>
<figure class="md-only">
<figcaption>Energy, eV, relative to the total at t = 0</figcaption>
<div id="energy-chart"></div>
</figure>
<figure class="md-only">
<figcaption>Temperature, K</figcaption>
<div id="temp-chart"></div>
</figure>
<figure class="dmc-only">
<figcaption>Reference energy E_ref − V_min, cm⁻¹</figcaption>
<div id="eref-chart"></div>
</figure>
<figure class="dmc-only">
<figcaption>Walkers</figcaption>
<div id="pop-chart"></div>
</figure>
<p class="note md-only">
Velocity Verlet at constant N, V and E. When the forces are the gradient of the energy and Δt is small
enough, the total energy stays flat while kinetic and potential energy swap. From a relaxed start about
half the initial kinetic energy goes into the potential, so the temperature settles near T₀/2. Direct
forces are not a gradient, so the total energy drifts with them, and so it does with too large a Δt.
</p>
<p class="note dmc-only">
Diffusion Monte Carlo for the nuclei. The structure is relaxed on the model's surface, then each walker,
a copy of the molecule, takes Gaussian steps of variance ħ²Δτ/m and is copied or removed with weight
exp(−Δτ (V − E<sub>ref</sub>)). E<sub>ref</sub> is adjusted to keep the number of walkers near the
target, and its average above the minimum is the zero-point energy. The cloud shows the walkers aligned
on the minimum; hydrogens spread the most. Walkers far below the minimum are in a hole in the model's
surface and are removed.
</p>
<p class="note" id="flops-note">
FLOPs are counted from the shapes of the kernels the model runs, with a multiply-add as 2. The rate is
over the whole step, so it also covers the neighbour list, data transfers and reading back the results.
</p>
</aside>
</main>
</body>
</html>
|