Compute the single-point time spectra

# Add any possible locations of amr-wind-frontend here
amrwindfedirs = ['/projects/wind_uq/lcheung/amrwind-frontend/',
                  '/ccs/proj/cfd162/lcheung/amrwind-frontend/',
                ]
import sys, os, shutil, io
import numpy as np
for x in amrwindfedirs: sys.path.insert(1, x)

from functools import partial
import matplotlib.pyplot as plt
import pandas as pd

# Make all plots inline 
%matplotlib inline

import postproengine as ppeng
# Load ruamel or pyyaml as needed
try:
    import ruamel.yaml
    yaml = ruamel.yaml.YAML(typ='unsafe', pure=True)
    useruamel=True
    loaderkwargs = {'Loader':yaml.RoundTripLoader}
    dumperkwargs = {'Dumper':yaml.RoundTripDumper, 'indent':4, 'default_flow_style':False}
    Loader=yaml.load
except:
    import yaml as yaml
    useruamel=False
    loaderkwargs = {}
    dumperkwargs = {'default_flow_style':False }
    Loader=yaml.safe_load
def spectrapoints():
    xrange = [0, 100, 200, 300, 400, 500]
    yrange = [0, 100, 200, 300, 400, 500]
    ptlist = []
    for x in xrange:
        for y in yrange:
            ptlist.append((x, y, 0))
    return ptlist

ppeng.spectrapoints = spectrapoints
yamlstring="""
globalattributes:
  verbose: False
  executeorder:
  - windspectra_D
  - windspectra_C

windspectra_D:
  windspectra:
  - name: spectraZ027
    ncfile: /nscratch/gyalla/HFM/exawind-benchmarks/amr-wind/atmospheric_boundary_layer/neutral/runs/D_grid/post_processing/XYdomain_027_480000.nc
    group: Farm_XYdomain027
    pointlocationfunction: postproengine.spectrapoints
    csvfile: ../results/time_spectra_Z027_DGrid.csv
    kaimal:
      ustarsource: ablstatsfile
      ablstatsfile:  /nscratch/gyalla/HFM/exawind-benchmarks/amr-wind/atmospheric_boundary_layer/neutral/runs/D_grid/post_processing/abl_statistics480000.nc
      avgt:  [120000, 125000]
      csvfile: ../results/kaimal_Z027_DGrid.csv
      z: 27.0

  - name: spectraZ090
    ncfile: /nscratch/gyalla/HFM/exawind-benchmarks/amr-wind/atmospheric_boundary_layer/neutral/runs/D_grid/post_processing/XYdomain_090_480000.nc
    group: Farm_XYdomain090
    pointlocationfunction: postproengine.spectrapoints
    csvfile: ../results/time_spectra_Z090_DGrid.csv
    kaimal:
      ustarsource: ablstatsfile
      ablstatsfile:  /nscratch/gyalla/HFM/exawind-benchmarks/amr-wind/atmospheric_boundary_layer/neutral/runs/D_grid/post_processing/abl_statistics480000.nc
      avgt:  [120000, 125000]
      csvfile: ../results/kaimal_Z090_DGrid.csv
      z: 90.0

windspectra_C:
  windspectra:
  - name: spectraZ027
    ncfile: /lustre/orion/cfd162/proj-shared/prakash/neutral_spectra_postprocessing/XYdomain_027_240000.nc
    group: Farm_XYdomain027
    pointlocationfunction: postproengine.spectrapoints
    csvfile: ../results/time_spectra_Z027_CGrid.csv
    kaimal:
      ustarsource: ablstatsfile
      ablstatsfile:  /lustre/orion/proj-shared/cfd162/prakash/neutral_spectra_postprocessing/abl_statistics240000.nc
      avgt:  [120000, 125000]
      csvfile: ../results/kaimal_Z027_CGrid.csv
      z: 27.0

  - name: spectraZ090
    ncfile: /lustre/orion/cfd162/proj-shared/prakash/neutral_spectra_postprocessing/XYdomain_090_240000.nc
    group: Farm_XYdomain090
    pointlocationfunction: postproengine.spectrapoints
    csvfile: ../results/time_spectra_Z090_CGrid.csv
    kaimal:
      ustarsource: ablstatsfile
      ablstatsfile:  /lustre/orion/proj-shared/cfd162/prakash/neutral_spectra_postprocessing/abl_statistics240000.nc
      avgt:  [120000, 125000]
      csvfile: ../results/kaimal_Z090_CGrid.csv
      z: 90.0

"""
f = io.StringIO(yamlstring)
yamldict = Loader(f, **loaderkwargs)
#yamldict['windspectra'][0]['timeindices'] = list(range(10000))[::5]
#yamldict['windspectra'][1]['timeindices'] = list(range(10000))[::5]
# Run the driver
ppeng.driver(yamldict, verbose=True)
Initialized windspectra
Running windspectra
[============================================================] 100.0% 
Initialized kaimal inside windspectra
Executing kaimal
ustar =  0.20841061752256781
[============================================================] 100.0% 
Initialized kaimal inside windspectra
Executing kaimal
ustar =  0.20841061752256781

Load Data

