Skip to content

Release v3.20.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 16:55
· 221 commits to main since this release
  • feat: new pressure-profile-ewald subcommand reconstructs a complete NAMD pressure
    profile, PME reciprocal-space term included, by replaying a trajectory twice and summing the
    halves. NAMD will not report the whole thing in one run: SimParameters.C:6699 does
    if (pressureProfileEwaldOn) pressureProfileOn = 0, so a run with pressureProfileEwald on
    reports the reciprocal contribution alone. The omission matters -- on one example-16 replica
    the real-space integral is -16.63 mN/m and the reciprocal +26.50, so including it flips the
    sign. Computing the Ewald half inline is impractical because ComputeEwald is gated only on
    doFullElectrostatics and so runs every step regardless of pressureProfileFreq (14-28x per
    step, i.e. 5-11 days for example 16's sampling stage); replaying evaluates once per sampled
    frame instead, dividing that cost by the sampling stride. Each run self-checks against NAMD's
    own reported pressure: on a 699-atom box the real-space half alone deviates by 213 bar and the
    reconstruction by 1.05. Example 16 and 17 configs already pointed at this procedure in
    comments; it is now a command.

  • fix: example 24 stopped its density_equilibrate on the step ceiling instead of converging.
    All three replicas of a 3.19.1 sweep hit the 100000-step max_steps default, so a reader
    running the shipped example got a truncated, unconverged box. The failures were the precision
    gate, not the drift tolerance: SEM/mean 7.44e-04 / 7.62e-04 / 9.54e-04 against a 6.67e-04 gate.
    Acetone decorrelates slowly -- autocorrelation time 14.8-22.9 frames against a sweep-wide median
    of 6.3 -- so the effective sample size never grows enough within the default. The example now
    sets max_steps: 250000, at which all three converge (steps 111120 / 199850 / 189160, rho
    0.8548 / 0.8560 / 0.8574 g/cc). The default is deliberately unchanged: example 24 is the one
    example that demonstrates a user needing to raise it, and acetone is not a common MD solvent.

  • docs: example 24's figures came from a run that hit the ceiling. The density-convergence
    figure ran out at ~104000 steps with no convergence marker while its caption described a run
    that "stops once the drift in that window falls below tolerance". Both it and the companion
    cell-dimension figure are regenerated from the median replica of the re-run, so the two now
    agree on run length.

  • docs: examples 16 and 17 now say that their pressure profiles omit the reciprocal-space term,
    why pressureProfileEwald is deliberately not set inline, and which command reconstructs the
    complete profile offline.