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

windspectra:
- name: spectraZ027
  ncfile: /gpfs/lcheung/HFM/exawind-benchmarks/convective_abl/post_processing/XYdomain_027_30000.nc
  group: Farm_XYdomain027
  pointlocationfunction: postproengine.spectrapoints
  csvfile: ../results/time_spectra_Z027.csv
  kaimal:
    ustarsource: ablstatsfile
    ablstatsfile:  /gpfs/lcheung/HFM/exawind-benchmarks/convective_abl/post_processing/abl_statistics30000.nc
    avgt: [15000, 20000]
    csvfile: ../results/kaimal_Z027.csv
    z: 27.0

- name: spectraZ090
  ncfile: /gpfs/lcheung/HFM/exawind-benchmarks/convective_abl/post_processing/XYdomain_090_30000.nc
  group: Farm_XYdomain090
  pointlocationfunction: postproengine.spectrapoints
  csvfile: ../results/time_spectra_Z090.csv
  kaimal:
    ustarsource: ablstatsfile
    ablstatsfile:  /gpfs/lcheung/HFM/exawind-benchmarks/convective_abl/post_processing/abl_statistics30000.nc
    avgt: [15000, 20000]
    csvfile: ../results/kaimal_Z090.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.4685868615973461
[============================================================] 100.0% 
Initialized kaimal inside windspectra
Executing kaimal
ustar =  0.4685868615973461

Load Data

df_27      = pd.read_csv('../results/time_spectra_Z027.csv')
df_90      = pd.read_csv('../results/time_spectra_Z090.csv')
kaimal_27  = pd.read_csv('../results/kaimal_Z027.csv')
kaimal_90  = pd.read_csv('../results/kaimal_Z090.csv')

Plot Spectra

# Run the driver
fsize = 14
comps = ['Suu','Svv','Sww']
titles = ['$S_{uu}$','$S_{vv}$','$S_{ww}$']
dfs = [df_27,df_90]
kaimals = [kaimal_27,kaimal_90]
heights = [27,90]
for z in range(len(heights)):
    fig, axs = plt.subplots(1,3,figsize=(12,3), dpi=125, sharey=True)
    df = dfs[z]
    kaimal = kaimals[z]
    for axiter, ax in enumerate(axs):
        plt.sca(ax)
        plt.loglog(kaimal['f'],kaimal[comps[axiter]],c='k',label='Kaimal',lw=2,ls='-')
        plt.loglog(df['f'],df[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]) + '.png')
../../../../_images/b77c03b02ee2b77373ce35bdd9867b0b70e31cd9c6f8a57ff1b3f2dfb40b6176.png ../../../../_images/3b2eaa887f25de10b3dbf3040ec5421593ec69f278aebce85d11ea94def05002.png