utu.rotation
Adds utu.rotation.rotate, which carries helioprojective coordinates along
the solar surface to a new time. It is
sunpy.coordinates.propagate_with_solar_surface expressed in named arrays,
and takes a time per point, so a raster may give one per step.
- Correct for array times. A multidimensional
obstimesilently returns
NaN from sunpy, andget_earthraises on one, so everything is flattened
on the way in and put back into shape afterwards. - Fast. sunpy builds one rotation matrix per point in a Python loop
whenever it is given an arrayobstime, which is hundreds of times slower
for no gain in accuracy. This only ever hands it a scalar time, and
interpolates between times an hour apart. A 400-step raster takes half a
second rather than three minutes. - Accurate over any span. How far apart those times are is what costs
accuracy, and it costs the square of it, so the count is chosen from the
span rather than fixed. The error stays between 0.001 and 0.010 arcsec
from one hour to a whole disk transit. - Off-limb points.
off_diskdecides whether material above the limb,
which has no surface to be carried along, comes back as NaN or is left
where it was seen.