/home/runner/work/amr-wind/amr-wind/amr-wind/wind_energy/ABLFieldInit.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/wind_energy/ABLFieldInit.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
ABLFieldInit.H
Go to the documentation of this file.
1#ifndef ABLFIELDINIT_H
2#define ABLFIELDINIT_H
3
5
6#include "AMReX_Array.H"
7#include "AMReX_Array4.H"
8#include "AMReX_Box.H"
9#include "AMReX_Geometry.H"
10#include "AMReX_REAL.H"
11#include "AMReX_Vector.H"
12#include "AMReX_Gpu.H"
13
14using namespace amrex::literals;
15
16namespace amr_wind {
17
21{
22 static_assert(AMREX_SPACEDIM == 3, "ABL requires 3 dimensional mesh");
23
24public:
26
27 void initialize_from_inputfile(); // default
28 void initialize_from_netcdf(); // general wind/temperature profiles
29
30 void operator()(
31 const amrex::Box& vbx,
32 const amrex::Geometry& geom,
33 const amrex::Array4<amrex::Real>& velocity,
34 const amrex::Array4<amrex::Real>& density,
35 const amrex::Array4<amrex::Real>& temperature) const;
36
43 int lev, const amrex::Geometry& geom, Field& temperature) const;
44
46 [[nodiscard]] bool add_temperature_perturbations() const
47 {
48 return m_perturb_theta;
49 }
50
52 void init_tke(const amrex::Geometry& geom, amrex::MultiFab& tke) const;
53
54private:
56 amrex::Vector<amrex::Real> m_vel;
57
59 std::string m_vel_timetable;
60
62 amrex::Real m_vel_speed;
63
65 amrex::Real m_vel_dir;
66
70 amrex::Vector<amrex::Real> m_theta_heights;
71 amrex::Vector<amrex::Real> m_theta_values;
72
77 std::string m_terrain_file{"terrain.amrwind"};
78 amrex::Gpu::DeviceVector<amrex::Real> m_xterrain;
79 amrex::Gpu::DeviceVector<amrex::Real> m_yterrain;
80 amrex::Gpu::DeviceVector<amrex::Real> m_zterrain;
82 std::string m_1d_rans;
83 amrex::Vector<amrex::Real> m_wind_heights;
84 amrex::Vector<amrex::Real> m_u_values;
85 amrex::Vector<amrex::Real> m_v_values;
86 amrex::Vector<amrex::Real> m_tke_values;
88
89 // Device copies of the above arrays
90 amrex::Gpu::DeviceVector<amrex::Real> m_thht_d;
91 amrex::Gpu::DeviceVector<amrex::Real> m_thvv_d;
92
93 amrex::Gpu::DeviceVector<amrex::Real> m_windht_d;
94 amrex::Gpu::DeviceVector<amrex::Real> m_prof_u_d;
95 amrex::Gpu::DeviceVector<amrex::Real> m_prof_v_d;
96 amrex::Gpu::DeviceVector<amrex::Real> m_prof_tke_d;
98 amrex::Real m_rho;
99
101 amrex::Real m_deltaU{1.0_rt};
102
104 amrex::Real m_deltaV{1.0_rt};
105
107 amrex::Real m_Uperiods{4.0_rt};
108
110 amrex::Real m_Vperiods{4.0_rt};
111
113 amrex::Real m_ref_height{50.0_rt};
114
116 amrex::Real m_delta_t{0.8_rt};
117
119 amrex::Real m_theta_gauss_mean{0.0_rt};
120
122 amrex::Real m_theta_gauss_var{1.0_rt};
123
125 amrex::Real m_theta_cutoff_height{1.0e16_rt};
126
128 amrex::Real m_tke_init{0.1_rt};
129
131 amrex::Real m_tke_init_factor{0.4_rt};
132
134 amrex::Real m_tke_cutoff_height{250.0_rt};
135
137 amrex::RealArray m_top_vel{20.0_rt};
138
140 amrex::RealArray m_bottom_vel{4.0_rt};
141
143 bool m_linear_profile{false};
144
146 bool m_perturb_vel{true};
147
149 bool m_perturb_theta{false};
150
153
156};
157
158} // namespace amr_wind
159
160#endif /* ABLFIELDINIT_H */
amrex::Real m_tke_cutoff_height
Cutoff height for init tke profile.
Definition ABLFieldInit.H:134
bool m_perturb_theta
Perturb temperature field with random fluctuations.
Definition ABLFieldInit.H:149
amrex::Gpu::DeviceVector< amrex::Real > m_thvv_d
Definition ABLFieldInit.H:91
amrex::Gpu::DeviceVector< amrex::Real > m_prof_tke_d
Definition ABLFieldInit.H:96
amrex::RealArray m_bottom_vel
Bottom velocity.
Definition ABLFieldInit.H:140
std::string m_1d_rans
File name for 1-D data file.
Definition ABLFieldInit.H:82
amrex::Gpu::DeviceVector< amrex::Real > m_prof_v_d
Definition ABLFieldInit.H:95
amrex::Gpu::DeviceVector< amrex::Real > m_yterrain
Definition ABLFieldInit.H:79
amrex::Real m_Vperiods
Number of sinusoidal waves in y-direction.
Definition ABLFieldInit.H:110
void operator()(const amrex::Box &vbx, const amrex::Geometry &geom, const amrex::Array4< amrex::Real > &velocity, const amrex::Array4< amrex::Real > &density, const amrex::Array4< amrex::Real > &temperature) const
Definition ABLFieldInit.cpp:212
bool add_temperature_perturbations() const
Flag indicating whether temperature field needs perturbations.
Definition ABLFieldInit.H:46
amrex::Real m_rho
Initial density field.
Definition ABLFieldInit.H:98
void initialize_from_inputfile()
Definition ABLFieldInit.cpp:28
amrex::Real m_deltaU
Amplitude of fluctuations in x-direction.
Definition ABLFieldInit.H:101
amrex::Real m_tke_init_factor
Multiplicative factor for init tke profile.
Definition ABLFieldInit.H:131
amrex::Vector< amrex::Real > m_v_values
Definition ABLFieldInit.H:85
amrex::Real m_tke_init
Initial value for tke field.
Definition ABLFieldInit.H:128
std::string m_terrain_file
Definition ABLFieldInit.H:77
bool m_init_uvtheta_profile
Profiles of u, v, and theta are read in from a NetCDF File.
Definition ABLFieldInit.H:155
amrex::Vector< amrex::Real > m_theta_values
Definition ABLFieldInit.H:71
amrex::Vector< amrex::Real > m_tke_values
Definition ABLFieldInit.H:86
amrex::Real m_theta_cutoff_height
Cutoff height for temperature fluctuations.
Definition ABLFieldInit.H:125
amrex::Gpu::DeviceVector< amrex::Real > m_windht_d
Definition ABLFieldInit.H:93
amrex::Real m_Uperiods
Number of sinusoidal waves in x-direction.
Definition ABLFieldInit.H:107
amrex::Real m_theta_gauss_var
Variance for Gaussian number generator.
Definition ABLFieldInit.H:122
amrex::Real m_vel_dir
Initial wind direction (rad)
Definition ABLFieldInit.H:65
amrex::Vector< amrex::Real > m_vel
Initial velocity components.
Definition ABLFieldInit.H:56
amrex::Real m_deltaV
Amplitude of fluctuations in y-direction.
Definition ABLFieldInit.H:104
amrex::Gpu::DeviceVector< amrex::Real > m_xterrain
Definition ABLFieldInit.H:78
amrex::Gpu::DeviceVector< amrex::Real > m_thht_d
Definition ABLFieldInit.H:90
amrex::RealArray m_top_vel
Top velocity.
Definition ABLFieldInit.H:137
void initialize_from_netcdf()
Definition ABLFieldInit.cpp:163
amrex::Real m_vel_speed
Initial wind speed.
Definition ABLFieldInit.H:62
bool m_initial_wind_profile
Adding option for wind heights similar to temperature heights Speed-up RANS calculation using 1-D pro...
Definition ABLFieldInit.H:75
amrex::Real m_theta_gauss_mean
Mean for Gaussian number generator.
Definition ABLFieldInit.H:119
void perturb_temperature(int lev, const amrex::Geometry &geom, Field &temperature) const
Definition ABLFieldInit.cpp:369
amrex::Real m_delta_t
Amplitude of temperature perturbations.
Definition ABLFieldInit.H:116
bool m_linear_profile
Initial linear velocity profile boolean.
Definition ABLFieldInit.H:143
bool m_perturb_vel
Perturb initial velocity field with sinusoidal fluctuations.
Definition ABLFieldInit.H:146
amrex::Gpu::DeviceVector< amrex::Real > m_prof_u_d
Definition ABLFieldInit.H:94
bool m_terrain_aligned_profile
Definition ABLFieldInit.H:76
amrex::Gpu::DeviceVector< amrex::Real > m_zterrain
Definition ABLFieldInit.H:80
void init_tke(const amrex::Geometry &geom, amrex::MultiFab &tke) const
Initialize TKE field.
Definition ABLFieldInit.cpp:406
amrex::Vector< amrex::Real > m_u_values
Definition ABLFieldInit.H:84
amrex::Vector< amrex::Real > m_theta_heights
Definition ABLFieldInit.H:70
amrex::Vector< amrex::Real > m_wind_heights
Definition ABLFieldInit.H:83
bool m_tke_init_profile
Initialize tke profile non-constant.
Definition ABLFieldInit.H:152
std::string m_vel_timetable
File name for velocity forcing time table.
Definition ABLFieldInit.H:59
ABLFieldInit()
Definition ABLFieldInit.cpp:18
amrex::Real m_ref_height
Reference height for velocity perturbations.
Definition ABLFieldInit.H:113
Definition Field.H:112
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10