April 29th, 2013
· Synced gamgi and gamgi_exp source branches.
· Updated make_local, to include the paths: -I/usr/lib/i386-linux-gnu/glib-2.0/include, -I/usr/lib/i386-linux-gnu/gtk-2.0/include, used by Ubuntu.
· Fixed a bug in the new solid orbital code: the r length test makes sense in the wired representation but not in the solid one!
· The new recursive code works for bit arrays as large as 160x160x160, in the worst case.
· The recursive code to find outer surfaces is crashing for bit arrays larger than 50x50x50. Looking for a loop alternative.
· Orbital code: wavefunction interpolation to produce the triangle-based representation is working really well.
· The triangle-based 2D solid rendering of planar surfaces in H-based orbitals is now well tested and working fine! This is crucial to build a octant-based representation of these orbitals, where users can choose which octants to show.
· Added new mirrors, http://atom.ist.utl.pt and ftp://atom.ist.utl.pt, to futurely host gamgi.org.
· Added nice structure and info files for high-temperature beta-quartz, beta-cristobalite and beta-trydimite.
· Implemented a new mirror: http://gamgi.ist.utl.pt/ or http://www.gamgi.ist.utl.pt/.
· Simplified the way H-Orbital octants are selected in Wired mode.
· For each H orbital octant, wrote the topological code to build all the triangles needed to describe the outer 3D isosurface (tetra-cubes algorithm), plus the internal 2D octant boundaries.
· For each H orbital octant, wrote and tested the bit array code needed to eliminate the inner isofurfaces and show only the outer one.
· Simplified the octant binary code in gamgi_chem_orbital.c.
January 15th, 2013
· Improved readability in all Object->Copy dialogs.
· Added documentation for Orbital->Create, Orbital->Copy, Orbital->Link and Orbital->Remove.
· Upgraded Help->Current and Help->Topic to allocate Orbital->Create, Orbital->Copy, Orbital->Link, Orbital->Remove.
· Synced gamgi and gamgi_exp trees.
· Orbital->Link is now working fine (lists of orbitals not implemented yet).
· Fixed a glitch in all link_object.html files, resulting in a GAMGI error message when the Help sub-system tried to open one of these files.
· Orbital->Copy is now working fine (lists of orbitals not implemented yet).
· Orbital->Remove is now working fine (lists of orbitals not implemented yet).
· Started building the dialogs Orbital->Copy, Orbital->Link, and Orbital->Remove.
· The Octants layout, in the Orbital->Create dialog, is much more intuitive now.
November 3rd, 2012
· Synced gamgi/ (with GtkGLExt) and gamgi_exp/ (with GLX) versions.
· Filtering volume octants are now working fine for H orbitals.
· Completed search for best default values for H based orbitals. Default density is 1E-6, which is needed to show all regions in 6s orbitals. Points is 50000 x n, which is a reasonable compromise. Default radius is calculated scanning from the last maximum in f2r2 radial density, plus a 2.0 minimum length, until the maximum density (searching on theta, phi) becomes lower than the default density.
· Improved, redesigned the Orbital->Create dialog.
· H orbitals are now working fine in Gamgi. Looking now for the best default values.
· Added all the code needed to build and render H orbitals.
· Optimized H orbital code for speed.
· For all Hydrogen based orbitals from n = 1 to 6, calculated the distances for radial polinomia maxima.
· For all Hydrogen based orbitals from n = 1 to 6, calculated the distances for radial polinomia zeros.
· Orbital objects can now be created, scaled (around the current center), moved, rotated, as any other Gamgi object.
· Completed the dialog Orbital->Create to build Hydrogen based orbitals.
· Wrote the graphic engine code to render Hydrogen based orbitals in dotted mode.
· Added and tested the s, p, d, f, g, h Hydrogen based orbitals for n = 6, in cartesian x,y,z coordinates.
September 5th, 2012
· This version adds all the Laguerre and Legendre functions needed to build Hidrogen-based atomic orbitals up to 5g, in xyz coordinates.
· It has been successfully tested with dotted models of s,p,d,f,g Hydrogen based orbitals up to 5g.
· It has good algorithms to build surface models of orbitals.
· There is an initial version of the dialog Orbital->Create.
· This release fixes two bugs on importing/exporting clusters and groups to XML files.
April 17th, 2012
· This version adds structure (xml) and data (txt) files for the following model structures: alpha-Mn, beta-Mn, alpha-U, Al3Ti, Cr3Si, Al3Zr4, Fe3C (cementite), Al2O3 (corundum), CatiO3 (perovskite), MgAl2O4 (spinel), Fe2B, CdI2, beta-quartz, AuBe5, CaCu5, TiO2 (rutile), ZnWO4, plus Laves phases Cu2Mg, MgZn2, and MgNi2.
· It adds models for martensitic transformation: Bain, Nishiyama-Wassermann and Kurdjumov-Sachs.
· It adds a graphene structure to illustrate carbon nanotube (p,q) classification, fixes a bug in Plane->Modify and Direction->Modify, and adds screenshots about object lists to www.gamgi.org.
February 13th, 2012
· Arbitrary lists of crystallographic families of (hkl) planes and [uvw] directions can now be easily created, for all models supported, with Plane->Create and Direction->Create.
· Arbitrary lists of Planes and Directions (previously selected with Plane->Select and Direction->Select) can now be handled exactly as a single object, with Plane->Modify and Direction->Modify.
· It fixes a few bugs.
June 20th, 2011
· Added the most important cristalline structures derived from cfc, bcc, hcp to dat/cell/structures.
· Synced gamgi/ and gamgi_exp/ code trees.
· Found and removed a recent bug in scale code: individual lights were not scaling with the mouse.
· Fixed dat/cell/interstices/ files that still used type instead of label to designate atom types.
· Built Chalcopyrite with space group 122: the structure is correct.
· Space groups 119, 120, 121, 122 were given as P groups, should be I. Fixed. Group 119 had positions a,b,c,d with symmetry -42m, should be -4m2. Fixed. Checked lattice and symmetry labels for all other tetragonal groups: they are correct. Checked Wyckoff positions for groups 119, 120, 121, 122: they are correct.
· Found and removed a bug in Plane->Create: area tolerance to dismiss plane creation in a range is too small.
· Found and removed a bug in Layer->Modify: layer names were not copied.
· Started buiding a comprehensive data base of representative crystallographic structures, based on the book "Structure of Materials, by M. de Graef and M. E. McHenry".
· Designed a GTK dialog to handle lists of crystallographic planes in Plane->Create.
· Fixed a HTML glitch in the CsCl tutorial.
· Started building a dialog to create ranges of crystallographic planes.
· Replaced the id mechanism to handle translation, rotation of lists of recursive objects, by the much simpler, slightly faster, marking algorithm that also works for scaling. Rotation, translation, scaling of lists of recursive objects works fine now, and the new algorithm does not interfere with all the other translation, rotation mechanisms devised earlier. This essentially completes the conceptual work, planned 10 years ago, but only initiated in October 2009, to handle lists of objects exactly as a single object.
· Designed, implemented a simple, fast algorithm to scale lists of recursive objects. It works also for rotations, translations.
· Started working on gamgi_gtk_plane_set.c and gamgi_gtk_direction_set.c, to create flexible sets of crystallographic planes and directions.
· A unique id number is now generated for all rotation tasks, for example to avoid repetitions when rotating lists of recursive objects.
· A unique id number is now generated for all translation tasks, for example to avoid repetitions when translating lists of recursive objects, such as texts, groups, clusters or assemblies.
May 23rd, 2011
· Synced gamgi/src and gamgi_exp/src code branches.
· Synced all the interfaces documentation: www.gamgi.org, ftp.gamgi.org, gamgi_doc and gamgi-exp_doc. Fixed a tag position inconsistency in CSS notebook code.
· Updated the documentation for all the Object->Link dialogs.
· When giving focus to a list of objects, now checks first if the list is empty.
· Updated the documentation for all the Object->Copy dialogs.
· Fixed a little GUI bug in Layer->Copy: (disable Local in object mode).
· Developed a flexible, simple, fast, mechanism to identify each instance of tasks such as rotating and drawing with a unique id, to properly handle multi reentrance in the same object.
· Removed gamgi_global_selection_draw, replaced by equal function gamgi_mesa_draw_gamgi.
· Added code to implement task ids: tasks such as drawing, scaling, rotating, translating will have a unique id attached, to prevent bugs in objects with multiple parents, such as bonds, and lists of recursive objects, such as texts, groups, clusters and assemblies.
· Lists of pre-selected objects can now be interactively scaled (dragging the mouse or clicking the ruler), exactly as before for a single object.
· Lists of pre-selected objects can now be interactively translated (dragging the mouse or clicking the ruler), exactly as before for a single object. It works quite fast for 1500 atoms, on two different windows!
· Lists of pre-selected objects can now be interactively rotated (dragging the mouse or clicking the ruler), exactly as before for a single object (needs more testing).
· Code disabling selection lists when listed objects are removed is now also disabling global focus for those lists.
· We are a step closer to rotate,move,scale lists of previously selected objects: code to select objects or lists of objects, including statusbar info and all the required internal data (just gamgi->focus), are now working fine.
February 17th, 2011
· Coordination and Voronoi polyhedra can now be exported/imported from XML files.
· Polygon planes and Line directions can now be exported/imported from XML files, as totally independent objects.
· Planes and Directions in stereographic projections can now be scaled as with any other object.
· New functionality was added for Plane->Create, Direction->Create, Group->Create, Plane->Measure, and Direction->Measure.
· Code involving the ugly concept of dependency was removed for Planes, Directions, and Groups.
· Bugs were fixed and the code was cleaned up.
December 17th, 2010
· Wrote Plane->Select, Direction->Select, Plane->Copy and Direction->Copy. Fixed bugs in Group->Modify, Group->Copy and elsewhere. All dialogs now support lists of objects except the Modify dialogs for Group, Plane, Direction, as these objects must be rethinked anyway.
October 27th, 2010
· Implemented Object->Link for lists of objects, for all classes of objects supported by GAMGI, except Plane and Direction. All GAMGI objects seem to be working fine now, with lists of objects, for all suitable tasks (Object->Copy, Object->Link, Object->Modify, Object->remove) except Planes and Directions (next release!). In general, code to handle lists of objects is now simpler and more robust.
September 21st, 2010
· New criteria were added for creating lists of objects in Object->Select dialogs.
· Functionality was added to Object->Copy dialogs for objects and lists of objects.
· Functionality was also added to Object->Link dialogs.
· Atom->Link is now working for lists of objects.
· The Cell->Link interface was improved to support important new functionality.
· Several bugs were fixed.
August 25th, 2010
· Copy->Cluster is now working with clusters and lists of clusters.
· Copy->Molecule is now working with molecules and lists of molecules.
· Copy->Cell is now working with cells and lists of cells.
· Copy->Window is now working with windows and lists of windows.
· Copy->Layer is now working with layers and lists of layers.
· Copy->Light is now working with lights and lists of lights.
· Found and removed a crashing bug in the lists code, with more than one window: the gtk window is removed before the window child objects, so when removing these, the gtk window is not there anymore.
· Copy->Text is now working with texts and lists of texts.
· Copy->Atom is now working with atoms and lists of atoms.
· Improved the way current object and layer are handled, for objects and lists of objects, in dialogs Atom->Modify, Bond->Modify, Text->Modify, Cell->Modify, Light->Modify and Layer->Modify. Deprecated gamgi_gtk_statusbar_modify and gamgi_gtk_statusbar_layer, added gamgi_global_selection_layer.
· Lists of layers (previously created with Layer->Select) can now be easily modified with Layer->Modify.
· Found and removed a crashing bug introduced last release in Text->Modify: when handling lists with more than one text, with undefined style but defined font, the new font became corrupted.
· More improvements in the lists code, in Atom->Modify, Bond->Modify, Text->Modify, Cell->Modify, Light->Modify, Layer->Modify: common error handling, focus change in the end, etc.
· Added local enumerations to the lists code in Light->Modify, Text->Modify, Atom->Modify, Bond->Modify, Cell->Modify, Layer->Modify.c, making the code much easier to read and maintain.
· Light colors can now be modified in Absolute or Relative modes.
· Lists of lights (previously created with Light->Select) can now be easily modified with Light->Modify.
· Cleaned the lists code in Atom->Modify, Bond->Modify, Text->Modify, Cell->Modify and Light->Modify.
· Lists of cells (previously created with Cell->Select) can now be easily modified with Cell->Modify.
July 19th, 2010
· Lists of texts (previously created with Text->Select) can now be easily modified (for any property recognized by Gamgi) with Text->Modify.
· Lists of bonds (previously created with Bond->Select) can now be easily modified with Bond->Modify.
· Lists of atoms can now be easily modified with Atom->Modify! For efficiency reasons, dialog data is first imported to a cache, from where atoms or lists of atoms are modified.
· GTK 3.0: replaced widget->window direct addressing by gtk_widget_get_window calls (since GTK 2.14).
· GTK 3.0: replaced deprecated macros GTK_WIDGET_VISIBLE by gtk_widget_get_visible calls (since GTK 2.18).
· GTK 3.0: Replaced deprecated macros GTK_WIDGET_SENSITIVE by gtk_widget_is_sensitive calls (since GTK 2.18).
· GTK 3.0: replaced widget->allocation direct addressing by gtk_widget_get_allocation calls (since GTK 2.18).
· Removed a buffer overflow, found when building crystals with group 230: some wyckoff strings do not fit in a 20 char array.
· www. gamgi.org and ftp.gamgi.org hardware failure: replaced, reinstalled system disk, copied previous data.
April 5th, 2010
· This is a bug-fix release. Fixed a GL context bug when multiple windows were open, that could produce no rendering. Fixed memory leaks in handling Freetype fonts. Fixed how the message was produced when some DejaVu fonts were not found, that could crash GAMGI. Updated old documentation, and the Help system, that could crash GAMGI. Fixed the way mouse dragging is handled that could stop mouse dragging. Corrected ionic radius for S and Sb. Prepared a new, experimental, release that does not require the GTKGLExt library (for X Window System only).
February 10th, 2010
· Improved Object->Select dialogs. All Object->Remove dialogs can now handle lists of objects with the same functionality as for single objects (this is the first application of the selection lists that we have been implementing since Gamgi 0.14). Cell->Link now supports shifts in translations and rotations for each node, in Crystal mode (this is very useful, to change the lattice origin and for people doing research on Defects in Crystals). Adapted the ruler code for Gtk 3.0. Fixed a few bugs in Cell->Modify, Cell->Link and in the Tools section.
January 21st, 2010
· Implemented a simple but powerful method to select any class of visual objects inside an arbitrary rectangle on any window. Improved the behaviour of Object->Select dialogs. Implemented the new dialogs Window->Select and Assembly->Select.
December 30th, 2009
· Implemented new dialogs: Text->Select, Bond->Select, Cell->Select, Light->Select, Layer->Select. Improved Atom->Select.
· Updated some GTK code to work with GTK 3.0. Updated documentation, fixed bugs.
December 1st, 2009
· The new Atom->Select dialog is now fully working for all methods, except selecting objects by region. The infrastructure to handle global lists of objects is in place. Replaced Vera by DeJaVu Truetype fonts. Updated documentation, fixed bugs.
October 23rd, 2009
· This release has implemented and tested (on Linux/Mac OS X) new GtkFileChooser dialogs, using only GTK 2.* low-level widgets, so it has the new technology without the constraints imposed by the official GTK 2.* GtkFileChooser dialog.
· It compiles properly with the flags -DG*_DISABLE_DEPRECATED, and should be ready for GTK 3.0.
· Most of the low-level engine code to handle multiple object selection has been added.
September 24th, 2009
· Added 9 geometry and 9 topology properties to the report produced by Group->Create in Polytope mode. Implemented and tested Group->Modify for Polytopes, including transitions in Autonomy and type of polytope: polyhedron, plane, direction. Added Help documentation for Group->Create, Group->Modify, Atom->Create, Atom->Modify. Fixed bugs. New screenshots showing the Polytope code.
August 10th, 2009
· Designed, implemented and tested a new algorithm to merge coplanar faces in 3D polytopes. Tolerance for visible and coplanar polytope faces in now controled by users in Group->Create. Improved layout for Atom->Create and Atom->Modify interfaces. Replaced a wide range of GTK 1 deprecated functions by new GTK 2 routines. Fixed a few drawing bugs.
July 15th, 2009
· Fixed a couple of bugs in chem and gtk code, including a nasty brown paper bag that crashed the new polytope creating in many systems. Everything that can be measured with Atom->Measure can now be modified with the new Atom->Modify dialog. The oldest dialog in Gamgi, Group->Modify, has been replaced by an entirely different dialog, to modify Groups, including polytopes.
May 13th, 2009
· Improved, tested, cleaned the polytope code and redesigned the way data is stored to increase maintenance and readibility.
· Added speedups to make the code more efficient. This code builds a 3D convex hull for 50,000 atoms under 3 seconds on my desktop system.
· Moved the corresponding graphic interface from Cell->Link to Group->Create.
· Added new options (Autonomy) and defaults (color, neighbour elements, number of neighbours).
· Removed (GTK 1) GTK_OBJECT casts in all g_signal_connect calls.
April 28th, 2009
· The planar polytope code, building atomic planes, is working.
· The linear polytope code, building atomic directions, is working.
· The topology arrays (faces, edges, vertices) should be replaced by structures containing arrays, to improve maintenance.
· Testing the polytope code: seems to be working fine!
· Decreasing tolerance to 1.0E-10 fixed numerical problems with the incremental algorithm in the polytope code (coplanar code switched off).
· the same conflict might be retrieved from both faces around the visible edge: we have now a simple solution to this bug: use a unique identifier everytime we get conflicts for a new face.
· Solved the realloc bugs due to outdated array memory addresses.
· Debugging the core polytope code (currently without coplanar faces) is doing good progress.
· Simplified the code handling the initial polytope.
· Simplified,reviewed the polytope code handling faces,vertices arrays.
· Completed and tested the polytope code related with conflict lists.
March 30th, 2009
· All the GTK 1 menus have now been replaced by GTK 2 Combo boxes. Wrote the GTK interface (currently only in Cell->Link) to build 3D and 2D polytopes around central atoms. Improved polytope code and wrote the remaining sampling code needed to get polytope neighbours. Debugged and tested all the polytope sampling, starting, exporting code, except the core incremental algorithm code. Fixed a bug in the XML code importing crystallographic directions with centered nodes.
January 8th, 2009
· Fixed a few copyright issues raised by the Debian legal team.
· This release includes most of the code needed to implement a fast, sophisticated 3D convex hull incremental algorithm.
· This is array-based (to be faster), with arrays of cell lists (to speed up sampling), conflict lists (to be NlogN), can handle coplanar issues, arbitrarily large faces, periodic boundary conditions, etc.
· It will be useful to describe arbitrary sets of arbitrary polyhedra defined by atoms, such as in superconductors, silicates, glasses, etc.
October 31st, 2008
· This release merges all the X3D (the new XML version of VRML) code developed by Tiago Farto, after extensive cleanup.
· This includes code to describe all the objects currently supported by GAMGI as layers, cells, clusters, molecules, groups, planes, directions, atoms, bonds, and texts. As X3D handles a single 3D space (while GAMGI handles multiple 3D spaces through layers), only objects in the current layer are exported; the other layers are ignored.