NOTE: this changelog is no longer maintained as of 8/2009,
go to http://bazaar.launchpad.net/~yade-dev/yade/trunk/changes
for complete history or use bzr log on your local checkout/branch.

---

2008-08-20 Janek Kozicki <cosurgi@gmail.com> revision 1480

	* ChangeLog: New ChangeLog format. Please use this format in your
	entries (I don't like updating ChangeLog once per year with 240
	revisions ;)). New ChangeLog format is:

	* path/File, or list of files: summary of modifications. But please
	keep ChangeLog short (svn log is for details), if you modify 100 files
	together, don't list all of them. Be prudent.


WARNING: the ChangeLog update below is sloppy, because it was done by single
person (Janek) in few hours, by examining 'svn log' output of 240 commits(!!).
All entries above this one are supposed to be much better in quality. Because
they will be written by the people who are authors of those changes.

2008-08-19  Vaclav Smilauer <eudoxos@arcig.cz> revision 1475
	
	* pkg/dem/Engine/StandAloneEngine/GlobalStiffnessCounter.cpp: Fix
	physical action index.

	* SConstruct: Kill building threads if the master thread is interrupted
	in multi-builds (profile=a,b)

	* gui/py/PythonUI_rc.py, core/yade.cpp: Do not propagate exception to c++
	-> crash if there is python exception in the script being run from
	command-line. Just print traceback and drop to the python console
	(unless stop after execution specified)

	* gui/py/PuthonUI.cpp: Fix GUI "crash" when trying to run python
	console without terminal (running by clicking an icon, for example):
	if no $TERM, run non-interactively

	* core/yade.cpp: Select QtGUI over PythonUI if no $TERM set


2008-08-16  Vaclav Smilauer <eudoxos@arcig.cz> revision 1470

	* NormalShearInteractions.cpp: Added new (abstract) classes:
	NormalInteraction (with kn (normal) sitffness) and
	NormalShearInteraction (additionally, with ks (shear) stiffness). They
	are used by GlobalStiffnessCounter.

	* pkg/common/DataClass/InteractionPhysics/SimpleElasticInteraction.cpp:
	Removed SimpleElasticInteraction, since it it basically
	NormalInteraction, and changed all code to reflect that.

	* pkg/dem/Engine/StandAloneEngine/GlobalStiffnessCounter.cpp: Changed
	GlobalStiffnessCounter to work with the NormalShearInteraction class,
	since it provides an abdstract interface and will be useful with more
	classes than just ElasticContactInteraction.


2008-08-14 Janek Kozicki <cosurgi@gmail.com> revision 1469

	* pkg/mass-spring/PreProcessor/HangingCloth.cpp
	* pkg/fem/PreProcessor/FEMBeam.cpp: use NDEBUG to detect optimized
	builds in FEMBeam and HangingCloth


2008-08-14  Vaclav Smilauer <eudoxos@arcig.cz> revision 1468

	* core/Omega.cpp: Remove draw mutex when loading simulation introduced
	a few days ago (may throw boost::lock_error under some conditions)

	* core/yade.cpp: Restore default signal handlers before exit from
	main; set SEGV handler to nullHandler since on i386 we (on lenny
	consistently) get crashes in some log4cxx destructor.


2008-08-12  Vaclav Smilauer <eudoxos@arcig.cz> revision 1463

	* gui/qt3/YadeQtMainWindow.cpp
	* gui/qt3/SimulationController.cpp: Fix refresh period: use it for
	regular GL rendering as well

	* gui/qt3/QtFileGenerator.cpp: Make "open automatically" open
	generated simulation even if a simulation is already loaded.
	Fix crashes (on some machines) the close() was emitted 2 for
	QtFileGenerato

	* gui/py/PythonUI_rc.py: Fix error with newer ipython coming from the
	fact that sys.argv wasn't defined in the embedded python env.


2008-07-30  Vaclav Smilauer <eudoxos@arcig.cz> revision 1455-1449

	* lib/miniWm3/Wm3Math.cpp:  DECREASED Mathr::ZERO_TOLERANCE to 1e-20
	so that we don't get identity quaternions for small rotation in
	ToAxisAngle (!!)

	* gui/tq3/GLViewer.cpp: Add glue for GLViewer, currently may crash,
	probably concurrency issues there

	* scripts/make-release.sh: Add script for making release


2008-07-17  Vaclav Smilauer <eudoxos@arcig.cz> revision 1432

	* core/MetaBody.cpp: Multiple display parameters (i.e. QGLViewer
	config and OpenGLRenderingEngine config) are stored in Metabody.

	* core/MetaBody.cpp: stopAtIteration moved to MetaBody so that it is
	saved and reloaded (MetaBody::recover hack is gone)

	* lib/serialization/IOFormatManager.cpp: Add the ability to load from
	stream and save to stream to IOFormatManager (afterwards, I discovered
	there were actually_identical_ functions loadArchive and saveArchive;
	those were deleted since unused elsewhere)

	* gui/qt3/GLViewer.cpp: GLViewer can now load and save state from/to
	string

	* gui/qt3/GLViewer.cpp: in GLViewer, keys 7,8,9 load display config
	#0,1,2 and Alt-{7,8,9} saves current view to #0,1,2. Those are saved
	in MetaBody. BUG: after loading such config, the QtGUI-generated
	OpenGLRenderingEngine config dialog doesn't work anymore (probably
	some issue with archives, not sure).

	* lib/serialization-qt/FundamentalHandler.tpp: Hopefully all
	xml-parser-offensive characters are escaped at string serialization,
	and unescaped at deserialization. We use standard SGML escapes (newline=&br;
	tab=&tab; <=&lt;) and so on now. This allows one to save
	XML-as-string in the xml itself (used for DisplayParameters).

	* gui/qt3/GLViewer.cpp: GLViewer now properly saves what XYZ planes
	are displayed (using custom DOM element)

	* extra/Brefcom.cpp: Some fixes in Brefcom, more to come.


2008-07-10  Sergei Dorofeenko <dorofeenko@icp.ac.ru> revision 1419

	* core/FiltrEngine.cpp: FiltrEngine is a base engine for a scene
	filtration before visualization (both for a player and for a
	controller). The filtration is activated through GUI (now only for
	SimulationPlayer).

	* pkg/common/Engine/FiltrEngine/ColorizedLayerFilter.cpp: allocates
	with colour a layer of bodies

	* pkg/common/Engine/FiltrEngine/ColorizedVelocityFilter.cpp: allocates
	with colour a velocity of bodies


2008-06-29  Vaclav Smilauer <eudoxos@arcig.cz> revision 1405

	* gui/qt3/SimulationController.cpp
	* gui/qt3/GLViewer.cpp: Implemented clipping planes in the GL viewer
	and GL renderer

	* gui/qt3/GLViewer.cpp: Moving body is now consistent with mouse
	bindings for moving scene


2008-05-10  Sergei Dorofeenko <dorofeenko@icp.ac.ru> revision 1347

	* pkg/dem/PreProcessor/STLImporterTest.cpp: Main commit: import a
	geometry of walls from a STL file.


2008-03-30  Vaclav Smilauer <eudoxos@arcig.cz> revision 1290

	* cmdGui.cpp: allow saving spheres (format like small.sdec.xyz) from python

	* PositionOrientationRecorder.cpp can optionally record RGB color of each
	body as well now

	* GLSimulationPlayerviewer.cpp: SimulationPlayer now can change colors
	of bodies, if the .rgb file exists

	* Brefcom.cpp: Bunch of fixes if brefcom, in UniaxialStrainControlledTest

	* Omega.cpp, MetaBody.cpp: dt moved from Omega to MetaBody for good;
	this allows preprocessor to set timestep that will be used when the
	simulation is loaded.


2008-03-25  Sergei Dorofeenko <dorofeenko@icp.ac.ru> revision 1285

	* SimpleViscoelastic*.cpp: Add linear viscoelastic contact model


2008-03-22  Vaclav Smilauer <eudoxos@arcig.cz> revision 1281-1283

	* extra/Brefcom.cpp: Include fracture strain calibration routines in brefcom.
		- Add BrecomDamageColorizer - changes colora ccording to average
		cohesive interactions the body has.
		- Delete non-cohesive interactions from inside BrefcomLaw when
		spheres become distant.
		- Documentation updates.

	* gui/qt3/GLSimulationPlayerviewer.cpp: Resurredced and un-crapped
	simulation player (for making videos). Updated howto is
	http://yade.wikia.com/wiki/New:Making_videos#Using_Simulation_Player_with_svn.3E1281

	* pkg/common/engine/DeuxExMachina/CentralGravityEngine.cpp: 
	* pkg/common/engine/DeuxExMachina/PositionOrientationRecorder.cpp:
	Added some comments to didactical CentralGravityEngine and to
	PositionOrientationRecorder.

	1. MAJOR improvements of the python wrappers (constructors take attributes etc.)

	2. FIRST proof-of-implementation simulation completely created in python:
	scripts/simple-scene.py. This file will be commented abundantly shortly.

	3. Add default values to some bool params so that there is no serializer error
	if they are uninitialized.

	4. Add aabbEnlargeFactor to InteractingSphere2AABB(should be added to
	InteractingBox2AABB as well?) (not tested yet)

	5. rename InteractionDetectionFactor to interactinDetectionFactor

	6. Serialization now registers only attributes that have not yet been
	registered (there were problems with python because of that: at first save,
	attributes were duplicated and the xml file was less readble, although
	loadable)

	7. Scan .tpp and .ipp for c++ tags as well

	8. Some documentation.


2008-08-18 Janek Kozicki <cosurgi@gmail.com> revision 1280

	* CohesiveFrictionalContactLaw.cpp: added Moment Law

	* ForceEngine.cpp: now works on subscribedBodies

	* MomentEngine.cpp: new engine added

	* KnownFundamentalsHandler.tpp: it wasn't compiling if you tried to
	save quaternions to file. Basically change the case of function calls: x();
	into X();


