VMD Development Status

  • VMD 1.8.6 Final Release (April 7, 2007)
    • Tagged/re-tagged all sources with final vmd-1-8-6 release tag.
  • VMD 1.8.6rc5 (April 6, 2007)
    • cgtools: fixed a bug that peter found with the namd annealing not writing out the proper PDB file to the config file.
    • cgtools: Fix up issues with rerunning the conversion
  • VMD 1.8.6rc4 (April 5, 2007)
    • applied Axel's patch to correct the behavior of the multi molecule animation plugin when no molecules are loaded.
    • molinfo get {filename} returns a list with brackets, which was messing up my cggui if more than one item (pdb, psf) was loaded into a molecule. Now grabs just the pdb file and passes it into the annealing code.
    • cgtools: Remove bad line break
    • Added the docs for multimolanim into the main plugin index
    • Updated paratool help link, about links to point to TCB pages since the charite page is down.
    • Added documentation for the VMDFORCECPUCOUNT environment variable to limit the maximum number of CPUs that VMD uses for its multithreaded analysis routines.
    • Added multimolanim plugin docs
    • Added multimolanim plugin to the top level plugins makefile
    • Patch for Axel's TkCon-based VMD primary console to correctly close down the message buffers at program termination.
    • Updated the doxygen programmer's guide with the VMD 1.8.6 CVS tag information.
    • Added top level makefile target for CUDA-enabled Linux builds.
    • output prettyfication. reduced number of dashes printed when showing learning steps.
    • made the CG rep show up transparently so that the non cg rep can be seen
  • VMD 1.8.6rc3 (April 4, 2007)
    • Added missing deg2rad conversion for measure angle/improper.
    • Added NVIDIA CUDA configuration option to the programmer's guide.
    • updated configuration docs in the programmer's guide for new platforms.
    • Release candidate 2 in testing
  • VMD 1.8.6rc2 (April 3, 2007)
    • Fix atomselection keyword doc.
    • Release candidate 1 in testing
  • VMD 1.8.6rc1 (April 2, 2007)
    • Make NVIDIA Gelato scene export use the FileRenderer superclass for capped cylinders, since we don't have a NURBS implementation for these yet.
    • Release candidate mode
    • Updated win32 installer
    • Updated VMD win32 build project settings
    • Added docs for the new "measure energy" commands.
    • Removed unused variable.
    • Applied Jan's updates to his energy measuring routines, needed for Paratool. The patches fixed a few inappropriate error message strings for the new comands and completed measure angle which took Urey-Bradley params but then ignored them. The same is true for nonbonded switching which also works now.
    • Added Jan's patch adding the new "measure imprp" which is implemented as a wrapper for "measure dihed".
    • measure dihed/angle/bond/imprp allow the user to specify the string "last" for the frame number.
    • volmap: Use units of kT/e for the Coulomb potential.
    • Added the VMD vertex/fragment shaders to Doxygen for the benefit of others that want to read/understand or reuse our shader code in other apps.
    • cionize: Properly move definitions to fix LFS large file i/o on 32-bit
    • cgtools: added support for SITUS files for density maps.
    • Cranked version number
  • VMD 1.8.6b17 (March 29, 2007)
    • Fortified the bond search routines against memory allocation failures in places that weren't adequately covered in the new implementation.
    • Fortified the volumetric texture map code with additional safety checks against various cases where the system could run out of memory when processing multi-gigabyte volumetric map files.
    • cgtools: docs updated to the latest and greatest state of the plugin
    • cgtools: just added some {} to a few new expr calls. Insignificant
    • cgtools: Added the ability to specify the total mass of the CG model. When starting with an all atom model this won't typically be used, because we have a reasonable starting point for the masses of the individual atoms, but for electron density maps we don't know what the mass of the system is. This can now be specified via the gui and the proper masses for the CG beads will be written to the topology file.
    • cionize: Add usage info on -m switch
    • Cranked version number
  • VMD 1.8.6b16 (March 29, 2007)
    • Prevent the title screen from hogging the CPU/GPU when VMD first starts up, and ends up being used for bioinformatics stuff with no molecules loaded for many minutes. Multiseq already includes a workaround for this, but now the root cause is addressed.
    • Eliminated Windows-specific compilation checks leftover as a workaround for the old AtomRep/AtomColor command tokenizer bugs.
    • Marked ancient comments about an old Win32 memory issue more clearly, before I re-test and eliminate them if possible.
    • Corrected a flaw in the string tokenizer used by AtomRep and AtomColor which has been hiding for years. Certain inputs could cause the original tokenizer to return a pointer to the first argument which differed from the pointer to the string memory block, causing delete [] to get an invalid pointer. The new version ensures that the first argument pointer returned by strtok will be the same as the memory block pointer.
    • cgtools: tweaked the parameter used to determine how many beads we should guess for a given .dx file.
    • cgtools: revised NAMD annealing config code to only write one parameter per line.
    • namdgui: Added awareness of a few more simulation parameters as requested by Anton and Peter. This should make it possible to run CG simulations using NAMDgui.
    • cgtools: on res-based, disable the add buttons for the protein/water database files after they've been added once.
    • Added a check on the cudaFree() at the end of the potential map energy thread code to make sure we don't miss any runtime errors that occur
    • namdgui: Added a missing package require.
    • Cranked version number
  • VMD 1.8.6b15 (March 26, 2007)
    • cgtools: added in the option (for reverse coarse graining) to access peter's proc that creates a NAMD config file for simulated annealing. User can specify parameters and the appropriate psf file.
    • cionize: fix grid I/O timer declarations
    • process all molecule callbacks correctly for the special-case 'mol delete all' fast path implementation.
    • cionize: Merge the normal calculation code so we pick an energy kernel instead of maintaining different thread functions, and allow the use of -m double to specify double precision.
    • Updated molfile plugin version numbers in the docs.
    • dlpolyplugin: Added support for DLPOLY version 3 HISTORY files
    • cionize: Added double precision potential kernel and renamed the original and new kernels to more clearly indicate what they're doing.
    • cionize: Add mechanism to specify calculation method on the command line. Right now, only multigrid can be specified; otherwise it defaults to our old faithful (tm). New methods can be added in cionize_userio.c; the method codes are defined in cionize_enermethods.h
    • Added Leo's rmsd_matrix scripts to the script library
    • Added Leo's residmap scripts to the script library
    • cionize: Added new version of the SSE code that gives a 2x speed increase over the previous version at least on Intel Core 2 chips, the same code causes a performance regression with gcc, so it's only used when compiling with Intel's C/C++ compiler.
    • cionize: Split the coulombic potential thread inner loops into separate SSE variants for the Intel C compiler and for everything else.
    • Changed syntax for the new measure bond/angle/dihed commands, eliminating the need for lots of extra formatting and parsing code both in Tcl and in the C++ classes. Added new 'measure energy' command that computes the energy for bond, angle, dihed, improper, vdw and electrostatics for 2, 3 or 4 atoms respectively. The syntax is similar to the 'measure bond/angle/dihed' command. Since VMD does not (yet) know parameters you must specify the force constants, etc as command arguments. The advantage over having a tcl script do the job using atomselection is speed and simplicity. E.g for diheds the order of atoms matters so that one has to make 4 individual selections and retrieve the coordinates from them in order to compute the energy. Or at least one must reorder the by-index-sorted results of atomselections. Paratool needs this type of energy evaluation a lot.
    • cionize: Add distance dependent dielectrics
    • Applied Jan's patch to propagate cone resolution all the way down to the FileRenderers.
    • cgtools: again reworked the code that fills the menu with currently-loaded molecules in vmd and the attending code that determines whether or not a molecule should be automatically selected in the plugin (only want to autoselect if it is the first molecule being loaded into vmd; otherwise, don't auto change things for the user) In the process, fixed an uninitialized variable that Peter noted the deal-breaking results of.
    • cgtools: after a couple of false starts, I think that this should get the protein and water database files copied over the way that they should be.
    • Updated vmdmovie plugin documentation links to videomach, call for programs, etc.
    • Cranked version number
  • VMD 1.8.6b14 (March 20, 2007)
    • Updated the Tachyon renderer to fix a transparent surface rendering bug caused by an uninitialized variable.
    • cgtools: don't use VDW rep for all atom recreation don't automatically choose new molecule when a new one is loaded into vmd make output file paths relative instead of absolute changed default name prefix from A to B changed output filename prefix from aa_ to aa_ref_, and fixed some code that wasn't using it. reworked the output file naming code to not double up prefixes/create strange suffixes
    • cgtools: anton's suggested changes to the docs
    • Volmap Docs: Added mention of the Coulomb map type and of the -minmax option
    • Prevent texture references from rounding into the unpopulated texel area when using "nearest" filtering mode with the VolumeSlice rep.
    • Added the two fastest variants of the coulombic potential direct summation routines. These versions are up to 14% faster than the version we have enabled, but they increase the tile size for the calculation resulting in performance that can actually be lower than the active code when working with small grid sizes that are just one or two voxels past an even tile boundary. For the time being we'll continue using the code based on smaller block/tile sizes since it gives the best average case performance.
    • Eliminated unnecessary includes and libs from CUDA enabled builds.
    • Added a message that says what minmax volmap will use. This will help make sure average grids calculated in installments have the same dimensions.
    • added in an initial value for the number of beads when starting from an EDM
    • cgtools: updated some default values for the learning parms per Anton
    • cgtools: changed atom format from A1.0 to A1
    • cgtools: default values for the CG residue name and prefix.
    • namdgui: Use proper namespace for pbcset.
    • cgtools: moved references to database files to be in current dir instead of subdir
    • Corrected a few comments in the CUDA-based coulombic potential map code.
    • Added CUDA .cu source files to the Doxygen builds.
    • Cranked version number
  • VMD 1.8.6b13 (March 15, 2007)
    • Change N2 to Npl
    • Reanalyze before writing topology file to avoid problems
    • Remove unnecessary debug info
    • Fix typing of some odd nitrogens
    • molefacture: Fix problem occuring when you only moved group2 of an angle
    • molefacture: Fix a typo in the trigonal bipyramidal geometry routines.
    • cionize: inlined Taylor2 softening for short-range computation
    • cgtools: reworked the CG database selection gui so that it allows you to add sample protein and water database files by clicking a button. You can still add whatever user defined database definitions that you choose
    • cgtools: sample coarse graining database files used by the residue based CG method
    • cionize: added timers to multilevel long-range computations to profile performance, omit exclusions directly to improve CPU performance
    • Added some extra event filtering logic to the Spaceball interface to prevent VMD from acting on null motion event packets, since some versions of the 3DConnexion Windows Spaceball driver emit a constant stream of null event packets while VMD has mouse/spaceball focus. This filter can't prevent the Windows drivers from sending us these null motion packets, but it will prevent VMD from generating null rotation and translation commands which would otherwise cause display redraws, thus unnecessarily loading the CPUs/GPUs. If we get a null motion event, the new code will entirely skip processing it further, and will only update the button state vector.
    • Updated SpaceballTracker comments.
    • cgtools: doc updates
    • cgtools: fixed a typo. Added a log message to warn the user that the dx file is being loaded
    • added electron density map support to the gui. Available from the shape-based CG screen.
    • Added a -minmax {{minx miny minz} {maxx maxy maxz}} option when creating maps using volmap
    • Added "coulomb" as an accepted name for the Coulomb potential map type Updated inline help, fixed some inaccuracies
    • Added the coulombic potential map code to the win32 builds
    • Eliminated unnecessary system includes from the threaded potential map code.
    • Cranked version number
  • VMD 1.8.6b12 (March 13, 2007)
    • print the total runtime for the completed coulombic potential map calculation
    • prettied up the CPU potential map info messages
    • pretty up CUDA potential map info messages
    • pretty up the CUDA GPU count message
    • correct reporting of the padded GPU potential map size
    • Reduce the amount of thread output in the VMD console
    • Revised vol_cpotential() and the CPU and CUDA variants to eliminate the old parameter specifying the maximum CPU count. These routines now make the CPU/GPU count decisions on their own, based on whether the build is multithreaded, based on the number of CPUs and GPUs detected, etc. The default strategy is to farm out the work to as many CUDA capable GPUs as we detect, creating one CPU thread to manage each GPU. If the CUDA acceleration routine fails due to lack of GPUs, or due to a CUDA runtime error, we fall back to the mulithreaded CPU version. If the build is single-threaded, then we either run on one GPU, or fall back to running on one CPU. The code should be robust in all cases now.
    • corrected the timer code in the CUDA coulombic potential map calculation and made the CPU and GPU versions match a bit more closely
    • Fixed CUDA macro tests in the VMD src to look for VMDCUDA
    • Added CUDAKernels.h include and corrected the CUDA kernel call
    • Corrected the atom xyzq buffer setup routine in VolMapCreateCoulombPotential
    • Updated the timer code in the potential map generators to use the VMD time routines correctly.
    • Added the new coulombpotential map type to the "volmap" command.
    • Updated potential map codes to check for VMDTHREAD macro rather than THR
    • Added multithreaded multi-GPU CUDA accelerated Coulombic potential map calculation code to the build.
    • Added multithreaded Coulombic potential map calculation code to the build.
    • Added built in help strings for new "measure bond" and "measure angle" commands. (measure dihed was already included)
    • Changed the return code for the new "measure dihed", "measure bond", "measure angle" commands to always return lists, even in the single frame case to make it easier on script writers.
    • Added rev1 of Jan's geometry measuring Tcl commands, still need to revise the return values for the single frame cases, and consider replacing the old / syntax with lists
    • Added Jan's geometry measurement code to Measure
    • cgtools: changed neurons to CG beads. added initial default values for shape-based learning. tweaked window title bar to reflect current screen minor other text changes on shape based screen added in checking for the existence of a PSF file before running the shape-based CG. If it doesn't exist, a warning is provided to the user. changed the default name of the all atom reference file for shape based.
    • cgtools: added anton's code to do electron density maps. It isn't exposed to the GUI yet. That will come later.
    • cionize: mgrid; reduce weight cube radius when h divides a
    • cionize: Finish splitting cionize functions into logical places. There's more cleaning and streamlining to do now that everything is separated, but this should at least make life easier.
    • cionize: Segregate grid i/o functions from the main code
    • cgtools: changes 'neurons' to 'beads' per anton's suggestion. Fixed a printing bug when the number of steps is very small.
    • exectool: revised to use new signatures of the biocore api for initialization
    • namdenergy: commented out a couple of prints; added rob's fix for a problem with forgetting jobs.
    • cionize: added flag for debugging mgpot, disabled unless you edit makefile
    • cionize: found off-by-one error in initial mgpot grid allocation
    • cionize: added command line options to specify the multi-level summation potential routines versus the direct summation routines.
    • cionize: added timing to multi-level summation potential grid routines
    • cionize: added "mgpot" source files. "mgpot" is a customized version of multi-level summation for computing high-resolution grids of electrostatic potentials.
    • cionize: increased maxlevels by one and added debug output
    • cionize: clear grideners array
    • Updated win32 installer
    • Updated VDNA package version number, and corrected the missing Tk registration callback in the new version.
    • cionize: Improved the comments in the CUDA potential grid routines and prettied up the GPU kernels, bringing in the cleanest version of the latest test kernel formulations.
    • paratool: Bugfixed IC table writing.
    • Updated the VDNA plugin with Tom Bishop's latest version: Now there are options to include random variations in 1) the linker length and/or 2) the wrapping of DNA around the histone core. This enables users to investigate the two-angle model of chromatin as described as early as Woodcock PNAS 1993, or Leuba PNAS 1994 or Helmut Schiessels work.
    • Eliminated use of the PyDoc_xxx() macros since we'll always be compiling with documentation enabled.
    • paratool: Bugfix for IC table writing. IC tables now also consider impropers.
    • Use a different variation of PyDoc_xxx() macros which compiles correctly on IRIX.
    • List CUDA accelerators at startup, if any were detected.
    • Added support for CUDA acceleration to the VMD configure script
    • Added basic infrastructure for detecting and initializing CUDA acceleration within VMD, as well as a wrapper class to control access to all of the accelerator functions and abstract control of multiple devices, threads, memory transfers, etc.
    • Fix the new py_atomsel class to compile against older Python versions, and corrected two places where the code was trying to return a NULL for a function with int return type.
    • Added new python 'atomsel' module source file to the build.
    • Added Justin's new 'atomsel' Python module which replaces the old "AtomSel" (now deprecated). The new module contains most of it's documentation as built-in help, which can be viewed with Python's help() system.
    • Migrated the fast "$sel move" implementation into Measure, for use by both Tcl and Python.
    • Applied Justin's patch to add a "measure move" routine, which can be used by Python now as well.
    • Added documentation for Justin's new Python 'atomsel' code.
    • Justin's new Python 'atomsel' module replaces the old 'AtomSel', which is now considered deprecated. As a result, the old AtomSel is no longer loaded by default.
    • Updated win32 installer
    • remove old volume slice texture coordinate code
    • Now that volslice also uses linear texgen, there's no need to keep remnants of the explicit vertex texture coordinate code around.
    • Updated the GLSL fragment shader's implementation of texture mode 2 to match the fixed function pipeline implementation, which uses GL_REPLACE.
    • The VolumeSlice representation now also uses linear texgen texture coordinates rather than per-vertex texture coordinates, so the GLSL vertex shader now executes the same code in both cases.
    • cionize: fixed a couple of bugs introduced by porting mgrid hack
    • cionize: fixed LFS support macros, and added revision control headers to help keep copied versions straight.
    • cionize: Added in the multi-level summation version of the energy function for testing.
    • docs: eliminate mention of old "NOGRAPHICS" configure option.
    • cionize: Added the first version of the CUDA-based potential grid calculation engine, which achieves 150 GFLOPS per GeForce 8800GTX. This version of the code is updated for the new cionize summation usage, but needs further testing on our biggest structures.
    • cionize: eliminated unused local variables, and added ifdefs to call the CUDA accelerated version of the potential grid routine.
    • cionize: Start using the threaded energy function instead of the old one for energy updates after each ion is placed. Perhaps we should have some generic piece of glue that stands in for the current calc_ener... and passes things along to the appropriate function depending on compile-time choices.
    • cionize: Move responsibility for clearing grid in the energy functions to the caller. This means that from now on, all cionize-compatible energy functions will only be UPDATING the grid with the additional contribution of a new set of particles
    • pbcwrap: bugfix by Olaf
    • eliminated unnecessary iostream include
    • pbctools: Corrected the makefile version number for the pbctools plugin.
    • namdgui: Use new pbcset function from pbctools plugin to set the unitcell.
    • paratool: Remove debugging output, Bugfixes
    • qmtool: remove unneccessary output.
    • resptool: Corrected behavior so that resptool can be called from within paratool or as standalone.
    • Cranked version number
  • VMD 1.8.6b11 (March 1, 2007)
    • cionize: Added cionize_grid header
    • eliminated redundant test for GLSL state updates
    • Reorganized the VMD sphere fragment shader to so texturing and color assignment operations yield better performance due to reduced register use and better coverage of memory latency.
    • Reorganized the main VMD fragment shader so texture fetches occur as early as possible to provide more opportunities for latency hiding.
    • Added new lighting mode tests to correct problems that cropped up with GLSL rendering as a result of recent volumetric texturing changes. The current code can encounter situations where the order of texture definition operations and GLSL state changes can cause GLSL to be inactive during the time when texturing state is modified. This was previously causing the GLSL texture state variables not to get updated since the shader wasn't active at the moment of the state updates. The new lighting state variable allows us to temporarily enable and then disable the GLSL shader during the state updates so this condition can no longer occur. This is a reasonable trade-off for the large performance gains achieved by agressively caching the volumetric textures.
    • cgtools: added default initial value for lambda (shaped based CG). User can change as desired.
    • cgtools: added some initial text for the shape-based CG documentation
    • pretty up the sphere intersection routine
    • Eliminate a floating point divide in the sphere shader by reciprocating the (far-near) clipping plane distance parameter.
    • cionize: Finish purging references to cionize core functionality from energy functions.
    • pbctools: applied Olaf's bug fix for pbcbox display update handling
    • pbctools: applied Olaf's latest revision of the pbctools plugins.
    • biocore: Updated for Kirby's 1.25 version of biocore.tcl.
    • cgtools: updated to include new file. Thanks, axel.
    • dowser: Update snapshots. Added a snapshot of a new window.
    • biocore: Added a BioCoRE listener for automatic refresh when someone else posts a new state. Updated version to 1.1
    • biocore: Updated biocorechat. Modified version to 1.1
    • biocore: Updated package versions of biocorepubsync and biocorechat to 1.1
    • Added the can_write_structure() test back into CoorPluginData.
    • dowserplugin: Fix version in doc.
    • Added dowser and pbctools plugins to the main plugin doc page.
    • GUI is now in for anton's shape-based networking CG method. Still some additional error checking that can be done, and the docs haven't yet been updated, but this is still a step forward.
    • Cranked version number
  • VMD 1.8.6b10 (February 27, 2007)
    • Added large file summit 64-bit file offset support to the cioinize plugin.
    • Added large file summit 64-bit file offset handling to the DX plugin.
    • pbctools: Added pbctools to the plugin distribution targets
    • Applied Justin's molfile plugin patch to correct handling of the case when the user wants to write out the molecule to a file that requires structure data, but no structure data has been loaded into VMD yet. This occurs when one loads a DCD file and then tries to write out a file format that wants structure information.
    • pbctools: fix compound parameter handling in pbcwrap
    • idatm: Update docs to include more information on alternative typing schemes
    • idatm: Allow guessing of element by name when absolutely needed, and add a safety check to avoid crashing on unbonded atoms
    • pbctools: further documentation corrections
    • pbctools: Applied various corrections to file headers, source code comments, and minor bug fixes for pbctools.
    • pbctools: Added new pbctools documentation provided by Olaf and friends.
    • namdgui: Fix a small bug when setting up the unit cell.
    • solvate: Fix a small bug when trying to load a psf after rotation.
    • cionize: Fix immediate segfault due to incorrect string pointer initialization.
    • gamessplugin: cranked version number for recent string handling fixes.
    • Fixed cyclic structure analysis routine to handle cases where no residues or no fragments exist.
    • tinkerplugin: Fixed an uninitialized options flag in the Tinker plugin which was causing nondeterministic behavior on old versions of VMD, though it was being correctly caught by the new versions.
    • Applied Axel's patch to correct some string buffer handling issues in the GAMESS plugin.
    • Fix maxnumprocs reference in the multithreaded branch of cionize
    • saltbr: Updated doc to clarify that the plugin doesn't look for hydrogen bonds.
    • Added initial revision of the new pbctools plugin based on the VMD script library contributions by Jan Sam, Olaf Lenz, Jerome Henin, Cameron Mura, and Axel Kohlmeyer
    • cionize: Clean up energythr.[hc] to remove unnecessary information from the header file
    • cionize: Split energy calculation code into a separate file to make it easier to have multiple energy functions floating around
    • Added Axel's include of config.h to help with automatic dependency generation
    • dowser: Added the interface to combine waters placed by dowser with an existing psf/pdb combo. Still need to allow for deletion of crystal waters depending on the options used when running dowser.
    • dowser: Updated TODO list. Small fix in combine_waters.
    • autopsf: Fix a broken scrollbar
    • Cranked version number
  • VMD 1.8.6b9 (February 21, 2007)
    • dowser: Added the code to combine the placed waters with a psf/pdb combo. Still need to add this to the GUI.
    • cgtools: pulled out the code that was doing a lot of atomselects and replaced it with the select results in a list. Speeds things up quite a bit. Also makes it easier to switch the networking code to work with electron density maps. The kernel of the code can basically have coordinates and masses (and charges) passed in and will do its work. It doesn't care if it is dealing with molecules or EDMs. A couple of minor changes will need to be made once EDMs are actually in, but they won't be a problem.
    • Pulled out the code that was doing a lot of atomselects and replaced it with the select results in a list. Speeds things up quite a bit. Also makes it easier to switch the networking code to work with electron density maps. The kernel of the code can basically have coordinates and masses (and charges) passed in and will do its work. It doesn't care if it is dealing with molecules or EDMs. A couple of minor changes will need to be made once EDMs are actually in, but they won't be a problem.
    • Force color regen when atomic number is updated
    • Force color regen and rep updates when an atom selection updates the atomic element name field.
    • removed libalchemify.i and libalchemify_wrap.c as Jerome indicated that they are no longer needed.
    • Applied Justin's patch to correct the VolSlice rep's texture ID for the cases where it's not colored by volume and the volume ID is provided by it's own control.
    • gamessplugin: This revision has another bugfix for pc gamess generated log files and now also loads GAMESS_US version output 7-SEP-2006-(R4) properly.
    • disable carbs for normal builds again.
    • Implemented a new isosurface safety check that should run faster and also allow some of the borderline surfaces near critical points to render correctly.
    • further tweaking of vertex interpolation code
    • pretty up the isosurface floating point safety checking code and prepare to make an alternative formulation that's potentially tolerant of IEEE NAN values.
    • cgtools: Initial version of the TCL conversion of Anton's networking based CG routine. Seems to be producing the same types of results as the C++ version, with the exception of a boundary case or two that is still being worked on.
    • cgtools: commented out a puts
    • enable the carbohydrate rendering code for the next few rounds of test builds.
    • eliminated old DispCmdTriColor which was previously used by the carbohydrate rendering code.
    • Improved the main protein/nucleic acid fragement traversal routine.
    • solvate: Add test to make sure psf/pdb files load properly
    • Added an extra check to prevent the master fragment determination loop from traversing disulfide bonds while building the list of unique fragments. This change preserves correct residue ordering in the main fragment list and allows the main fragment list to be used to construct the protein and nucleic acid subfragment lists without re-traversing the structure. This allows cyclic proteins to be correctly detected using new structure analysis routines.
    • Added initial handling of cyclic protein fragments in the NewRibbons and NewCartoon representations. The correct twisting of the perp vector where the start/end meet up is still having trouble, but this is a good first step. A short-term workaround for the perp vector twist would be to overdraw that span with a modulo wrapped section, which has worked well in a previous rev, but requires one extra residue worth of storage, and creates overdraw of one residue in length, which would not look very good when combined with transparency.
    • Redesigned the cyclic fragment determination code to store a per-fragment true/false value indicating whether or not the fragment is cyclic, and requires the use of modular arithmetic when generating spline control points for NewRibbons and NewCartoon representations.
    • ClipTool Docs: moved image right
    • ClipTool Docs: Wrote html docs for clip tool
    • ClipTool GUI: minor text changes
    • autopsf: Fix a typo in the docs
    • Turned off the cycle detection and residue duplication code, since it can alter things other than the representation behavior. A better way of dealing with this will be to create parallel flag arrays that indicate which subfragments contain cyclic structures, rather than messing with the contents of the subfragments themselves.
    • Detect cyclic subfragments and duplicate the starting residue at the end, to indicate there's a cycle for reps that loop over the subfragment lists.
    • mol2plugin: Remove autotyping. When this plugin was initially written VMD didn't have anything resembling true autotyping, and we needed to offer this as an option to make usable mol2 files. Now that IDATM is around, the *right* way to do things is just write VMD's atom types instead, and if people do need the SYBIL types in a mol2, they can get them through idatm.
    • mol2plugin: Properly terminate type strings in all cases
    • dowser: Fixed a bug when counting the total number of placed waters.
    • dowser: Fixed a bug in keep_waters.
    • Cranked version number
  • VMD 1.8.6b8 (February 16, 2007)
    • Included latest Tachyon builds with HDR image format support, color normalization, and on-the-fly gamma correction.
    • Overhaul of clip tool GUI as it was still very confusing to use. Clip tool now applies to the top molecules only, but it caches the clip planes for each molecule allowing the user to go back and forth between molecules and tweak them individually.
    • fixed error return in pbeqplugin
    • eliminated unused variable in psf plugin, and took out the remnants of the experimental CG-friendly parsing that did cause problems in testing with various legal PSF files.
    • eliminated unused variable in vtfplugin
    • applied Axel Kohlmeyer's patch for the LAMMPS plugin this patch fixes a few flaws in the current implementation. - there should be no c++ style comments in a .c file. - using the atom number for an atom name is wasteful, can easily overflow VMD's hash tables and provides an information that is already available for a fraction of the memory needed. - the allocated atoms structure is cleared and proper default names are supplied for required elements. this patch also adds support for zlib decompression (i.e. transparent reading of .gz files without having to go though decompressing to a temp file or reading from a pipe). drawback: non-compressed reading is slower.
    • Applied Axel's patch to create an artificial dependency for FileRenderList on config.h, so that when new configuration options are used, FileRenderList will be recompiled. (e.g. when LIBTACHYON/LIBGELATO are specified)
    • Added a new "-withradii" parameter to the "measure minmax" command to optionally calculate the bounding box that encloses the entire extents of the molecule, rather than just the atom centers.
    • Improved the performance of measure_minmax() by more than a factor of two by using local variables within the minmax test loops and avoiding stores to potentially aliased pointers.
    • Added a new radius parameter to measure_minmax() so that the fully enclosing bounding box can be computed when atom radii are provided.
    • eliminated uninitialized variable warning in libalchemify
    • Added Jerome's Tcl-based bindings to libalchemify
    • Corrected the "measure dipole" conversion from elementary charge Angstroms to Debye. 1 e*A = 4.80320440079 D
    • Added the new plugins to the win32 installer
    • Added the volumetric field lines representation to the win32 builds
    • Eliminated the DTRICOLOR display command from all renderers. The only remaining use was in MoleculeGraphics, which now emits trimeshes etc as necessary.
    • Made the AtomColor scene member private since Displayables no longer need to access it.
    • Representation drawing routines now use the internal Displayable scene pointer rather than grabbing around for it.
    • Displayables now carry a scene pointer so they don't have to beg for scene access from AtomColor or other classes to get access to various things.
    • Added additional safety checks on atom namelist indices, since VMD now uses more efficient (thus more minimalistic) storage on the assumption that a normal molecule will not contain more than 32,000 atom species. These tests will prevent a badly-written molfile_plugin from producing a corrupt molecule data structure due to integer wraparound etc.
    • MolFilePlugin now aborts loading a structure if namelist indices overflow, or other data structure inconsistencies arise, to prevent bad data from being used. Ideally, this would trigger the entire molecule to be deleted, but the initial implementation just halts the loading process.
    • Added Leonardo to the CVS commit emails
    • dowser: Fixed a bug in keep_waters in the dowser plugin.
    • Added dowser screen shots
    • Added dowser to the master plugin makefile
    • Added dowser plugin to the extensions menu
    • Added initial dowser plugin docs and DB files
    • cionize: Use the correct units this time for grid output (kT/e)
    • dowser: Added initial dowser plugin files
    • namdenergy: Added pme/extsys to command line help
    • autopsf: Avoid forcing changes to overwall width because of the molecule menubutton
    • namdenergy: Clarify purpose of the steplength switch
    • Disable clipping planes before drawing the background polygon when using the gradient background mode.
    • autopsf: Add some more informative frame titles as suggested by Emad
    • molefacture: Select angles by picking three bonded atoms. Improve performance of angle and dihedral changing on large systems. Remove some unnecessary output
    • namdenergy: Properly plot with force output
    • Cranked version number
  • VMD 1.8.6b7 (February 9, 2007)
    • molefacture: Allow automatic selection of bonds by picking two atoms
    • Added a new "Acrobat3D" rendering mode to allow people to use the Acrobat3D capture utility to grab scenes from VMD. The current 7.0.9 version of Acrobat3D and it's capture utility fail to capture several of the optimized OpenGL geometry rendering paths used by VMD. When activated,the new rendering mode sacrifices display performance in exchange for correct geometry export to Acrobat3D. One would not want to use this rendering mode for anything other than a capture utility like the one used by Acrobat3D.
    • Added M_PI macro test for Windows builds of the GelatoDisplayDevice classes.
    • Fix autopsf's handling of disulfides in a couple extreme cases
    • Cranked version number
  • VMD 1.8.6b6 (February 6, 2007)
    • Eliminated unnecessary duplication of GLSL shader state update logic.
    • Made the GLSL Blinn halfway vector calculation more readable, and made it correct for any viewing frustum, so long as the eyePos member is correctly updated for other viewing frustums.
    • partial implementation of default text rendering routine
    • Updated the Hershey font code to allow external callers access to the handle structure, etc.
    • Added non-OpenGL Hershey font rendering routines for the FileRenderer classes.
    • Gelato scenes now use the same near/far clipping planes that VMD uses for OpenGL display. The default Gelato clipping planes have such a large value range relative to the VMD coordinate system that it caused trouble when rendering some scenes with orthographic projections. The exported Gelato scene's near/far clipping very precisely matches the clipping that occurs in the VMD OpenGL renderer. Any residual difference can be easily be handled by tweaking the display parameters prior to exporting the scene to Gelato.
    • Removed the more costly on-the-fly variation of Blinn's Phong highlight equations for GLSL rendering, leaving only the version that uses precalculated halfway vectors supplied as fragment shader uniforms.
    • Enable the Blinn variation of the Phong specular highlight equations for GLSL by default, for better matching with the normal rendering mode.
    • Added pre-calculated Blinn halfway vectors to the lighting-related GLSL shader uniforms exported by VMD, allowing GLSL rendering to precisely match the normal rendering mode, and gives a nice 10% to 20% speed boost on many GPUs.
    • Updated and completed a not-quite-functioning version of the volume texturing implementation for the Tachyon.
    • Added comment tokens to the volume slice and isosurface representations to make exported scenes more human readable.
    • Added a new Tachyon-specific square() method now that the new versions require vertex winding order and surface normals to be consistent with each other.
    • Fix volslice display command name typo
    • Added a default FileRenderer routine for drawing the volume slice plane
    • Added -debye and -elementary dipole moment units flags to the "measure dipole" command for improved ease of use. Default mode remains -elementary for backwards compatibility.
    • Updated VMD movie maker documentation with notes about POV-Ray 3.6 read+write config lines.
    • Added attribute setting of Gelato's near/far clipping planes for saner default values for the camera arrangment used by VMD. Larry recommends eliminating this methodology and switching to defining this per-camera rather than globally.
    • Added comment at the end of volume textures emitted to the Tachyon scene to make the file slightly more human readable.
    • Added first rev of the volume texturing export code for Tachyon
    • sorted TachyonDisplayDevice methods for better readability
    • Added new virtual methods to the base FileRenderer class for defining, referencing, enabling, and disabling volumetric textures in the various subclasses.
    • correct a cut/paste typo in the volume texturing comments
    • ordered the FileRenderer methods more in line with the header, and added comments
    • Cleaned up the FileRenderer header while preparing to add methods for handling volumetric texturing.
    • Added switch case to FileRenderer::render() for handling the the DVOLUMETEXTURE display command
    • Flip the surface normals sent to Tachyon since the vertex winding order is that of OpenGL (right hand coordinate system) whereas Tachyon is left-handed. This facilitates enabling the new surface normal implementation in Tachyon, which corrects bad looking surfaces that can otherwise result from backward facing normals on triangles that use interpolated vertex normals. Similar in principle to the GLSL or RenderMan frontfacing tests.
    • autopsf: Remove some unnecessary output messages
    • psfcheck: Make sure we clean up properly on fatal errors
    • Added a NURBS based cylinder primitive to GelatoDisplayDevice
    • Move the camera position translation prior to the light declarations, so that if one converts directional lights to positional lights they end up where one expects. (for Gelato and RenderMan)
    • Prevent the C++-linked Gelato renderer from being added to the menus unless the GELATOHOME environment variable has been specified. This is a minimal sanity check to prevent users from heading down a doomed path. We may also want to run some sort of validation check of readability of the shaders the Gelato export code will want etc, prior to registering it in the rendering menu.
    • Added the version number of VMD into the comments of the exported Gelato PYG file for better bug reporting etc.
    • Cranked version number
  • VMD 1.8.6b5 (February 1, 2007)
    • Eliminated unused variables in the tachyon mesh export routine.
    • Added comments to the scene file header generated by VMD.
    • Fix text formatting bug in Tachyon trimesh export.
    • eliminate an unneeded multiply in the fallback trimesh triangulation code
    • Enable the new mesh and tristrip commands in the Tachyon export code now that test builds are in place and ready for some exercise.
    • Added text to the ATI driver bug feature limitation message that tells the user how to force-enable full functionality in case they have an ATI card with a correctly functioning Linux OpenGL driver. We still have to leave the default execution path defaulting to safe-but-slower methods because a very large number of Linux laptops using ATI chipsets have serious driver problems even after several years. The problems range from GLSL compiler internal compiler stack overflows, to vertex array processing bugs. The ATI drivers on Windows and MacOS X are significantly more reliable, so this code path isn't currently necessary on platforms other than Linux.
    • Added the compiled-in Gelato interface to the list of renderers.
    • Fix cut/paste remnants from the original source files with global search replace.
    • Added -KPIC to IRIX6 64-bit build flags to see if it cures the bug with the psfgen plugin cratering when it tries to access Tcl routines through the executable.
    • Added NVIDIA Gelato C++ linked rendering interface to the configure script.
    • Added first rev of directly-linked (C++ interface rather than PYG files) NVIDIA Gelato renderer library interface. (same general implementation design as LibTachyonDisplayDevice)
    • pretty up LibTachyonDisplayDevice header
    • molefacture: Guard against potential weirdness with angles and dihedrals in rings. Make valences update properly when lowering bond orders. Update electron pair drawings after dihedral rotation.
    • Added Gelato, RenderMan, and Tachyon improvements to the README.
    • Minor correction to the Gelato lighting export code to make output images match VMD more closely.
    • Minor correction to the RenderMan lighting export code to make output images match VMD more closely.
    • Added Gelato-specific triangle strip and mesh rendering methods for greatly increased information density in the ASCII PYG file exporter, resulting in improved I/O performance.
    • Added new vertex array primitive to tachyon. Allows any number of tristrips or trimeshes to be built from the same vertex/normal/color block, and allows them to have different material properties. VMD doesn't actually need quite that much flexibility, but the new primitives reduce scene file sizes for large surface, isosurfaces, and ribbons by a factor of ten in early testing. The internal Tachyon data structures haven't changed, so there's no effect on rendering time or memory use during rendering, but parsing is at least 7 times faster in early testing.
    • Fix spelling typo in error messages for set/getbondorders commands
    • Fixed single-threaded branch of the bond search code which had been skipping the work.
    • Added proper handling of solid background color to GelatoDisplayDevice
    • Added autoimd pdf files for those that can't auto-build them (e.g. windows)
    • Cranked version number
  • VMD 1.8.6b4 (January 26, 2007)
    • Updated APBSRun documentation with link to the new tutorial directory
    • prevent the gradient background polygon from picking up any leftover transparency/blending/stippling state from last redraw.
    • Updated raster image generation text in the user's guide
    • updated docs with basic Gelato rendering export info
    • Gelato exporter will use it's own line() method
    • Added recent developments to the README file, and highlighted the new ambient occlusion shading via Tachyon, and the new support for NVidia's Gelato renderer.
    • changed URL for Tachyon page
    • Added Gelato aspect ratio comment
    • Implemented the orthographic projection mode for Gelato, and tweaked the lighting constants for better matched lighting in the exported scene.
    • Tweaked RenderMan RIB lighting constants for better matched lighting.
    • Added the quad primitive and fixed one of the mesh primitives for GelatoDisplayDevice.
    • Avoid emitting unnecessary trailing zeros and decimal points in RIB files.
    • Applied Justin's patch to reduce the rate of the FPS text so it doesn't flicker so much.
    • Misc cleanup of FileRenderer subclasses. Put internal state clearing routines into reset_vars() methods, and generally prettied up the header files a bit.
    • Clear cached tachyon clipping state between renders, and report any leaked clipping group blocks at the end of the scene.
    • First version of the Gelato scene export that works reasonably well. We should spend some time making the scene file more compact, and replace the use of triangulated geometry with patches, but this is a good first step.
    • Added GelatoDisplayDevice to the build.
    • Added the initial version of GelatoDisplayDevice based heavily on RenderManDisplayDevice.
    • namdenergy: Fixed creeping firsttimestep parameter as pointed out by Jim, and added some error handling for file writes.
    • Fix remaining color tracking bug, and remove debugging output from RenderManDisplayDevice.
    • Fix two more small material bugs, and correct the syntax of the point array export in RenderManDisplayDevice.
    • Fixed a material state caching but in RenderManDisplayDevice.
    • Minor updates to the RIB generator to improve the consistency of shading between the interactive OpenGL views and the rendered RIB output, tested using Gelato and a patched version of Ribelato.
    • cgtools: Fix bug with doing multiple RCG steps in one session
    • Cranked version number
  • VMD 1.8.6b3 (January 23, 2007)
    • solvate: Added alternate solvent to gui Updated docs figure
    • revert to builds on sundemo now that the compilers are fixed.
    • solvate: Added use of arbitrary solvent, and command line interface for this feature.
    • switch solaris builds to asuncion while sundemos compilers are fixed.
    • Use the darker "Blue2" (colorID 23) for the default gradient background on the bottom edge.
    • Added compile time check for the GL_GENERATE_MIPMAP_HINT macro
    • Disable GLSL shaders while drawing the background gradient polygon
    • Fix a material parsing bug in the C-based parsing routines
    • molfile plugins: Added -fPIC flags to gcc based target platforms which were missing them since it has become a requirement due to changes in the runtime systems for SELinux etc. Added -KPIC to the various Solaris targets since the newest compilers now have a different link map address layout, and the new default behavior generates ABS44 44-bit link maps unless you specifically specify -KPIC.
    • Added README notes about measure fit and sel move performance improvements
    • Added Axel Kohlmeyer's "Translucent" material
    • Applied Justin's patch rewriting MatrixFitRMS() to achieve much higher performance, between 25% to 100% faster.
    • Applied Justin's patch to improve the performance of $sel move commands by replacing full matrix multiplies with two special case paths that do the common case of rotate+trans, for "all" and for partial selections respectively.
    • inlined distance2() suggested by Justin
    • Changed the order of operations in the vertex shaders for the standard and sphere shader so that the gl_Position assignment is the last thing done in the shader. This works around a compiler bug in the Apple GLSL implementation for Intel GMA 950 chipsets on the new Macs.
    • cionize: Properly label units on grid output
    • cgtools: Update docs with new function
    • cgtools: Added prepare_water proc for giving waters consecutive residue numbers to make coarse-graining easier (optionally, it will also assign those numbers based on spatial location).
    • Properly label units on grid output
    • Update cgtools docs
    • Rewrite of the annealing protocols for CG reversal. Still undocumented since we need more internal testing of the methodological soundness, but they do what they're supposed to now.
    • Added initial support for gradient backgrounds to VMD.
    • Fix the DisplayColor class to correctly handle creation of the "Display" color category, adding it only when it hasn't been created already. (thus fixing a color change detection bug with all but the first instantiation of the DisplayColor subclass).
    • Make the default stage colors less frightening, if people really want green and blue, they can set it back that way.
    • pretty up the title by increasing the tessellation a bit.
    • cionize: Added XYZDIM to in-program help
    • autopsf: New smaller figure for autopsf docs
    • autopsf: Fixed a small typo that prevented deletion of lists of chains
    • autopsf: Fix counting of residues for some trouble cases
    • Pretty up the Renderman RIB export code, to prepare to add the ability to support NVidia's Gelato (via the Ribelato plugin).
    • Cranked version number
  • VMD 1.8.6b2 (January 18, 2007)
    • Added texturing hints to the volslice rep.
    • Set/reset texturing quality hints during DVOLUMETEXTURE
    • Added glHint() call to request high quality mip map generation
    • Moved printing of picked atom information into PickList and out of the text interpreter class.
    • Moved the initialization and default colors/materials/etc parsing from the text interpreter class into the new startup modules.
    • Fix a bug that allowed the 3-D texturing state to be left on after a volume slice representation was added, when the code for the volslice rep was redesigned to use the cached texture map.
    • Updated the UI to add a "High" quality slice option, which at present is just the same bilinearly filtered texture slice that we use now, but gives the opportunity to add bicubic filtering for higher quality texture sampling.
    • pretty up error message
    • Eliminate type conversion warnings from msvc
    • updated msvc project with new source files
    • Increased default minimum CAVE/FreeVR shared memory pools to 512MB up from the old default of 256MB.
    • Fix call to CAVEConfigure() for new argument passing mechanism.
    • updated msvc project with new source files
    • Updated FreeVR linkage for version 0.5g library names
    • Eliminated unneeded text echo in the Tcl interpreter.
    • Updated copyright headers
    • Added new vmdmain source file to the build
    • Applied Justin's patch to refactor the startup routines to make VMD buildable as a static/dynamic link library, enabling it to run standalone or as a loadable module in scripting languages like Python.
    • Updated Win32 installer data
    • Justin's patch to eliminated the unnecessary queue_events() method and fix a missing delete on the Fl_Gl_Window instance.
    • Cranked version number
  • VMD 1.8.6b1 (January 9, 2007)
    • Added comments about display list size variable and current limit on adding single display commands of over 2GB in size.
    • Added unsigned long to the Inform class operators.
    • Change more integer types used for display list memory pool sizing from 32-bit to 64-bit types.
    • Fixed VMDDisplayList size member variables to be "unsigned long" since huge molecules (e.g. 72 million atoms) can result in multi-gigabyte display list sizes.
    • Print warnings if display list memory allocations fail.
    • Fixed distrib targets for idatm and moltoptools
    • Added parens on truth values to please gcc
    • Added new two-radius cone primitive to RadianceDisplayDevice implementation
    • Separated single and two-radius cone implementations into different methods so that the existing single-radius cone() methods for the ray tracers can continue to be used, but the built-in FileRenderer implementation will be used for the two-radius cases which most don't have code for presently.
    • eliminated default implementation of the pick_point() method for FileRenderer to please MSVC
    • cionize: Added ability to give arbitrary grid dimensions, and made the update routine properly respect exclusion around ions.
    • Added conversion factor to make input/output unit compatible with APBS
    • namdenergy: Added automatic detection and handling of amber topology files
    • Added moltoptools to Makefile
    • Added moltoptools package for commonly used topology analysis functions
    • idatm: Changed dependency from paratool to moltoptools
    • Converted all of the existing reps to use the pickpoint array display commands rather than generating large numbers of single pickpoints.
    • Changed the display list allocator to use a second stage minimum pool size. Many display lists only contain a couple of initial rendering state changes in them, which can be fit in a 64 byte block. The 64 byte block is now the new minimum allocation size. Once a representation needs more then 64 bytes, it probably contains much more, so the next allocation step is a 16K block which cuts down on the number of allocation calls and helps allocators pack memory in blocks that are likely to be a multiple of the system page size.
    • Added a new DPICKPOINT_IARRAY display command to store large blocks of pickpoints in a single display command. The implementation is smart in that it detects the common case where "all" atoms are selected, and rather than storing an array of all pickpoint indices to be tested, it loops over the entire range. The grouping of pick points into a single display command greatly reduces the number of commands in each display list, and also reduces the memory used per-pick point. Together, the memory efficiency improvements save over 1GB of memory when loading 37,000,000 atom test structures. Similarly large memory savings will occur in the case when loading thousands of small molecules into VMD at once, as occurs in batch mode PDB structure searches and similar.
    • Reinstated the memory pool based display list implementation which reduces the number of calls to the system memory allocator. This implementation also eliminates the contained pointer block from the triangle strip display command in favor of on-the-fly pointer computations. The OpenGLRenderer class now creates its own temp buffer for the index pointer array in the case when glMultiDrawElements() is used. Subsequent revs can also eliminate that dynamic allocation as well. Tests on an opteron machine show a 1.5x speedup in trajectory playback with lines reps, performance seems unchanged for more demanding representations.
    • cionize: Fixed a couple read/write issues for grids
    • molefacture: Fixed problem in protein builder that led to an odd atom ordering
    • namdenergy: Fixed intermittent problems when switching between molecules
    • namdenergy: Added dielectric constant to recognized parameters
    • molefacture: Fixed the "molefacture won't restart" bug
    • idatm: Minor bugfixes, and added the apply_types function
    • molefacture: Added idatm typing routine and topology file writer to molefacture gui
    • autopsf: Updated docs to cover: -Added "Regen" option to regenerate angles/dihedrals (needed when cmap and patches mix) -Rearranged the gui to make it more vertically compact -Changed patch syntax in text mode to make it more intuitive
    • Reverted the display list code to using a linked list structure, as the new code only did shallow copies, invalidating any contained pointers in the display commands holding triangle meshes, arrays of points, etc. The pool based memory allocator is still a good idea, but it can't be used with resizeable blocks unless we reimplement the display commands to eliminate storing pointers in the data blocks.
    • silence compiler complaints about unhandled switch cases
    • force initialization of a/b/c/alpha/beta/gamma to please the compiler
    • Migrate system includes out of VMD headers that are heavily included and are not strictly necessary
    • rename conditional inclusion test macro to indicate it's a template
    • conditionally redefine M_PI only if necessary
    • Add idatm to makefile
    • Cranked version number
  • VMD 1.8.6a13 (December 15, 2006)
    • Add idatm to the plugin tree
    • more explicit initialization to please purify
    • Added more explicit initialization, shore up win32 display device so it more closely follows the X version.
    • Finished bond guessing. IDATM now seems to work as designed with the Meng/Lewis types; needs testing on a wider variety of structures, and uff/opls integration
    • Added a few more explicit initializations to please purify
    • Always compile the VMDThreads source files even if threads are not enabled, so that the various stub functions are still available for linking and runtime tests.
    • fix comments in cone disk drawing code
    • Tweaked UIText initialization and check_events() calls to please valgrind's picky tendencies.
    • pretty up the alignment arithmetic and add comments, increased the default allocation to 128 bytes, and eliminated a compiler type conversion warning.
    • Pretty up the AtomRep initializers, adding a new UNUSED macro to allow explicit initialization but without compiler warnings or complaints.
    • Updated Win32 installer
    • Cranked version number
  • VMD 1.8.6a12 (December 13, 2006)
    • Change registry key for MSVC builds to 1.8.6 install directory
    • Fix uninitialized length vector.
    • Added VolumeTexture source files to the build
    • Added new vmd_realloc() and vmd_resize_alloc() functions for managing shared memory segments used by Scene and renderers. The vmd_realloc() function pointer should be set to NULL in cases when it is not available, which means that all potential callers must check the function pointer before use. The vmd_resize_alloc() function implements a safe interface for callers to use to resize shared memory allocations, but requires that the caller know the old block size, so that a new allocation and matching copy can be done in the case that vmd_realloc() is NULL.
    • Applied Justin's patch to migrate the bulk the volume texture generation code into a new class, and improve the volume texture display commands to store 3-D texture maps in Scene shared memory, and to allow caching by the renderer, yielding tremendous performance increases, particularly in common use cases such as when used with the volume slice representation. Updates to geometry (i.e. change in volume slice offset, or isovalue for a surface rep) are now much more interactive when coloring by volume, because the texture map does not have to passed over the bus each time.
    • Only compile the console code when VMDTKCON is defined, otherwise the Win32 build will get link errors.
    • Applied Axel's patch to allow TkCon to act as the main VMD console when VMD is compiled with the TKCON option (i.e. with the 'vmdcon' commands enabled)
    • Added Axel's patches to allow VMD to use TkCon as the main console.
    • Applied Justin's patch to make VMDDisplayList use a fairly simple memory pool with contiguous, doubleword-aligned blocks of commands, rather than the linked list of individually allocated commands used previously. Animation performance on a dual G5 Mac is around twice as fast for Lines and Points on even moderately sized systems (92k atoms), and is around 20% faster for a 600 residue protein complex rendered with NewRibbons. In addition, the VMDDisplayList interface was kept exactly the same as before, with the exception that the set_last_command() method is no longer provided (or needed). The memory pool starts out at 100 bytes and grows by a factor of 1.3 as needed. When the display list is reset, it checks to see how much of the total pool was used. If it used less than 1/4 of the total pool, it resets the pool back to its base value. This sort of pattern is based on the assumption that when animating geometry, the amount of space needed changes very little, if at all, since topology generally does not change over time. Things like lines could change because the generated geometry depends on the color; hence I wait for a drastic change that suggests that the rep has changed from something geometry intensive to something simple, i.e. from Lines to Volume Slice. It seems unlikely that animated geometry would normally change its display list requirements so drastically, since the user would tend to not want to view such a change in real time: it's too hard too visualize. The pool size could be increased to something like 20kbytes, but only if we make MoleculeGraphics and DrawForce create display lists only when needed, as otherwise this increases memory use substantially when loading the whole PDB (> 30,000 molecules).
    • Added support for renaming files if there is a name conflict when uploading to the BioFS; added a fix for "Invalid molid specified:top" when loading a state.
    • Added comment about the echo feature not being used anymore
    • Changed VolMapCreate code to use a macro rather than printf(), in preparation to conversion to using the Inform class and the vmdprintf() helper function.
    • Added comment about thread-safety and the Inform class
    • eliminated debugging printf() calls from the contour line texture generator
    • replace printf() debugging messages with use of Inform class.
    • Make the plugin loader message code use the Inform class regardless.
    • Converted plugin loader message code to use the Inform class, when VMDTKCON is defined.
    • Convert some volmap debugging/status printf() calls to append these to the Tcl command result strings
    • Updated comment about exception to increased use of the inform class.
    • Applied Axel's patch to convert various internal console and debugging status messages from using printf()/fprintf() to using the VMD Inform class, which can be redirected elsewhere.
    • Cranked version number
  • VMD 1.8.6a11 (December 12, 2006)
    • Fixed a bug added to the tool representation when the new cone parameters were added.
    • Added Axel's patch to add appropriate GCC -fno-strict-aliasing compilation flags for SWIG builds, since SWIG currently emits code causing type punned pointers otherwise. Patch also eliminates system-specific lines from Makedata.depend for improved portability of dependencies across builds
    • Applied Justin's patch adding python hotkey capability, and moving the key canonicalization into language neutral territory.
    • Updated vtfplugin with Olaf's new compression code, and other minor fixes.
    • Renamed the no-parameter polymorphic version of push() which copies the top stack item to dup() which is the more conventional term for this functionality, for improved readability.
    • Turn off chatty ring analysis messages for the time being.
    • Changed field line bounding sphere test to use diameter rather than radius
    • Adjusted the gradient magnitude range, and min/max length ranges for better usability.
    • print a "done" message for long running field line integrations, to pretty up the console a tad.
    • Added UI status feedback messages when field line integration takes longer than one second. Replaced some integer modulo operations with bit masking.
    • Changed default field line minlen to 10, and maxlen to 50
    • Added a bounding sphere test to eliminate field lines that orbit tightly around a source or sink point in the dataset, which otherwise pass the minlen tests. Any field line that has a bounding sphere radius less than minlen is eliminated. It would be better to detect orbiting field lines during the integration phase rather than later, since this would save a lot of runtime in the integrator, particularly when the maxlen parameter is set very high.
    • Added a vec_incr() routine, used in the field lines rep
    • Cranked version number
  • VMD 1.8.6a10 (December 8, 2006)
    • added VTF plugin documentation
    • fix vtfplugin to use compile-time ABI version information
    • Renamed the VTF plugin format names to "VTF xxx format" rather than "VMD xxx format", since these aren't really VMD-specific in any particular way.
    • Added the VTF plugin contributed by Olaf Lenz. This is format already used by ESPResSo.
    • Updated MSVC build with new files
    • Renamed 'rad2' member variable to prevent compilation difficulties on MS Windows due to a namespace collision.
    • Avoid int to signed char conversion to silence warnings from msvc
    • Improve field line rendering by favoring generation of the longer lines found in areas of small magnitude gradients.
    • improved the field line integrator performance some more.
    • Added the computed colors to the paperchain representation, and re-implemented the drawing routines using the triangle mesh primitive.
    • Added pick points to the carbohydrate reps, until they create their own
    • Added vec_zero() and clamp_color() convenience routines.
    • Eliminate explicit zero padding of AtomRep, reducing compiler complaints.
    • Added the latest version of the carbohydrate reps from Simon Cross and Michelle Kuttel.
    • Added DrawRingsUtils to the build.
    • Added new carbohydrate ring drawing helper routines from Simon Cross and Michelle Kuttel.
    • Updated the graphical representations window setup code to draw the window based on a width parameter. Added initial implementation of a "color" tab which will eventually be enabled, and will hold various new color controls.
    • Added field line thickness controls and cleaned up the code a bit more.
    • Updated the field lines representation to use the new DPOLYLINEARRAY primitive simplified geometry calculation, and much faster rendering
    • Added a new DPOLYLINEARRAY display command for more efficient rendering of field lines
    • Updated PSDisplayDevice for Jan's changes to the DCONE primitive, as this had not been done yet. For now we emit a warning, as the PS code doesn't draw truncated cones yet.
    • cionize: More reasonable handling of input filenames
    • autopsf: Added several safeguards to prevent users from shooting themselves in the foot; several suggested by Elizabeth.
    • Added min/max length controls to the field line controls, more testing needed
    • Prevent buffer overflows when mapping voxel values to color with a map consisting of all zeroes.
    • Added configure lines for .pyvmdrc, patch by Justin.
    • Add the axes module to the VMD top-level python module.
    • If the Python interpreter exits through EOF (i.e. the user pressed Ctrl-D), and there is no Tcl interpreter available, bounce back to Python; this fixes bad behavior in which VMD spams the console with error messages and never makes it back to a valid text interp state. Patch by Justin.
    • Fix an old bug in atomselection.macro() in which the keyword list was not NULL-terminated, causing the parser to sometimes fail.
    • Add a vmdmenu.location() method to get/set the location of VMD menus. Patch by Justin.
    • Add a PYVMD_STARTUP macro that gets used in place of the VMD_STARTUP macro if Python but not Tcl is available. This macro is .pyvmdrc on Unix platforms and pyvmd.rc on Windows
    • cionize: Fixed the origin location for volumetric output. Slightly improved documentation. Changed name of r_ion_prot to r_ion_solute to make its meaning more intuitive to the user. Updated docs.
    • Applied Justin's patch to make [segment resids ] check for deleted residues.
    • Applied Justin's patch to enable Tcl-less startup of VMD by reading the various color definitions and atom selection macros without using Tcl.
    • Applied Justin's patch to enable VMD startup without depending on Tcl.
    • Added non-escaped version of atom selection macros, for Tcl-less startup
    • idatm: Finished HAV=1 routines. CLean up some of the early typing routines. Still need to do the rechecks and bond order assignment
    • The gamess plugin now provides initial support for PC Gamess output format. However, the interface needs a bit more testing with different PC Gamess output types before I can give it a thumbs up. I've also fixed some badness and the code now properly checks the calls to strstr() that could potentially lead to segmentation faults; the plugin should now gracefully exit instead:)
    • Cranked version number
  • VMD 1.8.6a9 (November 22, 2006)
    • Updated dipwatch plugin with Axel's latest patch
    • Posted new color by displacement script in the script library
    • Posted new blink script in the script library
    • Posted the new version of pbctools to the script library
    • Posted the new version of pbcbox to the script library
    • Posted the new version of pbcwrap to the script library
    • idatm: Added main typing loop. Still need the HAV=1 and ambiguous case functions
    • paratool: Adding brackets {} to some expr commands.
    • cionize: Fixed some silly casting errors
    • cionize: Remove debug info accidentally left in last update
    • cionize: Restructuring to make the code more manageable
    • Enabled the new plugin interfaces in ABI version 10
    • Updated the new volumetric data writing code in VMDApp::molecule_savetrajectory. Revamped the order of sanity checks to pre-determine whether atomic coordinates or volumetric data exist and will be saved prior to going into the data-specific tests, so we only emit errors and warning messages when there's actually a need to. This should also be a little easier to extend for implementing trajectories of volumetric data.
    • improve error message for volume data writing with old ABI
    • Added Jan's truncated cone rendering patch with some minor fixes. This allows drawing of cones that are capped on both ends, with specified base and apex radii.
    • Cranked version number
  • VMD 1.8.6a8 (November 15, 2006)
    • Added VMD 1.8.5 plugin update
    • sorted order of plugin improvement list
    • added BRIX and XYZ plugin update info
    • Updated the README with recent plugin updates
    • Applied Justin's patch to add support for reading and writing binary DX grid files.
    • Applied Justin's patch to enable writing volumetric data sets
    • Updated the molfile plugin header documentation pertaining to the file type guessing algorithm.
    • Filetype guessing patch from Justin. This patch changes the algorithm for guessing a filetype based on the filename extension in order to give priority to plugins that list the filename extension first in their list of supported types. Before this patch, for example, the ccp4 plugin, which lists "map" as its third supported type, would override the map plugin, which lists only "map" as its supported type, simply because the ccp4 plugin gets checked earlier in the plugin list. With this patch, all plugins are checked for potential compatibility, and the first one with the minimum rank will be the one chosen.
    • massive cleanup of cionize routines for strict ANSI C conformance, various coders are frequently led astray by the permissiveness of gcc....
    • cionize: fix incorrect function prototype
    • please macosx by updating the energythread() prototype.
    • cionize: Added test for macosx and irix
    • Updated makefile to include building cionize
    • Initial import of cionize into the VMD plugin tree
    • Improved the debugging output from the plugin loader at runtime.
    • Docs: fixed typo in volmap inline help pointed out by Marcos
    • Applied updates to the GRASP plugin which allow it to read version 2 files and add the beginnings of vertex coloring by potential values and other optional fields contained in the file. The rendering code doesn't include the coloring yet, and the processing is incomplete, but it's a good start to processing these files better. The original version of this patch was written by Angel Jimenez, and Luis Rosales Leon.
    • Applied Justin's UHBD plugin patch to detect and read binary-format .grd files of any endian produced by UHBD.
    • Added ".brx" to list of extensions for the brix plugin
    • autopsf: Added alias for zinc
    • Docs: fixed typo in volmap inline help pointed out by Marcos
    • Docs: Updated a citation
    • commented out a puts. oops.
    • Updated README with recent plugin updates
    • Cranked version number
  • VMD 1.8.6a7 (November 7, 2006)
    • Added Axel's patch to prevent segment names from overflowing the PDB segment column width.
    • Added Axel's PQR plugin patch to add support for CRYST1 records
    • switch Solaris builds to sundemo due to cooling outage
    • Updated the README with preliminary VMD 1.8.6 info
    • Fix a memory leak in the sidechain selection
    • Updated the structure analysis "unusual bond check" code to eliminate traversals across chains/segnames, to match the behavior of the code that walked the pre-built residue bond lists and eliminate spurious warning messages.
    • Updated the fragment determination code with corrected comments, and added a missing test for matching chain/segname membership when traversing the structure marking bonded residues with the fragment ID.
    • Added "Usernames are not shown for the All User Test Project" text in the All User Test Project user list space.
    • Raise the limit for molefacture to give a warning about number of atoms from 50 to 200 (going higher is less bad than before, but you will start to notice the updates) Make sure the oxidation array is reinitialized for a new molecule
    • Replaced the nucleic acid subfragment recognition code with an alternative implementation which is less dependent on atom names in the starting residue. It still traverses the fragment by following recognized end atoms, but this should be less problematic. More work and testing is needed, but this should alleviate some of the existing problems.
    • Make NewRibbons use carbons for control points since we usually lack phosphates in the terminal residues
    • cgtools: gui tweaks. can't select Next button without choosing an option. added a couple of columnspans on the rev cg window
    • molefacture: Fixed a bug where deleted atoms were sometimes not properly accounted for in the bond and angle lists Some performance improvements on big molecules by avoiding unnecessary calls to update_openvalence
    • molefacture: Fixed problem with helper window not being raised properly if it already exists
    • Preliminary elimination of per-residue bond storage. The code is set to conditionally compile either way so I can continue to run performance tests and make sure there aren't any reasons to keep the old code around. This will reduce the minimum per-residue memory consumption to about 70% of what it used to be. Structure analysis time for a 37 million atom water box differs by only 2 seconds, so it's a good time/space trade-off.
    • Added a comment to the residue structure about the fact that we could reduce memory consumption considerably by eliminating the residue bonding data, which is currently only used within the BaseMolecule class. This would save a lot of memory for systems with large amounts of solvent.
    • added in the second half of the gui. Now, when run, you can choose whether you want to go from all atom to coarse grain (what existed in the gui before) or going from coarse grained back to all atom, given the appropriate input. From testing on a non simulated system, original input pdb and aa->cg->aa pdbs are at least very similar. So, the gui doesn't seem to be messing anything up. There's a bit more code duplication here than I want, particularly around the areas that let you chose a loaded vmd molecule from a drop menu, but I'll attack that issue later.
    • cleanup of find_subfragments() in prep for more nucleic acid handling improvements
    • Cranked version number
  • VMD 1.8.6a6 (November 1, 2006)
    • moved the code that checks for new trajectory frames resulting from the I/O queue and IMD into a new get_new_frames() routine, which can be called either by prepare(), or by VMDupdate().
    • Changed the update logic to drastically improve multi-thousand file loading performance when display update is set to off. Since trajectories and IMD timesteps are loaded in the background as a result of prepare() calls, the new code has to loop over the molecules pumping mol->next_frame() on each of them. The IMD case has to be handled still, but the plain trajectory case is adequately handled by calling next_frame(). The thousands of calls to scene_resetview_newmoldata() are now ignored in the case when display updates are disabled. When display updates are enabled, a ResetViewPending flag is tested to see if the view still needs to be reset prior to preparing for rendering.
    • molefacture: Added topology file writing proc, but not integrated with the gui yet Known limitation: Bonds between two different residues will be left out of the topology file. This can become an immensely complicated situation, and it seems reasonable to require user input for such cases. The bulk of the legwork is still done by the top file writer
    • VolMap: fixed volmap name formatting strings to completely remove the temperature references
    • Put in proper version number
    • VolMap: Minor cleanup and fixing of the -T parameter parsing
    • Fixed an uninitialized temperature bug introduced with the adjustable temperature option.
    • Switch back to just using resonance structures -- formal charges aren't really compatible with partial bond orders
    • Make sure dihedral marks get deleted under all appropriate circumstances
    • Declared signed char types explicitly in the residue data structure.
    • Reduced per-atom memory usage by another 4 bytes, and specified the signed char types explicitly to prevent any problems with chars being used as array indices.
    • fix default value for minimum gradient magnitude tests
    • improved the early-exit tests for the seed generator so we don't necessarily pass through the whole volume before adjusting the stepsize.
    • molefacture: Deleted the function that caused the trouble yesterday, just so no one can shoot themselves in the foot with it
    • changed the order of the field line drawing and integration operations so that it isn't possible to draw a vertex that has hit a critical point, source/sink, or has gone out of bounds.
    • more position test tweaks for gradient interpolator
    • corrected default GUI behavior for the volume slice rep and the field lines rep, updated AtomRep values for the field lines rep, and did more cleanup on the field lines integrator loops
    • adjusted default gradient critical point cutoff parameter, removed some redundant tests from the integrator loop, and updated comments
    • more tweaks to the position tests in the gradient interpolator
    • Returning NAN for out-of-bounds gradient works well too, so we'll do that for consistency with the voxel sampling routines.
    • Changed the gradient interpolator to return zero values for out-of-bounds coordinates, and fixed a bug that was preventing the bounds test code from having an effect.
    • Changed the seed point generator to auto-limit the number of seed points to 50,000 or less.
    • Force the field line seed point gradient range to 0.1 at a minumum.
    • further improvement of the field line integrator loop, and tuned the default integrator step size for better performance.
    • start cleaning up the field line integrator vector operations for better performance
    • Added a couple new vec routines that will simplify the field line integrator code.
    • Cranked version number
  • VMD 1.8.6a5 (October 25, 2006)
    • fixed autopsf destructor crash
    • enable the field lines representation by default for the time being.
    • Separated the seed point generator from the field line drawing, so that we can implement other seed point selection heuristics as well.
    • changed slider name to be more indicative of what it's controlling
    • Added more gradient magnitude tests to cull field lines that are too short when they run into a critical point or encounter a strong gradient. Added code to integrate in both directions, and updated various comments.
    • Changed the field line seed point selection code to use an interval of interesting gradient magnitudes for selecting seed points, so that we pick seed points that give longer and more interesting field lines. Added more logic to cull short field lines that run into critical points, run off the edges of the box, or are otherwise fairly useless. Added code to allow field lines to be colored by the scalar data values as well.
    • More comments and ideas for stream line renderer
    • Added some comments about the field line integrator loop
    • Revert the bond search code to using the IS_HYDROGEN atom name string test macro rather than the atomType member to detect hydrogens, since that information isn't usually available when the bond search routine runs. (atom type field is reset for hydrogens after structure analysis is complete)
    • molefacture: quality of life improvements -- most notably, fixed problems with the spheres indicating angle and dihedral movement
    • volmap: Added teperature tag to the dx file header for pmf ligand maps. It looks like this: # VMDTAG TEMPERATURE 310 Kelvin
    • Initial import of idatm, an implementation of the autotyping algorithm of Meng and Lewis (JCC 12(7) 1991). Not finished yet, but I wanted to be able to access it from CVS. It will eventually be called by molefacture and possibly paratool
    • Made the autopsf destructors handle extremely large data sets better
    • Added code to color field lines by distance from the seed point, to aid in testing and debugging.
    • fixed a typo in the grid bounds test
    • start removing various debugging code from the field lines
    • Field lines code now makes a picture, though the choice of seed points is bad.
    • Added volume gradient interpolators and cleaned up more redundant code here and there. Once the cleanup has progressed further, it would be nice to work on making VolumetricData and VolMap more consistent with each other, so that they can be refactored to eliminate duplication at a later time.
    • eliminated redundant coordinate transformation code
    • added vec_lerp() routine for use in gradient interpolation calculations
    • eliminated old constructor
    • moved the volume gradient calculation routines into the VolumetricData class where they belong, added a new constructor for use by BaseMolecule, and removed the corresponding code from BaseMolecule.
    • Added comments about what the old voxel accesors are doing in with the coordinate shift.
    • Eliminated entirely redundant voxel index computations in VolumetricData::voxel_value_from_coord()
    • moved the gradient accessors and macros out of Isosurface and into the VolumetricData class/header where they belong.
    • cleanup volumetric data header
    • Added gradient query routines to the volumetric data class
    • cleanup, prepare to add gradient sampling functions
    • Added option -T to the volmap command in order to specify the temperature for volmap ligand.
    • paratool: Forgot to add procs getswitch and getargs in the previous commit. They are parsing $args for -xxx switches and options.
    • readcharmmtop: Made topology reader case insensitive.
    • paratool: Fixed a number of smaller bugs pointed out by Jacob Poehlsgaard. Stripping rings that enclose other rings during ring detection.
    • qmtool: Made the Gaussian zmatrix parser aware of geometries being defined by both cartesians and Z-matrix. Cartesians can be geneated from Z-matrices. Works in my test cases but it's not well tested.
    • readcharmmpar: Fixed bug that screwed up params for some types with more that on line of comment.
    • Added placeholder field line integrator. Still need some support routines to query interpolated gradients etc, but this is a good first step..
    • implement loop which will contain the field line integration logic
    • crank up the default field lines seed threshold tremendously
    • fix field lines atomrep param query
    • Increase range of seed slider for testing
    • Added field lines rep to the no-timestep case
    • Mark field lines reps as volumetric
    • fix missing break in field lines case statement.
    • Added initial field lines parameters
    • Added some placeholder field lines controls
    • draw field lines when compiled with the field lines code enabled.
    • Updated the point-based isosurface methods to use the cell_axes() method of the VolumetricData class (fixing an off-by-one cell length scaling bug) and added an initial placeholder for a field lines representation, with some prototype seed display code.
    • Made the cell_lengths() and cell_axes() methods const.
    • molefacture: Changed the bond orders in the acids
    • molefacture: Fixed a bug that occurs when you start a new molecule when the old one had odd oxidation states.
    • Isosurface code now uses the cell_axes() method rather than calculating these itself.
    • Added a new method to calculate the cell axes
    • updated the cell length calculation to return zero for axes with dimensions of 1.
    • cgtools: added some error checking to the final 'build' button
    • cleaner cell side length code
    • fixed name of the unlit point array variable to reduce confusion when reading the unlit point isosurface code
    • molefacture: Cleaned up a couple unnecessary bits
    • Added CG builder to the menu of modeling plugins
    • Eliminated the old orthogonal-only texgen code since the new code that handles non-orthogonal data has been in reliable service for a long time now.
    • Updated the gradient calculation code to correctly scale for non-uniform cell side lengths, and added a comment about the gradient calculation being insufficient for non-orthogonal datasets. (both items previously brought up by Justin)
    • added helper function to calculate cell side lengths, used by gradient calculation routine
    • first version of a cg builder gui. Doesn't do a whole lot yet. Just lets a user add cg database files and then runs the apply_database routine. Lot more that can be done with it.
    • volume gradients are no longer pre-normalized, as the shading code now does this for itself.
    • added more source comments
    • Added a note about the dangers of recursive graph traversal in the ring processing code.
    • Fix two small memory leaks in the carbohydrate ring finding code
    • Added carbohydrate ring drawing code to the build.
    • Added carbohydrate ring drawing code by Simon Cross and Michelle Kuttel.
    • Added the next revision of the carbohyrate analysis and rendering code by Simon Cross and Michelle Kuttel.
    • Updated the SDL OpenGLDisplayDevice::init() params to match the others.
    • Changed the fragment traversal code to use a smaller flags array for improved performance.
    • Reduce size of temp flags array used by the residue traversal code.
    • misc cleanup
    • Fix flags memory leak in residue traversal code.
    • correct comment text
    • Changed BaseMolecule::find_backbone() to assign the backbone types with a single pass over the atom array.
    • Cranked version number
  • VMD 1.8.6a4 (October 13, 2006)
    • Added crude hack which will become the isocontour slice drawing code based on the marching squares algorithm.
    • cranked version of lammps dump reader plugin
    • Applied Lutz Maibaum's patch to improve the behavior of atom assignment in the LAMMPS dump reader plugin.
    • Updated the Win32 builds with the newly added remote control/collaboration class, the multi-platform threads code (not yet win32-threaded), and the new "user" picking mode.
    • Updated scripts to use the colorinfo commands rather than hard-coding the color ranges.
    • Added John Robinson's mutate_res script to the script library
    • updated pbcbox/pbctools/pbcwrap docs with new files from Olaf
    • Swap the order of the width and height parms to reduce user confusion.
    • Updated CHARMM 31 expanded format PSF reading code to correctly read the atom type field. Updated comments with more complete format information.
    • Applied Axel's patch to make xyzplugin output element information when available.
    • Added fortread.h dependency for psfplugin.
    • eliminated extra NUL terminations in psf reader, in the cases where the new whitespace removing string copy are used.
    • replaced strncpy() with Axel's whitespace removing version.
    • fortread.h: Axel's updated strnwscpy(), and corrected comments.
    • Fixed up parsing of CHARMM PBEQ map files by adding in some reads to skip past the Fortran length records. Turned off various debugging messages and commented all of the trickier stuff.
    • ccp4plugin: remove old test code
    • Added PickModeUser source files
    • Added PickModeUser
    • Added Axel's strnwscpy() routine for stripping whitespace while copying Fortran string fields
    • Added more comments to the new pbeqplugin
    • First rev of a CHARMM PBEQ potential map reader plugin
    • multiplot: Removed deinsectification output :-) Fixed bug that would interpret negative numbers as options
    • paratool: fixed typo in user's guide
    • multiplot: Improved the set of predefined colors, so that ths resemble each other less. Added command $plothandle draw ?options? It draws arbitrary item into canvas. The item can be one of the items defined in Tk's canvas command (arc, bitmap, image, line, oval, polygon, rectangle, text, window). The options are the same as for the corresponding canvas create command (they are directly passed to canvas create). Don't dare to ask me about these options, read the Tk manual! For your convenience I have added wrappers for the oval and rectangle items where you can specify the center coordinates instead of the two opposite corners of the bounding box. These two additional items are called circle and square. The size is controlled by the additional flag -radius (which in case of square denotes the half side length).
    • biocore: Fixed "getUserOfSelectedState", which fixes listing states by user.
    • Fixed a typo that prevents the user from overriding the command string in the GUI.
    • eliminated unused uniforms from the sphere shader
    • molefacture: Fixed some nastiness when working with deleted atoms -- the atomlist was sometimes getting hosed
    • force the molecule to be regenerated when the bonds have been recalculated.
    • Added a new 'mol bondsrecalc' command to force recalculation of bonds based on the current timestep.
    • Cranked version number
  • VMD 1.8.6a3 (October 4, 2006)
    • Allow the user to override the number of CPUs reported/used by VMD, useful for scalability testing, debugging, and perhaps as a way of working around thread library bugs (if we code things to take a special non-threads case for cpu count of 1).
    • Added commentary on the evils of the simple GridSearchPair linked list in terms of 64-bit machines, memory coherency, and multithreading. Added comments describing the many advantages of the new GridSearchPairlist structure relative to the simple linked list variant.
    • Multithreaded the bond search code. Improved the sequential performance by eliminating unnecessary branching and reducing the number of passes through coordinates and radii. The new implementation replaces the simple linked list data structure with a linked list of ResizeArrays which contain the atom pairlists. The simple linked list structure is a scalability disaster due to system-level mutex locks in the VM and in malloc/free. On Linux, the simple linked list is also problematic due to the threaded version of malloc allocating much larger blocks than necessary and fragmenting memory such that the working set size grew by many gigabytes in a few minutes. The ResizeArray list eliminates all of the pointers (which are as large as the atom index data on 64-bit machines), and reduces the malloc calls so they are logarithmic rather than linear with the number of bonds, and reduces free call count to one per-thread down from one per-bond. The parallel portion of the code scales linearly up to 4 processors in testing so far, and should do well on larger processor counts as a result of the new data structures and memory coherency improvements.
    • added vmd_mutex_destroy() for completeness
    • backported a minor speed tweak from the multithreaded version
    • Added Justin's C implementation of the VMD collaboration/remote-control capability from his Windows Cave patch.
    • updated tutorials link in built-in help
    • molefacture: Fixed windows space-in-filename issues
    • molefacture: Fixed a rare angle calculation bug
    • Changed the Residue class to store secondary structure codes as a char rather than as an enumeration, to save memory. Along with other recent changes, this further reduces the memory use. 32-bit systems save 4 more bytes than 64-bit systems do as a result of 8-byte alignment of pointers on the 64-bit systems.
    • fixed up linux memory query to return -1 in the fall-through case
    • Eliminated unused variables in bondorder setting code
    • Eliminated use of old IS_HYDROGEN macro
    • Enable the Justin's new initial rep creation code in place of the old
    • Cranked version number
  • VMD 1.8.6a2 (October 2, 2006)
    • eliminate printf() calls used for testing memory use.
    • Replaced MolAtom::BackboneType and MolAtom::ResidueType enumerations with preprocessor defines, allowing us to store the atom and residue types in chars rather than ints, thus reducing the size of MolAtom down to 76 bytes, and Residue down to 48 bytes. With all of these changes thus far, the per-atom/residue memory usage has nearly been halved versus the shipping versions of VMD.
    • Significantly reduced per-atom memory consumption by storing most of the NameList-based indices as short ints, since we'll likely never encounter structures with more than 32,767 unique atom names, types, chains, segnames, and so on. Reduced the insertion code string storage to two bytes down from four. All of these changes should be safe, and the resulting decrease in memory usage brings us down to: MolAtom 84 bytes, Residue 56 bytes. By replacing enums with short or char, we can lower the use of both MolAtom and Residue a bit further yet.
    • Eliminate unused variables
    • Removed the fragment member from MolAtom, and changed the atom selection code and fragment query routines to query the atom's residue rather than the atom itself.
    • Added comments for Residue class members
    • Added "::biocore::findFile" to determine if a file exists; updated to version 1.24.
    • move the VASP plugins down into the list in alphabetical order..
    • Cranked version number
  • VMD 1.8.6a1 (September 27, 2006)
    • Improve MacOS X system memory queries, made the Linux queries more bulletproof.
    • Added MacOS X free memory call (though it isn't really "free", but rather an estimate of user-usable memory, or something...
    • Added MacOS X version of the total system memory query
    • Added new routines to query the number of megabytes of unused system memory, and total system memory. On systems that support the syscalls that query the stats, these functions can be used to warn the user if they are about to load a trajectory that's far too large to fit into the remaining physical memory. Still need code branches for several system types. The initial code works on Windows, Linux, and Solaris. The Solaris/SysV version may also work on other systems that support the sysconf() _SC_AVPHYS_PAGES query.
    • Put the MolAtom class on a diet, moving the bond order data out into BaseMolecule, where they can be demand-allocated when needed. The new code is much more complex, but it saves a lot of memory when loading very large structures. The new code creates a new extra() namelist item for the bond orders, but only when one or more atoms have had bonds added with bond orders set to something other than 1.0. When bond orders are queried the accessor function returns a value of 1.0 for all atoms if no bond order array is allocated. If bond orders are set with atom selection operations, the bond order array is immediately allocated, initialized to bond orders of 1.0, and then the affected atoms are updated to the proper values.
    • Changed mouse bond add/remove code to call BaseMolecule::add_bond() rather than directly fiddling with the atoms itself, since only the BaseMolecule version handles updating bond orders.
    • sorted residue members
    • Fixed description of what constitutes a hydrogen bond; the implementation is correct, but the docs didn't match what was happening
    • sorted residue members
    • Put the Residue class on a diet. Eliminated the idx member, since it was only used within the add_bond() method, and the only callers have this information implicitly.
    • Change default per-residue ResizeArray atomlist allocation to 3, reducing wasted memory for water residues.
    • Cut the static portion of the size of ResizeArray objects to half of what they were, eliminated caller-specified rescale factors, and reduced the default size somewhat to reduce internal fragmentation.
    • eliminate the custom resize factor on the timestep list
    • Applied Rob Lahaye's patches for the VASP potcar/poscar/chgcar plugins. in addition to "spin up+down" and "spin up-down", also add "spin up" and "spin down" volume sets; i.e. spin up = ("spin up+down" + "spin up-down") / 2 spin down = ("spin up+down" - "spin up-down") / 2 fix reading potcar file; add space " " in sscanf string: sscanf(lineptr, "%*s %4[^_. 0-9]", atomtype);
    • Fixed a problem that would cause filenames in Windows to be wrapped in {} (not my code. Dunno where it comes from). Since we are working with these filename strings using "file rootname" and "regsub" and windoze uses spaces in filenames you can end up with "Unmatched open braces" in TCL. Arrgh! What a pain.
    • multiplot: Added automatic color cycling: When you load several datasets into one plot then the default line and marker color is cycled through a list of predefined colors.
    • multiplot: Tried to cure crappy placement of example figure.
    • solvate now calls resetpsf to free memory prior to loading the newly created water box, in order to save memory
    • chop a few more seconds off the bond search
    • optimization: Great improvement of documentation!
    • paratool: Fixed a number of bugs that broke the atomedit GUI. Repaired charmmcharges modules. Should work now up to the point where the scaling happens.
    • multiplot: Drastic improvements of the documentation!
    • multiplot: Added functions to retrieve the number of datasets in a plot and to get the X-data or Y-data.
    • Significantly sped up the bond search code for huge structures The 37,000,000 atom water box now loads in about 4 minutes 10 seconds. The 1UF2 full virus now loads in 23 seconds.
    • eliminate on array which is no longer necessary
    • Split the bond search-specific code of gridsearch1 out into its own routine/version so it can be made faster when working with huge structures. Start removing branches in the inner loops...
    • Continued performance improvements loading huge structures. The 37,000,000 atom water box now loads in about 4 minutes 30 seconds. The load time for a 3.4 million atom 1UF2 virus structure went from 45 seconds down to about 24 seconds. Since the load time is now so much faster, I took the timed message code back out, as it was slowing down the simplest per-atom loops. With a bit more work the code should be faster yet.
    • find_connected_fragments() replaces the old version
    • Continued improvements in analysis speed for huge structures, rewrote find_connected_fragments() in much the same way that it was done for the residue assignment code. Load time for 37,000,000 atom water box is now down to 5 minutes 30 seconds
    • crank up the max boxes parm for bond search to give a little speed boost for huge structures, without burning too much ram on small machines
    • Drastic performance increase when loading or re-analyzing very very large structures, through rewriting of the unique residue identification code. For a 37,000,000 atom water box PDB, the load time went from 28 minutes down to 6 minutes and 27 seconds, for a nice factor of four load time improvement.
    • give more feedback when in the middle of a really long structure analysis phase
    • Fix solvate so I can build a 30 million atom water box without running out of segname characters
    • applied Charles McCallum's patch to improve the match between timeline secondary structure coloring and the VMD structure representation
    • change color of 3_10 helices to blue as suggested by Charles Mccallum (and synced with new timeline plugin coloring)
    • Applied Jerome Henin's patch to add multiplot legends to exported xmgrace plot files.
    • Added dipole watcher plugin to the main plugin doc page
    • synced win32 installer
    • clonerep: documentation typo fix from Axel
    • added Axel's dipole moment animation plugin
    • Added Justin's faster volume slice implmentation based on texture caching (with several minor fixes). The code doesn't accelerate the color-by-volume case yet, but it does for the others. It would now be worth the time to sort out the color-by-volume implementation so it does similar things with caching.
    • Added typecasts to the various atomRep floating point return values where they are used as ints. (part of JG's volslice patch)
    • psfgen: Write patch arguments in proper order in remarks.
    • psfgen: Extend PSF_RECORD_LENGTH to not cut off long file names in remarks.
    • psfgen: Fix reading angle autogeneration flag is readpsf.
    • paratool: Option -bounds was broken, the parameter bounds were not correctly respected. This is (hopefully) fixed now.
    • paratool: Fixed bad references to the procedure ldiff. It is found in ::Paratool::ldiff.
    • babelplugin: Fixed a typo in the "Gaussian94output" string pointed out by Jerome Henin, and cranked the babel plugin version.
    • cranked version
  • VMD 1.8.5 final release (August 25, 2006)

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