The tangent stiffness computation and assembly remains somewhat expensive. We should force this to use thread local static variables to avoid memory allocation on each invocation. This also requires the numerical quadrature class to replace integrate and integrate_inplace methods to always perform integration in-place and not return an integrated submatrix, thereby avoid an allocation, move and deallocation of memory. Move semantics do not help here so taking a matrix / vector by reference avoids this entirely for the large number of function calls.
Tasks:
[x] Update all integration methods to perform in-place integration
[x] Methods for element matrices / vectors to return a const&
The tangent stiffness computation and assembly remains somewhat expensive. We should force this to use thread local static variables to avoid memory allocation on each invocation. This also requires the numerical quadrature class to replace
integrate
andintegrate_inplace
methods to always perform integration in-place and not return an integrated submatrix, thereby avoid an allocation, move and deallocation of memory. Move semantics do not help here so taking a matrix / vector by reference avoids this entirely for the large number of function calls.Tasks:
const&