VMD Development Status

  • Working toward VMD 1.9.4 beta releases
    • Added comments about the display update callback implementation and the limitations imposed by older FLTK APIs vs. the latest.
    • Began revisions to remove/hide VMD GUI controls that aren't particularly relevent to rendering performance in 2018: both backface culling and display list cache mode are (today) anachronistic schemes for gaining rendering performance, which were even at the time really meant as solutions for special rendering systems like the CAVE, tiled display walls, and similar. Since most users will never have contact with the kinds of hardware where these approaches were useful, there's no longer a reason to incorporate them in the GUI. The underlying features still exist and can be manipulated with text commands however. While modifying the GUI, I also took the opportunity to eliminate hard-coded menu indexing in favor of the use of a simple enum type, which simplifies conditional compilation of menu items via ifdefs.
    • Added top level image segmentation and scale-space filtering classes to the build.
    • Accomodate header file expectations of some old C++ compilers.
    • Corrected Gaussian blur class to call integer abs()
    • Protect CUDA GPU related teardown call with #ifdefs so that it is not called on CPU-only builds, such as 32-bit MacOS X.
    • More corrections to minor issues in the latest colvars update.
    • workaround for type-ambiguous calls to pow() in colvars
    • Updated colvars module to the current git version 3bf0ded
    • Added the new top level scale-space 3-D image segmentation classes to the build.
    • Added the 3-D scale-space Gaussian filtering to the build. This is used for scale-space variants of the Waterhsed image segmentation algorithm in VMD.
    • Began type-generic templatizing all of the image segmentation related classes so they are capable of operating on arbitrary pixel/voxel types, to allow us to exploit high performance hardware features for half-precision IEEE floating point, as well as a variety of fixed-point and integer voxel/pixel types for better memory bandwidth and in some cases significantly higher arithmetic throughput. This is particularly valuable on the GPU, as it will eventually enable the so-called "tensor core" in NVIDIA's latest Volta GPUs to be used for some of the convolution operations used in scale-space filtering.
    • Updated to OSPRay 1.4.3.
    • Added CUDA-accelerated Gaussian blur kernels to the build.
    • qwikmd: Bug Fix on the declaration of the Temperature when preparing simulations from previous simulations performed with QwikMD
    • qwikmd: Use vec operations to calculate mean and standard deviation
    • nanotube: Corrected command line parameter count check on the graphene plugin to accept 6 parameters rather than a minimum of 8.
    • qwikmd: Fix issue with copying files on Mac returned by the glob command
    • qwikmd: Prevent issues finding the original pdb file when stored in folders with space characters
    • Cranked version number.
  • VMD 1.9.4 alpha 12 (December 21, 2017)
    • qwikmd: Add mdProtInfo array to the save file, when the qwikmd file is saved without preparing the simulation.
    • watershed: Protect call to destroy_gpu() with ifdefs so that it doesn't cause linkage issues on non-CUDA builds (e.g. 32-bit MacOS X).
    • alascan: updated alascan plugin dependency version number for new parsefep
    • fftk: Added fftk_ChargeOpt_ESP.tcl to the distrib target
    • ParseFEP: Updated version of ParseFEP from Chris Chipot and colleagues. The new version improves FEP analysis performance by a factor of ten or so. This version also corrects a bug in the Bennett-Acceptance Ratio (BAR) module that had affected prior versions.
    • Corrected a bug in the use of toupper() in the atom name string matching code used to assign default atomic masses when they are not explicitly provided by input files.
    • fftk: added link to parmed for conversion to Amber-style files
    • fftk: Added support for RESP calculations used in the Amber force field.
    • qwikmd: Typo Correction
    • Updated VMD to use OptiX 5.0.0 test builds.
    • runante: Add missing close brackets
    • qmtool: fixed a parsing error for Gaussian
    • Cranked version number.
  • VMD 1.9.4 alpha 11 (November 8, 2017)
    • Continued development of "mol fromsels": added handling of cross-term maps
    • Continued development of "mol fromsels": Ensure we don't create duplicate bonds when building a new molecule from multiple selections.
    • Changed OptiX cylinder count comparison logic so we don't emit an odd buffer size.
    • Modified the OptiX renderer to break up sphere and cylinder array buffers containing more than 5 million primitives into multiple smaller buffers. This helps OptiX exploit NVLink-based distributed memory ray tracing through round-robin allocation of geometry buffers over multiple GPUs. Previously VMD was accumulating as much geometry as possible into each buffer to minimize API overheads. The buffer size cutoff chosen is mostly arbitrary, and it may be that going to larger arrays containing 10 million elements or more may be sufficient to achieve the desired result.
    • Continued implementation of "mol fromsels": Ensure that after the new molecule has been constructed from the list of selections, we call newmol->analyze() so that per-atom fields populated by VMD's internal structure analysis are assigned before we return to the caller. When building the new molecule, we also combine the molecule datasetflag from each of the selected molecules, ORing in the fields provided by each, since the new molecule is a superset of the originals. The user can of course override this behavior by manually setting or clearing the molecule dataset flags themselves ex post facto.
    • Cranked version number.
  • VMD 1.9.4 alpha 10 (October 27, 2017)
    • Corrected mismatched parameter to strstr() in vaspoutcarplugin, reported by Thomas Holder.
    • Corrected leaked title string and temporary atom parsing strings in vaspposcarplugin, reported by Thomas Holder.
    • msmsplugin: Fix a memory leak of temporary path strings in the MSMS plugin reported by Thomas Holder.
    • Improved MolFilePlugin indexing efficiency for angle/dihedral/improper traversal
    • Continued development of "mol fromsels": Added handling for filtering angles/dihedrals/impropers from the selection list into the new molecule.
    • Continued implementation of "mol fromsels": Added initialization path to copy periodic cell information from first selection into the new molecule. It doesn't make sense to copy in quantities like timestep index, physical time, or energies, and even PBC unit cell info is only useful in some cases. The implementation should use the merge mode flag to determine whether to copy PBC cell information or not. Added comments related to copying other per-timestep data such as velocities.
    • Continued work on 'mol fromsels': added code to copy atomic coordinates from multiple selections into a new timestep, when one or more of the selections have coordinates associated with them. The code does not replicate timesteps, but rather only takes the currently active coordinates for each selection, enabling the caller to mix and match whichever timesteps they might want to use by using '$sel frame' judiciously. The new code only handles coordinates and does not yet handle other time-varying quantities such as velocities, forces, "user" fields, or PBC info.
    • Initial implementation of "mol fromsels" Tcl binding.
    • Fix missing free in 'measure sasalist'
    • Implemented a prototypical implementation of "mol fromsel" to create a new molecule from a list of selections. The code presently copies the required per-atom fields from each selection, and ignores the merge mode flag. The merge behavior and data consistency requirements among the list of selections are not yet implemented or enforced. Different flags will be used to indicate wheather or not to copy over data such as bond/angle/dihedral/improper arrays and similar. QM data will not be copied. It is conceivable that we might want to copy trajectory data under some circumstances, but for now we will copy only timestep 0.
    • Correction the shift in the time axis when plotting the QMEnergies due to the double print of the Energies by NAMD. Addition of the printing of the QMEnergies analysis info in the infoMD file
    • Addition of the functions and checkbutton to plot electrostatic energies Correction the shift in the time axis when plotting the energies due to the NAMD double printing of some timesteps in the log file
    • Caclulate convlution boundary conditions ahead of time instead of performing boundary checks for each read.
    • Moved watershed timing code from CPU and GPU specific functions to the generic watershed function, so the same timing code is used for both.
    • Regenerate the pdb structure and the tempMol molecule if a mutation is performed. If a mutation is performed on the N-terminal of a protein chain, re-evaluate the N-terminal patch
    • New class to perform repeated volumetric Gaussian blurs, needed for watershed filtering.
    • Updated Watershed class to remove storage of original image float array. This is only needed to initialize Watershed, so it makes sense to store it elsewhere.
    • Cranked version number.
  • VMD 1.9.4 alpha 9 (October 19, 2017)
    • Updated docs for colvars module
    • Updated builds to use OSPRay version 1.4.0
    • Changed CUDA device reporting format string to allow for longer GPU names, such as the new "Tesla V100-PCIE-16GB"
    • Further cleanup, commenting, and doxygenization of the Watershed class. Added comments about proposed code refactoring and changes to GPU handling.
    • Moved some macros from Watershed header to C++ code, and moved some struct and enums into the WATERSHED_INTERNAL ifdef
    • Removed use of device variables for watershed cuda code and pass them as kernel parameters instead.
    • Added a separate function to copy the output of the cuda watershed algorithm from GPU to the host, instead of copying it automatically when the algorithm finishes. This is in prepration for doing the rest of the filtering on the GPU.
    • Refactored part of the watershed update kernel to remove redundant if statement.
    • Removed use of global varaible neighbor_offset lookup table in the CPU and GPU Watershed implementations by including it as a class member variable.
    • fftk: Changed ffTK GUI scripts to use Unix linefeed text formatting to prevent future issues with CVS diffing changes.
    • fftk: set elements using topotools if not found in PDB
    • Added more socklen_t #ifdef cases.
    • Add typecast to Tcl_SetResult() calls on literal strings
    • Modern putenv() implementations do not copy their environment input string, so putenv() calls have need a strdup() for strings in automatic or otherwise transient string variables.
    • Improved doxygen comments for MobileInterface and continued cleanup.
    • Modern putenv() implementations do not copy their environment input string, so putenv() calls have need a strdup() for strings in automatic or otherwise transient string variables.
    • Significant cleanup of MobileInterface class implementation to eliminate type-punned pointers and aliasing, improved portability, and improve code style uniformity. Also got rid of a couple of small typos and bugs that the compiler hadn't ever complained about.
    • Guard the OptiX device enumeration message helper routine with #ifdefs used by fully interactive builds, since the routine isn't used for batch mode runs.
    • Added typecasts for string literals to be used in PNG headers.
    • Misc cleanup of unreferenced variables in the CUDA QCP algorithm.
    • Updated Cray builds to use the socklen_t variant of accept()
    • Updated to colvars version 5005669abc5a97ed497411af7e027e9f2a77578e
    • Eliminate compiler warnings for Linux headers that use the socklen_t variants of accept().
    • Misc cleanup in the SpringTool class.
    • Added typecasts on simulated command line parameters to eliminate compilation warnings on Android
    • FastPBC: Ensure initialization of optional array pointers to NULL.
    • Added (char*) typecasts to Tcl_SetResult() calls that pass in literal strings
    • Eliminate compiler warnings about unused helper functions for CPU vectorization when compiling on on ARM platforms such as Android, when NEON instructions are not enabled.
    • eliminate unused thread launch result code
    • #if out the old internal HMDMgr quaterion code since we're using the VMD quaternion implementation now.
    • Eliminate compiler warnings for unused variables etc in the CUDA-related startup code when compiling for Android.
    • qwikmd: Complete the addition of the validation process of the "Ignore Interactive Forces" button
    • Updated the Watershed host code to compile successfully without always assuming that CUDA support is enabled.
    • Promoted Watershed index offsets from char to int to improve performance and portability across compilers that choose signed/unsigned char types differently when left unspecified. Updated timer output to report total in one case that was incorrect.
    • Eliminated problems with ambiguous use of ceil() in integer arithmetic used for block sizing/padding in Watershed implementation.
    • Protect internally-used macros in Watershed implementations by WATERSHED_INTERNAL, so that callers don't get any of them in their namespace.
    • QM/MM bug fix in the declaration of Temperature in the case of the first protocol is not a Minimization (binvelocities and temperature declared at the same time). Added new validation of the status to the "ignore interactive foreces" button (disable) if MDFF is selected since MDFF does not use this option.
    • Added CPU- and GPU-accelerated Watershed image segmentation implementations to the standard build.
    • android: Added missing revision info header
    • namdgui: Updated the list of parameter and stream files to be included by default to favor CHARMM36 since the structure preparation plugins such as AutoPSF are now using CHARMM36 by default.
    • qwikmd: Add the "Ignore Interactive Forces" checkbutton to control the IMD keyword "IMDignoreForces". Allow or ignore forces applied during a "Live View" simulation
    • colvars: Synced with colvars tree, to COLVARS_VERSION "2017-09-14"
    • Updated location of Rez binary for new revs of Apple's dev tools.
    • Enable compilation using CUDA 9.0RC and later now that workarounds are in place for problems with Thrust scan() prefix sums on uint2 types.
    • Implemented a temporary workaround for problems with CUDA 9.0RC that break the use of the Thrust parallel prefix scan() routines when used in conjuntion with vector integer types such as uint2 due to lack of a conversion constructor in the CUDA 9.0 toolkit headers.
    • Force inclusion of cuda_fp16.h when compiling with CUDA 9.0 due to changes in the default sub-inclusions for cuda.h
    • Replaced OptiX 4.1.1 shared lib with a patched library that should cure segfault problems when running on machines with no GPUs or associated driver software.
    • structurecheck: Use unique number to flag the selected atoms (-9999) to be checked
    • Incorporated a patch for the AMBER parm7 parser from Robin Betz that corrects the parm7 plugin's handling of the atomic number field in the input prmtop file instead of using mass field to guess what element each atom is. This previously caused problems when VMD was passed a prmtop where the hydrogens have had their masses repartitioned (for a faster simulation timestep). Updated the plugin minor version number.
    • Updated the AMBER rst7 writing code per suggestions from Josh Vermaas about the behavior of the Fortran reader on the AMBER side when used with relatively small atomic structures. Changing the format specifier from %10d to %6d for writes cures read-side problem for the Fortran code. Updated the rst7plugin minor version number.
    • Cranked version number.
  • VMD 1.9.4 alpha 8 (August 30, 2017)
    • psfgen: Updated psfgen to meet requirements for out-of-core I/O with trajectory file formats that need page-aligned page-multiple memory buffers to support direct unbuffered I/O for atomic coordinates. Updated the psfgen version number to 1.7.
    • catdcd: correct logic for freeing output buffers when index-selected coordinate frames are used and page-aligned page-multiple buffers are used by plugins.
    • Updated VMD configure script to use CUDA 9.0, add support for Volta GPUs (adding compute_70 and sm_70 compilation targets), and OptiX 4.1.1.
    • Added additional exception handling for Thrust/CUB failures that lead to thrust::system::system_error being thrown at runtime. This arose in early testing on Volta GPUs with CUDA 9.0RC and with binaries produced by CUDA 8.0 when run on Volta.
    • Force both binary and src distributions to incorporate the colvars_files.pl script into the resulting tar file.
    • Updated distribution scripts to encompass new colvars configure sub-script
    • Migrated listing of collective variables module source files into separately maintained per script section to ease ongoing updates.
    • Updated collective variables documentation from the latest git repo pull.
    • Updated collective variables module to match latest version from Git: ae4375492605ba82f2be3058a3c8e95fcf56ee68
    • plumed: Updated the PLUMED plugin to match the latest version in Git.
    • NanoShaper: Corrected bug in NanoShaper vertex file parser
    • NanoShaper: Eliminate bad referencess to an already-closed NanoShaper facet file during the vertex parsing block.
    • Continued misc cleanup of old code to please valgrind by pre-clearing various temporary buffers to prevent uninitialized reads/conditionals here and there.
    • initialize temporary memory buffer to all NUL chars to please valgrind
    • qwikmd: Disabled MD and SMD options after preparation/load on both Easy and Advanced Run
    • qmtool: slight tweak to support gaussian 16
    • namdenergy: added support for Drude forcefield
    • fftk: added fix from Po-Chao; changed "Optimization completed\." to "Optimization completed"
    • qwikmd: Initialize the smd protocol check button variable in the easy run tab
    • qwikmd: Added text for the infoMD file regarding the QM/MM simulations and temporary topology generation.
    • qwikmd: Bug fix in the preparation of the QM/MM simulation, prepared from a previous MM simulation with a temporary topology containing iron atoms (needed a temporary stream file). Bug fix for live, advanced SMD simulations (generation of the smd file from an unfinished simulation).
    • qwikmd: Bug fix for the display of the list of residues defined as "QM" type (macro)
    • rmsdvt: Applied patch from Thomas Albers to make RMSDVT cope with failure to create its working directory when it happens to try a non-writable location.
    • Updated build scripts for OSPRay 1.3.1
    • structurecheck: Ensures the Reset of torsionplot even if the plugin returns an error
    • Released test version for QM/MM paper submission/review
  • VMD 1.9.4 alpha 7 (July 12, 2017)
    • cranked version for QM/MM paper submission/review
    • Migrate MacOS X plugin compiles to clang on 'malaga'.
    • qwikmd: Added the QMMM configuration files to the Makefile distrib target
    • pdbtool: Updated PDB download URLs and updated version number.
    • qwikmd: Added check procedure to find TMPDIR folder (new QWIKMDTMPDIR env variable). Added procedure to allow different QM charges from the ones defined in the topology files. Bug fix for atom selection evaluation.
    • autopsf: Updated AutoPSF plugin to new RCSB PDB web site layout,
    • structurecheck: update structurecheck version to 1.1
    • structurecheck: Add error handling in the case of torsionplot fails, usually due to the absence of or wrongly declared TMPDIR.
    • qwikmd: update qwikmd version to 1.2
    • vmdprefs: Cranked vmdprefs version number for recent bug fix.
    • readcharmmpar: Updated version number of readcharmmpar for recent stream file changes.
    • Change default behavior when TMPDIR is unset to try /tmp and if that fails, scream loudly to the terminal console and tell the user to take corrective action.
    • qwikmd: Skip pdbalias if called by qwikmd
    • qwikmd: Changes on the QM/MM configuration files according to Marcelo's comments
    • qwikmd: Add the info button text for the QM regions (empty for now)
    • qwikmd: Improvements to the energies, pressure, volume, and temperature log text
    • qwikmd: QwikMD 1.3 alpha version containing QM/MM interface for the NAMD QM/MM paper. Addition of the "fake" topology functions Function to select charged residues when using Mopac via vmd_pick_event Automatic renaming of residues and atoms upon pdb loading process (replacing autopsf psfaliases command)- including the /toppar/pdbaliastable.txt file containing all the pdbaliases Bug fix for plotting energies, temperature, pressure, volume and smd General bug fixes and GUI improvements
    • Enable molecular orbital representation grid reuse optimization by default since no crashes or problems have been seen yet.
    • Preliminary test implementation of scheme to allow multiple representations to reuse the same molecular orbital grid when they refer to the same orbital ID, wavefunction type, excitation, spin, grid spacing, and other grid-specific parameters. This short-circuits a number of common cases that otherwise trigger duplicative orbital grid calculations. With the optimization in place, the animation speed for QM/MM simulation trajectories with large QM regions can be up to 2X faster in common cases, and more if multiple density isovalues are shown superimposed. In cases where orbital calculation time is non-dominant, the performance gain is much more moderate, often in the range of 20% to 30%, but depending heavily on the speed of the remaining isosurface extraction step. When combined with a GPU-side marching cubes implementation, performance gains could be much higher so long as entire orbital grids remain completely GPU-resident as all of the graphical representations are processed.
    • qwikmd: Reflect the changes to download pdbs diretcly from webpdb
    • cranked version
  • VMD 1.9.4 alpha 6 (June 23, 2017)
    • autopsf: Updated AutoPSF plugin to new RCSB PDB web site layout, adapting the automatic PDB download to the new layout of the RCSB PDB web site, since the previous URLs no longer function.
    • save_state: Avoid using loop control idioms that break when deleting objects from resizable lists.
    • webpdbplugin: Updated the webpdb plugin to adapt the automatic PDB download to the new layout of the RCSB PDB web site, since the previous URLs no longer function.
    • plugins: Eliminate historical build configurations and associated host configs.
    • Merged in bug fix for handling of non-orthogonal unit cells in the ::TopoTools::replicatemol function.
    • Ensure that when a Pickable gets deleted, that any pending pick events are canceled so that we don't get a crash later on in pick_end(). This cures problems with user-defined callbacks on mouse pick events that delete representations associated with the in-progress pick event. The new code will null out any in-progress pick when the Pickable is removed from the PickList.
    • vmdprefs: fixed a bug in the gui control of aoambient and aodirect settings
    • qwikmd: New functions to generate topologies for the QM region
    • qwikmd: Widgets to generate topologies for the QM region ONLY Modification of the Edit Atoms window to become Generate Missing QM Region Topology window
    • readcharmmpar: Remove comment of the read para flag to make psfgen aware of the beginning of the parameters section
    • Corrected handling of volmap output filenames that lack the .dx extension.
    • gromacsplugin: Changed the Groamcs plugin TRX timestep read logic so that if we get a NULL pointer for mdio_ts.pos caused by a zero-sized coordinate frame (possibly occuring as the result of a corrupt file or some other reason?) we skip the afflicted timestep and continue reading.
    • mdff: fixed temperature setting for remdff
    • mdff: turned temperature control back on in ReMDFF. added resetmaps.sh for ReMDFF.
    • qwikmd: Update the configuration files in the user qwikmd Library folder (copy the older ones to the backup folder). Add the QMMM files to the user qwikmd library folder
    • Update Colvars to fd7445328d5f670863690869bf95716dce8a1dd8
    • qwikmd: First implmentation of the QM/MM and functions to prepare QM/MM structure files and namd configuration files. Allow prepare new structures and simulations starting from a previous simulation prepared with QwikMD. General improvements and bug fixes.
    • qwikmd: Declare steps per cycle explicitly. First version of the Configuration files for QM/MM calculations. Add text for the info buttons of the QM/MM tab Fix text for materials and colors info buttons. Update solvent, salt ions and concentration variables in the text Correct the balloon text of the materials resolution label
    • autopsf: Bug fix for the undeclared Ccoords (broken fro coarse grain models)' Bug fix for the mapping of chains to segments (chaintoseg variable). The chains were always one cicle increment ahead, breaking in the last residue of the pdb.
    • Ensure that the VCA cluster device is initialized to NULL in all cases.
    • Implemented maximum transparent surface display feature that matches the behavior of the original CPU Tachyon -trans_max_surfaces command line flag. This is particularly useful when rendering images of complex cryo-EM density maps that have a very large transparent surface depth complexity which can result in overly-detailed or confusing images. By dropping display of the Nth and greater transparent surfaces a scientist can make an effective "illustrative" rendering by removing the excessive background detail.
    • Prevent an uninitialized read due to order of constructor initialization steps.
    • cranked version
  • VMD 1.9.4 alpha 5 (April 26, 2017)
    • Updated ffTK Makefile to add missing installation of fftk_Configuration.tcl source file, and updated version number to 1.2.
    • Allow people to use transmode as a means of hacking shaders in pre-built binaries by passing values all the way down into OptiX.
    • autoionize: Added an extra safety check so that autoionize will only try and create Tk dialogs for error output when the user is running in a graphics-enabled session and has launched the GUI for autoionize rather than through the scripting interface. Updated autoionize version numbers to 1.5.
    • xmdff: added -ignorestderr to exec to avoid xmdff aborting if vmd reports any libgl warnings
    • Implemented an alpha transparency channel for perspective, orthographic, and dome master camera modes in the TachyonL-OptiX ray tracing engines for use when compositing images rendered by VMD with externally rendered content or background materials produced by other means, as needed for the NSF CADENS movie project: "The Birth of Planet Earth".
    • Added alpha channel tracking infrastructure to the low level OptiX ray tracing code.
    • corrected rgba4f to rgba4u conversion loop
    • Added alpha channel image output support to OptiXRenderer image output routines
    • Bolstered error handling for OptiX image output after adding alpha channel paths
    • Commented out png_set_alpha_mode() call that apparently isn't implemented in all revs of libpng. Corrected missing file close.
    • Initial implementation of alpha channel image file output
    • Added in PNG alpha channel output implementation based on Tachyon src
    • cranked version
  • VMD 1.9.4 alpha 4 (April 19, 2017)
    • psfgen: Replace use of int64_t with long since older MS compilers didn't support int64_t anyway, and long works fine on 64-bit platforms where it would be possible to generate multi-billion atom structures.
    • psfgen: The stdint.h header doesn't exist on older MSVC compilers. Since we don't actually need it on any existing platform we compile VMD on, don't include it, at least for the time being.
    • mergepdbs: updated script to get the right topology file location
    • Corrected the old buffer-based OptiX lighting code path which hadn't yet been correctly synced up with changes for positional lights etc.
    • Prevent un-normalized directional light directions from making it into the core OptiX rendering code.
    • Removed all conditional compilation checks for VMD plugin ABI versions prior to 15 since plenty of time and use has shown the oldest API entry points to be useful by now. A current question is whether it still makes sense to retain some of the APIs that were added circa 2010/2011 for the purposes of paratool-based parameterization and similar, which may no longer be necessary given the molecular file formats that currently exist in the field.
    • mdffplugin: fixed bug in checking paramater file location (qwikmd issue) and replaced code with much more reasonable check
    • namdenergy: Include changes to the "Parameter Files (-par FILE):" description sent by Peter Freddolino
    • topotools: Applied Axel's latest Topotools bug fixes that address small problems reported by One Sun Lee and Aric Newton, and updated the DOI for topotools.
    • plugins: Added compilation rules for KTH PDC Cray XC40 'Beskow'
    • Added ref to NvPipe API
    • qwikmd: Call catdcd using the explicit path to the folder inside the VMD plugins tree
    • colvars: Updated to colvars version 20170321
    • psfgen: Minimal change to allow writing tiled billion-atom systems for testing.
    • psfgen: Increase version to 1.6.7.
    • psfgen: Support 2 GB hasharrays to enable 2^25 residues per segment.
    • fftk: converted geometry optimized PDB and charge optimized PSF files to multi-use variables accessed through the configurations namespace
    • fftk: general configurations changed to be self-initializing on startup
    • fftk: the configuration namespace is now a dependency of script-based bond/angle and dihedral optimizations
    • fftk: implementing general configuration namespace and hooked up to variable storing namd binary path
    • readcharmmpar: uncomment "read para *" lines to be detected by psfgen and ignore until the next "read rtf" flag appears again
    • Added "Delphi Force" plugin to the externally-hosted plugin list.
    • Emit a console message when the user has overridden the VMD OptiX shader path
    • Correct a bug in the shadow ray transparent surface light attenuation
    • Updated collective variables module with changes that migrated large method implementations out of headers (previously declared inline) and into the class implementation, which also cures problems with the Intel C/C++ compiler and its ability to generate code for multiple target architectures in the same binary. The previously inlined methods were not being properly generated as runtime-dispatched functions by the Intel 2015 compilers.
    • Further streamlining of hand-vectorized CPU kernels, removing old non-FMA implementations for AVX/AVX2, and misc cleanup.
    • Prototypical implementation of AVX-512F molecular orbital kernel. Uses exponential approximation approach, AVX-512 mask registers, and FMA instructions. Needs further tuning, but good enough for starting work.
    • Put in thread affinity logic for the persistent thread pool used by the molecular orbital CPU kernels. While not important for standard x86, this is of significant importance for Power8 and KNL that both have significant SMT depths, to eliminate run-to-run variation caused by Linux shuffling threads around with large thread counts.
    • cranked version
  • VMD 1.9.4 alpha 3 (March 8, 2017)
    • psfgen: corrected psfgen version number to match compiled code
    • psfgen: Fix C++-style variable declarations after first statement.
    • Bugfixes and optimizations in the Colvars module
    • Enforce the checking of the protocol's temperature
    • qwikmd: Force the initialization of the velocities after the Minimization steps.
    • Collective variables updates and a fix for a bug reported by Chris Mayne.
    • Added comment to make it clearer what low-level array storage format is used for people reading the headers.
    • Prevent the VMD viewport height factor from influencing OptiX dome master camera behavior. We should instead add an explicit fov control API for this.
    • Update VMD builds to require OSPRay 1.2.0 or later.
    • Replace the use of the global "aoWeight" factor from OSPRay 1.1.x with the new special-purpose "ambient" light implemented in OSPRay 1.2.0.
    • Updated VMD to require OSPRay version 1.2.0 or later, since that version fixes the known problems with lighting through transparent surfaces. VMD enables the OSPRay "aoTransparencyEnabled" flag by default since that's the normal behavior for the other ray tracing engines that support it.
    • cranked version
  • VMD 1.9.4 alpha 2 (February 7, 2017)
    • psfgen: Sync with NAMD. Bump version to 1.6.6. In topology file PRES (patch) entries support ATOM record with name but no type or charge to specify subsequent atom insertion order. From Brian Radak: new psfset command to replace vel, bfactor, and renameatom commands, extend segment command to query charge.
    • Latest collective variables module updates from Giacomo and Jerome.
    • Added source files for the prototypical FastPBC implementation.
    • Added Python bindings for per-residue RMSD, RMSF, QCP etc, and Hbonds.
    • Added routines for per-residue RMSD, RMSF, CoM, and refactored Hbond code to facilitate access through native Python interface. The Hbond changes need further revision for robustness.
    • tinkerplugin: Applied patch from James Graham to correctly handle parsing of Tinker arc files that contain simulation periodic cell information.
    • Added Tcl "mol voldelete" command and updated the behavior of "mol volmove" so that both require the volume index parameter for the sake of encouraging consistent usage.
    • Added prototype fast PBC wrapping code written by Josh Vermaas as part of preparing for the ORNL/NCSA OpenACC hackathon.
    • Added per-residue variants of several existing VMD "measure" routines: measure_center_perresidue(), measure_rmsd_perresidue(), and measure_rmsf_perresidue(). Added an initial refactored variant of the hbonds determination code that has been separated out of the Tcl hbonds implementation so that it can be called directly from Python also.
    • Added Python interface to allow volumetric data objects to be deleted from a specified molecule. The Tcl variant of this still needs to be added.
    • cranked version
  • VMD 1.9.4 alpha 1 (January 31, 2017)
    • Initial prototype implementation of molecule instancing feature, with Tcl bindings for new commands "mol addinstance" (to add one), "mol showinstances" (to show instances for a selected representation), and "mol instances" (to return the count of instances). At present, the instance list is global to a molecule and they are not individually selectable or modifiable, but this is a short-term limitation. Ultimately, the instances should be indexed, and multiple lists of instances should be maintained per molecule, accessible by indices or string name keys. These next steps will enable development of hierarchies of instances and other advances in a prototypical form for evaluation and testing for a period of time before they are ultimately committed into a low-level implementation.
    • gromacsplugin: Use modular arithmetic to prevent formatting problems on GRO files that contain more than 100,000 atoms. Since GROMACS ignores the atom indices, causing the indices to wrap around is a simple workaround to prevent GRO files for large structures from becoming unreadable.
    • psfgen: Warn and ignore on self and duplicate bonds when reading topology files.
    • Replace the use of literal constants for trajectory loading "waitfor" sentinel values with a new FileSpec::waitfor enum for this purpose. Corrected an old error in the save trajectory FLTK menu.
    • qwikmd: Bug fix in the declaration of the default material
    • qwikmd: Bug fix on atom name changes
    • Corrected VMD AVX-512 CPU feature test reporting so that it correctly identifies non-KNL Xeon CPUs that have AVX-512F, but not AVX-512ER etc. The previous VMD startup code, when run on next-gen Skylake Xeon E5 CPUs misidentified them as KNL in the startup messages. At present, only KNL supports all four of the AVX-512F/CD/ER/PF and other scientific computing instruction subsets. The Skylake Xeon E5 supports just AVX-512F/CD so far.
    • Corrected incorrectly terminated Tcl_AppendResult() calls in error handling cases that arise in animate, display, and measure commands. Eliminated tabs in the source code, and did minor code reformatting cleanup where necessary.
    • mdff: moved autosmoothing code from mdff_setup to mdff_gui since mdff_setup doesn't normally make potentials.
    • topotools: Prevent un-escaped brackets from being interpreted as a Tcl command.
    • mdff: initial commit of new BETA feature for setting up ReMDFF simulations
    • Promote integer volume dimensions to long to avoid integer overflow issues in the Tachyon renderer interface.
    • Fixed 3-D texture map allocation and management APIs in VMD to allow handling of large byte-per-voxel tomograms that would break 32-bit indexing arithmetic that inadvertently remained due to lack of manual integer type promotion in a few places where sizes were computed in the VolumeTexture class. This was corrected by adding a new size calculation method that does the required (ugly) manual type promotion internally.
    • Corrected various minor issues that cropped up during compilation of the OSPRay renderer with GCC rather than Intel C++.
    • torsionplot: Bug fix for windows, where the tmpdir folder is defined only as "c:" and not "c:/"
    • psfgen: Recognize READ statements even if previous END statement is missing.
    • mdff: fixed file overwrite bug on Windows when MDFF called from QwikMD
    • Wrote skeletal prototype for hand-written GPU-accelerated QCP kernels.
    • Updated the QCP code to avoid on-demand thread pool creation to avoid performance loss on Xeon Phi hardware with large core counts and current Linux kernels that don't seem to initially migrate large numbers of threads well.
    • Revised the QCP RMSD measurement APIs to pass in the VMDApp pointer so we have access to both the CPU and GPU persistent thread pools. This matches the structure we used for the RDF implementation, and it also sets the stage for eliminating the CPU-side on-demand thread launch approach we previously had to use, which is a particularly poor performer on Xeon Phi hardware. In the case of CUDA the thread pool is also a must have since we'd otherwise have to create fresh threads/contexts.
    • psfgen: Sync with NAMD 2.12, mostly from Brian Radak: vel, bfactor, and renameatom commands; query velocities, mass, and atomid; writepsf nopatches option.
    • Revised the VMD startup script to better accomodate the special needs of EGL-enabled VMD builds running on SLURM-based Cray XC50 machines such as the newly-upgraded Piz Daint system at CSCS.
    • moldenplugin: Corrected buffer parameter in sscanf() call, from Thomas Holder, Schrodinger
    • plyplugin: eliminate unused string list, from Thomas Holder, Schrodinger
    • jsplugin: Corrected function return type, from Thomas Holder, Schrodinger
    • qwikmd: Remove Render related text. Add resolution info.
    • qwikmd: Add MDFF text info. Add color scheme text.
    • qwikmd: Remove Render commands. Label corrections. Add check resolution command after adding representations.
    • qwikmd: Addition of color schemes. Combobox corrections to avoid getting stuck in selections. Minor GUI corrections.
    • qwikmd: Added images for new QwikMD docs, updated CSS page formatting, and updated the documentation page to match the current QwikMD software.
    • Added more URLs for reference for the Amira plugin
    • Added Amira plugin to the build
    • Added early prototypical plugin for reading Amira mesh files
    • Force the fully-general shader to enable runtime toggling of the VR clipping plane and the VR headlight.
    • Slightly improved the shader safety check for bogus surface normals resulting from degenerate triangles in isosurfaces reconstructed from noisy data.
    • Added a short-term workaround for scenes that contain some really bad surface geometry from marching cubes surfaces that result from noisy and coarse resolution cryo-ET
    • Improved console debugging messages
    • Added code to read and report amin/amax/amean when reading MRC maps. Improved MRC/CCP4 plugin handling with a new special case for for orthorhombic cell axes, which solves a numerical precision problem with very large tomograms where there was previously a possibility of computing a NaN for two of the Z-axis basis vector components when running the code path that previously assumed a non-orthorhombic map. Improved code organization.
    • Updated URLs for MRC/CCP4 file format specifications for the variations used by EMDB, the IMOD program, and recently published format extension proposals in JSB.
    • Cranked version
  • VMD 1.9.3 Final Release (November 30, 2016)

Please email any questions to vmd@ks.uiuc.edu.