def golowtran(c1: Dict[str, Any]) -> xarray.Dataset:
    """directly run Fortran code"""
# %% default parameters
    c1.setdefault('time', None)

    defp = ('h1', 'h2', 'angle', 'im', 'iseasn', 'ird1', 'range_km', 'zmdl', 'p', 't')
    for p in defp:
        c1.setdefault(p, 0)

    c1.setdefault('wmol', [0]*12)
# %% input check
    assert len(c1['wmol']) == 12, 'see Lowtran user manual for 12 values of WMOL'
    assert np.isfinite(c1['h1']), 'per Lowtran user manual Table 14, H1 must always be defined'
# %% setup wavelength
    c1.setdefault('wlstep', 20)
    if c1['wlstep'] < 5:
        logging.critical('minimum resolution 5 cm^-1, specified resolution 20 cm^-1')

    wlshort, wllong, nwl = nm2lt7(c1['wlshort'], c1['wllong'], c1['wlstep'])

    if not 0 < wlshort and wllong <= 50000:
        logging.critical('specified model range 0 <= wavelength [cm^-1] <= 50000')
# %% invoke lowtran
    """
    Note we invoke case "3a" from table 14, only observer altitude and apparent
    angle are specified
    """
    Tx, V, Alam, trace, unif, suma, irrad, sumvv = lowtran7.lwtrn7(
        True, nwl, wllong, wlshort, c1['wlstep'],
        c1['model'], c1['itype'], c1['iemsct'], c1['im'],
        c1['iseasn'], c1['ird1'],
        c1['zmdl'], c1['p'], c1['t'], c1['wmol'],
        c1['h1'], c1['h2'], c1['angle'], c1['range_km'])

    dims = ('time', 'wavelength_nm', 'angle_deg')
    TR = xarray.Dataset({'transmission': (dims, Tx[:, 9][None, :, None]),
                         'radiance': (dims, sumvv[None, :, None]),
                         'irradiance': (dims, irrad[:, 0][None, :, None]),
                         'pathscatter': (dims, irrad[:, 2][None, :, None])},
                        coords={'time': [c1['time']],
                                'wavelength_nm': Alam*1e3,
                                'angle_deg': [c1['angle']]})

    return TR
directly run Fortran code