← Back to team overview

yade-users team mailing list archive

Re: Re : Triaxial Test

 

Note : ResultantForceEngine.pro and TriaxialStressController.pro both contain this line :

LIBS += -lStiffnessCounter \

In fact , it is not necessary, and it causes a problem if compiled after a "make clean" command has been issued, because StiffnessCounter is a StandaloneEngine, so it is compiled _after_ TriaxialStressController which is a DeusExMachina engine...

Just remove the line.

Bruno



Bruno Chareyre a écrit :

Hello Janek

I've written new classes in order to 1) control the triaxial stress in a box and 2) compute an accurate critical time-step. Point 1. is complete and has a dedicated FileGenerator ("TriaxialTest"). Point 2. is not complete but I have almost everything in hands to do it now :), it should arrive soon.

Everything is added in the DEM package (attached file) :
- StiffnessMatrix added to PhysicalAction (in fact it is not a matrix, it is only the vector of diagonal terms...) - StiffnessCounter added to StandaloneEngine to compute the Stiffness matrix of bodies - ResultantForceEngine added to DeusExMachina (should rename to ResultantForceController?...) to control the resultant force on a body. - TriaxialStressController added to DeusExMachina to control the stress state in a collection of bodies. TriaxialStressController work on a group of 6 bodies - most probably 6 InteractingBoxes currently, but why not 6 RigidWalls in the future? - TriaxialTest added to PreProcessor to demonstrate the use of TriaxialStressController.


While writing this classes, I have navigated a lot in Yade code, and I have a lot of questions...
I will only  write few of them now :

Some of them turn around debug options and debugging, they are not 100% yade related : 1 - It is said in the "INSTALL" that option -g may be used to generate debug symbols. However there are debug flags in all *.pro files (before one uses the "make_release" script...). So what happens if I compile with "debug" flags in pro files but without -g option?

2 - I was never able to really debug my code. The only way of debugging I found was based on including lots of cerr << "something" in the code to have an idea of what happened (I forgot to DeusExMachina::registerAttributes in ResultantForceEngine::registerAttributes, so subscribedBodies was empty...). What do you use for debug? Kdevelop? gdb in command-line mode? Do you know a link to a good debugging tutorial for gcc/kdevelop/gdb/* ?

Compilation :

3 - I tried to compile a complete project (e.g. DEM-package) from Kdevelop. It works! No problem with YADE_QMAKE_PATH as long as you don't try to compile a sub-project. However, it results in compiled objects that are 3 times bigger than those compiled with a "make CXXFLAGS='-pthread -lpthread' " from the command line!! Do you know the reason why? (debug symbols...?)

Optimisation :

4 - I have make a rapid tour in cachegrind/kcachegrind, and if I understand well, boost operations take a significant part of the computation cost (particularly "/shared_ptr<something> sh_ptr = existing_shared_ptr/" and /shared_ptr<something>~/ ). Don't you think it could be a good idea to write specific parts of Yade, like PersistentSAPCollider, with classical pointers? I seriously think about this type of optimisations. More generally, I would really appreciate having your point of view on where I should start if I plan to get faster computations.


Bruno



--

______________
Chareyre Bruno
     Maître de conférence
     Institut National Polytechnique de Grenoble

     Tél : 04.56.52.86.21
______________

     Bureau I 08
     Laboratoire 3S (Soils Solids Structures)
     BP 53 - 38041, Grenoble cedex 9 - France
______________



--

______________
Chareyre Bruno
     Maître de conférence
     Institut National Polytechnique de Grenoble

     Tél : 04.56.52.86.21
______________

     Bureau I 08
     Laboratoire 3S (Soils Solids Structures)
     BP 53 - 38041, Grenoble cedex 9 - France
______________



References