FOX/ObjCryst++  1.10.X (development)
Current status and development history of ObjCryst++

If you have a question you can drop me an email


  • INCOMPATIBLE CHANGES:GlobalOptimObj has been replaced by MonteCarloObj, RefinableObj::GetClassName now returns a "const string&", and RefinableObj::BeginOptimization has two parameters, to enable approximations and restraints
  • now one can choose either float or double for precision. The default is float for global optimization.
  • Changed RefinableObj::BeginOptimization to pass two flags to enable approximations (faster) and restraints before beginning an optimization.
  • ZScatterer: worked on ZScatterer::GlobalOptimRandomMove(), to give the possibility of making 'smart' moves, especially for molecules.
  • Scatterer: removed the ZScatterer::Update() function from the base Scatterer class, as previously scheduled.
  • OptimizationObj: Forked the algorithms classes, with a base OptimizationObj class, derived (currently) to a MonteCarloObj class (which replaces the old GlobalOptimiObj class, for simulated annealing and parallel tempering). Also added a tentative GeneticAlgorithm class, still in very early development and not usable yet for the common mortal.
  • restraints: added base Restraint class, not really used so far.
  • cleaned up a bit wxCryst classes in the hope to remove any GUI bugs. Still some crashes under windows, unfortunately...
1.02(2001-nov 12th)
  • PowderPattern: Added the input format for Sietronics (.cpi) files. Now importing data will allow null points without crashing. Also when no phase (background, crystal) has been added to the pattern, the calculated pattern returns a constant value (1.).
  • ZScatterer: corrected a bug in the fractionnal coordinates calculation for mono/triclinic unit cells (thanks Mark Edgar).
  • ZScatterer: corrected a nasty bug(thanks Yuri Andreev), which made the Z-Matrix interpretation completely wrong.
  • wxRefPar: now all refinable parameters have a local menu which can be used to remove or change limits.
  • wxZScatterer: now can globally change relative limits to bond lengths and angles.
0.9(2001-09-18-first FOX Release)
  • wxCryst is now working, allowing the first compilation of Fox.
  • The data format to save files has been changed to an xml format (see
  • the definition of the refinable parameter types (RefParType) are now made using pointers, in a tree-like fashion. This allows an easier modification of status for groups of parameters.
  • Lots of other modifications...
0.5(july 2001)
  • Design largely improved for reusability (based on inheritance).
  • wxCryst (the GUI-Graphical User Interface) part is in fast-moving development, mostly working, but not included here as code is still ugly and its design is not stable. As of 10/july/2001, I can launch the program, create a crystal, add a PowderPattern object, a GlobalOptimization object and do the global optimization while looking at the 'live' evolution of the Crystal Structure (3D display with OpenGL) and of the PowderPattern !
  • Saving structures, data to files has been implemented. See RefinableObj::XMLOutput(). Refinement flags are not saved (yet).
  • Changed all float to REAL precision. Performance hit=+15% on structure factor, and +25% on full powder spectrums.
0.6(march 2001)
First public release.
0.5 (february, 2001):
  • ZPolyhedron Added a ZPolyhedron class, based on the Zscatterer objects, to describe (almost) regular polyhedra.
  • Interatomic distance calculations Improved speed computation of the internel distance table, using non-symetrical atoms and the Asymmetric unit cell.
  • AsymmetricUnit Cell Finally implemented the AsymmetricUnit Cell class, to improve distance calculation. Currently, upon Spacegroup construction, the (or one of the) smallest parallelepiped (with sides parallel to the crystallographic axes) including an Asymmetric unit is computed, using steps of 1/24. (So technically it is not an asymmetric unit cell, if no asymmetric unit cell exists for the group with all vertices parallel to the unit cell faces)
0.4 (january 2001):
  • ZScatterer Added a Zscatterer class, were cluster of atoms or molecules can be defined using a Z-Matrix description (see or for a description of what such a matrix is. The advantage of this description is that it will now be possible to describe molecules using relevant parameters (separating bond lengths, bond angles and dihedral angles), and that polyhedra (for inorganic crystals) can also be described by it.
  • Special positions-Dynamical Correction Added a function to compute a 'smooth' correction of population as several atoms overlap (this is a dynamical correction during model search)
  • Compilation & Makefiles Cleaned up directories & makefile to minimize platform dependencies. All platform-dependant commands should be in rules.mak, in the top directory.
0.3 (2000, november 24) :
  • RefinablePar Now Scatterer, DiffractionData and Crystal inherit are children of RefinableParList, which makes the 'refining' methods easier to write & use.
  • Compilation on Win32-Cygwin Compilation works using the win32 port of gcc by cygnus :
0.2 (2000, november 07) :
  • SpaceGroup Moved to SgLite package, thanks to R. Grosse-Kunstleve.
  • Powder Diffraction Most of features needed for 'basic' powder profile spectrum generation/analysis has been added (DiffractionDataPowder).
  • Least-Squares Added an LSQObjNum class, to perform Least-Squares Refinement. Num stands for 'numerical', since only numerical derivatives are used for that object. Uses eigenvalue filtering to avoid correlations.
  • DiffractionData is now an abstract base class, with children DiffractionDataSingleCrystal, DiffractionDataPowder.
0.1 :
  • General The basic classes (SpaceGroup, Crystal, Scatterer, Scatterer:Atom, Scatterer:RegularPolyhedra, DiffractionData) are there.
  • Speed Computing of structure factors works with a fair speed.