VMD Development Status

  • VMD 1.9 Final Release (March 14, 2011)
    • README: added a note regarding the crdplugin update
    • viewchangerender: Corrected display of total movie duration.
    • vmdmovie: Force numframes to be an int.
    • timeline: tweaked control placement to look good on Mac, Windows, and Linux
    • Added extra calls to FLTK size_range() method to try and workaround what appears to be an FLTK bug on MacOS X where the OpenGL window can become non-resizable under certain conditions.
    • crdplugin: Cranked minor version of CRD plugin due to recent change to box output formatting.
    • crdplugin: Fixed formatting of AMBER CRD box info when writing CRD files.
    • Added extra safety checks on remaining minmaxlist[] accesses in the GUI callbacks.
    • Free any remaining tubearray at shutdown.
    • Fix a tiny leak that could occur if no QM orbitals are loaded by an Orbital rep gets created/updated.
    • Added initialization of orbital rep variables that turned up in a valgrind test run.
    • Fix unprotected accesses to the minmaxlist used to define the active range for isovalue sliders. The GUI code now sets the minmax range to 0:1 if there are no valid volumetric datasets loaded.
    • Set default state of the cullingEnabled member variable in the DisplayDevice base class constructor, curing an uninitialized reference in the OpenGL subclasses, found by valgrind.
    • Fix a single string that was being leaked in the FileRenderer destructor found with valgrind.
    • Updated the X3D export code, creating a new subclass that implements export for X3DOM version 1.1, which can only handle a subset of the X3D scene nodes possible in the full specification. As X3DOM implements more X3D nodes in future versions, we can remove virtual method overrides until X3DOM can handle everything that the full X3D export subclass uses. The X3DOM-specific export shows up in the Render window GUI as second X3D option, and the script renderer name is "X3DOM".
    • README: Added note about expanded range of label format specifiers
    • Added a few more atom label format specifiers: '%C' for conformation (altloc identifier in PDB parlance), '%f' for magnitude of applied user force, '%F' for current trajectory frame index, '%n' for molecule index, '%N' for molecule name string, '%T' for timestep physical time, and '%x', '%y', and '%z' for timestep atom coordinates.
    • Added JG's atom selectin parsing code for "nearest X to (selection)". We should probably not be using the "THROUGH" keyword for this, but rather fix the parser so that it uses "TO", and rebuild "THROUGH" as either "TO" or "...". The current code could surprisingly accept "nearest X ... (selection)" which doesn't make much sense. Will revisit this after 1.9 is released.
    • Added JG's K nearest atoms selection patch, with comments
    • Updated timeline text in the README release notes
    • Don't print CUDA orbital perf stats when animating in the release builds.
    • Don't print OpenCL orbital stats when animating in the release builds.
    • disable Tk in 64-bit MacOS X builds until the conflict between FLTK and Tk is completely resolved.
    • Enable OpenGL extensions when compiling 64-bit VMD on MacOS X 10.6.6
    • readcharmmtop: fixed version number in package provide statement
    • molefacture: changed default resolution for spheres to 16, and cones to 20.
    • molefacture: Updated the documentation figures to show the update gui
    • Made the VMD POV-Ray export code more paranoid about degenerate cylinders and cones, at the cost of using more digits of precision in the emitted scene file.
    • timeline: Fixed overlap problem for text on Mac printout. Param setters for RMSF and SASA working. No longer crashes if it finds zero h-bonds for whole trajectory.
    • membrange: explicitly require the 1.1 version of the charmm topology plugin, because only that is guaranteed to have CHARMM36 parameters.
    • readcharmmpar, readcharmmtop: change makefile to distribute CHARMM36 topology file and step version number because of its addition.
    • readcharmmpar: Corrected the package provide statement to give the right version number
    • nanotube: invert argument parsing logic to get the number of layers right when building graphene sheets.
    • molefacture: Add Johan to the credits, and point people to the new antechamber download
    • Updated OpenCL items to note that these are currently limited to those people compiling from source code.
    • Added code to automatically detect whether VMD was launched by clicking on the application bundle in the GUI, or if it was launched directly by running the executable. The new code post-processes the application bundle path accordingly so that it behaves as expected regardless how it was launched.
    • Manipulate the bundle path returned by the OS, as it differs depending on how the application was launched.
    • Added CoreFoundation/Cocoa implementation of the application bundle determination code for use by 64-bit MacOS X builds.
    • Updated configure script to support 64-bit MacOS X 10.6.x builds using Cocoa
    • Added 64-bit MACOSXX86_64 distribution target for MacOS X 10.6 using Cocoa
    • Enabled plugin builds for 64-bit MacOS X 10.6
    • Updated MacOS X startup code to support 64-bit Cococa builds. Still need to rewrite some Carbon app bundle query code to use Cocoa APIs.
    • Started fixing up the Makefile and configure script to be able to build VMD for 64-bit ABIs on MacOS X 10.6.x, using one of the Tcl/Tk 8.5.9 versions that has the "decarbon" changes from Tcl/Tk 8.6.x back-patched into it. This also requires the bleeding edge FLTK 1.3.x for cocoa GUI support.
    • Added new CVS tag for VMD 1.9 release
    • Added extra error checking for the call to cudaSetDeviceFlags(), which is the first CUDA API called within each device pool worker thread other than the device query routines.
    • shortened CUDA device init warning messages (only printed on error)
    • shortened plugin loading console message
    • vmdmovie: updated the version number in the docs to match the current code
    • Added CUDA device initialization safety checks earlier in the code so we can mark broken devices before we run subsequent kernels. Still need to add a flag mechanism to prevent subsequent kernel launches from using it.
    • molefacture: Changed parameter file output to explicitly write extracted parameters without wildcards.
    • Set menubutton widths for several plugins to avoid truncation in OS X. Affected plugins: timeline, molefacture, autopsf, saltbr, hbonds, pmepot.
    • molefacture: Fixed a typo when writing out parameter files for namd
    • Trimmed a few extra spaces from various geometry nodes in exported X3D scenes.
    • Added brief description for the new "measure cluster" command.
    • docs: a few corrections in the documentation for measure cluster.
    • topotools: Massively speed up 'topo guessatom' for large systems.
    • topotools: Selection $sel was not explicitly deleted.
    • vmddebug: Document the reason for the warning about automatic selection deletes.
    • vmddebug: Add code to monitor and warn about atom selections that are deleted due to the use of upproc and tying it to a local variable. Fix bugs in atom selection statistics.
    • Changed the X3D scene file index formatting to reduce file size by omitting optional commas in cases where just using whitespace is adequate.
    • Changed the X3D scene export code to limit the number of digits of precision used to specify surface normals, resulting in decreased model file sizes.
    • Updated the PLUMED plugin to be compatible with the next version of PLUMED, which has a different output format.
    • runante: Added variable for antechamber binary so that both windows (cygwin) and linux versions of antechamber can be run.
    • molefacture: Modified search for antechamber binary to take into account both windows and linux
    • namdenergy: Fix transfer of extended system file with -gui switch
    • Multiseq screenshot of the latest version. Set to 1500 pixels wide. Can be modified as needed for release notes.
    • multiseq: updated screen shot in the user's guide manual
    • Change the console output that is printed when plugins fail to load from an "ERROR" to a "Warning", since these are non-fatal to VMD and just result in less functionality.
    • cranked version
  • VMD 1.9beta3 (March 7, 2011)
    • minor README updates
    • added typecast when copying incoming point size parameter to FileRenderer member variable
    • assume that the lineWidth member is already set in the default FileRenderer implementation.
    • Clear angle type NameLists as well.
    • Added a clear() method to the NameList template, similar to the what we do in the ResizeArray template, equivalent to calling the destructor and constructor.
    • Update color lookups for the solvent rep in all cases.
    • Implemented line_array() and polyline_array() subclasses for the X3D scene export code.
    • Implemented new FileRenderer line_array() and polyline_array() primitives to enable much more efficient scene export for formats that support various types of line array geometry nodes.
    • Added a FileRenderer::point_array_lit() method for rendering groups of points with surface normals and lighting.
    • Simplified default handling of lit point arrays.
    • Simplify X3D PointSet material nodes slightly.
    • Implemented the point_array() method for the X3D scene export subclass.
    • Added a new point_array() method enabling much more efficient scene exports in FileRenderer subclasses that can describe large point arrays in a single geometry node.
    • ils: The probe coordinates are specified through an atomselection but the coordinate assignement for the automatically added frames with the coordinates of the oriented probes just assigned the first n atoms regardless of the selection. Typically the selection would be "all" and it won't matter but you never know. Anyway, it's fixed now.
    • removed old X3D text rendering loop
    • Changed the X3D scene export to use IndexedLineSet primitives more efficiently, for text rendering.
    • Enabled compilation with sqlite on Linux and MacOS X, needed for the DESRES dmsplugin.
    • Rolled our FLTK libs forward to 1.1.10, so the Mac builds no longer need special treatment here.
    • deleted old X3D cylinder code remnant
    • removed old X3D triangle strip rendering code that used to use the IndexedFaceSet primitive, now that we use IndexedTriangleStripSet primitives.
    • Added JG patch for fragment coloring, with a small correction.
    • Applied JG patch to trigger a callback when the top molecule changes
    • Applied JG patch for NumPy version 1.3
    • Added the necessary build dependencies and logic for the new dmsplugin contributed by D. E. Shaw Research. The dmsplugin code depends on the open source sqlite3 database engine, and is thus conditionally compiled depending on the various new SQLITE environment variables set at compile time.
    • Added new dmsplugin written by D. E. Shaw Research, depends on sqlite3.
    • Patched the new maeff plugin with numerous ifdef checks for DESRES_CTNUMBER to make it compilable with the current version of the molfile plugin APIs.
    • Added DESRES-specific modifications into the molfile plugin API for conditional compilation, with the goal of merging these into the production molfile plugin API as soon as some of the details are worked out.
    • Latest version of the maeffplugin from DESRES, prior to patches to make it buildable with the current molfile plugin API.
    • Patched the new DESRES DTR plugin so it will compile with the current molfile API, and to workaround some limitations of older compilers.
    • dtrplugin: Updated the DESRES DTR plugin with their latest version (before additional patches to make it compile against the current molfile API)
    • ilstools: Introduced a bunch of safety checks that for instance prevent the use of molecules without coordinates or selections with zero atoms.
    • VMD now enumerates the OpenCL devices associated with each of the platform IDs it finds and lists their basic stats.
    • plugins: fix Makefile dependencies on periodic_table.h header file.
    • timeline: fixed alignment problem: vert text offset in vertScale
    • Mark triangle strips and meshes as "not solid" so that they are not drawn with backface culling enabled in the various X3D viewers.
    • Changed the X3D scene export code to use the IndexedTriangleStripSet primitive by default.
    • removed the graphene plugin now that it has been merged into the nanotube plugin
    • merged graphene plugin with nanotube plugin. Split GUI off into separate file. add support for building full topology files through topotools. a few bugfixes.
    • updated documentation for combined nanotube and graphene plugin.
    • Replaced the use of the IndexedFaceSet nodes with IndexedTriangleSet for the implementation of the X3D trimesh() method.
    • Check for orthographic camera and set the exported scene header to X3D 3.2 for the required OrthoViewpoint node.
    • plumed: Some minor fixes to the plumed plugin from Toni
    • Fixed OpenCL linkage flags for MacOS X 10.6
    • Changed active FLTK rev for MacOS X (x86) to FLTK 1.1.10 since it fixes a number of irritating bugs in the older revs.
    • Disable event flushing workaround for the MacOS X x86 builds based on the most recent FLTK/Tcl/Tk versions
    • Updated comments about FLTK OpenGL window creation flags and their behavior on MacOS X as of version 1.1.10.
    • Eliminated old workarounds for limitations in IBM OpenCL versions 0.2 and earlier. The latest 0.3 beta version has fixed these bugs.
    • Fixed MacOS X CUDA library redistribution issue
    • Export VMD camera parameters to X3D scene files.
    • Improved floating point consistency and updated some GUI name strings for several of the FileRenderer scene export subclasses.
    • more verbose description string for the built-in Tachyon renderer
    • Updated synced the default Renderer chooser GUI name string with the current GUI string for the Snapshot renderer
    • Tweak Snapshot renderer GUI name string.
    • Commented out the Babel executable path determination loops that walk the user's path, since this approach encounters trouble with machines that have wildcards in the path. The existing babel plugin only works with the old OpenEye version of babel anyway, so we might want to revise this when we fully support OpenBabel anyway.
    • graphene: Added placeholder doc page for the new graphene plugin
    • graphene: Added Bob Johnson's graphene builder plugin
    • nanotube: Updated docs to match version of the plugin.
    • nanotube: Re-added Axel's bond retyping patch after incorporating Bob's version
    • nanotube: Updated nanotube plugin with latest version from Bob Johnson
    • Updated default version number for VideoMach executable
    • molefacture: New features: The total charge is now modifiable with a new set total charge button. This makes geometry optimisations possible when molefacture incorrectly guesses the formal charges (usually due to fractional bond orders). Included checks for atomcount, only running antechamber/sqm if there are atoms in the molecule. New command in file menu to write psf and pdb files for the given molecule (this only generates the correct impropers if OPLS atom types are assigned. If you provide a parameter file, this command can also search through it to produce a smaller file containing only the required parameters for the molecule. This is required for OPLS to reduce the ~20MB parameter file to something manageable.
    • runante: correctly check for antechamber using exectool and with the AMBERHOME environment variable. Fixed the AM1BCC charge calculation and also modified exec commands to catch the output from antechamber.
    • runsqm: runsqm now checks for sqm executable using exectool and tests for the ability to print bond orders. Also prettied up the output to the console.
    • Enable compilation of HOOMD plugin on MacOS X 10.5.x using the dynamically linked libexpat.dylib. Older revs of OSX don't have libexpat, so this feature has to be disabled for OSX 10.4 builds.
    • Enable compilation of HOOMD plugin using the dynamically linked libexpat.so
    • Added HOOMD plugin to the optional list handles specially in the distrib build target.
    • Changed molfile plugin build rules for the NetCDF plugin and HOOMD plugin so that we only build them as static plugins when the libraries they depend on are also implemented as static libraries. This eliminates the need for VMD itself to be linked against the dependent libraries, making it much simpler (and safer) to distribute plugins like these with external dependencies, without impacting VMD itself.
    • Added hoomdplugin targets to the molfile plugin Makefile, initially using a strategy identical to the NetCDF plugin. In order to prevent us from having to link VMD itself against libexpat, this will subsequently be changed to assume linkage against a shared object, and thus only the dynamic plugin will be compiled and not the static plugin. With some further work, this approach could likely be used for the NetCDF plugin as well, eliminating the necessity for VMD itself to be linked against the associated libraries, when dynamic libraries are used.
    • rnaview: Applied Axel's patch to correct output formatting.
    • molefacture: Reordered the order improper atoms are printed using the center atom first, as per standard charmm format.
    • molefacture: Added improper centers for OPLS atom types
    • molefacture: New charmmified OPLS atom types and typing rules
    • cranked version
  • VMD 1.9beta2 (Feb 28, 2011)
    • more cleanup of plugin loading message output
    • plugin loading messages now conform more closely to the rest of VMD output
    • improved floating point consistency in X3D export code
    • Updated VS2005 project with X3D output sources, and many other updates.
    • Check for the case where we have a NULL name string or a NULL menu item pointer, so that we don't crash when trying to set a chooser for an empty menu. This case occurs with the Save Coordinates menu on VMD builds that only use dynamically loaded plugins (e.g. Win32 builds), since the chooser is initialized with no plugins loaded when the program starts, and doesn't get plugins until halfway through the startup process.
    • Added X3D export to the Windows builds.
    • timeline: Width fix for label text (was problem on Windows)
    • timeline: Fixed crash when load molec after starting up with no molecs. better onscreen control placement (fixed overlap on Macintosh, could still use tweak on Mac) param settings for hbond and salt bridge working fine.
    • Added preview button option that lets users play through the movie list without having to use Movie Maker.
    • Minor documentation corrections.
    • topotools: Fix typos, clarify a few statements.
    • add vmddebug plugin to distribution.
    • Add vmddebug plugin and its first submodule, atomselect.
    • remove atomselect tracking functionality to move it to a plugin.
    • hoomdplugin: update molfile plugin for hoomd-blue to support its native xml file format up to revision 1.4. restructured to node parsing code to have less redundancy and make it easier to extend.
    • viewchangerender: Modified the way that VCR affects the duration in Movie Maker and fixed the recalculation of total duration after the order in the movie list is changed.
    • viewchangerender: Added documentation and image for vcr
    • Apply fix for problem reported by Li Li where selecting multiple contiguous entire columns across sequences was, in fact selecting the residues a single residue at a time. While technically correct, this behavior has been changed to select a range of residues for a given sequence, rather than consecutively selecting individual residues
    • viewchangerender: Corrected the display of MovieMaker Status when re-launching the gui. Corrected the default transition times applied when moving vp's up or down in the movie list.
    • Change the default behavior of depth cueing so that it is considered "available" in batch mode VMD runs with -dispdev text. This change allows batch mode rendering jobs to use depth cueing. We have to be careful to ensure that DisplayDevice subclasses that don't support depth cueing provide their own virtual methods for depth cueing and that they set the cueingAvailable member variable to false in their constructor.
    • Use single-precision constants for improved FP consistency
    • timeline: fixed small bugs, highlight appears and doesn't appear properly
    • add explicit type cast to silence MSVC compiler warning
    • Added missing virtual methods for window position/resize operations for SDLDisplayDevice subclass.
    • Removed old/unnecessary ifdef
    • Updated SDL constructor to match the X11 code.
    • fixed double linkage of OpenGLRenderer.o for SDL builds
    • Updated the SDL compilation flags so that the GLSL and caching code are compiled as well.
    • Fix double-linkage of Hershey.o for FLTKOPENGL and SDL builds.
    • Eliminated duplicated code to find an FLTK menu item from its associated character string, and migrated the implementation into the VMDFltkMenu class. FLTK provides this functionality for itself in the most recent versions, but we use our own implementation so that VMD can be compiled on older versions.
    • Eliminated spurious tabs from the source.
    • chirality: Fixed typo in variable name that was leading to incorrect flagging of moved hydrogen atoms, preventing chiral error from being fixed.
    • Made the render menu more compact and a bit nicer looking with the newest FLTK revs.
    • Changed the width of the main VMD window so that compilations against FLTK version 1.3.x using antialiased fonts will not have the help menu running off of the right hand edge of the menubar. This might just be due to a bug in FLTK's font handling, but since it is so easy to workaround, we'll make the change in VMD so people building from source don't encounter this problem.
    • Updated Tachyon URL referenced in the help menu.
    • Pruned babel and the old "related software" links from the help menu.
    • cranked autopsf version number since it hasn't been updated since various recent changes were made.
    • Disable the STING plugin (don't show in the menus) until it has been updated. The STING DB is no longer hosted or mirrored at Honig's lab at Columbia, so at the very least all of the code that references the web pages would need to be updated now.
    • autopsf: cranked version number
    • autopsf: Remove ability to use -nofailedguess
    • namdenergey: Fix behavior of ts and stride arguments. Throw an error if selections for interaction energies have overlaps.
    • Animating through frames correctly corresponds to top molecule and arrives at the correct final frame.
    • multiplot: Applied Toni Giorgino's patch to allow the user to export the dataset to simple ASCII files, either as a sequence of datasets, or in a "wide" matrix format (if the X vectors are the same). Cranked version of multiplot to 1.5.
    • Updated all of the old text command source files to better describe their function, and made sure they had appropriate auto-generated CVS header tags.
    • Fix Tcl result for "render format" subcommand
    • Begin using the "pretty" name strings for the FileRenderers in the GUI.
    • Added new methods to query the "pretty" name of FileRenderer subclasses for use in the graphical interface. Scripts will still use the short names.
    • Added routines for finding short renderer names from their GUI "pretty" names, and related bookkeeping.
    • Updated all of the FileRenderer subclasses with additional "pretty" renderer names for use in the GUI. Made all of the default output file names consistent ("vmdscene.xxx") across all of the FileRenderer subclasses.
    • Added filerender_prettyname() for use in the GUI
    • Added support for dashed line rendering to the VRML2/VRML97 and X3D scene file export code.
    • Detect and cope with denormalized rotation axes when rendering cylinders in VRML2/VRML97 and X3D scene files.
    • Added basic implementation of text export for VRML2/VRML97, and X3D scene exports.
    • Added the new PLUMED and viewchangerender plugins to the Extensions menu
    • timeline: Fixed crash on early printing, message box now provides warning message. Tweaked menu.
    • plumed: Added PLUMED-based collective variable analysis plugin contributed by Toni Giorgino.
    • Added the FEP analysis plugin by Chris Chipot and Liu Peng
    • Implemented Jerome's suggestion to make the Save Coordinates menu default to the PDB file type for the time being.
    • Fix "measure dipole" when the "-masscenter" flag is used. Was dividing by total mass times the number of selected atoms, but should have only been dividing by total mass.
    • Use shorter method name for non-transformed cylinders for RenderMan, and make it more generic so we use the same names in other FileRenderer subclasses.
    • volutil: workaround complaints gnu make 3.81 complaints about recursive definitions
    • Updated molfile plugin doc pages to match current code.
    • timeline: Big improvements to printing: prints axes, threshold graphs, labels, etc. Output is .eps file. Other bug fixes.
    • Updated README with X3D scene format info.
    • Added export of background color and gradient backgrounds for VRML2/VRML97 scene exports.
    • minor tweaks, fixed an untransformed radius case (but not in active code)
    • Added transformations to VRML2/VRML97 geometry. If any of the 3-D printing tools encounter difficulties with the small coordinate magnitudes, one can always set the viewing matrices to the identity matrix prior to export.
    • Make single-triangle primitives in VRML2/VRML97/X3D exports double-sided by default.
    • added documentation for "measure cluster".
    • Fixed out of bounds loop in orient() function. (The condition for breaking that was checked in the loop is under normal circumstances always true. That's why it had no effect in any of the test cases.) Also eliminated a futile loop i the same function.
    • added another useful X3D info URL
    • Added background color and background color gradient support to X3D exports
    • pbctools: remove vmdcon emulation, as it already exists in vmdinit.tcl.
    • Make exported VRML2/VRML97 files more compact, improved indendation
    • namdenergy: synchronize documentation with plugin version number
    • Implemented point primitives for VRML2 / VRML97 scene exports.
    • Implemented point primitives for X3D scene exports.
    • carplugin: fix potential memory corruption on .car files with more than 9 molecules. Just wrap around and provide chain ids for all molecules. if one needs to make them unique, the (read-only) fragment index can be used.
    • ilstools: apply Axel's patch that fixes some minor issues in ilstools: Comment out or remove some debug puts calls. Add test to generated script code that checks for using a consistent ilstools package. the script might be prepared on a local machine with a newer plugin version than the remote machine as with the gpus. Add instructions on how to select the compute GPU until volmap ils is updated to use the normal device pool. Some spelling fixes.
    • gofrgui: add checkbox to gofr GUI to allow selecting the CUDA version. step plugin version and update documentation to mention the GPU version and add a reference to ben and john's paper.
    • Added transformation handling for all of the X3D geometry methods
    • Fix coloring of VRML2 IndexedLineSet primitives
    • docs: refer to -orient consistently with volmap ils.
    • Added new X3D scene export module to the GUI
    • Added cylinder and cone methods to the X3D export code
    • Implemented an X3D XML formatted scene export subclass based on the existing VRML2/VRML97 code.
    • Updated README with updates to scene export improvements for RenderMan, POV-Ray, VRML2/VRML97/X3D, Tachyon, and Wavefront scenes.
    • Implemented Vrml2DisplayDevice::tristrip() method to greatly reduce the size of exported VRML2/X3D files.
    • Implemented Vrml2DisplayDevice::trimesh() method to allow significantly more space-efficient VRML2 scene exports.
    • Misc cleanup for Vrml2DisplayDevice
    • Implemented assumed fix to loop structure problem in MeasureSymmetry
    • Marked a broken loop construct in MeasureSymmetry
    • Implemented a RenderManDisplayDevice::tristrip() method, to greatly reduce the size of exported RIB files.
    • Implemented the more efficient trimesh() method for RenderMan RIB exports
    • Implemented POV-Ray sky sphere background when VMD gradient background is enabled. The sky sphere won't work as expected for orthographic cameras, but there isn't currently a good way to avoid that. Also, there doesn't appear to be a way to get POV-Ray fog to behave more like OpenGL fog, so if fog is enabled, the sky sphere gradient will not be visible.
    • Added atom selection macro for the Drude particles and lone pairs associated with the CHARMM Drude polarizable force field.
    • Added some default colors for Drude polarizable force field particles, for types "DRUD" and "LP", and for names "LPA", and "LPB".
    • Simplify ifdefs for MacOS X SpaceNavigator drivers
    • Stripped out various old ifdefs used during development of new text rendering features, volumetric texturing, and other stuff that is now very stable.
    • VMD now absolutely requires Tachyon version 0.99.0 or later.
    • Enabled the use of rt_tristripscnv3fv() for rendering of triangle strips, using the very latest version of Tachyon. Eliminated old ifdefs for volumetric texturing.
    • Added new "stage size" command to let the user control how large the projected stage floor and wall planes are.
    • Allow the VMD stage to be grabbed and moved in "move molecule" mode in the same way that the Axes can be moved.
    • Improved built-in help for "stage" commands
    • moved STAGE_PANELS macro into the source code and out of the header
    • FileRenderer::square() method already has correct polygon winding order, so no need to swap it for Tachyon.
    • enable lighting when drawing the VMD stage so ray traced images can contain shadows.
    • Added Charles Schwieters patch to make thread CPU affinity functions work with GLIBC 2.3.2.
    • Added Charles Schwieters patch to make the VMDApp pointer accessible within the PickMode code.
    • Added global VMDApp pointer code required by VMD-XPLOR builds
    • Applied Charles Schwieters patch to improve error messages for the "color restype" command.
    • Added Charles Schwieters alternative mouse input handling code used for VMD-XPLOR builds, with associated #ifdefs. Eliminated tabs.
    • membrane: Fixed missing distribution of CHARMM36 bilayer templates, and updated the plugin version number.
    • Some tweaks to pretty up the title screen a bit
    • chirality: The priority order of hydrogen atom names considered for chiral center at O2' had been updated to ensure correctness for structures from the PDB containing DNA/RNA hybrids. However, it turns out the chosen order leads to the wrong hydrogen atom being selected with CHARMM RNA structures. In order to support both use cases, an additional test was added at the startup phase to ensure that the hydrogen name picked does not correspond to a hydrogen bound to atom O2'.
    • Started writing updated VMD 1.9 README feature lists, updates.
    • cranked version
  • VMD 1.9beta1 (Feb 15, 2011)
    • Write background gradient parameters to scene files used for external Tachyon renderings. Requires Tachyon 0.99.0 or later.
    • Enable rendering of gradient backgrounds for Tachyon renderings using orthographic projections for Tachyon version 0.99.0 or later.
    • Added the necessary code to adjust the Tachyon background sky sphere top/bottom normal projection values according to the view frustum definition. Added code for orthographic projections also, though matching functionality still needs to be added into Tachyon itself.
    • Tachyon volumetric texturing has been working well for some time, so I have eliminated the old alternative stub routines that were used before it was fully implemented.
    • Added code so that Tachyon will generate a background sky sphere (at infinite distance) allowing a simple emulation of the VMD gradient background polygon. Three things need to be improved still: 1) Tachyon's existing sky sphere doesn't work for Orthographic projections. 2) The sky sphere top/bottom coordinates should be scaled according to the field of view of the view frustum so that the "top" is at the top of the view frustum, and likewise for the bottom. 3) Tachyon needs a flag to handle Fog rendering over the background color in the same way that VMD/OpenGL does, where the background color is not actually fogged. OpenGL doesn't apply fog to anything that isn't drawn, so to match the OpenGL/VMD behavior, Tachyon should not apply fog in that case either.
    • Make FileRenderer subclasses track the background mode (solid or gradient) and the background gradient color parameters.
    • Ensure that the background mode flag (solid, or gradient background) gets copied when FileRenderer subclasses are constructed from the active display device state.
    • pbctools: update from olaf lenz and axel kohlmeyer: several bugfixes, new compound options for 'pbc join', alternate algorithm for 'pbc join' with -bondlist, 'pbc box' allows to set the material.
    • Updated User's Guide with the current form of the NIH P41 resource grant number.
    • Revised VMD User's Guide and Installation Guide title pages
    • multiseq: fixed a couple of non-latex quotes in the documentation
    • autoionize: The old version of autoionize used the wrong definition of ionic strength. The current version of the plugin had fixed this, but broke backward compatibility with scripts using the -is flag. To ensure backward compatibility, we now expose only the -sc (salt concentration) option. If users choose the (now undocumented) -is option, a warning is generated and the old behavior is reproduced.
    • Fix behavior of linear depth cueing mode (fog) for Tachyon renderings. VMD was incorrectly passing in a fog density value other than 1.0 when linear fog was enabled. Since Tachyon allows a broader range of Fog parameters than OpenGL (OpenGL ignores the density parameter when linear fog is enabled), this could result in incorrect shading.
    • cranked version
  • VMD 1.9a31 (Feb 11, 2011)
    • GPUs are faster today, so I have changed the default depth cueing mode to "on" for all of the display devices for which it is usable, i.e. any non-immersive display system. We could use depth cueing in the CAVE, but this would require the use of GLSL shaders with a radial fog implementation rather than the standard planar-Z-depth implementation in fixed-function OpenGL. The only reason it was set to "off" by default in the past, was to prevent a precipitous performance drop on very old hardware that didn't implement depth cueing well. Any platforms that still have such problems should be avoided entirely...
    • added FileRenderer::scale_factor() query for more efficient implementation of the ::sphere_array() method in various subclasses.
    • greatly improved the speed and cleanliness of scale_radius() by avoiding redundant matrix stack queries.
    • Counteract window aspect ratio changes, to prevent text from distorting as the window is made very tall and narrow, or very wide and short.
    • make Tachyon version test more strict
    • Teach VMD to use the new Tachyon in-memory texture API
    • cispeptide: Implemented fast algorithm for detecting peptide bonds that assumes that the protein structure doesn't have missing atoms. This algorithm is used only when a .psf file has been loaded.
    • Shrink GUI figures just enough to make latex happy
    • Remade all of the figures for the User's Guide, using a compilation based on FLTK 1.3.x so I don't have to do it again for a while...
    • docs: Various typesetting fixes for renderer docs
    • docs: more revisions to renderer docs
    • docs: reorganized the list of renderer/export options, updated URLs for ART/VORT, etc.
    • fixed char type for hershey glyphs
    • Added updated VORT URLs
    • multiseq: fixed a bug that was causing element colors to not get properly copied over when gaps were being inserted into a sequence.
    • multiseq: make editting vars visible to proc that needed to used them
    • multiseq: Improved error msg for incorrect invocations of 'seq'. optimized copying of color elements when a seq is changed.
    • Changed the Hershey font rendering code to allow both OpenGL-enabled and non-OpenGL compilations. Renamed hersheyDrawLetter() to hersheyDrawLetterOpenGL() since it is completely OpenGL-specific, and changed the parameters so the internal Hershey font arrays don't need to be exposed to the caller.
    • Updated Win32 installation icon
    • The Hershey font rendering code has to be included with all builds now that it can be used by the FileRenderer subclasses.
    • used some predefined 'const' vars instead of hardcoding magic numbers
    • cranked version
  • VMD 1.9a30 (Feb 10, 2011)
    • Compensate for extra unit of Z translation resulting from moving the coordinate system handedness conversion code out of the camera definition and into the world definition.
    • Further reorganization of RenderMan RIB exports to coalesce frame, camera, and lighting info together into logical blocks. Added comments regarding optional shading/lighting options that can be disabled by commenting out lines in the generated scene file.
    • Made various changes to the RenderMan scene export output to make it compatible with the latest versions of PhotoRealistic RenderMan. Recent versions of PRMan do not support display scaling operations other than on the X and Y axes. The old code emitted scenes that scale by -1 on the Z axis (to convert to a right-handed coordinate system), but with recent versions of PRMan, this generates a fatal error message, "Camera to screen matrix too general", and rendering terminates. To get around this limitation, the camera is only translated, and the remaining transformations are applied in the object to world coordinates by adding an extra top level scaling transformation, and by negating the Z component of the light directions, etc. The resulting RIB files have been tested with Pixar PhotoRealistic RenderMan 13.0.3, and things seem mostly fine now. A few adjustments need to be made to the camera setup so that the projection is identical to that of VMD, but it's very close already.
    • Added VMD version and required Raster3D version information to the top of exported Raster3D scene files.
    • Emit VMD version information and required POV-Ray version in exported scene file header. Misc cleanup.
    • Added support for text rendering to the RenderMan scene exports.
    • Added support for dashed lines to RenderMan scenes. Updated RenderMan exports to store VMD version information in the file header.
    • migrated non-transformed cylinder routine from protected to private
    • Added text rendering and dashed line support to Gelato renderings
    • Polished up the text rendering implementations for Tachyon, LibTachyon, Raster3D, and POV-Ray
    • cranked version
  • VMD 1.9a29 (Feb 9, 2011)
    • Initial implementation of text rendering for Raster3D
    • Initial implementation of text rendering for POV-Ray
    • Initial implementation of text rendering for LibTachyon (aka TachyonInternal)
    • Initial implementation of text rendering for Tachyon
    • removed debugging code used for recent changes to text rendering
    • Fix up hersheyDrawInitLetter() used by FileRenderer subclasses
    • Fixed pointer arithmetic in hersheyDrawNextLine() routine used by FileRenderer subclasses.
    • topotools: add flag to guessimpropers to allow overriding the default tolerance.
    • Doxygenized FileRenderer method comments
    • Redesigned methods for font rendering in external renderers.
    • Added a non-inlined hershey2float() variant of h2float() for use in font rendering loops within individual renderers.
    • Use multiple OpenGL display lists for fonts depending on the stroke width. For wider stroke widths, we add points at the stroke vector endpoints to prevent visible cracks from forming with wide lines. For narrow stroke widths, we only draw the stroke vectors themselves, which is faster and less touchy with variations in antialiasing implementations, etc.
    • Added code to draw points at font stroke vector endpoints, to prevent "cracks" from appearing when larger line widths are used to render the fonts.
    • Modulate both glLineWidth() and glPointSize() together, so we can draw points at font stroke vector endpoints, preventing the appearance of "cracks" between the lines when large line thicknesses are used.
    • rnaview: Increased size of array to hold reference PDB file names from 80 to 512 to avoid a buffer overflow.
    • multiseq: added 'lines' as a choosable rep type from within the multiseq window, as well as making it a highlight style choice.
    • multiseq: fixed spelling of Commision to Commission
    • Updated WKFThreads source files with instructions for regenerating them from the original Tachyon source files.
    • Pull in WKFThreads updates from the Tachyon source tree, minimize diffs between the hand-edited version and the autogenerated version
    • Reduce diffs between hand-edited WKFThreads code vs. autogenerated version from Tachyon, post-processed by 'sed'.
    • misc cleanup of triangle fan loops for cylinder() method
    • topotools: topolammps include comments about numerical to symbolic type mappings when writing data files
    • topotools: change bond/angle/dihedral/improper atom index lookup so it works correctly with selections (and faster).
    • docs: Updated docs to mention WorkForce threading code, hash tables, etc.
    • docs: revised Tachyon URL
    • Force Blue Waters builds to latch on to OpenCL CPU devices and not GPUs for now, until we make the device selection code smarter. Since Blue Waters currently has no GPU devices, the use of an ifdef is adequate though not ideal.
    • Enable OpenCL for Blue Waters builds. Requires the new IBM OpenCL version 0.3 due to the need for 64-bit support.
    • Added documentation for Python IMD copyunitcell feature
    • Applied Axel's patch to allow forcible selection of which CUDA device to use for ILS. This is a short-term hack, and it should either be recoded to use the CUDA device pool construct, or it should use the existing CUDA device mask functionality.
    • Correctly initialize all the full-screen wmhints structure elements to zero prior to calling XChangeProperty()
    • Changed "vmdinfo displaytype" to "vmdinfo dispdev" to match command line argument parsing, and historical name being "display device" not "type"
    • Added comments about dodgy approach to determination of display device type in the Python interface.
    • Applied patch from Axel and Justin to improve behavior of shared library builds for use within Python
    • Greatly improve initialization speed of atom data for "mol new atoms", implementing independent loops to prevent cache thrashing for large molecule sizes.
    • Make "mol new atoms" behave more like molfile plugins
    • Added Axel's patch to create a "vmdinfo displaytype" command
    • fix label textformat error message
    • Added Axel's patch to allow the Python interfaces to tell IMD to copy the previous timestep's unit cell.
    • Renamed "Load State" and "Save State" menu items to "Load Visualization State" and "Save Visualization State" to make it more obvious that these menu buttons do not save the molecule data if it has been modified within the session. This change is currently on a trial basis. It likely makes more sense to make this code smart enough to determine when the user has changed the molecule data, and warn them that the molecule data must be saved too, providing GUIs for that as well. For now this change is a step in the right direction in clarifying what's being done.
    • Enable width modulation for Tube reps
    • Applied Axel's patch to use vmdcon for output, and adding some helpful procs for debugging atom selection leaks etc.
    • Applied Axel's patch to make the logfile commands use vmdcon rather than direct output in support of improved vmdcon-based text console code
    • eliminated some leftovers and redundant code from the sphere_array() method.
    • Implemented sphere_array() method for faster Tachyon scene generation
    • Added a new multpointarray_3d() method to transform whole arrays of coordinates in a single call.
    • Added new FileRenderer::sphere_array() method to enable more compact scene files for formats with syntax that allows for elimination of redundant texturing information shared by all of the spheres.
    • Changed default Tachyon maximum ray recursion depth to 50 so people rendering stacked transparent surfaces (or lots of overlapping transparent spheres) don't get surprising results.
    • autopsf: Modified autopsf::reset_gui to also reset the following variables that weren't being reset: ssbondlist, extrabonds, mutatehis, cysironbondlist, chaintoseg, segtoseg, oseltext, regenall, ionize, guess, autoterm, incomplete, water
    • fix threading related memory management bug in find_within().
    • topotools: complete and correct angle/dihedral/improper list sorting and compacting in response to bug report from Wei Huang on vmd-l.
    • topotools: topolammps write out the intended atom_style flag in the data file header and compare it - if present - against the style requested on reading the data file. print warning but don't abort if mismatch, since some styles have compatible data files.
    • Revised the Labels Window, moving the global text size and text line thickness controls to a new "Global Properties" tab, and adjusting the width of the Labels Window to accomodate the new tab.
    • Added docs for "label textthickness"
    • Implemented new "label textthickness" command that affects all labels, similar to the behavior of the existing "label textsize" command.
    • Updated docs for the graphics/draw text command for the new line thickness parameter.
    • Added a thickness parameter to the DTEXT display command, and added a new thickness option to the "text" subcommand of "graphics" and "draw".
    • add URL to TopoTools homepage for updates between VMD releases and mention the topotools tutorial that is in the works.
    • Replace unnecessary calls to gluOrtho2D() with glOrtho() calls that do the same thing, to shave off a few libGLU dependencies.
    • psfgen: Enable readmol command to read structure from one file and coordinates from a second file, assigning coordinates based on sequence with the files rather than trying to match atom names. For example: readmol psf mymol.psf namdbin mymol.coor
    • multiseq: Work around a strange Tcl regex bug that was only showing up on Windows.
    • Fixed Win32 event handling for special keys, and corrected a mismatched event code for Page_Down
    • cranked version
  • VMD 1.9a28 (Jan 28, 2011)
    • Updated version info copyright data in the Info.plist files in the x86 and PowerPC application bundles.
    • change various version strings for VMD 1.9
    • fix MSVS2005 build settings to enable carbohydrate code
    • Initialize hotkey behavior for the function keys, arrow keys, escape, page up/down, home/end, and insert/delete. Presently only the X11 builds translate these keycodes, but we'll also add this functionality to the Win32 builds shortly, followed by Mac.
    • Enable a much broader range of keycodes in the OpenGL graphics window
    • renamed WIN_KEYBD event code to WIN_KBD for brevity, prior to adding a whole bunch of function key keycodes
    • Update of cluster analysis command 'measure cluster'. Added support for weights. Added support for distance functions fit+rmsd and rgyrd. Added thread support. Bugfixes.
    • multiseq: tweaked docs to more explicitly describe where the configuration needs to point to for MAFFT
    • multiseq: fix a bug that prevented MAFFT from running on windows
    • multiseq: phylotree comment formatting. prettification
    • multiseq: added in a special case for MAFFT phylogenetic tree generation. MAFFT was using a different descriptor for the sequence name that clustalw. The former code assumed the clustal format.
    • multiseq: reduced MAFFT debugging print level
    • Updated Spaceball ifdefs for 64-bit MacOS X builds
    • Remove various out of date macro definitions for Win32 builds
    • Changed the default behavior of X-Windows based VMD builds such that if the DISPLAY environment variable is unset, we automatically assume that the user wishes to run VMD in text mode, just as if they had passed in the "-dispdev text" command line argument. All MacOS X and Windows versions of VMD are currently assumed not to be based on X-Windows APIs, so they do not implement this shortcut.
    • removed some old macro definitions that are no longer used
    • tweak title text size slightly
    • doc: added entry for 'molinfo get numvolumedata'
    • doc: significant revision to the documentation for stereoscopic display
    • Updated Blue Waters builds to enable the use of ACTC
    • Fix memory leak when defining angles, dihedrals and impropers via 'molinfo set angles', due to bad management of Tcl reference counts and string representations of Tcl objects.
    • psfgen: add error checking to prevent segfaults
    • psfgen: fix bug and add error checking
    • cranked version
  • VMD 1.9a27 (Jan 26, 2011)
    • Default to using the newest VMD GUI color scheme when compiling against FLTK 1.1.8 or later versions, since they behave differently than 1.1.4 did.
    • Added code to override default FLTK color scheme when alternate color scheme macros are defined.
    • Added tooltips for Graphical Representation window
    • Reimplemented the label graph preview functionality with Fl_Chart() now that FLTK's bugs have been fixed. We keep our chart for now but with some tweaking and subclassing we might be able to switch entirely over to using the FLTK chart.
    • Fix a minor nit in the expose/redraw behavior for the "show preview" checkbox in the Graph tab of the Labels window.
    • Added tooltips to the Labels menu
    • Added tooltips to the main VMD window animation controls
    • Added a tooltip to the VMD molecule browser (subclass of Fl_Multi_Browser) used in the main VMD window.
    • Updated tooltips for Graphical Representations menu
    • Updated tooltips for the Materials menu
    • Added tooltips to the Display Settings menu items.
    • Added tooltips for all of the color controls
    • Replaced lingering numeric constants in the Color Menu GUI code with symbolic constants provided by FLTK headers.
    • Enabled VMD FLTK stereoscopic display code for FLTK 1.3.x as well.
    • Apply VMD FLTK color scheme changes for FLTK version 1.3.x as well.
    • updated comments, prepare for more GUI color revisions
    • After testing and finding that Fl_Choice backgrounds behave the same way in FLTK 1.1.8 as they do in FLTK 1.1.10, I've changed the ifdefs to enable the alternative color scheme for any version of FLTK equal to or newer than 1.1.8.
    • Changed color of FLTK browser objects to white when VMD is compiled against FLTK version 1.1.10 or newer. Due to changes in the way FLTK handles coloring of some of the widgets, the color scheme used for FLTK 1.1.4 doesn't work very well for FLTK 1.1.10, so setting the browsers etc to plain white seems like a better way to go for the newer revs of FLTK.
    • Change default FLTK chooser widget colors for VMD builds compiled against FLTK 1.1.10 or newer. Due to differences in the behavior of Fl_Choice::color() as compared with older versions of FLTK, we revert to a gray color since the new versions only apply this color to the chooser pulldown arrow widget, and not to the text background color as had been done on older versions of FLTK (e.g. 1.1.4).
    • Strip the leading file path off of the material library filename stored in Wavefront .OBJ files, since Maya will fail to read the material library if the full pathname is specified, but it works when only the filename part of the path is specified.
    • lammpsplugin: Added support for writing trajectory files of non-orthogonal cells. Unconditionally write text mode files using stdio, regardless of whether zlib support has been compiled in or not. Refuse to read files with over 2^31 atoms. Step plugin version.
    • Clear OpenGL window during Win32 WM_SIZING messages
    • Added built-in Tachyon renderer to all Blue Waters builds.
    • Updated Blue Waters builds with a corrected configuration for MPI-enabled compilations of VMD.
    • Added comments to timestep regarding assumed time/energy/force units, though different programs may use different units
    • Increased force arrow scaling constant by a factor of 3 vs. the old code, since IMD simulations run much faster now and one shouldn't need to apply huge magnitude forces to pull things along. Did various cleanup and some optimizaton on the force arrow code since it scans the entire force array every timestep.
    • cranked version
  • VMD 1.9a26 (Jan 19, 2011)
    • renamed the num_atoms parameter to VolMapCreateILS::set_probe() to prevent it from hiding/conflicting with the class member variable of the same name.
    • Implemented checkerboard and column interleaved stereo formats used by some DLP projectors and TVs, and autostereoscopic displays.
    • Renamed the enumeration for scanline interleaved stereo modes from OPENGL_STEREO_STENCIL to OPENGL_STEREO_STENCIL_ROWS, in preparation for adding support for column-interleaved and checkerboard stereo patterns.
    • Removed old "CrossEyes" stereo mode since this can be done by setting the stereo mode to "SideBySide" and setting the stereo swap mode "on".
    • Eliminated the "QuadBufferReversed" (aka "CrystalEyesReversed") stereo mode since we have a left/right eye swap control that works for all stereo modes.
    • Added new code to allow the user to swap the left/right eyes when the display is set to one of the stereoscopic display modes. When the stereo mode is set to "off", "left", or "right", the swap function has no effect.
    • Renamed the "CrystalEyes" stereo modes to "QuadBuffered", both internally and in the external GUI interfaces. It doesn't make sense to reference the RealD "CrystalEyes" product name any more, since many companies now make shutter glasses. Added code in VMDApp to catch the old stereo mode names and automatically translate them as requests for the new mode names, so that all existing scripts continue to work as expected.
    • multiseq/libbiokit: general code cleanup. Fixed compiler warnings about casts, fixed some spurious seg faults from deleting bad pointers added copyrights.
    • multiseq: fixed bug in PDB reader where structure name wasn't getting set
    • multiseq: beefed up error messages to be more useful
    • Fixed compilation flags for MSVS 2005 when building the VRPN+IMD+Spaceball target.
    • Removed ifdefs for the field lines representation now that it's stable
    • Removed all of the old VMDWITHORBITALS and VMDORBITALS ifdef tests now that this code is solid.
    • removed old VMDWITHORBITALS and VMDORBITALS defines
    • Improved floating point consistency
    • Eliminated the old OpenGL extension query helper routine since that functionality has been centralized.
    • Added various extra safety checks for bad parameters and for OpenGL implementations that return NULL pointers from glGetString() etc.
    • Changed WireGL detection to use the oglrenderer enum passed back from the extensions check phase. This reduces the number of places in the code that need to be augmented with extensive error checking logic.
    • Catch NULL pointers, which can (very rarely) be returned by glGetString() if certain types of catastrophic errors occur.
    • Replace single-precision constant 1.0e100 with 1.0e38, since we otherwise overflow the exponent, generating compiler warnings on MSVS2008
    • minor tweaks to please MSVS2008
    • Modernized a few of the Windows API related items in light of minor type changes that have been made over the last decade.
    • Added cmd_parallel, MayaDisplayDevice, MeasureCluster, MeasureRDF, and WKFUtils to the MSVS2008 Win32 build project
    • cranked version
  • VMD 1.9a25 (Jan 14, 2011)
    • Finally eliminated the old global variable that used to hold a pointer to the window creator's Win32OpenGLDisplayDevice class, which was needed for the event handling callback windowproc. The global was eliminated by sending in "this" as the user-data parameter to CreateWindow(), followed by catching it during the WM_NCCREATE message that is triggered immediately as a result of CreateWindow(). Once captured from WM_NCCREATE, we store the pointer using SetWindowLong()/SetWindowLongPtr() with GWL_USERDATA/GWLP_USERDATA. When receiving all other event types, we the class pointer back again by calling GetWindowLong()/GetWindowLongPtr(). Once we have it, we use that to get access to the class instance that the window belongs to. This technique also works with SetProp()/GetProp() though that's not as common of an idiom from what I could determine.
    • Eliminated the use of the global OpenGL handle for the window resize and repositioning methods. This is the last prep step before we can completely eliminate the old global pointer that used to be used to hold the renderer subclass pointer used within the Win32 window proc message handler callback function.
    • Improved floating point consistency and did cleanup to eliminate MSVC compiler warnings.
    • Improved floating point consistency by using expf() and powf() in a few spots in the orbital code.
    • Added a virtual display do_reposition_window() method to the FltkOpenGLDisplayDevice subclass.
    • Updated docs for "display resize" and "display reposition"
    • Added the "display resize" and "display reposition" commands to the built-in help listing now that they are implemented on Win32.
    • Updated the Win32 display code to support the resize and reposition methods needed to support the "display resize" and "display reposition" commands. Added comments to the code regarding the GetSystemMetrics() calls, since they do not account for multi-monitor desktop configurations.
    • Added cmd_parallel, MayaDisplayDevice, MeasureCluster, MeasureRDF, and WKFUtils to the MSVC6 Win32 build project.
    • Eliminated MSVC compiler warnings about typecasts
    • Eliminated MSVC compiler warning in MeasureRDF
    • temporary hack to fix an illegal typecasting problem in MSM grid setup code
    • Workaround for the fact that older revs of MSVC don't know about TryEnterCriticalSection() and related routines. The implementation for wkf_mutex_trylock() will always fail when compiled on archaic revs of MSVC that don't support TryEnterCriticalSection(). The implementation of wkf_mutex_spin_lock() falls back to using the regular EnterCriticalSection() implementation if we can't spin on calls to TryEnterCriticalSection();
    • Workaround the fact that most existing versions of MSVC don't have any support for C99 round() and similar math routines.
    • multiseq: added copy constructors and revised how PointerList is being enlarged.
    • multiseq: revise code for setting new sequence data so that it grabs the name from the old sequence before deleting it
    • multiseq: converted some direct proc calls to go through the same gatekeeper proc that everything uses (eliminate multiple paths)
    • Unified the subclass implementations of dashed lines to match the FileRenderer superclass implementation which is cleaner and handles a couple of cases that the other implementations could fail on.
    • Fixed initialization of FileRenderer lineStyle so it is solid by default (matching the DisplayDevice superclass) and changed the code to use the enum rather than an integer initializer.
    • Added an MSMS source comment to match Surf code
    • Fix a problem where wireframe Surf renderings were leaving the linestyle and line width unspecified.
    • psfgen: Add "psfcontext mixedcase" command and make case insensitivity the default.
    • psfgen: Better fallback guessing that won't pick handedness at random.
    • psfgen: Better warning when missing atoms from conformation.
    • psfgen: Define "none" and "None" patches in addition to "NONE".
    • changed anaglyph stereo display code so it works both with regular displays and with quad-buffered stereo display modes Changed the default color mask for the right eye to pass both green and blue, better supporting red-cyan glasses, and so that the green channel isn't completely dropped.
    • cranked version
  • VMD 1.9a24 (Jan 10, 2011)
    • Update default representation resolutions for modern era GPUs
    • Rewrote the FileRenderer::cylinder() method to use the triangle strips and fan methods, to aid in consolidating what would otherwise be independent facets, for triangle-only scene formats.
    • Tightened up the triangle fan loop slightly.
    • Added single-color triangle fan method to use when implementing spheres, cylinders, and cones for triangle-only renderers. This results in a more efficient surface description with most triangle-only renderers.
    • replaced some FP divide with multiplies in the FileRenderer code.
    • Misc cleanup of FileRenderer::cone() method
    • Added a new triangle strip type so that we can re-implement the FileRenderer base methods for spheres, cones, and cylinders to use single-color triangle strips/meshes by default rather than generating large numbers of independent triangles. Fixed array indexing in the single-color triangle mesh primitive.
    • Added a new triangle mesh type so that we can re-implement the FileRenderer base methods for spheres, cones, and cylinders to use single-color triangle meshes by default rather than generating large numbers of independent triangles. This should improve the behavior of 3-D scene import in various 3rd party animation tools like Maya, 3DS Max, etc, as the meshes are much easier to deal with in the scene graph editing modes.
    • Updated code and comments in light of the fact that no variants of the Wavefront .obj format actually support per-vertex colors. This wasn't just a limitation of Maya, but indeed a limitation of the format itself.
    • psfgen: Print psfgen version at standalone startup.
    • psfgen: Add ability to write multiple periodic images to the writemol command. Added arguments are ?na { x y z }? ?nb { x y z }? ?nc { x y z }? where nX is number if images along the following basis vector {x y z}. Segment names are repeated, so the file can not be read by psfgen, but it works fine in both NAMD and VMD and is an easy way to build large input sets. This feature was not added to writepsf/writepdb because it is expected that those formats will not be used for large molecules going forward.
    • psfgen: Make atom/residue/segment names case sensitive. To revert to old behavior of making all names upper-case use "psfcontext allcaps".
    • Revisions toward supporting per-vertex colors for Maya scenes
    • Added basic triangle export for Maya ASCII format.
    • Applied various small patches to bring the FreeBSD builds up to date vs. the most recent FreeBSD ports tree.
    • Added basic color and material export to the Maya FileRenderer subclass. Also changed the code to hide the template unit sphere node by default.
    • Added the prototype MayaDisplayDevice for testing. It is only added to the list of renderers if a test environment variable is set at startup. Once it is more complete, I will enable it by default.
    • Added MayaDisplayDevice to the build.
    • Initial prototype of a native Maya ASCII scene exporter. The current code only exports instanced spheres, without material properties, and with a completely flat scene graph.
    • psfgen: Verify all residues in patch before starting output.
    • cranked version
  • VMD 1.9a23 (Dec 15, 2010)
    • Update default representation resolutions for modern era GPUs
    • Corrected sphere normals after changing winding order
    • Corrected the polygon winding order for spheres and cylinders, needed for correct two-sided lighting of triangle-only models in Wavefront obj files, for tools like Maya.
    • Added code to implement triangle strips and meshes for Wavefront .obj files, greatly reducing duplication of vertices and thereby reducing file sizes by a factor of two. Also implemented color/material state tracking to further reduce state changes. The code currently implements only per-facet coloring, as this is all that 3-D production tools like Maya understand, although the Wavefront format itself does support per-vertex colors and materials.
    • mutator plugin: updated Mutator to handle patches, also some bug fixes
    • dowser plugin: Bug fix (dowserParmFile was spelled incorrectly).
    • Added a virtual method to use representation geometry group info to generate Wavefront OBJ "g" tokens, thereby retaining representation organization in tools like Maya. Since Maya will not handle objects that belong to more than one group, we use representation level groupings only and don't generate "g" tokens consisting of both molecule and representation strings. We might want to allow alternative grouping options for tools besides Maya that might use the molecule tags to create a heirarchical scene graph that more closely matches what VMD does itself.
    • Added code to put the Axes in its own geometry group separate from the rest of the VMD representations.
    • Added a new virtual method for rep geometry groups and code to handle the DBEGINREPGEOMGROUP display list token.
    • Added code to record the start of each representation with a DBEGINREPGEOMGROUP token so that the geometry associated with each of the reps can be saved in groups remains in an organized grouping when the FileRenderer subclasses export the scene graph. This allows tools like Maya to retain the VMD representations as distinct entities in the GUIs and makes it easier for artists and scientists and their software packages to interoperate.
    • Added placeholder objects to track geometry groups, disabled some bad code for dealing with comments since there are no tokens for them yet.
    • Added new DBEGINREPGEOMGROUP display command token to mark the beginning of the geometry associated with a representation. This enables file renderers to maintain geometry groupings associated with each of the representations, so that when the resulting scene file is loaded into a tool like Maya, the VMD reps will show up as nodes or entities in the scene graph and the rep IDs will show up in the graphical user interface that the artist or scientist sees.
    • silence warnings on non-parallel builds
    • Added preliminary export of material properties for Wavefront .obj files, as loaded by Maya.
    • enable FileRenderer subclasses to call reset_state();
    • fix code that wasn't using the color index macros
    • Added support for comments to Wavefront .obj output.
    • Updated STL and Wavefront output modules with minor cleanup.
    • timeline: (personal SVN r190) fixed dataThreshVal read problems. Clears to null at mol load and clearData, and checks for null at display.
    • timeline: (personal SVN r189) checkpoint before fixing threshold bug ---- small selection fix for hbonds ---- Problem with vertical highlights not disappearing mostly fixed (at leat for per-residue). listPick must not lose track of ID's. Other bugs fixed. added threshold count display: current count / max. count (total elements).
    • timeline: (personal SVN r185) Fixes for vert. selection bar not disappaearing, trouble with GL selections. (at least for per-res). Threshold numbers displayed. Other bug fixes. ---- Dashed timebar highlight. ---- hbonds and salt bridge working with user-specified selection string
    • timeline: (personal SVN r178) cursorRep working with repname now. We may want to change so regular vertical rep e.g. rep(), so that does not add graphic rep until it is needed. vertical selection -- rep() -- working fine with repindex. (Should solve duplicated highlight bug). Still must fix for cursorRep. ---- More unit adding. ---- A few changes, including some dataName(vals) updates.
    • timeline: (personal SVN r161) removed x, y , z. still have phi/psi/delta phi/delta psi (and not so great delta algorithm) ---- turned off error messages, plus tiny cosmetic edit ---- Proc to write data file header is back in ::timeline namespace, so back to ::timeline::writeDataFileHeader ---- range finding fixed on per-selection file read ---- Several corrections for 1.4 file reading. ---- writeDataFileHeader proc addded (argument names might need to be improved so neutral on selection-based vs residue-based)
    • timeline: (personal SVN r139) rep changes (licorice) ---- improvements for sec struct drawing, file reading. Also changed to licorice highlight. ---- switched off debug chatter ---- reading in files with more data frames than traj frames seems to be working. Current behavior is: for data frames greater than loaded traj frame, display last frame. ---- An editing stop point, likely crashes. Just removed the 0,1,2 resid, resname, chain designations from dataVal, dataName. Ready for removing dataVal from the dataOrigin offset. Also, most numFrames->numDataFrames or numTrajFrames done, but much cleanup to do, followed by dealing with various cases of resetting frame counts on data file reading, calculating from traj, etc.
    • timeline: (personal SVN r123) Switched buttons 1 and 2. Left button now does time bar press and (unmoving click) selection clearing. Middle button (hard to access on laptops) does the more obscure stuff: make sleection in vertScale and trigger animation range with blue shaded box. Right click stays as zoom in for marquee, zoom out for click. ---- Some changes to deal with loading from PDB for elements with no segname.
    • timeline: (personal SVN r121) fixed "empty segment" problem, seen when loading file straight from PDB with no segment info. Adds "emptyval" word to output file in these cases, this could be far more compact! Should check if no segment should be acceptable for a VMD atom. ---- some auto-scale fixes
    • timeline: Note: this check-in and the following eight check-ins for the Timeline plugin will "catch up" this CVS repository with many check-ins made in a personal SVN repository. Multiple check-ins from the SVN repository are combined into one of these nine CVS checkins, with their check-in comments concatenated. Each check-in will start with "(personal SVN rXXX)", with XXX indicating the revision of the most recent of the multiple SVN versions that are combined into that single CVS check-in. (personal SVN r119) rmsd and rmsd now in menus inverted rainbow colorscale so BGR (cool to hot) need to set params from outside routines, through GUI and any text commands ---- color scale functioning, some bugs w/ auto-scaling remain. auto-scale seems ok, user-set scaling works, different color scales work ---- rainbow color option for scaling, autoscaleing still needs work some changes for user-editable partial per-res calculations cleanup for namechanges
    • cranked version
  • VMD 1.9a22 (Dec 3, 2010)
    • multiseq: small tweak to file deletes should save a compare.
    • multiseq: Ke has written a few lines of code that allow the dot bracket notation ((...)).(.) to be loaded and shown for a sequence via the 'r' box for each sequence. Doesn't affect anything else.
    • multiseq: updated mafft part of manual to answer a few questions that Ke had.
    • multiseq: Revised storage for some data elements to not use as much memory and also removed storage of some items in TCL th at were being stored in C.
    • multiseq: revision to code that imports data to work with more optimized seq data calls
    • multiseq: tweaks to way that C works, to optimize memory usage and sped up several routines that access data to make them faster.
    • chirality: Preliminary documentation for chirality plugin.
    • cispeptide: Docs for cispeptide plugin. Still missing description of the GUI.
    • chirality: 'chirality restrain' now uses the same code as 'chirality check' to identify chiral centers.
    • chirality: 'chirality check' now returns the number of chirality errors (as opposed to only printing the information). Prevent conflict with GUI behavior.
    • cispeptide: 'cispeptide check' now returns the number of cis peptide bonds (as opposed to only printing the information). Prevent conflict with GUI behavior.
    • chirality: Added a proc to generate an HTML table containing all supported chiral centers (residue and atom names) from the dictionary in chirality.tcl. The table will be included by the chirality docs using SSI.
    • chirality: Use the same robust algorithm to identify peptide bonds for 'cispeptide restrain'.
    • chirality: Factored out function to detect peptide bonds to be re-used by the code that restrains all peptide bonds (which still uses the old algorithm).
    • chirality: Cleaned up. Allow for OT1 atom name in the new code to detect peptide bonds. Cranked version of cispeptide and cispeptide_gui packages.
    • chirality: Cranked verion of the chirality plugin. Cleanup.
    • chirality: Force code path that checks that each set of atoms defining a chiral center corresponds to the same residue. A previous optimization could prevent this code path to be followed when it actually should, generating incorrect results for some rare, distorted structures.
    • chirality: Change order of hydrogen atom names considered for chiral center at O2' (only present in RNA). The new order ensures the correct hydrogen naming convention is picked for structures containing DNA/RNA hybrids.
    • chirality: Remove debugging 'return' statement that causes incorrect GUI behavior
    • chirality: added resname ADN, is a regular adenine
    • cranked version
  • VMD 1.9a21 (November 12, 2010)
    • change a few bits to make the old CUDA compiler for MacOS X continue to work
    • change "uint" to "unsigned int" to please MacOS X and other platforms.
    • Added some new placeholder GPU latency testing code that is still unfinished.
    • Misc cleanup of the gridsearch routines, fixed tiny memory leaks that could occur in certain error cases.
    • Implemented the bug fixes and improvements from the bond search code in the gridsearch1, gridsearch2, and gridsearch3 code.
    • Changed bond search console output for error messages to be more specific
    • bond search: Added box index range clamping code to re-fix JC's issue in a way that is more reliable. The padding attempt used previously created its own problems, so we'll just have to live with a minor performance drop.
    • Minor cleanup and rewriting of neighborlist building code
    • multiseq: code reworking to speed up drawing of zoom window
    • chirality: added DNA resnames; support should be ensured (there will be a warning for missing atoms; from C2')
    • cispeptide: Increase dihedral cutoff for cis peptide identification again, now from 65 to 85 degrees. This change eliminates false positives in a reduced data set, albeit slightly decreasing the sensitivity for highly distorted structures. The current code misses documented CISPEP records for only 34 files when the entire PDB is analyzed. All 34 cases were visually inspected and make sense: missing O atoms required by the cispeptide plugin; problems with the model which lead to unphysical bonds derived by VMD; cis peptide bonds present only in the second alternative conformatin (altLoc), which we presently ignore; and several cases where the CISPEP records are actually incorrect.
    • cispeptide: Bump up threshold of O-C-N-CA dihedral angle that we use to define cis peptide configuration from 50 to 65 degrees to eliminate several false positives that come about due to distorted local structures.
    • cispeptide: Preserve the order of stored residue numbers describing cis peptide bonds, preventing visualization errors with cyclic peptides. Remove distance check no longer necessary.
    • chirality: Change the default selection to {all} to prevent false negatives (supported residues that are not recognized by VMD as protein or nucleic due to missing atoms).
    • chirality: Make "-mol" argument to 'chirality check' mandatory for consistency with 'cispeptide check'.
    • cispeptide: Remove -split option from usage. Make -mol argument mandatory.
    • cispeptide: Changed default selection for the Cispeptide plugin to {same fragment as protein} to prevent false negatives. Option -split is no longer needed since we no longer split protein chains to identify peptide bonds.
    • cispeptide: Added checks to prevent syntax error in atom selections due to emtpy bond lists. Added some notes.
    • multiseq: From a workshop student: Added in a note when you do a 'select residue' to mention to user that they can choose sequence identity _or_ qres. Can't have both.
    • multiseq: Reworked the temp directory selection a bit. We had a workshop attendee on unix that had an unwriteable /usr/tmp. Multiseq failed to initialize in an unexpected way. That should be handled better now. If a bad tmp dir is detected, we have the user take care of it at that time now, rather than just telling them and let things fail later.
    • multiseq: fixed some erroneous comments from someone copying a proc and not changing the associated comments
    • cispeptide: Refactored code that detects peptide bonds to facilitate regression testing. Implemented a much more robust algorithm to go through all peptide bonds in a protein structure. The new implementation deals correctly with missing atoms, peptide bonds involving a single residue (it does occur for some modified amino acids), etc. Still need to update GUI to reflect the fact that we don't need to split protein chains anymore.
    • cispeptide: Return with a warning (as opposed to an error) when the input selection does not contain protein residues. Properly deal with alternative conformations (altLoc), considering the first conformation only. Added a simple distance-based check to filter out residue pairs not involved in a peptide bond. This removes a bunch of false positives, but there's still a need for a more robust algorithm to walk through all peptide bonds in the structure (coming next).
    • chirality: Properly deal with alternative conformations (altLoc), considering the first conformation only. Instead of bailing out with an error if there are missing atoms in chiral centers, gracefully ignore the corresponding residues. The previous version returned an error for ~18,000 structures from the PDB (out of ~68,000). The current version returns an error for a single structure only (1esy), which has a bogus * character in some altLoc records (reported to the PDB folks).
    • Suppress compiler warnings about the the combination of nostrict and O3 optimizations for Blue Waters builds.
    • Updated Blue Waters builds to enable compilations with OpenCL
    • Fixed Bourne shell startup script tests for 64-bit PowerPC targets, and added code to detect Blue Waters builds for both C-shell and Bourne shell.
    • Enable dynamically loadable shared object plugin builds for Blue Waters.
    • Disable use of the AIX perfstat library for Blue Waters builds since the compute node OS is going to be Linux.
    • more Blue Waters build fixes
    • Added rough draft of Blue Waters build target
    • hesstrans: skip compilation of hesstrans on Blue Waters until we have a chance to revisit a few XLC C++ compilation issues.
    • hesstrans: avoid problems with Blue Waters compiles by hard-coding DSIGNIF for now.
    • hesstrans: Added a compile time macro to workaround some issues with IBM XLC on Linux, as used for the IBM/NCSA Blue Waters supercomputer.
    • Added a macro to trigger special workarounds for compiles with IBM XLC on Linux for Power7, needed for the IBM/NCSA Blue Waters supercomputer.
    • cispeptide: Enclose chains by '' in atom selections to prevent errors with lower-case chain identifiers. Catch and silently discard bogus cis peptide bonds detected within a single residue due to alternative conformations.
    • cranked version
  • VMD 1.9a20 (October 29, 2010)
    • runante: procs acininit and sqminit were added to test whether SQM and Antechamber executables are available
    • runsqm: procs acininit and sqminit were added to test whether SQM and Antechamber executables are available
    • molefacture: Proc writetop and unique_atomnames were changed such that only duplicated atomnames are modified. Atom names that are already unique stay as they are. Menu options pertaining to Antechamber or SQM calculation are disabled if the relevant executables cannot be located.
    • mdfplugin: convert to mdfplugin to use vmdcon for i/o.
    • vmdconio: added missing include of stdlib.h
    • mdfplugin: smarter bond parsing: failures are detected, atoms without bonds allowed.
    • mdfplugin: step minor version number
    • mdfplugin: fix overflow when an MDF file has more than 9 molecules. we now use characters A-Z in a round-robin fashing to indicate molecules
    • psfplugin: Emit informative error messages in the case we get a corrupt NBOND block or references to atom indices less than 1. (PSF files are 1-based indexing!)
    • psfplugin: Generate a more informative error message if the PSF plugin can't parse the bond section correctly for some reason.
    • dcdplugin: make the NTITLE check less forgiving. Anyone with more than 1,000 title lines ought to be punished anyway...
    • dcdplugin: Detect bogus values for NTITLE and either abort, or short-circuit the ridiculous resulting seek loop to move past the title block. Try and work around broken Vega ZZ trajectory files if possible by detecting the bogus value they write to the NTITLE element in at leat one person's case.
    • abinitplugin: need to reserve 4 bytes for 3 letter file type keys.
    • cionize: enable environment variable override of GPU device to use
    • Added the abinitplugin to the makefiles
    • Added Rob Lahaye's VMD plugin for reading ABINIT files. This plugin's license limits its use for use only in open source projects.
    • lammpsplugin: rename variable ylen to ylohi to reduce confusion.
    • topotools: small README/documentation update.
    • topotools: more options for 'topo guessatom' implemented.
    • Fix memory leak that occured when int_table wasn't getting freed in one of the possible return cases.
    • hbondplugin: added warning about overlapping selections in measure hbonds
    • multiseq no longer needs the old external "cluster" plugin since this functionality is now built-in.
    • Removed the old "colorbar" plugin now that the "colorscalebar" plugin has superceded it within multiseq.
    • Applied updates for Tcl 8.6.x API updates that deprecate direct access to the interp->result member variable. Likelier than not, these changes should be applied for builds going back to Tcl 8.4.x, but this requires testing that hasn't been done yet.
    • libbiokit: removed compile time warning about unused var
    • Moved the cluster executable to the phylotree plugin (and renamed it to upgmaclu.exe to reduce name collisions). This completely frees up the cluster plugin name and tcl package space. The cluster plugin is no longer in use by multiseq and can be removed. The name can be for other plugins that are more appropriate.
    • No dynamic plugins on Blue Waters builds for the time being. Will revisit once the basic VMD builds are up and running.
    • Switched Blue Drop builds to use a new "BLUEWATERS" architecture config, since we'll be mixing use of xlC, Linux, and possibly various IBM vector extensions, all of which are things that don't happen on either a normal AIX_64 or LINUXPPC64 build.
    • runsqm: Added Johan's runsqm plugin to the distrib target runsqm: Added missing makefile, doc subdirectory for Johan's new runsqm plugin
    • cranked version
  • VMD 1.9a19 (August 18, 2010)
    • Incorporate several bugfixes and enhancements to "measure cluster" contributed by Luis Gracia. We now collect all unclustered frames in a last, additional cluster and save memory when using limited frame ranges. Some cleanup and refactoring of Luis' code for more clarity and consistency.
    • molefacture: General modifications for bugfixes. Added quotations to protect variable assignments allowing atom names with spaces. Included a button to edit the resname/segname and chain for the current molecule. Also included an option in the Antechamber settings window to specify which OPLS atom typing rules .DEF file to use. Improved atom type assignment rules for OPLS. Included an option to specify which OPLS atom typing rules .DEF file to use.
    • idatm: modified proc apply_types to update bond orders correctly - there still seems to be a problem with some duplicate bonds and bond orders appearing in the bond list of Molefacture.
    • if the VRPN device name contains @tcp, we now generate a new style USL name://location instead of name@location, to support the Device@tcp://host:port syntax that enforces tcp-only connections which can be easily punched through firewalls and tunneled with ssh and more.
    • runsqm: added new runsqm plugin to launch sqm calculations
    • idatm: modified molefacure and runante to be able to run geometry optimisations using sqm. Updated IDATM so that when bondorders are assigned, these are updated correctly. This is so that when VMD writes out a file format that includes bonds and bondorders, they are correctly included in the output file.
    • Added new build rules for the NCSA Blue Drop system used for testing apps that will be deployed on Blue Waters.
    • runante: Add a more informative error message if people try using amber/antechamber features without having them installed
    • molefacture: Add a last ditch fallback for drawing electrons in some odd perfectly linear molecules
    • corplugin: updated comments with more formatting info and new URLs
    • Fix lammpsplugin so it avoids the use of fabsf() and sqrtf() which aren't available on the older MSVC tools.
    • Fix PQR plugin so it parses HETATM records properly.
    • multiseq: new version of manual
    • multiseq: added documentation about use of MAFFT, revised picture
    • Significantly expanded the range of data that can be used in VMD atom labels by adding several new label format specifiers for beta, occupancy, mass, chain, segname, 1-based index, 1-char residue name, atomic number, atomic element, and so on.
    • fix a typo in a comment and improved other comments, in prep for some minor modifications to the label format parser
    • cranked version
  • VMD 1.9a18 (August 8, 2010)
    • lammpsplugin: even better support for reading of atoms sorted by their atom id. this should cover all cases, but we need to parse the first frame three times instead of two. Saves a little bit memory and we avoid having to use the hash table in the common case of consecutive ids.
    • lammpsplugin: reinstate sorting by atomindex when reading lammps dump files.
    • membrane: added the option to build CHARMM36 bilayers as well; cranked version number to 1.1
    • readcharmmtop: New CHARMM topology for lipids
    • readcharmmpar: New CHARMM topology for lipids
    • removed old RDF block logic now that we've tested the new code pretty thoroughly.
    • Eliminated unreferenced RDF local variables
    • Corrected the calculation of the number of parallel RDF work units, which could be computed incorrectly when the work was an exact multiple of the constant block size.
    • Fixed RDF compilation macros for Fermi and Tesla targets, eliminating the shared memory overuse problem.
    • Fixed RDF constant memory copy routine to prevent going off the end of the atom arrays.
    • switch Linux build scripts to run on titan rather than dallas, since dallas just suffered a disk failure.
    • Updated defaults for CUDA RDF code
    • fix gccisms
    • Added code for the non-periodic case to prevent phantom atoms from interfering with the non-periodic particle pair distance counts.
    • Added support for both periodic and non-periodic RDF calculations in the multi-GPU RDF code. Still have some more error to squeeze out in the non-periodic case, but it's now below 10^-3. It could either be an issue with the normalization code, double counting, or padding particles included in the calculation.
    • Fix non-periodic distance code
    • converted the GPU RDF code to use the VMD threadpool instead of launching workers on-demand repeatedly.
    • Added a routine to query the number of workers in a thread pool that already exists.
    • Removed the old normalization code derived from the standalone RDF calculation in favor of the more complete normalization routines adapted from the existing "measure gofr" implementation. Now both "measure rdf" and "measure gofr" use the same normalization math.
    • Removed the cell volume factor from the calculate_histogram() GPU kernel so that the histogram bins are unprocessed until a final normalization calculation, enabling us to use the same code for both the old "measure gofr" and new "measure rdf" routines. Eliminated associated kernel parameters and did misc other cleanup.
    • Switched the GPU RDF code to use the same histogram normalization code used by the CPU g(r) code.
    • Merged a couple of fixes from the standalone RDF code into the VMD version and turned off double-counting correction in the normalization stage since this is now handled in the GPU code itself.
    • Rename function parameter maxbin to nbins to make it easier to compare with the original standalone code.
    • More corrections for the histogram normalization logic for GPU RDF code.
    • Enabled RDF normalization code to generate the other histogram results
    • Eliminate free of coordinate buffers since they are owned by the caller. Removed dead code.
    • Corrected leftover usage of NBLOCKHIST and NBINS macros in the API for the RDF driver routines. Replaced hard-coded NBINS macro with count_h parameter as needed.
    • Added the first version of the multi-GPU RDF code into VMD. Rather than replacing the existing "measure gofr" command, this is currently added as a separate "measure rdf" command to facilitate easier testing and comparison vs. the original code.
    • Applied Axel's updates for the "measure clustsize" command.
    • Added phonetracker and phonebuttons devices to the build.
    • Implemented a very basic subclass that listens for motion control input, button presses, and potentially for a variety of other real-time interaction events originating from smart phone devices. The current code works with a simple Java client app we have developed for smartphones running the Android operating system.
    • topotools: more strict checking for CGCMM file format extensions. only look for them, if the first line contains the string CGCMM. fix bug in mass to atom type map.
    • autoionize: Cranked version. Removed ions.top from Makefile since now we use the readcharmmtop plugin to get topology information instead.
    • autoionize: Added support for all ions in the CHARMM force field. Added ion placement mode -sc (salt concentration). Expanded ion placement mode -is (ionic strength) to support cations. Added ion placement mode -nions to place arbitrary number of any supported ions. This option replaces the old -nna/-ncl options, which are still supported (but not documented) for backward compatibility purposes. Updated GUI to reflect changes in the code autoionize code, removing sod2pot function that is no longer necessary.
    • The Python global interpreter lock (GIL) must be held when callbacks are invoked, but we don't have the GIL when Tk (as opposed to Tkinter) events come in. This ensures that we have the GIL in either case.
    • topolammps: more triclinic cell and periodic image handling fixes detected by restart2data.
    • topolammps: need to pass triclinic parameters as part of boxdim to the readatoms procedure.
    • topolammps: apply the same triclinic cell image unwrapping bugfix as in the lammps molfile plugin.
    • lammpsplugin: correction for periodic image processing with triclinic cells. the result is not fully consistent with dcd and xtc output from LAMMPS (which had multiple bugs and missing pieces by itself that needed corrections)
    • topotools: add support for triclinic cells for coordinates with periodic image counters.
    • topotools: add support for triclinic cells and fix a few spelling errrors
    • lammpsplugin: reduce rounding errors on box angle computation similar to dcd plugin.
    • lammpsplugin: added read support for triclinic simulation cells a la LAMMPS.
    • lammpsplugin: silence gcc warnings by properly using const qualifier on char pointers inherited directly or indirectly from libc functions.
    • Applied Axel's patch to add "measure clustsize" and related functionality
    • updated ilstools package version number
    • ilstools: Bug fix for package require ordering problem pointed out by Aaron Oakley
    • cranked version
  • VMD 1.9a17 (July 1, 2010)
    • Updated source code comment about OpenGL phong exponent limitations
    • Implemented a user-definable threshold for enabling mirror reflection, in Tachyon renderings when the Phong exponent goes beyond a specified limit. By default, we currently enable mirror reflection when the phong exponent exceeds 256. The VMDTACHYONMIRRORSPECULAR environment variable must be set, and the VMDTACHYONPHONGSPECTHRESH variable can be set to choose a different threshold for enabling mirror reflection.
    • Enable mirror specular reflections for Tachyon renderings when the environment variable VMDTACHYONMIRRORSPECULAR is set.
    • autoionize: Use topology file from readcharmmtop plugin instead of ions.top in preparation for supporting placement of arbitrary ions (not only NaCl), as well as different force fields.
    • autoionizegui: Eliminated 'neutralizer' proc since this functionality is now provided by the autoionize core code. Revised GUI to match logic used by the autoionize core code. Now there are three mutually exclusive modes of operation (which match the command line version): - Only neutralize - Neutralize and set concentration - User defined number of ions The previous GUI version allowed for concentration to be set independently from a checkbox to neutralize the system. However, autoionize has always neutralized the system when a concentration was given, so it doesn't make sense to allow these two options to be set independently. The current revision is backwards compatible, except that we don't allow anymore a user-defined number of ions and the option to neutralize to be set at the same time. This combination of options is hardly useful, and is inconsistent with the command line version. Besides, if the user really wants to add, say 13 Na+ and 5 Cl- and then have the plugin add more ions to neutralize the new system, the user can always run autoionize twice (which is now supported).
    • cranked version
  • VMD 1.9a16 (June 25, 2010)
    • eliminated usepbc from clustering code for the time being
    • Fix the problem that occured with molden files. Molden files contain no info about the wavefunction type. Incorrect mapping between wavefunction type for the GUI and the internal wavefunction type in QMData prevented orbital selection. Now the names of access functions and their parameters in QMData indicate if we are dealing with the 'type' or the 'guitype'.
    • moldenplugin: Gracefully deny service for 5D basis sets. Cleanup.
    • Added first rev of clustering analysis routines.
    • namdenergy: Add documentation of the updatesel feature
    • saltbr: Clarify how distance cut-offs are used in salt bridge identification versus the center-of-mass-based distances reported at the end of the calculation.
    • autopsf: Recognize a new segment if the chain name changes even if nothing else does
    • autoionize: Added option -neutralize that adds the minimum number of ions needed to neutralize the system. Need to revise GUI to use the new -neutralize option instead of its own proc. Improved error checking. Added TODO list.
    • mdff: Added MDFF docs to CVS.
    • topotools: bugfix in topogromacs, atomindex in bonds, angles, and dihedrals is relative.
    • Fixed the exponential calls in the JIT code generator to match the current method in the standard runtime-interpreted version of the basis set code.
    • Add MDFF to plugin list.
    • MSM: introduce union to eliminate compiler warning when checking for 0 charge
    • MSM: eliminate compiler warning on variable scope
    • MSM: disable optimization on routine for compilation with icc 9.0
    • Added compilation flag to enable use of the Fermi L1 cache for the orbital kernels.
    • Protect fermi cache configuration calls with CUDA version check
    • Updated the standalone test version fo the CUDA orbital kernels to add CUDA 3.0 calls to configure the Fermi hardware cache.
    • multiseq: added in support for using the externally installed MAFFT program to do sequence alignment, in addition to the previously supported Clustalw
    • multiseq: loosened requirements on newick tree-reading code to handle files that don't have a semicolon at the end (previously the delimiter between trees in a file). If there is only one tree in the file, no strict requirement to have a semicolon at the end now.
    • autoionize: Misc cleanup. Automatically set segname of ions to be placed to avoid duplicated segments. Before this change, whenever the user ran autoionize twice on the same structure with the default segname, psfgen would fail in the second run due to duplicated segments.
    • hbondsplugin: very minor tweak to output formatting
    • MSM: conditionally build support for msmpot exact - requires file msmpot_exact.c
    • MSM: test bin index along component dimensions (disabled)
    • fixed MSM bug, use domain origin rather than map origin
    • MSM: for non-periodic boundaries, extend domain beyond maximum coordinate
    • Fixed MSM binning routine, wasn't doing correct periodic wrapping of atoms around edges of 3D bin array
    • Added informational messages to clearly indicate which type of MSM calculation (periodic or non-periodic) is being performed.
    • cranked version
  • VMD 1.9a15 (June 4, 2010)
    • Added VR Juggler app initialization code
    • Added VMDVRJUGGLER ifdefs
    • Beefed up comment regarding the low level behavior of the "play" style line-at-a-time script file processing implementation.
    • Incorporated VR Juggler-specific subclasses contributed by Martijn Kragtwijk
    • Added a code path for VR Juggler builds (disabled presently)
    • multiseqdialog: added in error checking for empty version data files, and moved a help button from pointing to scs to our plugin docs here.
    • Added comment about alternative behaviors for time-averaged PBC-enabled "volmap coulombmsm" calculations.
    • First runnable PBC-enabled version of "volmap coulombmsm". Still need to wire up periodicity controls into the command parsers etc.
    • Added a hack to enable easy testing of periodic MSM code
    • Added basic infrastructure to allow periodic coulombmsm calculations, though we need to add appropriate command flags and the like to make this accessible from the text interfaces.
    • Eliminated default padding for both Coulomb and CoulombMSM map types
    • Replaced the original non-periodic version of the multilevel summation method with the new version that supports both periodic and non-periodic calculations. At present, the VolMapCreate code only knows how to perform non-periodic calculations. We will have to add new command flags and eliminate the default padding behavior of the volmap class so that periodic calculations are done correctly. Since the current MSM implementation only handles orthogonal PBC cells, we will also need to check for non-orthogonal cells and return errors to the user until that case is fully supported.
    • blast: updated some of the error messages and indentation formatting
    • Added VR Juggler patch for Mouse.C
    • Added ifdef that might get used for other CAVE builds
    • updated scs web address for multiseq plugins
    • cranked version
  • VMD 1.9a14 (May 25, 2010)
    • Added VMDCUDADEVICEMASK environment variable to give the user explicit control over the subset of GPUs that VMD is allowed to use.
    • When VMDNOCUDA environment variable is set, we do not even probe existence of attached GPUs. This is helpful in cases where compute exclusive mode is used on clusters or when other apps are extremely sensitive to GPU memory consumption or other interference that may occur during VMD startup.
    • don't clear GPU device mem if VMD isn't supposed to mess with the GPU(s)
    • cranked version
  • VMD 1.9a13 (May 12, 2010)
    • Updated the picking logic to take into account clipping of displayed geometry (and thus associated pick points) against both the view frustum and the active set of user-defined clipping planes for the representation that the pick points are associated with. Pick points are first transformed into screen-plus-normalized-Z (2-D pick) or view volume (3-D pick) coordinates. 2-D picks are tested for visibility the front and rear clipping planes, and the set of active user-defined clipping planes. 3-D picks are tested against the set of active user-defined clipping planes.
    • Added code to load an OpenCL kernel from a file
    • fix error in vmd_cl_compile_kernel() in prep for molecular orbital JIT updates
    • Misc JIT cleanup. Added unit conversion constants to OpenCL kernels.
    • Reorganized the CUDA orbital code to clean up the JIT related stuff.
    • Added OrbitalJIT to the build.
    • Migrated molecular orbital JIT routines into their own source file, and updated the JIT generator to support creation of both CUDA and OpenCL kernels. With more work we should be able to generate raw PTX as well.
    • Added --ftz=true for CUDA 3.x to prevent perf lossage on SM 2.0 hardware.
    • utilities: Add lmap function needed by molefacture
    • pqrplugin: fix bug in get_pqr_coordinates(). simplified code and made it more like the coordinate parser in the full atom line reader. corrects issue reported by Knut Jørgen Bjulan on vmd-l and biocore.
    • avoid segfaults by making sure that force and feedback scaling factors are always larger than zero.
    • irspecgui: little documentation fix.
    • irspecgui: protect against trying to set charges with no molecule present or selected.
    • Fixed JIT generator to use single-precision constants, this makes a huge impact on performance on GT200 and Fermi since it otherwise eats more registers and ends up costing unnecessary type conversion instructions.
    • Fixed JIT kernel for density calculation
    • Enable LibTachyon on the Solaris x86 builds
    • cranked version
  • VMD 1.9a12 (April 8, 2010)
    • Switch VMD to require CUDA 3.x compilation, and enabled compilation of kernels for Fermi arch, and with SM 1.0, 1.3, and 2.0 by default.
    • automatically assign bond types. this is useful in any case but also makes certain that the computed bonds get written.
    • Changed allocations in MolFilePlugin to use calloc() so that the atom structures are always initialized to zeros before calling the plugin. This makes valgrind runs on some plugins quite a bit cleaner. To perform more rigorous testing of these plugins, we should actually memset these structures to noise or non-zero values to catch latent errors in string processing.
    • Prevent uninitialized reads in corplugin on some platforms.
    • Added comment regarding the bond grid bounds padding
    • Fix a potential bond search crash that could occur with min/max coords of small molecules fall on the right values.
    • Updated comments about Apple OpenCL compiler bugs related to constant memory
    • Added workarounds for MacOS X 10.6.x OpenCL GPU compiler bugs
    • Update of clonerep plugin to version 1.2: Fix bug reported by eddi schreiner that prohibited selections with perl regexp wildcards from being cloned. Update email and homepage. Added support for vmdcon.
    • Updated for MacOS X OpenCL include path
    • Improved OpenCL error messages
    • Updated OpenCL direct Coulomb kernel to use the new platform APIs when creating the device contexts
    • Updated OpenCL kernel device context creation for new platform APIs
    • Eliminated potential printing of redundant error/warning messages on machines that lack CUDA hardware.
    • eliminated need for BUILD_STANDALONE macro
    • Enabled standalone compilation of the OpenCL utility routines outside of VMD
    • Prevent CUDA GPU global memory allocation/clearing step from causing trouble on clusters where nodes are occupied by multiple MPI ranks.
    • chirality: Add missing variable declaration for tk_version.
    • In the case that any CUDA runtime errors occur, emit the source file as well as line number. We'll also want to add code to emit the node ID for debugging MPI builds, but at present this info isn't available here.
    • cranked version
  • VMD 1.9a11 (March 22, 2010)
    • collapsed number of all-reduce code paths and improved error handling
    • handle single node reduction case more efficiently.
    • Added lots of comments about the two All-Reduce implementations
    • Added a ring-based all-reduce implementation that works for any node count and for clusters with heterogeneous nodes where floating point rounding may differ within a reduction computed on one node versus another (e.g. heterogenous nodes, or heterogeneity within a node such as a GPU.)
    • Added a new parallel allreduce safety check for non-power-of-two node counts. We still need to implement a 3-2 reduction phase in order to support NPOT node counts efficiently. At present, a parallel allreduce call on NPOT nodes will result in an error. Once 3-2 reductions are implemented, this check can be removed.
    • Added explicit MPI message tags to prevent the possibility of out-of-order messages from creating problems.
    • Major cleanup of "parallel allreduce" implementation. Removed the test framework, and added detailed descriptive comments of the parallel reduction algorithm used and the assumptions/limitations thereof.
    • Completed running implementation of parallel allreduce based on a hypercube reduction tree with a logarithmic number of reduction phases. There is still nothing in the way of robust error handling in this version.
    • Untested first draft of hypercube parallel reduction, minus the extra handling required to gracefully handle user errors without deadlock or other problems.
    • Implemented a crude first cut at "parallel allreduce" using node-local reductions for starters.
    • Fix MPI startup so non-CUDA builds still work.
    • Added detailed comments on MPI parallel gather implementation. Still need to work on migrating the MPI calls into VMDMPI.C.
    • Obvious bugfix for the fullscreen OpenGL window not being placed into the desired Xinerama display if this is not the topmost and leftmost screen.
    • allow compilation of orbital code on IRIX
    • workaround lack of erfcf() on IRIX
    • Added CS patch improving range checking on molinfo 'rep' and 'selection' subcommands.
    • Added CS patch to enable query of FPS display
    • Enabled experimental VdW rep radius modulation similar to what has already been implemented for ribbons, but with some new ideas enabling support for more sophisticated operations like access to columns of or reduction of vectors to scalars prior to modulation.
    • Change ribbon modulation scheme as per Axel's suggestions for the time being. Having to test every modulation value for negative numbers is undesirable but necessary in the broadest cases. Whether we want to support automatic reduction of vector quantities like velocities to scalars is something worth pondering. The cost will be higher yet, but this would be quite useful in some cases.
    • cispeptide: Added missing declaration of tk_version.
    • Made the CUDA device memory allocation and clearing strategy more robust. Made allocator slightly less aggressive by adding a minimum allocation size threshold. Fix allocation counting logic so any final failed allocations aren't counted, and the allocation loop stops early (prettier console output when verbose debugging is enabled).
    • membrane: eliminated explicit psfgen version dependency
    • autoionize: eliminated explicit psfgen version dependency
    • mergestructs: fixed missing package require for psfgen
    • molefacture: Continuation of previous bug fixes
    • molefacture: Fix a serious bug preventing the fep gui from working
    • vmdmovie: Added support for both MPEG-1 and MPEG-2 formats using mencoder. Older versions of mencoder do not support current command line syntax to target DVD formats and the like, so more testing is needed to determine how "bleeding edge" those mencoder features are, and/or whether they are just a property of the libavcodec that mencoder was built against.
    • vmdmovie: Enabled mencoder MPEG-1 movie target
    • vmdmovie: Fixed ppmtompeg frame counters to handle movie sequences with up to 100000 frames.
    • vmdmovie: Added a working mencoder routine for MPEG-1
    • vmdmovie: Cranked version of vmdmovie plugin to 1.8. Added support for current ffmpeg 0.5.x encoder on Unix platforms. Added 4 new FFMPEG encoding targets including MPEG-1, MPEG-2, and both NTSC and PAL forms of MPEG-2 DVD profiles.
    • cranked version
  • VMD 1.9a10 (March 8, 2010)
    • vdna: Updated with Tom's latest version which fixes uninitialized data that caused problems if a user immediately clicked the "plot parameters" button before drawing the DNA
    • Applied Justin's patch to reduce sleep time when waiting for MSMS to connect. The modified loop employs a linear back-off approach rather than sleeping for a fixed 1 second delay like the old code did. This makes it much more aggressive resulting in improved performance in the default case where MSMS responds immediately.
    • maeffplugin: Latest version of Maestro plugin from DESRES. This version adds support for Smiles strings. Some internal functions ought to be specified with file-scope linkage, but we will worry about that in a future rev.
    • multiseq: fixed a parameter being sent to the non redundant set computation that was causing structqr to get called incorrectly.
    • molefacture: Fix a number of small problems pointed out by Chris Chipot
    • molefacture: Fix recent breakage of the FEP gui when using opls
    • Turned off intersurf plugin autoload until we generate fresh binaries
    • The existing intersurf binaries are now out of date and need to be manually recompiled before it can be re-enabled. At present, the compilation isn't the real problem, but rather that we have to continue compiling manually due ot the licensing of the source.
    • Updated to the latest version of the virtual DNA viewer plugin by Tom Bishop. This version is now published in a recent article: http://dx.doi.org/10.1093/bioinformatics/btp566
    • fixed a bug that was causing the zoom box to not show up in the correct place in the zoomed-sequences image (if there were multiple groups of sequences). Also cleaned up some variable names.
    • Added first draft of Fermi-specific orbital kernel based on the use of the per-SM L1 cache.
    • Migrated orbital dump code out of the CUDA orbital module up a level to the main call chain to make the standalone CUDA and OpenCL test framework a little cleaner.
    • cleaned up includes that were specific to standalone test harness
    • readcharmmtop: fixed bad topology entry for heme
    • topotools: make sure angles are defined in canonical order, added routine to "guess" impropers. this is limited to atoms that are bound to exactly three atoms in a near flat structure. This is less well defined than topological angles or dihedrals and thus should be used with more caution.
    • cranked version
  • VMD 1.9a9 (January 15, 2010)
    • topotools: correct bug in dihedral canonicalization during guess reported by dmitrii nabok.
    • Fix a LibTachyon clipping plane indexing bug that could cause a buffer overrun during creation of the list of clipping planes, when only some of the clipping planes were enabled.
    • Enable angle-dependent shading of transparent surfaces in Tachyon scenes
    • Prevent moldenplugin from crashing on a null qm_timestep.
    • Prevent a failure during QM metadata parsing from crashing VMD later on.
    • Added new glassy materials for angle-dependent transparency modulation
    • corrected width of check button widget for proper handling of expose events
    • Updated save_state script to save/restore the transparency mode material setting
    • Updated viewmaster plugin for the new transparency mode feature of VMD 1.9
    • Added new transparency feature that modulates the alpha value based on the angle between the view direction and surface normal. This is used to closely emulate the transparency rendering feature of Raster3D. Straight-on views appear clearer than they would be normally, and edge on views are more opaque than they would be normally.
    • Added angle-modulated transparency to the fragment shader, in a fairly faithful emulation of the behavior of Raster3D
    • Fixed incorrect material property tags for Python materials interface
    • Added shader code to enable Raster3D-like angle-dependent transparency modulation
    • Added a prototype glassy material for use with the new "Raster3D-like" Tachyon rendering modes.
    • solvate: Fix a bug where, for box sizes very near an integer multiple of the solvent box being used, sometimes the number of copies of the solvent box needed is undercounted, leading to incomplete coverage of the solute.
    • Changed default Raster3D rendering command line to force AVS output since that's the only format we can guarantee an installed version will have. Recent Raster3D versions also default to PNG now, but only when compiled that way.
    • viewmaster: Change minor version of viewmaster plugin due to recent bug fixes.
    • viewmaster: Corrected handling material properties. Was previously jumbling the material properties resulting in the Opaque material getting set to all zeros, yielding a 'blank' looking display and thumbnails.
    • Added option -scal14 to 'mdff setup' to define 1-4 scaling used by NAMD.
    • molefacture: Fix a couple of minor bugs pointed out by Chris Chipot
    • runante: Fix the way in which antechamber runs divcon
    • improved built-in help for parallel analysis commands
    • Renamed parallel routines in VMDApp for improved consistency with MPI and for conciseness and brevity.
    • Added a simple and relatively safe parallel allgatherv-like implementation to allow allgathers of lists/objects that may have differing lengths or sizes on individual nodes. Uses the Tcl string representation for now so I don't have to write more complex object serialization mechanisms, this code should already work for all Tcl data types including lists of lists and so on.
    • The "parallel" command will always exist, regardless of whether a VMD build is MPI-enabled or not, since we might implement similar functionality by other means.
    • added cmd_parallel to the build
    • Added new "parallel" top level VMD tcl command to query node info and execute various MPI-related operations within user scripts.
    • guarantee node 0 has time to complete startup output before peers run ahead with startup processing.
    • Misc improvement of MPI startup on GPU clusters.
    • runante: Add some utilities necessary for using sqm instead of mopac
    • fixed latent syntax error in bash startup script
    • Updated APBS plugin documentation links
    • Changed order of MPI include files to prevent problems when compiling against mvapich-2 MPI implementations.
    • Further improvement of shutdown-time console output behavior for MPI-enabled builds.
    • cranked version
  • VMD 1.9a8 (January 12, 2010)
    • Commented out some non-portable dead code in QMData.
    • Changed MacOS X startup script to use "open -a Terminal ..." to prevent user-preferences for other app file associations from creating startup problems.
    • volutil: prevent compilation problems on AIX5
    • Added an extra MPI barrier to pretty up the shutdown sequence and prevent the shutdown messages on node 0 from being mixed in with actively running script-generated console output on other nodes.
    • Added infrastructure and Tcl command to query node name info
    • Enabled xinerama for linux builds, added a linux MPI config
    • Silence overly chatty MPI startup output.
    • OpenCL kernels need to call copysign() rather than copysignf()
    • Updated the MPI intialization code to count GPUs and supress the per-node GPU reporting normally done in non-MPI builds.
    • Added query routines and Tcl commands to allow scripts to query the MPI rank and the total node count.
    • Added MPI related source files to the build.
    • Further reorganization of MPI startup code and initialization of VMDApp noderank and nodecount data.
    • Added comments about the MPI startup code
    • Rewrote the startup code so that only the MPI-based startup messages are printed for CPU counts, memory, for MPI-enabled builds.
    • Reorganized the MPI-specific parts of the VMD startup code to deal with MPI implementations that fail to maintain critical environment variables through the launch phase. Added a "-vmddir" parameter that the startup script can specify to prevent startup failure in such scenearios. Still need to determine what other environment variables we'll have to manually reconstruct before entering the later phases of startup. This should now be complete enough to enable further testing.
    • cispeptide: Don't attempt to load the autoimd package in text mode.
    • chirality: Don't attempt to load the autoimd package in text mode.
    • Molecular orbital localization according to Pipek-Mezey version 0.1! It does work but needs much cleanup, documentation and handling of special cases.
    • Adjust size of selection builder to fully utilize available space.
    • Add documentation for using AmberTools with molefacture
    • Update molefacture to use the new ambertools version of antechamber
    • Added new QM related commands molinfo mol get overlap_matrix molinfo mol get homo
    • Improved documentation for 1e-integrals. Added functions for Mulliken population analysis. Added function for orbital localization (not yet complete).
    • Added function to compute density matrix and population matrix.
    • cranked version
  • VMD 1.9a7 (December 20, 2009)
    • Added a configure option to enable support for special full-screen display handling for Xinerama enabled X11 servers.
    • Added X11 full-screen display code and added a back-door method for changing to and from full-screen mode with a combination of environment variable settings and calls to the existing "display resize" command. If VMD is compiled with Xinerama support enabled, it can be told to set the full-screen window only on one of the Xinerama component screens, rather than the entire X11 Xinerama display. If the xinerama screen is set to -1, then the whole display will be used just as in the non-xinerama case. The two environment variables currently used are VMDFULLSCREEN and VMDXINESCREEN.
    • Overlap integrals are computed correctly now.
    • Added new density parameters to orbital display and calculation routines to indicate that the user wants to see wavefunction density rather than wavefunction amplitude. The orbital grid cache now differentiates between the two grid types and will cause a recomputation as appropriate.
    • Mute output from VMD worker nodes so that only the master node emits output.
    • We have to leave the CUDA zero-copy orbital kernel disabled until more safety checks have been added to deal with GPUs that can't do zero-copy.
    • Added new density flags for all of the orbital kernels (C, SSE, CUDA, OpenCL) to enable compuation of orbital densities instead of orbital amplitudes if requested.
    • Added command "mol orblocalize molid waveid" that ultimately will create a set of localized orbitals from the given wavefunction. Currently it only causes the overlap integrals to be computed. Actually there is just the framework for computing them, the actual kernel will be provided by Chris. Also added functions for sorting orbitals by shape which we will need once we can localize orbs.
    • Added MPI configuration flag for testing.
    • Added a very crude MPI framework to VMD startup to make it easier to launch jobs on clusters and supercomputers that won't work well with ssh scripts.
    • multiseq: revise rmsd and q executable codes to work with RNA and DNA, per john eargle's updates.
    • multiseq: added in button coloring when you need to apply a filter before hitting 'ok', to give user a visual clue.
    • multiseq: updated docs to reflect recent changes in showing sequence titles for each row.
    • Added notewothy comments from one of Axel's older emails regarding the molfile_qm_hessian_t.
    • Explicitly mark IMD source files as UIUC Open Source License.
    • Marked vmdsock code as UIUC open source license so that it's obvious that people are free to use it if they embed IMD support in their MD code.
    • Added cispeptide and chirality plugins to the Extensions menu.
    • Added cispeptide and chirality plugins to Makefile.
    • autoimd: Added code necessary to interface between autoimd and the new cispeptide and chirality plugins.
    • Bundled rnaview code with rnaview plugin.
    • Cranked version of dtrplugin so it will supercede the existing installed copy on end-user's machines.
    • Fix a problem with the path to volutil containing spaces that cropped up on MACOSX.
    • Applied dtrplugin fix from DESRES
    • runante: Scale CM1 charges by 1.14 (Jorgensen's recommendation)
    • Enable the newer Tcl interpreter code path for Tcl 8.4.x since the most recent bug-fix versions in the Tcl 8.4.x series (e.g. 8.4.19-4) now exhibit the same Tcl_SetObjLength() behavior as for Tcl 8.5.x.
    • Changed configure script to enable override of default Python include and library search paths with environment variables to facilitate automatic configuration, compilation, and installation by scripts.
    • Added documentation chapter about basis set normalization.
    • Corrected gamessplugin header file dependencies
    • cgtools: Fix an incorrect line in the rbcg-2007.par parameter file pointed out by Bin Zhang on vmd-l.
    • mdffplugin: Calculate periodic box information using water molecules only, as opposed to all molecules. That cures problems with water-membrane simulations in which lipid tails stick out of the periodic cell.
    • mdffplugin: NAMD's gridforces syntax changed from 2.7b1 to 2.7b2. Now that 2.7b2 is released, write MDFF config files with the current syntax.
    • topotools: add support for reading and writing .xyz trajectories with variable number of atoms by automatically adding padding atoms and flagging them in the user field for visualization.
    • Replace MOLFILE_QMCHARGE_* by QMCHARGE_* and translate the symbolic constants in MolFilePlugin.C. Finally this allowed to eliminate references to molfile_plugin.h in files other than MolFilePlugin.C.
    • Replace MOLFILE_WAVE_* by WAVE_*.
    • Improved error messages and comments.
    • Translate MOLFILE_WAVE_* macros.
    • Renamed opt_status flag to status since it describes a general calculation status, not only the geometryoptimization status.
    • Eliminated obsolete symbolic constants RUNTYPE_TOTAL and SCFTYPE_TOTAL. Added comments.
    • Add translation switch block for qm convergence status.
    • Canonicalize names for QMSTATUS macros.
    • Translate between RUNTYPE_* macros from molfile_plugin.h and QMData.h. Replace hard-wired Lookup table for descriptive strings for runtype and scftype by switch blocks so we don't have to keep the translation table in sync with the macro definitions.
    • Add MOLFILE_RUNTYPE_* macros.
    • Move RUNTYPE macros to molfileplugin.h.
    • Translate between MOLFILE_SCFTYPE_* macros from molfile_plugin.h to SCFTYPE_* enum defined in QMData.h. This will make it unnecessary to include molfile_plugin.h anywhere else in VMD but MolFilePlugin.h. As a result VMD will be more indedendent from the plugins.
    • Turn MOLFILE_SCFTYPE_* enum into #defines. They will be used unly in the plugins and in MolFilePlugin.C.
    • moldenplugin: Enable reading wavefunction coefficients.
    • gamessplugin: Make use of angular_momentum_expon() helper function from qmplugins.h.
    • gamessplugin: Use SCF type macros from molfile_plugin. Use initialization function from qmplugin.h. Fix memory leak.
    • molfile_plugin: Added macros for the SCF type.
    • molfile_plugin: Added helper functions for initialization.
    • Use SCF type macros from molfile_plugin.
    • Updated DCS kernel to compile on MacOS X
    • Updated orbital kernel to compile on MacOS X
    • Renamed struct qmdata holding data structures useful for QM file parsing to qmdata_t for disambiguation purpose.
    • moldenplugin: Enable splitting SP-shells into one S- and one P-shell.
    • moldenplugin: Send basis set data, including correct atomic numbers, to VMD.
    • cranked version
  • VMD 1.9a6 (November 5, 2009)
    • Found a typo in the SSE angular momenta for F_SHELL
    • Fixed a bug in the calculation of partial distance components in the CPU SSE code branch.
    • Safety check for get_basis().
    • moldenplugin: Fix memory leak.
    • use single-precision floating point constant to please some of the weaker OpenCL compiler implementations.
    • Fixed dx lattice coordinate arithmetic for 2-times unrolled 4-way vectorized DCS potential kernel
    • Added tunings for IBM Cell/Power on OpenCL DCS potential kernel
    • moldenplugin: Enable reading trajectories. (Works but needs cleanup)
    • Set block size (OpenCL workgroup size) for vec4 DCS potential kernel to give good performance on NVIDIA and AMD hardware. Need more tuning to find the global optimal settings.
    • fix cut/paste typo in vec4 DCS potential kernel
    • Unrolled 4-way vectorized kernel for higher efficiency
    • Added a code path to allow testing of the vec4 DCS kernel
    • corrected last remaining issues with the vec4 version of the orbital kernel
    • Make non-CUDA builds (e.g. OpenCL-only) runnable.
    • Corrected a typo in the OpenCL required work group size kernel attributes which was causing a problem with the IBM OpenCL implementation for Cell.
    • moldenplugin: Cleanup. Documentation. Fix memory leak.
    • qmplugin: Added strtoupper().
    • Corrected OpenCL work unit X lattice index calculation
    • fixed typo in OpenCL potential kernel parameter setup
    • Prevent pbwithin selections with a cutoff <= 0.0 from crashing.
    • seqdata, seqedit: changed proc call to eliminate use of a redundant proc body.
    • First version of basis set aware molden file parser.
    • Move shell type macros from gamessplugin to qmplugin. Fix some Commments.
    • Added workarounds for bugs in the IBM Power/Cell OpenCL beta implementation
    • Updated padding logic to add support for 4-way vectorized potential kernel
    • Minor bug fixes and updates to both coulomb summation kernels
    • volutil: Added (undocumented) option -volume to calculate the molecular volume given a threshold in sigmas above the mean.
    • Force OpenCL potential kernel to be single-threaded for now, started culling some of the debugging code and unnecessary status messages. Still need to pull kernel compilation the rest of the way out of the compute loops.
    • Started migrating OpenCL kernel compilation out of the compute loops
    • Corrected global dimensions to take into account the loop unrolling within each work item.
    • Eliminated lots of workarounds and ifdef blocks in the OpenCL orbital kernels since the latest NVIDIA OpenCL libs seem to have fixed all of the problems that the workarounds were written for.
    • autopsf: Remove an apparently unneeded change that causes problems in some cases
    • added typecast to please the mac CUDA compilers
    • Converted VMD to use the timers provided by the workforce library, making it easier to use VMD components in standalone code, or to develop things initially as standalone modules before adding them to VMD.
    • Fixed polygon winding order for two-radius cones in the default FileRenderer::cone() method used by renderers that don't provide their own cone primitive.
    • molfile plugin headers: Better odering of QM related typedefs
    • gamessplugin: Added documentation about the function call chain and the parsing strategy.
    • OpenCL orbital kernel is now wired up for basic testing. The runtime compilation of the kernel is done in a hackish way at present, but we need a robust dynamic kernel compilation infrastructure the provides thread-safety and the ability to create/destroy kernels dynamically in order to really solve this problem properly. The current OpenCL kernel is limited to single-threaded execution due to the fact that OpenCL itself is not completely thread-safe.
    • Clicking on the title column header (which defaults to 'Sequence Name') now allows you to choose the text that you wish to describe each sequence. You can choose to display "Sequence Name", "Sequence Length", "Percent GC", "Domain Of Life", "Common Name", "Scientific Name - Short", "Scientific Name - Long", "Sequence Sources", "Lineage", "Enzyme Commision Number", "Sequence Type", "Temperature Class". If a given sequence doesn't have a value for the property you have chosen, you will be shown the Sequence Name, surrounded by angle brackets.
    • Corrected X index calculation to incorporate the correct loop unrolling constants in the direct Coulomb summation OpenCL kernel.
    • Added the OpenCL orbital code to the configure script
    • Extended documentation of the QM interface.
    • pbctools: Fixed a 'readxst' bug reported by Olaf Lenz. Now xst files containing PBC vectors that don't follow the standard alignment (A||x, B in x-y plane) are read and the molecule is aligned accordingly when using -alignx option. Fixed indentation in a few places.
    • use an explicit single precision floating point constant when initializing tmpshell, so CUDA and OpenCL kernels match
    • migrated majority of OpenCL context setup code completely out of the orbital routines.
    • further progress pulling OpenCL state initialization out of the orbital computation routines themselves.
    • Beginning cleanup of OpenCL orbital kernel compilation stages in prep for moving them out to the VMD global application startup-phase.
    • Make OpenCL orbital kernels use native_exp2() for (hopefully) better performance
    • Added draft 4-way vectorized orbital kernel
    • renamed 4-way vectorized potential kernel
    • Fixed incorrect copy length for initialization of the const_num_shells_per_atom array
    • Added code for setting up and running the tiled shared orbital kernel in OpenCL. At present the kernel is disabled due to bugs in both of the existing beta OpenCL toolkits, but hopefully it'll be runnable soon.
    • Added a float4-based OpenCL kernel intended to be better suited to CPUs.
    • eliminated unnecessary __constant address space qualifiers for non-pointer kernel parameters.
    • fixed missing type specifier
    • Implemented an OpenCL version of the tiled shared memory orbital kernel
    • added more cleanup handling to the end of the potential kernel for now until this gets pulled out into higher level routines.
    • Set fixed workgroup size for the constant memory orbital kernel
    • Release the command queue when done
    • Prettied up the constant memory orbital kernel
    • Corrected logic that releases memory objects after the orbital kernel completes, and fixed the memory object allocation code that will be used by the tiled kernel.
    • Added OpenCL orbital kernel to header
    • Corrected global work dimension for kernel launch
    • Mostly functioning OpenCL version of the constant memory orbital kernel
    • Completed kernel launch code for constant memory version of the orbital kernel
    • Converted constant memory buffers to OpenCL dynamic allocations.
    • Crude first draft of OpenCL version of the existing CUDA orbital kernels. At present, only the constant memory kernel is ported, and the constant memory arrays need to be reorganized since OpenCL handles those a bit differently.
    • Added explicit include of math.h so that OpenCL and CUDA codes are as close to identical as possible.
    • pulled unrolling macros out of orbital kernel since we're not actually using them at present.
    • eliminated unused constant buffer leftover from CUDA version
    • Updated and revised the standalone test harness so we can begin doing a bringup of an OpenCL version of the orbital code.
    • Corrected the CUDA init code for non-CUDA builds and init the class pointers to NULL in all cases.
    • limit OpenCL runs to a single host thread until we make our own thread-safe kernel compilation infrastructure.
    • eliminated unused code and added device count to OpenCL platform info routines
    • eliminated unnecessary printing from OpenCL platform selector routine
    • Improved OpenCL platform info display
    • qmtool: Fix the menus so that they work under MACOSX.
    • namdgui: Fix the menus so that they work under MACOSX.
    • cranked version
  • VMD 1.9a5 (October 26, 2009)
    • Added workforce timer routines to the build, replacing the vmd versions based on the Tachyon code.
    • cranked version
  • VMD 1.9a4 (October 23, 2009)
    • Updated URL for Intervor plugin
    • fixed behavior of withinbonds selection when used as part of a compound selection expression.
    • Increase default resolution of representations. This will cost performance for very large structures, but since the majority of the user community are working on small items, it's a better default for modern GPUs. People working on large structures are generally more skilled and will know how to change their personal defaults using the "mol default" commands.
    • ilstools: Fix the menus so that they work better on MACOSX.
    • symmetrytool: Fix menubutton (for MACOSX).
    • hoomdplugin: add support for new acceleration field.
    • lammpsplugin: more intuitive name for remap environment variable.
    • lammpsplugin: Allow remapping of data field labels via an environment variable.
    • Added crude first draft of OpenCL infrastructure.
    • Added basic OpenCL support to configure script
    • topotools: need to swap indices together with types when retyping dihedrals and impropers.
    • dowser: Add reference for the Dowser plugin.
    • consistent naming of intermediate angle/dihedral/improper lists to avoid cut-n-paste bugs.
    • topotools: fix cut-n-paste bug in replicatemols proc.
    • topotools: added code to determine angle and dihedral definitions from the bond topology and guess elements from masses.
    • hoomdplugin: "rebrand" the hoomd plugin to reflect the change of name to HOOMD-blue. update contact e-mail address and step plugin minor version number.
    • topotools: fix bug in assignment of angles, dihedrals and impropers to a subsystem via a selection argument. Consistent naming of atomindex maps. update e-mail address and homepage.
    • topotools: remove platform specific scratchdir code that is no longer used. step version number to 1.1 in anticipation of the next commits with added features requested by topotools users.
    • Made the constant buffer update routine static for file-scope linkage.
    • mdffplugin: Remove redundant NAMD wrapping commands in 'mdff setup'.
    • mdffplugin: Modified 'mdff gridpdb' so that only atoms that should be coupled to the map will be considered by NAMD's gridForces, which should improve performance for explicit-solvent MDFF. Also don't couple hydrogens by default, which should also improve both performance and stability.
    • psfplugin: Avoid NULL pointer dereference in case a parse error has happenend in one of the psf file blocks, which is indicated by closing the file and setting the pointer to NULL. stepped plugin minor version number.
    • Corrected missing device memory allocation when not building using pinned memory buffers.
    • Do a quick 1-byte memory allocation/deallocation during GPU device pool initialization to cause all of the contexts to go live during the earliest startup phase for the purposes of accurate init timings.
    • Enabled zero-copy orbital kernel by default
    • Made the mutexes on work distribution data structures use spin locks only, this will prevent kernel-based queued waiting and the associated context switches back and forth.
    • Added timer calls to return absolute wall clock times for start/stop times to enable detailed execution trace comparisons
    • Added a prototype zero-copy variation of the orbital kernels. Since we can't presently guarantee that the incoming grid is appropriately padded in X and Y, we still have a de-striding copy loop to perform to the final output buffer, but we have eliminated the need for calls to cudaMemcpy() following kernel execution since the output array is write-only. To do better, we need to eliminate the de-striding copies and ideally use a "portable" mapped host allocation so that all GPUs target the same output buufer automatically.
    • Enable CUDA mapped host memory by default when initializing hardware that's capable of using zero copy
    • don't call free CUDA device memory arrays unless we used them.
    • Fixed incorrect orbital grid allocation size presumably caused by conversion from malloc/free to new/delete syntax.
    • cranked version
  • VMD 1.9a3 (September 22, 2009)
    • Replace shell_symmetry in basissetplugin.c.
    • symmetrytool: Use correct scope for getargs function. (It is in ::util::getargs)
    • replace shell_symmtry by shell_type
    • Added comments that explain the concept behind the QMTimestep and wavefunction classes.
    • psfplugin: Updated PSF plugin for latest CHARMM Drude PSF format from Wei Jiang at the Roux lab.
    • gamessplugin: Add and improve comments.
    • fixed old reference to basissetplugin.h, now replaced by qmplugin.h
    • gamessplugin: corrected C++ism and cranked version number
    • replaced basissetplugin.h with qmplugin.h
    • Add qmplugin.h containing data structures and helper functions for QM file parsing.
    • colorscalebar: Major GUI overhaul. Option to properly select molecule and representation when using autoscale mode to pick the range, instead of the previous loop over all rep 0 of all molecules. Option to add a title text added as well.
    • colorscalebar: take list of text colors in colorscalebar GUI from [colorinfo colors] instead of hardcoding it.
    • colorscalebar: cranked version number of recently modified colorscalebar plugin
    • colorscalebar: save and restore current views of all molecules around the addition of the colorscale bar, since adding the colorbar requires resetting the view.
    • cranked version
  • VMD 1.9a2 (September 16, 2009)
    • Added spin lock and try lock primitives for use in cases where we are not willing to allow the OS to put the calling thread to sleep in a wait queue due to detrimental effects on latency.
    • Added code to test empty CUDA kernel launch latency. The code now skips reporting data from the first "warmup" pass.
    • eliminated vmd_msleep() call to keep CPU cores spun up during benchmark
    • Added multi-run averaging into CUDA device pool latency benchmarks
    • Eliminated the old thread spawning code from the CUDA Orbital code, since we can use the device pool APIs even for single-threaded runs now.
    • CUDA device pools are used now even for single-threaded builds
    • force wait on completion of pending GPU benchmark kernels before exiting worker thread
    • Added a device pool latency benchmark that includes a simple no-op GPU kernel
    • Added device pool benchmarks for raw barrier syncs, and for a no-op worker procedure.
    • Added a new benchmark test to measure the latency of a complete CUDA device threadpool wake / run / barrier collect / sleep cycle doing a no-op other than requesting work units as fast as possible.
    • Updated PSF plugin with more stuff related to the CHARMM DRUDE mode
    • Updated PSF plugin to recognize new Charmm36 Drude polarizable FF models.
    • Re-enabled use of CUDA pinned memory for the multi-GPU orbital kernels since the CUDA 2.3 drivers seem to have fixed the bugs that existed before.
    • Removed old comments related to bugs in the fog implementation on the SGI RealityEngine and hardware of the same era.
    • Removed queries and enumerations related to the old Sun OpenGL mesh array extension, which is not used in VMD currently.
    • Removed code for detection of various archaic SGI and Sun graphics accelerators along with code that provided workarounds for bugs in the graphics hardware and/or drivers.
    • Removed old machine-specific GLX visual acquisition comments.
    • Removed the archaic SGI-specific multisample antialiasing code since the ARB multisample feature has been available now for many years.
    • ssrestraints: Added support for Amber RNA residue names.
    • seqdata: removed unneeded comments
    • pdbtool: don't download the entry from the PDB if the user cancels the file name selection.
    • cranked version
  • VMD 1.9a1 (September 4, 2009)
    • make vmdcon compile with the new WKF threads.
    • volutil: Fix typo in parsing a command-line option.
    • multiseq: removed extraneous comments from the dialog
    • netcdfplugin: fix uninitialized return code variable.
    • volutil: Updated the volmap header to use the _isnan() routine when compiling for win32.
    • Updated VS2005 build setting for new threading components
    • Updated MSVC6 build setting for new threading components
    • Fixed volutil Makefile to link the win32 executable correctly.
    • Added a separate shared library flags compilation variable to support Windows plugins builds that use statically linked plugins.
    • Changed Win32 compile flags to prevent executable source files (e.g. volutil) from being compiled with a DllMain() when they include plugin headers.
    • Put exclusion forces in the correct array for multiple timestepping.
    • topotools: update parameter and topology files as requested by WS.
    • volutil: Attempted to correct some linking problems on Win32.
    • Added CUDA host-device memory copy latency benchmark tests
    • CUDA memory bandwidth tests run faster with one thread per data element rather than looping, and the code is much prettier.
    • added CUDA global memory bandwidth benchmark test
    • prettied up CUDA benchmark routines, eliminated an inadvertent use of double precision constants in the multiply-add kernel.
    • timeline: Handles large sturctures better: a) does not effectively freeze on startup for large molecules (the intial calculating for every residue is now skipped b) properly handles segments, including in .tml files, so can be sure have unique atoms specified New version of .tml format (1.4) -- but still must set to handle earlier versions (e.g. not yet backward compatible!)
    • volutil: Avoid "using std::min" and "using std::max" statements, removed "using namespace std" to please older MS compilers.
    • volutil: Remove unused template functions.
    • Converted VMD to use the new WorkForce threading routines
    • Added first revision of WorkForce threads to VMD, to replace the old VMDThreads code with something more program-agnostic. We'll keep the truly VMD-specific threads routines in the old VMDThreads code, but migrate the rest of the code to use the new API.
    • Updated cionize CUDA kernels for new behavior of cudaSetDevice() with runtime versions 2.2 and later.
    • ssrestraints: Fix parsing of -hbonds options.
    • Added symmetrytool to the plugin index page
    • ILS: Allow disabling the automatic alignment code by setting the environment variable VMDILSALIGNMAPS. Pass alignment matrix and transformed grid origin and grid basis vectors to the kernels.
    • molefacture: Add some missing fragment files
    • Added support for nucleic acid residue naming convention used by Coot, i.e., Ar, Ad, Cr, Cd, etc.
    • ilstools: Correct the range for cases where we don't start with the first frame of the trajectory.
    • symmetrytool: updated docs
    • ilstools: updated docs
    • Updated NVCC compiler flags for CUDA 2.3, including support for cross-compilation mode on 64-bit hosts.
    • timeline: minor cosmetic fix: 'every residue' button appears now correctly on Windows and MacOS X.
    • Added volutil package, required by MDFF at present. A known problem that we need to address is that volutil relies on a non-portable test for NaN (breaks down on Solaris with the compiler optimizations we use). Compilation hasn't been tested on Windows yet.
    • changed win32 startup to look for VMD 1.9 registry key
    • Added new mdff plugin.
    • Added a CUDA-enabled MacOS X build config for cionize.
    • cionize: Replaced "uint" by "unsigned int" to please MacOS X.
    • updated development hardware lists
    • cranked version
  • VMD 1.8.7 Final Release (August 1, 2009)

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