6. Conclusions
Dynamic relaxation can be used to find the equilibrium state of a structure undergoing large deflections, by finding the rest state after oscillations have been dampened-out, for instance by kinetic damping. The method is iterative, with the convergence time depending on the type of damping, the applied loads and the chosen mass matrix. This research looked at executing a vectorised dynamic relaxation regime on both a central processing unit and graphics processing unit, to assess what benefits to the total analysis time could be achieved. This was carried out with the scripting language Python and modules PyCUDA and NumPy, comparing a modern desktop graphics card with just over two thousand shader cores, to a quadcore processor. Constructing vectorised code that can execute on a GPU is not as straightforward as with running on the CPU. Consideration must be given beforehand, to the nature of the calculations, as standard numerical programming functions are not always available. Basic element-wise operations, linear algebra, standard trigonometric and mathematical functions can be used, or combined to make other more complex functions, but sometimes custom kernels may need to be constructed or alternatives found. Three benchmarks with different sub-variables were analysed, examining axial stiffness, flexural stiffness and boundary conditions for bar and reduced degree-of-freedom beam elements. The gridnet models that were more axially flexible were quicker to analyse than their stiffer counter-parts, whilst for the beam models, the pinroller case took significantly more time to analyse than the pin-pin case where axial tie forces acted in addition to the shear forces from flexure.