コード例 #1
0
    def process_reanalysis_data(self):
        """
        Process reanalysis data for use in PRUF plant analysis
            - calculate density-corrected wind speed
            - get monthly average wind speeds
            - append monthly averages to monthly energy data frame

        Args:
            (None)

        Returns:
            (None)
        """
        # Define empty data frame that spans past our period of interest
        self._reanalysis_monthly = pd.DataFrame(index=pd.date_range(start='1997-01-01', end='2020-01-01',
                                                                    freq='MS'))

        # Now loop through the different reanalysis products, density-correct wind speeds, and take monthly averages
        for key, items in self._plant._reanalysis._product.items():
            rean_df = self._plant._reanalysis._product[key].df
            rean_df['ws_dens_corr'] = mt.air_density_adjusted_wind_speed(rean_df, 'windspeed_ms',
                                                                         'rho_kgm-3')  # Density correct wind speeds
            self._reanalysis_monthly[key] = rean_df.resample('MS')[
                'ws_dens_corr'].mean()  # .to_frame() # Get average wind speed by year-month

        self._monthly.df = self._monthly.df.join(
            self._reanalysis_monthly)  # Merge monthly reanalysis data to monthly energy data frame
コード例 #2
0
    def test_air_density_adjusted_wind_speed(self):
        # Test dataframe with wind speed and density data
        wind_speed = np.arange(0, 10, 2)
        dens = np.arange(1.10, 1.20, 0.02)

        adjusted_ws = mt.air_density_adjusted_wind_speed(wind_speed,
                                                         dens)  # Test answer
        adjusted_ws_ans = np.array([0., 1.988235, 4., 6.034885,
                                    8.092494])  # Expected answer

        nptest.assert_array_almost_equal(adjusted_ws,
                                         adjusted_ws_ans,
                                         decimal=5)
コード例 #3
0
    def test_air_density_adjusted_wind_speed(self):
        # Test dataframe with wind speed and density data
        df = pd.DataFrame(data={
            'wind_speed': np.arange(0, 10, 2),
            'dens': np.arange(1.10, 1.20, 0.02)
        })

        adjusted_ws = mt.air_density_adjusted_wind_speed(
            df, 'wind_speed', 'dens')  # Test answer
        adjusted_ws_ans = np.array([0., 1.988235, 4., 6.034885,
                                    8.092494])  # Expected answer

        nptest.assert_array_almost_equal(adjusted_ws,
                                         adjusted_ws_ans,
                                         decimal=5)
コード例 #4
0
    def process_reanalysis_data(self):
        """
        Process reanalysis data for use in PRUF plant analysis:
            - calculate density-corrected wind speed and wind components
            - get monthly/daily average wind speeds and components
            - calculate monthly/daily average wind direction
            - calculate monthly/daily average temperature
            - append monthly/daily averages to monthly/daily energy data frame
        
        Args:
            (None)
        
        Returns:
            (None)
        """

        # Define empty data frame that spans past our period of interest
        self._reanalysis_aggregate = pd.DataFrame(index=pd.date_range(
            start='1997-01-01', end='2019-12-31', freq=self._resample_freq),
                                                  dtype=float)

        # Now loop through the different reanalysis products, density-correct wind speeds, and take monthly averages
        for key in self._reanal_products:
            rean_df = self._plant._reanalysis._product[key].df
            rean_df['ws_dens_corr'] = mt.air_density_adjusted_wind_speed(
                rean_df['windspeed_ms'],
                rean_df['rho_kgm-3'])  # Density correct wind speeds
            self._reanalysis_aggregate[key] = rean_df.resample(
                self._resample_freq)['ws_dens_corr'].mean(
                )  # .to_frame() # Get average wind speed by year-month

            if self.reg_winddirection | self.reg_temperature:
                namescol = [key + '_' + var for var in self._rean_vars]
                self._reanalysis_aggregate[namescol] = rean_df[
                    self._rean_vars].resample(self._resample_freq).mean()

            if self.reg_winddirection:  # if wind direction is considered as regression variable
                self._reanalysis_aggregate[key + '_wd'] = np.rad2deg(
                    np.pi -
                    (np.arctan2(-self._reanalysis_aggregate[key + '_u_ms'],
                                self._reanalysis_aggregate[key + '_v_ms']))
                )  # Calculate wind direction

        self._aggregate.df = self._aggregate.df.join(
            self._reanalysis_aggregate
        )  # Merge monthly reanalysis data to monthly energy data frame