df_27_C  = pd.read_csv('../results/time_spectra_Z027_CGrid.csv')
df_90_C  = pd.read_csv('../results/time_spectra_Z090_CGrid.csv')
kaimal_27_C  = pd.read_csv('../results/kaimal_Z027_CGrid.csv')
kaimal_90_C  = pd.read_csv('../results/kaimal_Z090_CGrid.csv')


df_27_D  = pd.read_csv('../results/time_spectra_Z027_DGrid.csv')
df_90_D  = pd.read_csv('../results/time_spectra_Z090_DGrid.csv')
kaimal_27_D  = pd.read_csv('../results/kaimal_Z027_DGrid.csv')
kaimal_90_D  = pd.read_csv('../results/kaimal_Z090_DGrid.csv')

Plot Spectra

# Run the driver
fsize = 14
comps = ['Suu','Svv','Sww']
titles = ['$S_{uu}$','$S_{vv}$','$S_{ww}$']
dfs_C = [df_27_C,df_90_C]
kaimals_C = [kaimal_27_C,kaimal_90_C]
heights = [27,90]
for z in range(len(heights)):
    fig, axs = plt.subplots(1,3,figsize=(12,3), dpi=125, sharey=True)
    df_C = dfs_C[z]
    kaimal_C = kaimals_C[z]
    for axiter, ax in enumerate(axs):
        plt.sca(ax)
        plt.loglog(kaimal_C['f'],kaimal_C[comps[axiter]],c='k',label='Kaimal',lw=2,ls='-')
        plt.loglog(df_C['f'],df_C[comps[axiter]],c='tab:blue',label='AMR-Wind',lw=1,ls='--')
        plt.xticks(fontsize=fsize)  # Set x tick label font size
        plt.yticks(fontsize=fsize)  # Set y tick label font size

        fig.suptitle('Wind spectra z=' + str(heights[z]) + 'm', y=1.025)
        plt.ylabel('$f $' + titles[axiter] + '$/u_{\\tau}^2$',fontsize=fsize)
        plt.xlabel("f [Hz]",fontsize=fsize)
        plt.title(titles[axiter],fontsize=fsize)

        ax.set_xlim(10**-4,2)
        ax.set_ylim(10**-5,10**-2)
        if axiter == 2:
            plt.legend(loc=4,fontsize=fsize-4,bbox_to_anchor=(1.5,0.75))
    plt.savefig("./figures/ABL_temporal_spectra_z" + str(heights[z]) + '_C_grid.png')
../../../../_images/3e7d190a13071ba00a8415593d14125ebe3d7929ea61ab5143fcc409a7e4a387.png ../../../../_images/2e22b4f8fcbb7aca521c2d443105225743402c566939509130303956e1ed5a05.png
# Run the driver
fsize = 14
comps = ['Suu','Svv','Sww']
titles = ['$S_{uu}$','$S_{vv}$','$S_{ww}$']
dfs_C = [df_27_C,df_90_C]
dfs_D = [df_27_D,df_90_D]
kaimals_D = [kaimal_27_D,kaimal_90_D]
kaimals_C = [kaimal_27_C,kaimal_90_C]
heights = [27,90]
for z in range(len(heights)):
    fig, axs = plt.subplots(1,3,figsize=(12,3), dpi=125, sharey=True)
    df_D = dfs_D[z]
    kaimal_D = kaimals_D[z]
    df_C = dfs_C[z]
    kaimal_C = kaimals_C[z]
    for axiter, ax in enumerate(axs):
        plt.sca(ax)
        plt.loglog(kaimal_C['f'],kaimal_C[comps[axiter]],c='k',label='Kaimal (C Grid)',lw=2,ls='-')
        plt.loglog(df_C['f'],df_C[comps[axiter]],c='tab:blue',label='AMR-Wind (C Grid)',lw=1,ls='--')

        plt.loglog(kaimal_D['f'],kaimal_D[comps[axiter]],c='tab:gray',label='Kaimal (D Grid)',lw=2,ls='-')
        plt.loglog(df_D['f'],df_D[comps[axiter]],c='tab:orange',label='AMR-Wind (D Grid)',lw=1,ls='--')

        plt.xticks(fontsize=fsize) 
        plt.yticks(fontsize=fsize)  

        fig.suptitle('Wind spectra z=' + str(heights[z]) + 'm', y=1.025)
        plt.ylabel('$f $' + titles[axiter] + '$/u_{\\tau}^2$',fontsize=fsize)
        plt.xlabel("f [Hz]",fontsize=fsize)
        plt.title(titles[axiter],fontsize=fsize)
        ax.set_xlim(10**-4,2)
        ax.set_ylim(10**-5,10**-2)
        if axiter == 2:
            plt.legend(loc=4,fontsize=fsize-4,bbox_to_anchor=(1.75,0.6))
    plt.savefig("./figures/ABL_temporal_spectra_z" + str(heights[z]) + '_C_D_grids.png')
../../../../_images/8c86b69d869b28a0bcf2183af3c12fe614b85288fb0c9ad825d9a3deecc9eb67.png ../../../../_images/975a73e3832a31fab4d6de8a10babb0cfabe42b18e2b601b03be10b095aab447.png