Create ALM NREL 5MW case
This one uses OpenFAST v4.0.2 model of the NREL5MW using ROSCO
# Add any possible locations of amr-wind-frontend here
amrwindfedirs = ['/projects/wind_uq/lcheung/amrwind-frontend',
'/projects/wind_uq/lcheung/amrwind-frontend/utilities',
]
import sys, os, shutil
for x in amrwindfedirs: sys.path.insert(1, x)
# Load the libraries
import amrwind_frontend as amrwind
import downloadOFmodel
import matplotlib.pyplot as plt
import numpy as np
import math
import pandas as pd
import postproamrwindsample as ppsample
import time
import utm
import shutil
import yaml
# Also ignore warnings
import warnings
warnings.filterwarnings('ignore')
# Make all plots inline
%matplotlib inline
/ascldap/users/lcheung/.local/lib/python3.9/site-packages/pandas/core/computation/expressions.py:21: UserWarning: Pandas requires version '2.8.4' or newer of 'numexpr' (version '2.8.1' currently installed).
from pandas.core.computation.check import NUMEXPR_INSTALLED
/ascldap/users/lcheung/.local/lib/python3.9/site-packages/pandas/core/arrays/masked.py:60: UserWarning: Pandas requires version '1.3.6' or newer of 'bottleneck' (version '1.3.4' currently installed).
from pandas.core import (
# Start the AMR-Wind case
case = amrwind.MyApp.init_nogui()
Load the turbine model
downloadrecipe = 'nrel5mw_v402_rosco.yaml'
downloadturbmodel = True # if True, download the turbine model from github
turbdeffile = 'NREL5MW_v402_ROSCO.yaml'
addturbdef = True # if True, add turbine model type to amr-wind-frontend turbine models
curdir=os.getcwd()
if downloadturbmodel:
# Load the turbine type from the download recipe file
with open(downloadrecipe) as f:
yamldict = yaml.safe_load(f)
downloadOFmodel.processModelDict(yamldict)
if addturbdef:
# Load the turbine type from the download recipe file
with open(turbdeffile) as f:
yamldict = yaml.safe_load(f)
#copy stuff over from the YAML definition
turbinetype = case.get_default_turbinetypedict()
for k, g in yamldict['turbines']['nre5mwFSIROSCO'].items():
turbinetype[k] = g
print(k+' = '+repr(g))
turbinetype['turbinetype_filelocation'] = curdir
# Add it to the list of turbine types
case.add_populatefromdict('listboxturbinetype', turbinetype)
EXECUTING git clone -b v4.0.2 -n --depth=1 --filter=tree:0 git@github.com:OpenFAST/r-test.git
Cloning into 'r-test'...
Warning: No xauth data; using fake authentication data for X11 forwarding.
X11 forwarding request failed on channel 0
EXECUTING git sparse-checkout set --no-cone glue-codes/openfast/5MW_Baseline glue-codes/openfast-cpp/5MW_Land_DLL_WTurb_cpp
Warning: No xauth data; using fake authentication data for X11 forwarding.
X11 forwarding request failed on channel 0
Warning: No xauth data; using fake authentication data for X11 forwarding.
X11 forwarding request failed on channel 0
GITHASH = df9ee7d
Downloading https://raw.githubusercontent.com/NREL/ROSCO/cfda6af95cda15616b840199c24fbd208e63893c/Examples/Test_Cases/NREL-5MW/DISCON.IN
Downloading https://raw.githubusercontent.com/NREL/ROSCO/cfda6af95cda15616b840199c24fbd208e63893c/Examples/Test_Cases/NREL-5MW/Cp_Ct_Cq.NREL5MW.txt
Editing NREL5MW_v402_ROSCO/openfast-cpp/5MW_Land_DLL_WTurb_cpp/5MW_Land_DLL_WTurb_cpp.fst
['EDFile', 'ServoFile', 'AeroFile', 'BDBldFile(1)', 'BDBldFile(1)_BldFile']
Editing /projects/wind_uq/lcheung/exawind-benchmarks.redoALM/amr-wind/actuator_line/NREL5MW_ALM_BD/setup/NREL5MW_v402_ROSCO/openfast-cpp/5MW_Land_DLL_WTurb_cpp/NRELOffshrBsline5MW_Onshore_ElastoDyn.dat
Editing /projects/wind_uq/lcheung/exawind-benchmarks.redoALM/amr-wind/actuator_line/NREL5MW_ALM_BD/setup/NREL5MW_v402_ROSCO/openfast-cpp/5MW_Land_DLL_WTurb_cpp/NRELOffshrBsline5MW_Onshore_ServoDyn.dat
Editing /projects/wind_uq/lcheung/exawind-benchmarks.redoALM/amr-wind/actuator_line/NREL5MW_ALM_BD/setup/NREL5MW_v402_ROSCO/openfast-cpp/5MW_Land_DLL_WTurb_cpp/NRELOffshrBsline5MW_Onshore_AeroDyn.dat
Editing /projects/wind_uq/lcheung/exawind-benchmarks.redoALM/amr-wind/actuator_line/NREL5MW_ALM_BD/setup/NREL5MW_v402_ROSCO/openfast-cpp/5MW_Land_DLL_WTurb_cpp/../../openfast/5MW_Baseline/NRELOffshrBsline5MW_BeamDyn.dat
GRABFROMFILE: /projects/wind_uq/lcheung/exawind-benchmarks.redoALM/amr-wind/actuator_line/NREL5MW_ALM_BD/setup/NREL5MW_v402_ROSCO/openfast/5MW_Baseline/NRELOffshrBsline5MW_BeamDyn_Blade.dat
Editing /projects/wind_uq/lcheung/exawind-benchmarks.redoALM/amr-wind/actuator_line/NREL5MW_ALM_BD/setup/NREL5MW_v402_ROSCO/openfast/5MW_Baseline/NRELOffshrBsline5MW_BeamDyn_Blade.dat
NREL5MW_v402_ROSCO.yaml
Saved turbine setup to NREL5MW_v402_ROSCO.yaml
turbinetype_name = 'NREL5MW_v402_ROSCO_ALM_BD'
turbinetype_comment = None
Actuator_type = 'TurbineFastLine'
Actuator_openfast_input_file = 'NREL5MW_v402_ROSCO/openfast-cpp/5MW_Land_DLL_WTurb_cpp/5MW_Land_DLL_WTurb_cpp.fst'
Actuator_rotor_diameter = 126
Actuator_hub_height = 90
Actuator_num_points_blade = 25
Actuator_num_points_tower = 11
Actuator_epsilon = [2.0, 2.0, 2.0]
Actuator_epsilon_tower = [2.0, 2.0, 2.0]
Actuator_openfast_start_time = 0.0
Actuator_openfast_stop_time = 2000.0
Actuator_nacelle_drag_coeff = 0.0
Actuator_nacelle_area = 0.0
Actuator_output_frequency = 10
turbinetype_filedir = 'NREL5MW_v402_ROSCO'
0.0008608815426997245 DT - Recommended module time step (s) [EDITED]
2 CompElast - Compute structural dynamics (switch) {1=ElastoDyn 2=ElastoDyn + BeamDyn for blades 3=Simplified ElastoDyn} [EDITED]
2 CompInflow - Compute inflow wind velocities (switch) {0=still air 1=InflowWind 2=external from ExtInflow} [EDITED]
1.0 AirDens - Air density (kg/m^3) [EDITED]
0.0215220385675 DT_Out - Time step for tabular output (s) (or "default") [EDITED]
3 OutFileFmt - Format for tabular (time-marching) output file (switch) {1: text file [<RootName>.out] 2: binary file [<RootName>.outb] 3: both 1 and 2 4: uncompressed binary [<RootName>.outb 5: both 1 and 4} [EDITED]
False YawDOF - Yaw DOF (flag) [EDITED]
30.0 NacYaw - Initial or fixed nacelle-yaw angle (degrees) [EDITED]
/projects/wind_uq/lcheung/amrwind-frontend/turbines/OpenFAST_NREL2p8-127_AWAKEN/libdiscon.so DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] [EDITED]
1 Ptch_Cntrl - Record 28: Use individual pitch control {0: collective pitch 1: individual pitch control} (switch) [used only with Bladed Interface] [EDITED]
0 Wake_Mod - Wake/induction model (switch) {0=none 1=BEMT 3=OLAF} [Wake_Mod cannot be 2 or 3 when linearizing] [EDITED]
0 UA_Mod - Unsteady Aero Model Switch (switch) {0=Quasi-steady (no UA) 2=B-L Gonzalez 3=B-L Minnema/Pierce 4=B-L HGM 4-states 5=B-L HGM+vortex 5 states 6=Oye 7=Boeing-Vertol} [EDITED]
48 kp_total - Total number of key points (-) [must be at least 3] [EDITED]
48 station_total - Number of blade input stations (-) [EDITED]
1.0 ! WE_RhoAir - Air density, [kg m^-3] [EDITED]
Load the precursor data
Note: in order to run this notebook correctly, you need access to the precursor run directory, and the setup/postprocessing files in there.
# Location of precursor run with boundary data
precursordir = '/tscratch/lcheung/HFM/exawind-benchmarks/convective_abl'
precursorsetup= precursordir+'/neutral_abl_bndry.inp'
# Location of farm run dir
farmrundir = '../input_files' # Put all AMR-Wind input files here
outputfile = 'NREL5MW_ALM_BD_OFv402.inp' # Input file for AMR-Wind run with OpenFAST ALM turbine
noturboutputfile = 'NREL5MW_ALM_BD_noturb.inp' # Input file for AMR-Wind run with no turbine present
BRoutputfile = 'NREL5MW_BR.inp' # AMR-Wind input file for the blade-resolved run with ExaWind hybrid solver
verbose = True
cwd = os.getcwd()
# Go to the run directory
#if os.path.exists(farmrundir):
# shutil.rmtree(farmrundir)
os.makedirs(farmrundir, exist_ok = True)
os.chdir(farmrundir)
# Load the starting point
case.loadAMRWindInput(precursorsetup)
CANNOT update: ABLMeanBoussinesq use forcechange=True in setval()
OrderedDict([('io.KE_int', '-1'),
('io.line_plot_int', '1'),
('CoriolisForcing.turn_off_vertical_force', 'True')])
tstart = 15000
tstop = tstart+1000
OFdt = 0.0008608815426997245 # Time step for OpenFAST beamdyn
# Set the time constants
case.setAMRWindInput('time.stop_time', tstop)
case.setAMRWindInput('time.fixed_dt', OFdt*20)
case.setAMRWindInput('time.max_step', -1)
# set verbosity
case.setAMRWindInput('incflo.verbose', 0)
# Set the restart point
chkdir = precursordir+'/chk30000/'
case.setAMRWindInput('restart_file', os.path.realpath(chkdir))
# Set the boundary input file parameters
ablstatfile = precursordir+'/post_processing/abl_statistics30000.nc'
#tavg = [tstart, tstop]
tavg = [15000, 16000]
forcingdict = {'ablstatfile':ablstatfile, 'tavg':tavg}
inflowplanes= ['xlo', 'ylo']
bndryfiles = precursordir+'/bndry_file'
case.boundaryplane_restart(bndryfiles=bndryfiles,
forcingdict=forcingdict,
inflowplanes=inflowplanes,
checkpointdir=chkdir,
autoset_wf_properties=True,
ABLMeanBoussinesqTemperatureFile='avg_theta.dat',
verbose=True)
SET ABL_bndry_io_mode = '1'
SET ABL_bndry_file = '/tscratch/lcheung/HFM/exawind-benchmarks/convective_abl/bndry_file'
SET ABL_bndry_planes = ['xlo', 'ylo']
SET is_periodicx = False
SET is_periodicy = False
SET xlo_type = 'mass_inflow'
SET xlo_density = 1.0
SET xlo_temperature = 0.0
SET xlo_tke = 0.0
SET ylo_type = 'mass_inflow'
SET ylo_density = 1.0
SET ylo_temperature = 0.0
SET ylo_tke = 0.0
SET xhi_type = 'pressure_outflow'
SET xhi_density = None
SET xhi_temperature = None
SET xhi_tke = None
SET yhi_type = 'pressure_outflow'
SET yhi_density = None
SET yhi_temperature = None
SET yhi_tke = None
SET BodyForce = True
SET BodyForce_magnitude = [-0.0002743665569299508, 0.0011708563286373845, 0.0]
SET ABLForcing = False
SET ABLMeanBoussinesq = True
Loading theta
SET read_temperature_profile = True
SET temperature_profile_filename = 'avg_theta.dat'
Loading u
Loading v
Loading theta
Loading hvelmag
SET wf_velocity = [6.0977889026612075, 3.6097639593035185]
SET wf_vmag = 7.103916682319445
SET wf_theta = 300.20261481689676
SET wall_shear_stress_type = 'local'
SET checkpoint_start = 30000
Add the turbine
turbbase_xy = [[1800, 1800]]
eps = 2.0
# Build the CSV input file of turbine layouts for amrwind-frontend
OFoptions=(
# "FSTparam_CompServo:0 "
"FSTparam_DT:0.0008608815426997245 "
"EDparam_YawDOF:False "
"AMRparam_Actuator_epsilon:[{eps};{eps};{eps}] "
"AMRparam_Actuator_epsilon_tower:[{eps};{eps};{eps}] "
"AMRparam_Actuator_openfast_stop_time:3000.0 "
).format(eps=eps)
#"ADparam_TwrAero:False ADparam_TwrShadow:0 ADparam_TwrPotent:0 "
turbinescsv="""
# CSV file should have columns with
# name, x, y, type, yaw, hubheight, options
"""
rowformat="T%i, %f, %f, NREL5MW_v402_ROSCO_ALM_BD, 240.0, ,%s\n"
for iturb, xy in enumerate(turbbase_xy):
turboptions = OFoptions
turbinescsv += rowformat%(iturb, xy[0], xy[1], turboptions)
case.setAMRWindInput('turbines_csvtextbox', turbinescsv)
print(turbinescsv)
# CSV file should have columns with
# name, x, y, type, yaw, hubheight, options
T0, 1800.000000, 1800.000000, NREL5MW_v402_ROSCO_ALM_BD, 240.0, ,FSTparam_DT:0.0008608815426997245 EDparam_YawDOF:False AMRparam_Actuator_epsilon:[2.0;2.0;2.0] AMRparam_Actuator_epsilon_tower:[2.0;2.0;2.0] AMRparam_Actuator_openfast_stop_time:3000.0
case.setAMRWindInput('turbines_createnewdomain', False)
case.setAMRWindInput('turbines_deleteprev', True)
case.turbines_createAllTurbines()
docopy = True from /projects/wind_uq/lcheung/exawind-benchmarks.redoALM/amr-wind/actuator_line/NREL5MW_ALM_BD/setup/NREL5MW_v402_ROSCO to T0_NREL5MW_v402_ROSCO
T0_NREL5MW_v402_ROSCO/openfast-cpp/5MW_Land_DLL_WTurb_cpp/5MW_Land_DLL_WTurb_cpp.fst
Setting Actuator_epsilon to [2.0, 2.0, 2.0]
Setting Actuator_epsilon_tower to [2.0, 2.0, 2.0]
Setting Actuator_openfast_stop_time to 3000.0
OrderedDict([('DT', 0.0008608815426997245)])
OrderedDict([('YawDOF', 'False')])
0.0008608815426997245 DT - Recommended module time step (s) [EDITED] [EDITED]
False YawDOF - Yaw DOF (flag) [EDITED] [EDITED]
fig, ax = plt.subplots(figsize=(6,6), facecolor='w', dpi=125)
# Set any additional items to plot
case.popup_storteddata['plotdomain']['plot_turbines'] = case.listboxpopupwindict['listboxactuator'].getitemlist()
case.popup_storteddata['plotdomain']['plot_refineboxes'] = case.listboxpopupwindict['listboxtagging'].getitemlist()
case.popup_storteddata['plotdomain']['plot_sampleprobes'] = [] #['p_hub']
case.plotDomain(ax=ax)
for iturb, xy in enumerate(turbbase_xy):
ax.plot(xy[0], xy[1], 'ks')
Add refinement regions
## Add refinement zones
refinementcsv="""
# CSV file should have columns with
# level, upstream, downstream, lateral, below, above, options
level, upstream, downstream, lateral, below, above, options
0, 5, 10, 5, 0.75, 2,
1, 2.5, 5, 2, 0.75, 1.5,
2, 1.25, 2.0, 1.25, 0.75, 1.0,
3, 0.75, 0.75, 1.00, 0.75, 0.75,
"""
case.setAMRWindInput('refine_csvtextbox', refinementcsv)
case.setAMRWindInput('refine_deleteprev', True)
# Uncomment this to create refinement zones
case.refine_createAllZones()
fig, ax = plt.subplots(figsize=(6,6), facecolor='w', dpi=125)
# Set any additional items to plot
case.popup_storteddata['plotdomain']['plot_turbines'] = case.listboxpopupwindict['listboxactuator'].getitemlist()
case.popup_storteddata['plotdomain']['plot_refineboxes'] = case.listboxpopupwindict['listboxtagging'].getitemlist()
case.popup_storteddata['plotdomain']['plot_sampleprobes'] = [] #case.listboxpopupwindict['listboxsampling'].getitemlist()
case.popup_storteddata['plotdomain']['plot_sampleprobes_style'] = "{'markersize':.25, 'marker':'.', 'linestyle':'None', 'alpha':0.1}"
case.popup_storteddata['plotdomain']['plot_chooseview'] = 'XY'
case.plotDomain(ax=ax)
case.estimateMeshSize()
Refinement T0_level_0_zone: level 1: 6601240 cells
Refinement T0_level_1_zone: level 2: 8641624 cells
Refinement T0_level_2_zone: level 3: 14562737 cells
Refinement T0_level_3_zone: level 4: 36870930 cells
ESTIMATED MESH SIZE
Level Ncells Cell Size
0 50331648 10.0 x 10.0 x 10.0
1 6601240 5.0 x 5.0 x 5.0
2 8641624 2.5 x 2.5 x 2.5
3 14562737 1.25 x 1.25 x 1.25
4 36870930 0.625 x 0.625 x 0.625
TOTAL: 117008179
Add sampling planes
# First delete everything that already exists
case.listboxpopupwindict['listboxsampling'].deleteall()
case.listboxpopupwindict['listboxpostprosetup'].deleteall()
## virtual metmast measurements
metmastpprosetup = case.get_default_postprosetupdict()
metmastpprosetup['postprocessing_setup_name'] = 'metmast_'
metmastpprosetup['postprocessing_setup_type'] = 'Sampling'
metmastpprosetup['postprocessing_setup_output_frequency'] = 1
metmastpprosetup['postprocessing_setup_fields'] = ['velocity', 'temperature', 'tke']
case.add_postprosetup(metmastpprosetup, verbose=True)
sampledict = case.get_default_samplingdict()
sampledict['sampling_name'] = 'virtualmast'
sampledict['sampling_outputto'] = 'metmast_'
sampledict['sampling_type'] = 'LineSampler'
sampledict['sampling_l_num_points'] = 20
sampledict['sampling_l_start'] = [1800, 1800, 10.0]
sampledict['sampling_l_end'] = [1800, 1800, 200.0]
case.add_sampling(sampledict, verbose=False)
postprocessing_setup_name: 'metmast_'
postprocessing_setup_type: 'Sampling'
postprocessing_setup_output_frequency: 1
postprocessing_setup_fields: ['velocity', 'temperature', 'tke']
postprocessing_setup_derived_fields: None
postprocessing_setup_averaging_window: None
postprocessing_setup_averaging_start_time: None
postprocessing_setup_averaging_stop_time: None
outputoptions="outputvars:velocity;tke;temperature outputfreq:50"
samplingcsv="""
# CSV file should have columns withturbinescsv
# name, type, upstream, downstream, lateral, below, above, n1, n2, options
name, type, upstream, downstream, lateral, below, above, n1, n2, options
rotorplaneUP, rotorplane, 4, 0, 2, 0.7, 1, 11, 11, usedx:0.05 outputto:rotorplaneUP_ orientation:nacdir {outputoptions} noffsets:4
rotorplaneDN, rotorplane, 0, 10, 2, 0.7, 1, 11, 11, usedx:0.05 outputto:rotorplaneDN_ orientation:nacdir {outputoptions} noffsets:10
nearwake, rotorplane, 0, 2, 2, 0.7, 1, 11, 11, usedx:0.05 outputto:nearwake_ orientation:nacdir {outputoptions} noffsets:4
turbsw, streamwise, 4, 10, 0, 0.7, 1.5, 11, 11, usedx:0.05 outputto:turbsw_ orientation:nacdir {outputoptions} noffsets:0
turbhh, hubheight, 4, 10, 2, 0, 0, 11, 11, usedx:0.05 outputto:turbhh_ orientation:nacdir {outputoptions} noffsets:0
turb027, hubheight, 4, 10, 2, 0.50, 0, 11, 11, usedx:0.05 outputto:turb027_ orientation:nacdir {outputoptions} noffsets:0
turb153, hubheight, 4, 10, 2, -0.50, 0.50, 11, 11, usedx:0.05 outputto:turb153_ orientation:nacdir {outputoptions} noffsets:0
turb216, hubheight, 4, 10, 2, -1, 1, 11, 11, usedx:0.05 outputto:turb216_ orientation:nacdir {outputoptions} noffsets:0
sideplane1, streamwise, 4, 10, 2, 0.7, 1.5, 11, 11, usedx:0.05 outputto:sideplane1_ orientation:nacdir {outputoptions} noffsets:1
sideplane2, streamwise, 4, 10, -2, 0.7, 1.5, 11, 11, usedx:0.05 outputto:sideplane2_ orientation:nacdir {outputoptions} noffsets:1
XYdomain027, hubheight, 8, 8, 2, 0, 90, 11, 11, units:meter usedx:10 outputto:XYdomain_027_ orientation:nacdir center:specified centerx:100 centery:100 centerz:27 wholedomain:1 {outputoptions} noffsets:0
XYdomain090, hubheight, 8, 8, 2, 0, 90, 11, 11, units:meter usedx:10 outputto:XYdomain_090_ orientation:nacdir center:specified centerx:100 centery:100 centerz:90 wholedomain:1 {outputoptions} noffsets:0
XYdomain153, hubheight, 8, 8, 2, 0, 153, 11, 11, units:meter usedx:10 outputto:XYdomain_153_ orientation:nacdir center:specified centerx:100 centery:100 centerz:153 wholedomain:1 {outputoptions} noffsets:0
""".format(outputoptions=outputoptions)
case.setAMRWindInput('sampling_csvtextbox', samplingcsv)
case.setAMRWindInput('sampling_deleteprev', False)
case.sampling_createAllProbes(verbose=False)
# Print out existing list of turbines
print(case.listboxpopupwindict['listboxsampling'].getitemlist())
['virtualmast', 'T0_rotorplaneUP', 'T0_rotorplaneDN', 'T0_nearwake', 'T0_turbsw', 'T0_turbhh', 'T0_turb027', 'T0_turb153', 'T0_turb216', 'T0_sideplane1', 'T0_sideplane2', 'Farm_XYdomain027', 'Farm_XYdomain090', 'Farm_XYdomain153']
fig, ax = plt.subplots(figsize=(6,6), facecolor='w', dpi=125)
# Set any additional items to plot
case.popup_storteddata['plotdomain']['plot_turbines'] = case.listboxpopupwindict['listboxactuator'].getitemlist()
case.popup_storteddata['plotdomain']['plot_refineboxes'] = [] #case.listboxpopupwindict['listboxtagging'].getitemlist()
case.popup_storteddata['plotdomain']['plot_sampleprobes'] = ['T0_rotorplaneUP', 'T0_rotorplaneDN', 'T0_turbhh', 'T0_turbsw','T0_nearwake',
'T0_sideplane1', 'T0_sideplane2'] #case.listboxpopupwindict['listboxsampling'].getitemlist()
case.popup_storteddata['plotdomain']['plot_sampleprobes_style'] = "{'markersize':.25, 'marker':'.', 'linestyle':'None', 'alpha':0.1}"
case.popup_storteddata['plotdomain']['plot_chooseview'] = 'XY'
case.plotDomain(ax=ax)
fig, ax = plt.subplots(figsize=(6,6), facecolor='w', dpi=125)
# Set any additional items to plot
case.popup_storteddata['plotdomain']['plot_turbines'] = case.listboxpopupwindict['listboxactuator'].getitemlist()
case.popup_storteddata['plotdomain']['plot_refineboxes'] = [] #case.listboxpopupwindict['listboxtagging'].getitemlist()
case.popup_storteddata['plotdomain']['plot_sampleprobes'] = [#'T0_rotorplaneUP', 'T0_rotorplaneDN', 'T0_turbhh', 'T0_turbsw','T0_nearwake',
'T0_turb027', 'T0_turbhh', 'T0_turb153','T0_turb216']
case.popup_storteddata['plotdomain']['plot_sampleprobes_style'] = "{'markersize':.25, 'marker':'.', 'linestyle':'None', 'alpha':0.1}"
case.popup_storteddata['plotdomain']['plot_chooseview'] = 'XZ'
case.popup_storteddata['plotdomain']['plot_sampleprobes_legend'] = "{'title':'Sampling probes', 'fontsize':6, 'loc':'upper right', 'markerscale':6}"
case.plotDomain(ax=ax)
fig, ax = plt.subplots(figsize=(12,6), facecolor='w', dpi=125)
# Set any additional items to plot
case.popup_storteddata['plotdomain']['plot_turbines'] = case.listboxpopupwindict['listboxactuator'].getitemlist()
case.popup_storteddata['plotdomain']['plot_refineboxes'] = case.listboxpopupwindict['listboxtagging'].getitemlist()
case.popup_storteddata['plotdomain']['plot_sampleprobes'] = case.listboxpopupwindict['listboxsampling'].getitemlist() #['p_hub']
case.popup_storteddata['plotdomain']['plot_sampleprobes_style'] = "{'markersize':.1, 'marker':'.', 'linestyle':'None', 'alpha':0.1}"
case.popup_storteddata['plotdomain']['plot_chooseview'] = 'XZ'
case.plotDomain(ax=ax)
case.validate();
-- Checking inputs --
[ PASS] max_level: max_level = 4 >= 0
[ PASS] dt & CFL: DT and CFL OK
[ PASS] restart dir: Restart directory /pscratch/ndeveld/hfm-2025-q1/abl/chk30000 exists
[ PASS] boundary plane dir: Restart directory /tscratch/lcheung/HFM/exawind-benchmarks/convective_abl/bndry_file exists
[ PASS] Actuator physics: incflo.physics and ICNS.source_terms OK for Actuators
[ PASS] Actuator FST:T0 [T0_NREL5MW_v402_ROSCO/openfast-cpp/5MW_Land_DLL_WTurb_cpp/5MW_Land_DLL_WTurb_cpp.fst] exists
[ PASS] Actuator FST:T0 Actuator density=1.000000, matches incflo.density=1.000000
[ PASS] Actuator FST:T0 CompInflow OK
[ PASS] Actuator FST:T0 [T0_NREL5MW_v402_ROSCO/openfast-cpp/5MW_Land_DLL_WTurb_cpp/NRELOffshrBsline5MW_Onshore_AeroDyn.dat] exists
[ PASS] Actuator FST:T0 WakeMod=0 OK
[ PASS] Actuator FST:T0 AirDens=1.000000, matches incflo.density=1.000000
[ PASS] Actuator FST:T0 [/projects/wind_uq/lcheung/amrwind-frontend/turbines/OpenFAST_NREL2p8-127_AWAKEN/libdiscon.so] exists
[ PASS] Actuator FST:T0 WE_RhoAir=1.000000 in DISCON matches AirDens=1.000000 and incflo.density=1.000000
[ PASS] Sampling probes:virtualmast is inside domain
[ PASS] Sampling probes:T0_rotorplaneUP
[ PASS] Sampling probes:T0_rotorplaneDN
[ PASS] Sampling probes:T0_nearwake
[ PASS] Sampling probes:T0_turbsw
[ PASS] Sampling probes:T0_turbhh
[ PASS] Sampling probes:T0_turb027
[ PASS] Sampling probes:T0_turb153
[ PASS] Sampling probes:T0_turb216
[ PASS] Sampling probes:T0_sideplane1
[ PASS] Sampling probes:T0_sideplane2
[ PASS] Sampling probes:Farm_XYdomain027
[ PASS] Sampling probes:Farm_XYdomain090
[ PASS] Sampling probes:Farm_XYdomain153
Results:
27 PASS
0 SKIP
0 FAIL
0 WARN
#raise ValueError('Stop')
Write out the input file
For the w/turbine ALM case
# For the w/turbine ALM case
case.setAMRWindInput('amr.max_level', 2)
print(case.writeAMRWindInput(outputfile))
# --- Simulation time control parameters ---
time.stop_time = 16000.0 # Max (simulated) time to evolve [s]
time.max_step = -1
time.fixed_dt = 0.01721763085399449 # Fixed timestep size (in seconds). If negative, then time.cfl is used
time.checkpoint_interval = 10000
time.checkpoint_start = 30000
incflo.physics = ABL Actuator # List of physics models to include in simulation.
incflo.verbose = 0
io.check_file = chk
io.restart_file = /pscratch/ndeveld/hfm-2025-q1/abl/chk30000
incflo.use_godunov = true
incflo.godunov_type = weno_z
turbulence.model = OneEqKsgsM84
TKE.source_terms = KsgsM84Src
nodal_proj.mg_rtol = 1e-08
nodal_proj.mg_atol = 1e-08
mac_proj.mg_rtol = 1e-08
mac_proj.mg_atol = 1e-08
diffusion.mg_rtol = 1e-08
diffusion.mg_atol = 1e-08
temperature_diffusion.mg_rtol = 1e-08
temperature_diffusion.mg_atol = 1e-08
incflo.gravity = 0.0 0.0 -9.81 # Gravitational acceleration vector (x,y,z) [m/s^2]
incflo.density = 1.0 # Fluid density [kg/m^3]
transport.viscosity = 0.0 # Fluid dynamic viscosity [kg/m-s]
transport.laminar_prandtl = 0.7 # Laminar prandtl number
transport.turbulent_prandtl = 0.3333 # Turbulent prandtl number
# --- Geometry and Mesh ---
geometry.prob_lo = 0.0 0.0 0.0
geometry.prob_hi = 5120.0 5120.0 1920.0
amr.n_cell = 512 512 192 # Number of cells in x, y, and z directions
amr.max_level = 2
geometry.is_periodic = 0 0 0
xlo.type = mass_inflow
xlo.density = 1.0
xlo.temperature = 0.0
xlo.tke = 0.0
xhi.type = pressure_outflow
ylo.type = mass_inflow
ylo.density = 1.0
ylo.temperature = 0.0
ylo.tke = 0.0
yhi.type = pressure_outflow
zlo.type = wall_model
zlo.temperature_type = wall_model
zlo.tke_type = zero_gradient
zhi.type = slip_wall
zhi.temperature_type = fixed_gradient
zhi.temperature = 0.003
# --- ABL parameters ---
ICNS.source_terms = BoussinesqBuoyancy CoriolisForcing ActuatorForcing BodyForce ABLMeanBoussinesq
ABL.stats_output_frequency = 1
ABL.stats_output_format = netcdf
ABL.tendency_forcing = false
ABL.bndry_io_mode = 1
ABL.bndry_file = /tscratch/lcheung/HFM/exawind-benchmarks/convective_abl/bndry_file
ABL.bndry_planes = xlo ylo
ABL.bndry_output_start_time = 15000.0
ABL.bndry_var_names = velocity temperature tke
ABL.bndry_output_format = native
incflo.velocity = 9.8726896031426 5.7 0.0
ABLForcing.abl_forcing_height = 90.0
ABL.kappa = 0.41
ABL.normal_direction = 2
ABL.surface_roughness_z0 = 0.01
ABL.reference_temperature = 300.0
ABL.surface_temp_rate = 0.0
ABL.surface_temp_flux = 0.005 # Surface temperature flux [K-m/s]
ABL.log_law_height = 5.0
ABL.wall_shear_stress_type = local
ABL.wf_velocity = 6.0977889026612075 3.6097639593035185
ABL.wf_vmag = 7.103916682319445
ABL.wf_theta = 300.20261481689676
CoriolisForcing.latitude = 40.0
CoriolisForcing.rotational_time_period = 86400.0
CoriolisForcing.north_vector = 0.0 1.0 0.0
CoriolisForcing.east_vector = 1.0 0.0 0.0
BoussinesqBuoyancy.reference_temperature = 300.0
BodyForce.magnitude = -0.0002743665569299508 0.0011708563286373845 0.0
ABL.temperature_heights = 0.0 750.0 850.0 2000.0
ABL.temperature_values = 300.0 300.0 308.0 311.45
ABLMeanBoussinesq.read_temperature_profile = true
ABLMeanBoussinesq.temperature_profile_filename = avg_theta.dat
ABL.perturb_velocity = true
ABL.perturb_ref_height = 50.0
ABL.Uperiods = 4.0
ABL.Vperiods = 4.0
ABL.deltaU = 1.0
ABL.deltaV = 1.0
ABL.perturb_temperature = true
ABL.theta_amplitude = 0.8
ABL.cutoff_height = 50.0
time.plot_interval = 10000
io.plot_file = plt
#---- tagging defs ----
tagging.labels = T0_level_0_zone T0_level_1_zone T0_level_2_zone T0_level_3_zone
tagging.T0_level_0_zone.type = GeometryRefinement
tagging.T0_level_0_zone.shapes = T0_level_0_zone
tagging.T0_level_0_zone.level = 0
tagging.T0_level_0_zone.T0_level_0_zone.type = box
tagging.T0_level_0_zone.T0_level_0_zone.origin = 1569.4039956158035 939.4039956158036 -4.5
tagging.T0_level_0_zone.T0_level_0_zone.xaxis = 1636.788013152589 944.9999999999998 0.0
tagging.T0_level_0_zone.T0_level_0_zone.yaxis = -629.9999999999999 1091.1920087683927 -0.0
tagging.T0_level_0_zone.T0_level_0_zone.zaxis = 0.0 0.0 346.5
tagging.T0_level_1_zone.type = GeometryRefinement
tagging.T0_level_1_zone.shapes = T0_level_1_zone
tagging.T0_level_1_zone.level = 1
tagging.T0_level_1_zone.T0_level_1_zone.type = box
tagging.T0_level_1_zone.T0_level_1_zone.origin = 1653.2019978079018 1424.2615982463215 -4.5
tagging.T0_level_1_zone.T0_level_1_zone.xaxis = 818.3940065762945 472.4999999999999 0.0
tagging.T0_level_1_zone.T0_level_1_zone.yaxis = -251.99999999999994 436.47680350735703 -0.0
tagging.T0_level_1_zone.T0_level_1_zone.zaxis = 0.0 0.0 283.5
tagging.T0_level_2_zone.type = GeometryRefinement
tagging.T0_level_2_zone.shapes = T0_level_2_zone
tagging.T0_level_2_zone.level = 2
tagging.T0_level_2_zone.T0_level_2_zone.type = box
tagging.T0_level_2_zone.T0_level_2_zone.origin = 1742.350998903951 1584.850998903951 -4.5
tagging.T0_level_2_zone.T0_level_2_zone.xaxis = 354.6374028497276 204.74999999999994 0.0
tagging.T0_level_2_zone.T0_level_2_zone.yaxis = -157.49999999999997 272.7980021920982 -0.0
tagging.T0_level_2_zone.T0_level_2_zone.zaxis = 0.0 0.0 220.5
tagging.T0_level_3_zone.type = GeometryRefinement
tagging.T0_level_3_zone.shapes = T0_level_3_zone
tagging.T0_level_3_zone.level = 3
tagging.T0_level_3_zone.T0_level_3_zone.type = box
tagging.T0_level_3_zone.T0_level_3_zone.origin = 1781.1605993423705 1643.6307991231608 -4.5
tagging.T0_level_3_zone.T0_level_3_zone.xaxis = 163.6788013152589 94.49999999999999 0.0
tagging.T0_level_3_zone.T0_level_3_zone.yaxis = -125.99999999999997 218.23840175367852 -0.0
tagging.T0_level_3_zone.T0_level_3_zone.zaxis = 0.0 0.0 189.0
#---- actuator defs ----
Actuator.labels = T0
Actuator.T0.type = TurbineFastLine
Actuator.T0.openfast_input_file = T0_NREL5MW_v402_ROSCO/openfast-cpp/5MW_Land_DLL_WTurb_cpp/5MW_Land_DLL_WTurb_cpp.fst
Actuator.T0.base_position = 1800.0 1800.0 0.0
Actuator.T0.rotor_diameter = 126.0
Actuator.T0.hub_height = 90.0
Actuator.T0.num_points_blade = 25
Actuator.T0.num_points_tower = 11
Actuator.T0.epsilon = 2.0 2.0 2.0
Actuator.T0.epsilon_tower = 2.0 2.0 2.0
Actuator.T0.openfast_start_time = 0.0
Actuator.T0.openfast_stop_time = 3000.0
Actuator.T0.fllc = false
Actuator.T0.nacelle_drag_coeff = 0.0
Actuator.T0.nacelle_area = 0.0
Actuator.T0.yaw = 240.0
Actuator.T0.output_frequency = 10
Actuator.T0.density = 1.0
Actuator.T0.num_blades = 3
Actuator.T0.use_tip_correction = true
Actuator.T0.use_root_correction = true
#---- postprocessing defs ----
incflo.post_processing = metmast_ rotorplaneUP_ rotorplaneDN_ nearwake_ turbsw_ turbhh_ turb027_ turb153_ turb216_ sideplane1_ sideplane2_ XYdomain_027_ XYdomain_090_ XYdomain_153_
metmast_.type = Sampling
metmast_.output_frequency = 1
metmast_.fields = velocity temperature tke
rotorplaneUP_.type = Sampling
rotorplaneUP_.output_frequency = 50
rotorplaneUP_.fields = velocity temperature tke
rotorplaneDN_.type = Sampling
rotorplaneDN_.output_frequency = 50
rotorplaneDN_.fields = velocity temperature tke
nearwake_.type = Sampling
nearwake_.output_frequency = 50
nearwake_.fields = velocity temperature tke
turbsw_.type = Sampling
turbsw_.output_frequency = 50
turbsw_.fields = velocity temperature tke
turbhh_.type = Sampling
turbhh_.output_frequency = 50
turbhh_.fields = velocity temperature tke
turb027_.type = Sampling
turb027_.output_frequency = 50
turb027_.fields = velocity temperature tke
turb153_.type = Sampling
turb153_.output_frequency = 50
turb153_.fields = velocity temperature tke
turb216_.type = Sampling
turb216_.output_frequency = 50
turb216_.fields = velocity temperature tke
sideplane1_.type = Sampling
sideplane1_.output_frequency = 50
sideplane1_.fields = velocity temperature tke
sideplane2_.type = Sampling
sideplane2_.output_frequency = 50
sideplane2_.fields = velocity temperature tke
XYdomain_027_.type = Sampling
XYdomain_027_.output_frequency = 50
XYdomain_027_.fields = velocity temperature tke
XYdomain_090_.type = Sampling
XYdomain_090_.output_frequency = 50
XYdomain_090_.fields = velocity temperature tke
XYdomain_153_.type = Sampling
XYdomain_153_.output_frequency = 50
XYdomain_153_.fields = velocity temperature tke
#---- sample defs ----
metmast_.labels = virtualmast
rotorplaneUP_.labels = T0_rotorplaneUP
rotorplaneDN_.labels = T0_rotorplaneDN
nearwake_.labels = T0_nearwake
turbsw_.labels = T0_turbsw
turbhh_.labels = T0_turbhh
turb027_.labels = T0_turb027
turb153_.labels = T0_turb153
turb216_.labels = T0_turb216
sideplane1_.labels = T0_sideplane1
sideplane2_.labels = T0_sideplane2
XYdomain_027_.labels = Farm_XYdomain027
XYdomain_090_.labels = Farm_XYdomain090
XYdomain_153_.labels = Farm_XYdomain153
metmast_.virtualmast.type = LineSampler
metmast_.virtualmast.num_points = 20
metmast_.virtualmast.start = 1800.0 1800.0 10.0
metmast_.virtualmast.end = 1800.0 1800.0 200.0
rotorplaneUP_.T0_rotorplaneUP.type = PlaneSampler
rotorplaneUP_.T0_rotorplaneUP.num_points = 81 35
rotorplaneUP_.T0_rotorplaneUP.origin = 1489.523196492643 1329.7615982463215 1.8000000000000114
rotorplaneUP_.T0_rotorplaneUP.axis1 = -251.99999999999994 436.47680350735703 -0.0
rotorplaneUP_.T0_rotorplaneUP.axis2 = 0.0 0.0 214.2
rotorplaneUP_.T0_rotorplaneUP.offset_vector = 0.8660254037844386 0.4999999999999999 0.0
rotorplaneUP_.T0_rotorplaneUP.offsets = 0.0 126.0 252.0 378.0 504.0
rotorplaneDN_.T0_rotorplaneDN.type = PlaneSampler
rotorplaneDN_.T0_rotorplaneDN.num_points = 81 35
rotorplaneDN_.T0_rotorplaneDN.origin = 1926.0 1581.7615982463215 1.8000000000000114
rotorplaneDN_.T0_rotorplaneDN.axis1 = -251.99999999999994 436.47680350735703 -0.0
rotorplaneDN_.T0_rotorplaneDN.axis2 = 0.0 0.0 214.2
rotorplaneDN_.T0_rotorplaneDN.offset_vector = 0.8660254037844386 0.4999999999999999 0.0
rotorplaneDN_.T0_rotorplaneDN.offsets = 0.0 126.0 252.0 378.0 504.0 630.0 756.0 882.0 1008.0 1134.0 1260.0
nearwake_.T0_nearwake.type = PlaneSampler
nearwake_.T0_nearwake.num_points = 81 35
nearwake_.T0_nearwake.origin = 1926.0 1581.7615982463215 1.8000000000000114
nearwake_.T0_nearwake.axis1 = -251.99999999999994 436.47680350735703 -0.0
nearwake_.T0_nearwake.axis2 = 0.0 0.0 214.2
nearwake_.T0_nearwake.offset_vector = 0.8660254037844386 0.4999999999999999 0.0
nearwake_.T0_nearwake.offsets = 0.0 63.0 126.0 189.0 252.0
turbsw_.T0_turbsw.type = PlaneSampler
turbsw_.T0_turbsw.num_points = 281 45
turbsw_.T0_turbsw.origin = 1363.523196492643 1548.0 1.8000000000000114
turbsw_.T0_turbsw.axis1 = 1527.6688122757496 881.9999999999998 0.0
turbsw_.T0_turbsw.axis2 = 0.0 0.0 277.2
turbsw_.T0_turbsw.offset_vector = 0.0 0.0 0.0
turbhh_.T0_turbhh.type = PlaneSampler
turbhh_.T0_turbhh.num_points = 281 81
turbhh_.T0_turbhh.origin = 1489.523196492643 1329.7615982463215 90.0
turbhh_.T0_turbhh.axis1 = 1527.6688122757496 881.9999999999998 0.0
turbhh_.T0_turbhh.axis2 = -251.99999999999994 436.47680350735703 -0.0
turbhh_.T0_turbhh.offset_vector = 0.0 0.0 0.0
turb027_.T0_turb027.type = PlaneSampler
turb027_.T0_turb027.num_points = 281 81
turb027_.T0_turb027.origin = 1489.523196492643 1329.7615982463215 27.0
turb027_.T0_turb027.axis1 = 1527.6688122757496 881.9999999999998 0.0
turb027_.T0_turb027.axis2 = -251.99999999999994 436.47680350735703 -0.0
turb027_.T0_turb027.offset_vector = 0.0 0.0 0.0
turb153_.T0_turb153.type = PlaneSampler
turb153_.T0_turb153.num_points = 281 81
turb153_.T0_turb153.origin = 1489.523196492643 1329.7615982463215 153.0
turb153_.T0_turb153.axis1 = 1527.6688122757496 881.9999999999998 0.0
turb153_.T0_turb153.axis2 = -251.99999999999994 436.47680350735703 -0.0
turb153_.T0_turb153.offset_vector = 0.0 0.0 0.0
turb216_.T0_turb216.type = PlaneSampler
turb216_.T0_turb216.num_points = 281 81
turb216_.T0_turb216.origin = 1489.523196492643 1329.7615982463215 216.0
turb216_.T0_turb216.axis1 = 1527.6688122757496 881.9999999999998 0.0
turb216_.T0_turb216.axis2 = -251.99999999999994 436.47680350735703 -0.0
turb216_.T0_turb216.offset_vector = 0.0 0.0 0.0
sideplane1_.T0_sideplane1.type = PlaneSampler
sideplane1_.T0_sideplane1.num_points = 281 45
sideplane1_.T0_sideplane1.origin = 1363.523196492643 1548.0 1.8000000000000114
sideplane1_.T0_sideplane1.axis1 = 1527.6688122757496 881.9999999999998 0.0
sideplane1_.T0_sideplane1.axis2 = 0.0 0.0 277.2
sideplane1_.T0_sideplane1.offset_vector = -0.4999999999999999 0.8660254037844386 -0.0
sideplane1_.T0_sideplane1.offsets = 0.0 252.0
sideplane2_.T0_sideplane2.type = PlaneSampler
sideplane2_.T0_sideplane2.num_points = 281 45
sideplane2_.T0_sideplane2.origin = 1363.523196492643 1548.0 1.8000000000000114
sideplane2_.T0_sideplane2.axis1 = 1527.6688122757496 881.9999999999998 0.0
sideplane2_.T0_sideplane2.axis2 = 0.0 0.0 277.2
sideplane2_.T0_sideplane2.offset_vector = -0.4999999999999999 0.8660254037844386 -0.0
sideplane2_.T0_sideplane2.offsets = 0.0 -252.0
XYdomain_027_.Farm_XYdomain027.type = PlaneSampler
XYdomain_027_.Farm_XYdomain027.num_points = 513 513
XYdomain_027_.Farm_XYdomain027.origin = 0.0001 0.0001 27.0
XYdomain_027_.Farm_XYdomain027.axis1 = 5119.9998 0.0 0.0
XYdomain_027_.Farm_XYdomain027.axis2 = 0.0 5119.9998 0.0
XYdomain_027_.Farm_XYdomain027.offset_vector = 0.0 0.0 0.0
XYdomain_090_.Farm_XYdomain090.type = PlaneSampler
XYdomain_090_.Farm_XYdomain090.num_points = 513 513
XYdomain_090_.Farm_XYdomain090.origin = 0.0001 0.0001 90.0
XYdomain_090_.Farm_XYdomain090.axis1 = 5119.9998 0.0 0.0
XYdomain_090_.Farm_XYdomain090.axis2 = 0.0 5119.9998 0.0
XYdomain_090_.Farm_XYdomain090.offset_vector = 0.0 0.0 0.0
XYdomain_153_.Farm_XYdomain153.type = PlaneSampler
XYdomain_153_.Farm_XYdomain153.num_points = 513 513
XYdomain_153_.Farm_XYdomain153.origin = 0.0001 0.0001 153.0
XYdomain_153_.Farm_XYdomain153.axis1 = 5119.9998 0.0 0.0
XYdomain_153_.Farm_XYdomain153.axis2 = 0.0 5119.9998 0.0
XYdomain_153_.Farm_XYdomain153.offset_vector = 0.0 0.0 0.0
#---- extra params ----
io.KE_int = -1
io.line_plot_int = 1
CoriolisForcing.turn_off_vertical_force = True
#== END AMR-WIND INPUT ==
For the without turbine ALM case
# For the w/o turbine ALM case
case.removeturbines()
print(case.writeAMRWindInput(noturboutputfile))
# --- Simulation time control parameters ---
time.stop_time = 16000.0 # Max (simulated) time to evolve [s]
time.max_step = -1
time.fixed_dt = 0.01721763085399449 # Fixed timestep size (in seconds). If negative, then time.cfl is used
time.checkpoint_interval = 10000
time.checkpoint_start = 30000
incflo.physics = ABL # List of physics models to include in simulation.
incflo.verbose = 0
io.check_file = chk
io.restart_file = /pscratch/ndeveld/hfm-2025-q1/abl/chk30000
incflo.use_godunov = true
incflo.godunov_type = weno_z
turbulence.model = OneEqKsgsM84
TKE.source_terms = KsgsM84Src
nodal_proj.mg_rtol = 1e-08
nodal_proj.mg_atol = 1e-08
mac_proj.mg_rtol = 1e-08
mac_proj.mg_atol = 1e-08
diffusion.mg_rtol = 1e-08
diffusion.mg_atol = 1e-08
temperature_diffusion.mg_rtol = 1e-08
temperature_diffusion.mg_atol = 1e-08
incflo.gravity = 0.0 0.0 -9.81 # Gravitational acceleration vector (x,y,z) [m/s^2]
incflo.density = 1.0 # Fluid density [kg/m^3]
transport.viscosity = 0.0 # Fluid dynamic viscosity [kg/m-s]
transport.laminar_prandtl = 0.7 # Laminar prandtl number
transport.turbulent_prandtl = 0.3333 # Turbulent prandtl number
# --- Geometry and Mesh ---
geometry.prob_lo = 0.0 0.0 0.0
geometry.prob_hi = 5120.0 5120.0 1920.0
amr.n_cell = 512 512 192 # Number of cells in x, y, and z directions
amr.max_level = 2
geometry.is_periodic = 0 0 0
xlo.type = mass_inflow
xlo.density = 1.0
xlo.temperature = 0.0
xlo.tke = 0.0
xhi.type = pressure_outflow
ylo.type = mass_inflow
ylo.density = 1.0
ylo.temperature = 0.0
ylo.tke = 0.0
yhi.type = pressure_outflow
zlo.type = wall_model
zlo.temperature_type = wall_model
zlo.tke_type = zero_gradient
zhi.type = slip_wall
zhi.temperature_type = fixed_gradient
zhi.temperature = 0.003
# --- ABL parameters ---
ICNS.source_terms = BoussinesqBuoyancy CoriolisForcing BodyForce ABLMeanBoussinesq
ABL.stats_output_frequency = 1
ABL.stats_output_format = netcdf
ABL.tendency_forcing = false
ABL.bndry_io_mode = 1
ABL.bndry_file = /tscratch/lcheung/HFM/exawind-benchmarks/convective_abl/bndry_file
ABL.bndry_planes = xlo ylo
ABL.bndry_output_start_time = 15000.0
ABL.bndry_var_names = velocity temperature tke
ABL.bndry_output_format = native
incflo.velocity = 9.8726896031426 5.7 0.0
ABLForcing.abl_forcing_height = 90.0
ABL.kappa = 0.41
ABL.normal_direction = 2
ABL.surface_roughness_z0 = 0.01
ABL.reference_temperature = 300.0
ABL.surface_temp_rate = 0.0
ABL.surface_temp_flux = 0.005 # Surface temperature flux [K-m/s]
ABL.log_law_height = 5.0
ABL.wall_shear_stress_type = local
ABL.wf_velocity = 6.0977889026612075 3.6097639593035185
ABL.wf_vmag = 7.103916682319445
ABL.wf_theta = 300.20261481689676
CoriolisForcing.latitude = 40.0
CoriolisForcing.rotational_time_period = 86400.0
CoriolisForcing.north_vector = 0.0 1.0 0.0
CoriolisForcing.east_vector = 1.0 0.0 0.0
BoussinesqBuoyancy.reference_temperature = 300.0
BodyForce.magnitude = -0.0002743665569299508 0.0011708563286373845 0.0
ABL.temperature_heights = 0.0 750.0 850.0 2000.0
ABL.temperature_values = 300.0 300.0 308.0 311.45
ABLMeanBoussinesq.read_temperature_profile = true
ABLMeanBoussinesq.temperature_profile_filename = avg_theta.dat
ABL.perturb_velocity = true
ABL.perturb_ref_height = 50.0
ABL.Uperiods = 4.0
ABL.Vperiods = 4.0
ABL.deltaU = 1.0
ABL.deltaV = 1.0
ABL.perturb_temperature = true
ABL.theta_amplitude = 0.8
ABL.cutoff_height = 50.0
time.plot_interval = 10000
io.plot_file = plt
#---- tagging defs ----
tagging.labels = T0_level_0_zone T0_level_1_zone T0_level_2_zone T0_level_3_zone
tagging.T0_level_0_zone.type = GeometryRefinement
tagging.T0_level_0_zone.shapes = T0_level_0_zone
tagging.T0_level_0_zone.level = 0
tagging.T0_level_0_zone.T0_level_0_zone.type = box
tagging.T0_level_0_zone.T0_level_0_zone.origin = 1569.4039956158035 939.4039956158036 -4.5
tagging.T0_level_0_zone.T0_level_0_zone.xaxis = 1636.788013152589 944.9999999999998 0.0
tagging.T0_level_0_zone.T0_level_0_zone.yaxis = -629.9999999999999 1091.1920087683927 -0.0
tagging.T0_level_0_zone.T0_level_0_zone.zaxis = 0.0 0.0 346.5
tagging.T0_level_1_zone.type = GeometryRefinement
tagging.T0_level_1_zone.shapes = T0_level_1_zone
tagging.T0_level_1_zone.level = 1
tagging.T0_level_1_zone.T0_level_1_zone.type = box
tagging.T0_level_1_zone.T0_level_1_zone.origin = 1653.2019978079018 1424.2615982463215 -4.5
tagging.T0_level_1_zone.T0_level_1_zone.xaxis = 818.3940065762945 472.4999999999999 0.0
tagging.T0_level_1_zone.T0_level_1_zone.yaxis = -251.99999999999994 436.47680350735703 -0.0
tagging.T0_level_1_zone.T0_level_1_zone.zaxis = 0.0 0.0 283.5
tagging.T0_level_2_zone.type = GeometryRefinement
tagging.T0_level_2_zone.shapes = T0_level_2_zone
tagging.T0_level_2_zone.level = 2
tagging.T0_level_2_zone.T0_level_2_zone.type = box
tagging.T0_level_2_zone.T0_level_2_zone.origin = 1742.350998903951 1584.850998903951 -4.5
tagging.T0_level_2_zone.T0_level_2_zone.xaxis = 354.6374028497276 204.74999999999994 0.0
tagging.T0_level_2_zone.T0_level_2_zone.yaxis = -157.49999999999997 272.7980021920982 -0.0
tagging.T0_level_2_zone.T0_level_2_zone.zaxis = 0.0 0.0 220.5
tagging.T0_level_3_zone.type = GeometryRefinement
tagging.T0_level_3_zone.shapes = T0_level_3_zone
tagging.T0_level_3_zone.level = 3
tagging.T0_level_3_zone.T0_level_3_zone.type = box
tagging.T0_level_3_zone.T0_level_3_zone.origin = 1781.1605993423705 1643.6307991231608 -4.5
tagging.T0_level_3_zone.T0_level_3_zone.xaxis = 163.6788013152589 94.49999999999999 0.0
tagging.T0_level_3_zone.T0_level_3_zone.yaxis = -125.99999999999997 218.23840175367852 -0.0
tagging.T0_level_3_zone.T0_level_3_zone.zaxis = 0.0 0.0 189.0
#---- postprocessing defs ----
incflo.post_processing = metmast_ rotorplaneUP_ rotorplaneDN_ nearwake_ turbsw_ turbhh_ turb027_ turb153_ turb216_ sideplane1_ sideplane2_ XYdomain_027_ XYdomain_090_ XYdomain_153_
metmast_.type = Sampling
metmast_.output_frequency = 1
metmast_.fields = velocity temperature tke
rotorplaneUP_.type = Sampling
rotorplaneUP_.output_frequency = 50
rotorplaneUP_.fields = velocity temperature tke
rotorplaneDN_.type = Sampling
rotorplaneDN_.output_frequency = 50
rotorplaneDN_.fields = velocity temperature tke
nearwake_.type = Sampling
nearwake_.output_frequency = 50
nearwake_.fields = velocity temperature tke
turbsw_.type = Sampling
turbsw_.output_frequency = 50
turbsw_.fields = velocity temperature tke
turbhh_.type = Sampling
turbhh_.output_frequency = 50
turbhh_.fields = velocity temperature tke
turb027_.type = Sampling
turb027_.output_frequency = 50
turb027_.fields = velocity temperature tke
turb153_.type = Sampling
turb153_.output_frequency = 50
turb153_.fields = velocity temperature tke
turb216_.type = Sampling
turb216_.output_frequency = 50
turb216_.fields = velocity temperature tke
sideplane1_.type = Sampling
sideplane1_.output_frequency = 50
sideplane1_.fields = velocity temperature tke
sideplane2_.type = Sampling
sideplane2_.output_frequency = 50
sideplane2_.fields = velocity temperature tke
XYdomain_027_.type = Sampling
XYdomain_027_.output_frequency = 50
XYdomain_027_.fields = velocity temperature tke
XYdomain_090_.type = Sampling
XYdomain_090_.output_frequency = 50
XYdomain_090_.fields = velocity temperature tke
XYdomain_153_.type = Sampling
XYdomain_153_.output_frequency = 50
XYdomain_153_.fields = velocity temperature tke
#---- sample defs ----
metmast_.labels = virtualmast
rotorplaneUP_.labels = T0_rotorplaneUP
rotorplaneDN_.labels = T0_rotorplaneDN
nearwake_.labels = T0_nearwake
turbsw_.labels = T0_turbsw
turbhh_.labels = T0_turbhh
turb027_.labels = T0_turb027
turb153_.labels = T0_turb153
turb216_.labels = T0_turb216
sideplane1_.labels = T0_sideplane1
sideplane2_.labels = T0_sideplane2
XYdomain_027_.labels = Farm_XYdomain027
XYdomain_090_.labels = Farm_XYdomain090
XYdomain_153_.labels = Farm_XYdomain153
metmast_.virtualmast.type = LineSampler
metmast_.virtualmast.num_points = 20
metmast_.virtualmast.start = 1800.0 1800.0 10.0
metmast_.virtualmast.end = 1800.0 1800.0 200.0
rotorplaneUP_.T0_rotorplaneUP.type = PlaneSampler
rotorplaneUP_.T0_rotorplaneUP.num_points = 81 35
rotorplaneUP_.T0_rotorplaneUP.origin = 1489.523196492643 1329.7615982463215 1.8000000000000114
rotorplaneUP_.T0_rotorplaneUP.axis1 = -251.99999999999994 436.47680350735703 -0.0
rotorplaneUP_.T0_rotorplaneUP.axis2 = 0.0 0.0 214.2
rotorplaneUP_.T0_rotorplaneUP.offset_vector = 0.8660254037844386 0.4999999999999999 0.0
rotorplaneUP_.T0_rotorplaneUP.offsets = 0.0 126.0 252.0 378.0 504.0
rotorplaneDN_.T0_rotorplaneDN.type = PlaneSampler
rotorplaneDN_.T0_rotorplaneDN.num_points = 81 35
rotorplaneDN_.T0_rotorplaneDN.origin = 1926.0 1581.7615982463215 1.8000000000000114
rotorplaneDN_.T0_rotorplaneDN.axis1 = -251.99999999999994 436.47680350735703 -0.0
rotorplaneDN_.T0_rotorplaneDN.axis2 = 0.0 0.0 214.2
rotorplaneDN_.T0_rotorplaneDN.offset_vector = 0.8660254037844386 0.4999999999999999 0.0
rotorplaneDN_.T0_rotorplaneDN.offsets = 0.0 126.0 252.0 378.0 504.0 630.0 756.0 882.0 1008.0 1134.0 1260.0
nearwake_.T0_nearwake.type = PlaneSampler
nearwake_.T0_nearwake.num_points = 81 35
nearwake_.T0_nearwake.origin = 1926.0 1581.7615982463215 1.8000000000000114
nearwake_.T0_nearwake.axis1 = -251.99999999999994 436.47680350735703 -0.0
nearwake_.T0_nearwake.axis2 = 0.0 0.0 214.2
nearwake_.T0_nearwake.offset_vector = 0.8660254037844386 0.4999999999999999 0.0
nearwake_.T0_nearwake.offsets = 0.0 63.0 126.0 189.0 252.0
turbsw_.T0_turbsw.type = PlaneSampler
turbsw_.T0_turbsw.num_points = 281 45
turbsw_.T0_turbsw.origin = 1363.523196492643 1548.0 1.8000000000000114
turbsw_.T0_turbsw.axis1 = 1527.6688122757496 881.9999999999998 0.0
turbsw_.T0_turbsw.axis2 = 0.0 0.0 277.2
turbsw_.T0_turbsw.offset_vector = 0.0 0.0 0.0
turbhh_.T0_turbhh.type = PlaneSampler
turbhh_.T0_turbhh.num_points = 281 81
turbhh_.T0_turbhh.origin = 1489.523196492643 1329.7615982463215 90.0
turbhh_.T0_turbhh.axis1 = 1527.6688122757496 881.9999999999998 0.0
turbhh_.T0_turbhh.axis2 = -251.99999999999994 436.47680350735703 -0.0
turbhh_.T0_turbhh.offset_vector = 0.0 0.0 0.0
turb027_.T0_turb027.type = PlaneSampler
turb027_.T0_turb027.num_points = 281 81
turb027_.T0_turb027.origin = 1489.523196492643 1329.7615982463215 27.0
turb027_.T0_turb027.axis1 = 1527.6688122757496 881.9999999999998 0.0
turb027_.T0_turb027.axis2 = -251.99999999999994 436.47680350735703 -0.0
turb027_.T0_turb027.offset_vector = 0.0 0.0 0.0
turb153_.T0_turb153.type = PlaneSampler
turb153_.T0_turb153.num_points = 281 81
turb153_.T0_turb153.origin = 1489.523196492643 1329.7615982463215 153.0
turb153_.T0_turb153.axis1 = 1527.6688122757496 881.9999999999998 0.0
turb153_.T0_turb153.axis2 = -251.99999999999994 436.47680350735703 -0.0
turb153_.T0_turb153.offset_vector = 0.0 0.0 0.0
turb216_.T0_turb216.type = PlaneSampler
turb216_.T0_turb216.num_points = 281 81
turb216_.T0_turb216.origin = 1489.523196492643 1329.7615982463215 216.0
turb216_.T0_turb216.axis1 = 1527.6688122757496 881.9999999999998 0.0
turb216_.T0_turb216.axis2 = -251.99999999999994 436.47680350735703 -0.0
turb216_.T0_turb216.offset_vector = 0.0 0.0 0.0
sideplane1_.T0_sideplane1.type = PlaneSampler
sideplane1_.T0_sideplane1.num_points = 281 45
sideplane1_.T0_sideplane1.origin = 1363.523196492643 1548.0 1.8000000000000114
sideplane1_.T0_sideplane1.axis1 = 1527.6688122757496 881.9999999999998 0.0
sideplane1_.T0_sideplane1.axis2 = 0.0 0.0 277.2
sideplane1_.T0_sideplane1.offset_vector = -0.4999999999999999 0.8660254037844386 -0.0
sideplane1_.T0_sideplane1.offsets = 0.0 252.0
sideplane2_.T0_sideplane2.type = PlaneSampler
sideplane2_.T0_sideplane2.num_points = 281 45
sideplane2_.T0_sideplane2.origin = 1363.523196492643 1548.0 1.8000000000000114
sideplane2_.T0_sideplane2.axis1 = 1527.6688122757496 881.9999999999998 0.0
sideplane2_.T0_sideplane2.axis2 = 0.0 0.0 277.2
sideplane2_.T0_sideplane2.offset_vector = -0.4999999999999999 0.8660254037844386 -0.0
sideplane2_.T0_sideplane2.offsets = 0.0 -252.0
XYdomain_027_.Farm_XYdomain027.type = PlaneSampler
XYdomain_027_.Farm_XYdomain027.num_points = 513 513
XYdomain_027_.Farm_XYdomain027.origin = 0.0001 0.0001 27.0
XYdomain_027_.Farm_XYdomain027.axis1 = 5119.9998 0.0 0.0
XYdomain_027_.Farm_XYdomain027.axis2 = 0.0 5119.9998 0.0
XYdomain_027_.Farm_XYdomain027.offset_vector = 0.0 0.0 0.0
XYdomain_090_.Farm_XYdomain090.type = PlaneSampler
XYdomain_090_.Farm_XYdomain090.num_points = 513 513
XYdomain_090_.Farm_XYdomain090.origin = 0.0001 0.0001 90.0
XYdomain_090_.Farm_XYdomain090.axis1 = 5119.9998 0.0 0.0
XYdomain_090_.Farm_XYdomain090.axis2 = 0.0 5119.9998 0.0
XYdomain_090_.Farm_XYdomain090.offset_vector = 0.0 0.0 0.0
XYdomain_153_.Farm_XYdomain153.type = PlaneSampler
XYdomain_153_.Farm_XYdomain153.num_points = 513 513
XYdomain_153_.Farm_XYdomain153.origin = 0.0001 0.0001 153.0
XYdomain_153_.Farm_XYdomain153.axis1 = 5119.9998 0.0 0.0
XYdomain_153_.Farm_XYdomain153.axis2 = 0.0 5119.9998 0.0
XYdomain_153_.Farm_XYdomain153.offset_vector = 0.0 0.0 0.0
#---- extra params ----
io.KE_int = -1
io.line_plot_int = 1
CoriolisForcing.turn_off_vertical_force = True
#== END AMR-WIND INPUT ==
For the blade resolved case
# For the blade resolved case
case.setAMRWindInput('amr.max_level', 4)
case.setAMRWindInput('time.fixed_dt', 0.003443526170799) # = OFdt*4
# These are extra parameters needed for the hybrid solver
extraparams = """
ABL.enable_hybrid_rl_mode = true
amr.max_grid_size = 128
amr.blocking_factor = 32
nodal_proj.num_pre_smooth = 10
nodal_proj.num_post_smooth = 10
nodal_proj.bottom_rtol = 1.0e-9
nodal_proj.bottom_atol = 1.0e-12
mac_proj.verbose = 0
mac_proj.do_nsolve = true
mac_proj.bottom_verbose = 0
mac_proj.bottom_rtol = 1.0e-11
mac_proj.bottom_atol = 1.0e-12
mac_proj.num_pre_smooth = 10
mac_proj.num_post_smooth = 10
diffusion.verbose = 0
diffusion.do_agglomeration = false
diffusion.do_nsolve = true
velocity_diffusion.verbose = 0
velocity_diffusion.use_tensor_operator = false
velocity_diffusion.use_segregated_operator = true
velocity_diffusion.do_nsolve = true
temperature_diffusion.verbose = 0
temperature_diffusion.do_nsolve = true
amrex.abort_on_out_of_gpu_memory = 1
amrex.the_arena_is_managed = 0
amrex.hypre_spgemm_use_vendor = 1
amrex.hypre_spmv_use_vendor = 0
amrex.hypre_sptrans_use_vendor = 0
amrex.hypre_umpire_device_pool_mbs = 4096
hypre.bamg_verbose = 0
hypre.verbose = 0
hypre.recompute_preconditioner = 0
hypre.hypre_solver = GMRES
hypre.hypre_preconditioner = BoomerAMG
hypre.num_krylov = 40
hypre.max_iterations = 40
hypre.rtol = 1.e-5
hypre.atol = 1.e-8
hypre.bamg_coarsen_type = 8
hypre.bamg_interp_type = 6
hypre.bamg_relax_type = 11
hypre.bamg_num_sweeps = 2
hypre.bamg_cycle_type = 1
hypre.bamg_relax_order = 0
hypre.bamg_trunc_factor = 0.45
hypre.bamg_strong_threshold = 0.3
hypre.bamg_min_coarse_size = 1
hypre.bamg_max_coarse_size = 100
hypre.bamg_agg_num_levels = 0
hypre.bamg_agg_interp_type = 7
hypre.bamg_agg_pmax_elmts = 3
hypre.bamg_pmax_elmts = 3
hypre.bamg_keep_transpose = 1
hypre.write_matrix_files = 0
hypre.bamg_smooth_type = 5
hypre.bamg_smooth_num_sweeps = 1
hypre.bamg_smooth_num_levels = 0
hypre.bamg_ilu_type = 0
hypre.bamg_ilu_level = 0
hypre.bamg_ilu_max_iter = 1
hypre.bamg_ilu_reordering_type = 0
hypre.bamg_ilu_tri_solve = 0
hypre.bamg_ilu_lower_jacobi_iters = 3
hypre.bamg_ilu_upper_jacobi_iters = 3
"""
case.loadAMRWindInput(extraparams, string=True);
print(case.writeAMRWindInput(BRoutputfile))
# --- Simulation time control parameters ---
time.stop_time = 16000.0 # Max (simulated) time to evolve [s]
time.max_step = -1
time.fixed_dt = 0.003443526170799 # Fixed timestep size (in seconds). If negative, then time.cfl is used
time.checkpoint_interval = 10000
time.checkpoint_start = 30000
incflo.physics = ABL # List of physics models to include in simulation.
incflo.verbose = 0
io.check_file = chk
io.restart_file = /pscratch/ndeveld/hfm-2025-q1/abl/chk30000
incflo.use_godunov = true
incflo.godunov_type = weno_z
turbulence.model = OneEqKsgsM84
TKE.source_terms = KsgsM84Src
nodal_proj.mg_rtol = 1e-08
nodal_proj.mg_atol = 1e-08
mac_proj.mg_rtol = 1e-08
mac_proj.mg_atol = 1e-08
diffusion.mg_rtol = 1e-08
diffusion.mg_atol = 1e-08
temperature_diffusion.mg_rtol = 1e-08
temperature_diffusion.mg_atol = 1e-08
incflo.gravity = 0.0 0.0 -9.81 # Gravitational acceleration vector (x,y,z) [m/s^2]
incflo.density = 1.0 # Fluid density [kg/m^3]
transport.viscosity = 0.0 # Fluid dynamic viscosity [kg/m-s]
transport.laminar_prandtl = 0.7 # Laminar prandtl number
transport.turbulent_prandtl = 0.3333 # Turbulent prandtl number
# --- Geometry and Mesh ---
geometry.prob_lo = 0.0 0.0 0.0
geometry.prob_hi = 5120.0 5120.0 1920.0
amr.n_cell = 512 512 192 # Number of cells in x, y, and z directions
amr.max_level = 4
geometry.is_periodic = 0 0 0
xlo.type = mass_inflow
xlo.density = 1.0
xlo.temperature = 0.0
xlo.tke = 0.0
xhi.type = pressure_outflow
ylo.type = mass_inflow
ylo.density = 1.0
ylo.temperature = 0.0
ylo.tke = 0.0
yhi.type = pressure_outflow
zlo.type = wall_model
zlo.temperature_type = wall_model
zlo.tke_type = zero_gradient
zhi.type = slip_wall
zhi.temperature_type = fixed_gradient
zhi.temperature = 0.003
# --- ABL parameters ---
ICNS.source_terms = BoussinesqBuoyancy CoriolisForcing BodyForce ABLMeanBoussinesq
ABL.stats_output_frequency = 1
ABL.stats_output_format = netcdf
ABL.tendency_forcing = false
ABL.bndry_io_mode = 1
ABL.bndry_file = /tscratch/lcheung/HFM/exawind-benchmarks/convective_abl/bndry_file
ABL.bndry_planes = xlo ylo
ABL.bndry_output_start_time = 15000.0
ABL.bndry_var_names = velocity temperature tke
ABL.bndry_output_format = native
incflo.velocity = 9.8726896031426 5.7 0.0
ABLForcing.abl_forcing_height = 90.0
ABL.kappa = 0.41
ABL.normal_direction = 2
ABL.surface_roughness_z0 = 0.01
ABL.reference_temperature = 300.0
ABL.surface_temp_rate = 0.0
ABL.surface_temp_flux = 0.005 # Surface temperature flux [K-m/s]
ABL.log_law_height = 5.0
ABL.wall_shear_stress_type = local
ABL.wf_velocity = 6.0977889026612075 3.6097639593035185
ABL.wf_vmag = 7.103916682319445
ABL.wf_theta = 300.20261481689676
CoriolisForcing.latitude = 40.0
CoriolisForcing.rotational_time_period = 86400.0
CoriolisForcing.north_vector = 0.0 1.0 0.0
CoriolisForcing.east_vector = 1.0 0.0 0.0
BoussinesqBuoyancy.reference_temperature = 300.0
BodyForce.magnitude = -0.0002743665569299508 0.0011708563286373845 0.0
ABL.temperature_heights = 0.0 750.0 850.0 2000.0
ABL.temperature_values = 300.0 300.0 308.0 311.45
ABLMeanBoussinesq.read_temperature_profile = true
ABLMeanBoussinesq.temperature_profile_filename = avg_theta.dat
ABL.perturb_velocity = true
ABL.perturb_ref_height = 50.0
ABL.Uperiods = 4.0
ABL.Vperiods = 4.0
ABL.deltaU = 1.0
ABL.deltaV = 1.0
ABL.perturb_temperature = true
ABL.theta_amplitude = 0.8
ABL.cutoff_height = 50.0
time.plot_interval = 10000
io.plot_file = plt
#---- tagging defs ----
tagging.labels = T0_level_0_zone T0_level_1_zone T0_level_2_zone T0_level_3_zone
tagging.T0_level_0_zone.type = GeometryRefinement
tagging.T0_level_0_zone.shapes = T0_level_0_zone
tagging.T0_level_0_zone.level = 0
tagging.T0_level_0_zone.T0_level_0_zone.type = box
tagging.T0_level_0_zone.T0_level_0_zone.origin = 1569.4039956158035 939.4039956158036 -4.5
tagging.T0_level_0_zone.T0_level_0_zone.xaxis = 1636.788013152589 944.9999999999998 0.0
tagging.T0_level_0_zone.T0_level_0_zone.yaxis = -629.9999999999999 1091.1920087683927 -0.0
tagging.T0_level_0_zone.T0_level_0_zone.zaxis = 0.0 0.0 346.5
tagging.T0_level_1_zone.type = GeometryRefinement
tagging.T0_level_1_zone.shapes = T0_level_1_zone
tagging.T0_level_1_zone.level = 1
tagging.T0_level_1_zone.T0_level_1_zone.type = box
tagging.T0_level_1_zone.T0_level_1_zone.origin = 1653.2019978079018 1424.2615982463215 -4.5
tagging.T0_level_1_zone.T0_level_1_zone.xaxis = 818.3940065762945 472.4999999999999 0.0
tagging.T0_level_1_zone.T0_level_1_zone.yaxis = -251.99999999999994 436.47680350735703 -0.0
tagging.T0_level_1_zone.T0_level_1_zone.zaxis = 0.0 0.0 283.5
tagging.T0_level_2_zone.type = GeometryRefinement
tagging.T0_level_2_zone.shapes = T0_level_2_zone
tagging.T0_level_2_zone.level = 2
tagging.T0_level_2_zone.T0_level_2_zone.type = box
tagging.T0_level_2_zone.T0_level_2_zone.origin = 1742.350998903951 1584.850998903951 -4.5
tagging.T0_level_2_zone.T0_level_2_zone.xaxis = 354.6374028497276 204.74999999999994 0.0
tagging.T0_level_2_zone.T0_level_2_zone.yaxis = -157.49999999999997 272.7980021920982 -0.0
tagging.T0_level_2_zone.T0_level_2_zone.zaxis = 0.0 0.0 220.5
tagging.T0_level_3_zone.type = GeometryRefinement
tagging.T0_level_3_zone.shapes = T0_level_3_zone
tagging.T0_level_3_zone.level = 3
tagging.T0_level_3_zone.T0_level_3_zone.type = box
tagging.T0_level_3_zone.T0_level_3_zone.origin = 1781.1605993423705 1643.6307991231608 -4.5
tagging.T0_level_3_zone.T0_level_3_zone.xaxis = 163.6788013152589 94.49999999999999 0.0
tagging.T0_level_3_zone.T0_level_3_zone.yaxis = -125.99999999999997 218.23840175367852 -0.0
tagging.T0_level_3_zone.T0_level_3_zone.zaxis = 0.0 0.0 189.0
#---- postprocessing defs ----
incflo.post_processing = metmast_ rotorplaneUP_ rotorplaneDN_ nearwake_ turbsw_ turbhh_ turb027_ turb153_ turb216_ sideplane1_ sideplane2_ XYdomain_027_ XYdomain_090_ XYdomain_153_
metmast_.type = Sampling
metmast_.output_frequency = 1
metmast_.fields = velocity temperature tke
rotorplaneUP_.type = Sampling
rotorplaneUP_.output_frequency = 50
rotorplaneUP_.fields = velocity temperature tke
rotorplaneDN_.type = Sampling
rotorplaneDN_.output_frequency = 50
rotorplaneDN_.fields = velocity temperature tke
nearwake_.type = Sampling
nearwake_.output_frequency = 50
nearwake_.fields = velocity temperature tke
turbsw_.type = Sampling
turbsw_.output_frequency = 50
turbsw_.fields = velocity temperature tke
turbhh_.type = Sampling
turbhh_.output_frequency = 50
turbhh_.fields = velocity temperature tke
turb027_.type = Sampling
turb027_.output_frequency = 50
turb027_.fields = velocity temperature tke
turb153_.type = Sampling
turb153_.output_frequency = 50
turb153_.fields = velocity temperature tke
turb216_.type = Sampling
turb216_.output_frequency = 50
turb216_.fields = velocity temperature tke
sideplane1_.type = Sampling
sideplane1_.output_frequency = 50
sideplane1_.fields = velocity temperature tke
sideplane2_.type = Sampling
sideplane2_.output_frequency = 50
sideplane2_.fields = velocity temperature tke
XYdomain_027_.type = Sampling
XYdomain_027_.output_frequency = 50
XYdomain_027_.fields = velocity temperature tke
XYdomain_090_.type = Sampling
XYdomain_090_.output_frequency = 50
XYdomain_090_.fields = velocity temperature tke
XYdomain_153_.type = Sampling
XYdomain_153_.output_frequency = 50
XYdomain_153_.fields = velocity temperature tke
#---- sample defs ----
metmast_.labels = virtualmast
rotorplaneUP_.labels = T0_rotorplaneUP
rotorplaneDN_.labels = T0_rotorplaneDN
nearwake_.labels = T0_nearwake
turbsw_.labels = T0_turbsw
turbhh_.labels = T0_turbhh
turb027_.labels = T0_turb027
turb153_.labels = T0_turb153
turb216_.labels = T0_turb216
sideplane1_.labels = T0_sideplane1
sideplane2_.labels = T0_sideplane2
XYdomain_027_.labels = Farm_XYdomain027
XYdomain_090_.labels = Farm_XYdomain090
XYdomain_153_.labels = Farm_XYdomain153
metmast_.virtualmast.type = LineSampler
metmast_.virtualmast.num_points = 20
metmast_.virtualmast.start = 1800.0 1800.0 10.0
metmast_.virtualmast.end = 1800.0 1800.0 200.0
rotorplaneUP_.T0_rotorplaneUP.type = PlaneSampler
rotorplaneUP_.T0_rotorplaneUP.num_points = 81 35
rotorplaneUP_.T0_rotorplaneUP.origin = 1489.523196492643 1329.7615982463215 1.8000000000000114
rotorplaneUP_.T0_rotorplaneUP.axis1 = -251.99999999999994 436.47680350735703 -0.0
rotorplaneUP_.T0_rotorplaneUP.axis2 = 0.0 0.0 214.2
rotorplaneUP_.T0_rotorplaneUP.offset_vector = 0.8660254037844386 0.4999999999999999 0.0
rotorplaneUP_.T0_rotorplaneUP.offsets = 0.0 126.0 252.0 378.0 504.0
rotorplaneDN_.T0_rotorplaneDN.type = PlaneSampler
rotorplaneDN_.T0_rotorplaneDN.num_points = 81 35
rotorplaneDN_.T0_rotorplaneDN.origin = 1926.0 1581.7615982463215 1.8000000000000114
rotorplaneDN_.T0_rotorplaneDN.axis1 = -251.99999999999994 436.47680350735703 -0.0
rotorplaneDN_.T0_rotorplaneDN.axis2 = 0.0 0.0 214.2
rotorplaneDN_.T0_rotorplaneDN.offset_vector = 0.8660254037844386 0.4999999999999999 0.0
rotorplaneDN_.T0_rotorplaneDN.offsets = 0.0 126.0 252.0 378.0 504.0 630.0 756.0 882.0 1008.0 1134.0 1260.0
nearwake_.T0_nearwake.type = PlaneSampler
nearwake_.T0_nearwake.num_points = 81 35
nearwake_.T0_nearwake.origin = 1926.0 1581.7615982463215 1.8000000000000114
nearwake_.T0_nearwake.axis1 = -251.99999999999994 436.47680350735703 -0.0
nearwake_.T0_nearwake.axis2 = 0.0 0.0 214.2
nearwake_.T0_nearwake.offset_vector = 0.8660254037844386 0.4999999999999999 0.0
nearwake_.T0_nearwake.offsets = 0.0 63.0 126.0 189.0 252.0
turbsw_.T0_turbsw.type = PlaneSampler
turbsw_.T0_turbsw.num_points = 281 45
turbsw_.T0_turbsw.origin = 1363.523196492643 1548.0 1.8000000000000114
turbsw_.T0_turbsw.axis1 = 1527.6688122757496 881.9999999999998 0.0
turbsw_.T0_turbsw.axis2 = 0.0 0.0 277.2
turbsw_.T0_turbsw.offset_vector = 0.0 0.0 0.0
turbhh_.T0_turbhh.type = PlaneSampler
turbhh_.T0_turbhh.num_points = 281 81
turbhh_.T0_turbhh.origin = 1489.523196492643 1329.7615982463215 90.0
turbhh_.T0_turbhh.axis1 = 1527.6688122757496 881.9999999999998 0.0
turbhh_.T0_turbhh.axis2 = -251.99999999999994 436.47680350735703 -0.0
turbhh_.T0_turbhh.offset_vector = 0.0 0.0 0.0
turb027_.T0_turb027.type = PlaneSampler
turb027_.T0_turb027.num_points = 281 81
turb027_.T0_turb027.origin = 1489.523196492643 1329.7615982463215 27.0
turb027_.T0_turb027.axis1 = 1527.6688122757496 881.9999999999998 0.0
turb027_.T0_turb027.axis2 = -251.99999999999994 436.47680350735703 -0.0
turb027_.T0_turb027.offset_vector = 0.0 0.0 0.0
turb153_.T0_turb153.type = PlaneSampler
turb153_.T0_turb153.num_points = 281 81
turb153_.T0_turb153.origin = 1489.523196492643 1329.7615982463215 153.0
turb153_.T0_turb153.axis1 = 1527.6688122757496 881.9999999999998 0.0
turb153_.T0_turb153.axis2 = -251.99999999999994 436.47680350735703 -0.0
turb153_.T0_turb153.offset_vector = 0.0 0.0 0.0
turb216_.T0_turb216.type = PlaneSampler
turb216_.T0_turb216.num_points = 281 81
turb216_.T0_turb216.origin = 1489.523196492643 1329.7615982463215 216.0
turb216_.T0_turb216.axis1 = 1527.6688122757496 881.9999999999998 0.0
turb216_.T0_turb216.axis2 = -251.99999999999994 436.47680350735703 -0.0
turb216_.T0_turb216.offset_vector = 0.0 0.0 0.0
sideplane1_.T0_sideplane1.type = PlaneSampler
sideplane1_.T0_sideplane1.num_points = 281 45
sideplane1_.T0_sideplane1.origin = 1363.523196492643 1548.0 1.8000000000000114
sideplane1_.T0_sideplane1.axis1 = 1527.6688122757496 881.9999999999998 0.0
sideplane1_.T0_sideplane1.axis2 = 0.0 0.0 277.2
sideplane1_.T0_sideplane1.offset_vector = -0.4999999999999999 0.8660254037844386 -0.0
sideplane1_.T0_sideplane1.offsets = 0.0 252.0
sideplane2_.T0_sideplane2.type = PlaneSampler
sideplane2_.T0_sideplane2.num_points = 281 45
sideplane2_.T0_sideplane2.origin = 1363.523196492643 1548.0 1.8000000000000114
sideplane2_.T0_sideplane2.axis1 = 1527.6688122757496 881.9999999999998 0.0
sideplane2_.T0_sideplane2.axis2 = 0.0 0.0 277.2
sideplane2_.T0_sideplane2.offset_vector = -0.4999999999999999 0.8660254037844386 -0.0
sideplane2_.T0_sideplane2.offsets = 0.0 -252.0
XYdomain_027_.Farm_XYdomain027.type = PlaneSampler
XYdomain_027_.Farm_XYdomain027.num_points = 513 513
XYdomain_027_.Farm_XYdomain027.origin = 0.0001 0.0001 27.0
XYdomain_027_.Farm_XYdomain027.axis1 = 5119.9998 0.0 0.0
XYdomain_027_.Farm_XYdomain027.axis2 = 0.0 5119.9998 0.0
XYdomain_027_.Farm_XYdomain027.offset_vector = 0.0 0.0 0.0
XYdomain_090_.Farm_XYdomain090.type = PlaneSampler
XYdomain_090_.Farm_XYdomain090.num_points = 513 513
XYdomain_090_.Farm_XYdomain090.origin = 0.0001 0.0001 90.0
XYdomain_090_.Farm_XYdomain090.axis1 = 5119.9998 0.0 0.0
XYdomain_090_.Farm_XYdomain090.axis2 = 0.0 5119.9998 0.0
XYdomain_090_.Farm_XYdomain090.offset_vector = 0.0 0.0 0.0
XYdomain_153_.Farm_XYdomain153.type = PlaneSampler
XYdomain_153_.Farm_XYdomain153.num_points = 513 513
XYdomain_153_.Farm_XYdomain153.origin = 0.0001 0.0001 153.0
XYdomain_153_.Farm_XYdomain153.axis1 = 5119.9998 0.0 0.0
XYdomain_153_.Farm_XYdomain153.axis2 = 0.0 5119.9998 0.0
XYdomain_153_.Farm_XYdomain153.offset_vector = 0.0 0.0 0.0
#---- extra params ----
ABL.enable_hybrid_rl_mode = true
amr.max_grid_size = 128
amr.blocking_factor = 32
nodal_proj.num_pre_smooth = 10
nodal_proj.num_post_smooth = 10
nodal_proj.bottom_rtol = 1.0e-9
nodal_proj.bottom_atol = 1.0e-12
mac_proj.verbose = 0
mac_proj.do_nsolve = true
mac_proj.bottom_verbose = 0
mac_proj.bottom_rtol = 1.0e-11
mac_proj.bottom_atol = 1.0e-12
mac_proj.num_pre_smooth = 10
mac_proj.num_post_smooth = 10
diffusion.verbose = 0
diffusion.do_agglomeration = false
diffusion.do_nsolve = true
velocity_diffusion.verbose = 0
velocity_diffusion.use_tensor_operator = false
velocity_diffusion.use_segregated_operator = true
velocity_diffusion.do_nsolve = true
temperature_diffusion.verbose = 0
temperature_diffusion.do_nsolve = true
amrex.abort_on_out_of_gpu_memory = 1
amrex.the_arena_is_managed = 0
amrex.hypre_spgemm_use_vendor = 1
amrex.hypre_spmv_use_vendor = 0
amrex.hypre_sptrans_use_vendor = 0
amrex.hypre_umpire_device_pool_mbs = 4096
hypre.bamg_verbose = 0
hypre.verbose = 0
hypre.recompute_preconditioner = 0
hypre.hypre_solver = GMRES
hypre.hypre_preconditioner = BoomerAMG
hypre.num_krylov = 40
hypre.max_iterations = 40
hypre.rtol = 1.e-5
hypre.atol = 1.e-8
hypre.bamg_coarsen_type = 8
hypre.bamg_interp_type = 6
hypre.bamg_relax_type = 11
hypre.bamg_num_sweeps = 2
hypre.bamg_cycle_type = 1
hypre.bamg_relax_order = 0
hypre.bamg_trunc_factor = 0.45
hypre.bamg_strong_threshold = 0.3
hypre.bamg_min_coarse_size = 1
hypre.bamg_max_coarse_size = 100
hypre.bamg_agg_num_levels = 0
hypre.bamg_agg_interp_type = 7
hypre.bamg_agg_pmax_elmts = 3
hypre.bamg_pmax_elmts = 3
hypre.bamg_keep_transpose = 1
hypre.write_matrix_files = 0
hypre.bamg_smooth_type = 5
hypre.bamg_smooth_num_sweeps = 1
hypre.bamg_smooth_num_levels = 0
hypre.bamg_ilu_type = 0
hypre.bamg_ilu_level = 0
hypre.bamg_ilu_max_iter = 1
hypre.bamg_ilu_reordering_type = 0
hypre.bamg_ilu_tri_solve = 0
hypre.bamg_ilu_lower_jacobi_iters = 3
hypre.bamg_ilu_upper_jacobi_iters = 3
#== END AMR-WIND INPUT ==