In the Integrator subclasses, there is a method formEleTangent() which forms the tangent matrix after iterating all over the elements(similar method for nodes).
However all solution algorithm methods in EquisolnAlgo Subclasses whether linear, or newton raphson, are calling the parallel(and more simpler) method formTangent() while solving the current step.
So what is the basis behind choosing formTangent() over formEleTangent()? Why such two parallel ways?
After reading frank's thesis, the method formEleTangent() made more sense to me for getting the complete K*e matrix..
Someone kindly throw light...
The formEleTang() is called by the formTangent method. I could have just let every subclass of integrator implement the formTangent method by iterating over all ele and nodes and doing the code in the formEleTang() in the inner most loop. however why duplicate all the code in all the classes? it's not good OOP design to do so. hence the solution we have.
the concrete integrator classes implement the formEleTang as they are the ones who know what each elements contribution will be (especially true for the transient integrators). the formTangent() method appears higher up in the class hierarchy and is not implemented by all the integrators. it is this one called by the solution algorithms. The code for the algorithms is made simpler by the fact that they do not have to iterate over all the elements and nodes. Likewise the code for the many integrators is made simpler in a similar fashion.