Make use of symmetries to save on compute time.
The Connection, Riemann, Ricci, Stress and Metric objects all exhibit symmetry. These should be utilized so that less computations are required.
This is a big deal, even though many of the redundant calculations were removed making this 100x faster, currently there are other efficiencies which can be extracted...
Riemann - only 20 independent components Currently computes 256.
Ricci - only 10 independent components Currently computes 16
Connection - only 40? I think Currently computes 64.
These would represent major upgrades.
Each optimization will be broken into two parts.
1.) Know which components should be calculated; so for Riemann there are only 20 we want to calculate. 2.) Use setting functions to copy the calculated coefficients to the appropriate elements of the tensor. This will be some kind of wrapper function which explicitly names the appropriate coefficients to be copied. This will replace "set all coefficients" type functions.