code: def cloud_cover_to_irradiance_clearsky_scaling(self, cloud_cover,
                                                     method='linear',
                                                     **kwargs):
          
          solpos = self.location.get_solarposition(cloud_cover.index)
          cs = self.location.get_clearsky(cloud_cover.index, model='ineichen',
                                          solar_position=solpos)
  
          method = method.lower()
          if method == 'linear':
              ghi = self.cloud_cover_to_ghi_linear(cloud_cover, cs['ghi'],
                                                   **kwargs)
          else:
              raise ValueError('invalid method argument')
  
          dni = disc(ghi, solpos['zenith'], cloud_cover.index)['dni']
          dhi = ghi - dni * np.cos(np.radians(solpos['zenith']))
  
          irrads = pd.DataFrame({'ghi': ghi, 'dni': dni, 'dhi': dhi}).fillna(0)
          return irrads
docs: Estimates irradiance from cloud cover in the following steps:
  
          1. Determine clear sky GHI using Ineichen model and
             climatological turbidity.
          2. Estimate cloudy sky GHI using a function of
             cloud_cover e.g.
             :py:meth:`~ForecastModel.cloud_cover_to_ghi_linear`
          3. Estimate cloudy sky DNI using the DISC model.
          4. Calculate DHI from DNI and DHI.
  
          Parameters
          ----------
          cloud_cover : Series
              Cloud cover in %.
          method : str, default 'linear'
              Method for converting cloud cover to GHI.
              'linear' is currently the only option.
          **kwargs
              Passed to the method that does the conversion
  
          Returns
          -------
          irrads : DataFrame
              Estimated GHI, DNI, and DHI.