def METHOD_NAME(xarr,
        Temperature=25,
        logColumn=13,
        logDensity=4,
        xoff_v=0.0,
        width=1.0,
        grid_vwidth=1.0,
        gridbundle = None,
        debug=False,
        verbose=False,
        **kwargs):
    """
    Use a grid of RADEX-computed models to make a model line spectrum
    The RADEX models have to be available somewhere.
    OR they can be passed as arrays.  If as arrays, the form should be:
    texgrid = ((minfreq1,maxfreq1,texgrid1),(minfreq2,maxfreq2,texgrid2))
    xarr must be a SpectroscopicAxis instance
    xoff_v, width are both in km/s
    Parameters
    ----------
    grid_vwidth : float
        the velocity assumed when computing the grid in km/s
        this is important because tau = modeltau / width (see, e.g.,
        Draine 2011 textbook pgs 219-230)
    density : float
        Density!
    """
    # Convert X-units to frequency in GHz
    xarr = xarr.as_unit('Hz', quiet=True)
    Tex303,Tex322,Tex321,tau303,tau322,tau321 = gridbundle
    # if this gets too far different from 1, we are gonna have a Bad Time.
    scalefac = grid_vwidth/width
    tex = (Tex303(logColumn,logDensity,Temperature),
           Tex322(logColumn,logDensity,Temperature),
           Tex321(logColumn,logDensity,Temperature))
    tau =  (tau303(logColumn,logDensity,Temperature)*scalefac,
            tau322(logColumn,logDensity,Temperature)*scalefac,
            tau321(logColumn,logDensity,Temperature)*scalefac)
    if np.any(np.isnan(tex)) or np.any(np.isnan(tau)):
        raise ValueError("Invalid column/density")
    if verbose:
        for ta,tk in zip(tau,tex):
            print("density %20.12g temperature %20.12g column %20.12g: tau %20.12g tex %20.12g" % (logDensity, Temperature, logColumn, ta, tk))
    if debug:
        import pdb; pdb.set_trace()