2008-03-13  Vaclav Smilauer <eudoxos@arcig.cz> revision 1274

	* lib/QGLViewer/* : BIG - Moved latest upstream qglviewer to our tree. If
	you REALLY need to use the packaged version, let me know. As of now,
	there is no way to do that.

	* gui/qt3/* : BIG: Removed many (unfunctional) parts of the qt3 GUI,
	in the view of qt4 migration which will probably not happen. Maybe I
	removed too much (simulation player -- does it work?!), let me know in
	that case.


2008-03-03  Vaclav Smilauer <eudoxos@arcig.cz> revision 1270-1273

	* scripts/default-test.py: Test suite for all preprocessors
	
	* scripts/default-test.py: handles crashing simulations gracefully (by
	executing them in a subprocess)

	* GlobalStiffnessCounter.cpp: Added assumeElasticSpheres attribute to
	GlobalStiffnessCounter; if set to false, dynamic_casts are used to
	properly determine type of contact between spheres (used in USCTGen
	now)

	* yade.cpp: Debugger now dumps backtrace without interruption and
	exits immediately (core is still dumped)

	* cmdGui.cpp: now exports yade binary name (to allow spawning
	subprocesses)

	* Omega.cpp: retains original argc and argv from the command line.

	* PersistentSAPCollider.cpp: Remove NaN's in PersistentSAPCollider for
	bodies that don't have bounding box: use zero-size degenerate box at
	its position instead. (fixes warning when running ClumpTestGen)

	* SConstruct: Remove check for scientific python from scons as we
	don't use it now.


2008-02-27 Bruno Chareyre <bruno.chareyre@hmg.inpg.fr> revision 1268

	* NewtonsDampedLaw.cpp : new engine.
		The result is exactly the same as with :
		- CundallNonViscousForceDamping
		- CundallNonViscousMomentumDamping
		- NewtonsForceLaw
		- NewtonsMomentumLaw
		- LeapFrogPositionIntegrator
		- LeapFrogOrientationIntegrator

	But this engine is faster because it uses less loops and less dispatching. 
 
	Requirements :
		- All dynamic bodies must have physical parameters of type (or inheriting from) BodyMacroParameters
		- Physical actions must include forces and moments


2008-02-15 Bruno Chareyre <bruno.chareyre@hmg.inpg.fr> revision 1237

	* yade.cpp: conditional compilation in order to compile with boost 1.33

	* TriaxialTest.cpp: instanciation of a SimpleElasticRelationship 
	object before adding it to engines (to avoid a crash). Valav please, 
	what is going on here?

	* TriaxialCompressionEngine.cpp: 
		- 0.5 factor in front of UnbalancedForce equation
		- small fixes in default values
		- timestep, unbalancedForce, and "Compression started" is displayed 
		again during triaxial test run


2008-02-13  Vaclav Smilauer <eudoxos@arcig.cz> revision 1246

	* yade.cpp: Preliminary recovery of simulation accross runs (try
	sending SIGHUP to yade)

	* cmdGui.cpp: Python wrapper for body parameters.

	* Omega.cpp: Allow Omega to stop at predefined iteration number (for
	regression tests, I work on that ;-) )


2008-08-20 Janek Kozicki <cosurgi@gmail.com> revision 1480

	* CundallNonViscousMomentumDamping.cpp: Fix FUNCTOR2D mistake
	
	* qt3 files: make it compile with python2.4 and qt3 (which sucks)

	* NOTE: python-scientific requires boost 1.34


2008-01-24 Vaclav Smilauer <eudoxos@arcig.cz> revision 1243
	* MetaEngine.cpp: Remove MetaEngine, inherit MetaDispatchingEngine
	directly

	* TriaxialStressEngine.cpp: Fix unbalanced force reporting (thanks for
	complaining, Bruno)

	* EngineUnit.cpp: EngineUnits now declare their types with FUNCTOR1D(.) or
	FUNCTOR2D(.,.) macros, dispatchers will ask for their types
	automagically. Old syntax still supported, once all engines have those
	types declared, it will be obsoleted and removed (like
	e->add("InteractingSphere","InteractingSphere","InteractingSphere2InteractingSphere4SpheresContactGeometry");
	Shop and USCTGen usethe new syntax now.

	* BrefcomLaw.cpp: Brefcom law passes some rudimentary tests and appears to work
	(normal force and damage for now; we miss shear force and blocked
	rotations)

	* BrefcomContact.cpp: Brefcom contact can be drawn with opengl, damage signified by color.

	* cmdGui.cpp: Updated Python wrapper.


2008-01-24 Vaclav Smilauer <eudoxos@arcig.cz> revision 1242
	1. BIG update of python wrappers - enagines can be created, added,
	modified from python now. Examples will be provided very soon.

	2. fix plugin loader for multi-plugins: YADE_PLUGIN() macro should be
	used in all plugins, otherwise due to linking symbol overrides a
	multi-plugin will shadow classes in the plugin actually being loaded
	(better solution?!)

	3. Add experimental BREakable Frictional COhesive Moment-blocking
	material (brefcom for short), not yet fully done.

	4. PersistentSAPCollider now can be parametrized to permit distant
	contacts (is not the default, though), incorporating Bruno's changes
	in DistantPersistentSAPCollider

	5. Uniaxial strain-controlled test (USCT), a quite simple
	implementation. Used primarily for brefcom testing now.

	6. Fix SConstruct so that it is backward-compatible with python2.4


2008-01-27 Janek Kozicki <cosurgi@gmail.com> revision 1240
	* LatticeExample.cpp: Use lattice model for simulation of concrete
	with steel fibres reinforcement.
	* SConstruct: SConstruct is now working on debian etch,
	* Doxyfile: exclude multimethods in Doxyfile


2008-01-24 Vaclav Smilauer <eudoxos@arcig.cz> revision 1239
	* SConstruct: Default scons to latest snapshot (should be a bit faster)
	* SConstruct: Don't autocreate plugin path entries for paths that are not installed
	* TriaxialStressEngine: Turn TriaxialStressEngine into state machine, while preserving the
	possibility of changing some values by hand in .xml. (should be
	tested).
	* Doxyfile: Exclude Loki:: from doxygen docs.


2007-06-30 Vaclav Smilauer <eudoxos@arcig.cz> revision 1237
	* Tetra.cpp, TetraTestGen.cpp: 
		- Tetrahedron fixes (intersections are ;correct now, but
		interaction still wrong - crashes??!)
		- Correct formulas for 4hedron inertia, testcase passes
	* trunk/SConscruct: Fix scons to work with versions > .97 (no syntax errors;
	didn't try if it compiles
	* SimulationController.cpp:
		- Switch to fixed timestep when timestep is being changed by
		user in the qt3 ui
		- Change default timestep to 1e-8, should prevent weidness
		onthe first run.


2007-07-26 Bruno Chareyre <bruno.chareyre@hmg.inpg.fr> revision 1230
	* Cohesive* files: 
	1. New contact law and related classes :
	CohesiveFrictionalContactLaw. It will be the most general
	contac law in Yade soon probably (TODO : include rotational
	effects like MomentRotation law).
	2. New Stress-Strain recorder : TriaxialStateRecorder,
	autodetect the TrixialCompressionEngine of a MetaBody and
	write the  parameters from it in a text file.
	3. TriaxialCompressionEngine and TriaxialStressController are
	modified in order to compute stress and strain on demand.


2007-07-11 Bruno Chareyre <bruno.chareyre@hmg.inpg.fr> revision 1224
	* CohesiveFrictionalContactLaw.cpp CohesiveTriaxialTest.cpp,
	Cohesive* files: This commit contains new classes in order to simulate
	cohesive interactions with transient interactions.  The new
	SAPCollider does set IsReal=false at each time step, neither do the
	Sphere2Sphere4Distant... engine. The user must set isReal=false in
	another engine (here the CohesiveFrictionalContactLaw engine) in order
	to have the interactions removed from the DistantPersistentSAPCollider
	list.  All new engines are used in the CohesiveTriaxialTest.


2007-06-30 Vaclav Smilauer <eudoxos@arcig.cz> revision 1216
	* yade.spec: .spec file for fedora
	* ScrewGen.cpp: Add screw example (this is really my personal one...)
	* Shop.cpp: Fix Shop::tetra (tetra interacting geometry still
	incorrect or incorrectly drawn... why???)
	* yade.cpp: Remove python finalization, boost should take care of that.
	* DynLibManager: Possibly fix plugin loader bug (first plugin after
	one with yadePluginClasses "inherits" them unless it has its own
	yadePluginClasses defined).


2007-06-22 Bruno Chareyre <bruno.chareyre@hmg.inpg.fr> revision 1215
	* TriaxialCompressionEngine, GlobalStiffnessTimeStepper, TriaxialTest:
		- TriaxialTest now includes a recorder to write stress history to a file.
		- safety factor is set to a smaller value in the timestepper as
		the computed value was still a bit too large in some cases.
		- UnbalancedForce is defined in TriaxialCompressionEngine() to
		avoid errors when loading a xml.

2007-06-27 Vaclav Smilauer <eudoxos@arcig.cz> revision 1214
	* FundamentalHandler: Don't warn on amd64 about limited type range in
	comparison.


2007-06-22 Bruno Chareyre <bruno.chareyre@hmg.inpg.fr> revision 1213
	* TriaxialCompressionEngine: UnbalancedForce member data was not
	defined in the constructor of TriaxialCompressionEngine, it was
	causing a crash when loading a TriaxialTest.xml.


2007-06-21 Janek Kozicki <cosurgi@gmail.com> revision 1212
	* ChangeLog: update


r.1209 (Vaclav)
  1. SCons will download new version of itself if older thatn 0.96.93 and will proxy all calls to it transparently (hopefully)
  1a. Fix argv[0] for scons proxy.
  2. Revamped python wrappers, now all attributes are settable as dicionary entries in respective instances from python
  3. added example of python script that generates and runs BoxStack
  4. Do not #define DEBUG, since it is used in log4cxx (as log4cxx::Levels::DEBUG). YADE_DEBUG is used everywhere. If you ever get weird errors about that, #undef DEBUG after including qt3 headers.
  5. Some code cleanups.

r.1206 (Vaclav)
  1. rename ThreadWorker::message() to ThreadWorker::getStatus, ThreadWorker::setMessage() to ThreadWorker::setStatus (and private ThreadWorker::m_message to m_status)
  2. add public: std::string FileGenerator::message that holds exit value description
  3. FileGenerator::generate returns now bool (if the generation was successful); description in ::message
  4. Adapted all generators and UIs for the above changes (except NullGUI - is that needed?)
  5. Adjust other components for FileGenerator changes. Add wrapper for preprocessor in python.

r.1204 (Vaclav)
  - frontend cleanups, eperimental python console ui.
  - Convenience functions for serialization - experimental.
  - fix qualifiers in constructor of AttrAccess

r.1200 (Janek)
  - update yade icon, by Vaclav's suggestion (the red spheres are not so vividly red, so looks a bit better)
  - scons will create the installation directory if it doesn't exist
  - incorporated Bruno's fixes into 0.11 release

r.1199 (Bruno)
  - Modified definition of the interpenetration for box-spheres interractions. The previous definition was inconsistent.
  - Some changes in the computation of critical timestep so that the triaxial samples do not explode when dt is set to the automatic value. The change mostly affects the first steps of a simulation. Now, dt is computed at each timestep during the first steps, whatever the value of the user-defined variable "timeStepUpdateInterval", until a relevant value is found.
  - Cosmetic changes in TriaxialTest.
  - Initial zoom in the simulation player is set to 2. 

r.1192 (Janek)
  - FileGenerators try to set the timestep when TimeStepper is not used. But it
    is still not working when simulation is running during the generation. This
    means, that 'dt' should not be in Omega, but inside a simulation itself. At
    last there is a clear answer for this dilemma.
  - fixed some crashing of HangingCloth
  - fixed warnings in capillary law.

r.1186 (Vaclav)
  - Fix scons to handle boost.*-mt well, some other cleanups.
  - remove hardcoded linkage with boost libs from SConscript files
  - Modify debian builds so that making source packages for release versions work as well.

r.1182 (Bruno)
  - Add files related to capillary law.

r.1181 (Janek)
  - introduced Body::id_t(ype) so that bodies are not numbered as an int, but as a Body::id_t
  - added center 'scene button' on first tab of simulation controller

r.1180 (Vaclav)
  - Correct 'all' value for features
  - Clump improvements
  - If RELEASE file exists, get yade version from there, instead of from svn.
  - Remove wildmagic-dev from debian deps.
  - fixed qt3 detection (used deprecated qapp.h header instead of qapplication.h).

r.1174 (Janek)
  - timestepper is set correctly when loading file in GUI (I hope!) - no need to reload second time
  - FileGenerator does not open SimulationController if it already exists

r.1174 (mixed)
  - don't exclude lattice with miniWm3 
  - merge lattice from Janek's PhD
  - SConscript uses md5sum instead of timestamp.
  - fixed crash in SDECLinkedSpheres example
  - fixed RotatingBox and BoxStack examples - and accidental mistake in SAPCollider
  - Add 'features' option to scons, which can enable/disable python and log4cxx at compile-time (extensible)


r.1165 (Janek)
  - updated Icon
  - updated ChangeLog
  - moved some obsolete scripts to doc/removed
  - preparing for release 

r.1162 (Vaclav)
  - Make compilation proper when python is not found (no errors, just disable what should be disabled).

r.1161 (Vaclav)
  1. remove vector<Vector3r> from tetrahedra code, replace simply by Vector3r[4]
  2. implement 4h-4h intersection peroperly, without relying on wm3. Compiles, not tested for correctness at all.

r.1160 (Vaclav)
  1. Some type fixes (signed vs. unsigned). The Body ID mess needs to be cleaned up!!!
  2. More tetrahedron stuff; will not compile for now, though.
  3. Icon update ;-)

r.1159 (Vaclav)
  1. gdbCrashBatch moved to Omega (was emptry when a different thread thatn the main one crashed?!)
  2. Shop generates tetrahedra properly now, including dispatchers
  3. Tetrahedra rendering and linking fixed
  4. Added an icon to the main window (not serious ;-) )
  5. commented out STUPID_DLL overflowing loader 
  6. log4cxx has level set to INFO by default (was DEBUG, lot of garbage on screen)

r.1158 (Vaclav)
  1. Remove cyclic plugin loading forever (undefined STUPID_DLL)
  2. Tetrahedron has vector<Vector3r> v instead of Vector3r v1,v2,v3,v4; (fem will probably not compile because of this for now - will be fixed)
  3. Added experimental tetra class & friends.

r.1155 (Vaclav)  
  1. PythonRecorder runs optimized byte-compiled expression, optionally translated to machine-code by psyco
  2. Serialization lib now properly escapes and unescapes XML-unfriendly charcters (\n,\t,<,>,",\\)->(\\n,\\t,\[,\],\',\\\\)

r.1154 (Vaclav)  
  - Merged the scons-layout branch to trunk.
  - tree is flattened, scons is the only compilation method,
  - qmake stuff removed completely
  - added debian/rules for packaging
  - added miniWm3 (does not need to depend on Wm3Foundation, just recommended). We plan to stop using wm3 anyway....

r.1087 (Vaclav)
  - Doxygen settings from yade-flat imported. New file tracking removed elements.
  - dynamic_pointer_cast replaced by YADE_PTR_CAST as appropriate. It must be defined on compiler command-line (-DYADE_PTR_CAST=dynamic_pointer_cast or -DYADE_PTR_CAST=static_pointer_cast). Scons builds get this automatically.  
  - dynamic_cast replaced by YADE_CAST where appropriate: i.e. the result of the cast is not checked to verify whether the conversion was successful as condition for further flow branching. The consequence is that you have to #define YADE_CAST in CXXFLAGS by hand as either dynamic_cast (original version) or static_cast (for optimized builds) when using make.
  - Scons will do that automatically for you. It is the highest time you switch to scons ;-).
  - SCons cleanup. Now supports buildPrefix (defaults to '..') so that build is completely separate from sources.

r.1082 (Vaclav)
  1. Cleanup of clump includes
  2. Scons now puts buildDir include directory first so that it shadows eventually installed versions
  3. jobs=x added to scons, like -j3, but is saved accross runs
  4. Archive modifications (shuffling includes around) so that compiling with recent g++ (4.1) works - was preprocessor problem.
  - Attempt to access interactions from Python, commeted out for the moment. May disappear later. Not used anywhere. Do not use.

r.1079 (Vaclav)
  Python fixes:
  1. load pyade.py from path given by PREFIX and POSTFIX (we really need to define that somewhere in a unified manner: not by using BOOST_PP_STRINGIZE everywhere! - config.hpp...?)
  2. velocity and angularVelocity are vectors now (returned only the x component by mistake)

r.1078 (Vaclav)
  1. Debugging mode now #defines YADE_DEBUG in addition to DEBUG, which seems to be #undef'ed by some header. Lazy to trace down.
  2. Removed #ifdef DEBUG messages from dynlib &co (now under #if 0); use LOG_TRACE if you need those messages
  3. Signal handler now handles SIGSEGV (segmentation fault) and SIGABRT (failed assertions, among other) in debugging mode: gdb is run, attached to the current process and backtrace of all threads is printed. 

r.1077 (Vaclav)
  1. Clump member velocities are calculated in ClumpMemberMover. This may create problems since velocity will always be lagged by one iteration. 
  2. removed cyclic dependency of Clump and Shop.

r.1076 (Vaclav)
  1. renamed Chagelog to ChangeLog, will be generated autmatically from svn chamgelog
  2. removed waf script (wscript), not used
  3. scons now installs everything with '-version-postfix' appended, like yade-svn1072-debug
  4. scons builds different variants (version and postfix) in separate directories

r.1075 (Vaclav)
  Many extensive changes:
  1. HIGHLEVEL_CLUMPS removed, as if it were defined always. Minor things to do with clumps are calculating member velocities at every iteration and figuring out if CundallNonViscousDamping works differently than for standalone bodies.
  2. signal handles if linked with python so that ^C works as expected.
  3. Fixes in the Shop code.
  4. scons builds should support even separate headers for different postfixes.

r.1074 (Vaclav)
  1. OK, the floats floating around for colors drove me nuts, so I replace all of that garbage by doubles. Since for one particular case (glMaterialv) the corresponding function taking double (glMaterialdv) is not defined in mesa (and perhaps not in most other gl libs), for that one the argument was converted explicitly.
  2. New Shop class, that defines static methods for easy things, along with a dictionary of default parameters for some useful stuff: like getting a rootbody with reasonable set of actors, sphere body, box body. That's all for the moment. Add your own stuff. Filegenerators may shrink considerably this way.
  3. Clump::subBodies renamed to Clump::members, Clump::moveSubBodies to Clump::moveMembers, ClumpSubBodyMover to ClumpMemberMover - to be consistent with Body::isClumpMember. Clump still not moved to DEM, that will wait till later - at the moment, QGLViewer depends on Clump (for moving clump when selected and moved with mouse).
  - There may be some borken things here, do not use this revision for anything.

r.1073 (Vaclav)
  1. Scons changes, node enumeration gotten rid of, now uses proper Install in SConscript's. Should eliminate scons version problems we've had.
  2. Some new make targets: for repetitive compilation (with -j2) and first personalizaed target: eudoxos.
  3. Selecting clump member in GLViewer now selects the whole clump; it is moved and redrawn as well (only with HIGHLEVEL_CLUMPS).
  4. An attempts at escaping special characters beforce XML serialization (\",\n,\t,\\), doesn't work - commented out.
  5. Project files cleaned from nonexistent include directories.

r.1072 (Bruno)
  - Minor changes in the computation of the critical timestep.

r.1070 (Bruno)
  A lot of small changes in triaxial classes, impossible to comment all of them; but note that :
  - TriaxialCompressionEngine can compress a sample to a dense isotropic state (either by moving walls or increasing the size of the spheres),
  - then change the confining pressure if needed (for running tests with different confining pressure on the same sample),
  - then start a triaxial compression test at constant zz strain rate and constant xx and yy stress (when the sample is considered stable based on StabilityCriterion).
  - The transitions between the different phases are (in principle) very smooth.
  note also that the contact laws are now defined using SimpleElasticLaw.

r.1069 (Bruno)
  - A simple definition of contact stiffness based on E and nu :
     kn = E*size of sphere (so that apparent stiffness will be independent of size)
     ks = nu*kn

r.1067 (Vaclav)
  1. selection in the renderer are now saved in Omega::selectedBodies (GUI to that list is in the future yet)
  2. PythonRecorder now supports retrieving selected bodies; it redirects stdout to file if specified.
  3. pyade now required scientific python to be installed - this permits to do vector and quaternion arithmetics in python. General cleanup.
  4. pyadeDummy.py module added - for testing pyade without yade

r.1066 (Vaclav)
  1. Clump code cleanup
  2. Python may now be embedded in yade: (i) SConscruct checks for it and #defines YADE_PYTHON if present. (ii) main sets up the interpreter. One disadvantage is that Python runs in its own thread, so pressing ^C during simulation doesn't quit yade (^\ still works).
  3. New class PythonRecorder that evaluates arbitrary expression when activated.
  4. Pyade interface that makes it possible to retrieve some values from yade in Python. For example, you can now record body #5 z-velocity and z-angularVelocity every 10 iterations by setting PythonRecorder::expression="if (S.i%10==0): print B[5].v[2],B[5].w[2]". Retrievable attributes are documented in the source (or the Doxygen documentation).
  - The python stuff is not very logically still in yade-extra/clump, which has become my playground. Once it matures and someone want it, it may move. Let me know it you find it useful.


r.1065 (Vaclav)
  1. Clump code is not (hopefully) correct physically - translational, rotational and potential energies give constant sum over time (more or less)
  2. ClumpTestGen generates a useful scenario of standalone sphere, {1,2,3,4}-sphere clump.
  3. Inertia calculation fallback for cases with NaNs from EigenDecomposition.
  4. acceleration and angularAcceleration reset after every position update for clump.
  5. Body::{isClump,isClumpMember,isStandalone} added.
  6. Gravity engine skips clump members (applied to the whole clump only).
  - Perhaps in the next commit, I will remove the #ifdef HIGHLEVEL_CLUMPS. Someone protesting?

r.1064 (Vaclav)
  1. Fixes in the clump code
  2. InteractionGeometryMetaEngine doesn't crash if a body doesn't have interactingGeometry (like Clump)
  3. Fixes in the collider, related to the clump code
  4. ClumpSubBodyMover is now a DeuxExMachina
  5. discovered bug in Wm3::Matrix3::EigenDecomposition
  6. ClumpTestGen generates a usable testcase (either a random one, or with one-sphere clump and an equivalent sphere) for testing purposes. Parameters etc. are physically wrong, but at least there are no crashes.
  7. ClumpTestGen temporarily sets rootBody in Omega so that Body::byId is usable

r.1063 (Vaclav)
  1. Clump::subBodies are now a std::map<Body::id_t,Se3r>, subSe3s removed.
  2. Sample clump generator ClumpTestGen written; works, but yade crashes because of dispatchers being setup incorrectly.
  3. Omega::setRootBody added so that rootBody can be temporarily set during filegeneration, which is necessary for Body::byId.

r.1062  (Bruno)
  - Squared distances are now compared instead of simple distances (faster) to decide if two grains are in contact.
  - In addition, InteractionDetectionFactor is added as member data. The default value is 1, a value greater than one will allow the geometry of contacts to be created as soon as the distance is less than Factor*SumOfRadii. Usefull for interactions at longer distances (like capillary effects).

r.1061  (Bruno)
  - The damping equations are reverted to their original expressions, with independant damping of each DOF. It looks like the convergence to equilibrium is faster with these equation

r.1060  (Vaclav)
  1. Clump code completed, but totally untested so far.
  2. Added target 'doc' to Makefile that runs doxygen
  3. New tracing macro TRWM3QUAT for quaternions

r.1059  
  - a more prominent warning when PREFIX was not defined during compilation
  - ThreePointBending does not crash when there is not file to load
  - some fiddling with lattice

r.1058  (Vaclav)
  1. provide Doxyfile, running "cd yade-doc; doxygen" will produce html reference documentation
  2. initial (non-functional) implementation of high-level clumps, along with some cleanup of the changes done elsewhere
  3. erskine now can be given scons variables (namely, $PREFIX) that will be unexpanded in generated SConscript's
  4. SConscruct #defines HIGHLEVEL_CLUMPS, since other people probably don't use scons (yet)
  5. New method Body::byId, new typedef Body::id_t, new constant Body::ID_NONE (jailed in HIGHLEVEL_CLUMPS for now, that will be removed sooner or later)

r.1057
  - Prepare framework for "high-level clumps". Everything is withing #ifdef HIGHLEVEL_CLUMPS, hence shouldn't change anything unless compiled with that option (don't try at the moment, it doesn't work). More information at http://beta.arcig.cz/~eudoxos/phd/index.cgi/YaDe/HighLevelClumps .

r.1056
  IMPORTANT: In this commit I have added a third parameter to GLDrawInteractingGeometryFunctor, which means that all GLDrawInteracting* classes had to be changed. If you have your own classes that draw interacting geometry you must modify them as well. The extra paramater added is 'bool wireFrame'. I think it will be useful :)
  - also I made two separate 'bool' flags in the display settings to set wireframe for body and for interactions.
  - the interaction for linked spheres is drawn in two colors: red for compression, blue for tension.
  - some lattice improvements, like drawing of fracture surface in 3D.

r.1055 (Vaclav)
  - Simulation may be (which is the default) loaded after generation automatically now.

r.1054
  - in GLViewer new keys: 'o' and 'p' to change the field of view. Useful for changing the perspective.
  - GLDrawSphere now plots a wireframe sphere very nicely: a circle facing the camera. Look very neat when combined with drawn interactions
  - I have changed the flag names in OpenGLRenderingEngine. Maybe this look better, what do you think?
  - I added a ThreePointBending. It can load spheres from some other simulation, put two supports and a moving piston. So we get a beam bending. It works in such a way, that first we generate an assembly of compacted spheres using Bruno's triaxial compression, with the dimensions of desired beam. Then load them into ThreePointBending, and we can bend a beam. It uses a linked spheres with unfinished formulas from Jean Patrick Plassiard, so it is rather unfinished... just like SDECLinkedSpheres example...  

r.1053
  - In this commit I made Interactions drawable by GLDraw*, and I added three example GLDraws for Interactions:
  - GLDrawClosestFeatures - it is a very simple GLDraw - just plots the vector of two overlapping bodies, the closest feature. A body displaced by it, will stop overlapping with the other body.
  - GLDrawSimpleElasticInteraction - it prints a "kn" of the interaction. It may be useful if someone wants to PRINT data on the screen about interactions.
  - GLDrawSpheresContactGeometry - this is most interesting, it draws a box between two interacting spheres, and it's size corresponds to the force between them. With it it is simple to see how the force paths.  It uses only a normal force, not shear force
    IMPORTANT: this is a fairly big change: *EVERY* class that inherits from
    InteractionPhysics or InteractionGeometry had to be modified:
    1. write constructor in .hpp file
    2. write REGISTER_CLASS_INDEX(this class,its base class); macro in .hpp file
    3. write createIndex(); call inside constructor in .cpp file
  For example look into AABB.hpp AABB.cpp to see how it must look like.
  - If you want to import some of your classess, you must make those modifications to your interaction classes.

r.1052
  - added GeometricalModelForceColorizer. It is another hacky Engine that I have added (along with Quadrilaterals). I did it, because I wanted to see spheres colored according to force acting on them. This is a hack because the GLDraw mechanism is currently very limited, and has to be extended to allow things like this. So currently it works, but not in a way it should be done.  GLDraw* changes are coming ... soon :) 
  - BTW: it could be done better, currently looking at those colors can give you apoplexy

r.1051 (Bruno)
  - IsotropicCompressionEngine removed from SVN.
  - TriaxialTest do the same thing (i.e. isot. compression) better, and do more.

r.1050  
  - OpenGLRenderingEngine didn't draw Body when it's groupMask was 0
  - some changes in lattice.

r.1048  (Vaclav)
  1. Fixed Omega::scanPlugins so that it loads plugins that were linked without -rpath for their dependencies. Everything is in #ifdef STUPID_DLL
  2. Removed again IsotropicCompressionTest since needed headers are missing. Bruno, please add them back (they were removed in the 1045 commit.) and then enable IsotropicCompressionTest in yade-packages/yade-package-dem/src/PreProcessor/PreProcessor.pro again.  

r.1047  (Vaclav)
  1. Include IsotropicCompressionTest in dem's preprocessors project so that it gets compiled
  2. Improve erskine to indent SConscripts in a nice way

r.1044  (Vaclav)
  - Fix build process for older versions of scons that break if there is a target that has no sources. Added a dummy empty file to the loki library to do that, modified project file. Do not forget to delete yade-libs/yade-lib-loki before running scons again to regenerate SConscript files.
  - Plugin loader now handles multi-class plugins, provided that they define "char* yadePluginClasses[]" symbol containing list of class names (sentinel=NULL) that the plugin contains. Regular one-class-per-file plugins work normally.
  - Something like yadePluginClasses should be (in the future) extended to hold more module information (classes, module version, author, perhaps license, URL, required yade version, pointers to documentation etc.).
  - Microchanges: fix rpath quoting, fix ctags indexing non-c++ files (local bug? --language=c++ would make all files (including .o, for example), being indexed.

r.1041  
  - QtFileGenerator remembers save file name (so it is not always ../data/scene.xml), this was done in previous commit. A small bugfix here
  - maximum delay between display updates is now 10 minutes (600000 miliseconds)
  - BIN format did not support std::pair, I had to fix it, because I needed that. But we are switching to boost::serialization in near future, anyway. 
  - added NodeRecorder (records average position of selected nodes), BeamRecorder (records stress in x and y direction in a selected section) and MovingSupport (a sliding support - transfers only one DOF acorss it) to lattice.
  - replaced std::vector with std::list in few places in lattice. There where add/remove was more often, and random access was not needed.

r.1040
  - FileGenerator shows generation time, and saving time
  - FileGenerator saves output file name (it was always fixed at
    "../data/scene.xml") and serialization dynlib (BIN / XML) so currently ../data/scene.xml is just a default value. But saving a filegenerator remembers target output file.
  - To make it work I had to add a line FileGenerator::registerAttributes(); in all FileGenerator-s (so it is a call to the base class, so it can register file name and serialization dynlib.
  - also, to make it work I had to make a dirty HACK in  yade-lib-serialization-qt. I don't feel much guilt, because it is already decided that we will scrap yade's serialization and switch to boost::serialization. Then this hack will disappear.
  - SimulationController will not reopen a file, when closed and opened. That was a bit annoying when last file loaded was big.
  - some fixes in MarchingCube
  - Lattice can display its own aggregates using marching cubes. Like with Quadrilaterals, I had to make a hasck to get it to work. And it again proves that GLDraw* mechanisms need improvement. I had to add a global variable in Omega, to transmit parameters between user input and the GLDrawer. The parameters are changed inside GLViewer, which is a hack too. I had to do this now, because there is no way to parametrise GLDrawers from user interface.  ( GLDrawLatticeSetGeometry ) 
  - MeasurePoisson improvement, LatticeExample can now generate using Delaunay, 

r.1036
  - FileGenerator reports how long the generation took
  - yade.cpp takes PREFIX and POSTFIX as #define /some/path , without "
  - small change to lattice generation method
  - Makefile cleans after scons
  - small SConstruct changes

r.1033  (Vaclav)
  - Scons accepts additional POSTFIX parameter, which will alter installation so that PREFIX/{bin,lib}/yade becomes PREFIX/{bin,lib}/yadePOSTFIX (similar to EXTRAVERSION of Linux). Further, configuration files will be searched for in ~/.yadePOSTFIX instead of ~/.yade. Unfortunately, headers installed in PREFIX will still be overwritten by newer version, even with different POSTFIX, since most files do something like #include<yade/...>. This is meant to ease simultaneous installations of different variants of yade. To achieve full independence, PREFIX and POSTFIX should be different. Note that you don't need to set LD_LIBRARY_PATH, since scons uses linker's -rpath option (hint: man ld). If someone has better solution, please let me know.  
  - Along the same line, I replace the annoying first run configuration (and annoying way of adding plugin directories) by simply writing config file with sane default values if none is present. The user is noticed of that.
  - Finally, when SimulationController is launched, the stop button callback is called - Bruno, can you confirm, that the first simulation is now OK?

r.1032  (Vaclav)
  - Iterations/sec display added to simulation controller (someone more sensible may redesign the layout in the future). Line ending changed from CRLF to CR. 
  - SCons update, please use it and report any problems to yade-dev or yade-users. Thanks.
  - Quick fix for recently discovered segfault. Wondering why it didn't surface before. Valgrind still complains about PhysicalActionVectorVectorIterator::increment using an unitialized value, but that may be unrelated (probably is) to this one.
  - Massive update of scons, which I now recommend for building. It has some autodetection support as well.
  - Please report any bugs (?) / RFEs to me. Brief instruction are given in INSTALL.
  - Exceptions from the FileGenerator thread are now properly caught; it means for example that if you pass an invalid classname in createActors, yade will tell you what class it wasn't able to construct instead of hanging infinitely.

r.1025  (Vaclav)
  - Bastardized wm3 library ejected from the tree. From now on, you need to install wm3 separately. Will update README shortly on how to proceed. Basically, add  "-I/usr/local/include/wm3" to CXXFLAGS if you use qmake. Includes and linking was adjusted in c++ and .pro files.
  - DOUBLE_PRECISION removed in favor of SINGLE_PRECISION. Therefore, the default is to define Reals as doubles now. SINGLE_PRECISION will be removed very soon anyway.
  - Removed yade-lib-algorithms, since it is not used. Once someone needs it, it can be found in svn history.
  - Created yade-lib-base, that for now contains
   1. Logging.hpp: moved from yade-core to avoid circular dependency),
   2. yadeWm3.hpp: typedefs for Vector3r Vecrtor3<Real>, definition of Real. This header will be removed soon, since it will not be needed.
   3. yadeWm3Extra.hpp: things that were added to the bastardized wm3, like a few operators and functions. You almost certainly want to include it in your code if you get undefined references (and link with yade-lib-base).
  - Omega now reports undefined symbols demangled.

r.1020  (Vaclav)
  1. Two sets of files were named StiffnessMatrixTimeStepper, of which the other one was in directory Global StiffnessTimestepper. Since it was not used (not compiled by default), I renamed the second set to match the directory name. If it breaks something, let me know.
  2. Updated the scons script, scons now compiles yade completely, including header installation. It is yet to be tuned to be lot more fast, but works fine already.
  3. Cleaning up messages at startup, (almost) everything is piped through the LOG_* stuff.
  4. Included sample logging.conf.sample file, log4cxx is amazingly flexible and easy to use. Give it a try!
  5. Lot of debugging since after the last change of allowing regular files to be plugin-loaded, yade would try to load garbage (like the file foobar.baz transformed to libbar.so and the like) giving spurious errors. Everything should work properly now, you can have whatever you like in the plugins directories. It will not even crash on short files (amazing fragility...).
  6. Removed the message from ResultantForceEngine constructor, to not to pollute the console every time. Dtto for StiffnessMatrixTimeStepper.
  7. Added one ; in yade.cpp that broke compilation without LOG4CXX. The non-log4cxx macros are now enclosed within {} just as their log4cxx counter parts. This should eliminate the need for separately building both configurations.

r.1018  (Vaclav)
  1. Allow running simulation from commandline by using the -S switch (in QtGUI only for the moment).
  2. Embryonal form of some logging framework (logging.hpp), that is perfectly usable as of now. it is disabled by default, see logging.hpp for more information on how to use it.
  3. Scripts to build yade with scons (works here), which should make repetitive and parallel building faster/more reliable. Note that scons build uses the log4cxx framework by default.
  4. Some random and mostly commented-out changes in the library loader I needed for debugging my installation. Most importantly however, yade will also load files that are _not_ symlinks (which was not the case until now).
  5. Changing boost path corectness checker to "native", so that we don't crash on non-ms-dos filenames.

r.1016  (Bruno)
  - Engines are now compiled in a different order, with DeusExMachinas compiled last. The full DEM package has been compiled successfully after thuis change.
  - same thing to be done probably for the MyTetrahedron stuff as some headers can't be found when you "make clean" + "make" from yade-package-dem directory
  - Matrix3 patch from Vaclav

r.1014
  - removed invMass and invInertia. Removed special handling for division by zero. mass shouldn't be zero anyway.
  - I checked simulation results, by comparing positionoritntation_* files, before and after the change. There was a difference in the two or three last digits. 1.234567890123xxx  <- x are different numbers oh well. Perhaps this version is more precise, because in fact there is one multiplication less during the calculations.

r.1013  (Bruno)
  - Modifications in the equations of "non-viscous" damping. The equations are now as defined by Cundall.

r.1011 (*)
  - Added drawMask to OpenGLRenderingEngine, it is now possible to see only bodies that have a certain groupMask
  - Added Quadrilateral, but it is in fact a hack, that makes it possible to see the evolution of strain field. It is much simpler to add something as a component of OpenGLRenderingEngine (the drawing loop) than as a component of engines (the calculation loop). This fact is a string indication that design of OpenGLRenderingEngine is much better than design of Metabody->engines. And so engines must be eliminated to simplify their use. Whole process will get automated.
  - So currently we have a Quadrilateral that is not really a Quadrilateral, but just a quick hack to see evolution of strain field. The real solution will be to change the data structure. And this solution is coming ;) (ut don't know when) 
  - Anyway, adding it, gave me a lot of thoughts about the current design of data.  I won't leave this unfixed, this would be too bad :>

r.1010
  - 'C' key centers scene on selected body
  - 'D' sets the 'isDynamic' flag of selected body. (select it twice to unset this flag).
  - Finally 3D lattice works with torsion and bending. There is bending stiffness, and torsion stiffness.
  - flag that allows one to enable/disable calculating of torsion in lattice
  - LatticeExample FileGenerator can now generate a 3D tetrahedral regular grid. (before there was only orthogonal grid)

r.1008
  - Omega throws when loading bad simulation file
  - NullGUI allows one to call a FileGenerator
  - Lattice 3D is working with bending stiffness. Now I must add torsional stiffness.
  - also renamed: ./yade-scripts/renameClassFirst volatileInteractions transientInteractions
  - added GLDrawStateFunctor. So now it is possible to see bodies' velocity, acceleration, angularVelocity, angularAcceleration. And other State attributes of a body.
  - renaming: ElasticContactParameters ElasticContactInteraction

r.1000
  - Some cleaning, involving changing variable names, like Body::interactingGeometry. Which caused almost all the files to be modified.
  - And most imporatntly added a primitive example of doing calculations with tetrahedrons. It is for educational purposes about how to add new stuff to yade. Later I will have to come back to this commit, and extract from it a useful example for the manual.
  - This example is for Vclav milauer, because he wants to write a complete simulation with tetrahedrons. So this is a starting point.

r.995
  - Finally deleted swiftpp and qhull. Now we have less license problems. There is still license problem with math library, though.
  - Tetrahedrons are currently not working, just crashing (because swiftpp was removed).
  - SDECTriaxialTest is deleted, because it was never done, in fact.

r.995
  - more improvements in ThreadRunner, ThreadWorker::~ThreadWorker and SimulationController
  - fiddling with lattice: angle between beams is now calculated in 3D not 2D, with tracking of positive/negative angle. So the angle is between -180 and 180 deg, while arcus cosinus can only give a result between 0 and 180 degrees.

r.994
  - Graphics display can be now synchronized with the calculation without problems, and without blocking GUI 
  - FileGenerator now does not block whole GUI when generating. And can be stopped if function generate() calls somewhere in the loops:
        if(shouldTerminate()) return "";
  - an example how to use the progrss bar, and messages is inside SDECSpheresPlane generator, and LatticeExample. Other generators cannot be stopped with "Stop" button.
  - ranaming SimulationRunner -> ThreadRunner ; SimulationFlow -> ThreadWorker

r.989
  - it is possible to select (shift click) and 'm'ove bodies in the simulation view window a dirty implementation. Needs major refactoring.
  - the "display" tab now offers the ability to set 'display refresh rate' in [ms] so it's like the priority of draw.
  - deleted yade-lib-time, and using boost::posix_time instead

r.983
  - better DynLib error reporting
  - new Lattice, only 2D
  - triaxial test from Bruno
  - deleted unused QGLThread

r.979
  - updated INSTALL file (before release).
  - also updated Changelog in previous commit.


r.978
  - SimulationController is now updating iterations/time and sets time step correctly.
  - some small changes in filegenerators, so they by default will generate something interesting.
  - FileDialog now reports "Cancel" button correctly.

r.974 version 0.10.0
  - added SimulationRunner, that can start/stop or perform singleLoop of simulation in separate thread.
  - Maybe some signal capability will be added to SimulationRunner, so that something can be notified when singleLoop is finished during calculations.

r.972
  - GLSimulationPlayerviewer - change of function call, because qglviewer 2.2 has changed a function name: added compilation flag: QGLVIEWER20
  - OpenGLRenderingEngine - latest version of libglut3d requires to call glutInit(): added compilation flags: NO_GLUTINIT

r.970
  - Threadable class has been removed:
  - when yade is idle 0% of CPU is consumed by the display,
  - when simulation is ran it is in separate thread, second processor (if present) is drawing on the screen,
  - with two processors theoretically QtGUI should have speed equal to NullGUI,
  - drawing on the screen is not synchronized, so some bodies are from previous iteration, some are from next iteration (later there will be an option to turn synchronization ON - it will slow down computations a bit)
  - This implementation is stil not 100% tested, please report if there are any problems. Especially if there is a segfault on exit. Press enter in each graphical view to start/stop updating it.

r.960
  - 'cancel' when loading filegenerator is not crashing now
  - started non-local model for lattice
  - hopefully 2d lattice beams are now okay.
  - middle button in 3d view is now "PAN" command, not "ZOOM" as it used to be. It's more similar to AutoCAD
  - 'yade -h' will now display compilation flags (currently only DOUBLE_PRECISION - how about adding long double ;) ?)

r.957
  - added function Quaternion::power(RealType)
  - lattice bending works now in 2d (X-Y plane), using angles. not vectors or quaternions. I will do 3d later.

r.956
  - fixed serious bug in bool BodyRedirectionVector::erase(unsigned int);
  - added function bool exists() const; to BodyContainer
  - graphical display now has reversed meaning of scrollwheel, so it is now similar to behaviour of blender and autocad
  - SDECLinkedSpheres is working after some (surprise!) quick hack. That part is still waiting for total rewrite.
  - big improvements in lattice model. beam bending works (but not always) with axis+angle notation. maybe with quaternions it will be better. There is a problem that shows itself when using regular triangular grid.

r.955 version 0.9.8
  - NullGUI displays help when called without arguments
  - fixed serious problem in OpenGLRenderingEngine's constructor - there were hardoced plugin names. now the list is built dynamically
  - configurable path to preferences, not forcing users to use ~/.yade/
  - QtGUI is now saving the configuration of RenderingEngine, so for example background color is remembered now.
  - 'Load' and 'Save' in FileGenerator works
  - added yadeVersionName to Omega - so that all plugins can query it to correcly display version, which is set by main(), and general cleaning of the mess in main(), yade.cpp
  - fixed handling of pointer to simulationController in YadeQtMainWindow.cpp
  - lattice model based on rods works great
  - add a FIXME in XMLFormatManager, beginDesrialization : rootBody can load FileGenerator, because is not checking names

r.954 version 0.9.7
  - NullGUI can save to binary format
  - graphical windows GLViewer displays a grid with cell size exacly 1 meter or 1 cm (depending on the model size) previously that grid had some random size, which was totally useless
  - added DisplacementEngine derived from DeuxExMachina - is like translation, but without velocity - purely kinematic displacement.
  - disorder parameters in FileGenerators SDECSpheresPlane and LatticeExample are now Vector3r, so that we can specify different randomness in each direction. This is useful for flat 2D simulations
  - major improvements to lattice model (rod model is working)

r.953 version 0.9.6
  - binary serialization for yade
  - fixed one bug in BINFormatManager
  - fixed saving ElasticContactParameters and SpheresContactGeometry, so that after loading the simulation is not going crazy
  - removed GLAPI and GLAPIENTRY from OpenGLWrapper
  - XMLSaxParser is now better at counting lines

r.951 version 0.9.5
  - can save simulation from simulation controller
  - can change background color of the simulation displayed

r.950
  - QtEngineEditor is not working - doesn't detect correctly StandAloneEngines
  - there was a collision between PersistentSAPCollider and PersistentSAPCollider from yade-extra, renamed second one to PersistentAloneSAPCollider

r.949 version 0.9.4
  - added: StandAloneEngine.hpp, InteractionSolver.hpp, DataRecorder.hpp, BroadInteractor.hpp - to have a nicer and easier to navigate class diagram
  - fixed drawing of bounding volumes inside rootBody

r.948 version 0.9.3
  - MetaBody::actors -> engines
  - GLDrawInteractionBox -> GLDrawInteractingBox
  - GLDrawInteractionGeometryFunctor -> GLDrawInteractingGeometryFunctor
  - GLDrawInteractionSphere -> GLDrawInteractingSphere
  - GLDrawInteractionGeometrySet -> GLDrawMetaInteractingGeometry
  - ErrorTolerantContactModel -> ErrorTolerantContact
  - AABox2Sphere4ClosestFeatures -> AAInteractingBox2InteractingSphere4ClosestFeatures
  - Box2Box4ClosestFeatures -> InteractingBox2InteractingBox4ClosestFeatures
  - Box2Sphere4ClosestFeatures -> InteractingBox2InteractingSphere4ClosestFeatures
  - Box2Sphere4ErrorTolerant -> InteractingBox2InteractingSphere4ErrorTolerantContact
  - Box2Sphere4MacroMicroContactGeometry -> InteractingBox2InteractingSphere4SpheresContactGeometry
  - Sphere2Sphere4ClosestFeatures -> InteractingSphere2InteractingSphere4ClosestFeatures
  - Sphere2Sphere4ErrorTolerant -> InteractingSphere2InteractingSphere4ErrorTolerantContact
  - Sphere2Sphere4MacroMicroContactGeometry -> InteractingSphere2InteractingSphere4SpheresContactGeometry
  - Box2AABB -> InteractingBox2AABB
  - Sphere2AABB -> InteractingSphere2AABB

r.938 version 0.9.2
  - added SDECMovingWall FileGenerator contributed by Andreas Plesch.
  - cleaned all .cpp files. they are all now less cluttered and easier/shorter to read.
  - So I have started compiling it on windows, and I stopped on the problem that linker cannot link serialization with factory.


r.917 version 0.9.1
  - SimulationPlayer - can play recorded position/orientation data
  - QtSimulationPlayer
  - SphericalDEMSimulator - a separate version of DEM calculations without all "yade burden" to make speed comparisons

r.914
  - new version of docs, checked by my sister.

r.904 yade-core version 0.9.0
  - split of packages done. Now each package can be developed separately and has own version numbers.
  - Initial version numbers are choosen arbitrally to reflect their advancement state.
  - huge improvement in Makefile. 'make compile_install' and yade is ready to release to the wild world.
  - some class renamed to better reflect their functions,
  - some cleaning,
  - Simulation loop editing through GUI starts to work,
  - added REGSITER_BASE_CLASS_NAME, so we can build class tree on runtime (used by simulation loop GUI),
  - removed all references from Serialization stuff to yade-lib-multimethod as they are totally unrelated,
  - plugins of yade containers are now using ::iterator, just like STL !
  - Tetrahedron Discrete Model, and Lattice Discrete Model start to work, but not good enough to increment a major revision number.
  - FEM, DEM, Mass Spring and Rigid Body are working good.

 yade-core                                      version 0.9.0
 yade-libs:         
        yade-lib-algorithms                     version 0.1.0
        yade-lib-computational-geometry         version 0.5.0
        yade-lib-factory                        version 1.0.0
        yade-lib-loki                           version 0.9.5  because is different than Loki
        yade-lib-multimethods                   version 1.0.0
        yade-lib-opengl                         version 0.5.0
        yade-lib-qhull                          version 1.0.0
        yade-lib-serialization                  version 1.0.0
        yade-lib-serialization-qt               version 0.8.0  because is not serializing containers
        yade-lib-serialization-xml              version 1.0.0
        yade-lib-swiftpp                        version 1.0.0
        yade-lib-threads                        version 0.3.0  because is not supporting multithreaded calculations
        yade-lib-time                           version 0.5.0
        yade-lib-wm3-math                       version 0.7.0
 yade-guis:         
        yade-gui-qt                             version 0.7.0
 yade-packages:         
        yade-package-common                     version 0.9.0
        yade-package-dem                        version 0.9.0
        yade-package-fem                        version 0.7.0
        yade-package-lattice                    version 0.3.0
        yade-package-mass-spring                version 0.9.0
        yade-package-realtime-rigidbody         version 0.9.0

r.890
  preparing for release.

r.845
  renaming:
  XMLManager -> XMLFormatManager
  IOManager  -> IOFormatManager
  MacroMicroContactGeometry -> SpheresContactGeometry
  SDECTimeStepper -> ElasticCriterionTimeStepper
  InteractionDescriptionSet2AABB -> MetaInteractingGeometry2AABB

r.832 (*)
  huge improvement in Makefile. now the mechanism of make is ready to release yade to the wild world.

r.821
  Simulation loop editing is now working. There are still some random crashes to fix and for now it is not possible to load a simulation loop.

r.818 (*) (fix article)
  Removed unused classes.
  D    yade-core/src/InteractionSolver.cpp
  D    yade-core/src/InteractionSolver.hpp
  D    yade-core/src/BroadInteractor.cpp
  D    yade-core/src/BroadInteractor.hpp
  D    yade-core/projects/kdevelop/yade/InteractionSolver.cpp
  D    yade-core/projects/kdevelop/yade/BroadInteractor.cpp
  M    yade-core/projects/kdevelop/yade/yade.pro
  D    yade-core/projects/kdevelop/yade/InteractionSolver.hpp
  D    yade-core/projects/kdevelop/yade/BroadInteractor.hpp


r.817
  added REGSITER_BASE_CLASS_NAME, so we can build class tree on runtime.

r.815
  Improvements in QtEngineEditor. Now it is almost possible to create graphically a simultation loop.Now I have to make something to set parameter of MetaEngines.

r.812 (*)
  Better design : added class related to MetaEngine. Removed all references to Serialization stuff into yade-lib-multimethod. They are now into newly added classes.

r.809 (*)
  plugin containers for yade use ::iterator, just like STL !

r.808
  I have introduced iterators for all types of containers in order to remove the dirty gotoFirst, gotoNext, hasNext and notAtEnd methods. Now it looks like more like STL iterators. It is compiling but unfortunately it is segfaulting at runtime, probably some problems in ++,* operators.

r.804
  Better YadeQtMainWindow. Now menus are displayed in menu bar in the same order they are added in the program. Added preferences for QtGUI. Now it remembers size and position and exit. Now it is possible to choose time step from GUI.

r.801 (*) version 0.8.7
  tagging v.0.8.7
  - second redesign of directory tree finished.
  - yade-core is clean
  - yade-empties contain templates for whole packages.
  - New yade-empty-package which is simpler than previous one.
  - Makefiles install correctly.
  - Yade is now compiling with separate libraries projects


r.758
  yade-core is clean

r.754
  yade-empties contain templates for whole packages.

r.748
  New yade-empty-package which is simpler than previous one. Makefiles install correctly. Yade is now compiling with separate libraries projects

r.746
  fixed all #include paths, started Makefiles

r.732
  second directory tree redesign started. much better now.

r.714 (*) version 0.8.6
  tagging v.0.8.6
  - All those extra environment variables are no longer needed. Currently only LD_LIBRARY_PATH is used by dlopen. Dunno how to remove it.
  - added user manual to doc/, without pictures, and still a draft.
  - Small change so that yade is compiling with qglviewer 2.0
  - Updates in Omega : now foreach plugins we store if it is indexable, factorable or serializable.
  - Improved GUI for code generation : Data class, engine and dispatching engine works. No stuff is done for generation of kdevelop projects.


r.709 (*)
  All those extra environment variables are no longer needed. Currently only LD_LIBRARY_PATH is used by dlopen. Dunno how to remove it.

r.708
  Small change so that yade is compiling with qglviewer 2.0

r.705
  Updates in Omega : now foreach plugins we store if it is indexable, factorable or serializable. Improved GUI for code generation : Data class, engine and dispatching engine works. No stuff is done for generation of kdevelop projects.

r.701
  Added some functions into yade-lib-computational-geometry. Started to and graphical interface for buliding simulation loop and initializer list

r.700 (*) version 0.8.5
  tagging v.0.8.5
  - Lattice works with rods, but dirty, of course - as always when something is implemented for the first time :>

r.691 (*)
  Added some dynlibs for handling swept sphere volume.

r.690
  To make yade deserialization working I had to modify PointerHandler.tpp around line 90. Basically I just replaced a dynamic_cast by a reinterpret_cast. We have to find why dynamic_cast is not working anymore.

r.688 (*) version 0.8.4
  tagging v.0.8.4
  - Added new file generator Funnel and TetrahedronsTest (*)
  - Added new InteractingGeometry PolyhedralSweptSphere (*)
  - Added new NarrowInteractionGeometryEngine SwiftPolyhedronProximityModeler that will use SWIFT++ library and PolyhedralSweptSphere (*)
  - Added EngineUnit Tetrahedron2PolyhedralSweptSphere and Box2PolyhedralSweptSphere that will build InteractingGeometry

r.687 (*)
  Lets consider here that splitting is done. (but almost)

r.686
  Added MarchingCube algorithm into yade-lib-computationnal-geometry
  Created lib yade-lib-algorithms were to gather algorithms of different type : for now there is only a PerlinNoise algorithm, but we can put here sorting algorithm ...

r.684
  Added libraries swift++ and qhull.
  Modified scripts so that they work with .h and .c files. improved documentation

r.680
  SimpleSpringLaw renamed to FrictionLessElasticContactLaw.

r.671
  Renaming:
  PhysicalActionEngineUnit -> PhysicalActionDamperUnit, PhysicalActionApplierUnit
  Added class Preferences that contains directory to dynlibs.
  Modification of library yade-lib-factory so that it is using multiple directories to look for requested dynlib

r.669 version 0.8.3
  tagging v.0.8.3
  - Splitted ElasticContactLaw into 2 : ElasticContactLaw and ElasticCohesiveLaw.
  - Autocollision for hanging cloth is working without hack.

r.668
  Removing all references to libraries Interactions, Body and Engine that no longer exist. Yade should now compile.

r.639
  renamed ActionParameter to PhysicalAction

r.637 version 0.8.2
  tagging v.0.8.2
  - new directory structure almost splitted, we start to have packages. 
  - Yade is now compiling on the first try.
  - removed initialization in constructor of bodyContainer, InteractionContainer ... because now container are in plugins and so compiled after yade itself.
  - Changed name Dispatcher/funtor to MetaEngine/EngineUnit

r.562 version 0.8.1
  tagging v.0.8.1
  - we have made a great yade-empty directory structure. This is a design for future split of yade into several packages.

r.554
  Renaming classes. First draft of documentation.

r.512
  Added layout and scrollview to QTGUI

r.510 (*)
  better openGL tetrahedron display. created empty directories for splitting to packages.

r.486 version 0.8.0
  tagging v.0.8.0
  - FEM works!

r.482
  FEM is half done - generation works. and other stuff. Only Constitutive Law for FEM is empty - waiting to be written. But there is a compilation problem we have to compile twice now, because of linker errors in fem loader.

r.481
  ComplexBody has now actors and initializers, and thanks to that FEMSetTextLoaderFunctor is working. loading terrain from VRML file will work in a similar way that FEMSetTextLoaderFunctor

r.480 version 0.7.5
  tagging v.0.7.5
  - Quite stable version used for course (teaching how to use yade) with Frederic, Emmanuel and Julien.

r.470
  FEMBeam loads the file correctly

r.469
  renamed:
  SDECParameters -> BodyMacroParameters
  SDECContactGeometry -> MacroMicroContactGeometry, and all functors
  SDECMacroMicroElasticRelationships -> MacroMicroElasticRelationships
  SDECContactPhysics -> ElasticContactParameters
  SDECLaw -> ElasticContactLaw
  added epmty classes:
  FEMTetrahedronParameters
  FEMSetParameters
  FEMSet2MarchingCubes
  LatticeSet2MarchingCubes
  MarchingCubes
  FEMSetTextLoaderFunctor

r.458
  ActionParameterInitializer and ActionParameterReset, LeapFrogOrientationIntegratorFunctor and LeapFrogPositionIntegratorFunctor, ForceCondition GravityCondition RotationCondition TranslationCondition

r.450
  separating gravity to GravityForceFunctor

r.444 version 0.7.4
  tagging v.0.7.4
  - version used for training with Julien, Frederic, and Luc

r.441
  renaming:
  DynamicEngine -> ConsitutiveLaw
  KinematicEngine -> KinematicMotion
  ApplyActionForce2Particle -> NewtonsForceLaw
  ApplyActionMomentum2RigidBody -> NewtonsMomentumLaw

r.435
  fixed stupid and embarassing error when calculating sphere volume. All physical results are totally different now. comparing results again with SDEC.

r.434
  Body::group changed into Body::groupMask (so bodies can belong to many groups - max. 16 groups, because we have 16 bits here). added fem.beam, so that we can start with FEM

r.432
  started lattice model. Generation works.

r.430
  Splitted leapfrog integrator into two parts (position and orientation)

r.427
  internal shearing angle is added, and yade is ready to compare results with
  sdec, although force recorder is little dirty, because it is releasing the big ball

r.426 version 0.7.3
  tagging v.0.7.3
  - RotatingBox example with spheres and boxes inside is working quite good - with SimpleSpringDynamicEngine.
  - BoxStack example is working quite good. meybe it should be renamed to WallImpact.
  - the real name for damping is: Cundall Non Viscous Local Damping.
  - TimeStepper is working quite nice, and now - even SDECLinkedSpheres example is stable.
  - SDECParameters is now holding shearingAngle, young modulus and posions ratio - as it should. 
  - timestepper is working good with that. All examples filegenerators exept FEM are working!

r.419
  added ActionReset - it is not inside SDECDynamicEngine - because for cloth example we have two/three engines, so they can't do a reset - because they will delete results from other engine
  also changed arguments to InteractionGeometryFunctor - from shared_ptr<Interaction>& to const shared_ptr<Interaction>&, because InteractionContainer is returning cont reference. So by passing this const& - we avoid making extra copy of shared_ptr so it is faster - lot of files were changed.
  I also started separating computation of InteractionGeometry and InteractionPhysics for permanent links. Currently this calculation is inside SDECDynamicEngine ! it is very bad, and must be moved outside, because for lattice model I want to make those calculations in a clean way - outside of dynamic engine. To do that I had to modify dispatcher - so now dispatcher is doing two loops - one over permanentInteractions and second over interactions. So this dirty part of deleting duplicated interactions was moved from SDECDynamicEngine to InteractionGeometryDispatcher. It is still dirty and must be solved, but now it is dirty outside of dynamic engine, so it is possible to work on dynamic engine in a clean way.

r.417 version 0.7.2
  tagging v.0.7.2
  - damping is separated from SDECDynamicEngine and works, strange is that ActionDampingDispatcher and ActionApplyDispatcher are exactly the same! so they should be merged into one dispatcher. maybe Action2BodyPhysicalParametersDispatcher

r.416 version 0.7.1
  tagging v.0.7.1
  - I have done some general cleaning - removed unnecessary constructors, deleted unused postProcessAttributes, etc..
  - FunctorWrapper is Serializable, now - because we want Dispatcher to work with serialization, so that Functors can get extra arguments from .xml

r.413
  FunctorWrapper is Serializable, now - because we want Dispatcher to work with serialization, so that Functors can get extra arguments from .xml

r.410
  finished all renaming. update of GeometricalModel for cloth is working

r.407
  OK/Cancel works now in file selection dialog, 
  ActionForce2RigidBody was deleted, because ActionForce2Particle does the same job 
  now I'm starting to work on updating GeometricalModel of Mesh2D, so that cloth will be displayed properly

r.406
  I have done some general cleaning - removed unnecessary constructors, deleted unused postProcessAttributes, etc.. and I have discovered that when class has no virtual destructor then dunamic_cast fails! I wanted to remove all unused destructor, and then all dynamic_cast were failing. So instead I added virtual destructor everywhere :)

r.399
  We have now: ( <- means 'aggregates' )
  Interaction <- InteractionGeometry
  Interaction <- InteractionPhysics
  Body <- BodyPhysicalParameters
  Body <- BoundingVolume
  Body <- GeometricalModel
  Body <- InteractionDescription

r.395
  lots of class renaming. openGL improvement, Loki stored in single place.

r.379 version 0.7.0
  tagging v.0.7.0
  - To add BodyPhysicalParameter the OpenGLDispatchers have been added. This greatly separates display from numerics.
  -  MassSpring cloth is now working : but we still have to update geometricalModel. Created TimeIntegratorFunctor and Dispatcher. BallisticDynamicEngine is now LeapFrogIntegrator
  

r.374
  MassSpring cloth is now working : but we still have to update geometricalModel. Created TimeIntegratorFunctor and Dispatcher. BallisticDynamicEngine is now LeapFrogIntegrator

r.373
  To add BodyPhysicalParameter the OpenGLDispatchers have been added. This greatly separates display from numerics.

r.368
  Added BodyPhysics class and moved all type of bodies into subdirectory, BodyPhysics

r.367 version 0.6.8
  tagging v.0.6.8
  - Added single step button in QtGUI
  - Better SpheresPlanes FileGenerator
  - HangingCloth is working again but it is designed using Yade framework

r.366
  HangingCloth is working again but it is designed adhering to Yade framework.

r.355
  InteractionPhysicsDispatcher starts to works. But we have to make BodyPhysics

r.352 (*) (****) version 0.6.7
  tagging v.0.6.7
  - small change in ActionDispatcher.cpp, is faster, but if Action was holding body's id it is possible that it can be faster result: 107 seconds is faster compared to 111 seconds
  - tere are a lot of places where we can do improvement like this. if we do code change like here - in every possible places - yade can gain a lot of speed.
  - basically I've discovered that every temporary variable of type shared_ptr<> costs 3 seconds, so we should avoid creating them and instead pass them around by references - whenever possible. 
  - And very iportant to note is that this speed improvement is possible ONLY because we have introduced Action, which is more generic! without this class it would be impossible to get faster. So it means that good generic code allows faster code - at least sometimes - as we have example if this here. The same was with containers - introducing containers made code slower, but it made possible to make improvements in other places (because containers increased genericity) and as a result the code got faster.

r.351
  renamed CollisionFunctor to InteractionFunctor

r.345 version 0.6.6
  tagging v.0.6.6
  - possibly faster DynLibDispatcher, 
  - I was also trying to fix problem that Singleton is not deleted at end, but finally I made only some improvement, but it is still not fixed.

r.344
  some optimizations by using references. Multimethods now support inheritance in Indexable objects, I had to modify in Indexable class:
  #define REGISTER_CLASS_INDEX(SomeClass,BaseClass)

r.342 version 0.6.5
  tagging v.0.6.5
  - containers return references (no temporary objects are created)

r.340 version 0.6.4
  tagging v.0.6.4
  - ActionContainer, without creating new pointers everytime.

r.339 version 0.6.3
  tagging v.0.6.3
  - ActionContainer->reset() - faster code.
  - benchmark tests.

r.338 version 0.6.2
  tagging v.0.6.2
  - ActionDispatcher is working
  - dispatcher for creating actions need createIndex() in constructor of all Actions
  - Added classes: Action, ActionVecVec, ActionContainer, ActionForce, ActionMomentum, etc.. but they are empty. And it is compiling

r.337
  ActionDispatcher is working

r.334
  dispatcher for creating actions need createIndex() in constructor of all Actions

r.330
  Added classes: Action, ActionVecVec, ActionContainer, ActionForce, ActionMomentum, etc.. but they are empty. And it is compiling

r.323
  Added Action, ActionContainer, SDECLinearContactModel, PhysicalInteractor. We started redesign to introduce Action which are the response of a DynamicEngine to an Interaction and acts on body.

r.315 version 0.6.1
  tagging v.0.6.1
  - versioon used for benchmark checks
  - small fixes.
  - Real used everywhere instead of floar or double.

r.312 (*)
  now Real is used everywhere instead of double or float. Specify with compilation flag #define DOUBLE_PRECISION, whether you want float or double.

r.307
  splitting InteractionModel to InteractionGeometry and InteractionPhysics

r.303
  iterating containers in done with: gotoFirst, gotoNext, notAtEnd gotoFirstPotential, gotoNextPotential, notAtEndPotential.

r.300 version 0.6.0
  tagging v.0.6.0
  - moment rotation law added, mess inside SDECDynamicEngine (three enegines in one!)
  - Serialization now supports almost all std, boost and Loki containers and more
  - math classes are separate from serialization, and done with templates (but with wild-magic license)
  - for storing Bodies and Interactions we now use polymorphic classes InteractionContainer and BodyContainer
  - yade uses threads now, but still not fully stable
  - switch at compile time to select float/double precision of calculation
  - displayed objects are now casting really cool shadows
  - some examples are not updated, and therefor not working. it is guaranteed that SDECBenchmark8k will always work.
  - BoundingVolume optimized for each kind of GeometricalModel makes computation almost twice faster
  - new very generic MultiMethods are added, allowing multivirtual call with extra parameters, and easy code reuse

r.298
  new very generic MultiMethods are added, allowing multivirtual call with extra parameters, and easy code reuse

r.291
  better handling of threads, but still not fully stable

r.254 version 0.5.2
  tagging v.0.5.2
  - Finished rearranging subdirectories. Now we have directory extensions (we can rename it,
  - if there is a better name), and ClassFactory is in toolbox/Libraries,
  - yade is now compiling (and works) with g++ 3.3,
  - all .xml examples except ErrorTolerant, are now working,
  - Improved version of QtGUIGenerator. Now boolean are represented by
  - checkboxes instead of linedits,
  - Better handling of start,stop and reload simulation. Thread now terminate
  - when associated window is closed,
  - NullGUI is now saving results during computations. Those results can be opened with QtGUI and we can see what is computed.
  - added filegenerator that can import data files from SDEC,
  - Boxes are now casting shadows,
  - Better handling of thread into GUI.
  - is compiling with double.

r.245
  BoundingVolume now can be used to center scene for display

r.232 version 0.5.1
  tagging v.0.5.1
  - small fixes, little faster

r.227 version 0.5.0
  tagging v.0.5.0
  - Bounding volume are now both indexalbe and a GeometricalModel,
  - BoundingVolume update is now done in an actor,
  - Improved version of GLWindowManager library,
  - BoundingVolume optimized for each kind of GeometricalModel makes computation almost twice faster

r.225
  some examples are not updated, and therefore not working. it is guaranteed that SDECBenchmark8k will always work.

r.223 version 0.4.8
  tagging v.0.4.8
  - scripts are checking all Environement Variables - more safety,
  - fixed missing is_base_and_derived in Indexable.hpp,
  - Much better version of Thread library and multithreaded QGLViewer,
  - Reenabling GUI updater thread,
  - Now we use InteractionHashMap by default because InteractionVecSet is not ready yet,
  - Added RenderingEngines,
  - OpenGLWrapper 50% done  - and #DOUBLE_PRECISION works! (float/double),
  - Shadows are working
  - SDECCollision.xml and SDECTetrahedronWithLinks.xml work for dt=0.003,
  - comparing results with older versions.
  
r.219
  displayed objects are now casting really cool shadows

r.209
  switch at compile time to select float/double precision of calculation

r.196 version 0.4.7
  tagging v.0.4.7
  - Improved thread management. Multiple views are now working,
  - Improved GUI.
  - scripts that allow easy switching between relative paths and paths in environemnt YADE*PATH variables
  - XMLManager writes pointers in a shorter way, with _className_
  - NullGUI works - for benchmars of Vector3 not in Serializable, etc..

r.182
  yade uses threads now, but still not fully stable

r.184 version 0.4.6
  tagging version 0.4.6
  - New SimulationController is now working
  - Started moving simulation loop from glViewer to a specific thread
  - InteractionContainer and BodyContainer integration completed. but container classes quality/speed is not good (and tested) yet
  - InteractionVecSet and BodyVector done.
  - Added ThreadSynchronizer. Yade is now working with external simulation loop
  - FIXED threading on multi-processor machine (not real multiprocessor, just hyper threading...)
  - rename BodyVector to BodyRedirectionVector
  
r.180
  for storing Bodies and Interactions we now use polymorphic classes InteractionContainer and BodyContainer

r.175 version 0.4.5
  tagging 0.4.5
  - Add QtFileGenerator, for automatic file generation with Qt GUI (not completely working yet)
  - QtGuiGenerator and QtFileGenerator are now working
  - BodyContainer starts to work
  - All Qt libraries are now in one library.
  - Created new qt controller for simulation and new opengl library

r.168 version 0.4.4
  tagging v.0.4.4
  InteractionContainer starts working

r.165 version 0.4.3
  tagging v.0.4.3
  praparing for InteractionContainer. small fixes

r.155 version 0.4.2
  tagging v.0.4.2
  - better serialization for math stuff.

r.154 
  math classes are separate from serialization, and done with templates (but with wild-magic license)

r.147 version 0.4.1
  tagging v.0.4.1
  - Serialization now supports almost all STL containers from std namespace, boost and Loki containers and more
  - comparing resluts with older revisions.

r.140
  Serialization now supports almost all STL containers from std namespace, boost and Loki containers and more

r.129 version 0.4.0
  moment rotation law added,
  - unit tests of SDEC with r.90 (checking results correctness)
  - LPC solver for ErrorTolerant computations

r.127
  LPC solver for ErrorTolerant computations

r.122
  moment rotation law added, mess inside SDECDynamicEngine (three enegines in one!)

r.112 version 0.3.1
  tagging v.0.3.1
  - added NullGUI, so commandline computation is possible

r.108
  started ErrorTolerant DynamicEngine

r.90 version 0.3.0
  tagging v.0.3.0
  - SDEC (DEM) added and works with contact law

r.83
  SDECDynamicEngine starts to work with SDEC contact law

r.80
  simple example for SDEC added

r.76
  Serialization uses boost::spirit

r.74 version 0.2.0
  tagging v.0.2.0 with working cloth, rotatingbox and falling boxes. before adding SDEC
  - ClassFactory is now reusable
  
r.56
  ClassFactory is now reusable

r.40
  setDebug, setRelease scripts added

r.30
  cloth simulation added

r.26 version 0.1.1
  tagging version v.0.1.1 after adding multimethods and before adding Cloth

r.17
  first try at multimethods, added class Indexable, and multimethods are used for collision

r.6 version 0.1.0
  tagging v.0.1.0
  - initial yade version imported (after 6 months of work by Olivier alone)
  - tagging this version before adding multimethods
  - Rigid Body example works
  
r.1
  rigid body example works

