If you want to understand the maths behind DR, it is simply a method of balancing forces in a dynamic manner (using the velocity and acceleration equivalents of force). I've attached an excerpt from Prof Sigrid Adriaenssen's dissertation that you might find helpful.
The basic idea is for the system in the attached jpg, the equilibrium is P-Ky=0. P is load, K is stiffness and y is displacement/nodal locations, usual Finite Elements stuff. DR models this dynamically so that P - Ky = Fictional Mass x Acceleration + Artificial Damping Coefficient x Velocity. When the right hand side (the Residual Force) of this equation = 0, vibrations have stopped and the corresponding y values represent the equilibrium position.
You iterate by
1) Starting from some y (the initial geometry),
2) Calculate P-Ky by summing all internal forces(prestress) + external applied loads
3) If P - Ky=0, terminate,
4) Calculate velocity and acceleration [you don't really need to know the details of this bit unless you are coding up an algorithm..Sigrid's paper explains it anyways]
5) Find new y based on the given time step and repeat from step 2, first resetting the velocities and accelerations to zero
There are some other specifics, but in plain words this the general idea: apply external forces, calculate the displacement, velocity and acceleration, reset these to zero, reapply external force, recalculate displacement, velocity and acceleration, etc until system has stopped displacing under external force application. Sam Joyce has posted some source code in Processing if you want to see how to program it. http://people.bath.ac.uk/scj21/
Apparently the uploader doesn't like .pdf's so I've attached Sigrid's dissertation excerpt in zipped format. I've had issues opening .ghx files in the past as well; it would be nice if people zipped everything or at the very least checked their uploads because files don't seem to always work when uploaded directly
Am I right in thinking your description above is just for viscous damping, not for what the paper calls kinetic damping ?
(figure from Sigrid's paper illustrating Kinetic Damping)
I've been interested for a while in this idea of zeroing velocities when local kinetic energy peaks are detected. It seems very clever, but I wonder whether the benefit of the increased convergence speed is worth all the extra complication of actually identifying these peaks.
Right, and I left out a few other necessary bits in my description, but I think it is a good overview of what the little black box actually does. From what I understand kinetic damping is used as an add on to viscous damping to speed up convergence, so my summary is still valid, albeit missing the kinetic damping step.
To apply kinetic damping you would use the formula ∑Mv2 for each node in each 3 directions to find the global Kinetic Energy. Identifying peaks is done by comparing the global KE at different time steps. It shouldn't take more than a dozen lines of code to implement into a working DR algorithm, so if you're having trouble let me know.
I don't have a pure viscous damping DR program to compare to, but by using both kinetic and viscous damping I've generally found the relaxed form for 500node/1000element systems in about 2000 iterations / ~5seconds. Of course the performance depends on the geometry and properties, but I think that it is probably worth using.
This gets really interesting when you start with bending and torsional elements, but if you're interested in this stuff you should really just have a chat with Prof Adriaenssens.
Thanks for the description and clarification - very interesting and helpful.
I think I see what you mean now about the ease of identifying peaks - just check if the total KE has increased since the last time step and if not then zero all velocities, right?
Bending and torsional elements are definitely something that I am interested in (and one of Prof Adriaenssens' papers was actually really helpful when I was doing some work on simulating spatial elastica.), so I will be in touch.