code: def eci2ecef(x, y, z, time: datetime) -> tuple:
      """
      Observer => Point  ECI  =>  ECEF
  
      J2000 frame
  
      Parameters
      ----------
      x : float
          ECI x-location [meters]
      y : float
          ECI y-location [meters]
      z : float
          ECI z-location [meters]
      time : datetime.datetime
          time of obsevation (UTC)
  
      Results
      -------
      x_ecef : float
          x ECEF coordinate
      y_ecef : float
          y ECEF coordinate
      z_ecef : float
          z ECEF coordinate
      """
  
      try:
          gcrs = GCRS(
              CartesianRepresentation(x * u.m, y * u.m, z * u.m),
              obstime=time,
          )
          itrs = gcrs.transform_to(ITRS(obstime=time))
  
          x_ecef = itrs.x.value
          y_ecef = itrs.y.value
          z_ecef = itrs.z.value
      except NameError:
          x = np.atleast_1d(x)
          y = np.atleast_1d(y)
          z = np.atleast_1d(z)
          gst = np.atleast_1d(greenwichsrt(juliandate(time)))
          assert (
              x.shape == y.shape == z.shape
          ), f"shape mismatch: x: ${x.shape}  y: {y.shape}  z: {z.shape}"
          if gst.size == 1 and x.size != 1:
              gst = np.broadcast_to(gst, x.shape[0])
          assert (
              x.size == gst.size
          ), f"shape mismatch: x: {x.shape}  gst: {gst.shape}"
  
          eci = np.column_stack((x.ravel(), y.ravel(), z.ravel()))
          ecef = np.empty((x.size, 3))
          for i in range(eci.shape[0]):
              ecef[i, :] = R3(gst[i]) @ eci[i, :].T
  
          x_ecef = ecef[:, 0].reshape(x.shape)
          y_ecef = ecef[:, 1].reshape(y.shape)
          z_ecef = ecef[:, 2].reshape(z.shape)
  
      return x_ecef, y_ecef, z_ecef
  
imports: from __future__ import annotations
  from datetime import datetime
  import numpy
  from .sidereal import greenwichsrt, juliandate
label_desc: Use image node_id 1 for calling a global function with example usage: eci2ecef(x, y, z, time) and returns: x_ecef,  y_ecef,  z_ecef