VMD Development Status

  • Working towards first beta version
    • MeasureSymmetry updates: Reorganized some parts of the code. Improved prediction. Better output. Store weight and overlap score with the found planes and axes.
    • Fixed a bug eliminating these annoying warnings: "TclVolMap.C", line XXX: Warning: String literal converted to char* in assignment.
    • Added MeasureSymmetry source files to the win32 builds
    • Elminated non-portable fmin() call.
    • Changed call to non-portable random() to vmd_random().
    • Added RCS header and comments. Limited the number of atoms on which finding planes and axes is based to a given value (default=100). Now you can also feed large structures into the algorithm without locking the machine. Doxygenized some comments
    • Added MeasureSymmetry.[Ch] to the build.
    • Added "measure symmetry" command which guesses the pointgroup of a selection and returns the according symmetry elements (mirror planes rotary axes, rotary reflection axes). The algorithm is fairly forgiving about molecules where atoms are perturbed from the ideal position and tries its best to guess the correct point group anyway. The 'forgivingness' can be controlled with the -sigma parameter which is the average allowed deviation from the ideal position. Works nice on my 30 non-patholocical test cases. what pathological means in this context will be explained in the docs when I add them. If you feed the algorithm with the ribosome it's going to compute for 400,000 years I guess, but for the biggest symmetrical things in my test set (C60/C70 fullerenes) it takes 3s. Smaller molecules often take only a few milliseconds. But these times can probably be still reduced.
    • Added command 'measure transoverlap' which computes a score value for the structural overlap of a selection and it's image that was transformed according to the given transformation matrix. This is the underlying command for checking symmetry elements.
    • timeline: Update combining several checkins from (personally maintained) svn, much cleaner, but not such a major resturcture that greatly helped by multi-checkins to CVS. features: "free selections" (arbitart selections, Hh-bonds provided as example), user-defined per-residue functions (e.g. measure contacts) coding: generic per-res property and delta-per-res (e.g. done slightly sanely) ; switchable debug messages (via function edit) Problems: Features slow and hard to use for users, but need to get some feedback on borken things, so must checkin. Hope to get things presentable / usable in next days . Needed: Merge performance, interface for builtin/user-defined functions so one way to register functions. GUI / text UI to show which loaded / available at startup. Move user-defined per-residue to name-of-function via type in function, provide test option on tiny selection (provide adhjustable guess) Debug silencing via proc in place. hardcoded per-res user procedure working. The chosen measure command is slow. Reminds should be more sparing on doing recalcs. H-bonds working, getting 2D graph. improvement, generalization, and move away from selection-text-based indexing still needed. But 2D graph looks good.
    • Added safety checks to measure inertia and measure pbcneighbors to prevent running with stale atomselections, i.e ones that refer to a deleted molecule.
    • Added safety checcks into vmd_gridsearch3, so that it is not run with empty atom selections.
    • autoionize: fixed slow inner loop that selects waters to replace
    • Simon Cross and James Gain's patch to use cold to hot color ramp for pucker coloring of carbohydrate structures.
    • molefacture: Fix bug reported by Jan with residue name lengths
    • correct function signature ambiguity for fmod()
    • Ring coloring based on Michelle's new coloring scheme. The current implementation calculates the Hill-Reilly puckering parameters and then maps x, the absolute value of their sum (divided by a suitable guess at the range of sums), onto RGB(x) = x, 0.5, 1-x. This gives nice blue and orange colours for the 18 ring glucose chain.
    • ring utils: General cleanup, conversion of arithmetic to single precision for use of VMD vector routines.
    • Pretty up CUDA device enumeration a bit more
    • Added tests and reporting of overlapped I/O during CUDA device enumeration
    • Updated the CUDA device enumeration routines for CUDA 2.0, improved the display of device attributes, etc.
    • autopsf: Add some extra aliasing for nucleotides suggested by leo
    • Improved measure command usage output for better readability
    • Added new "measure inertia" command that returns the principle axes of inertia.
    • Updated documentation for display commands
    • Eliminated more redundant Pi constants and degree-to-radian macros
    • Make gofr code use VMD_PI constant
    • Applied AK's bugfix when calculating the r values for measure gofr
    • Applied AK's patch to enable compilation with Python 2.4.x
    • Added docs for hbonds plugin
    • more updates to feature/bug fix lists
    • Improved error message reporting for Tk menu registration code
    • cranked version
  • VMD 1.8.7a24 (April 29, 2008)
    • Eliminated compiler warnings about volmap parameters hiding class member variables, and a problematic literal string conversion.
    • Eliminated compiler warnings about gradient parameter hiding class member
    • Eliminate compiler warning on Solaris
    • Eliminated unnecessary display command objects
    • Corrected projection of surface normals into world coordinates for isosurfaces of density maps with non-axis aligned basis vectors, and/or opposite handedness coordinate systems.
    • Added a routine to return basis direction unit vectors
    • Added another variant of vec_scale() that accepts double precision values
    • cgtools: Added an option to assign Lennard-Jones parameters for a shape based coarse-grained structure based on the all-atom one from Anton. Also added docs for said option, as well as docs for the mapping code that I'd added a while back (but hadn't gotten the docs in for yet)
    • eliminate MSVC compiler warnings
    • fix floating point consistency for the PBC measure commands
    • Eliminate MSVC warnings
    • Fixed inconsistent floating point precision in the dipole and bond/angle/dihed/imprp energy measure commands.
    • Corrected floating point precision consistency
    • Made Gelato and RenderMan output classes use self-consistent floating point precision.
    • correct floating point constant declaration to avoid compiler warning
    • replace hard-coded constants in the ring finding code with locally defined macros
    • reduce memory usage for ring finding routines by combining the intree_flag and intree_parents arrays by using sentinel values for atom indices.
    • cranked version
  • VMD 1.8.7a23 (April 23, 2008)
    • Re-enable VRPN for the MacOS X builds after compiling the client library for MacOS X 10.4.x on Intel.
    • Eliminated a massive proliferation of various forms of PI constants, e.g. M_PI, M_1_PI, QUAT_PI, MYPI, and many others, in favor of VMD_PI, VMD_TWOPI, and VMD_1_PI, now defined in utilities.h Also eliminated a similar proliferation of macros conversion between degrees and radians, and so on.
    • Eliminate warning on MacOS X
    • Fix duplicate definition of M_PI on some platforms.
    • eliminated bogus include of iostream from ring linkage header
    • Create new variable declaration scopes in switch statement cases for correct compilation on Win32 with MSVC6.
    • prevent a problem with ambiguous overloading with recent C++ compilers
    • volmap: * Pretty up the code by replacing multiple object casts by a cast pointer. * Replaced the MYPRINTF by msgInfo stream. * Made file_writing independent of the VolMap class. There is a virtual write_map() method in the base class now that calls the write_dx_dile() (which will eventually be replaced by using molefile plugin). For the FastEnergy derived class there is another write_map definition that adds temperature and weight info to the dataset name string. * When the dataset name string is set now all double quotes are replaced by single quotes because double quotes delimit the name string itself. * Added more comments.
    • Added a function rotate_axis() to the Matrix4 class that rotates around a given vector. It also corresponds to the TCL command transabout which is currently defined in vectors.tcl. I created a TCL interface to the C++ version such that the TCL script version can go away.
    • Added safety checks to cap the maximum number of rings that we'll search for in the ring finding code. It was previously possible to crash the the program during ring finding when analyzing large silicon nanodevice structures with high connectivity.
    • Enable carbohydrate representations by default now that the ring finding code is run on-the-fly rather than at start.
    • Carbohydrate structure representation update from Simon Cross. The Twister code for rendering the ends of the ribbons when the "start from ring centroid" option is selected has basically been completely re-written. The new implementation actually starts the ribbon at a point X which is lies on the plane formed by the ring centroid and the ring normal. X is chosen to be as close to the point midway between the centroid and the last atom on the path as possible. This is cheating a bit, but it does bring the final sections of all ribbons arriving at a single ring into a common plane so that they line-up nicely. Any possible gaps where the ribbons meet are filled in by rendering a small circular disk (actually it's a regular dodecagon).
    • Carbohydrate default ring search size patch from Simon Cross. Simple patch to reduce the default maximum ring size from 20 to 10. This just reduces the possibility of really pathalogical molecules files causing problems by having huge numbers of rings. Perhaps less necessary now because the BaseMolecule clean-ups also mean that the ring finding code isn't called by default (Twister or PaperChain already recalculate the results if the maximum ring size or path length differ from the current settings).
    • Carbohydrate structure analysis patch from Simon Cross. * Removal of call to find_small_rings_and_linkages so that ring finding code is only run on demand. * Fix missing bracket in comment. * Fix small but bad bug in back edge finding code (parent in the spanning tree was being stored very late, resulting in some back edges being missed). * find_small_rings_from_partial(...) modified to excluded barred rings (i.e. ones which are crossed by a single edge). This speeds up ring finding quite a bit since a lot of cases can be quickly discarded. It also reduces the number of rings found in highly linked molecules. * Change ring orientating code to look for "C1" or "C1'" after the oxygen atom, rather than trying to guess the first carbon by looking for links to carbons outside the ring. I'm still not 100% sure that this is a good part of the patch. The old system failed to orientate rings quite often (for example, if the ring was bonded to another ring via something other than a carbon) but the new system relies on the carbons being labelled nicely in the files. A fair number of the test files I have don't. However, at least the new method is predictable and gives the user some more control over the orientation (i.e. they can orientate the rings themselves by changing the labels on the carbons next to the oxygen). * Ring linkage finding code modified to ignore atoms which belong to multiple rings. The ring finding code implicitly assumed that atoms belonged to at most one ring and produced some spurious links between rings which shared atoms as a result.
    • Added notes file to docs subdirectory, with informal todo list, people assignments for plugins, etc.
    • Fixed missing timer destroy call
    • compact Tcl interface code
    • Removed the update_internal (a misnomer anyway) from VolMap. All that's left now should in some way correspond to stuff that is in VolumetricData.
    • Deleted further functions from the VolMap class. It is almost ready now to get replaced by VolumetricData.
    • Added a timer for ILS for subsequent speed tuning
    • Set menubutton width to avoid truncation in OS X, for the plugins: colorscalebar, dipwatch, molefacture, multimolanim, irspecgui, gofrgui, dowser, contactmap, clonerep.
    • volmap: Eliminated dead code.
    • cranked version
  • VMD 1.8.7a22 (April 18, 2008)
    • Fix timestep memory leak introduced with the recent reorganization of the Animation class, timestep storage, etc. Timesteps were not getting deleted properly when their parent molecules were being deleted.
    • biocore: made the error message more descriptive when a login fails
    • Fixed documentation for exectool, which was still using the old namespace
    • Moved the material change command immediately prior to the ribbon rendering commands. Coalescing rendering operations into compact groupings makes addition of mutex locks for multithreading much easier.
    • Improved readability of the ribbon/cartoon spline computation loops, reduced int/float conversions, and explicitly replaced a few divides in favor of multiplies.
    • Added performance measurement instrumentation for the ribbon extrusion code.
    • More work on control point precalc code.
    • Added code to precalculate control point lists used by ribbon/cartoon reps, to help improve interactive trajectory display performance. This will ultimately eliminate all of the on-the-fly traversal of the atoms in residues presently being done to identify control points. It will also allow VMD to use more robust control point selection criteria that would otherwise be too costly to perform at redraw time.
    • update comments on fragment finding code
    • Start preparing for precalculated control point storage
    • Fixed some out of date comments about the color index ranges, and updated examples to query color ranges rather than hard coding them.
    • ccp4plugin docs: Added a missing space.
    • xsfplugin docs: Added a missing period.
    • cranked version
  • VMD 1.8.7a21 (April 3, 2008)
    • Updated pbctools makefile for the current version number
    • Updated to pbctools version 2.2, based on the latest source and documentation updates from Olaf Lenz.
    • Adjust benchmark grid size and thread block size to get more accurate performance measurements for next-gen GPUs with differing numbers of SMs.
    • plugin docs: Added new "plugin development best practices" document.
    • UIText fixed missing "of" in python support message
    • Fix missing linefeeds in the built-in help for the "measure energy" and "measure surface" commands.
    • plugin docs: Added basic info about the intricacies of shared library handling on Unix and Windows, with practical examples of why we do things the way we do in the VMD plugin system.
    • Added CVS ID tags to all of the plugin programmer's docs.
    • Eliminated holdover code from old residue bond logic.
    • Added ssrestraints and rnaview to main plugins Makefile.
    • Added rnaview plugin, which calls the external program RNAView and parses its output, creating a bpseq file with base pair information (or an extended bpseq file with a classification of the base pairs). This is simply a helper plugin to be used by ssrestraints at the moment.
    • Added ssrestraints plugin, used to create an extraBonds file for NAMD to restrain secondary structure of proteins or nucleic acids in a simulation.
    • Fix uninitialized curframe member variable found by valgrind.
    • cranked version
  • VMD 1.8.7a20 (March 26, 2008)
    • First full-up test with CUDA on MacOS X, with full graphics etc on 10.5.2.
    • Starting with MacOS X 10.4 we can use dlopen(), dlsym(), dlclose() natively, so there's no need to emulate these anymore. We'll leave the code in place, but for all current builds we're targeting 10.4 or later anyway.
    • MacOS X 10.5.x changes the behavior of putenv() such that it no longer makes copies of strings added to the environment. Changed the environment initialization code to use setenv() instead, since it copies parameters and provides a cleaner interface to work with.
    • Update render code to support Tcl/Tk 8.5.x versions of the Tk_PhotoSetSize() and Tk_PhotoPutBlock() APIs.
    • Olaf's fixes to vtfplugin correcting linkage scope of the internal plugin functions.
    • molefacture: Added comment about dealing with SPC water
    • molefacture: Fix the tert-butyl fragment, which had some incorrect bonds
    • molefacture: Start using measure commands instead of labels where possible to speed things up
    • molefacture: Add option to type for opls
    • cranked version
  • VMD 1.8.7a19 (March 20, 2008)
    • Applied Justin's patch to extend the list of default masses guessed by VMD. Added recognition of SPC water. The SPC water code may conflict with a residue in the PDB compound library, but we'll see how it goes.
    • Applied Justin's patch to write velocities when they exist, and when writing with a plugin that supports them.
    • Applied Justin's patch to add iterators to the Python atom selection interface.
    • New version of vtfplugin from Olaf Lenz.
    • namdenergy: Add ability to turn off switching
    • Fixed mismatched enum for error return check.
    • Added CUDA to Mac builds
    • doc: Eliminated mention of the "make_links" script which has been superceded by the "links" target in the top level VMD makefile.
    • Added CVS tags to doxygen pages, to be displayed at the end of each page.
    • Fixed documentation typo
    • cranked version
  • VMD 1.8.7a18 (February 29, 2008)
    • Changed Unix startup script so it no longer starts an xterm. The linux xterm issues w/ LD_LIBRARY_PATH create new cross-platform headaches, it may be preferable just to take xterm out of the equation as some people prefer running from their existing terminal console anyway. We'll try this and see who screams.
    • Attempt workaround xterm's behavior of stripping LD_LIBRARY_PATH in recent Linux distros due to setgid permissions. This problem also affects other apps: https://bugzilla.redhat.com/show_bug.cgi?id=246063
    • Further tweaks to rpath to make the shared library search path relative to the location of the installed VMD executable.
    • Applied Axel Kohlmeyer's patch for the LAMMPS plugin to allow it to correctly interpret both absolute and fractional atom coordinates.
    • added compiled-in linker shared library search path for libcudart.so when configured with CUDA support.
    • cgtools: fixed a bug that anton found where the output status wasn't being put into the box correctly (and was throwing an error instead)
    • cranked version
  • VMD 1.8.7a17 (February 21, 2008)
    • Check to see if LD_LIBRARY_PATH is set before attempting to add to it.
    • Trigger text interpreter frame callbacks when change_ts() calls occur.
    • Added Justin's patch to scan user-provided plugin directories before loading built-in plugins.
    • Corrected a problem with label redraws resulting from the previous patch reorganizing timesteps etc.
    • runante: Add antechamber plugin
    • mol2plugin: Fix bond order reading for 'ar' bonds
    • cranked version number
    • molefacture: Fix the proline parent fragment
    • molefacture: Add FEP features to molefacture from Jonathan Degois The implementation will likely be changed in the future to make it more user friendly
  • VMD 1.8.7a16 (February 19, 2008)
    • Added CUDA to default builds now that the redistributable shared libs are handled by the installers etc.
    • VMD startup script now manipulates the shared library search path to allow redistributable shared libraries to be found in the VMD installation directory.
    • Added handling for redistributable runtime libraries needed for things like CUDA, NetCDF or any other shared libraries that are vendor-provided and/or otherwise something we can't compile for static linkage.
    • cgtools: Added in ability to map a previously generated shape based coarse grain model onto an all atom model. This can then be called multiple times to replicate CG models many times on a large all atom system. Doc updates coming later to describe this in more detail.
    • report CUDA device clock rates and compute capability during device enumeration
    • Added more checking for the bogus emulation mode devices, and eliminate them from consideration early on in the device enumeration code.
    • Emit more info during CUDA device enumeration
    • mol2plugin: Add recognition for 'ar' bond order output from antechamber
    • Add a banner with the original idatm citation, and remove some unneccesary puts statements
    • cranked version number
  • VMD 1.8.7a16withcarbs (February 7, 2008)
    • test builds withcarbs
    • Catch the case where we've been given a CUDA 'emulation device', and ignore it as unusable for our purposes.
    • molefacture: Add the cyclopropane base fragment (it had been missing)
    • dowser: Fix help URL.
    • Add padding for 'volmap interp'.
    • Counted FLOPS, global memory references, and conditional assignments in the main fmtool CUDA kernel
    • molefacture: Fix bug in writing topology files with newly added atoms
    • timeline: Made less chaty on startup, marked debug messages as DEBUG, some others as Info)
    • Applied Justin's patch reorganizing timestep animation control. Rather than keeping an Animation instance in each molecule, keep just a single instance in VMDApp. Make Animation a UIObject so it can generate animation events as time elapses. Add methods to DrawMolecule to return current frame and override current frame. In this form, the Animation class is much more transparent: it doesn't hold timesteps, it doesn't maintain a current frame, and it doesn't have so much asynchronous behavior. This also fixes a bug that manifests itself when you load two molecules with different numbers of frames. Previously, if the molecule with more frames is top, and you clicked the arrow button in the GUI to start animating, the molecule with the smaller number of frames loops over those frames multiple times as the animation slider goes from left to right. However, if you manually drag the slider from left to right, the molecule with fewer frames will instead clamp its frame to the last frame once the slider goes out of its frame range. Thus you have two different VMD states for the same GUI state, which is inconsistent. It never really made sense to have two Animation instances anyway, since there's only one animation state. Store center of volume and scale factor in DrawMolecule, rather than in individual Timesteps. Recompute cov and scale when required. Use the algorithm from MoleculeList to compute cov and scale, where only selected atoms in displayed reps are considered. The new behavior is smarter about when to update than the old code, and doesn't replicate code in Timestep and MoleculeList for computing the center.
    • Eliminated the DrawMolecule wrapper methods that were replicating/exporting MoleculeGraphics functionality, in favor of teaching the callers to retrieve and work directly with the MoleculeGraphics class. Updated the Tcl and Python bindings as per Justin's patch.
    • Updated MSVC builds for current sources
    • only call the init routine for NumPy when it has been enabled in the build.
    • Applied Simon Cross's patch adding a maximum ring size control to both the PaperChain and Twister representation controls. However, since there is only one ring size per molecule having multiple representations introduces the problem of synchronising the values of the maximum ring size in the AtomRep values for each representation. If this synchronisation is not done then the list of small rings will get re-calculated every time a different representation is drawn. This patch increases the vertical screen space consumed by the graphical representations window, which is somewhat undesirable. We will need to review the GUI design again later.
    • inorganicbuilder: Wrapped uses of psfgen in psfcontext commands, to preserve any psfgen state the user may have created.
    • Applied Justin's patch to preprocess and remap the residue numberings for the data we send to Stride so that it doesn't fail, e.g. when the protein is preceeded by a large water block thus inflating the indexes to larger numbers. It should now work for any molecule with fewer than 10,000 total protein residues and 100,000 total protein atoms.
    • new version of view_change_render script posted.
    • mergestructs: Added psfcontext commands to preserve any user psf context
    • cgtools: The bond determination checkbox was doing the opposite of what it should have been. Changed the if to handle that. Also revised an atom selection to use the molecule id being passed in instead of always using top, per Anton.
    • Added support for an above/below stereo display mode for use with special stereoscopic movie encoders
    • Added code to print tracker orientation (disabled for now)
    • Corrected plugins that emitted diagnostic or error messages without self-identification at the beginning of message strings.
    • Added new 'mergestructs' plugin for combining multiple structure files into one.
    • saltbr: Close log file before throwing an error.
    • cranked version number
  • VMD 1.8.7a15 (January 3, 2008)
    • various build and config updates
    • cranked version number
  • VMD 1.8.7a14 (December 18, 2007)
    • inorganicbuilder: Changed naming conventions for relabeling structures according to the number of bonds to be "XX_#", for example SI_2. Also changed the parameter file output to use .inp extension, even though both .par and .inp appear to be used for parameters. Added parameter files for sio2, asio2, and si3n4
    • inorganicbuilder: Material library now stores a parameter file name, which can be used to copy a parameter file from the materials directory into the user's working directory, to make it easier to set up a simulation. No files are currently provided.
    • inorganicbuilder: Added code and GUI to allow each axis to be specified as periodic or non- periodic, for both specified bonds and boundary bonds.
    • I added a checkbox to the GUI so that renaming the atom types according to the number of bonds is now optional.
    • inorganicbuilder: Added options to retain file bonds, and updated the wrapped bond search to implement VMD's heuristic 0.6*(r1+r2).
    • Removed lower performance potential kernels from CUDA source.
    • inorganicbuilder: Atom type selection for building bonds is now a menu derived from the names in the currently-specified molecule, rather than just text fields.
    • timeline: NOTE: this is final transfer check in from Barry I. SVN directory Some scale change, (Now up to SVN rev 35)
    • timeline: Working on startup errors seen on Mac (from Traced sliders) Small edits to remove typo. current changes entered. Likely were just to get running at good speed (commented out puts), some small corrections Creates own font name, so is independent of other plugin (had been relying on Sequence Viewer/zoomseq to do this)
    • timeline: various changes and corrections
    • timeline: better menus. Threshold functions in menus.
    • timeline: Improved appearance, more room for other controls.
    • timeline: works on syndey (Mac), but outlines for bar and event (blue vox). The event box looks bad, since is made of many lines, not just outline.
    • timeline: struct is working added thresholding, function only (no gui) may not yet work some thresh graph graphing of threshold looks ok, shows max and min
    • timeline: highlight looks good, toggleable adding some demo files
    • timeline: decent packing
    • timeline: scrub label close
    • timeline: many bugs gone. button 2 scrub in progress
    • timeline: small changes (on laptop)
    • timeline: numframes + 2 gone. now to check out +1 cases
    • timeline: from VMD CVS tree 1.30, with some changes added not working as of this initial import. Plan to re-merge back to CVS tree after features added
    • timeline: The next commits will be of changes to timline.tcl that took place in Barry I.'s personal SVN directory. The 34 SVN revisions are combined here to 13 major revisions, which will each be checked into this CVS tree, along with the associated comments for each one (excepting references to extraneous README and test files not included here). These major revisions were made in March and April 2007.
    • Applied Simon Cross's patch moving the ring finding code into a new method and cleaning things up a bit.
    • Enabled Carbohydrate code for testing new round of patches.
    • eliminate unused variable warnings in benchmark code
    • Updated build for CUDA 1.1
    • Eliminated unnecessary display update call that was creating trouble with python callbacks.
    • inorganicbuilder: Reformatted Start screen, made spacing nicer and added a button Changed bond search method to use atom type instead of element Combined PeriodicBonds and SpecifiedBonds GUIs into one window
    • inorganicbuilder: Removed commented out code that is no longer used now that the Specific Bonds and Periodic Bonds commands have been merged. Removed Merge Molecules code that is now in Merge Molecules plugin. Added exact-charge adjustement to the charge correction code, so that, after charge adjustments are distributed evenly across all atoms, any remaining correction that is needed due to PSF rounding is applied to atom zero. Other bug fixes.
    • inorganicbuilder: Separated the angle and dihedral options when creating bonds.
    • SGI IRIX builds are disabled until we have another build box available
    • vtfplugin: Updated to Olaf's latest version. This update cures a problem on Windows, and closes a small memory leak.
    • molefacture: Get rid of hard-coded restriction on recursion depth for bond/angle/dihedral changes
    • Applied Justin's python module related patch.
    • inorganicbuilder: New GUI for resolving segment name conflicts when merging two PSF files
    • Added the ruler GUI to the Extensions-Visualization menu
    • ruler: By popular request, added a small GUI window to access the VMD ruler
    • Added Axel's element-by-element vecmul command.
    • added Justin's config for shared lib builds of VMD
    • This patch fixes up some inconsistencies that arise when building VMD with the SHARED option, adds -fPIC to config_shared builds on LINUXAMD64, and adds a vmd module available only when the program is loaded as python extension that takes care of proper VMD initialization.
    • added thread CPU affinity function (linux/NPTL only at present)
    • Added comments about processor affinity on MacOS X, Solaris, and HP-UX.
    • added win32 branch of cpu affinity query.
    • Added a 'vmdinfo cpuaffinity' query text command
    • Added CPU affinity query code for the main VMD process
    • Split vmd_numprocessors() routine into two separate routines. The vmd_numprocessors() routine allows user-defined overriding of the number of worker threads to use, falling back to detecting the number of available processors if no preference exists. The vmd_numphysprocessors() routine only counts the number of physically available processors, independent of whatever preferences the user may have, for use by code that needs to do things like set CPU affinity, and so on.
    • inorganicbuilder: Fixed bug where the material state was not available when loading a saved state... Also sorted material lists for uniform presentation in menus.
    • inorganicbuilder: Added parameter and GUI to force constructed devices to have an integer charge, so that they can be easily neutralized by the addition of ions. The current method of modifying the charge is to calculate the correction and then add 1/n times the correction factor to every charge. Another possible method is to scale all charges, but that may lead to larger changes in the charge. I'll have to consult with Alek to find out what method is correct.
    • inorganicbuilder: Set the plugin to return to the Start screen whenever the plugin window is opened/reopened. Replaced charges in .top files with more useful values
    • inorganicbuilder: Added a Clear Device button, to erase any currently-defined structure Fixed a bug where an old device structure (Draw Box) was not deleted when a new one was loaded Made the "Draw Box" function dynamic, so it occurs automatically whenever the structure changes. This removes the need for the Draw Box button, so that has also been removed.
    • Prevent the main VMD thread from getting bound to a specific CUDA device by running all CUDA kernels in their own host threads.
    • Added support for benchmarking single user-specified CUDA devices, or groups of devices in parallel
    • Added low-level code to allow benchmarks on specific CUDA devices.
    • Added CUDA device/host bus bandwidth benchmark
    • Added comments to the multiply-add benchmark code.
    • Added new 'vmdinfo' subcommands: 'vmdinfo freemem' returns the estimated number of MB of free physical memory 'vmdinfo numcpus' returns the number of CPU cores 'vmdinfo numcudadevices' returns the number of CUDA devices
    • please the compiler
    • Added CUDA benchmarking kernels to the build
    • Added the CUDA multiply-add benchmark to the 'vmdbench' command
    • Added the CUDA multiply-add benchmark to the kernels header
    • Added built-in CUDA-based GPU benchmarking routines for use in helping diagnose performance issues, etc.
    • Replaced inner DMA buffer copy loops with memcpy, added support for pinned/page-locked DMA buffer memory allocations, eliminated the child thread for thread 0 by running in the main thread instead. The new code performs and scales a little better. A 32-bit multi-GPU run on a test system with a dual-QuadroPlex (Quadro FX5600) achieves 157.4 billion atom evals/second, 1160.83 GFLOPS
    • Added the newest version of the direct Coulomb summation CUDA kernel into VMD. This version achieves 291 GFLOPS, 39.5 billion atom evals/sec on a single GeForce 8800GTX. A 64-bit multi-GPU run on a dual QuadroPlex test system with 4 Quadro FX5600 cards achieves 1078 GFLOPS. A 32-bit multi-GPU run on the system achieves 1108 GFLOPS and 150.3 billion atom evals/sec.
    • Explicitly added linkage against libtlshook.so since some versions of the GNU compiler/linker tools fail to find it for themselves at link time, even though it's in the same directory with the cuda libs.
    • qmtool: Minor syntax bugfix.
    • utilities: Exporting all commands so that they can be imported from other namespaces. Added a couple new commands.
    • inorganicbuilder: Revised formatting on block input windows
    • Added Axel's patch to fix a measure gofr frame range checking bug
    • inorganicbuilder: Added a Start screen to start building a device
    • paratool: Added proper namespace to call of a procedure that has been moved to utilities.
    • inorganicbuilder: Added File menu, with options to save and open a state file (for the plugin state, not the complete VMD state)
    • inorganicbuilder: Added menu options and GUI for viewing materials and adding new ones.
    • Added a built-in variation of the STREAM benchmark, and Tcl commands to access it. The benchmark commands will be very helpful in collecting performance information on new multi-core systems and compilers used to build VMD. Similar GPGPU benchmarks will be added as time goes on.
    • cranked version number
  • VMD 1.8.7a12withcarbs (October 5, 2007)
    • Enabled carbohydrate code for fresh builds
    • cranked version number
  • VMD 1.8.7a12 (October 5, 2007)
    • correct some non-portable gccisms
    • Disable force color update for the position based coloring methods, since the user might want to be able to turn this off. We can change the default behavior to enable color updates in the GUI to accomplish the same thing as necessary, but if we enable it in the code itself, then automatic updates cannot be turned off by the user. This is somewhat self-inconsistent as we'd normally want all of the trajectory oriented reps to update every timestep, but position can be an exception as users may want to color atoms by their original position rather than by their current position. For the other trajectory based coloring methods, there isn't a logical reason to do things that way.
    • A few additional improvements to the menu handling code.
    • Further cleanup of the name-based color method menuing code
    • Fix coloring method menu behavior, a few more places needed to do their tests by name rather than by index.
    • namdenergy: Add option to update selection every frame, so people don't have to do ugly hacks for this
    • solvate: Fix issues with mixed solvent types
    • cranked version number
  • VMD 1.8.7a11 (October 4, 2007)
    • Fixed DrawMolItem so that it correctly updates the display for coloring by positional, velocity, physical time, and user data per-timestep when animating or when using the draw multiple timesteps feature.
    • Added support for coloring by physical time (in a trajectory). Significantly reorganized the structure of the Coloring Methods chooser/menu. Hopefully the users don't kill me :-)
    • Added error checking for filepsec Tcl command arguments per Axel's patch
    • molefacture: Fix atom ordering for input to bondedsel
    • initialize user pointer to NULL before testing coloring method for user coloring modes
    • Fixed the graphical representations coloring method menus to correctly handle coloring method submenus.
    • Added new X/Y/Z linear position coloring methods and moved all of the position based coloring methods into a new "Position" submenu, and renamed the GUI menu name of "Pos" to "Radial".
    • cranked version number
  • VMD 1.8.7a10 (October 3, 2007)
    • Added several additional text builds
    • Removed old VMDVOLUMETEXTURE compilation macro now that it's always turned on. Added VMDPBCSMOOTH compilation macro to enable Axel's PBC-aware smoothing code by default for the subsequent test builds.
    • Removed old VMDVOLUMETEXTURE ifdefs. This is required functionality from now on.
    • Updated default VdW radii assigned to elements to improve the default behavior for commonly used ions by replacing the Bondi radii with CHARMM27 Rmin/2 parameters for elements that are commonly ions in simulated systems.
    • Significant update to the mouse handling code. The "mouse pick" command now takes strings instead of mode numbers. * There is no longer a distinction between "picking" modes and simple modes in Tcl. Picking modes have their own names, and no longer have a "submode" number. * To see if we're in addbond mode, the new way is: if {$::vmd_mouse_mode == "addbonds"} {} instead of: if {$::vmd_mouse_mode == 4 && ::vmd_mouse_submode == 12} {} The old way is no longer compatible. * To switch to addbond mode, the new way is mouse mode addbonds as opposed to mouse mode pick 12 * The old way is _still_ compatible (but may be obsoleted later) Internal changes: * enums are used throughout, there is no more reliance on arbitatry constants and order in which the modes are defined, etc... * some functions have been streamlined and/or removed.
    • Eliminate typecasts that used to be used to please archaic versions of Tcl etc.
    • Situs plugin: Use %g instead of %e for Situs output. %e was a bit silly, %g is more readable/debuggable and takes as little as 25% of the space
    • DX plugin: Use %g instead of %e for file output
    • Added 3 more demand-allocated per-timestep "user" data fields named "user2", "user3", and "user4", added them to the coloring methods list in the GUI, and changed the GUI to create a "User" submenu by splitting the GUI names and the internal strings into two separate lists. This is a reasonable way of implementing this in the short-term, although it add more code to the existing cruft we're maintining. A much better way of doing this would be to build all of this dynamically, but some non-trivial changes need to added to the atom selection classes to allow that to happen, so I'll see about doing that as a second step. Once they can be added and deleted dynamically, we could open this up for as many fields as we want, and we could keep the coloring method choosers relatively organized with more submenus.
    • Applied Axel's patch for (optional) PBC-aware trajectory smoothing.
  • VMD 1.8.7a9 (September 28, 2007)
    • molefacture: Add a nucleic acid builder (still a work in progress, but needs to be committed) Fix up prolines in the protein builder to look better
    • Updated the nucleic acid structure analysis and ribbon/cartoon rendering code to handle the new PDB atom names "OP1" and "OP2", which have replaced the older "O1P" and "O2P" atom naming convention.
    • Added ability do create Coulomb potential maps through the GUI Added more options for the output molecule (including a "same as input" option, now used as the default)
    • Applied Justin's patch to add get_visible / set_visible methods to python molecule module that turn molecules on and off. Make the selection keyword of molecule.write take an atomsel instance intead of a tuple.
    • Greatly reduced the acceptable error tolerance for the RMS fitting routine by default. The new tolerance is 1e-15, vs. the old tolerance which was 1e-5. The new code also accepts an environment variable VMDFITRMSTOLERANCE which will override the default fit tolerance.
    • changed Intel C/C++ flags to eliminate an undesirable FP precision reduction flag.
    • inorganicbuilder: Added a min and max coordinate display in the build window
    • inorganicbuilder: Improved formatting of Create Box exclusion window. Fixed bug where basis vector setting were getting reset in the Build Specific Bonds window. Reformatted the exclusion list so that all geometric exclusions are listed first, followed by the VMD selection exclusions, to reflect how the exclusions are actually applied to the structure.
    • inorganicbuilder: Revised GUI for other tasks, consolidated the molecule file dialogs into one function, and fixed a couple of bugs in the solvate routine which occur when the original box is rectangular
    • inorganicbuilder: Revised look of FindSurface window, consolidated more GUI code between windows.
    • inorganicbuilder: Revised the layout of the Build Periodic Bonds screen
    • Applied API changes creating timestep metadata structures and adding support for velocities, for use in trajectory read/write plugins.
    • update main plugin doc index
    • inorganicbuilder: Improved layout of the Build Structure window
    • inorganicbuilder: Added Basis Vector button to Specified Bonds and Find Surface atoms as well
    • inorganicbuilder: Added a routine to determine basis vectors from the CRYST record in the PDB and GUI code to put it in the Periodic Bonds task window
    • inorganicbuilder: Added bindings so that the displayed basis vectors get updated whenever the user changes any of the box parameters
    • multiseq: set mouse picking mode properly
    • multiseq: use new vmd_pick_event variable for picking trace
    • aligntool: use new vmd_pick_event variable for picking trace
    • contactmap: use new vmd_pick_event variable for picking trace
    • timeline: use the new picking trace variable
    • stingtool: use new vmd_pick_event variable for picking trace
    • paratool: use new vmd_pick_event variable and mouse modes for picking trace
    • resptool: use new vmd_pick_event variable and mouse modes for picking trace
    • Made all numeric fields only accept numeric input, print a warning if the user tries to use anything besides a positive integer integer for the box size, and pre-initialize many numberic fields to zero
    • reenabled SOLARISX86_64 builds on taipei
    • linux builds are now on RHEL4 (dallas), and Sx86 builds are now on taipei
    • fix unterminated keyword list in the SASA command
    • inorganicbuilder: Now gets CHARMM topology file from the readcharmmtop plugin, also fixes title of about box
    • zoomseq: updated atom picking trace to only use "Pick" mode
    • Rewrote docs for mouse pick callbacks Fixed general callback docs (was using obsolete Tcl commands) Fixed table placement in PDF, this was buggy (use [htp] rather than [htb])
    • mouse: added a ::vmd_pick_event callback for plugins to trace to get "pick" events. This callback is only activated by the "Pick" (old "user") mode and it's purpose is to discourage plugins from overloading other inappropriate picking modes (query, label, force, etc) as they have done in the past. The fact that plugins are overloading the wrong picking modes also prevented us from adding new pick callbacks without breaking compatibility.
    • Cranked version number
  • VMD 1.8.7a8 (September 19, 2007)
    • Added the "p" hotkey for the "Pick" mouse mode Rewrote picking hotkeys mouse mode calls to use readable strings instead of cryptic numbers
    • Added the Pick mode to the GUI Added mention in GUI of pre-existing hotkeys for the force picking modes
    • "mouse mode pick" is now allowed and goes into "user" pick mode (which from soon on will simply be called "Pick"). This is a first step towards renaming all the picking modes to have their own name.
    • mouse user mode: wired the user mode so that it now works as intended (previously it did nothing). Note: It's essentially just another name for the 15th "pick" mode, but it looks like and acts as if it were its own mode, which is not a bad idea.
    • Commented code to warn about importance of not altering the order in which picking modes are defined.
    • Cranked movie maker version due to bug fixes.
    • vmdmovie: Applied Jan's patch to correct the transparent surface rendering for movies made using Tachyon. Also fixed the behavior of the ::makemovie method intended for use by external scripts etc.
    • Cranked version number
  • VMD 1.8.7a7 (September 12, 2007)
    • inorganicbuilder: Switched the order of set env() and the source command
    • inorganicbuilder: Fixed the Help URL, and removed most diagnostic puts
    • Fixed inorganicbuilder makefile
    • removed 2 lines of dead code
    • sorted plugin order in makefile
    • paratool: Minor bugfixes Moved some commands to ::util::
    • qmtool: Some procedures were moved from ::QMtool:: to ::utilities::.
    • Added inorganic builder to the GUI extensions menu
    • Added materials directory to the distribution of inorganicbuilder
    • Added inorganicbuilder to the distrib targets
    • Changed code to call new measure surface VMD internal command, rather than the external compvacuum utility.
    • Applied Justin's patch to add velocities to the Timestep data structures along with atom selections and Tcl/Python bindings to query them.
    • Reordered include directives to prevent compilations of Python related source modules from generating warnings about redefinition of _POSIX_C_SOURCE
    • Moved functions trans_from_rotate() and print_Matrix4() from Measure.[Ch].
    • eliminated unused code fragment.
    • Eliminated compiler warnings on MacOSX
    • Force 32-bit builds on 64-bit host ABI when building the "LINUX" target, since RH9 machines are going away fast now...
    • Updated msvc6 project for recent changes and new source files.
    • Updated vs2005 project for recent changes and new source files.
    • Fix M_PI portability issue with new pbc vectors code.
    • Fixed minor nits that annoy msvc.
    • Added MeasureSurface to the build.
    • Added Robert's routines and Tcl bindings to find surface atoms.
    • Added Justin's multithreaded implementation of find_within().
    • Added initial implementation of 'pbwithin' selection using Justin's implementation that builds on top of the existing find_within() function. Some comparison should be made of the algorithm pbwithin uses with what's in pbcneighbors; it might be faster, more correct, or both to do pbwithin the way pbcneighbors does it. In any case, it is highly desirable to have this functionality available from the atom selection interface, and this gets us there until we go back and evaluate whether we can do it in a more intelligent way.
    • Added Justin's variant of the find_minmax_selected() routine to be used by the new pbwithin selection
    • Updated the implementation of measure_minmax() to eliminate the need for an atom selection reference, allowing more routines to be able to use it.
    • Eliminated code duplication in the pbc transform calculation routines
    • Added comment about the new numpy timestep array structure.
    • Updated the py_numeric code for Python 2.5 and NumPy 1.x
    • Added pydocs for the python molecule methods.
    • Added documentation for the various python color control methods
    • Updated python atom selection bindings, docs, etc. Added new/updated "write" and "center" methods, and "keywords", "booleans", "functions", and "stringfunctions" parameter listing features.
    • Turned off python builds for platforms that haven't yet had their respective Python 2.5.1 and matching numeric builds completed yet.
    • Updated the configure script to reference Python 2.5 for all future builds.
    • Updated comments and return codes for the secondary structure related calls. The mol reanalyze call should not necessarily force complete ss regeneration, but that will require testing.
    • Secondary structure calls now correctly propagate error conditions if a STRIDE calculation fails.
    • Added utilities plugin.
    • Added utilities plugin with numerous helpful commands for lists, rings and topology.
    • Cranked version number
  • VMD 1.8.7a6 (August 31, 2007)
    • Incorported multiseq 2.1b6 into the a6 build for live testing
    • Added blank multiseq plugin list and comment indicating when it's appropriate to use.
    • Add a newline before last line when nvoxels%3 != 0.
    • Added documentation for new volmap ligand options, for "measure pbc2onc" and for "measure pbcneighbors".
    • Improved code documentation and "usage" strings.
    • Two bugfixes that prevent measure energy from crashing and from computing bad vdw energies.
    • Cranked version number
  • VMD 1.8.7a5 (August 29, 2007)
    • disable carbohyrate code in the main build until further testing is completed on the latest version of the ring finding code.
    • dxplugin: Fixed non-portable loop variable scoping construct.
    • Added Jan's new 'measure pbc2onc' and 'measure pbcneighbors' commands.
    • Correct argument parsing for the "measure energy" command
    • apbsrun: Updated the APBS plugin to allow dimension sizes n = a * 2^b + 1 for values of a other than 1.
    • namdplot: Added comment to the source code about picking the Y-axis label appropriately
    • Updated VS2005 project settings for the current code.
    • Updated win32 project for new source files
    • Migrated PBC functions to new MeasurePBC source file. Migrated spatial searching routines into new SpatialSearch source file.
    • correct situsplugin minor version number
    • Added new SpatialSearch and MeasurePBC source files to the build.
    • Moved the PBC helper routines from Measure to MeasurePBC.
    • Reorganized all of the routines that implement spatial searching routines into a new SpatialSearch source file. Separated out the bond search code which has diverged significantly from the other grid search and radial distance and contact searching routines. Updated other modules to reference SpatialSearch.h as appropriate.
    • dxplugin: Print line containing dataname at the end of dx file. Also, remove any quotes in dataname before printing it.
    • viewmaster: Added Axel's patch to correct radio button behavior in ViewMaster
    • fmtool: Implementation of the multiple-beam PSF
    • fmtool: Additions are made to construct the PSF using multiple interfering beams.
    • fmtool: Additions to use multiple interfering beams to form the PSF. Additions are ready for the configuration file reader. The actual PSF construction is not changed yet.
    • fmtool: 3D.conf: the configuration file containing the calls for using multiple beams to construct the PSF, in a right format.
    • fmtool: When you try to draw a plot with empty data or where X and Y dtata have different lengt, a warning is printed and the drawing is ignored.
    • inorganicbuilder: Added a line to store box basis to the VMD periodic box variables.
    • dxplugin: Fixed DX writer. It was printing the the axis size instead of the grid spacing in the header.
    • Cleaned up text output, made less chatty, removed the unnecessary fflush(stdout)'s
    • volmap: internally simplified the pmf combination operation.
    • volmap ligand: use double precision intead of floats whenever dealing with densities (as opposed to energies), since these have a large range that occasionally gets truncated by the single precision. Visible differences are only seen for isosurfaces of very large energies (e.g. 100kT); previously-computed maps are still valid, of course.
    • volmap: Do range checking on -minmax arguments (reported by Peter Freddolino)
    • Added Jan Saam's support for PBC cells in the implicit ligand sampling code ("volmap ligand").
    • Added Jan Saam's PBC utility functions, to be used by new "measure" and "volmap" options.
    • Made find_within() non-static.
    • situsplugin: Implemented situs writer.
    • ccp4plugin: updated source comments.
    • edmplugin: Fixed volumetric grid aligmnent for the X-PLOR map reader. It was scaled in each dimension by an extra factor of N/(N-1).
    • Added comments regarding the beneficial properties of summing subgroups of atoms in the coulombic potential kernels, as applied to floating point precision.
    • pmepot: Add ability to update selection for each frame.
    • psfgen: Look up atom type id when writing CHARMM format psf file, allowing an X-PLOR format psf file to be read and translated to CHARMM format as long as the required topology files are loaded.
    • fmtool: Updated comments about the shared mem version
    • fmtool: Added a shared memory variation, though it presently runs quite slow.
    • fmtool: Added CUDA ptx target
    • Removed recursion from the loop and path finding routines used by the carbohydrate representations.
    • Added intstack_empty() needed for the ring finding routines used in carbohydrate analysis.
    • Added carbohydrate rendering patch from Simon Cross. Only render rings and paths if all atoms in them are selected. Add an option to not display paths which share edges with other paths. Tweaked the position of the "Automatically Apply Changes" button in GraphicsFltkMenu.C and add a shorter version of the IsoSlider widget in an attempt to make the widgets in the interface for Twister and Paperchain parameters not overlap with other widgets or the default window border.
    • pbctools: PBCTools plugin version 2.1 updates from Olaf Improved error handling. Added -verbose option to wrap, unwrap and join. Added -check option to pbcget: checks the cell parameters for validity. Added generic pbcwrap_coordinates function to wrap coordinates into a unit cell around another coordinate. First implementation of pbc join.
    • Added new 'interp' volmap type. This type interpolates an atomic structure onto a map using an arbitrary weight.
    • fmtool: print timestep info at the requested output frequency rather than hard-coded at every 256 timesteps.
    • fmtool: updated the "null" test kernel to measure overhead in the current version, updated the timestep output code to occur at the output frequency rather than every 256 steps.
    • fmtool: compacted the code in the new kernel, and added comments about the design and performance criteria for both the original kernel used in the 4Pi submission, and the new one.
    • fmtool: duplicated the kernel used for the 4Pi paper and renamed to calc_grid_cudakernel_4pi() so that we can compare subsequent performance values with those published in the 4Pi paper.
    • fmtool: Eliminated various testing code since the CUDA version runs well now.
    • fmtool: fix usage message for CUDA params
    • inorganicbuilder: Screenshots to go with the docs
    • inorganicbuilder: Added docs for the GUI.
    • inorganicbuilder: Changed GUI for entering cylinders and cones, to hopefully use a more intuitive way for users to describe shapes to system
    • inorganicbuilder: GUI uses either files or loaded molecules for obtaining molecule information. If the user selects a loaded molecule, the GUI gets the files that were used to load that molecule, otherwise the user can browse for PSF and PDB files separately. Numerous other bug fixes and cleanup too.
    • applied Axel's patch to fix the frame range check in the measure gofr commands as reported by Philipp Schoen.
    • molefacture: Fix problem with running molefacture multiple times in one vmd session
    • molefacture: Add ability to merge molefacture edits back into parent molecule
    • fmtool: more speed tweaks. Got rid of extraneous calls. Cleaned up variable passing to fcts some. Overall, time for test execution went from 6.05 seconds down to <5.2.
    • fmtool: cuda version is now returning good answers
    • fmtool: added a -v option to print out all of the repeated input information at the beginning. Default is to not print it.
    • fmtool: wait for cuda thread to finish before running next timestep, just for paranoia's sake while doing initial performance tests. We will want to maximize asynchronous operations as the kernel matures, but this is a good start.
    • fmtool: change array organization for the h/h_det/... arrays when copied to the GPU so that only a single index calculation is required. they are copied to be boundary-padded in the same way that pold/pnew are.
    • fmtool: Added in branches to deal with boundary values in the CUDA kernel. This negatively impacts performance, but for these kernels, we're already very much dominated by global memory load times, and so the minor overhead added by the branching should be insignificant.
    • fmtool: added a 'outputFrequency' option to the config file that determines how often the observable calculation is saved to the file (and how often it is even calculated). Default value is 1. So, if you don't have the outputFrequency specified the config, it falls back to the current situation.
    • fmtool: eliminate unused Nz parameter from CUDA kernel
    • fmtool: remove redundant error check
    • fmtool: movr GPU data copies out into the observable calcualation area, since that is the only time the CUDA code should really need to propagate the data back to the CPU.
    • fmtool: Sorted global memory references in the CUDA kernel and eliminated unnecessary parameters for the grid update kernel, since they are only needed for calculating obervables.
    • fmtool: lots of cleanup and organizational changes for the nascent CUDA kernel
    • fmtool: more tweaks. double version gets the exact same results as anton's original. single precision version is off by a bit (0.0124% over 300,000 timesteps, for instance).
    • fmtool: Properly include newly added hydrogens in topology files that are written by molefacture
    • fmtool: Allow users to add residues to an existing protein chain
    • fmtool: Added more safety checking int CUDA routines. Both null and real kernels run, but the thread indexing and grid size has to be changed to account for padding layers, etc.
    • fmtool: Numerous fixes and additions to the CUDA kernel
    • fmtool: Added pinned/regular buffer allocators for use by the CUDA routines
    • fmtool: Added CUDA device attach code
    • fmtool: force 32-bit compiles for fmtool CUDA kernel for the linux-cuda builds
    • fmtool: uncomment cuda functions
    • fmtool: updated real cuda function from the threadsim variation, and changed floating point constants to explicit float values for better performance.
    • Cranked version number
  • VMD 1.8.7a4 (June 26, 2007)
    • fmtool: still digging for the bug. committing some other cleanups that don't affect the answers.
    • fmtool: tweaks to the thread/threadsim fcts to make them produce the same results as the earlier versions. Changes to threadsim still need to be put back into the real cuda version
    • fmtool: added cubin target and matching cleanup steps
    • fmtool: Added more prototype cuda code
    • fmtool: just removed some commented out parms
    • fmtool: Verified that the float version (CPU) obtains the same answers while using the cudacheck function (as before).
    • cionize: Updated cionize makefile for CUDA 1.0
    • Updated VMD compiler paths for CUDA 1.0
    • fmtool: updated compiler path for CUDA 1.0
    • autopsf: Avoid a potential buffer overrun
    • mol2plugin: Allow trajectory read/write (trajectories are represented as several separate complete mol2 blocks)
    • fmtool: knocked out a couple more bugs. Should now produce the same answers as anton's pre-optimized version
    • fmtool: cleanup, removed debugging stuff
    • fmtool: Added multi-build Makefile
    • fmtool: Added CUDA handling to the main program
    • fmtool: converted new/delete to malloc/free to make CUDA conversion and comparisons simpler.
    • fmtool: eliminated unnecessary includes
    • fmtool: moved tmp1 calculation outside the nested loops. Storing results in an array that then is accessed from the inside. 9.8% speed bump.
    • fmtool: added CUDA build machinery to the custom Makefile
    • fmtool: comment/fct ordering tweaks
    • Cranked version number
  • VMD 1.8.7a3 (June 22, 2007)
    • Added the carbohydrate rendering code to the win32 builds
    • fmtool: Made the default run case do a double precision, no explicit boundary condition checking case. The first two fcts in the time_steps file are the most relevant ones. The first is double precision, the second is single. fmtool -n is now the default (for no explicit boundary condition checking) fmtool -d does double precision with explicit BC checking -s is single precision with no explicit BC checking -e is double prec/explicit/ with observable accumulation pulled out -o is double prec/no explicit/ with observable accumulation pulled out -e and -o can likely go away. Just had them in for testing. added a few more versions of the time_step function.
    • fmtool: avoid double-counting the corners
    • updated Win32 registry keys
    • disable carbs for the present time.
    • Cranked version number
  • VMD 1.8.7a2 (June 21, 2007)
    • fix minor /bin/sh portability nit in shell check
    • Make Intel C builds use -i-static for static linkage of Intel libs.
    • prettied up CPU messages
    • Added a manually unrolled 8-voxel-at-a-time loop for the CPU SSE version of the coulomb map code
    • Added built-in GFLOP counting for CPU version
    • Updated the coulomb potential timer code to get along more nicely with the Intel compilers.
    • Changed timer codes to use the newer timer system, which handles large runs and large system time values much more cleanly.
    • fmtool: fixed warnings in error output statements
    • fmtool: Added binary file read/write support through binary_gridio.[ch], define constant BINARY_GRIDFILE to build support. Added timer for initial grid computation. Added keyword MULTIGRID support for config file to enable multilevel sum.
    • fmtool: added the ability to calculate using single or double precision. Default is double. Single (for the time being) is just a copy of the time_steps_xy_to_r method with doubles replaced by floats. Command line option.. -d specifies double (not needed), -s specifies single precision. At the current time, it is very simply passing in single precision versions of the arrays to the method and getting them back as single. Initial testing seems to show that results are the same out to 6-8 significant figures, but anton will want to test with his large test case.
    • fmtool: just a couple of comments.
    • fmtool: moved p, pnew array allocation into the time_step fct.
    • ruler: Ruler: cosmetic changes + better handling of ruler colors when VMD is in gradient background mode.
    • Added Twister graphical representation algorithm implementation by Michelle Kuttel and Simon Cross.
    • Added linkage classes used by the Twister carb display algorithm
    • Take Jordi's patch to check scene rather than display for querying background mode.
    • paratool: minor documentation improvement
    • paratool: simple bugfix that affects fixing/unfixing of internal coords.
    • inorganicbuilder: Two changes: Made cancel button do a wm withdraw, so that the window gets restored when the Extension menu option is reselected. Added an option (GUI and codE) to solvate hexagonal structures. I just realized however, that my solvate code is not going to produce a complete PSF file. Since I'm using VMD to delete atoms, VMD's writepsf command is not going to generate angles and dihedrals. I'll have to run everything through psfgen once more to fix this.
    • Split the boundary condition loops from the interior loop
    • fmtool: removed second grid loop. Didn't think it affected anything, and the resulting dat files seem to be about the same as before. Time went from 25 to 20 seconds
    • fmtool: prep for splitting of interior/exterior cases
    • fmtool: Move accumulation of r with dr to the end of the loop so it starts with rmin.
    • fmtool: move pointers around instead of copying arrays from one to another
    • inorganicbuilder: Added [file normalize] to all the mol new and mol addfile calls, so that calls to molinfo get filename return path information, in case the current dir changes after the molecule is loaded.
    • fmtool: Added output file checking
    • fmtool: made more things const, took out an *=
    • ruler: Ruler: Now will be visible and look good for almost any background color.
    • inorganicbuilder: Fixed parameter name for molinfo get
    • fmtool: Added ICC build
    • fmtool: more tweaks to clean up compiling.
    • fmtool: added a secondary makefile to make hacking for special ICC/CUDA builds easier.
    • docs: updated the Tcl "color" docs
    • color: Added a "color rbg " command to return the RGB values assigned to a given color.
    • color: calling "color " now returns the name of the color associated with that setting.
    • ruler: made it automatically loaded by VMD on startup
    • ruler: A dynamic ruler plugin for VMD. It display a scale for the top molecule, and its various modes can be activated by calling: "ruler [tape|grid|scale]", and turned off using "ruler off". In this version, the tape and scale modes only work well when using a clear background color (i.e. not Black).
    • inorganicbuilder: Added GUI for the solvate function, changed Merge molecules function to work with file names extracted from loaded molecules (so we get the real PSF file name, not the incomplete one produced by saving a selection).
    • fmtool compiles cleanly, ran through indent, and started (very preliminary at this point) cleaning up a few of the conventions
    • Added Anton's fmtool code and test data, but lots of work needed.
    • Added C source for the inorganic builder plugin
    • Added materials files for the inorganic builder
    • Added Rob's inorganicbuilder plugin
    • added initial 64-bit CUDA support to the configure script
    • Added 64-bit CUDA target
    • Added GFLOP counting and info messages to the CUDA volmap coulomb code.
    • cionize: eliminated chatty output messages during the ion placement phase
    • cionize: updated with benchmark from test code with CUDA 0.9
    • cionize: Updated unroll4x kernel comments and matched it with the current test kernel codes.
    • cionize: Fix FLOP count comments for Unroll4x kernel
    • cionize: eliminate spurious CUDA device messages when placing ions, and added GFLOP counting for the main grid calculations.
    • cionize: updated for CUDA 0.9
    • cionize: use full pathname for NVCC so that it can find its libs etc.
    • Updated VMD CUDA kernels for CUDA 0.9
    • dowserplugin: Fix typo in atom selection found by Chris Harrison.
    • cionize: Added special makefile used for doing CUDA-enabled builds, test versions of variations of the ML summation kernels, etc.
    • cionize: Added binary grid I/O files for use with accuracy test builds etc.
    • Changed write_matrix() output to use %g instead of %f. This allows values lower than 0.00001 to be displayed accurately, which is necessary to implement a Tcl-based dynamic grid/ruler.
    • Added startup script mods for 64-bit PowerPC
    • Cranked version number
  • VMD 1.8.7a1 (May 24, 2007)
    • added LINUXPPC64 distrib target
    • cgtools: Per anton, added in the ability to determine the bond cutoff information from the all atom model. Before, it was done using a cutoff. Now the user can choose to use the cutoff distance, but it uses the information from the all atom model by default
    • Added conditional compilation tests for 64-bit PowerPC Linux builds.
    • more IU BigRed updates
    • further PPC64 fixes for IU BigRed
    • Added IU BigRed as a build target for the plugin tree
    • cionize: Add tcl command line interface for cionize-based ion placement
    • cionize: Fix exclusion problem in intel threading case
    • qmtool: Fixed a weakness of the Gaussian logfile parser that would make it fail on some zmatrix based structures.
    • Volmap: added extra newline in some cases when writing DX files for greater consistency
    • autopsf: Reorganize how options are presented (in preparation for adding a bunch more)
    • autopsf: Add -splitonly option to exit after splitting chains (useful for using autopsf with other applications)
    • autoimd: AutoIMD: Now remember rep on/off and drawframe states between AutoIMD sessions
    • cionize: Sort atoms by geometric hashing (define MGPOT_GEOMHASH). It is as good, if not better, for practical use, and it can double the performance of a randomized set of atomic positions.
    • AutoIMD: If the simulation can't connect and there's an obvious error in the NAMD logfile, it is now relayed to the user (so they don't have to go hunting for the autoimd.log file).
    • molefacture: Remove some unneeded output Clean up unused temporary molecules
    • Added target for Intel C SSE builds for GPU comparisons
    • Added flags and handling logic for Intel C compiler on 32-bit Linux builds, so we can do Intel C SSE benchmarks.
    • The min/max bounds of the grid used to accelerate the 'within' distance selection was being done after the grid dimensions and memory allocations for the grid were performed, leading to potential trouble in some cases.
    • Don't import python hotkeys by default, otherwise, we'd be doing both Tcl and Python callbacks on each hotkey event, which is probably not what people want. If people want to build their own VMD with no Tcl interface, they can take it upon themselves to import hotkeys for themselves.
    • Make UIText do python callbacks whenever a Python interface is present. Currently, python callbacks are called only if a Tcl present is not present, which is effectively never.
    • Must call PyType_Ready() in py_atomsel; otherwise, for example, setting the frame of an atomsel object fails until after the first time one gets the frame.
    • Add J.C.'s new hbonds plugin.
    • Added VMD timer routines based on the portable implementation from Tachyon.
    • cionize: Define MGPOT_SPACING_0_2 to use mgpot with Coulombic lattice spacing 0.2 A. Mgpot modified to use h=1.6, a=9.6 (to keep ratio same as h=2, a=12 case) so as to give interpolation scaling factor 8 (= h/spacing).
    • change linkage for the CUDA constant buffers to static so that they are file scope only.
    • cionize: define MGPOT_SPACING_1_0 to use mgpot with Coulombic lattice spacing 1.0 A
    • cionize: changed GPU data buffer from entire lattice to slabs to avoid memory limits
    • cionize: back to using cudaMemset
    • cionize: For GPU-based placements, only use the GPU for ion placement updates if we have a big enough grid to make it worthwhile
    • cionize: run long-range and short-range parts in different threads
    • cionize: set defined constants back to 'CUDA'
    • cionize: made the __constant__ buffers static, so they have file scope linkage only.
    • cionize: mgpot short range with CUDA, define MGCUDA to build
    • molefacture: Allow the use of custom base fragments
    • improve debuggability of molefacture as suggested by Axel
    • molefacture: Fix missing brace caught by Axel
    • Fix incorrect TCL error strings.
    • Pretty up documentation of new measure commands.
    • atomedit: Use Courier as the default fixed font.
    • paratool: Improved control over label sizes Use Courier as the default fixed font. In contrast to tkFixed it does not render with too much size difference on different architectures. Added a flag for analog parameters in the internal parameter listbox
    • paratool: Replaced Tcl based measure commands by the new C++ based ones.
    • qmtool: Replaced the Tcl based measure commands with the new C++ versions.
    • cionize: incorporate performance improvements, vectorize loops on Intel compiler
    • dowser: Fixed a bug that occurred when the top molecule was a map.
    • molefacture: Allow inversion of chirality and add a button for it Also, add ability to save mol2 files from molefacture gui
    • molefacture: Clean up the protein builder to give much nicer alpha helices; also fix a bug where they sometimes 'kink' on long sequences
    • autopsf: Recognize .rtf files as charmm topology files (silly naming collision with rich text, but this has been bothering people)
    • fixed the /bin/csh test parameter
    • cionize: Include the proper headers for updating ion positions with CUDA.
    • configure: Added check for /bin/csh in the install target and generate a warning message when necessary. Some Ubuntu distributions don't include /bin/csh by default. Eventually we may replace the existing startup script with something written for the POSIX 1003.2 standard (Bourne shell derivative, which is also the basis for bash and others), but until then we should at least generate a warning if /bin/csh is missing.
    • rmsd_matrix: Fixed bad link in the docs.
    • Fix additional bgf/xbgf/mol2 badness
    • cranked minor versions of bgf and xbgf plugins
    • mol2plugin: several memory allocation/deallocation bugs similar to bgfplugin and xbgfplugin, as well as some mismatched new/delete/malloc/free usage.
    • Fix identical memory leaks in the bond reading codes for bgfplugin and xbgfplugin.
    • Added Jan's fix for a memory leak in part of xbgfplugin We'll need to verify this and also likely check the bgfplugin just to make sure it doesn't contain the same problem.
    • Fix a bug in the error handling code for "gettimestep", where a call to Tcl_AppendResult() was missing the final NULL.
    • cgtools: removed the namespace export and renamed the reverse cg instances to actually be reverse cg (instead of all-atom reconstruction)
    • updated development hardware lists
    • Updated source file/directory structure listing
    • Development plan update begins.
  • VMD 1.8.6 Final Release (April 7, 2007)

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

footer