Hello Astropy community.

I’m struggling to get a ITRF/GCRF conversion from Astropy, Spice and Sofa that are in agreement with each other.

Basically, Spice and Sofa are within 4 arcsecs, using the following implementation for Sofa

However, Astropy and Sofa differ by nearly 12 arcsec.

The transform evaluation time is defined as a TAI string

```
time_string_TAI = "2020-12-31T00:00:00" # TAI timestring
```

The `ITRF_GCRF`

DCM is computed like so:

```
def gcrs_to_itrs(t):
return SkyCoord(x=np.array([1,0,0]),
y=np.array([0,1,0]),
z=np.array([0,0,1]),
representation_type='cartesian'
).transform_to(ITRS(obstime=t)).cartesian.get_xyz().value
...
INPUT_TIME = Time(time_string_TAI,scale = "tai")
ITRF_GCRF_astropy = gcrs_to_itrs(INPUT_TIME)
```

The UT1-UTC offset provided to SOFA is the same as computed by Astropy at the evaluation time.

The EOP parameters are left to zero when calling SOFA, which contributes to the overall error (I’m guessing that Astropy retrieves the EOPs corresponding to the evaluation tome internally) but to a much smaller degree than the few arcsecs of agreement I’m expected to find.

The two DCMs returned from Astropy and SOFA respectively are

```
ITRF_GCRF_astropy : [[-1.64352104e-01 9.86420571e-01 3.30480317e-04]
[-9.86399708e-01 -1.64239026e-01 2.08095097e-03]
[ 2.00068122e-03 -6.22881226e-06 9.99997780e-01]]
ITRF_GCRF_sofa : [[-1.64336961e-01 9.86404205e-01 3.28918388e-04]
[-9.86402214e-01 -1.64337290e-01 1.98161946e-03]
[ 2.00873133e-03 1.20749412e-06 9.99997982e-01]]
```

The error between the two, expressed as a principal rotation vector is

```
prv_error : [-4.50870748e-05 3.77193352e-06 4.21492558e-05]
```

The Z component is along the angular velocity vector. Because this component is not exceedingly larger than the other two, a time offset can be ruled out (otherwise the orientation error would predominantly be around the angular velocity vector).

I would be grateful is someone could point me in the right direction regarding this inconsistency. I don’t think Astropy expects additional transform parameters to correctly instantiate the ITRF_GCRF DCM ?

Thanks !