code: 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])f 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]))
docs: 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.