def flux_down(self, fluxDownTop, emission=None):
        '''Compute upwelling radiative flux at interfaces between layers.

        Inputs:

            * fluxUpBottom: flux up from bottom
            * emission: emission from atmospheric levels (N)
              defaults to zero if not given

        Returns:
            * vector of upwelling radiative flux between levels (N+1)
              element N is the flux up to space.

        '''
        if emission is None:
            emission = np.zeros_like(self.absorptivity)
        E = np.concatenate((np.atleast_1d(fluxDownTop),emission), axis=-1)
        #  dot product (matrix multiplication) along last axes
        return np.squeeze(matrix_multiply(self.Tdown, E[..., np.newaxis]))
Compute upwelling radiative flux at interfaces between layers.

        Inputs:

            * fluxUpBottom: flux up from bottom
            * emission: emission from atmospheric levels (N)
              defaults to zero if not given

        Returns:
            * vector of upwelling radiative flux between levels (N+1)
              element N is the flux up to space.