Create, edit, and visualise atomic coordinates

Aten is a tool for computational chemists, molecular dynamicists, or other poor souls who find themselves wondering if there is an easier way to create and edit the suitable atomic configurations they need, be it for the purposes of their research or, indeed, pleasure (but this would be a little worrying). More so, Aten was created for those (well, principally me) who wonder if there is tool that can handle periodic systems well. At the time of Aten's inception the answer was, in my opinion, 'No'. Aten attempts to at least partially fill this void.

Aten can:
  • Edit molecules and multi-molecule configurations, or build them from scratch
  • Handle periodic configurations such as crystals and condensed phases such as liquids
  • Be fully scripted / automated
  • Import/export coordinates in the format of your choice with its Filters system
  • Run on Linux, Mac, and Windows
News

25th May 2009 - Annoying and unexpected file-related bugs fixed in the 1.2 release for windows. New files are ready for download.

23rd May 2009 - Version 1.2 is now up for download. Many things have changed in this release (see the changelog) so there are likely to be a few bugs remaining.

20th May 2009 - Version 1.2 will be released at the end of the week. New (infinitely better) scripting language syntax and plenty of bugfixes and feature additions. See the changelog so far...

20th May 2009 - A whole month later, and version 1.1 is up. This will be the last version to support the current script/filter language style. See the changelog for more info.

20th April 2009 - NEW VERSION IMMINENT!

22nd January 2009 - Some screenshots added.

16th December 2008 - Command reference reformat and update. Command Index finally available.

11th December 2008 - Users can now: login with OpenID, watch pages/articles etc.

9th December 2008 - Version 1.0 released! Note: Forcefields are now supplied as separate downloads from the forcefields page so they may be actively maintained, separately from the code.

17th November 2008 - New website finally up. Hopefully this will be the last 'new' website for a long time!

Contribute

Everything on projectaten.net is open to unregistered users, but if you feel the need to contribute, why not register and help out by improving the manual Wiki, adding a new forcefield or tweaking an old one? If you've done something particularly useful with Aten, why not write a tutorial or an example so others can benefit? If you find a bug or a quirk, report it (please!) and if you have a question head over to the forums.

Bug Tracker Tutorials Examples Download Now! Forums
SVN Changes (since release 1.2 on Sat 23 May - 21:11)
Revision 964
  • Fixed definition for 'scaleinterpolate'.
  • Adjusted 'surface' filter to fail properly if next data point cannot be read.
  • Moved version information from main/aten.h to main/version.h to make rebuilding after even minor changes a little less tiresome.
  • Corrected filepaths listed in header of files in src/main.
Revision 963
  • Added missing calls for GlyphDataVariable accessor searching etc. Added proper recognition of mismatched types in constant array declaration.
  • Fixed - Retrieval (resetting) of constant array values involving expressions did not work correctly.
Revision 962
  • Supplying a non-existent filter nickname to 'savemodel' now prints out a list of available filter nicknames.
  • Added better access to glyph data - new GlyphDataVariable, and reworked Glyph class to use GlyphData as proper members.
  • Added 'getenv', 'getenvf', and 'getenvi' commands.
Revision 961
  • Added 'fixpattern' command and 'fixed' Pattern accessor to allow whole patterns to be fixed in minimisations.
  • Fixed - Missing progress indicator when using disordered builded from CLI.
  • Fixed - Win/Mac builds, related to zero-sized function accessor arrays.
  • Fixed - Model zoom was not correctly linked to cached trajectory frames.
Revision 960
  • Fixed - 'cgminimise' command was not expecting an 'ncycles' argument.
  • All minimisation commands now assume a default of 100 cycles if no number is specified.
  • Added optional argument to GuiQt::progressUpdate() to store short ETA text instead of printing in order to make some output (e.g.
  • minimisers) a little neater in the CLI.
Revision 959
  • Power operator now always returns a real (double) result.
  • Adjusted parser to better handle declaration list errors.
  • Fixed - Constants with exponentiations were not parsed correctly.
