def _get_item2_names(nstrm, reachinput, isfropt, structured=False):
    """
    Determine which variables should be in item 2, based on model grid type,
    reachinput specification, and isfropt.

    Returns
    -------
    names : list of str
        List of names (same as variables in SFR Package input instructions) of
        columns to assign (upon load) or retain (upon write) in reach_data
        array.

    Notes
    -----
    Lowercase is used for all variable names.

    """
    names = []
    if structured:
        names += ["k", "i", "j"]
    else:
        names += ["node"]
    names += ["iseg", "ireach", "rchlen"]
    if nstrm < 0 or reachinput:
        if isfropt in [1, 2, 3]:
            names += ["strtop", "slope", "strthick", "strhc1"]
            if isfropt in [2, 3]:
                names += ["thts", "thti", "eps"]
                if isfropt == 3:
                    names += ["uhc"]
    return names