ECI to ECEF conversion uses the same coordinate transformation to convert velocity as it does position when creating state vectors. The correct approach should include earth's rotational velocity when converting ECI velocity to ECEF (and ECEF to ECI) as follows:
V_ECEF = T_ECI_to_ECEF V_ECI - [0,0,wE] x R_ECEF
V_ECI = T_ECEF_to_ECI (V_ECEF + [0,0,wE] x R_ECEF)
where wE is the earth rotation speed (rad/sec), T is the transformation matrix, V is velocity, and R is position.
More accurate versions take into account Earth precession and nutation, though this would require modification to the ECEF-ECI position conversion as well, and is outside the scope of this bug.
thanks a lot for the report @jhdwilmes! I will investigate if there's a reason to not have that part (I want to believe that we left it out because of performance reasons, although I doubt it).
ECI to ECEF conversion uses the same coordinate transformation to convert velocity as it does position when creating state vectors. The correct approach should include earth's rotational velocity when converting ECI velocity to ECEF (and ECEF to ECI) as follows: V_ECEF = T_ECI_to_ECEF V_ECI - [0,0,wE] x R_ECEF V_ECI = T_ECEF_to_ECI (V_ECEF + [0,0,wE] x R_ECEF) where wE is the earth rotation speed (rad/sec), T is the transformation matrix, V is velocity, and R is position.
More accurate versions take into account Earth precession and nutation, though this would require modification to the ECEF-ECI position conversion as well, and is outside the scope of this bug.