print('calculating ERA5 ' + state + ' GWA') if GWA == "3": if state == 'PR': GWA = xr.open_rasterio(usa_path+'/GWA/GWA3_PR100m.tif') else: GWA = xr.open_rasterio(usa_path+'/GWA/GWA3_USA100m.tif') else: if state == 'AK': GWA = xr.open_rasterio(usa_path+'/GWA/GWA_AK100m.tif') elif state == 'HI': GWA = xr.open_rasterio(usa_path+'/GWA/GWA_HI100m.tif') elif state == 'PR': GWA = xr.open_rasterio(usa_path+'/GWA/GWA_PR100m.tif') else: GWA = xr.open_rasterio(usa_path+'/GWA/GWA_USA100m.tif') ind = turbine_data_era_gwa.state == state wps = windpower_simulation_era5(wind.wh100, alpha.alpha, turbine_data_era_gwa.height[ind].values, turbine_data_era_gwa.capacity[ind].values, turbine_data_era_gwa.sp[ind].values, turbine_data_era_gwa.lon[ind].values, turbine_data_era_gwa.lat[ind].values, pd.to_datetime(turbine_data_era_gwa.commissioning[ind].values).year.values, startyearmonth, GWA, startGWA, endGWA) # save as netcdf wps.drop(['x','y']).to_dataset(name='wp').to_netcdf(results_path+"/windpower_"+state+"_ERA5_GWA.nc")
alpha = xr.open_mfdataset(era_path + "/eff_ws/era5_alpha_NZ_*.nc", chunks={'time': 46}) #.sel(time=slice('1997','2020')) # load windpark data windparks = pd.read_csv(nz_path + "/windparks_NZ.csv", delimiter=';', parse_dates=['commissioning']) # calculate specific power of turbines (in W) windparks['sp'] = windparks.turb_cap * 10**6 / (windparks.d_rotor**2 * np.pi / 4) # with GWA outfile = results_path + '/windpower_??_ERA5_GWA.nc' if results_path + '/windpower_NZ_ERA5_GWA.nc' not in glob.glob(outfile): print('calculating ERA5 NZ GWA') if GWA == "3": GWA = xr.open_rasterio(nz_path + '/GWA/GWA3_NZ100m.tif') else: GWA = xr.open_dataarray(nz_path + '/GWA/GWA2_NZ100m.nc') wps = windpower_simulation_era5( wind.wh100, alpha.alpha, windparks.Height.values, windparks.Capacity.values, windparks.sp.values, windparks.Longitude.values, windparks.Latitude.values, windparks.commissioning.values, startyear, GWA, startGWA, endGWA) # save as netcdf wps.drop(['x', 'y' ]).to_dataset(name='wp').to_netcdf(results_path + "/windpower_NZ_ERA5_GWA.nc")
# Simulate wind power with ERA5 wind = xr.open_mfdataset(era_path + "/eff_ws/era5_wind_BRA_*.nc", chunks={'time': 100}) alpha = xr.open_mfdataset(era_path + "/eff_ws/era5_alpha_BRA_*.nc", chunks={'time': 100}) # with GWA outfile = results_path + '/windpower_??_ERA5_GWA.nc' turbine_data = pd.read_csv(bra_path + '/turbine_data_era_gwa' + GWA + '.csv', parse_dates=['commissioning'], index_col=0) if results_path + '/windpower_' + state + '_ERA5_GWA.nc' not in glob.glob( outfile): print('calculating ERA5 ' + state + ' GWA') if GWA == "3": GWA = xr.open_rasterio(bra_path + '/GWA/GWA3_BRA100m.tif') else: GWA = xr.open_dataarray(bra_path + '/GWA/GWA2_BRA100m.nc') ind = turbine_data.state == state wps = windpower_simulation_era5( wind.wh100, alpha.alpha, turbine_data.height.values[ind], turbine_data.capacity.values[ind], turbine_data.sp.values[ind], turbine_data.lon.values[ind], turbine_data.lat.values[ind], turbine_data.commissioning.values[ind], startyear, GWA, startGWA, endGWA) # save as netcdf wps.drop(['x', 'y' ]).to_dataset(name='wp').to_netcdf(results_path + "/windpower_" + state + "_ERA5_GWA.nc")
from scipy.interpolate import interp1d from utils import power_curve from utils import windpower_simulation_era5 from dask.diagnostics import ProgressBar ProgressBar().register() from paths_bra import * # Simulate wind power with ERA5 wind = xr.open_mfdataset(era_path + "/eff_ws/era5_wind_BRA_*.nc", chunks = {'time': 100}) alpha = xr.open_mfdataset(era_path + "/eff_ws/era5_alpha_BRA_*.nc", chunks = {'time': 100}) # without GWA outfile = results_path + '/windpower_stat_ERA5.nc' turbine_data = pd.read_csv(bra_path + '/turbine_data_era.csv', parse_dates=['commissioning'], index_col = 0) if outfile not in glob.glob(results_path+'/*'): wps = windpower_simulation_era5(wind.wh100, alpha.alpha, turbine_data.height.values, turbine_data.capacity.values, turbine_data.sp.values, turbine_data.lon.values, turbine_data.lat.values, turbine_data.commissioning.values) # save as netcdf wps.to_dataset(name='wp').to_netcdf(outfile)