Revision 958
  • Added new region example script (scripts/regions2.txt).
  • Bug - Locally-scoped variables (e.g.
  • in loops) with initial values are never re-set (behaving effectively as static vars).
Revision 957
  • Added missing (empty) function definition arrays to Access classes.
  • Added 'regionrotation' command and Region accessors.
  • Bug - Region rotations around both x and y axes simultaneosly are incorrect.
Revision 956
  • Added basic glyph accessors.
Revision 955
  • Added checking for NULL pointers in variable paths.
Revision 954
  • Fixed Mac build - headers for proprietary Qt widgets did not have correct path specified for headers in .ui files (since canvas.cpp moved to src/render).
Revision 953
  • Tidied TreeNode and Parser.
  • Moved CommandNode::checkArguments() to TreeNode and made more general.
  • Added code to allow variable accessors which are functions and accept one or more arguments.
  • Added 'dotproduct' command.
  • Removed old src/command/variables.cpp' from repo.
Revision 952
  • 'expand' command now takes optional argument for number of times to perform expansion.
  • Fixed bug with selection by element using 'select' command.
  • Removed old src/energy directory and files from repo.
  • Model::copy() no longer uses a (slow) Clipboard to copy atom/bond data.
  • Position window allows coordinates to be locked when centering.
  • 'centre' command now takes three optional booleans specifying locked coordinates.
  • Added hide/show undo states.
Revision 951
  • Torsion angle calculations involving collinear bonds would return NaNs - added check to Vec3<>::normalise() (also for Vec4<>) to check for and catch effective zero magnitudes.
  • ANother small fix to 'dlpoly' expression export filter.
Revision 950
  • Adjusted MC disordered builder to accept component models specified with '0' molecules to allow for dummy regions to be specified.
  • MC minimiser would generate errors if a pattern had no molecules - fixed.
  • Default value (-1) for parameter to GuiQt::progressUpdate() was not set - fixed.
  • Tweaked output of MC disordered builder.
  • Fixed crash when attempting to create unique ff term lists without a valid expression.
  • Another missing ModelVariable accessor definition added (broke DL_POLY field export, for example).
  • Fixes to constraint handling in 'dlpoly' expression export.
Revision 949
  • Corrected 'regioncentrefrac' command - was misspelled as 'regioncentreffrac'.
  • Ring search routine was 'broken' because of bad logic - fixed.
  • Made verbose NETA output a little clearer for element matching.
Revision 948
  • Added finer control of arrow-key rotation of model - holding SHIFT now reduces step to 1 degree.
  • Spacegroup packing was not correct for Centric spacegroups - fixed.
  • Updated scripts/alumina.txt.
  • Added prefs limit to ring detection (default = 20).
  • Fixed/improved rendering of bonds.
  • Corrected some spinedit controls in Prefs window (stepsizes and minimum values for atom/bond radii).
Revision 947
  • Added missing accessor definitions to ModelAccessors (missing terms played havoc with nearly all filters).
Revision 946
  • Rejiggered measurement storage in Model.
  • Added measurements and unique FF term accessors to ModelVariable.
Revision 945
  • Some widgets (manually created ones) were still disabled on toolbars after a progress indicator had been called - fixed.
  • Add flag in colourscale to turn off interpolation between colour points.
  • Partial implementation of non-interpolated colourscales.
Revision 944
  • Better disabling of GUI for long operations.
  • Progress indicator updated.
  • Parser did not recognise character literals enclosed in single quotes - fixed.
  • Fixed crash when rendering offscreen and checking whether to draw extra cell-related graphics.
  • Added ETA to progress indicators.
  • Rewrote Model::replicateCell().
  • Fixed bug in Clipboard::pasteToModel() where redoing a translated paste operation would lose the translation.
Revision 943
  • Fixes to many compiler warnings (icpc).
Revision 942
  • Tidied matrix3.h and matrix4.h, and fixed overflow error in Mat3::invert().
