yade-users team mailing list archive
Mailing list archive
Re: Is there a method to change the parameters during a simulation
Yes. Look what is done in TriaxialCompressionEngine.cpp (from last SVN
snapshot, you can download it if you have only the last release). You
can see that at line 85 :
if ( ... && ((Omega::instance().getCurrentIteration()) >=
Its almost the same problem as yours, I have to change the parameters of
some engines during the simulation (strain rate in this case). I see at
least two methods :
Method 1 :
-define a ModifiedCundallNonViscousForceDamping that inherits from
CundallNonViscousForceDamping and define its action() function like this :
if ( (Omega::instance().getCurrentIteration()) >= limit) damping = ...;
It should work, this is basically what I do when
TriaxialCompressionEngine inherits from TriaxialStressController.
Method 2 :
Define a new engine "DampingModifier" that contains a shared pointer p
to CundallNonViscousForceDamping, and do the test in this engine :
if ( (Omega::instance().getCurrentIteration()) >= limit) p->damping = ...;
The problem here is that you must find a way to link both engines so
that the link will still exist when the simulation is loaded from the
xml. Its doable but I don't remember exactly how I did that before.
Perhaps in preprocessor::CreateActors, try something like this (but not
sure its enough) :
actionForceDamping->damping = ...;
shared_ptr<DampingModifier> dampingModifier(new DampingModifier);
dampingModifier->p = dampingForce;
I hope it helps.
Feng, Chen a écrit :
>I am now trying to make a simulation of based on SDECSpheresPlane, however, I
>want to make the damping coefficient 0.3 for the first 1000 steps and 0.4 for
>the next 1000 steps, is it possible to program it in YADE?
>Thanks a lot!
>Yade-users mailing list
Maître de conférence
Institut National Polytechnique de Grenoble
Laboratoire 3S (Soils Solids Structures) - bureau I08
BP 53 - 38041, Grenoble cedex 9 - France
Tél : 04.56.52.86.21
Yade-users mailing list