Revision 941
  • Removed unused templates/vobject.h.
  • Rejigged ComponentRegion - size_ member is now geometry_, and added in rotations_ member.
  • Cylinder regions implemented.
  • Point generation/checking inside regions improved, and region rotation implemented.
  • Rewrote matrix inversion routines to work with standard class data members.
  • Updated Disorder window.
  • Moved canvas.h|cpp from src/gui to src/render for consistency.
Revision 940
  • Fixed parser bug - '=-' would break parsing (e.g.
  • i=-10).
  • Saving of command toolbar entries in program prefs was not finished - now it is - default command storage set to 25 items.
  • Command toolbar's QCompleter now set to display unfiltered list of entries.
  • Saving of program QSettings was not working - add a call to sync().
  • Model::selectLine() was mistakenly comparing squared and unsquared distances - fixed.
Revision 939
  • Minor fix to text progress indicator update.
  • Added inverse trigonometric functions 'acos', 'asin', and 'atan'.
  • Memory leak fixed: LineParser was not freeing fstream object on destruction.
  • Overflow fixed: creation of text in CellDefine tool window.
  • Data members in various places had not been initialised - fixed.
Revision 938
  • Fixed undo state messages for atom transformations (extra newline present at end of text).
  • Added progress bars to copy/pate operations.
  • CLI option '-f/--format' was not taking an argument - fixed.
  • Internal improvements to progress indicator usage.
  • Increased number of decimal places in some GUI SpinEdits.
  • Fixed update of view after changing cell parameters.
Revision 937
  • Finished reformatting of command descriptions.
  • 'selectline' now fully implemented.
Revision 936
  • Partial reformatting of command help descriptions.
Revision 935
  • Added 'selectline' command and Model::selectLine() function stub.
Revision 934
  • Fixed folding of atoms in fractional coordinates (led to crashes elsewhere).
  • Added Model::selectMiller() function and 'selectmiller' and 'millercut' commands.
  • Updated CellTransform window.
Revision 933
  • Rewrote Model::selectOverlaps() to use bonding cuboids for efficiency.
  • Added basic GUI functions and code stubs for performing Miller plane cuts.
Revision 932
  • Updated Model::beginUndoState() to accept arguments in the same way as printf() in order to make naming of undostates a little neater in the code.
  • Fixed atom flip (using Model::mirrorSelectionLocal).
  • Fixed new CLI argument parsing - arguments to options were being grabbed a little too readily.
  • Grid variables were not entirely implemented - fixed.
  • Added 'gridvisible', fixed 'getgrid'.
Revision 931
  • Minor changes to parser lexer - skipped ascii code 13 (carriage return) as whitespace to allow correct parsing of DOS-formatted text files/filters on UNIX machines.
  • Adjusted filter location warning text.
  • Reworked CLI parsing to accept long options of the form '--opt=value'.
  • Changed Cell:fold() to work on multiples of cell lengths so atoms in any position are folded correctly.
  • Modified Bison associativity for AND and OR from 'nonassoc' to 'left' to allow multiple consecutive tests.
Revision 930
  • Minor changes to parser lexer - skipped ascii code 13 (carriage return) as whitespace to allow correct parsing of DOS-formatted text files/filters on UNIX machines.
  • Adjusted filter location warning text.
  • Reworked CLI parsing to accept long options of the form '--opt=value'.
Revision 929
  • Reverted 'corrupt' root Makefile.am.
Revision 928
  • Added QCompleter to command edit in GUI.
  • Fixed creation of 'keepnames' forcefields so they are named before (potentially) being set as the default FF.
  • Program settings now save command (toolbar) history.
Revision 926
  • Added relative path to default search locations for data directory.
Revision 924
  • Reverted LineParser to instantiate new (and delete old) fstream object as and when necessary, owing to problems with having an fstream data member to work on many different (sequential) files under Windows.
  • Fixed user home directory probing under Windows (wrong environment variable was used).
Revision 920
  • Fix to Windows default filter path.
Revision 919
  • Reversioned to 1.3.
Revision 918
  • Changed version in debian.changelog.

Online users

10 online users